一种在路由设备中实现报文转发的方法 【技术领域】
本发明涉及网络通讯技术领域,具体涉及一种在路由设备中实现报文转发的方法。
背景技术
目前,在路由设备中是根据路由表确定其接收到的报文的转发路由,并将其接收到的报文根据该转发路由进行报文转发。
路由设备中的路由表如表1所示:
表1编号目的地址掩码下一跳出接口 A 10.1.1.0 255.255.255.0 20.1.1.1 Ethernet1/0/0 B 10.1.0.0 255.255.0.0 30.1.1.1 Ethernet1/0/1 C 10.1.2.0 255.255.255.0 20.1.1.1 Ethernet1/0/0 D 10.1.2.0 255.255.255.0 30.1.1.1 Ethernet1/0/1
现有技术中路由设备根据路由表对报文进行转发的方法为:路由设备根据接收到的报文的目的地址在路由表中采用最长前缀匹配的算法,进行最长前缀匹配,如果匹配到相应地记录,则根据记录中对应的下一跳表项、出接口表项为其建立转发路径,将报文转发;如果不能匹配到相应的记录,则采取将报文丢弃等方法,不为其建立转发路径。
路由表中采用最长前缀匹配的算法可以在路由表中命中目的地址网段范围最小的路由。如在表1中:编号为A的路由,我们称之为路由A,其他编号的路由称之为路由B、路由C、路由D。路由B对应的目的地址网段范围包含路由A对应的目的地址网段范围。如果路由设备需要将目的地址为10.1.1.1的报文转发,则采用最长前缀匹配的算法在与路由表的目的地址进行匹配时,与其匹配的路由是路由A,而不是路由B。
由于路由协议的种类很多,如:RIP(路由信息协议),BGP(边界路由协议),OSPF(开放式最短路径优先协议),IS-IS(中间系统到中间系统协议)等。路由设备可同时支持多种路由协议,基于不同路由协议的报文到达路由设备时,可能得到目的地址网段范围相同的路由,路由管理选择优先级高的路由将报文转发;基于同一种路由协议的报文达到路由设备时,也可能得到目的地址网段范围相同的路由即等价路由,如:在表1中,路由C和路由D因其对应的目的地址网段范围相同,所以路由C和路由D为等价路由。通常情况下这种等价路由对于不同数据流选用不同的路由,这样可以对网络中的数据流量进行负荷分担,对于相同的数据流一般只会选择其中一条路由进行报文转发。
现有技术能够实现报文转发的一般要求,如:动态路由协议都有相应的老化功能,如果网络中由于出现链路故障而导致报文转发的下一跳不再直连,路由协议就收不到相应的连接回应报文,如:hello报文或刷新报文等,所学的路由会通过协议的老化机制自动老化,从而该路由在转发表中被删除,不会影响报文的正常转发。但是在某些情况下,特别是在静态配置路由的情况下容易出现一些问题。
静态配置的路由,由于本身没有老化机制,会因此而导致所命中的路由不能进行实际的报文转发。
附图1为一种简单而常见的组网形式。
在图1中,通常情况下会配置两条静态路由,在路由设备1中,为一部分网络终端发送的报文建立的路由为路由A,即报文经Ethernet1/0/0端口和地址为20.1.1.1的网络设备2到达目的地址10.1.1.1;为其余网络终端发送的报文建立的路由为路由B,即报文经Ethernet1/0/1端口和地址为30.1.1.1的网络设备3到达目的地址10.1.2.1。
设定路由A中的网络设备2因故障而瘫痪,或者是从路由设备1到网络设备2中间的二层设备或链路出现故障,但是路由设备1中的端口Ethernet1/0/1还是连接状态的,那么在路由设备1上表现出来的结果则为一切正常。但是在实际报文转发的时候,如果路由设备1需要将目的地址为10.1.1.1的报文转发,则采用最长前缀匹配的算法在与表1的目的地址进行匹配时,匹配到的路由是路由A,即需要将报文经端口Ethernet1/0/0发送至网络设备2,由于网络设备2瘫痪,或者是从路由设备1到网络设备2中间的二层设备或链路出现故障,从而导致所有网络终端用户都无法访问10.1.1.1;其实,实际上报文从路由B是可以进行报文转发的。但是采用最长前缀匹配的算法在与表1的目的地址进行匹配时,由于路由B匹配不上,所以报文不能从路由B进行转发。
在一般组网中要求负荷分担而配置等价路由C、D情况下,如果路由设备1需要将目的地址为10.1.2.1的报文转发,则采用最长前缀匹配的算法在与表1的目的地址进行匹配时,设定匹配到的路由是路由C,即需要将报文经端口Ethernet1/0/0及地址为20.1.1.1的网络设备发送,由于网络设备2瘫痪,或者是从路由设备1到网络设备2中间的二层设备或链路出现故障,出现和上述类似的情况,报文转发不通。由于一般路由器的报文转发实现的方法中规定,对相同数据流命中的是同一条路由,因此,某些网络终端用户可能就无法访问10.1.2.1。
另外,动态路由协议可能会受到恶意攻击,而致使正常的数据不能正常转发。例如RIP(路由信息协议),网络终端用户可能恶意构造下一跳不存在路由协议的报文,那么在路由表匹配的命中后,会导致正常数据不能正常转发,从而影响了网络终端用户的业务。
【发明内容】
本发明的目的在于,提供一种在路由设备中实现报文转发的方法,利用优化的路由表对路由设备中需要转发的报文进行报文转发控制,以实现提高网络安全性和可靠性的目的。
为达到上述目的,本发明提供的一种在路由设备中实现报文转发的方法包括:
a、向路由设备的路由表中所有路由的下一跳分别发送需要回应的报文,并确定收到回应报文的路由;
b、当路由设备需要转发报文时,根据其路由表中相应的收到回应报文的路由进行报文转发。
所述的路由包括:动态路由协议建立的路由、静态配置的路由。
所述的动态路由协议包括路由信息协议、边界路由协议、开放式最短路径优先协议、中间系统到中间系统协议。
所述需要回应的报文包括地址解析协议请求报文。
所述的步骤a包括:
a1、为路由设备的路由表中所有各不相同的下一跳构造地址解析协议请求报文并将其发送;
a2、判断在预定时间内路由设备是否收到各不相同的下一跳的回应报文;
对路由设备收到回应报文的下一跳在路由表中对应的路由设置有效标记,并记录收到回应报文的相关信息;
对路由设备未收到回应报文的下一跳在路由表中对应的路由设置无效标记。
所述的步骤a1包括:
为路由设备路由表中所有下一跳建立哈希表;
根据各下一跳的哈希运算,将下一跳相同的路由放在一个链表中;
对各链表中的下一跳构造地址解析协议请求报文并将其发送。
当所述收到回应报文的相关信息以表的形式记录时,所述的步骤a还包括:
当向路由表中添加新路由时,根据所述新路由下一跳的哈西运算,将所述新路由添加至哈希表中相应的链表中,同时将所述新路由的下一跳与收到回应报文表中的表项进行匹配;
对路由表中与收到回应报文表匹配的所述新路由设置有效标记;
对路由表中与收到回应报文表不匹配的所述新路由设置无效标记。
所述的步骤a还包括:
当所述收到回应报文表中的记录删除时,对所述路由表中对应的路由设置无效标记。
所述收到回应报文表中的记录可根据预定老化机制而删除;
所述的预定老化机制包括:
设置预定次数;
根据预定间隔遍历HASH表,对各链表的下一跳构造地址解析协议请求报文并将其发送,同时各链表的计次值递增;
分别判断各链表的计次值是否达到预定次数;
如果未达到所述预定次数,判断路由设备在预定时间内是否收到回应报文;
如果收到回应报文,将预定次数的计次值清零;
如果未收到回应报文,返回所述根据预定间隔遍历哈希表,对各链表的下一跳构造地址解析协议请求报文并将其发送,同时各链表的计次值递增的步骤;
如果达到所述预定次数,将收到回应报文表中的相应记录删除。
所述的步骤b包括:
当路由设备需要转发的报文时,根据其路由表中相应的有效标记的路由进行报文转发。
利用本发明,将可收到回应报文的下一跳网络设备确定为有效的网络设备,将有效的下一跳网络设备对应的路由表中的路由设置有效标记,使路由表得到了优化,当路由设备进行报文转发时,使每一条匹配到的路由都是有效、可靠的路由,从而避免了因网络设备故障或链路故障或网络终端用户恶意攻击使某路由无效,致使网络终端用户不能够正常传输报文的现象,确保了路由设备可靠、安全的将报文转发至目的地址;实现了提高网络安全性、可靠性的目的。
【附图说明】
图1是通讯网络示意图。
【具体实施方式】
本发明的核心思想为:通过向路由设备的路由表中所有路由的下一跳分别发送需要回应的报文,判断路由表中的下一跳是否有效,如果收到回应报文,则认为该路由的下一跳有效,该路由有效;否则,认为该路由的下一跳无效,该路由无效;当路由设备需要转发报文时,根据其路由表中相应的收到回应报文的路由进行报文转发。
本发明的核心思想可通过下述方法来实现:确定路由设备的路由表中所有路由的下一跳网络设备是否有效,因为只有下一跳有效的网络设备才能够进行正常的报文转发,通过检测路由设备的路由表中所有路由的下一跳网络设备是否有效来优化路由设备中的路由表,然后根据优化的路由表进行报文的转发控制。
本实施例中的下一跳网络设备有效包括下一跳网络设备无故障,且路由设备和该下一跳网络设备之间的二层设备或链路无故障等,即路由设备与该下一跳网络设备能够进行正常的数据传输。
本发明检验下一跳网络设备是否有效的方法为:通过向下一跳网络设备周期性发送需要回应的报文来请求下一跳网络设备应答,如果下一跳网络设备应答,则证明该网络设备是有效的,从而该路由有效,可以根据该路由进行报文转发。
在以太网中,我们可以通过发送ARP(地址解析协议)请求报文请求下一跳网络设备应答来实现路由表的优化,下面以以太网为例说明本发明的方法。
由于本发明是针对路由设备的路由表中所有路由的下一跳网络设备进行检测,所以,可以首先对路由表的下一跳网络设备建一张Hash(哈希)表,根据路由表中所有路由的下一跳网络设备的IP地址进行Hash运算,将下一跳网络设备的IP地址相同的路由放到一个链表中。
对各链表中的下一跳网络设备构造ARP请求报文并发送。建一张收到ARP回应报文表。该表保存收到ARP回应报文的路由的相关信息。该表可包括:下一跳网络设备的IP地址字段、下一跳网络设备的MAC地址字段、本路由设备将报文传输至下一跳网络设备的出接口字段。对在预定时间内所有收到ARP回应报文的路由添加至收到ARP回应报文表中;同时根据收到ARP回应报文表中的记录设置路由设备路由表中对应路由的有效标记,即将路由表中与收到ARP回应报文表中的记录对应的路由设置有效标记,路由表中与收到ARP回应报文表中的记录无对应的路由设置无效标记。
当路由设备需要发送报文时,采用最长前缀匹配的算法,将报文的目的地址在路由表中匹配,无效标记的路由不参与路由匹配,从而可确保匹配到的路由一定能够可靠、安全地将报文转发至下一跳网络设备。
在动态路由协议学习到新的动态路由或配置新的静态路由之后,将上述新路由加入到路由表中时,首先需要将新路由与收到ARP回应报文表匹配,如果该表中的表项与新路由匹配,则将该新路由设置有效标记,添加至路由表中;如果该表中的表项与新路由不匹配,则将新路由设置无效标记,添加至路由表中。在新路由添加至路由表后,还需要将该新路由根据其下一跳网络设备的IP地址进行相应的HASH运算,比较该新路由的下一跳IP地址与HASH表的各链表中的下一跳IP地址是否相同,如果和某链表中的下一跳IP地址相同,则将新路由加入至该链表中;如果和各链表中的下一跳IP地址均不相同,则为新路由建立新链表并将新路由添加至新链表中。
本发明还设定了收到ARP回应报文表的老化机制。
收到ARP回应报文表的老化机制为:设置预定间隔,每隔预定间隔时间,遍历下一跳Hash表,预定间隔的计时可通过定时器来实现。如将定时器设置为2分钟,则每隔2分钟,遍历下一跳Hash表,针对下一跳Hash表中各个链表中的下一跳网络设备,构造ARP请求报文。
设置预定次数,对预定次数的计数可通过计数器来实现,分别设置各链表的计数器,为各链表的下一跳网络设备构造ARP报文并分别发送时,各链表的计数器分别加一;如果在预定时间内路由设备收到下一跳网络设备的ARP回应报文,则证明该路由设备与该下一跳网络设备在报文转发的链路上是通畅的,并且该下一跳网络设备能够正常收发报文,所以确定该下一跳网络设备运行正常、有效,从而确定该链表对应的该路由设备路由表中的路由是有效的,将该链表对应的路由设备路由表中的路由设置有效标记,该链表的计数器清零。如果在预定时间内未收到下一跳网络设备的ARP回应报文,则证明下一跳网络设备在报文转发的链路上或下一跳网络设备运行上可能有问题,该链表的计数器不清零。
为确保对下一跳网络设备的检测结果的可靠性,可根据实际需要设置预定次数的数值,如:预定次数设置为3次,那么,在等待预定间隔满后,再次遍历HASH表,重复上述构造ARP请求报文并发送的步骤;如果某链表的计数器达到3次,在预定时间内仍未收到ARP回应报文,则确认该路由设备与下一跳网络设备之间的链路或者是下一跳网络设备有故障,或者是下一跳网络设备根本不存在等原因,使下一跳网络设备不能够进行正常的报文转发。需要根据该链表中的路由将收到ARP回应报文表中对应的记录删除,该删除的记录对应的路由表中所有与该下一跳网络设备相关的路由都要设置无效标记。
上述预定时间、预定间隔、预定次数都可根据实际应用灵活配置,合理设置上述各数据,可在节约网络资源的前提下有效的控制报文转发。确保路由设备可靠、安全的将报文转发至目的地址。
利用本发明进行报文转发控制的具体应用仍根据图1进行说明。
在图1中,路由设备1中的路由表如表1所示,根据表1建立HASH表,进行HASH运算后,路由A和路由C放入一个链表中,路由B和路由D放入一个链表中。设定收到ARP回应报文表中有路由A、路由B、路由C、路由D对应的记录,设定预定次数为3,预定时间间隔为120秒,预定时间为10秒。遍历HASH表,为网络设备2和网络设备3构造ARP报文,为每个链表设置计数器,各计数器开始计数。
为网络设备2构造的ARP报文经Ethernet1/0/0端口发送至网络设备2,由于网络设备2瘫痪,或者是从路由设备1到网络设备2中间的二层设备或链路出现故障,从而导致网络设备2接收不到ARP报文,或不能够回应ARP报文;路由设备1在10秒内接收不到网络设备2的ARP回应报文,该链表的计数器的值为1,不清零。
为网络设备3构造的ARP报文经Ethernet1/0/1端口发送至网络设备3,由于网络设备正常且从路由设备1到网络设备3中间的二层设备或链路正常,网络设备3在接收到ARP报文后回应ARP报文;路由设备1在10秒内接收到网络设备2的ARP回应报文,该链表的计数器清零。将该链表对应的路由表中的路由B和路由D设置有效标记。
隔120秒后,再次遍历HASH表,向网络设备2和网络设备3发送ARP报文等的过程和上述过程相同,如果路由设备1在10秒内仍接收不到网络设备2的ARP回应报文,该链表的计数器的值为2。当该链表的计数器的值为3时,仍接收不到网络设备2的ARP回应报文,删除ARP表中路由A和路由C对应的记录,并将该链表对应的路由表中的路由A和路由C设置无效标记。
在路由设备1需要进行报文转发时,如果路由设备1需要将目的地址为10.1.1.1的报文转发,则采用最长前缀匹配的算法在与表1的目的地址进行匹配时,由于路由A为无效标记的路由,所以匹配到的路由为路由B,路由设备1将报文从路由B进行转发。从而不会引起因网络由设备2瘫痪,或者是从路由设备1到网络设备2中间的二层设备或链路出现故障,出现所有网络终端用户无法访问10.1.1.1的情况。
在一般组网中要求负荷分担而配置等价路由C、D情况下,如果路由设备1需要将目的地址为10.1.2.1的报文转发,则采用最长前缀匹配的算法在与表1的目的地址进行匹配时,由于路由C为无效标记的路由,所以匹配到的路由是路由D,路由设备1将报文从路由B进行转发。从而不会引起因网络由设备2瘫痪,或者是从路由设备1到网络设备2中间的二层设备或链路出现故障,出现某些网络终端用户无法访问10.1.2.1的情况。
如果动态路由协议受到恶意攻击,例如RIP(路由信息协议),网络终端用户恶意构造下一跳不存在路由协议的报文,由于收到ARP回应报文表中无对应的记录,所以路由表中该路由为无效标记的路由,而且遍历HASH表后,向该下一跳网络设备发送ARP报文,在预定时间和预定次数内都不能够收到相应的回应报文,那么路由表中该路由仍为无效标记的路由,从而不会影响网络终端用户正常数据的正常转发。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化。