本发明属于网络通讯,具体涉及一种双冗余网卡切换的方法。
背景技术:
1、为了提高设备之间网络通信的稳定性和可靠性,通常情况下任一设备配有两个网卡,这两块网卡分别连接到两个已经级联在一起的交换模块上。这样当设备某一块网卡发生故障或者某一段网络线缆发生故障时,可以切换到另一网卡上,确保系统间设备通信正常。
2、现有技术首先使能其中某一块网卡,然后配置其ip地址,进而周期性的读取该网卡物理链接寄存器的值,来获取此刻网卡的物理链接状态。当发现物理链接状态为断开时,切换到另一网卡。这样以网卡的物理链接状态作为是否切换的单一判据有以下缺陷:
3、1、由于网卡链接状态只涉及到phy物理层,设备网卡物理链接状态正常时,设备间网络也可能是不通的。
4、2、当网络上数据量大时,只判断网卡链接状态无法得知当前网络的健康状态,无法合理分配交换模块资源。
技术实现思路
1、(一)要解决的技术问题
2、本发明要解决的技术问题是:提供一种双冗余网卡切换的方法,解决当物理链接状态正常、网络通信异常时,不能切换到另一块网卡上的缺陷。
3、(二)技术方案
4、为了解决上述技术问题,本发明提供了一种双冗余网卡切换的方法,包括以下步骤:
5、(1)设备上电后对网卡a、网卡b分别进行初始化,其中,设置网卡a、网卡b其中之一为工作网卡,另一网卡为备用网卡;
6、(2)周期性地检查工作网卡的物理链接状态,当工作网卡的物理链接异常后,若备用网卡的物理链接正常,则切换到备用网卡;当工作网卡的物理链接正常,则执行步骤(3);
7、(3)设备之间周期性地发送心跳报文,通过是否收到心跳报文判断当前工作网卡工作是否正常;若收到则说明此时工作网卡的工作状态正常,此时执行步骤(4);对工作网卡和备用网卡以一定周期进行切换,一旦收到心跳报文则停止切换;
8、(4)设备之间发送udp报文和反馈接收确认报文,对比两种报文的时间戳的差值来判断当前网络压力状态,进而决定是否切换网卡。
9、优选地,步骤(1)具体为:
10、通过muxioctl函数获取网卡a的物理地址记为maca;
11、对网卡a首先用ipattach函数挂载网卡a,进而用ifconfig函数配置网卡a的ip地址、物理地址maca、网关信息,最后用ipdetach函数释放网卡a;
12、对网卡b首先用ipattach函数挂载网卡b,进而用ifconfig函数配置网卡b的ip地址、物理地址maca、网关信息,最后用ipdetach函数释放网卡b;
13、用ifconfig函数将工作网卡设为网卡a,则此时网卡b为备用网卡。
14、优选地,步骤(2)具体为:
15、周期性地读取网卡a物理链接寄存器中的链接状态值,获取网卡a的物理链接状态;若网卡a的物理链接状态正常,则不进行网卡切换,此时执行步骤(3);若网卡a的物理链接状态异常,则读取网卡b的物理链接状态,若网卡b的物理链接状态异常,则向用户上报故障;若网卡b的物理链接状态正常,则切换到网卡b,设置网卡b为工作网卡。
16、设置网卡b为工作网卡后,开始周期性读取网卡b物理链接寄存器中的链接状态值,获取网卡b的物理链接状态;若网卡b的物理链接状态正常,则不进行网卡切换,此时执行步骤(3);若网卡b的物理链接状态异常,则读取网卡a的物理链接状态;若网卡a的物理链接状态异常,则向用户上报故障;若网卡a的物理链接状态正常,则切换到a网卡,设置网卡a为工作网卡,重复上述过程。网卡切换的具体方法为:用ipdetach释放故障网卡,然后用ipattach挂载正常的备用网卡,进而用ifconfig配置ip地址、网关地址并且使能该备用网卡。
17、优选地,步骤(3)具体为:首先系统内设备上电均向外广播心跳报文,若收到广播的心跳报文说明此时工作网卡的工作状态正常,此时执行步骤(4);若没有收到任何设备的心跳报文,此时不能判断是其他设备故障导致心跳报文没有发出,还是网络故障导致本设备无法收到网络报文,因此对工作网卡和备用网卡以一定时间为周期进行切换,一旦收到广播的心跳报文则停止切换。
18、优选地,步骤(3)中,若没有收到任何设备的心跳报文,对工作网卡和备用网卡以5s为周期进行切换。
19、优选地,步骤(4)具体为:系统内设备之间发送需要进行接收确认的udp报文,发送端将报文序号cnt1和发送时的时间戳t1作为报文内容发送给接收端;接收端接收到报文序号为cnt1的udp报文后以最高优先级反馈接收确认报文,反馈的接收确认报文中同样包含时间戳t2,当t2-t1超过一定的门限后,进行网卡切换,选择两个网卡中相对更为健康的作为工作网卡。
20、优选地,t2-t1越小表示当前网络状态越好。
21、本发明还提供了一种用于实现所述方法的系统。
22、本发明还提供了一种所述方法在网络通讯技术领域中的应用。
23、本发明还提供了一种所述系统在网络通讯技术领域中的应用。
24、(三)有益效果
25、1、该方法不局限于仅通过网卡物理链接状态为依据来判断是否需要进行网卡的切换,同时根据系统内各设备之间是否能够正常接收心跳报文来判断网络通信是否正常,因此能够避免物理链接正常但网络不通时不进行网卡切换的缺陷。
26、2、该方法能够通过计算网络报文的延迟时间来判断当前网卡所在网络的压力状态,进而选择状态更好的网卡进行通信。
1.一种双冗余网卡切换的方法,其特征在于,包括以下步骤:
2.如权利要求1所述的方法,其特征在于,步骤(1)具体为:
3.如权利要求2所述的方法,其特征在于,步骤(2)具体为:
4.如权利要求3所述的方法,其特征在于,步骤(3)具体为:首先系统内设备上电均向外广播心跳报文,若收到广播的心跳报文说明此时工作网卡的工作状态正常,此时执行步骤(4);若没有收到任何设备的心跳报文,此时不能判断是其他设备故障导致心跳报文没有发出,还是网络故障导致本设备无法收到网络报文,因此对工作网卡和备用网卡以一定时间为周期进行切换,一旦收到广播的心跳报文则停止切换。
5.如权利要求4所述的方法,其特征在于,步骤(3)中,若没有收到任何设备的心跳报文,对工作网卡和备用网卡以5s为周期进行切换。
6.如权利要求4所述的方法,其特征在于,步骤(4)具体为:系统内设备之间发送需要进行接收确认的udp报文,发送端将报文序号cnt1和发送时的时间戳t1作为报文内容发送给接收端;接收端接收到报文序号为cnt1的udp报文后以最高优先级反馈接收确认报文,反馈的接收确认报文中同样包含时间戳t2,当t2-t1超过一定的门限后,进行网卡切换,选择两个网卡中相对更为健康的作为工作网卡。
7.如权利要求6所述的方法,其特征在于,t2-t1越小表示当前网络状态越好。
8.一种用于实现如权利要求1至7中任一项所述方法的系统。
9.一种如权利要求1至7中任一项所述方法在网络通讯技术领域中的应用。
10.一种如权利要求8所述系统在网络通讯技术领域中的应用。