免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: babycat_fei
打印 上一主题 下一主题

Linux内核协议栈编程问题 [复制链接]

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
11 [报告]
发表于 2012-04-17 18:02 |只看该作者
回复 10# babycat_fei
你的这个需求貌似可以用策略路由实现,包括源路由和目的路由都支持。
不知道我理解的对不对?
如果是这样,你仅仅需要关心服务器编号和IP的对应表。

   

论坛徽章:
0
12 [报告]
发表于 2012-04-17 20:51 |只看该作者
我是打算采用源路由实现的,中间服务器不参与路由只转发数据包,不在IP层的路由做修改,但要保证跨过IP路由后的数据包还能够送到下一层。

论坛徽章:
0
13 [报告]
发表于 2012-04-17 22:36 |只看该作者
Godbach 发表于 2012-04-17 15:21
回复 5# babycat_fei

感觉可以这么搞,disable 掉 IP 层的 route 功能。


我觉得可以这样。还是要修改IP层,使之不要查找route,填充好IP包后,将数据直接传入2.5层。

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
14 [报告]
发表于 2012-04-18 09:04 |只看该作者
回复 13# GFree_Wind


    嗯,这貌似是实现了一个虚拟的交换机,可以在sk_buff的cb部分做点改动,添加点路由和控制信息

论坛徽章:
0
15 [报告]
发表于 2012-04-18 09:19 |只看该作者
回复 13# GFree_Wind


您的意思是说数据报到达IP层后,只填充IP包头,屏蔽查找路由表部分的代码,直接发到下一层?

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
16 [报告]
发表于 2012-04-18 11:25 |只看该作者
Linux的kernel支持多种路由策略,貌似没有必要修改network stack。lz就是想走特定的route,看看下面的wiki有没有帮助吧。

Loose Source Routing
From Wikipedia, the free encyclopedia
Loose Source Routing is an IP option which can be used for address translation. LSR is also used to implement mobility in IP networks. [1]
Loose source routing uses a source routing option in IP to record the set of routers a packet must visit. The destination of the packet is replaced with the next router the packet must visit. By setting the forwarding agent (FA) to one of the routers that the packet must visit, LSR is equivalent to tunneling. If the corresponding node stores the LSR options and reverses it, it is equivalent to the functionality in mobile IPv6.
The name loose source routing comes from the fact that only part of the path is set in advance.[2] This is in contrast with strict source routing, in which every step of the route is decided in advance when the packet is sent.

论坛徽章:
0
17 [报告]
发表于 2012-04-18 11:50 |只看该作者
babycat_fei 发表于 2012-04-18 09:19
回复 13# GFree_Wind


是的。

论坛徽章:
0
18 [报告]
发表于 2012-04-18 14:34 |只看该作者
本帖最后由 babycat_fei 于 2012-04-18 16:41 编辑

回复 17# GFree_Wind

这样的话,在实现过程中dst_entry结构怎样赋值呢,是不是应该在IP层设一条默认路由?

论坛徽章:
0
19 [报告]
发表于 2012-04-18 17:29 |只看该作者
babycat_fei 发表于 2012-04-18 14:34
回复 17# GFree_Wind

这样的话,在实现过程中dst_entry结构怎样赋值呢,是不是应该在IP层设一条默认路由 ...


==================
是否可以不是用dst_entry,因为dst_entry是和IP层的路由相关的。

论坛徽章:
0
20 [报告]
发表于 2012-04-19 08:33 |只看该作者
本帖最后由 babycat_fei 于 2012-04-19 11:53 编辑

回复 19# GFree_Wind
我的意思是skbuff中的skb->dst结构怎样赋值呢?链路层要靠这个结构找到下一跳设备转发数据包啊,实际上IP路由查询的最终结果是把一个对应的rtable结构的地址赋给skb->dst,我的初衷是与IP协议兼容,所以我在禁掉IP路由的同时应该是利用我自己提供的路由来填充skb->dst?不知我的想法对不对。
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP