CN101686200A - 路由转发的方法和设备 - Google Patents
路由转发的方法和设备 Download PDFInfo
- Publication number
- CN101686200A CN101686200A CN200910170932A CN200910170932A CN101686200A CN 101686200 A CN101686200 A CN 101686200A CN 200910170932 A CN200910170932 A CN 200910170932A CN 200910170932 A CN200910170932 A CN 200910170932A CN 101686200 A CN101686200 A CN 101686200A
- Authority
- CN
- China
- Prior art keywords
- route
- priority
- router
- fib
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种路由转发的方法和设备,通过计算路由的优先级,并在FIB满规格的情况下优先处理高优先级的路由,使得重要路由可以被优先处理,这样保证重要路由在新加入的时候,可以成功下发FIB,保证路由转发的可靠性,同时借助CPU的转发机能,保障被替换的路由也可以顺利实现转发。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种路由转发的方法和设备。
背景技术
现有技术中的三层转发流程是对IP报文的目的地址进行分析,根据分析结果,将发送给本机的报文交给上层处理,而将待转发报文通过查找转发表进行链路层封装,最后通过物理发送给相应的目的地址,从而,完成报文的整个处理流程。
在具体的操作流程中,网络互联协议(Internet Protocol,IP)转发是路由器的的关键业务,对于路由器来说,该业务的关键处理依据是软件转发表,而对于三层交换机来说则是芯片转发表。
转发表(Forwarding Information Base,FIB)是三层硬件转发业务的核心,是最终下发到硬件芯片中的信息。FIB表中包含两部分信息:路由表的路由信息和地址解析协议(Address Resolution Protocol,ARP)表的IP与媒体访问控制(Media Access Control,MAC)地址映射信息。
另一方面,硬件交换芯片使用的FIB表和IP协议使用的路由表的功能是一致的,都是用来决定IP数据包的转发出口,区别在于,一个是软件层次的概念,一个是硬件层次的概念。
交换机硬件使用的FIB表同步于软件模块使用的路由表。通过管理路由表,就可以达到同步管理FIB表的目的。
当在路由表中添加一条路由时(包括手工静态添加和路由协议自动添加),交换机的应用软件会将该条路由同步添加到硬件的转发表中。实际上,路由表中对于一个IP地址或是IP网段根据不同路由协议可以学到多个不同的路径,但真正下发到硬件芯片FIB表中的仅是最优的一个。同样,对路由表项进行删除操作,相应的硬件三层转发表项被清除。
通常,把交换机划分为控制平面与转发平面,控制平面的功能在于生成与处理各种表项并下发到驱动,转发平面的功能则是接收报文,然后根据驱动的各种表项来对报文进行高速的转发。而表项的生成与下发又可以划分为平台与驱动,其中,平台负责表项的生成与表项的同步,驱动负责平台的表项下发到硬件。
路由的学习-同步到下驱动的过程如下:
1、路由协议包从收包的接口板透传到主控板。
接口板的交换芯片接收路由协议包,将该协议包发送到接口板CPU,由报文接收接口板进行相关任务的处理,处理后的报文透传到主控板,将报文送给主控板的路由任务处理。
2、主控板的路由学习和同步。
主控板路由管理完成路由的学习,并添加路由消息发送给FIB任务,FIB任务进行主控板FIB表的学习处理,然后,将处理后的路由消息通过进程间通信(Inter-Process Communication,IPC)通道同步给接口板;
3、接口板实现路由学习和下发。
IPC通知接口板FIB接收报文,FIB任务接收IPC通道发送的路由消息,并对其进行解封装,接口板进行本板FIB表的处理,并将最后处理完成的路由下发给驱动。
交换机内部的硬件表项有三个:前缀表项、下一条表项、MAC表项,这三种表项一起决定了所有的报文的转发动作。其中,前缀表项保存着目的IP等路由信息,而下一跳表项则保存着具体的转发信息(包括出端口,出设备等信息),同时,每个前缀表项都指向一个下一跳表项,保证对IP报文进行正常转发。
当交换机接收到一个二层报文时,直接根据MAC表项得到出接口进行转发。
而当交换机接收到一个三层报文时候,根据目的IP地址查询前缀表项,从而,得到报文的下一跳IP地址,然后,通过下一跳IP地址找到对应的MAC与出接口,根据相应的信息完成报文的转发。
如图1所示,可以认为这三张表之间存在一个指针指到下一个表项,具体的关系可以如图1所示。
这三种表项都是由平台软件的路由、ARP与MAC表项生成的,对于MAC表项是直接学习接收报文的源MAC而加入到驱动,其中,对路由与ARP表项下刷硬件表项的过程进行说明如下:
(1)路由表下刷驱动的过程。
对于路由表项下刷驱动,对接口板来说其实就是FIB下驱动,以32位的主机路由与非主机路由为例进行说明如下。
32位的主机路由除了会产生一条前缀表项外,还会产生一条下一跳表项。在下刷时首先根据路由的下一跳下刷下一跳表项,然后在根据目的IP地址下刷一条前缀表项,并建立前缀表项与下一跳表项的相互关系。这里说的是32位的主机路由,而不是说掩码为32位的路由,一般掩码为32位路由是不会产生下一跳表项的,例如,可以打入1万条10.0.0.1/32开始的路由,下一跳为192.168.1.1,那么这1万条32位的路由占用了1万条前缀表项资源,但是它们都指向192.168.1.1这相同的下一跳表项,而主机路由则是由ARP产生。
不同于主机路由,非主机路由只产生一条前缀表项,在下刷过程中,它首先会根据路由的下一跳来查询是否存在相应的下一跳表项,如果存在就生成前缀表项,并建立前缀表项与下一条表项的相互关系;如果不存在相应的下一跳表项,那么该路由表项将不会下刷硬件。不过路由管理不会把下一跳不可达的路由引入路由表,这样可以保证下刷的路由表项的下一跳都是可达的,除非硬件资源不够的情况。
(2)ARP表项下刷过程。
单板学习到ARP表项后,会同步到所有的单板,这样所有单板的ARP表项应该完全相同。在遇到新的ARP需要下刷时,首先根据MAC地址与出接口查询MAC表项,如果没有MAC表项那么增加相应的MAC表项,然后生成一条32位的主机路由,由该主机路由来下刷硬件产生下一跳表项与前缀表项。所以,可以说一条ARP表项将占用一条前缀表项、一条下一跳表项与一条MAC表项。
FIB表项的软硬件规格含义不同。硬件存储中通常是多种表项共用表项资源,而软件表项的规格是专项专用,比如:FIB4和FIB6,以及ARP主机路由、ND主机路由,都占用硬件的路由表资源;或者是FIB表、ARP表、MAC表等表项共用硬件的存储资源。
在确定表项规格时,通常希望资源利用最大化,将共用表项的规格定为最大资源规格。能够达到这样的规格必须是该表项独占硬件资源,如果有多种表项同时存在,每种表项都不可能达到最大规格。这种规格含义上的差异,造成在表项数量比较大时,容易出现硬件资源不足的情况。即软件表项创建成功,而硬件却没有空间存储该表项,造成软硬件表项不一致。
同时,报文的转发流程如图2所示。该流程对基于软转发的路由器和基于芯片转发(硬转发)的路由器都适用,IP转发本身功能是相同的,只是实现有所不同。需要注意的是,对三层交换机来说,只有目的IP为本机的IP报文才送往CPU进行处理,其他需要转发的IP报文由芯片直接转发。
下发FIB表项时候,如果因硬件前缀表项无资源而下发驱动失败时返回资源不足,这时相应的FIB表项记录无资源标志并启动定时器,定时遍历因硬件无资源而下发驱动失败的FIB表项并重刷驱动,以达到在硬件资源释放时,这些软件表项能够下发到硬件的目的。对于FIB6表项,同样如果IPV6前缀表项无资源而导致下发失败,相应的FIB表项将同样标记为无资源并启动定时器,定时遍历因硬件无资源而下发驱动失败的FIB表项并重刷驱动,对于VRF FIB表项,它与公网路由共同占用IPV4前缀表项资源,跟FIB4处理资源不够下发失败表项的方式一样,也是在资源不够的情况下打上标记并启动定时器,以达到在硬件资源释放时,这些VRF FIB表项能够再次下发到硬件。
但是如果一直有其他资源占用硬件资源,那么定时器的查询结果是硬件资源一直处在不足的情况,那么新加入路由就处在一直不能成功下发Fib的状态中。
在实现本发明的过程中,申请人发现现有技术至少存在以下问题:
硬件表项无资源但存在大量软件表项的情况下,一些重要的链路产生震荡,如图3的组网的组网结构,实现有的L3VPN的基本组网,PE1、P和PE2之间建立标签分发协议(Label Distribution Protocol,LDP)会话,建立分层服务提供程序(Layered Service Provider,LSP)公网隧道,PE1和PE2之间建立M-BGP传播私网路由,相同VPN的私网之间互相通信。
如果此时CE1和CE2给PE1发布大量私网路由,但是由于硬件资源共享的,其他表项(包括PE2过来的私网路由)占用大量硬件资源,CE1和CE2过来的路由中只有部分下发到硬件,如果此时Vlan13的物理链路Down掉了,导致从中间P设备的公网路由、PE2过来的公网、私网路由都被撤销,CE1和CE2过来的剩余私网路由就会下发到PE1的硬件中,假如此时将PE1的硬件资源全部占用,然后PE1的Vlan13的物理链路再次UP的时候,P和PE2的路由就会由于PE1资源不足下发硬件不成功,导致公网建立不起来,相同VPN的CE之间不能通信。
同样在上述的组网中,硬件表项无资源但存在大量软件表项的情况下,一些重要的端口接口地址产生震荡,如PE2的Loop0的环回口Up/Down,或者被更改然后还原,但是在UP或者还原之前,PE1和PE2之间通过环回口地址建立的BGP邻居就会断掉,此时从PE2发过来的私网路由就会被撤销,同样CE1和CE2过来的剩余私网路由就会下发到PE1的硬件中,将PE1的硬件资源全部占用,此时如果换回口UP或者地址还原之后,但是此地址由于PE1得硬件资源已经被全部占用,此地址不能下发到硬件,导致PE1和PE2之间的BGP再也建立不起来,两边的私网当然也是不能通信的。
在这两种情况下,会出现硬件资源不足时由于重要路由不能下刷FIB产生的影响就是深远的。
发明内容
本发明提供一种路由转发的方法和设备,实现在FIB满规格,即硬件资源不足的情况下,可以保证重要路由下发的成功。
为达到上述目的,本发明一方面提供了一种路由转发的方法,应用于包括转发表FIB的路由器中,其中,
所述路由器计算接收到的每条路由的优先级,并按照优先级顺序对FIB中的各条路由进行转发处理;
当所述FIB已满,且所述路由器接收到新的路由时,所述路由器根据计算接收到的所述新的路由的优先级,并将所述新的路由的优先级与所述FIB中当前所有路由的最低优先级比较,将优先级高的路由保留在所述FIB表中,进行转发处理。
优选的,所述路由器计算接收到的每条路由的优先级所依据的参数信息,具体包括以下信息的一种或多种:
在单位时间内,所述路由被匹配的次数;
在单位时间内,匹配所述路由的IP报文的服务类型TOS值的平均值;
所述路由是否是指定路由;
所述路由是否是直连路由。
优选的,所述按照优先级顺序对FIB中的各条路由进行转发处理,具体为:
所述路由器为每个优先级的数值建立一个相应的指针,标识所述优先级所对应的处理队列;
所述路由器将具有相同优先级的一条或多条路由按照接收各条路由的时间顺序,以节点的形式排列在所述优先级的指针所表示的处理队列中;
所述路由器按照优先级顺序对各所述路由进行转发处理。
优选的,所述方法还包括:
所述路由器将优先级低的路由做丢弃处理;或,
所述路由器将所述优先级低的路由上报给所述路由器的CPU,进行转发处理。
优选的,所述方法还包括:
当上报给所述路由器的CPU的路由数量达到预设的路由数量阈值时,所述路由器停止将新的被删除的路由上报给所述路由器的CPU;
优选的,所述方法还包括:
所述路由器按照预设的查询周期查询所述路由器中的资源是否被释放;
当所述路由器查询到所述路由器中的资源被释放时,所述路由器按照优先级顺序,将上报给所述路由器的CPU的路由重新加入所述FIB,进行转发处理。
另一方面,本发明还提供了一种路由器,包括FIB和CPU,所述FIB中包含至少一个优先级所对应的处理队列,所述路由器具体包括:
设置模块,用于设置优先级计算策略;
计算模块,用于根据所述设置模块所预设的计算策略计算接收到的每条路由的优先级;
判断模块,用于判断所述FIB是否已满,并在所述FIB已满,且所述通信模块接收到新的路由时,比较所述计算模块所计算的所述新的路由的优先级与所述FIB当前所有路由的最低优先级的大小;
处理模块,用于在所述判断模块判断所述FIB未满时,按照优先级顺序对FIB中的各条路由进行转发处理,还用于在所述判断模块比较路由优先级大小时,将优先级高的路由保留在所述FIB表中;
转发模块,用于对所述FIB中的各条路由进行转发处理。
优选的,所述处理模块,还用于将所述判断模块所判断的优先级低的路由做丢弃处理;或,
所述转发模块,还用于将所述判断模块所判断的优先级低的路由上报给所述CPU,进行转发处理。
优选的,所述设置模块,还用于设置所述CPU的路由数量阈值;
所述判断模块,还用于判断所述转发模块上报给所述CPU的路由数量是否达到所述设置模块设置的路由数量阈值;
所述转发模块,还用于在所述判断模块判断上报给所述CPU的路由数量达到所述设置模块所设置的路由数量阈值时,停止将新的被删除的路由上报给所述CPU。
优选的,所述设置模块,还用于设置查询周期;
所述判断模块,还用于按照所述设置模块所设置的查询周期判断所述路由器中的资源是否被释放;
所述转发模块,还用于在所述判断模块判断所述路由器中的资源被释放时,按照优先级顺序,将上报给所述CPU的路由重新加入所述FIB,进行转发处理。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,可以保证重要路由下发FIB,从而保证了设备与直连设备之间的连通性,提高了业务的可靠性,并且,通过软转发和硬转发结合的方法,保证所有路由转发的成功率。
附图说明
图1为现有技术中各表项之间关系的示意图;
图2为现有技术中报文的转发流程的示意图;
图3为现有技术中一种L3VPN组网结构示意图;
图4为本发明所提出的一种路由转发的方法的流程示意图;
图5为本发明所提出的一种路由转发的方法的流程示意图;
图6为本发明所提出的一种路由器的结构示意图。
具体实施方式
如背景技术所述,在FIB满规格,即硬件资源不足的情况下,新加入的路由由于没有资源,将不能被转发,即使其中包含重要路由,也不能得到优先的转发处理。
本发明提出了一种路由转发的方法,应用于包括FIB的路由器中,其中,路由器计算接收到的每条路由的优先级,并按照接收各条路由的时间顺序,将具有相同优先级的一条或多条路由排列在FIB中的优先级所对应的处理队列中,路由器按照优先级顺序对FIB中的各条路由进行转发处理。
在具体的应用场景中,上述的将路由加入处理队列的过程具体通过以下方式实现:
路由器为每个优先级的数值建立一个相应的指针,标识优先级所对应的处理队列;
路由器将具有相同优先级的一条或多条路由按照接收各条路由的时间顺序,以节点的形式排列在优先级的指针所表示的处理队列中。
需要说明的是,上述通过指针方式标识处理队列以及以节点方式添加路由的方式是发明技术方案的一种优选实施例,在具体的应用场景中,是否应用此种方式进行处理队列的表示并不影响本发明的保护范围。
当路由器的FIB中当前的路由所占用的资源达到该路由器的最大资源,并且路由器接收到新的路由时,即当路由器中没有足够的资源提供给新的路由时,如图4所示,本发明所提出的路由转发的方法包括以下步骤:
步骤S401、路由器计算接收到的新的路由的优先级。
其中,本步骤中所进行的新的路由的优先级的计算,以及在路由器的FIB中当前的路由所占用的资源没有达到该路由器的最大资源时,计算接收到的每条路由的优先级所依据的参数信息具体包括以下信息的一种或多种:
在单位时间内,路由被匹配的次数;
在单位时间内,匹配路由的IP报文的TOS值的平均值;
路由是否是指定路由;
路由是否是直连路由。
根据具体的应用场景,本发明所提出的技术方案可以采用上述的一种或多种参数信息进行优先级计算,具体的计算策略的变化并不影响本发明的保护范围。
步骤S402、路由器判断新的路由的优先级是否大于FIB中当前所有路由的最低优先级。
如果路由器判断新的路由的优先级大于FIB中当前所有路由的最低优先级,则执行步骤S403;
如果路由器判断新的路由的优先级小于或等于FIB中当前所有路由的最低优先级,则执行步骤S405。
步骤S403、路由器按照接收各条路由的时间顺序,删除FIB中当前所有路由的最低优先级所对应的处理队列中的一个或多个路由,直到路由器的资源大于或等于新的路由需要占用的资源。
为了保证所有路由都可以被转发,在本步骤中将路由从处理队列中删除之后,还进一步包括以下处理流程:
路由器将被删除的一个或多个路由上报给路由器的CPU,进行转发处理。
通过这样的处理,可以将被删除的路由通过CPU进行软转发,从而保证路由可以被及时处理。
另一方面,为了保证CPU的资源不会被大量路由转发业务所占用,还通过以下两种方式进行调整:
方式一、设置CPU处理的路由数量阈值。
当上报给CPU的路由数量达到路由数量阈值时,路由器停止将新的被删除的路由上报给CPU。
通过此种方式,可以防止大量路由上报给CPU,占用CPU资源的情况发生,尤其是出现大量仿造路由的网络攻击对,此种方式可以实现有效的防御。
方式二、设置占用资源的查询机制。
当CPU中存在一条或多条路由需要转发时,路由器按照预设的查询周期查询路由器中的被占用的资源是否被释放;
当路由器查询到路由器中的资源被释放时,路由器按照优先级顺序,将上报给路由器的CPU的路由重新加入FIB,进行转发处理。
步骤S404、路由器将新的路由加入FIB,进行转发处理。
此种情况下,按照已确定的优先级顺序,处理FIB中各优先级所对应的处理队列中的路由。
步骤S405、路由器拒绝将新的路由加入FIB中。
此种情况下,对于优先级低于当前处理的所有的路由的新加入路由,路由器没有足够的资源提供给该路由,且当前没有更低优先级的路由可以替换,所以,拒绝对该路由进行转发处理。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,可以保证重要路由下发FIB,从而保证了设备与直连设备之间的连通性,提高了业务的可靠性,并且,通过软转发和硬转发结合的方法,保证所有路由转发的成功率。
下面,结合具体的应用场景,对本发明的技术方案进行说明。
在现有技术中,每个路由经路由器加入FIB之后所形成的转发表项的内容主要包括:
目的地址(Destination):用来标识IP包的目的地址或目的网络。
网络掩码(Mask):和目的地址一起来标识目的主机或路由器所在的网段的地址。
输出接口(Interface):说明IP包将从该路由器哪个接口转发。
本发明所提出的技术方案是在每一个具体的转发表项后添加优先级的标志位。
其中,各路由加入FIB之后所生成的的优先级具体根据相应的计算策略,通过以下四个参数进行计算,分别是:
(1)单位时间内匹配某转发表项的次数
该参数可以指示出该条转发表项的匹配频度,可以说明该转发表项的重要程度。
(2)单位时间内匹配某转发表项的IP报文的服务类型(Type of Service,TOS)值采样均值
该参数结合考虑了服务质量(Quality of Service,QoS)的需求,体现了匹配该转发表项流量的重要程度,进而说明该转发表项的重要程度。
(3)是否是用户指定路由
对于一些关键路由,如协议建立使用的基础路由,需要重点保证优先下发硬件以指导转发。
(4)是否直连路由
直连路由是一切通讯的基础,需要在第一优先级的情况下最优先的下发转发表。
综合以上因素,进而确定每条路由在FIB中的优先级。
优先级的设置方式可以用户自定义,可以在四个因素中任选几种来参与计算此路由在FIB中的优先级。
为了方便说明,本发明的技术方案给出几种优先级的计算方法,分别说明如下;
方法一:选择直连路由、用户自定义路由、TOS值、单位时间内匹配次数全部作为优先级设置的因子。
首先,设Q为优先级的值,T为TOS值,N为单位时间内被匹配次数的数量级,那么各路由优先级的值如下规定:
直连路由:Q=0
用户自定义路由:Q=1
剩下的路由根据其TOS值和单位时间内被匹配次数进行如下计算:
Q=2+50%*T+50%*N
因此,对于每一条路由都有一个对应的Q值,并且Q值越小优先级越高。
方法二:选择直连路由、用户自定义路由和TOS值作为优先级设置的因子。
同样,设Q为优先级的值,T为TOS值,那么各路由优先级的值计算如下:
直连路由:Q=0
用户自定义路由:Q=1
其他路由:Q=2+10%*T
同样每一条路由都有一个对应的Q值,并且Q值越小优先级越高。
方法三:选择直连路由、用户自定义路由和单位时间内匹配次数作为优先级设置的因子。
同样,设Q为优先级的值,N为单位时间内被匹配次数的数量级,那么各路由优先级的值如下规定:
直连路由:Q=0
用户自定义路由:Q=1
其他路由Q=2+10%*N
同样每一条路由都有一个对应的Q值,并且Q值越小优先级越高。
在具体的应用场景中,不管是通过上述的哪种优先级计算方法或是其他计算由县级的方法,最后都是将所有要下发到FIB中的路由分成不同优先级的路由。
在实际的应用场景中,每一个优先级所对应的路由可能不仅仅只有一条,因此,每计算出一个优先级来,就给每个对应的优先级的值分配一个指针,所有优先级相同的路由表项都以节点的形式排列在这个指针后面,在此处排列的原则是根据下发FIB的时间,每一个优先级第一次计算出来的那条路由排在首位,其后相同的路由依次添加在后面。
需要指出的,上述的指针只是本发明的一种优选的技术方案,具体是通过指针还是通过其他的方式标识各个优先级的处理队列,并不影响本发明的保护范围。
在本发明具体的实施过程中,具体的流程如图5所示,包括以下步骤:
步骤S501、路由器接收到新加入的路由。
步骤S502、路由器计算进加入的路由的优先级。
具体的计算方法可以使上述的任意一种方法,具体根据***需求进行设置,计算方法的变化并不影响本发明的保护范围。
步骤S503、路由器判断FIB是否满规格。
如果FIB已经满规格,即没有更多的资源提供给新加入的路由,则执行步骤S504;
如果FIB没有满规格,即可以为新加入的路由提供资源,则执行步骤S507。
步骤S504、路由器判断新加入的路由的优先级是否是最低优先级。
这样的判断主要是通过将新加入的路由的优先级与FIB中现有的路由的优先级进行比较,如果新加入的路由的优先级小于或等于FIB中现有的路由的最低优先级,则认为新加入的路由的优先级是最低优先级,反之,如果新加入的路由的优先级大于FIB中现有的路由的最低优先级,则认为新加入的路由的优先级不是最低优先级。
当路由器判断新加入的路由的优先级是最低优先级时,执行步骤S505;
当路由器判断新加入的路由的优先级不是最低优先级时,执行步骤S506。
步骤S505、路由器拒绝将新加入的路由下发到FIB。
即新加入的路由不具备优先处理的资格。
步骤S506、路由器查找FIB中现有的路由的最低优先级所对应的处理队列,按照接收路由的时间顺序,删除该处理队列中的路由。
查找到此优先级路由所对应的指针所对应的处理队列,通过删除该处理队列中的路由,为新加入的路由清理出资源空间,在实际的操作中,可能存在需要删除多条路由才能为新加入的路由清理出相应的资源空间的情况,因此,如果删除了该处理队列中的一个路由后,当前的资源仍不能满足新的路由的需要的情况下,继续删除该处理中的其他路由,直至为新加入的路由清理出足够的资源空间为止。
此时,继续执行步骤S507。
步骤S507、路由器将新加入的路由加入到FIB,形成转发表项,按照优先级进行转发处理。
需要进一步指出的是,为了进一步保证所有路由的转发可靠性,对于步骤S506中删除的路由,还可以进行以下处理:
步骤S508、路由器将被删除的路由上报给CPU。
在背景技术中提到,目前三层交换机本机报文或者协议报文才会上送CPU,当然这些报文是不会被转发的,其他IP报文都是通过芯片转发,所以CPU还是存在一定能力的转发功能,所以,此时将路由优先级低的报文交给CPU去处理。
步骤S509、CPU根据接收到的路由的数量,做路由数量的安全验证。
设置CPU接收路由的路由数量阈值;
当上报给CPU的路由数量达到路由数量阈值时,执行步骤S510;
当上报给CPU的路由数量没有达到路由数量阈值时,执行步骤S511。
步骤S510、路由器停止将新的被删除的路由上报给CPU。
步骤S511、CPU对上报的路由进行转发。
这样处理可以防止过量报文冲击CPU,首先,给上送给CPU的报文设置一个阀值,根据先来先转发(FIFF)的原则,保证所有匹配到路由的报文都能正常通过CPU转发,但是一旦达到阀值,则后续需要转发的报文就会停止上送,以保证CPU的正常使用。
在本步骤的执行过程中,还进一步包括以上报到CPU的路由的再调度过程,具体说明如下:
步骤S512、路由器周期性查询被占用资源是否释放。
如果没有资源被释放,则返回步骤S511,继续进行转发;
如果有资源被释放,则执行步骤S513。
步骤S513、路由器按照优先级顺序,将上报给路由器的CPU的路由重新加入FIB,进行转发处理。
在具体的应用场景中,上述的步骤S512通过以下方式实现:路由器给上送CPU的这些路由设定一个查询器,设置查询器的时间为X,每隔X的时间就查询一下设备的硬件资源是否有释放,如果查询结果是还有硬件资源,则将原上送CPU处理的转发表项按照保存优先级的顺序重新下发到硬件中,重新进行硬转发。
基于前述的图3所示的网络***,应用本发明所提出的技术方案,以上述现有技术方案中的缺陷分析如下:
如果Vlan13的物理链路Down掉,CE1和CE2过来的路由将PE1的硬件资源全部占用,这个时候,如果Vlan13上的物理链路重新Up了,此时首先需要加入到PE的Fib表中的路由就是此物理接口的直连路由,然后可以进一步按照上述不受S501至S513的处理流程进行处理。
这样的处理,既保证了重要路由能成功下发硬件,也通过CPU对优先级低的路由进行软转发,以达到本发明保证设备转发的可靠性的目的。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,可以保证重要路由下发FIB,从而保证了设备与直连设备之间的连通性,提高了业务的可靠性,并且,通过软转发和硬转发结合的方法,保证所有路由转发的成功率。
为了实现上述的技术方案,本发明还提供了一种路由器,该路由器包括FIB和CPU,其中,FIB中包含至少一个优先级所对应的处理队列。
如图6所示,为本发明所提供的一种路由器的结构示意图,具体包括:
设置模块61,用于设置优先级计算策略。
计算模块62,用于根据设置模块61所设置的计算策略计算所接收到的每条路由的优先级。
判断模块63,用于判断FIB中当前的路由所占用的资源是否达到路由器的最大资源,并在FIB中当前的路由所占用的资源达到路由器的最大资源,并且接收到新的路由时,判断计算模块62所计算的新的路由的优先级是否大于FIB当前所有路由的最低优先级。
处理模块64,用于在判断模块63判断FIB中当前的路由所占用的资源没有达到路由器的最大资源时,按照接收各条路由的时间顺序,将计算模块62计算出的具有相同优先级的一条或多条路由排列在FIB中的优先级所对应的处理队列中,还用于在判断模块63判断新的路由的优先级大于FIB中当前所有路由的最低优先级时,按照接收各条路由的时间顺序删除FIB中当前所有路由的最低优先级所对应的处理队列中的一个或多个路由,直到路由器的资源大于或等于新的路由需要占用的资源,并将新的路由加入FIB中新的路由的优先级所对应的处理队列中,或在判断模块63判断新的路由的优先级小于或等于FIB中当前所有路由的最低优先级,拒绝将新的路由加入FIB中。
转发模块65,用于对FIB中的各条路由进行转发处理。
在具体的应用场景中,转发模块65还用于将处理模块64按照接收各条路由的时间顺序删除的FIB中当前所有路由的最低优先级所对应的处理队列中的一个或多个路由上报给CPU,进行转发处理。
另一方面,设置模块61还用于设置CPU的路由数量阈值。
判断模块63还用于判断转发模块65上报给CPU的路由数量是否达到设置模块61设置的路由数量阈值。
转发模块65还用于在判断模块63判断上报给CPU的路由数量达到设置模块61所设置的路由数量阈值时,停止将新的被删除的路由上报给CPU。
在另一种实施场景中,设置模块61还用于设置查询周期。
判断模块63还用于按照设置模块61所设置的查询周期判断路由器中的资源是否被释放。
转发模块65还用于在判断模块判断路由器中的资源被释放时,按照优先级顺序,将上报给CPU的路由重新加入FIB,进行转发处理。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,可以保证重要路由下发FIB,从而保证了设备与直连设备之间的连通性,提高了业务的可靠性,并且,通过软转发和硬转发结合的方法,保证所有路由转发的成功率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (10)
1、一种路由转发的方法,其特征在于,应用于包括转发表FIB的路由器中,其中,
所述路由器计算接收到的每条路由的优先级,并按照优先级顺序对FIB中的各条路由进行转发处理;
当所述FIB已满,且所述路由器接收到新的路由时,所述路由器根据计算接收到的所述新的路由的优先级,并将所述新的路由的优先级与所述FIB中当前所有路由的最低优先级比较,将优先级高的路由保留在所述FIB表中,进行转发处理。
2、如权利要求1所述的方法,其特征在于,所述路由器计算接收到的每条路由的优先级所依据的参数信息,具体包括以下信息的一种或多种:
在单位时间内,所述路由被匹配的次数;
在单位时间内,匹配所述路由的IP报文的服务类型TOS值的平均值;
所述路由是否是指定路由;
所述路由是否是直连路由。
3、如权利要求1所述的方法,其特征在于,所述按照优先级顺序对FIB中的各条路由进行转发处理,具体为:
所述路由器为每个优先级的数值建立一个相应的指针,标识所述优先级所对应的处理队列;
所述路由器将具有相同优先级的一条或多条路由按照接收各条路由的时间顺序,以节点的形式排列在所述优先级的指针所表示的处理队列中;
所述路由器按照优先级顺序对各所述路由进行转发处理。
4、如权利要求1所述的方法,其特征在于,还包括:
所述路由器将优先级低的路由做丢弃处理;或,
所述路由器将所述优先级低的路由上报给所述路由器的CPU,进行转发处理。
5、如权利要求4所述的方法,其特征在于,还包括:
当上报给所述路由器的CPU的路由数量达到预设的路由数量阈值时,所述路由器停止将新的被删除的路由上报给所述路由器的CPU。
6、如权利要求4所述的方法,其特征在于,还包括:
所述路由器按照预设的查询周期查询所述路由器中的资源是否被释放;
当所述路由器查询到所述路由器中的资源被释放时,所述路由器按照优先级顺序,将上报给所述路由器的CPU的路由重新加入所述FIB,进行转发处理。
7、一种路由器,其特征在于,包括FIB和CPU,所述FIB中包含至少一个优先级所对应的处理队列,所述路由器具体包括:
设置模块,用于设置优先级计算策略;
计算模块,用于根据所述设置模块所预设的计算策略计算接收到的每条路由的优先级;
判断模块,用于判断所述FIB是否已满,并在所述FIB已满,且所述通信模块接收到新的路由时,比较所述计算模块所计算的所述新的路由的优先级与所述FIB当前所有路由的最低优先级的大小;
处理模块,用于在所述判断模块判断所述FIB未满时,按照优先级顺序对FIB中的各条路由进行转发处理,还用于在所述判断模块比较路由优先级大小时,将优先级高的路由保留在所述FIB表中;
转发模块,用于对所述FIB中的各条路由进行转发处理。
8、如权利要求7所述的路由器,其特征在于,
所述处理模块,还用于将所述判断模块所判断的优先级低的路由做丢弃处理;或,
所述转发模块,将所述判断模块所判断的优先级低的路由上报给所述CPU,进行转发处理。
9、如权利要求8所述的路由器,其特征在于,
所述设置模块,还用于设置所述CPU的路由数量阈值;
所述判断模块,还用于判断所述转发模块上报给所述CPU的路由数量是否达到所述设置模块设置的路由数量阈值;
所述转发模块,还用于在所述判断模块判断上报给所述CPU的路由数量达到所述设置模块所设置的路由数量阈值时,停止将新的被删除的路由上报给所述CPU。
10、如权利要求8所述的路由器,其特征在于,所述设置模块,还用于设置查询周期;
所述判断模块,还用于按照所述设置模块所设置的查询周期判断所述路由器中的资源是否被释放;
所述转发模块,还用于在所述判断模块判断所述路由器中的资源被释放时,按照优先级顺序,将上报给所述CPU的路由重新加入所述FIB,进行转发处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910170932A CN101686200A (zh) | 2009-08-21 | 2009-08-21 | 路由转发的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910170932A CN101686200A (zh) | 2009-08-21 | 2009-08-21 | 路由转发的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101686200A true CN101686200A (zh) | 2010-03-31 |
Family
ID=42049181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910170932A Pending CN101686200A (zh) | 2009-08-21 | 2009-08-21 | 路由转发的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101686200A (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102739545A (zh) * | 2012-06-29 | 2012-10-17 | 杭州华三通信技术有限公司 | 发布arp主机路由的方法和装置 |
CN103516612A (zh) * | 2012-06-20 | 2014-01-15 | 北京华为数字技术有限公司 | 分布式路由器中生成路由表项的方法及分布式路由器 |
CN103874157A (zh) * | 2012-12-12 | 2014-06-18 | 华为技术有限公司 | 路由转发、建立路由表、和获取内容的方法及其装置 |
WO2014205883A1 (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 表项添加方法和交换机 |
WO2015089706A1 (zh) * | 2013-12-16 | 2015-06-25 | 华为技术有限公司 | 一种重路由顺序规划方法及*** |
CN105379207A (zh) * | 2013-06-28 | 2016-03-02 | 华为技术有限公司 | 表项添加方法和交换机 |
CN105939294A (zh) * | 2015-09-06 | 2016-09-14 | 杭州迪普科技有限公司 | 报文控制的方法及装置 |
CN107070797A (zh) * | 2017-03-13 | 2017-08-18 | 杭州迪普科技股份有限公司 | 一种报文转发的方法及*** |
CN108777668A (zh) * | 2018-06-08 | 2018-11-09 | 烽火通信科技股份有限公司 | 一种三层交换机的路由资源控制方法及*** |
CN109039900A (zh) * | 2018-08-10 | 2018-12-18 | 北京邮电大学 | 一种发送credit包的停止信号的方法和装置 |
CN109802959A (zh) * | 2019-01-07 | 2019-05-24 | 烽火通信科技股份有限公司 | 双栈环境下的互联网协议选择方法及*** |
CN110035006A (zh) * | 2018-01-12 | 2019-07-19 | 丛林网络公司 | 转发平面重置的单独网络设备 |
CN110086711A (zh) * | 2019-04-29 | 2019-08-02 | 新华三技术有限公司 | 流量回切方法、装置、电子设备及可读存储介质 |
CN110336748A (zh) * | 2019-07-10 | 2019-10-15 | 迈普通信技术股份有限公司 | 表项下发方法、装置、数据转发设备及可读存储介质 |
US10979339B2 (en) | 2018-01-12 | 2021-04-13 | Juniper Networks, Inc. | Node representations of packet forwarding path elements |
-
2009
- 2009-08-21 CN CN200910170932A patent/CN101686200A/zh active Pending
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103516612B (zh) * | 2012-06-20 | 2016-08-03 | 北京华为数字技术有限公司 | 分布式路由器中生成路由表项的方法及分布式路由器 |
CN103516612A (zh) * | 2012-06-20 | 2014-01-15 | 北京华为数字技术有限公司 | 分布式路由器中生成路由表项的方法及分布式路由器 |
CN102739545B (zh) * | 2012-06-29 | 2015-06-10 | 杭州华三通信技术有限公司 | 发布arp主机路由的方法和装置 |
CN102739545A (zh) * | 2012-06-29 | 2012-10-17 | 杭州华三通信技术有限公司 | 发布arp主机路由的方法和装置 |
CN103874157A (zh) * | 2012-12-12 | 2014-06-18 | 华为技术有限公司 | 路由转发、建立路由表、和获取内容的方法及其装置 |
WO2014089986A1 (zh) * | 2012-12-12 | 2014-06-19 | 华为技术有限公司 | 路由转发、建立路由表、和获取内容的方法及其装置 |
US9948557B2 (en) | 2012-12-12 | 2018-04-17 | Huawei Technologies Co., Ltd. | Methods and apparatuses for routing and forwarding, establishing routing table, and acquiring content |
CN103874157B (zh) * | 2012-12-12 | 2017-07-07 | 华为技术有限公司 | 路由转发、建立路由表、和获取内容的方法及其装置 |
CN105379207A (zh) * | 2013-06-28 | 2016-03-02 | 华为技术有限公司 | 表项添加方法和交换机 |
US20160119201A1 (en) * | 2013-06-28 | 2016-04-28 | Huawei Technologies Co., Ltd. | Entry adding method and switch |
US9942113B2 (en) * | 2013-06-28 | 2018-04-10 | Huawei Technologies Co., Ltd. | Entry adding method and switch |
WO2014205883A1 (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 表项添加方法和交换机 |
CN105379207B (zh) * | 2013-06-28 | 2019-05-10 | 华为技术有限公司 | 表项添加方法和交换机 |
WO2015089706A1 (zh) * | 2013-12-16 | 2015-06-25 | 华为技术有限公司 | 一种重路由顺序规划方法及*** |
US10015079B2 (en) | 2013-12-16 | 2018-07-03 | Huawei Technologies Co., Ltd. | Rerouting sequence planning method and system |
CN105939294A (zh) * | 2015-09-06 | 2016-09-14 | 杭州迪普科技有限公司 | 报文控制的方法及装置 |
CN107070797A (zh) * | 2017-03-13 | 2017-08-18 | 杭州迪普科技股份有限公司 | 一种报文转发的方法及*** |
CN107070797B (zh) * | 2017-03-13 | 2020-03-06 | 杭州迪普科技股份有限公司 | 一种报文转发的方法及*** |
US10979339B2 (en) | 2018-01-12 | 2021-04-13 | Juniper Networks, Inc. | Node representations of packet forwarding path elements |
CN110035006B (zh) * | 2018-01-12 | 2020-11-20 | 瞻博网络公司 | 转发分组的方法、网络设备及计算机可读介质 |
CN110035006A (zh) * | 2018-01-12 | 2019-07-19 | 丛林网络公司 | 转发平面重置的单独网络设备 |
CN108777668B (zh) * | 2018-06-08 | 2020-01-07 | 烽火通信科技股份有限公司 | 一种三层交换机的路由资源控制方法及*** |
WO2019233061A1 (zh) * | 2018-06-08 | 2019-12-12 | 烽火通信科技股份有限公司 | 一种三层交换机的路由资源控制方法及*** |
CN108777668A (zh) * | 2018-06-08 | 2018-11-09 | 烽火通信科技股份有限公司 | 一种三层交换机的路由资源控制方法及*** |
CN109039900A (zh) * | 2018-08-10 | 2018-12-18 | 北京邮电大学 | 一种发送credit包的停止信号的方法和装置 |
CN109802959A (zh) * | 2019-01-07 | 2019-05-24 | 烽火通信科技股份有限公司 | 双栈环境下的互联网协议选择方法及*** |
CN110086711A (zh) * | 2019-04-29 | 2019-08-02 | 新华三技术有限公司 | 流量回切方法、装置、电子设备及可读存储介质 |
CN110086711B (zh) * | 2019-04-29 | 2021-06-15 | 新华三技术有限公司 | 流量回切方法、装置、电子设备及可读存储介质 |
CN110336748A (zh) * | 2019-07-10 | 2019-10-15 | 迈普通信技术股份有限公司 | 表项下发方法、装置、数据转发设备及可读存储介质 |
CN110336748B (zh) * | 2019-07-10 | 2021-08-17 | 迈普通信技术股份有限公司 | 表项下发方法、装置、数据转发设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101686200A (zh) | 路由转发的方法和设备 | |
CN101577679B (zh) | 实现指定路由器之间组播业务分担的状态管理方法和装置 | |
CN100596107C (zh) | 报文转发方法以及自治***边界路由器 | |
CN101277245B (zh) | 一种l2vpn跨域的实现方法、***和装置 | |
CN101631089B (zh) | 基于私网vpn的流量统计方法、设备和*** | |
CN100505674C (zh) | 一种虚拟专用网内的报文转发方法、***和边缘设备 | |
CN101651630A (zh) | 一种基于链路故障的切换方法及装置 | |
EP2991284B1 (en) | Method and device used in ethernet virtual private network | |
CN106375105B (zh) | 一种确定路径故障的方法、控制器、交换机和*** | |
TW201225579A (en) | Load balancing in shortest-path-bridging networks | |
CN103428088B (zh) | 一种树根分配、报文处理的方法及路由网桥 | |
CN103581022B (zh) | Mac地址的查找转发方法和装置 | |
JP2018191290A (ja) | 負荷分散を実現するための方法、装置、およびネットワークシステム | |
CN105594167A (zh) | 转发报文的方法、控制器、转发设备和网络*** | |
CN107612809A (zh) | 一种组播表项同步方法以及设备 | |
WO2019196653A1 (zh) | 转发报文方法和装置 | |
CN102739526B (zh) | 一种高效分布式路由表的实现方法 | |
WO2018010519A1 (zh) | 一种建立组播隧道的方法和装置 | |
CN102123106A (zh) | 一种虚拟专用局域网服务网络中mac地址学习方法和装置 | |
US20060268853A1 (en) | Methods and apparatus for distributing label information | |
CN100484080C (zh) | 一种虚拟私有网的路由引入方法、***和运营商边缘设备 | |
CN107070790A (zh) | 一种路由学习方法及路由设备 | |
CN104301229A (zh) | 数据包转发方法、路由表生成方法及装置 | |
CN110430131B (zh) | 一种报文转发方法及装置 | |
EP3503484B1 (en) | Message transmission methods and devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100331 |