免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3600 | 回复: 1
打印 上一主题 下一主题

linux多网卡同网段,使用SCTP虚拟IP之间发包,链路切换混乱 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-28 10:43 |只看该作者 |倒序浏览
需求:使用SCTP协议绑定多网卡间任意同网段IP组(包括虚拟IP),使其能正常通信,且接收端能得到源IP地址(包括虚拟IP).

网络环境:
主机1:
eth0:1 192.168.100.1
eth0:2 192.168.100.2            (secondary)

主机2:
eth0:1 192.168.100.4
eth0:2 192.168.100.5        (secondary)
eth0:3 192.168.100.6        (secondary)

SCTP 分别绑定主机1的1、2,主机2的2、3,主机1作为服务端只接收数据,主机2客户端一直发数据.

问题:


使用secondary虚拟IP(linux中除第一次创建的虚拟IP默外,其他的都为secondary IP)建立sctp链路时,第一个虚拟IP默认为sctp的首选路由,而第二个ip地址不会发出任何报文,把首选路由down掉,链路会维持一会,然后断掉,抓包显示断链的时候,1号IP会给6号IP发heartbeat心跳,但heartbeat ack 是5号IP 回给1的并且后面显示未发的数据都是5给1,然后1给5回SACK,那么问题来了,5为什么没断呢?怎么实现5断了,6能发报文,且服务端知道是6发来的?


不使用虚拟ip,如下图两块板(可以理解成主机)完全使用四个物理网卡进行测试:  
测试结果显示
1.两端分别绑定eth0和eth2建立sctp链路,互发数据,心跳和数据都是正常的。
2.两端分别绑定eth1和eth3建立sctp链路,则两端eth3的ip发不出报文。


可以看出把物理网卡部署在同网段也存在相同问题,可以判断使用虚拟网卡方案来规避是不可行的。
这个问题是IP协议栈数据发送和路由选择机制决定的。

有点乱,请高手帮忙解决,谢谢!

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
2 [报告]
发表于 2015-05-28 13:06 |只看该作者
你是要做个程序,还是要求网卡冗余?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP