一种具有双网口的路由器的数据传输及分配方法
技术领域
本发明属于基于Linux系统中的路由器技术领域,涉及到一种具有双路上行链路的路由器,特别是这种路由器的数据传输及分配方法。
背景技术
随着因特网的飞速发展,网络设备升级日新月异,传统的单广域网(WAN)口已越来越无法满足客户多变的需求,针对特殊的网络环境,使用具备特殊功能的网络设备来搭建网络环境,已显得越来越普遍。双WAN上行设备就是在这种环境下的产物,部分用户对网络流量的需求非常大,传统的单WAN口已无法满足其业务流量的需求,针对带宽部分,路由器增加了另外一个WAN口来分担上网的业务流量,同时还具备了链路备份的功能,当其中一个WAN口出现链路故障时,所有数据都切换到另外一条链路上,保障用户的正常体验。
目前比较常见的嵌入式系统有Linux,WinCE,VxWorks,UC/OS,Nucleus,各个系统都有其优缺点,各个嵌入式系统在不同的时期和不同的应用需要而得到推广的,Linux嵌入式系统就是一个很好的嵌入式系统,Linux的特点是开源,免费,并且存在一个庞大的开源组织对它进行维护,该系统为嵌入式系统注入了活力,使今后嵌入式系统的发展历上添加了重重的一笔。
传统的链路备份功能实现,通常都会各定义一个主、备WAN口,正常情况下,使用主WAN口,当主WAN口出现链路故障时,所有数据都切换到备份链路上,而当主WAN口恢复正常时,再将数据切回主WAN口。在其中的数据分配通常都是基于纯数据流量来进行负载,单纯地从数据流量上对网络负载进行均衡,以单纯的链路层单个数据包为单位,有可能出现同一连接的数据会走不同的通道到达目的的问题,如果数据走不同的通道,将有可能出现先发后至的情况,这样将会导致较大的网络延迟,降低整个网络的处理能力。此种数据分配方法一旦开启链路备份功能时,则无法进行均衡处理,给本领域技术人员带来很大麻烦。
发明内容
本发明的目的是为了解决由于主、备网口不能同时进行数据传输,同时数据均衡不能实时进行而出现先发后至的情况,导致较大的网络延迟的技术问题,设计了一种具有双网口的路由器的数据传输及分配方法,双网口互为主、备,一个WAN口出现链路故障时,所有数据透明切换到另一个WAN口,当链路恢复正常时,数据仍然按照负载均衡算法进行数据分流。
本发明实现发明目的采用的技术方案是,一种具有双路以太网接口的路由器的数据传输方法,以上方法是在路由器中借助路由器系统内核以及配套软件管理程序实现的,在路由器的结构中增加一个上行以太网接口,路由器借助两个上行以太网接口同时进行数据的收与发,具体步骤是:
A、系统内核应用层的监控进程实时读取两个上行以太网接口的状态寄存器,并进行链路备份,链路的状态包括已连接和已断开;
B、若以上两个上行以太网接口中其中一个链路状态是已断开,则请求中断并进行切换链路功能;
C1、在发送数据时,所有数据都发往处于已连接的以太网接口,数据包的mac地址仍使用原有以太网接口的mac地址;
C2、在接收数据时,结合数据的类型进行分类接收,如果数据是单播,则根据数据包的mac地址用已连接的以太网接口进行接收;如果数据是组播,则根据数据包的mac地址复制,两个链路同时进行接收;
D、将数据包传输至系统内核的上层。
本发明的链路备份功能摒弃了传统的主、备WAN口的定义,两个WAN口之间互为主备,当启用链路备份功能时,两个WAN口互为主备,当其中一个WAN口出现链路故障时,所有数据透明切换到另一个WAN口。
本发明还涉及一种具有双路以太网接口的路由器的数据分配方法,以上方法是与上述的数据传输方法配合应用的,数据分配方法借助配套管理软件对路由器两个链路的数据进行分配后再传输,在路由器系统内核中建立数据包传输路径的路由表,数据以应用层的连接为单位,借助负载均衡算法并结合对应的路由表对数据进行编写地址标识码,路由器结合数据的地址标识码与路由表自动分配后进行数据传输。
本发明的数据分配方法的实现不再是像传统的以单纯的链路层单个数据包为单位,而是以连接为单位,借助负载均衡算法在两个上行链路中结合路由表进行分配传输。
本发明的有益效果是两个WAN口互为主备,可以和数据分配同时进行;同时数据分配方法是以连接为单位进行分配,避免所有数据包同时在一个通道中进行传输而导致的网络延迟。
下面结合附图对本发明进行详细说明。
附图说明
图1是本发明在路由器接收时的链路备份过程示意图。
图2是本发明中数据分配方法流程图。
具体实施方式
一种具有双路以太网接口的路由器的数据传输方法,以上方法是在路由器中借助路由器系统内核以及配套软件管理程序实现的,在路由器的结构中增加一个上行以太网接口,路由器借助两个上行以太网接口同时进行数据的收与发,具体步骤是:
A、系统内核应用层的监控进程实时读取两个上行以太网接口的状态寄存器,并进行链路备份,链路的状态包括已连接和已断开;
B、若以上两个上行以太网接口中其中一个链路状态是已断开,则请求中断并进行切换链路功能;
C1、在发送数据时,所有数据都发往处于已连接的以太网接口,数据包的mac地址仍使用原有以太网接口的mac地址;
C2、在接收数据时,结合数据的类型进行分类接收,如果数据是单播,则根据数据包的mac地址用已连接的以太网接口进行接收;如果数据是组播,则根据数据包的mac地址复制,两个链路同时进行接收;
D、将数据包传输至系统内核的上层。
上述的步骤A中,两个上行以太网接口的状态寄存器状态分为三种:
状态1:两个以太网接口都处于已断开;
状态2:两个以太网接口中一个处于已连接,另一个处于已断开;
状态3:两个以太网接口都处于已连接。
当由状态1进入链路备份状态时,底层通知应用层两个网口都处于已连接状态,当由状态3进入链路备份状态时,底层不唤醒应用层,使应用层看起来两个WAN口都仍处于已连接状态,应用层不需要作任何改变,仍保持正常工作。
链路数据切换包括发送和接收的切换,发送的切换比较简单,当处于链路备份状态时,所有数据都发往处于正常的WAN口,而数据包的mac地址仍使用原有WAN口的mac地址。
对于接收数据的切换,则相对较复杂,结合图1进行详细说明。中断触发后,当路由器处理链路备份状态时,对收到的数据进行判断,如果是单播,则根据目标mac地址判断该份数据送往WAN口;如果是组播或者广播,由于无法判断是送往哪个WAN口的数据,因此将数据复制一份,分别往两个WAN口各送一份,再由上层实设备判断对数据的处理是转发或者丢弃。
一种具有双路以太网接口的路由器的数据分配方法,以上方法是与上述的数据传输方法配合应用的,数据分配方法借助配套管理软件对路由器两个链路的数据进行分配后再传输,在路由器系统内核中建立数据包传输路径的路由表,数据以应用层的连接为单位,借助负载均衡算法并结合对应的路由表对数据进行编写地址标识码,路由器结合数据的地址标识码与路由表自动分配后进行数据传输。
上述的分配方法是在路由器传输数据时实时在线进行数据分配处理的。
在路由器系统结构中设置有自定义策略配置模块,用户可根据自己的需要对数据进行自定义策略分配。
参看图2,当数据流进入路由模块时,首先查找缓存中的路由表情况,如果有已建立好的路由表,则按照路由表进行数据分配,如果没有,则需要建立新的路由表,在建立新的路由表时,可以按照标准路由表进行数据分配,也可以根据需要进行自定义配置路由表,最后将配置好的路由表写入缓存中,数据流以连接为单位,按照新配置好的路由表进行分配接口并传输数据。