一种路由下一跳不可达的处理方法及系统的制作方法

文档序号:7949932阅读:604来源:国知局
专利名称:一种路由下一跳不可达的处理方法及系统的制作方法
技术领域
本发明涉及网络通信技术,尤其涉及一种路由下一跳不可达的处理方法及系统。
背景技术
随着通信技术的发展,网络规模不断扩大,路由表的数量也在不断扩大。如果三层网络设备依然使用原有的路由表(Routing Table)处理方式,则设备的安全性、稳定性等将会受到很大的威胁,因此有必要对现有的路由表处理方式进行改进。三层网络设备的主要工作就是为经过设备的每个数据包寻找一条最佳传输路径, 并将该数据有效地传送到目的站点。为了完成这项工作,在三层网络设备中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。如图1所示,软件中保存的一条路由30. 0. 0. 0 20. 0. 0. 2,这条路由的意义就是,去往网络30. 0. 0. 0所要经过的下一个设备是设备B 20. 0. 0. 2。TCP/IP协议中,地址解析协议(ARP)负责将下一跳IP地址解析为下一跳硬件地址 (Media Access Control,MAC,用来定义网络设备的位置)。ARP协议是一个软件模块,用于解析IP地址对应的MAC地址,保存有一张IP地址和MAC地址的对应关系表。ARP协议有两种报文请求报文和应答报文,当设备A要和设备B通信时,如果设备A只知道设备B的IP地址,而不知道设备B的MAC地址,设备A就会发送一个ARP请求报文,请求设备B的IP地址对应的MAC地址,设备B收到ARP请求报文后发送一个ARP应答报文,告诉设备A它的MAC地址是多少,这样设备A就能和设备B通信了。设备A的ARP表中存在一条ARP表项设备B的IP地址设备B的MAC地址,这样设备A就学习到了设备B的ARP信息,这就是ARP学习。如果某个时刻设备B和设备A的连接线路出现故障断开了,设备A上设备B的IP地址对应的ARP表项由于长时间得不到更新,设备A就会删除设备B的IP地址对应的ARP表项,这就是ARP老化。如果某个时刻设备B的MAC地址发生了变化,设备A就会更新设备B的IP地址对应的ARP表项,这就是ARP 更新。对于三层网络设备来说,路由协议负责生成路由,并将路由下发形成路由表用来指导三层报文转发。在IP网络中,IP数据包到达三层网络设备后,会进行路由表的查找, 查找得到下一跳的MAC地址才能进行报文的封装,从而将报文通过链路层进行正确的转发,如果路由的下一跳不可达(如图1所示,由于设备C和设备A之间的线路断开了,路由 40. 0. 0. 0 20. 0. 0. 3的下一跳就是不可达的),就无法得到下一跳的MAC地址,该IP数据包只能被丢弃。对于路由下一跳不可达的问题,现有的处理方式有两种1)下一跳不可达的路由,如图1所示,软件中保存的一条路由 40. 0. 0. 020. 0. 0.3,由于设备C和设备A之间的线路断开了,对设备A来讲,设备C就变成了不可达的下一跳设备。设备A就把40. 0. 0. 0这条路由的下一跳暂时修改为设备A的MAC 添加到硬件路由表中。报文到来后,硬件芯片把报文交到设备A进行软件处理,设备A向下一跳20. 0. 0. 3发送ARP请求报文,如果学习到下一跳的MAC,则更新硬件路由表,把下一跳改为正确的下一跳MAC地址0005. 1111. 3333,把该报文发送到下一跳设备,否则丢弃该报文。2)下一跳不可达的路由,直接添加到硬件路由表中,硬件保存下一跳的IP地址而不是MAC地址,报文到来后,查找硬件路由表得到下一跳IP地址,如果下一跳不可达,由芯片构造ARP请求报文进行ARP学习,如果学习到下一跳的MAC地址,把该报文发送到下一跳设备,如果未学习到下一跳的MAC地址则丢弃该报文。对于路由下一跳不可达的问题,考虑到安全性和高效性等因素,发现上述第一种处理方式存在着如下问题大型网络中,大量的报文匹配到下一跳不可达的路由,从而上交到CPU,导致CPU 利用率上升,占用宝贵的CPU资源,严重时甚至导致系统崩溃。而且每个报文的到来,CPU都会发送相应的ARP请求报文,占用较多的网络带宽。对于上述第二种处理方式,存在着如下问题这种处理方式需要芯片构造ARP请求报文,但是市场上很多芯片都不支持这种构造ARP请求报文的功能,对一些设备来说更换芯片又存在着较大的成本支出。而且,每个报文的到来,硬件都会发送相应的ARP请求报文,也会占用大量的网络带宽。

发明内容
本发明所要解决的技术问题是克服现有技术面对下一跳不可达的路由占用大量网络带宽的不足。为了解决上述技术问题,本发明提供了一种路由下一跳不可达的处理方法,包括将不可达下一跳的IP地址添加进一级链表中,并把存储该下一跳不可达的路由的存储地址添加到与该不可达下一跳对应的二级链表中;周期性地对该一级链表中的每个下一跳进行地址解析协议(ARP)学习;根据该ARP学习的学习结果,将变为可达的下一跳在该二级链表中的存储地址所存储的路由添加进硬件路由表,并删除该二级链表中的所有路由的存储地址,从该一级链表中删除该变为可达的下一跳。优选地,将不可达下一跳的IP地址添加进一级链表中,并把存储该下一跳不可达的路由的存储地址添加到二级链表中的步骤,包括不将下一跳不可达的路由添加到硬件路由表中。优选地,将不可达下一跳的IP地址添加进一级链表中,并把存储该下一跳不可达的路由的存储地址添加到二级链表中的步骤,包括不将下一跳不可达的路由的下一跳修改为CPU的硬件地址。优选地,可达的下一跳的IP地址在ARP老化后进行ARP学习,不成功则从该硬件路由表中删除以该ARP老化的IP地址为下一跳的路由,将下一跳添加进该一级链表。优选地,不成功则从该硬件路由表中删除以该ARP老化的IP地址为下一跳的路由的步骤,包括该ARP学习不成功时获得该ARP老化的IP地址;
获得以该ARP老化的IP地址为下一跳的路由;从该硬件路由表中删除所获得的该以该ARP老化的IP地址为下一跳的路由。优选地,下一跳对应的ARP更新时,在该硬件路由表中更新路由的下一跳信息。本发明还提供了一种路由下一跳不可达的处理系统,包括一级链表;二级链表;硬件路由表;添加模块,用于将不可达下一跳的IP地址添加进该一级链表中,并把存储该下一跳不可达的路由的存储地址添加到与该不可达下一跳对应的该二级链表中;学习模块,用于周期性地对该一级链表中的每个下一跳进行地址解析协议(ARP) 学习;管理模块,用于根据该ARP学习的学习结果,将变为可达的下一跳在该二级链表中的存储地址所存储的路由添加进该硬件路由表,并删除该二级链表中的所有路由的存储地址,从该一级链表中删除该变为可达的下一跳。优选地,该添加模块用于不将下一跳不可达的路由添加到硬件路由表中。优选地,该添加模块用于不将下一跳不可达的路由的下一跳修改为CPU的硬件地址。优选地,该学习模块进一步用于可达的下一跳的IP地址在ARP老化后进行ARP学习,不成功则从该硬件路由表中删除以该ARP老化的IP地址为下一跳的路由,将下一跳添加进该一级链表。优选地,该学习模块用于在该ARP不成功时获得该ARP老化的IP地址,并获得以该ARP老化的IP地址为下一跳的路由,从该硬件路由表中删除所获得的该以该ARP老化的 IP地址为下一跳的路由。优选地,该系统包括更新模块,用于在下一跳对应的ARP更新时,在该硬件路由表中更新路由的下一跳/[目息°与现有技术相比,本发明的实施例未将下一跳不可达的路由添加到硬件路由表中,CPU因此不会收到大量匹配到下一跳不可达路由的报文,克服了现有技术因下一跳不可达的路由而发送大量ARP请求报文而占用网络带宽的问题。本发明的实施例周期性地发送不可达下一跳的ARP请求报文,使下一跳不可达路由能够及时地得到更新。本发明的实施例在路由的下一跳对应的MAC地址等信息变化时,只更新路由的下一跳信息,减少了硬件操作时间,提高了操作效率。本发明的实施例的不可达下一跳链表采用二层链表结构,大大减少了查找整张路由表带来的花费,提高了操作效率。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。


附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。在附图中图1为下一跳不可达路由示意图。图2为本发明实施例路由下一跳不可达的处理方法的流程示意图。图3为本发明实施例中路由的下一跳不可达时的操作示意图。图4为本发明实施例中二层链表的结构示意图。图5为本发明实施例提供的路由下一跳不可达的处理系统的组成示意图。
具体实施例方式首先,如果不冲突,本发明实施例以及实施例中的各个特征在不相冲突前提下的相互结合,均在本发明的保护范围之内。另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图2为本发明实施例路由下一跳不可达的处理方法的流程示意图,图3为本发明实施例中路由的下一跳不可达时的操作示意图,图4是本发明实施例中二层链表的结构示意图。如图2所示,本实施例的流程主要包括如下步骤步骤S210,对于下一跳不可达的路由,不将它们的下一跳修改为本设备CPU的MAC 地址,也不添加到硬件路由表中,只通过软件路由表存储该条路由的IP地址,用于后续的管理和决策。不将下一跳不可达的路由添加到硬件路由表中,IP报文到达设备后而是查找路由表,由于没有匹配的路由,所以报文会直接被丢弃掉,不会上交到CPU。本实施例如此处理, 不会导致CPU利用率的上升,芯片也不需要具备支持发送ARP请求报文的功能。这样软件和硬件都不会发送ARP请求报文,解决了现有技术因发送大量ARP请求报文而占用网络带宽的问题。步骤S220,如图3、4所示,采用软件记录路由时,如果路由的下一跳不可达,把不可达的下一跳添加进记录不可达下一跳的一级链表中,并把该路由在软件路由表中的存储地址添加到与该不可达的下一跳对应的二级链表中。本发明的实施例为了提高效率,在每个下一跳下保存了相关路由的存储地址, 通过这些存储地址能够立即得到相关的路由。以20. 0.0. 5为下一跳的路由有三条,它们的存储地址为0x02002310、0x020032M、0x02004000,对应的路由的目的地址分别为 30. 0. 0. 0,60. 0. 0. 0,80. 0. 0. O0本发明的实施例将这些路由添加在硬件路由表中。比如要添加路由50.0.0.0 20. 0.0. 4,因为20. 0.0. 4不可达,因此在记录不可达下一跳的一级链表中添加不可达下一跳的IP地址20. 0. 0. 4这个链表节点,如果20. 0. 0. 4 这个链表节点已经存在,只须把路由50. 0. 0. 0 20. 0. 0. 4在内存中的存储地址放在不可达下一跳的IP地址20. 0.0. 4的二级链表中。这样处理加快了查找路由的速度,从一级链表中可以直接得到相关路由的指针(即存储地址),而不必查找整个路由表,尤其是对路由数目很大,查找整个路由表非常费时的情况下,明显提高了查找效率,节省了查找时间。步骤S230,周期性地向记录不可达下一跳的一级链表中的每个下一跳发送ARP请求报文,也即周期性地对一级链表中的每个下一跳进行ARP学习。
现有技术中把下一跳不可达路由的下一跳修改为CPU的MAC,然后添加进硬件路由表,用于后续实现硬件转发IP报文。这样处理有一个优势,那就是可以及时地更新路由。 因为收到一个匹配到这条路由的报文,就交到CPU,CPU就会向不可达的下一跳发送ARP请求,如果这时下一跳可达了,就能立即更新该路由,把硬件路由表中的下一跳修改为正确的下一跳。本发明的实施例对下一跳不可达路由的处理方式是不添加到硬件路由表中,报文因此不会上交到CPU。当下一跳可达后,由于没有及时地发送ARP请求,所以就不能及时把相应的路由添加到硬件路由表中。为了克服不能及时地发送ARP请求的不足,本发明的实施例周期性地向不可达的下一跳发送ARP请求报文。每隔一定时间T便遍历一级链表,向每个不可达下一跳发送ARP 请求报文。这样就能及时地学习到下一跳的MAC,从而能及时地把软件保存的路由添加到硬件中。步骤S240,学习到ARP应答报文后遍历一级链表,查找是不是某个之前不可达的下一跳现在变为可达了。如果某个之前不可达的下一跳现在变为可达,则把二级链表中的存储地址所存储的路由添加进硬件路由表,并删除该二级链表中的所有路由的存储地址, 从该一级链表中删除该变为可达的下一跳。举例说明,如图3所示,收到一个ARP应答报文,应答报文中的IP地址和MAC地址对应为20. 0. 0. 5 0005. 1234. 2365,遍历一级链表,查找到不可达的下一跳20. 0. 0. 5变为
可达,于是20. 0. 0. 5 二级链表下的相关路由需要更新。如果之前没有保存下一跳为20. 0. 0. 5的路由的存储地址,则需要从整张路由表中查找下一跳为20. 0. 0. 5的路由,大型网络中路由表的大小能达到10万条,从里面查找是非常费时的。步骤S250,可达的下一跳对应的IP地址ARP老化后,为了防止ARP太频繁地老化和学习,此时立即发送一条ARP请求报文以进行ARP学习。如果没有成功学习到,则查找之前记录的软件路由表,获得该ARP老化的IP地址,并获得以该ARP老化的IP地址为下一跳的路由,从硬件路由表中删除所获得的该路由,并把该下一跳添加进一级链表。步骤S^O,当下一跳对应的ARP更新(下一跳IP地址对应的MAC地址变了 )时, 在硬件路由表中更新路由的下一跳信息。现有技术的通常做法是,先把原来的路由删除后再添加一条新的路由。本发明的实施例并没有把原来的路由从硬件删除后再添加新的路由,而是只在硬件路由表中更新路由的下一跳信息,如此处理减少了硬件操作时间。实际环境中有很多条路由都有相同的下一跳,因此在下一跳更新时,每条路由只更新其下一跳信息,节省了大量的硬件操作时间。本发明还提供了一种路由下一跳不可达的处理系统,如图5所示,该处理系统主要包括一级链表510、二级链表520、硬件路由表530、添加模块M0、学习模块550以及管理模块560,其中添加模块M0,与该一级链表510及二级链表520相连,用于存储下一跳不可达的路由,将不可达下一跳的IP地址添加进该一级链表510中,并把存储该下一跳不可达的路由的存储地址添加到该二级链表520中;学习模块550,与该一级链表510、二级链表520及硬件路由表530相连,用于周期性地对该一级链表510中的每个下一跳进行地址解析协议(ARP)学习;管理模块560,与该一级链表510、二级链表520及硬件路由表530及学习模块550 相连,用于根据该ARP学习的学习结果,将变为可达的下一跳在该二级链表520中的存储地址所存储的路由添加进硬件路由表530,并删除该二级链表520中的所有路由的存储地址, 从该一级链表510中删除该变为可达的下一跳。其中,该添加模块540用于不将下一跳不可达的路由添加到硬件路由表530中。其中,该添加模块540用于不将下一跳不可达的路由的下一跳修改为CPU的硬件地址。其中,该学习模块550进一步用于可达的下一跳的IP地址在ARP老化后进行ARP 学习,不成功则从该硬件路由表530中删除以该ARP老化的IP地址为下一跳的路由,将下一跳添加进该一级链表510。其中,该学习模块550用于在该ARP不成功时获得该ARP老化的IP地址,并获得以该ARP老化的IP地址为下一跳的路由,从该硬件路由表530中删除所获得的该以该ARP 老化的IP地址为下一跳的路由。其中,该系统进一步包括更新模块570,与该硬件路由表530相连,用于在下一跳对应的ARP更新时,在该硬件路由表530中更新路由的下一跳信息。本发明的实施例未将下一跳不可达的路由添加到硬件路由表中,因此保护了 CPU, CPU不会收到大量匹配到下一跳不可达路由的报文。本发明的实施例还解决了现有技术发送大量ARP请求报文而占用网络带宽的问题。本发明的实施例周期性地发送不可达下一跳的ARP请求报文,使下一跳不可达路由能够及时地得到更新,从而能够及时地添加进硬件中。本发明的实施例在路由的下一跳对应的MAC地址等信息变化时,并没有把原来的路由从硬件删除后再添加新的路由,而是只更新路由的下一跳信息,减少了硬件操作时间, 提高了操作效率。本发明的实施例中,记录不可达下一跳的链表采用二层链表结构,其中一级链表保存不可达下一跳的IP地址;二级链表保存下一跳相应的不可达路由在软件路由表中的存储地址,由此大大减少了查找整张路由表带来的花费,提高了操作效率。本领域的技术人员应该明白,上述的本发明所提供的装置和/或系统类的实施例中各组成部分,以及方法类的实施例中各步骤,可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行, 或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化, 但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
权利要求
1.一种路由下一跳不可达的处理方法,包括将不可达下一跳的IP地址添加进一级链表中,并把存储该下一跳不可达的路由的存储地址添加到与该不可达下一跳对应的二级链表中;周期性地对该一级链表中的每个下一跳进行地址解析协议(ARP)学习; 根据该ARP学习的学习结果,将变为可达的下一跳在该二级链表中的存储地址所存储的路由添加进硬件路由表,并删除该二级链表中的所有路由的存储地址,从该一级链表中删除该变为可达的下一跳。
2.根据权利要求1所述的方法,其中,将不可达下一跳的IP地址添加进一级链表中,并把存储该下一跳不可达的路由的存储地址添加到二级链表中的步骤,包括不将下一跳不可达的路由添加到硬件路由表中。
3.根据权利要求1或2所述的方法,其中,将不可达下一跳的IP地址添加进一级链表中,并把存储该下一跳不可达的路由的存储地址添加到二级链表中的步骤,包括不将下一跳不可达的路由的下一跳修改为CPU的硬件地址。
4.根据权利要求1或2所述的方法,其中,该方法包括可达的下一跳的IP地址在ARP老化后进行ARP学习,不成功则从该硬件路由表中删除以该ARP老化的IP地址为下一跳的路由,将下一跳添加进该一级链表。
5.根据权利要求4所述的方法,其中,不成功则从该硬件路由表中删除以该ARP老化的 IP地址为下一跳的路由的步骤,包括该ARP学习不成功时获得该ARP老化的IP地址; 获得以该ARP老化的IP地址为下一跳的路由;从该硬件路由表中删除所获得的该以该ARP老化的IP地址为下一跳的路由。
6.根据权利要求1或2所述的方法,其中下一跳对应的ARP更新时,在该硬件路由表中更新路由的下一跳信息。
7.一种路由下一跳不可达的处理系统,包括 一级链表;二级链表; 硬件路由表;添加模块,用于将不可达下一跳的IP地址添加进该一级链表中,并把存储该下一跳不可达的路由的存储地址添加到与该不可达下一跳对应的该二级链表中;学习模块,用于周期性地对该一级链表中的每个下一跳进行地址解析协议(ARP)学习;管理模块,用于根据该ARP学习的学习结果,将变为可达的下一跳在该二级链表中的存储地址所存储的路由添加进该硬件路由表,并删除该二级链表中的所有路由的存储地址,从该一级链表中删除该变为可达的下一跳。
8.根据权利要求7所述的系统,其中该添加模块用于不将下一跳不可达的路由添加到硬件路由表中。
9.根据权利要求7或8所述的系统,其中该添加模块用于不将下一跳不可达的路由的下一跳修改为CPU的硬件地址。
10.根据权利要求7或8所述的系统,其中该学习模块进一步用于可达的下一跳的IP地址在ARP老化后进行ARP学习,不成功则从该硬件路由表中删除以该ARP老化的IP地址为下一跳的路由,将下一跳添加进该一级链表。
11.根据权利要求10所述的系统,其中该学习模块用于在该ARP不成功时获得该ARP老化的IP地址,并获得以该ARP老化的 IP地址为下一跳的路由,从该硬件路由表中删除所获得的该以该ARP老化的IP地址为下一跳的路由。
12.根据权利要求7或8所述的系统,其中,该系统包括更新模块,用于在下一跳对应的ARP更新时,在该硬件路由表中更新路由的下一跳信肩、ο
全文摘要
本发明公开了一种路由下一跳不可达的处理方法及系统,克服现有技术面对下一跳不可达的路由占用大量网络带宽的不足,其中该方法包括将不可达下一跳的IP地址添加进一级链表中,并把存储该下一跳不可达的路由的存储地址添加到与该不可达下一跳对应的二级链表中;周期性地对该一级链表中的每个下一跳进行ARP学习;根据该ARP学习的学习结果,将变为可达的下一跳在该二级链表中的存储地址所存储的路由添加进硬件路由表,并删除该二级链表中的所有路由的存储地址,从该一级链表中删除该变为可达的下一跳。本发明的实施例克服了现有技术因下一跳不可达的路由而发送大量ARP请求报文而占用网络带宽的问题。
文档编号H04L12/56GK102413038SQ20111032844
公开日2012年4月11日 申请日期2011年10月25日 优先权日2011年10月25日
发明者孙庆尧 申请人:瑞斯康达科技发展股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1