英创信息技术工控主板双网络冗余方案

描述

网络冗余是工业网络的一项保障策略,目的是减轻意外中断的风险,当网络中一条通路(物理链路)发生故障断掉了,还可以通过其他通路(物理链路)传递信息。实现网络冗余可以使用Bonding技术,也叫Truncking和Etherchannel技术,把多个网络接口绑定在一起,形成一个逻辑上网络接口,在用户看来就是一个单独的网络接口。Bonding驱动有7种不同工作模式,根据不同的工作模式,可以提供不同的网络负载均衡服务和网络冗余服务。其7种工作模式如下,常用模式为0,1,6,其中1模式是这里用到的主备模式。

表1 Bonding的7种工作模式:

模式代号 模式名称 模式方式 说明
0 balance-rr Round-robin policy
(循环策略)
按照设备顺序依次传输数据包,第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕。这种模式提供负载均衡和容错能力
1 active-backup Active-backup  policy
(主备策略)
只有一个设备处于活动状态。一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见的。此模式提供了容错能力
2 balance-xor XOR policy
(异或策略)
根据MAC地址异或运算的结果来选择传输设备,提供负载均衡和容错能力
3 broadcast Broadcast policy
(广播策略)
将所有数据包传输给所有接口,通过全部设备来传输所有数据,提供容错能力
4 802.3ad IEEE 802.3ad  Dynamic link aggregation
(动态链路聚合)
创建共享相同速率和双工设置的聚合组,利用所有接口传输。需要交换机支持802.3ad模式
5 balance-tlb Adaptive transmit  load balancing
(自适应传输负载均衡)
可以根据当前的负载把发出的数据分给每一个设备,由当前使用的设备处理收到的数据。本策略的通道联合不需要专用的交换机支持,提供负载均衡和容错能力
6 balance-alb Adaptive load balancing
(自适应负载均衡)
在5的基础上增加接收负载均衡,由ARP协商实现。bonding驱动截获本地发送的ARP应答,用其中一个从设备的MAC替换ARP应答中的源地址,让不同的端具有不通的MAC地址

英创Linux工控主板支持Bonding技术,能够实现双网络冗余方案。我们将bonding驱动编译成了.ko文件,以EM9287 + Linux-4.1.14为例,讲述双网络冗余方案的配置过程:

1)加载bonding.ko驱动,执行命令:insmod bonding.ko mode=1 miimon=100。

mode为表1所述的工作模式,miimon指定MII链路监控频率,单位是毫秒(ms),这将决定驱动检查每个slave链路状态频率。miimon=0表示禁止MII链路监控,100可以作为一个很好的初始参考值。bonding.ko还有很多参数,如downdelay、arp_interval,用户都可以通过这种形式传递给驱动程序,更详细的参数、工作模式、配置方式介绍详见linux源码文档Documentation/networking/bonding.txt。

2)加载bonding驱动后,默认创建一个虚拟网卡bond0,需要对bond0进行配置:

设置ip地址:ifconfig bond0 192.168.201.31 netmask 255.255.255.0 up

添加从设备eth0、eth1:ifenslave bond0 eth0 eth1

此时,bond0已经正常工作了,可以通过命令:cat /proc/net/bonding/bond0查看其工作状态,如图1所示。此时,bond0工作在模式1,主备策略,激活设备为eth0。此时拔掉eth0的网线,eth1将成为激活设备,继续保持通信。

嵌入式主板

图1 bond0工作状态

3)关闭bond0

执行命令ifconfig bond0 down即可关闭bond0,通信中断。此时,eth0和eth1依然处在SLAVE状态,并不能作为正常网络接口通信。

4)释放bond0中的eth0和eth1

释放bond0中eth0和eth1后,关闭bond0时需要释放bond0原来所占用的IP。

ifenslave -d bond0 eth0 eth1    #从bond0中删除eth0,eth1

ifconfig bond0 0.0.0.0 down     #关闭bond0,释放ip地址

如需eth0、eth1重新作为单独网卡工作,使用ifconfig eth0 ipaddress重新设定ip地址。

用户可以将2)、4)操作写成两个脚本文件:bonding-up.sh、bonding-release.sh。将它们放在和bonding.ko相同目录下,使用bonding时执行./bonding-up.sh;关闭bonding时执行命令ifconfig bond0 down;释放从设备时,调用./bonding-release.sh即可。

bonding-up.sh内容如下:

ifconfig bond0 192.168.201.31 up

ifenslave bond0 eth0 eth1

bonding-release.sh内容如下:

ifenslave -d bond0 eth0 eth1#bond0 should be up state

ifconfig bond0 0.0.0.0 down

另外,如果用户需要开机直接运行bonding驱动,可以在/mnt/nandflash/user.sh中以绝对路径调用bonding-up.sh文件。

user.sh示例:

insmod /mnt/nandflash/bonding.ko mode=1 miimon=100

/mnt/nandflash/bonding-up.sh

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分