CN109039908A - 一种递归路由的切换方法、路由器、交换机及电子设备 - Google Patents
一种递归路由的切换方法、路由器、交换机及电子设备 Download PDFInfo
- Publication number
- CN109039908A CN109039908A CN201810614666.4A CN201810614666A CN109039908A CN 109039908 A CN109039908 A CN 109039908A CN 201810614666 A CN201810614666 A CN 201810614666A CN 109039908 A CN109039908 A CN 109039908A
- Authority
- CN
- China
- Prior art keywords
- routing
- recurrence
- hop
- address
- host computer
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种递归路由的切换方法、路由器、交换机及电子设备。所述方法包括:根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。本发明实施例递归路由切换时间与递归路由数量无关,减少了网络断流时间,并且不需要根据实际场景配置,切换粒度为单条路由级,不会导致误切其它路由,避免不必要的断流,提高了网络可用性。
Description
技术领域
本发明实施例涉及通信技术领域,具体涉及一种递归路由的切换方法、路由器、交换机及电子设备。
背景技术
路由设备转发报文时,需要依赖路由表(Routing Information Base,RIB)中的路由信息,路由信息包括:前缀(/掩码长度)、下一跳地址(出口)和路由行为,例如:2.0.0.0/24下一跳IP 3.0.0.1GigabitEthernet 0/1forward,其中2.0.0.0/24是前缀和掩码长度,3.0.0.1是下一跳IP,GigabitEthernet 0/1是下一跳出口,forward为路由的行为。当路由设备接收到目的地址为2.0.0.0~2.0.0.255的IP报文时,通过最长前缀匹配原则(LongestPrefix Match,简称LPM)查找路由表命中2.0.0.0/24的路由,转发给下一跳3.0.0.1。
路由表中的信息可以是手工配置,也可以通过动态路由协议生成。手工配置或边界路由协议(Border Gateway Protocol,简称BGP)可生成一种下一跳非直连的路由,即下一跳IP是远端设备的,需要根据下一跳IP再查路由表,可能多次递归后,最终确定直连下一跳IP地址。对于下一跳IP不是直连IP地址的路由,称之为递归路由。
递归路由可能需要多次查找路由表,考虑最长前缀匹配的查找性能问题,实际上,路由设备转发报文是根据路由表计算得到的转发表(Fowarding Information Base,简称FIB)来决策的,转发表中的下一跳都是直连可达的。
例如,路由表RIB为:
1.0.0.0/24下一跳IP 2.0.0.1
2.0.0.0/24下一跳IP 3.0.0.1
假设3.0.0.1是直连下一跳,2.0.0.1不是直连下一跳,则1.0.0.0/24为递归路由。通过路由计算:1.0.0.0/24的路由下一跳2.0.0.1,不是直连的,用2.0.0.1查路由表,匹配2.0.0.0/24得到直连下一跳3.0.0.1,故得到的转发表FIB为:
1.0.0.0/24下一跳IP 3.0.0.1
2.0.0.0/24下一跳IP 3.0.0.1
如果2.0.0.0/24路由下一跳变成4.0.0.1,若4.0.0.1是直连下一跳,则转发表中两条路由都需要更新,即转发表FIB更新为:
1.0.0.0/24下一跳IP 4.0.0.1
2.0.0.0/24下一跳IP 4.0.0.1
如果有1000条递归路由的下一跳都是2.0.0.1,当2.0.0.0/24路由下一跳变化时,1000条递归路由生成的转发表都得变化;在转发表未更新完成前,可能导致报文断流,关联的路由越多,断流时间越长。
图1为路由设备链路故障场景示意图,如图1所示,R1、R2、R3、R4、R5是路由设备,R1、R2、R3、R4在一个自治域(Autonomous System,简称AS)内,R5属于另一个自治域。R1、R2、R3、R4跑开放式最短路径优先协议(Open Shortest Path First,简称OSPF);R4与R5之间运行外部边界网关协议(External Border Gateway Protocol,简称EBGP),R5通告10K(1K为1024)路由给R4;R1与R4运行内部边界网关协议(Internal Border Gateway Protocol,简称IBGP);R4通告由R5发布过来的10K路由给R1。
假设R1上的10K BGP路由为:
6.0.0.0/24下一跳5.0.0.2
6.0.1.0/24下一跳5.0.0.2
……
OSPF路由为:
5.0.0.0/24下一跳2.0.0.1和3.0.0.1,假设两者链路代价一样,形成等价多路径(Equal Cost MultiPath,简称ECMP)路由。
R1路由计算生成转发表FIB为:
6.0.0.0/24下一跳2.0.0.1
3.0.0.1
6.0.1.0/24下一跳2.0.0.1
3.0.0.1
……
当R2和R4间链路发生故障时,R1上OSPF路由重新收敛得到:
5.0.0.0/24下一跳3.0.0.1
则R1上10K BGP路由生成的转发表也需要更新为:
6.0.0.0/24下一跳3.0.0.1
6.0.1.0/24下一跳3.0.0.1
……
从链路故障开始,R1收到目的为6.0.0.0/24网段的流量,如果还走下一跳2.0.0.1到R2会出现断流,直到10K BGP路由的转发表都更新成只走3.0.0.1到R3,才停止断流。断流时间中很重要的一部分是10K路由的更新时间,这部分时间,与路由数量基本成线性关系,路由越多,断流时间越长。断流可能直接影响用户对网络的体验。随着网络规模的变大,路由数量会更多,如果断流时间更长,则用户体验更差。
目前针对递归路由,常用的做法就是,逐条更新,这样路由越多,更新时间越长。为解决更新时间较长导致报文断流的问题,目前有两种路由切换方法:一种是通过双向转发检测(Bidirectional Forwarding Detection,BFD)等协议,检测跨跳网络口是否可达,当发现不可达时,决策将某直连链路切换。例如,由于R2和R4之间的链路断开,R1无法直接感知,可针对该场景配置,当R1检测到R2中与R4相连的网络接口不可达,则直接切换R1与R2的链路,这也可以做到快速切换。另一种方法是在R2上配置特殊命令,当发现与R4间的链路故障时,关闭与R1相连的端口。
然而,针对第一种路由切换方法,R2上可能还有其它链路,不是所有走R2的报文都会路由到R4,直接切换容易误切其它流量,导致不必要的断流,且这种跨跳检测需要根据实际场景专门配置,该方法切换粒度为链路级别,切换力度较粗,不适用复杂场景,需专门配置,不灵活,易用性差。而第二种路由切换方法也需要专门配置,也存在误切其它流量,并且如果有R1和R2之间还有许多其它路由设备时,配置将会非常复杂。
发明内容
针对现有技术中的缺陷,本发明实施例提供了一种递归路由的切换方法、路由器、交换机及电子设备。
第一方面,本发明实施例提供一种递归路由的切换方法,包括:
根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;
根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;
在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;
若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
如上述递归路由的切换方法,可选地,所述根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由,包括:
根据路由表确定所述路由表中的所有递归路由;
根据所述路由表,确定每个所述递归路由的非直连下一跳IP地址;
在转发表中为所述递归路由添加对应的虚拟主机路由,其中所述虚拟主机路由为全长前缀路由,且所述虚拟主机路由的前缀IP地址等于所述非直连下一跳IP地址。
如上述递归路由的切换方法,可选地,所述根据路由表确定所述路由表中的所有递归路由,包括:
根据路由表确定每个待测路由的下一跳IP地址;
若判断获知所述下一跳IP地址不是直连的,则确定所述待测路由为递归路由。
如上述递归路由的切换方法,可选地,所述根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由之后,还包括:
根据每个所述虚拟主机路由的前缀IP地址,确定所述虚拟主机路由的类型标记;
相应地,所述在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址,包括:
在转发表中关联所述递归路由、所述类型标记和所述直连下一跳IP地址。
如上述递归路由的切换方法,可选地,所述切换方法还包括:
计算并更新每个所述类型标记关联的递归路由数量;
若判断获知所述递归路由数量为0,则在所述转发表中删除所述类型标记。
第二方面,本发明实施例提供一种路由器,包括:
添加模块,用于根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;
计算模块,用于根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;
关联模块,用于在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;
更新模块,用于若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
如上述路由器,可选地,所述添加模块包括:
判断单元,用于根据路由表确定所述路由表中的所有递归路由;
查找单元,用于根据所述路由表,确定每个所述递归路由的非直连下一跳IP地址;
添加单元,用于在转发表中为所述递归路由添加对应的虚拟主机路由,其中所述虚拟主机路由为全长前缀路由,且所述虚拟主机路由的前缀IP地址等于所述非直连下一跳IP地址。
如上述路由器,可选地,所述判断单元具体用于:
根据路由表确定每个待测路由的下一跳IP地址;
若判断获知所述下一跳IP地址不是直连的,则确定所述待测路由为递归路由。
如上述路由器,可选地,所述添加模块还用于:
根据每个所述虚拟主机路由的前缀IP地址,确定所述虚拟主机路由的类型标记;
相应地,所述关联模块具体用于:
在转发表中关联所述递归路由、所述类型标记和所述直连下一跳IP地址。
如上述路由器,可选地,所述路由器还包括:
计算模块,用于计算并更新每个所述类型标记关联的递归路由数量;
删除模块,用于若判断获知所述递归路由数量为0,则在所述转发表中删除所述类型标记。第三方面,本发明实施例提供一种交换机,包括:
硬件路由,用于存储路由表中每个递归路由和所述递归路由对应的虚拟主机路由,其中所述虚拟主机路由是根据所述递归路由的非直连下一跳IP地址确定的;
过滤处理器FP,用于存储每个所述虚拟主机路由和所述虚拟主机路由的直连下一跳IP地址,其中所述直连下一跳IP地址是根据所述路由表确定的;
所述过滤处理器FP还用于,若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则更新所述虚拟主机路由的直连下一跳IP地址。
如上述交换机,可选地,所述虚拟主机路由为全长前缀路由,且所述虚拟主机路由的前缀IP地址等于所述非直连下一跳IP地址。
如上述交换机,可选地,所述硬件路由具体用于:
存储路由表中每个递归路由和其对应的虚拟主机路由的类型标记,其中所述类型标记是通过每个所述虚拟主机路由的前缀IP地址确定的;
相应地,所述过滤处理器FP具体用于:
存储每个所述类型标记和其对应的直连下一跳IP地址,若检测到所述类型标记的直连下一跳IP地址发生改变,则更新所述类型标记的直连下一跳IP地址。
如上述交换机,可选地,所述过滤处理器FP还用于:
计算并更新每个所述类型标记关联的递归路由数量;
若判断获知所述递归路由数量为0,则在所述过滤处理器FP中删除所述类型标记。
第四方面,本发明实施例提供一种电子设备,包括:
存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
第五方面,本发明实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下方法:根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
本发明实施例提供的递归路由的切换方法,根据路由表中每个递归路由的非直连下一跳IP地址,确定递归路由的虚拟主机路由,并计算虚拟主机路由的直连下一跳IP地址,在转发表中关联递归路由、虚拟主机路由和直连下一跳IP地址,当检测到虚拟主机路由的直连下一跳IP地址发生改变时,只需转发表中更新虚拟主机路由的直连下一跳IP地址,就可以切换其上关联的所有递归路由。本发明实施例递归路由切换时间与递归路由数量无关,减少了网络断流时间,并且不需要根据实际场景配置,灵活生效,切换粒度为单条路由级,不会导致误切其它路由,避免不必要的断流,提高了网络可用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为路由设备链路故障场景示意图;
图2为本发明实施例提供的递归路由的切换方法流程示意图;
图3为本发明又一实施例提供的递归路由的切换方法流程示意图;
图4为本发明实施例提供的转发表示意图;
图5为本发明实施例提供的路由器的结构示意图;
图6为本发明实施例提供的交换机的结构示意图;
图7为本发明实施例提供的交换芯片输入处理流程示意图;
图8为本发明实施例提供的递归路由在交换芯片安装示意图;
图9为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明实施例提供的递归路由的切换方法流程示意图,如图2所示,该切换方法包括:
步骤S21、根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;
具体地,针对由于少量直连路由变化,导致大量递归路由所生成的转发表需要更新的性能问题,现有已知解决方案存在不通用,配置复杂,切换粒度较粗(端口或链路级),容易误删其它路由等问题,因此需要实现只更新少量信息即可切换所有递归路由,切换时间与递归路由数量无关的递归路由切换方法。首先在路由表中筛选出所有的递归路由,然后根据路由表确定每个递归路由的非直连下一跳IP地址,其中下一跳IP地址未带出口的为非直连下一跳IP地址,例如,路由表中2.0.0.0/24下一跳IP 3.0.0.1GigabitEthernet 0/1forward;1.0.0.0/23下一跳IP 5.0.0.1,由于下一跳IP 3.0.0.带出口,下一跳IP3.0.0.1为直连下一跳IP,下一跳IP 5.0.0.1为非直连下一跳IP地址。之后,为每个递归路由添加对应的虚拟主机路由,虚拟主机路由的IP地址是根据递归路由的非直连下一跳IP地址确定的,这一步骤作用是让递归路由可以直接指向或通过精确匹配查找到虚拟主机路由,这样,就可得到每个递归路由的虚拟主机路由。
在实际应用中,递归路由可以匹配多个非直连下一跳IP地址,例如递归路由的直连下一跳IP地址为ECMP组,则为该递归路由添加与ECMP组中IP地址数量相同的虚拟主机路由,即,为该递归路由添加多个虚拟主机路由。
步骤S22、根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;
具体地,确定虚拟主机路由之后,根据路由表,计算虚拟主机路由的直连下一跳IP地址,例如,确定虚拟主机路由之后,根据最长前缀匹配原则,从路由表查找对应的下一跳IP地址,若该IP地址是直连的,则将该IP地址作为虚拟主机路由的直连下一跳IP地址。
在实际应用中,虚拟主机路由也可以匹配多个直连下一跳IP地址,此时可以设置虚拟主机路由的直连下一跳IP地址为IP地址组,例如,ECMP组,即,该虚拟主机路由有多个直连下一跳IP地址。
在实际应用中,路由表中可能存在多级递归路由,可以为第一级递归路由添加第一级虚拟主机路由,第一级虚拟主机路由的下一跳IP地址为递归路由IP地址,将该递归路由IP地址设置为第二级虚拟主机路由,即第一虚拟主机路由的下一跳为第二级虚拟主机路由,以此递推,直至虚拟主机路由的下一跳IP地址为直连下一跳IP地址为止。考虑现实网络中动态路由协议只分为外部网关协议(Exterior Gateway Protocol,EGP)和内部网关协议(Interior Gateway Protocol,IGP)两种,EGP生成的路由会递归到IGP路由,而IGP路由的下一跳是直连的,因此,只需要考虑新增一层虚拟主机路由即可,虚拟主机路由通过路由表计算下一跳IP地址,若该下一跳IP地址非直连,则继续根据路由表计算该非直连下一跳IP地址的下一跳IP地址,直至下一跳IP地址为直连下一跳IP地址,将该直连下一跳IP地址添加为虚拟主机路由的直连下一跳IP地址。
步骤S23、在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;
具体地,根据路由表建立转发表,在转发表中建立递归路由、虚拟主机路由和直连下一跳IP地址,并关联递归路由、递归路由的虚拟主机路由以及虚拟主机路由的直连下一跳IP地址。
例如,路由表为:
递归路由A,下一跳IP地址B1(B1非直连)
IP地址B1,下一跳IP地址B2(B2直连)
按现有技术方案转发表为:
递归路由A,下一跳IP地址B2
按本发明实施例生成的转发表为:
递归路由A,下一跳虚拟主机路由C
虚拟主机路由C,下一跳IP地址B2
与现有技术相比,在转发表中,增加了一层虚拟主机路由。
步骤S24、若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
具体地,确定转发表之后,还需要实时检测虚拟主机路由的直连下一跳IP地址是否发生改变,例如,虚拟主机路由C的下一跳IP地址由B2变成B3和B4,则在转发表中将虚拟主机路由C的下一跳IP地址更新为{B3,B4}。
例如,路由表为:
递归路由A1,下一跳IP地址B1(B1非直连)
递归路由A2,下一跳IP地址B1
IP地址B1,下一跳IP地址B2(B2直连)
按现有技术方案转发表为:
递归路由A1,下一跳IP地址B2
递归路由A2,下一跳IP地址B2
按本发明实施例生成的转发表为:
递归路由A1,下一跳虚拟主机路由C
递归路由A2,下一跳虚拟主机路由C
虚拟主机路由C,下一跳IP地址B2
若虚拟主机路由C的下一跳IP地址由B2变成B3和B4,则按现有技术方案,转发表更新为:
递归路由A1,下一跳IP地址{B3,B4}
递归路由A2,下一跳IP地址{B3,B4}
而根据本发明实施例,转发表中仅需要更新虚拟主机路由的下一跳IP地址即可,即转发表更新为:
递归路由A1,下一跳虚拟主机路由C
递归路由A2,下一跳虚拟主机路由C
虚拟主机路由C,下一跳IP地址{B3,B4}
由此可见,若虚拟主机路由C为多个递归路由的下一跳,与现有技术相比,本发明实施例只需更新虚拟主机路由C的下一跳IP地址,就可以切换其上关联的所有递归路由,不需要更新与之关联的递归路由的下一跳,因此,转发表更新速度较快,递归路由的切换时间与递归路由数量无关,切换粒度为单条路由级,不会导致误切其他路由。
本发明实施例提供的递归路由的切换方法,根据路由表中每个递归路由的非直连下一跳IP地址,确定递归路由的虚拟主机路由,并计算虚拟主机路由的直连下一跳IP地址,在转发表中关联递归路由、虚拟主机路由和直连下一跳IP地址,当检测到虚拟主机路由的直连下一跳IP地址发生改变时,只需转发表中更新虚拟主机路由的直连下一跳IP地址,就可以切换其上关联的所有递归路由。本发明实施例递归路由切换时间与递归路由数量无关,减少了网络断流时间,并且不需要根据实际场景配置,灵活生效,切换粒度为单条路由级,不会导致误切其它路由,避免不必要的断流,提高了网络可用性。
在上述实施例的基础上,进一步地,所述根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由,包括:
根据路由表确定所述路由表中的所有递归路由;
根据所述路由表,确定每个所述递归路由的非直连下一跳IP地址;
在转发表中为所述递归路由添加对应的虚拟主机路由,其中所述虚拟主机路由为全长前缀路由,且所述虚拟主机路由的前缀IP地址等于所述非直连下一跳IP地址。
具体地,首先根据路由表确定路由表中所有的递归路由,然后根据路由表查找每个递归路由的非直连下一跳IP地址,为每个递归路由的下一跳添加虚拟主机路由,该虚拟主机路由的特征是:前缀长度是全长的,本发明实施例支持IPv4递归路由和IPv6递归路由,若递归路由是IPv4路由,则设置虚拟主机路由前缀长度为32,若递归路由是IPv6路由,则设置虚拟主机路由前缀长度为128,且前缀IP地址与递归路由的下一跳IP地址相同。之后根据路由表计算出虚拟主机路由的直连下一跳。这样递归路由可以直接指向或通过精确匹配查找到虚拟主机路由,从而得到直连下一跳。
例如,例如,路由表中有1000条递归路由:
66.0.0.0/24下一跳5.0.0.2
66.0.1.0/24下一跳5.0.0.2
……
并存在一条直连路由,有两个下一跳,形成ECMP路由:
5.0.0.0/24下一跳2.0.0.1
下一跳3.0.0.1
在转发表中添加一条与递归路由下一跳IP 5.0.0.2相同的虚拟主机路由5.0.0.2/32:
5.0.0.2/32下一跳2.0.0.1
下一跳3.0.0.1
当有报文需要转发时,首先根据报文目的IP,在路由表中做最长前缀匹配,如果命中递归路由,直接找到其指向的虚拟主机路由,根据虚拟主机路由找到直连下一跳转发出去。
例如,目的IP为66.0.0.6IP报文,查找到路由66.0.0.0/24,得到虚拟主机路由5.0.0.2/32,根据5.0.0.2/32得到直连下一跳{2.0.0.1、3.0.0.1}。
当直连路由变动时,只需更新对应的虚拟主机路由,则虚拟主机路由上面关联的所有递归路由转发都跟着变化。例如,5.0.0.0/24的一个下一跳2.0.0.1链路故障,下一跳只剩3.0.0.1,则更新对应的虚拟主机路由:
5.0.0.2/32下一跳3.0.0.1
此时接收到目的IP为66.0.0.6IP报文,查找到路由66.0.0.0/24,得到虚拟主机路由5.0.0.2/32,根据5.0.0.2/32得到直连下一跳3.0.0.1。
本发明实施例提供的递归路由的切换方法,通过新增虚拟主机路由,令虚拟主机路由为全长前缀路由,且前缀IP地址与递归路由的非直连下一跳IP地址相同,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了可能的断流时间。
在上述各实施例的基础上,进一步地,所述根据路由表确定所述路由表中的所有递归路由,包括:
根据路由表确定每个待测路由的下一跳IP地址;
若判断获知所述下一跳IP地址不是直连的,则确定所述待测路由为递归路由。
具体地,图3为本发明又一实施例提供的递归路由的切换方法流程示意图,如图3所示,该方法包括:
步骤S31、根据路由表确定每个待测路由的下一跳IP地址;
步骤S32、判断下一跳IP地址是否是直连的,具体地,下一跳中若带有转发出口,则下一跳IP地址是直连的,执行步骤S33,否则是非直连的,跳转至步骤S35;
步骤S33、确定待测路由为直连路由;
步骤S34、将直连路由和直连路由对应的下一跳添加到转发表中,并跳转至步骤S39;
步骤S35、确定待测路由为递归路由;
步骤S36、添加和递归路由下一跳IP地址相同的虚拟主机路由;
步骤S37、根据路由表计算虚拟主机路由的直连下一跳IP地址;
步骤S38、关联虚拟主机路由和递归路由,添加到转发表中;
步骤S39、当检测到直连路由下一跳变化时,更新虚拟主机路由和/或直连路由的下一跳。
本发明实施例提供的递归路由的切换方法,判断获知为递归路由之后,通过为递归路由新增虚拟主机路由,令虚拟主机路由为全长前缀路由,且前缀IP地址与递归路由的非直连下一跳IP地址相同,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了可能的断流时间。
在上述各实施例的基础上,进一步地,所述根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由之后,还包括:
根据每个所述虚拟主机路由的前缀IP地址,确定所述虚拟主机路由的类型标记;
相应地,所述在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址,包括:
在转发表中关联所述递归路由、所述类型标记和所述直连下一跳IP地址。
具体地,为了简化虚拟主机路由的管理,给每个虚拟主机路由分配一个类型标记,记为class_id,其中相同前缀IP地址的虚拟主机路由,class_id相同,图4为本发明实施例提供的转发表示意图,如图4所示,在转发表中直接关联递归路由、class_id和直连下一跳IP地址。在实际应用中,可以根据路由设备能力和所处场景,保存一定量class_id即可,例如保存1000个class_id,如果超过容量,则按原始FIB转发和更新即可。例如,在路由器设备中,可以通过程序设置转发表,在转发表中关联递归路由、class_id和直连下一跳IP地址,在交换机设备中,利用其硬件资源,可以在三层路由存储递归路由和其关联的class_id,在输入过滤器中存储class_id和其关联的直连下一跳IP地址,这样,当需要转发报文时,首先根据目的IP地址查找到递归路由,然后通过硬件路由表确定class_id,最后通过输入过滤其确定class_id对应的直连下一跳IP地址,将报文转发出去。
例如,把下一跳IP地址5.0.0.2映射到class_id 1,则递归路由表示如下:
66.0.0.0/24下一跳class_id1(5.0.0.2/32)
class_id 1(5.0.0.2/32)下一跳2.0.0.1
下一跳3.0.0.1
此外,本发明实施例支持ECMP递归路由,且可用于扩展递归路由的实际可转发的直连下一跳个数。若递归路由有多个下一跳,为每个非直连下一跳对应的虚拟主机路由分配一个class_id,与单个下一跳处理相同,如果一条递归路由有10个下一跳,每个下一跳对应的虚拟路由都有32个不同的直连下一跳,则该递归路由的直连下一跳个数可达320个。
例如原始路由表:
66.0.0.0/24下一跳5.0.0.2
下一跳6.0.0.2
5.0.0.0/24下一跳2.0.0.1
下一跳3.0.0.1
6.0.0.0/24下一跳2.0.0.2
下一跳3.0.0.2
虚拟主机路由5.0.0.2/32映射class_id1,6.0.0.2/32映射成class_id2,则转发表为:
66.0.0.0/24下一跳5.0.0.2class_id 1
下一跳6.0.0.2class_id 2
class_id 1(5.0.0.2/32)下一跳2.0.0.1
下一跳3.0.0.1
class_id 2(6.0.0.2/32)下一跳2.0.0.2
下一跳3.0.0.2
当接收到目的IP为66.0.0.6IP报文时,查找到路由66.0.0.0/24,得到{class_id1、class_id2},做均衡选择其中一个,如选择class_id2,再根据class_id 2得到直连下一跳{2.0.0.2、3.0.0.2},选择其中一个转发。
本发明实施例提供的递归路由的切换方法,为递归路由新增虚拟主机路由,为每个虚拟主机路由分配一个特殊类别标记方便虚拟主机路由的存储和查找,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了断流时间。
在上述各实施例的基础上,进一步地,该切换方法还包括:
计算并更新每个所述类型标记关联的递归路由数量;
若判断获知所述递归路由数量为0,则在所述转发表中删除所述类型标记。
具体地,在实际应用中,递归路由的下一跳指向虚拟主机路由,多条递归路由可以指向同一条虚拟主机路由。为了避免浪费内存空间和硬件表项资源,虚拟主机路由要维护引用关系,当没有递归路由引用时,删除该虚拟主机路由,具体地,实时计算并更新每个class_id关联的递归路由数量,当递归路由数量为0时,在转发表中删除该类型标记。
例如,1000条66.0.0.0网段的递归路由,都指向虚拟主机路由class_id1(5.0.0.2/32),则虚拟路由上的引用计数为1000,每删除一条递归路由,虚拟主机路由上的引用计数减1,当引用计数减到0时,将该虚拟主机路由删除。
本发明实施例提供的递归路由的切换方法,为递归路由新增虚拟主机路由,计算并更新虚拟主机路由关联的递归路由数,当递归路由数为0时,删除虚拟主机路由,避免浪费内存空间和硬件表项资源,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了断流时间。
图5为本发明实施例提供的路由器的结构示意图,如图5所示,该路由器包括:添加模块51、计算模块52、关联模块53和更新模块54,其中:
添加模块51用于根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;计算模块52用于根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;关联模块53用于在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;更新模块54用于若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
具体地,添加模块51在路由表中筛选出所有的递归路由,然后根据路由表确定每个递归路由的非直连下一跳IP地址,为每个递归路由添加对应的虚拟主机路由,虚拟主机路由的IP地址是根据递归路由的非直连下一跳IP地址确定的,这样,就可得到每个递归路由的虚拟主机路由。计算模块52根据路由表,计算虚拟主机路由的直连下一跳IP地址,例如,计算模块52根据最长前缀匹配原则,从路由表查找对应的下一跳IP地址,若该IP地址是直连的,则将该IP地址作为虚拟主机路由的直连下一跳IP地址。关联模块53根据路由表建立转发表,在转发表中建立递归路由、虚拟主机路由和直连下一跳IP地址,并关联递归路由、递归路由的虚拟主机路由以及虚拟主机路由的直连下一跳IP地址。更新模块54实时检测虚拟主机路由的直连下一跳IP地址是否发生改变,例如,虚拟主机路由C的下一跳IP地址由B2变成B3和B4,则在转发表中将虚拟主机路由C的下一跳IP地址更新为{B3,B4}。本发明实施例提供的路由器,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的路由器,根据路由表中每个递归路由的非直连下一跳IP地址,确定递归路由的虚拟主机路由,并计算虚拟主机路由的直连下一跳IP地址,在转发表中关联递归路由、虚拟主机路由和直连下一跳IP地址,当检测到虚拟主机路由的直连下一跳IP地址发生改变时,只需转发表中更新虚拟主机路由的直连下一跳IP地址,就可以切换其上关联的所有递归路由,减少了网络断流时间,并且不需要根据实际场景配置,灵活生效,切换粒度为单条路由级,不会导致误切其它路由,避免不必要的断流,提高了网络可用性。
在上述实施例的基础上,进一步地,所述添加模块包括:
判断单元,用于根据路由表确定所述路由表中的所有递归路由;
查找单元,用于根据所述路由表,确定每个所述递归路由的非直连下一跳IP地址;
添加单元,用于在转发表中为所述递归路由添加对应的虚拟主机路由,其中所述虚拟主机路由为全长前缀路由,且所述虚拟主机路由的前缀IP地址等于所述非直连下一跳IP地址。
具体地,判断单元根据路由表确定路由表中所有的递归路由,查找单元根据路由表查找每个递归路由的非直连下一跳IP地址,添加单元为每个递归路由的下一跳添加虚拟主机路由,该虚拟主机路由的特征是:前缀长度是全长的,本发明实施例支持IPv4递归路由和IPv6递归路由,若递归路由是IPv4路由,则设置虚拟主机路由前缀长度为32,若递归路由是Ipv6路由,则设置虚拟主机路由前缀长度为128,且前缀IP地址与递归路由的下一跳IP地址相同。之后添加单元根据路由表计算出虚拟主机路由的直连下一跳。这样递归路由可以直接指向或通过精确匹配查找到虚拟主机路由,从而得到直连下一跳。本发明实施例提供的路由器,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的路由器,通过新增虚拟主机路由,令虚拟主机路由为全长前缀路由,且前缀IP地址与递归路由的非直连下一跳IP地址相同,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了可能的断流时间。
在上述各实施例的基础上,进一步地,所述判断单元具体用于:
根据路由表确定每个待测路由的下一跳IP地址;
若判断获知所述下一跳IP地址不是直连的,则确定所述待测路由为递归路由。
具体地,判断根据路由表确定每个待测路由的下一跳IP地址,之后判断下一跳IP地址是否是直连的,具体地,下一跳中若带有转发出口,则下一跳IP地址是直连的,否则不是直连的。若待测路由的下一跳IP地址不是直连的,则该待测路由为递归路由,否则为直连路由,直连路由及其下一跳信息可直接添加到转发表中。本发明实施例提供的路由器,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的路由器,判断获知为递归路由之后,通过为递归路由新增虚拟主机路由,令虚拟主机路由为全长前缀路由,且前缀IP地址与递归路由的非直连下一跳IP地址相同,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了可能的断流时间。
在上述各实施例的基础上,进一步地,所述添加模块还用于:
根据每个所述虚拟主机路由的前缀IP地址,确定所述虚拟主机路由的类型标记;
相应地,所述关联模块具体用于:
在转发表中关联所述递归路由、所述类型标记和所述直连下一跳IP地址。
具体地,为了简化虚拟主机路由的管理,添加模块还可以给每个虚拟主机路由分配一个类型标记,记为class_id,其中相同前缀IP地址的虚拟主机路由,class_id相同,在实际应用中,添加模块可以根据路由设备能力和所处场景,保存一定量class_id即可,例如保存1000个class_id,如果超过容量,则按原始FIB转发和更新即可。此外,本发明实施例支持ECMP递归路由,且可用于扩展递归路由的实际可转发的直连下一跳个数。若递归路由有多个下一跳,添加模块为每个非直连下一跳对应的虚拟主机路由分配一个class_id,与单个下一跳处理相同,如果一条递归路由有10个下一跳,每个下一跳对应的虚拟路由都有32个不同的直连下一跳,则该递归路由的直连下一跳个数可达320个。本发明实施例提供的路由器,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的路由器,为递归路由新增虚拟主机路由,为每个虚拟主机路由分配一个特殊类别标记方便虚拟主机路由的存储和查找,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了断流时间。
在上述各实施例的基础上,进一步地,所述路由器还包括:
计算模块,用于计算并更新每个所述类型标记关联的递归路由数量;
删除模块,用于若判断获知所述递归路由数量为0,则在所述转发表中删除所述类型标记。
具体地,在实际应用中,递归路由的下一跳指向虚拟主机路由,多条递归路由可以指向同一条虚拟主机路由。为了避免浪费内存空间,虚拟主机路由要维护引用关系,当没有递归路由引用时,删除该虚拟主机路由,具体地,计算模块实时计算并更新每个class_id关联的递归路由数量,当递归路由数量为0时,删除模块在转发表中删除该类型标记。本发明实施例提供的路由器,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的路由器,为递归路由新增虚拟主机路由,计算并更新虚拟主机路由关联的递归路由数,当递归路由数为0时,删除虚拟主机路由,避免浪费内存空间和硬件表项资源,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了断流时间。
图6为本发明实施例提供的交换机的结构示意图,如图6所示,该交换机包括:硬件路由61和过滤处理器FP 62,其中:
硬件路由61用于存储路由表中每个递归路由和所述递归路由对应的虚拟主机路由,其中所述虚拟主机路由是根据所述递归路由的非直连下一跳IP地址确定的;过滤处理器FP 62用于存储每个所述虚拟主机路由和所述虚拟主机路由的直连下一跳IP地址,其中所述直连下一跳IP地址是根据所述路由表确定的;所述过滤处理器FP 62还用于,若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则更新所述虚拟主机路由的直连下一跳IP地址。
具体地,在交换机中通常使用专门的交换芯片,使用硬件路由表资源和过滤处理器(Filter Processor,简称FP)资源来实现递归路由,直接在硬件转发报文,芯片流程较为固定,图7为本发明实施例提供的交换芯片输入处理流程示意图,如图7所示,路由查找通常在三层路由中,三层路由包含前缀资源可以用于安装前缀信息,前缀资源可以指向单个下一跳资源,也可以指向ECMP资源,输入过滤处理器FP可以匹配报文或芯片内部特殊字段,决定转发行为,例如普通路由是根据报文的目的IP转发报文,而FP可以匹配报文的源IP信息转发到特定下一跳。
当通过路由表确定为递归路由之后,硬件路由为每个递归路由添加虚拟主机路由,虚拟主机路由的IP地址是根据递归路由的非直连下一跳IP地址确定的,这一步骤作用是让递归路由可以直接指向或通过精确匹配查找到虚拟主机路由,这样,就可得到每个递归路由的虚拟主机路由。硬件路由存储递归路由及其对应的虚拟主机路由。之后根据路由表确定虚拟主机路由的直连下一跳IP地址,在过滤处理器FP中存储虚拟主机路由和其对应的直连下一跳IP地址,还需要实时检测虚拟主机路由的直连下一跳IP地址是否发生改变,若发生改变,则过滤处理器FP更新其存储的虚拟主机路由的直连下一跳IP地址。这样,当直连下一跳发生改变时,仅需更新虚拟主机路由的直连下一跳IP地址,就可实现与其关联的所有递归路由的切换。本发明实施例提供的交换机,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
在上述实施例的基础上,进一步地,所述虚拟主机路由为全长前缀路由,且所述虚拟主机路由的前缀IP地址等于所述非直连下一跳IP地址。
具体地,硬件路由根据路由表确定路由表中所有的递归路由,然后根据路由表查找每个递归路由的非直连下一跳IP地址,为每个递归路由的下一跳添加虚拟主机路由,该虚拟主机路由的特征是:前缀长度是全长的,本发明实施例支持IPv4递归路由和IPv6递归路由,若递归路由是IPv4路由,则设置虚拟主机路由前缀长度为32,若递归路由是IPv6路由,则设置虚拟主机路由前缀长度为128,且前缀IP地址与递归路由的下一跳IP地址相同。之后根据路由表计算出虚拟主机路由的直连下一跳。这样在硬件路由中递归路由可以直接指向或通过精确匹配查找到虚拟主机路由,从而得到直连下一跳。本发明实施例提供的交换机,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的交换机,通过新增虚拟主机路由,令虚拟主机路由为全长前缀路由,且前缀IP地址与递归路由的非直连下一跳IP地址相同,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了可能的断流时间。
在上述各实施例的基础上,进一步地,所述硬件路由具体用于:
存储路由表中每个递归路由和其对应的虚拟主机路由的类型标记,其中所述类型标记是通过每个所述虚拟主机路由的前缀IP地址确定的;
相应地,所述过滤处理器FP具体用于:
存储每个所述类型标记和其对应的直连下一跳IP地址,若检测到所述类型标记的直连下一跳IP地址发生改变,则更新所述类型标记的直连下一跳IP地址。
具体地,为了简化虚拟主机路由的管理,给每个虚拟主机路由分配一个类型标记,记为class_id,其中相同前缀IP地址的虚拟主机路由,class_id相同,然后将递归路由和类别标记class_id关联,存储到硬件路由中。在路由表中查找class_id对应的直连下一跳IP地址,关联后存储在过滤处理器FP中。FP可以匹配的芯片内部字段包括前缀资源或下一跳资源中的类别标记(class_id)。当报文在三层路由中查找命中某个前缀,获得下一跳,就会带上对应的class_id信息,在FP阶段,可以匹配该class_id,决策转发到新的下一跳或ECMP组。这样报文在查找路由前缀表后,得到下一跳中的class_id,经过FP,匹配class_id,走实际直连下一跳转发出去。
在交换机中,当直连路由(非递归路由)变化时,只需更新FP中class_id表项的下一跳信息,就可以切换所有其上关联的递归路由到新的直连下一跳。切换时间与递归路由数量无关,即使10000条递归路由,也仅需更新一次FP资源。
例如通过计算得到的转发表为:
66.0.0.0/24下一跳5.0.0.2class_id1
class_id 1(5.0.0.2/32)下一跳2.0.0.1
下一跳3.0.0.1
则在交换机的芯片硬件路由表中设置:
66.0.0.0/24下一跳class_id 1;
在FP表中设置:
匹配下一跳class_id 1,行为是指向ECMP组{2.0.0.1、3.0.0.1}。
如果虚拟主机路由(class_id1)的下一跳需要更新,例如2.0.0.1失效,只需要更新一条FP表项(class_id1)的行为即可。例如可以根据IGP路由协议自动更新虚拟主机路由,不需要手动专门针对特殊场景配置,适用于复杂网络场景。
在实际应用中,在交换机中也支持ECMP递归路由:
例如转发表为:
66.0.0.0/24下一跳5.0.0.2class_id 1
下一跳6.0.0.2class_id 2
class_id 1(5.0.0.2/32)下一跳2.0.0.1
下一跳3.0.0.1
class_id 2(6.0.0.2/32)下一跳2.0.0.2
下一跳3.0.0.2
设置硬件路由表为:
66.0.0.0/24下一跳ECMP组{class_id 1,class_id 2}。
FP表设置为:
匹配下一跳class_id 1,行为ECMP组{2.0.0.1、3.0.0.1}
匹配下一跳class_id 2,行为ECMP组{2.0.0.2、3.0.0.2}
图8为本发明实施例提供的递归路由在交换芯片安装示意图,如图8所示,下一跳(Next Hop,简称NH)2001到2006是分配的硬件下一跳资源索引;ECMP1、2、3是分配的硬件ECMP组资源索引。
在交换芯片中用硬件路由和FP资源实现两级递归路由,硬件路由和FP资源还可以用于扩展ECMP递归路由实际转发直连下一跳的个数。通常交换芯片ECMP组所支持的最大下一跳个数是有限制的,假设为32,用硬件路由和FP实现的递归路由,第一级路由可以指向有32个下一跳的ECMP组,每个下一跳都申请class_id,FP匹配class_id,依然可以指向另外32个直连下一跳的ECMP组,则相当于递归路由支持32*32个直连下一跳转发。
由于FP只需要精确匹配下一跳class_id,class_id1和class_id2安装无顺序要求,故软件管理会比较简单,更新性能也不错。在实际应用中,考虑到递归路由下一跳不会太多,可以根据实际场景限制class_id个数,如512个等,减少不必要的FP资源消耗。由于交换机是用硬件转发报文,路由后进行FP操作是固有流程,因此转发性能不会受影响。本发明实施例提供的交换机,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的交换机,为递归路由新增虚拟主机路由,为每个虚拟主机路由分配一个特殊类别标记方便虚拟主机路由的存储和查找,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了断流时间。
在上述各实施例的基础上,进一步地,所述过滤处理器FP还用于:
计算并更新每个所述类型标记关联的递归路由数量;
若判断获知所述递归路由数量为0,则在所述过滤处理器FP中删除所述类型标记。
具体地,在实际应用中,递归路由的下一跳指向虚拟主机路由,多条递归路由可以指向同一条虚拟主机路由。为了避免浪费过滤处理器FP的硬件资源,虚拟主机路由要维护引用关系,当没有递归路由引用时,删除该虚拟主机路由,具体地,过滤处理器FP实时计算并更新每个class_id关联的递归路由数量,当递归路由数量为0时,在过滤处理器FP中删除该类型标记。
例如,1000条66.0.0.0网段的递归路由,都指向虚拟主机路由class_id1(5.0.0.2/32),则虚拟路由上的引用计数为1000,每删除一条递归路由,虚拟主机路由上的引用计数减1,当引用计数减到0时,将该虚拟主机路由删除。本发明实施例提供的交换机,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
本发明实施例提供的交换机,为递归路由新增虚拟主机路由,计算并更新虚拟主机路由关联的递归路由数,当递归路由数为0时,删除虚拟主机路由,避免浪费内存空间和硬件表项资源,解决了大量递归路由因个别直连路由变动而需要大量切换的性能问题。本发明实施例只需通过更新少量的虚拟主机路由,就能实现其上所有递归路由转发的快速切换,并且切换时间与递归路由数量无关,减少了断流时间。
图9为本发明实施例提供的电子设备的结构示意图,如图9所示,所述设备包括:处理器(processor)91、存储器(memory)92和总线93;
其中,处理器91和存储器92通过所述总线93完成相互间的通信;
处理器91用于调用存储器92中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的各实施例技术方案的范围。
Claims (16)
1.一种递归路由的切换方法,其特征在于,包括:
根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;
根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;
在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;
若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
2.根据权利要求1所述的方法,其特征在于,所述根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由,包括:
根据路由表确定所述路由表中的所有递归路由;
根据所述路由表,确定每个所述递归路由的非直连下一跳IP地址;
在转发表中为所述递归路由添加对应的虚拟主机路由,其中所述虚拟主机路由为全长前缀路由,且所述虚拟主机路由的前缀IP地址等于所述非直连下一跳IP地址。
3.根据权利要求2所述的方法,其特征在于,所述根据路由表确定所述路由表中的所有递归路由,包括:
根据路由表确定每个待测路由的下一跳IP地址;
若判断获知所述下一跳IP地址不是直连的,则确定所述待测路由为递归路由。
4.根据权利要求2或3所述的方法,其特征在于,所述根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由之后,还包括:
根据每个所述虚拟主机路由的前缀IP地址,确定所述虚拟主机路由的类型标记;
相应地,所述在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址,包括:
在转发表中关联所述递归路由、所述类型标记和所述直连下一跳IP地址。
5.根据权利要求4所述的方法,其特征在于,还包括:
计算并更新每个所述类型标记关联的递归路由数量;
若判断获知所述递归路由数量为0,则在所述转发表中删除所述类型标记。
6.一种路由器,其特征在于,包括:
添加模块,用于根据路由表中每个递归路由的非直连下一跳IP地址,确定所述递归路由的虚拟主机路由;
计算模块,用于根据所述路由表,计算所述虚拟主机路由的直连下一跳IP地址;
关联模块,用于在转发表中关联所述递归路由、所述虚拟主机路由和所述直连下一跳IP地址;
更新模块,用于若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则在所述转发表中更新所述虚拟主机路由的直连下一跳IP地址。
7.根据权利要求6所述的路由器,其特征在于,所述添加模块包括:
判断单元,用于根据路由表确定所述路由表中的所有递归路由;
查找单元,用于根据所述路由表,确定每个所述递归路由的非直连下一跳IP地址;
添加单元,用于在转发表中为所述递归路由添加对应的虚拟主机路由,其中所述虚拟主机路由为全长前缀路由,且所述虚拟主机路由的前缀IP地址等于所述非直连下一跳IP地址。
8.根据权利要求7所述的路由器,其特征在于,所述判断单元具体用于:
根据路由表确定每个待测路由的下一跳IP地址;
若判断获知所述下一跳IP地址不是直连的,则确定所述待测路由为递归路由。
9.根据权利要求7或8所述的路由器,其特征在于,所述添加模块还用于:
根据每个所述虚拟主机路由的前缀IP地址,确定所述虚拟主机路由的类型标记;
相应地,所述关联模块具体用于:
在转发表中关联所述递归路由、所述类型标记和所述直连下一跳IP地址。
10.根据权利要求9所述的路由器,其特征在于,还包括:
计算模块,用于计算并更新每个所述类型标记关联的递归路由数量;
删除模块,用于若判断获知所述递归路由数量为0,则在所述转发表中删除所述类型标记。
11.一种交换机,其特征在于,包括:
硬件路由,用于存储路由表中每个递归路由和所述递归路由对应的虚拟主机路由,其中所述虚拟主机路由是根据所述递归路由的非直连下一跳IP地址确定的;
过滤处理器FP,用于存储每个所述虚拟主机路由和所述虚拟主机路由的直连下一跳IP地址,其中所述直连下一跳IP地址是根据所述路由表确定的;
所述过滤处理器FP还用于,若检测到所述虚拟主机路由的直连下一跳IP地址发生改变,则更新所述虚拟主机路由的直连下一跳IP地址。
12.根据权利要求11所述的交换机,其特征在于,所述虚拟主机路由为全长前缀路由,且所述虚拟主机路由的前缀IP地址等于所述非直连下一跳IP地址。
13.根据权利要求12所述的交换机,其特征在于,所述硬件路由具体用于:
存储路由表中每个递归路由和其对应的虚拟主机路由的类型标记,其中所述类型标记是通过每个所述虚拟主机路由的前缀IP地址确定的;
相应地,所述过滤处理器FP具体用于:
存储每个所述类型标记和其对应的直连下一跳IP地址,若检测到所述类型标记的直连下一跳IP地址发生改变,则更新所述类型标记的直连下一跳IP地址。
14.根据权利要求13所述的交换机,其特征在于,所述过滤处理器FP还用于:
计算并更新每个所述类型标记关联的递归路由数量;
若判断获知所述递归路由数量为0,则在所述过滤处理器FP中删除所述类型标记。
15.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至5任一所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810614666.4A CN109039908B (zh) | 2018-06-14 | 2018-06-14 | 一种递归路由的切换方法、路由器、交换机及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810614666.4A CN109039908B (zh) | 2018-06-14 | 2018-06-14 | 一种递归路由的切换方法、路由器、交换机及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109039908A true CN109039908A (zh) | 2018-12-18 |
CN109039908B CN109039908B (zh) | 2021-04-20 |
Family
ID=64609613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810614666.4A Active CN109039908B (zh) | 2018-06-14 | 2018-06-14 | 一种递归路由的切换方法、路由器、交换机及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109039908B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112187636A (zh) * | 2020-09-22 | 2021-01-05 | 锐捷网络股份有限公司 | Ecmp路由的存储方法及装置 |
CN113014489A (zh) * | 2020-12-31 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 数据转发方法及装置、服务器、存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604558A (zh) * | 2003-09-30 | 2005-04-06 | 华为技术有限公司 | 路由迭代系统及其方法 |
US20050243839A1 (en) * | 2004-04-30 | 2005-11-03 | Alcatel | Disabling mutually recursive routes |
CN101674251A (zh) * | 2009-10-10 | 2010-03-17 | 福建星网锐捷网络有限公司 | 递归路由更新处理方法与装置、路由器 |
CN101707547A (zh) * | 2008-07-21 | 2010-05-12 | 北京星网锐捷网络技术有限公司 | 路由信息生成方法及装置、递归路由数据转发方法及设备 |
CN102118371A (zh) * | 2009-12-30 | 2011-07-06 | 华为技术有限公司 | 一种网络流量切换控制方法、装置及系统 |
CN102594656A (zh) * | 2011-12-20 | 2012-07-18 | 杭州华三通信技术有限公司 | 一种路由迭代方法及路由交换设备 |
CN106059932A (zh) * | 2016-08-08 | 2016-10-26 | 杭州华三通信技术有限公司 | 一种路由表项生成方法及装置 |
CN106130790A (zh) * | 2016-08-10 | 2016-11-16 | 杭州华三通信技术有限公司 | 一种故障处理方法及装置 |
-
2018
- 2018-06-14 CN CN201810614666.4A patent/CN109039908B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604558A (zh) * | 2003-09-30 | 2005-04-06 | 华为技术有限公司 | 路由迭代系统及其方法 |
US20050243839A1 (en) * | 2004-04-30 | 2005-11-03 | Alcatel | Disabling mutually recursive routes |
CN101707547A (zh) * | 2008-07-21 | 2010-05-12 | 北京星网锐捷网络技术有限公司 | 路由信息生成方法及装置、递归路由数据转发方法及设备 |
CN101674251A (zh) * | 2009-10-10 | 2010-03-17 | 福建星网锐捷网络有限公司 | 递归路由更新处理方法与装置、路由器 |
CN102118371A (zh) * | 2009-12-30 | 2011-07-06 | 华为技术有限公司 | 一种网络流量切换控制方法、装置及系统 |
CN102594656A (zh) * | 2011-12-20 | 2012-07-18 | 杭州华三通信技术有限公司 | 一种路由迭代方法及路由交换设备 |
CN106059932A (zh) * | 2016-08-08 | 2016-10-26 | 杭州华三通信技术有限公司 | 一种路由表项生成方法及装置 |
CN106130790A (zh) * | 2016-08-10 | 2016-11-16 | 杭州华三通信技术有限公司 | 一种故障处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
WEI ZHANG; JUN BI; JIANPING WU等: "Caching Popular BGP Prefixes with Grey Modeling Prediction", 《 2011 PROCEEDINGS OF 20TH INTERNATIONAL CONFERENCE ON COMPUTER COMMUNICATIONS AND NETWORKS (ICCCN)》 * |
王迪: "快速路由迭代方法的实现及性能优化", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112187636A (zh) * | 2020-09-22 | 2021-01-05 | 锐捷网络股份有限公司 | Ecmp路由的存储方法及装置 |
CN113014489A (zh) * | 2020-12-31 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 数据转发方法及装置、服务器、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109039908B (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11140076B2 (en) | Apparatus, system, and method for packet switching | |
US10382592B2 (en) | Segment routing label switched path for non-segment routing enabled routers | |
CN105049350B (zh) | 利用出口对等工程的分段路由的方法、装置及系统 | |
US11943136B2 (en) | Advanced preferred path route graph features in a network | |
CN106464589B (zh) | Ip网络中的部分软件定义网络交换机替换的方法和设备 | |
CN105721321B (zh) | 一种等价多路径的出接口更新方法及装置 | |
US8000327B1 (en) | Quality of service (QoS)-aware forwarding in an MPLS network with tactical traffic engineering | |
CN102611628B (zh) | 用于实现传输路径切换的方法和装置 | |
CN105721303B (zh) | 一种路由控制方法、网络设备及控制器 | |
US10009254B2 (en) | Calculation of a lowest cost path | |
CN106452958A (zh) | 一种流量控制方法、系统及集中控制器 | |
CN108432191A (zh) | 网络控制器间的通信 | |
US10333790B2 (en) | Method and system for selective route download in network devices | |
CN107404439A (zh) | 用于重定向数据流的方法和系统、网络设备和控制设备 | |
Salsano et al. | PMSR—Poor Man's Segment Routing, a minimalistic approach to Segment Routing and a Traffic Engineering use case | |
US9031085B2 (en) | Routing path calculation apparatus and methods | |
WO2021254173A1 (zh) | 一种路由处理方法及相关设备 | |
CN109039908A (zh) | 一种递归路由的切换方法、路由器、交换机及电子设备 | |
US11750495B2 (en) | Congruent bidirectional segment routing tunnels | |
CN106982162B (zh) | 用于转发业务流的方法、装置和系统 | |
US11483210B2 (en) | Interdomain path calculation based on an abstract topology | |
CN104917677A (zh) | 数据流转发的控制方法及系统 | |
US11824763B2 (en) | Filtering topologies for path computation in massively scaled networks | |
CN107659446A (zh) | 一种waf迁移方法和装置 | |
CN108259343B (zh) | 路由策略的匹配方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |