CN1604558A - 路由迭代***及其方法 - Google Patents
路由迭代***及其方法 Download PDFInfo
- Publication number
- CN1604558A CN1604558A CNA031272525A CN03127252A CN1604558A CN 1604558 A CN1604558 A CN 1604558A CN A031272525 A CNA031272525 A CN A031272525A CN 03127252 A CN03127252 A CN 03127252A CN 1604558 A CN1604558 A CN 1604558A
- Authority
- CN
- China
- Prior art keywords
- iteration
- interface
- route
- module
- outgoing
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种网络的路由实现方法,公开了一种路由迭代***及其方法,使得在原有的路由模型上通过较少的改动就可突破原有的路由模型的限制,实现完善的路由迭代功能,并且可以使内核部分保持原有流程,实现路由平面的无缝升级和负荷分担下的路由迭代的功能。这种路由迭代***包含虚拟的迭代接口,所述迭代接口的属性是物理接口的属性的一个子集,对需要同时使用所述物理接口和所述迭代接口的模块而言,所述迭代接口的属性和所述物理接口的属性在数量和性质上完全一致。
Description
技术领域
本发明涉及一种网络的路由实现方法,特别涉及一种通过虚拟端口实现网络中路由迭代的方法。
背景技术
路由器(Router)是工作在国际标准化组织的开放***互联(InternationalStandard Organization/Open System Interconnection,简称“ISO/OSI”)模型的第三层即网络层上,具有连接不同类型网络的能力并能够选择数据传送路径的网络设备。路由器有三个特征:首先,它工作在网络层上。路由器工作在ISO/OSI模型的第三层即网络层上,如果接收到一个数据包,就检查其中的第三层网络地址例如IP地址,如果目标地址是本地网络的就不理会,如果是其他网络的,就将数据包转发出本地网络。其次,它能够连接不同类型的网络,如以太网、异步传输模式(Asynchronous Transfer Mode,简称“ATM”)网、光纤分布式数据接口(Fiber Distributed Data Interface,简称“FDDI”)网、令牌环网等。不同类型的网络,其传送的数据单元-帧(Frame)的格式和大小是不同的,数据从一种类型的网络传输至另一种类型的网络,必须进行帧格式转换,路由器就具有帧格式转换的功能。第三,它能够选择数据传送的路径。在互联网中,从一个节点到另一个节点,可能有许多路径,路由器可以选择通畅快捷的近路,会大大提高通信速度,减轻网络***通信负荷,节约网络***资源。路由器一般有三种:
接入路由器。接入路由器是指将局域网用户接入到广域网中的路由器设备。
企业级路由器。企业级的路由器是用于连接大型企业内成千上万的计算机。与接入路由器相比,企业级路由器支持的网络协议多、速度快,要处理各种局域网类型,支持多种协议,包括互联网协议(Internet Protocal,简称“IP”)、互联网络的数据包交换协议(Internetwork Packet Exchange,简称“IPX”)等,还要支持防火墙、包过滤以及大量的管理和安全策略以及虚拟局域网(Virtual Local Area Network,简称“VLAN”)。
骨干级路由器。互联网目前由几十个骨干网构成,每个骨干网服务几千个小网络,骨干级路由器实现企业级网络的互联。
路由器内部有一个路由表,该表标明了如果要去某个地方,下一步应该往哪走。路由器从某个端口收到一个数据包,它首先把链路层的包头去掉即拆包,读取目的IP地址,然后查找路由表,若能确定下一步往哪送,则再加上链路层的包头即打包,把该数据包转发出去;如果不能确定下一步的地址,则向源地址返回一个信息,并把这个数据包丢掉。
路由算法在路由表中写入各种不同的信息,路由器会根据数据包所要到达的目的地选择最佳路径把数据包发送到可以到达该目的地的下一台路由器处。当下一台路由器接收到该数据包时,也会查看其目标地址,并使用合适的路径继续传送给后面的路由器。依次类推,直到数据包到达最终目的地。这种从一个路由器转发到另一个路由器的方式称为跳到跳(hop-to-hop)路由方式,转发的下一个路由器称为下一跳路由器。
在一条路由表项中主要包含以下内容:目的地址和掩码,下一跳数组,出接口数组以及一些路由协议使用的标记,例如,标记RTS_GATEWAY表示是非直连路由,标记RTS_STATIC表示是静态路由等等。其中,目的地址和掩码是用于搜索路由表项的二元索引,下一跳数组和出接口数组则是用于报文的具体转发,分别存放了下一跳路由器的IP地址和本路由器输出接口的索引。
由于从当前设备到目的地可能有不止一条代价相同的路径,因此一条路由表项中以数组形式存放有多个下一跳和出接口,报文可以根据需要选择其中任意一个出接口转发。这些代价相同而路径不同的出接口和下一跳称为到目的地的等价路由。一般说来,路由表项中的下一跳数组是各个路由协议包括静态路由协议等,根据接收报文的对端地址填写的,而出接口则是设备自己根据下一跳计算出来的。这里就隐含着一个前提:下一跳数组中的元素与接口数组中的元素是一一对应的,这样每一个下一跳和出接口对就组合成了一条等价路由。如果根据一个下一跳可以找出多个出接口,则在目前的实现中无法支持。就是因为这个前提使得诸如负荷分担下的路由迭代等其它一些不满足该前提的功能需求变得复杂起来。
一般说来路由的下一跳就是与本设备直接相连的对端路由器,而所谓路由迭代,就是路由的下一跳并不与当前设备直接相连,因而无法象普通内部网关协议路由(Internet Group management Protocol,简称“IGP”)即域内路由,例如开放最短路径优先协议(Open Shortest Path First,简称“OSPF”)、路由信息协议(Routing Information Protocol,简称“RIP”)等,那样直接根据下一跳找到出接口,而是需要用下一跳作为目的地址再次查路由表。如果能够查到活动路由即有效的路由,就以该活动路由实际的出接口作为本路由的实际出接口,这个过程称之为路由迭代。其中该活动路由称之为贡献者,而使用下一跳查表的路由称之为迭代路由,查找的下一跳称为远端下一跳。路由迭代在配置静态路由或接收边界网关协议(Border Gateway Protocol,简称“BGP”)路由时会用到,因为静态路由的下一跳是手工配置的,BGP路由的下一跳是通过传输控制协议(Transmission Control Protocol,简称“TCP”)连接的BGP对端,它们都可能不于本机直接相连,因此需要采用路由迭代机制,才能使生成的路由真正生效。从路由迭代的机制中可知,它具有以下几个不同于一般路由的特点:
1.迭代路由的内容依赖于贡献者的信息,如果贡献者的信息发生变化,贡献者不存在或者出现更好的贡献者时,该迭代路由的内容也需要实时更新。
2.由于可能有多个等价路由,通过一个远端下一跳可能迭代出多个真实出接口。如果全部接受这些真实出接口则违背了上面提到的下一跳数组中的元素与接口数组中的元素是一一对应的前提,反之则无法支持等价路由所带来的负荷分担的功能。
3.路由迭代支持递归迭代,即贡献者依然是迭代路由。这种递归理论上可以无限递归下去,因而最低层的贡献者变化后,上面所有的迭代路由全部需要做相应的更新。
4.支持虚拟专用网(Virtual Private Network,简称“VPN”)扩展后,在私网中也支持路由迭代,甚至还支持跨虚拟路由转发(Virtual Routing andForwarding,简称“VRF”)的路由迭代,即需要迭代的路由位于一个VRF中,而用于迭代的远端下一跳则位于另一个VRF中。
目前的实现中,一个路由器的接口用两级结构表示:表示路由器物理接口的结构和表示路由器逻辑接口的结构。所谓逻辑接口就是物理接口上配置的IP地址。物理接口上有一条逻辑接口链,它将物理接口上配置的所有IP地址对应的逻辑接口全部串联起来以便快速搜索,同时在逻辑接口上也保存着物理接口的指针以便在下发表项时能够找到物理接口的索引。在一条路由中出接口中并不直接保存物理接口的指针,而是保存逻辑接口的指针。
在实际应用中,上述方案存在以下问题:路由迭代只能在公网中对迭代路由做有限的支持,并且在支持的功能上存在很多限制,包括:
1.当迭代路由配置了多个下一跳时,只能针对第一个下一跳进行迭代,即使它迭代不成功,而不会对其它可以查找成功的下一跳进行迭代,例如,当第一个下一跳迭代不成功,而其他下一跳能够迭代成功时,该路由却不能生效,只有通过改变配置下一跳的顺序才行,但因为贡献者是在不断变化的,通过手工改变配置的方法显得难以适应;
2.对于能够找到贡献者,而贡献者存在等价路由时,迭代路由也只能从贡献者中取第一个出接口使用,而不会使用其中的等价路由,即不支持负荷分担;
3.私网中不支持路由迭代,例如在私网中运行多跳的(Multi-hop)BGP可以避免由于接口偶而失效时发生的路由震荡问题即路由表反复更改的问题,但需要在私网中也支持迭代功能,而在目前的实现却无法实现;
4.不支持跨越VRF间的路由迭代,例如私网用户通过供应商边缘(Customer Edge,简称“PE”)--客户边缘(Provider Edge,简称“CE”)之间的接口访问英特网时需要支持跨越VRF的路由迭代,即迭代路由位于私网中,而下一跳位于公网里,这样的功能在目前实现中难以得到彻底的支持。
造成这种情况的一个主要原因在于,原有的路由模型对路由迭代的上述一些不同于一般路由的需求考虑不够,原有的路由模型基于这样的前提:路由中的下一跳数组与出接口数组中的元素需要严格的一一对应。这样的假设在不支持迭代时是可以保证的,但在支持迭代后只有在不支持负荷分担时这样的对应关系才存在。如果支持了负荷分担,这个前提则难以满足。而一旦取掉这个前提,原有许多地方的代码都需要重新修改,极易造成***不稳定。因此,任何可以接受的实现方案必须建立在维持原有的下一跳和出接口之间一一关系的基础上,这导致路由迭代只能在公网中对迭代路由做有限的支持且功能上存在限制。
发明内容
本发明要解决的技术问题是提供一种路由迭代***及其方法,使得在原有的路由模型上通过较少的改动就可突破原有的路由模型的限制,实现完善的路由迭代功能,并且可以使内核部分保持原有流程,实现路由平面的无缝升级和负荷分担下的路由迭代的功能。
为了解决上述技术问题,本发明提供了一种路由迭代***,所述***包含虚拟的迭代接口,所述迭代接口的属性是物理接口的属性的一个子集,对需要同时使用所述物理接口和所述迭代接口的模块,所述迭代接口的属性和所述物理接口的属性在数量和性质上完全一致。
其中,所述迭代接口的属性包含类型、状态、名称、引用记数、真实下一跳数组和出接口数组;所述迭代接口上创建有逻辑接口,在所述迭代接口的出接口数组中存放所述逻辑接口的指针。
所述***还包含迭代接口链表模块,迭代接口操作模块,迭代接口刷新模块,迭代接口维护模块和路由下发模块;
所述迭代接口链表模块负责存储所有的迭代接口并为所有的迭代接口组织索引表;
所述迭代接口操作模块负责索引所述迭代接口链表模块,在索引到匹配的迭代接口时增加引用计数并返回查询结果,在没有匹配的时候通知所述迭代接口维护模块进行迭代接口的创建;
所述迭代接口刷新模块负责在其它模块调用时刷新或者定时刷新所述迭代接口链表模块;
所述迭代接口维护模块负责在所述***没有检索到迭代接口时创建迭代接口,在迭代接口的引用系数为零时删除迭代接口;
所述路由下发模块负责根据所述***需要将路由下发并在下发时展开并填充迭代接口。
所述迭代接口链表模块使用哈希算法生成哈希表组织索引表。
所述迭代接口链表模块为所有迭代接口保存以真实下一跳和物理接口为键值的哈希表,所述迭代接口操作模块用迭代接口封装的每一个真实下一跳和物理接口作为输入,根据预先定义的哈希值生成函数计算出键值,并在哈希表的冲突链上进行逐一匹配。
所述迭代接口链表模块为所有迭代接口保存以迭代路由的远端下一跳为键值的哈希表,所述迭代接口操作模块用迭代接口封装的远端下一跳作为输入,根据预先定义的哈希值生成函数计算出键值在哈希表的冲突链上进行逐一匹配。
所述迭代接口链表模块为所有迭代接口管理两张哈希表:以迭代路由的远端下一跳为键值的第一哈希表和以真实下一跳和物理接口为键值的第二哈希表;所述迭代接口操作模块先用远端下一跳作为输入,根据预先定义的哈希值生成函数计算出键值在第一哈希表的冲突链上进行逐一匹配,如果匹配到则不继续查找,否则再以真实下一跳和物理接口作为输入,根据预先定义的哈希值生成函数计算出键值在第二哈希表的冲突链上进行逐一匹配。
所述迭代接口刷新模块在刷新时不管该路由是否变化,均按照一定的规则,从贡献者路由中获取直连下一跳和真实出接口,然后用这些信息全部替换掉迭代路由原来的出接口。
所述迭代接口刷新模块在刷新时首先判断被依赖的贡献者路由是否变化,如果没有变化,则不再更新;否则再按照一定的规则,从贡献者路由中获取直连下一跳和真实出接口,然后用这些信息全部替换掉迭代路由原来的出接口。
所述迭代接口刷新模块在刷新时首先判断被依赖的贡献者路由是否变化,如果没有变化,则不再更新;否则,再检查本迭代路由原来选中的那些真实出接口在本次新的贡献者路由中是否还是生效的,如果依然生效,就不需要替换,否则只替换那些不再生效的真实出接口。
本发明还提供了一种路由迭代中启动路由迭代并进行初始化的方法,包含以下步骤:
A根据传入的下一跳查找真实出接口,如果所有接口均为真实出接口则进行常规的路由处理,否则进入步骤B;
B将该路由***在路由迭代内部使用的一个双向链表上,并给该路由打上迭代接口标记,***位置为当前迭代断点指针的位置;
C检查该路由是否存在真实出接口,如果有则直接启动路由迭代处理,否则在标记该路由无法实现后启动路由迭代处理过程。
本发明还提供了一种路由迭代中路由迭代处理的方法,包含以下步骤:
D判断目前待处理的迭代路由是否合法,如果是则进入步骤E,否则进入步骤I;
E用当前要处理的迭代路由的各个下一跳分别查找相应的路由表并判断查找到的路由是否合法,如果是进入步骤F,否则进入步骤G;
F将查到的贡献者串在一个临时链表并判断是否需要更新路由,如果是则进入步骤H,否则进入步骤I;
G将一个空指针串在临时链表上并标记该迭代路由失败,接着进入步骤I;
H从贡献者路由中获取真实的出接口、更新迭代路由后用真实接口为输入查找迭代接口并生成对应的逻辑接口并用这些信息更新迭代路由;
I将指针指向下一个待处理的迭代路由后将处理循环次数减1并判断循环是否结束,如果是则结束,否则进入步骤D。
本发明还提供了一种路由迭代中迭代接口管理的方法,包含以下步骤:
J在***初始化时,根据迭代接口中的实际接口和直连下一跳计算键值并根据键值将迭代接口挂在哈希表不同冲突链上;
K判断是否需要查找迭代接口,如果是则进入步骤L,否则进入步骤M;
L根据传入的真实出接口信息计算键值并在对应的冲突链上用直连下一跳和真实出接口逐一匹配,如果匹配到则将引用计数增1并返回查找结果,否则创建新的迭代接口并将其挂在相应的冲突链上;
M判断是否在更新接口或释放路由,如果是则将对应迭代接口的引用计数减1;
N判断迭代接口的引用计数是否为0,如果是则从哈希表中删除该迭代接口,否则进入步骤K。
本发明还提供了一种路由迭代中路由下发的方法,包含以下步骤:
O检查待下发路由的接口类型并判断是否存在迭代接口,如果是则先将所述迭代接口展开为真实的出接口;
P用所述真实出接口索引信息填充消息结构并将填充后的消息结构发送给其它模块。
通过比较可以发现,本发明的技术方案与现有技术的区别在于,本发明在基于“路由中的下一跳数组与出接口数组中的元素需要严格的一一对应”的前提下,创造性的采用一种虚拟的路由接口-迭代接口来实现负荷分担下的路由迭代。
这种技术方案上的区别,带来了较为明显的有益效果,即本方案克服了现有路由迭代方案中的所有缺陷,实现了比较通用的负荷分担下的路由迭代,并且本方案采用一种外表上与普通接口相同的抽象数据结构-迭代接口,来表示若干具体而真实的接口的集合,使***具有极大的灵活性和扩展性,能最大程度的继承现有代码,实现新方案与原有***的无缝融合,并且采用该方案还可以支持其他形式的接口。
附图说明
图1为根据本发明的一个较佳实施例的路由虚拟接口结构;
图2为根据本发明的一个较佳实施例的启动路由迭代并进行初始化的流程;
图3为根据本发明的一个较佳实施例的路由迭代处理流程;
图4为根据本发明的一个较佳实施例的迭代接口管理流程;
图5为根据本发明的一个较佳实施例的路由下发流程。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
先说明一下本发明的基本原理,为了支持原有的路由模型所基于的“路由中的下一跳数组与出接口数组中的元素需要严格的一一对应”的前提,本方案用一种可扩展虚拟路由接口,克服了上述各项现有路由迭代方案的缺点。
一个远端下一跳可以查出多个真实出接口,本方案的基本思想就是将具体的真实出接口抽象化,把这些真实出接口封装成一个虚拟接口,构建一个通用的接口模型,使得从表面上依然符合一个下一跳只有一个出接口的规定。其他需要使用路由接口的模块都只看到该虚拟路由接口,而无视其中包含的具体信息,只在个别几个模块内,例如路由下发模块,才能意识到区别。其他模块所有对路由接口的操作都通过预先定义好的界面函数实现,确保了数据的安全。当对路由接口提出新的需求时,只要用需要的具体信息丰富该虚拟接口的内部实现以及在模块的输入输出边界上进行该虚拟接口的适配工作,而内核部分可以保持原有流程,实现了路由平面的无缝升级。
下面结合本发明的一个较佳实施例说明本发明的基本原理。
本发明的关键在于路由虚拟接口-迭代接口,下面做比较详细的说明。
本发明方案中每一条路由中都有两个数组:下一跳数组和出接口数组。其中下一跳数组中存放对端路由器的IP地址指针,对于迭代路由而言,就是远端下一跳的IP地址指针。而出接口中存放的是本设备的输出接口的指针。从迭代的实现机制上看,从一个下一跳查找路由表有可能获取到多个真实出接口,如果还按照原有的思路在下一跳数组中存放真实出接口指针的话,则必然违反下一跳与出接口一一对应的原则。因此需要改变思路,无论是普通路由还是迭代路由,它们对下一跳的理解都是相同的,都是表示对端地址,因此对下一跳数组中的元素无须修改。问题的症结在于从一个下一跳迭代出的多个真实出接口无法放到出接口数组的同一个位置上以满足一一对应的原则,所以需要对出接口数组中存放出接口信息的方式进行修改。按照本发明的一个较佳实施例,将多个真实的出接口用一个抽象的结构加以表示,让它外表上看上去与普通出接口一样,而内部却表示多个迭代出来的真实出接口,这样就可以圆满地解决这样的矛盾。具体地说,为支持路由迭代可以将迭代到的多个真实出接口封装一个虚拟的接口数据结构-迭代接口中,然后将路由中原来保存真实出接口信息的位置替换成保存迭代接口就可以在满足原有原则的前提下实现多个出接口的负荷分担,而且大部分的处理流程还能保持不变。
在现有的方案中,在一条路由中出接口中并不直接保存物理接口的指针,而是逻辑接口的指针。新创建的迭代接口就对应于路由器的物理接口,为了与原有机制保持一致,在迭代接口上也创建不同的逻辑接口,就好象真实接口上的IP地址一样。在迭代路由的出接口数组中就存放这些逻辑接口的指针,因为无论是迭代接口上的逻辑接口还是物理接口上的逻辑接口都采用同样的数据结构,只靠其中一个特殊标记-迭代接口标记而加以区分,所以这样的替换对于各个使用该路由的协议而言都是透明的。只在向转发模块下发迭代路由时需要区分真实接口和迭代接口。如果发现是迭代接口,则需要再获取迭代接口中保存的各个真实接口索引进行下发。
在本发明的一个较佳实施例中,对于迭代接口,因为它与普通的物理接口差别很大,没有重用物理接口的结构,而是重新创建一个新的结构类型。但其中也保留了与物理接口共用的一些基本的信息,如类型、状态、名称、引用记数等,其中,引用计数是为了保存该接口的引用频率以便在引用计数为零时删除该接口,另外增加了保存真实下一跳和出接口的两个数组。因为在大部分情况下,各个路由协议只存取逻辑接口,很少使用物理接口,即便使用,也只存取物理接口中的那些共性的信息,并不需要区分该结构中究竟保存的是真实接口还是迭代接口,从而这样的两级结构最大限度的继承了原有代码,减少对路由其它模块的冲击。
所有的物理接口都是按照索引大小串成一根全局的双向链表。在使用时,以接口索引为键值(KEY)进行搜索。而对于迭代接口因为没有物理接口与其对应,也没有相应的索引可使用。为了解决迭代接口的快速定位和重用,同时也为了避免它对原有的物理接口的影响,本发明没有将迭代接口同真实接口都串在同一条双向链表上,而是另外构建了一个单独的索引表,例如在本发明的一个较佳实施例中使用哈希(HASH)表,加以组织。在使用时,采用相关的信息作为索引迭代接口的KEY。
由于虚拟接口的通用性,采用该方案还可以支持其他形式的接口。例如,在支持多协议标记交换(Multi-Protocol Label Switching,简称“MPLS”)的环境中可以将一条标签交换路径(Label Switched Path,简称“LSP”)虚拟成一个点对点的接口。该接口内部包含了表示该LSP的诸如标签等各种参数,而对外依然表现为一个物理接口的形态。当LSP断链后,可以等效为该点对点的虚拟接口失效时,相应的路由也随之失效。这样不用改变内核的处理流程就可以自然支持通过LSP建立的路由。
本发明的一个实施例的路由虚拟接口结构如图1所示。其中虚线框内为本发明新增的结构。
在本发明的一个较佳实施例中,路由迭代***包含:迭代接口链表模块,迭代接口操作模块,迭代接口刷新模块,迭代接口维护模块和路由下发模块。
这些模块均围绕迭代接口链表模块进行操作。
迭代接口链表模块负责存储所有的迭代接口并为所有的迭代接口组织索引表,其中存储的迭代接口的信息包含:类型、状态、名称、引用记数、真实下一跳数组和出接口数组,迭代接口上创建不同的逻辑接口,在迭代接口的出接口数组中存放这些逻辑接口的指针。需要说明的是,考虑到不同协议对下一跳的地址定义不同,表项中下一跳是指向一个地址的指针,以得到较大的灵活性,例如可以适应Ipv6的要求,支持IPX协议,VPN标识等。在本发明的一个较佳实施例中使用哈希算法生成哈希表组织索引表。本专业的技术人员可以理解,除了哈希表,可以采用多种方法组织该索引表;而且使用哈希表组织该索引表时,可以通过以不同信息作为KEY来进行索引,也可以通过组织多个哈希表来方便查询。例如,在本发明的一个较佳实施例中,迭代接口链表模块就为所有的迭代接口管理两张哈希表,分别是以迭代接口中保存的真实下一跳和物理接口为KEY的哈希表和以远端下一跳为KEY的哈希表。
迭代接口操作模块负责索引迭代接口链表模块并返回查询结果。迭代接口操作模块根据迭代接口链表模块对迭代接口哈希表的组织不同,对应有多种方式索引,它们分别使用不同信息作为KEY,下面分别说明:
1.以迭代接口中保存的真实下一跳和物理接口为KEY。使用时,用该迭代接口封装的每一个真实下一跳和物理接口作为输入,根据预先定义的哈希值生成函数计算出KEY,并在哈希表的冲突链即匹配该KEY值的表链上进行真实下一跳和物理出接口对的逐一匹配。如果能完全匹配到,则表明已经生成了需要的迭代接口,可以重用该结构,只需要增加引用记数即可;否则就需要创建一个新的迭代接口结构,然后用真实出接口信息加以填充。该方法认为虚拟接口只是真实接口信息的封装,它只与真实处接口有关,而与远端下一跳没有任何关系,因此只考虑虚拟接口所包含的真实接口信息,而没有考虑远端下一跳,所以计算KEY值时也没有将其包括进去。这种方法的好处时可以有效地降低虚拟接口产生的数据冗余。因为不同的远端下一跳经过迭代可能得到完全相同的真实出接口。这样不管远端下一跳有多少,都会共用同一个虚拟接口的数据结构。该方式比较适合远端下一跳比较多而且这些远端下一跳往往都属于有限的真实出接口的情况。
2.以迭代路由的远端下一跳为KEY。使用时,用远端下一跳在冲突链上精确匹配每一个迭代接口中保存的远端下一跳。如果找到则增加引用计数后并直接使用已经存在的虚拟接口,否则创建一个新的数据结构并用真实下一跳和物理出接口对加以填充。该方法则更多地从效率方面考虑。因为通过远端下一跳查询路由表,然后再通过贡献者路由获得真实出接口,最后再用真实出接口信息计算KEY,查找虚拟接口的数据结构,这一系列的操作是比较耗时的,而且需要对每一个需要迭代的路由都必须进行这样一个过程,而实际上这些迭代路由大部分是BGP协议产生的,它们在缺省情况下的远端下一跳都是BGP对端邻居的IP地址,也就是说,有大量的路由的远端下一跳都是相同的,例如在远端下一跳是一个网段中的地址。只需要对第一条迭代路由进行上述复杂的操作,其余相同远端下一跳的迭代路由可以直接共享第一条迭代路由产生的虚拟接口即可,而无需重复这样的过程。该方式比较适合远端下一跳比较少,许多路由共用少数几个远端下一跳的情况。
3.将上述两种方式结合起来,为远端下一跳再管理一张哈希表,将拥有相同远端下一跳的诸多迭代路由全部挂在一个双向链表上。实际使用时,先根据远端下一跳查找这张哈希表,如果能够命中,则表明已经有路由以该远端下一跳进行过迭代,而且成功地找到真实出接口了。因此,可以在增加引用计数后直接使用以前已经迭代成功的路由所产生的虚拟接口。否则,按照方式1,以迭代接口中保存的真实下一跳和物理接口为KEY再查找。在迭代成功后,还需要再将本路由挂在以远端下一跳为KEY的另一张HASH表,为后续其他路由的迭代处理提供便利。在本发明的一个较佳实施例中,就是采用该方式进行迭代接口的索引。
迭代接口刷新模块负责定时刷新迭代接口链表模块,刷新时间由***定时;该模块也可以由其它模块调用进行路由的即时更新。刷新的方法有多种:
1.照一定的规则,从贡献者路由中获取直连下一跳和真实出接口,然后用这些信息全部替换掉迭代路由原来的出接口。这样做的实现最为简单,它对所有的路由都进行更新,而不管该路由是否变化,它不需要比较新的出接口与原有出接口之间的关系,但效率不高。因为大部分情况下,一旦迭代路由的远端下一跳确定后,那些被依赖的贡献者路由也随之确定。***稳定后,这些路由信息极少变化,只要迭代成功过一次也就不需要再反复更新了。但这种方法却无视这种情况每隔一段时间都做这些更新操作,浪费了CPU资源,增加了路由模块的下游模块的负担。
2.首先判断被依赖的贡献者路由是否变化,如果没有变化,则不再更新;否则再按方案1处理。这种方案可以避免方案1中的低效率的缺陷,但比较的仍然太粗糙,在依赖的贡献者路由发生变化时依然存在不必要震荡问题。例如:由于原来被选中的出接口关闭后,改为选择其它的出接口刷新迭代路由,后来当那些出接口重新启动后,它们又会被选中,从而将那些并没有关闭的接口替换掉。其实这样做并没有必要,因为它们都是等价路由,本身没有谁优谁劣之分,完全是人为选择的结果。只要这个出接口没有关闭,就应该一直使用它,减少对***的冲击。
3.首先判断被依赖的贡献者路由是否变化,如果没有变化,则不再更新;否则,再检查本迭代路由原来选中的那些真实出接口在本次新的贡献者路由中是否还是生效的,即那些新的贡献者路由是否也包含有迭代路由中真实的出接口,如果依然生效,就不需要替换,否则也只替换那些不再生效的真实出接口。这样就最大限度地保留了原有生效真实出接口,只刷新那些变化的部分,从而减少了对下游模块的冲击。这是一种最优的方案。
在本发明的一个较佳实施例中,使用方案3来进行刷新操作。
迭代接口维护模块负责创建和删除迭代接口。例如,当***接收到一个远端下一跳,迭代接口操作模块索引迭代接口链表模块而没有发现有该路由的迭代接口时,迭代接口维护模块就在迭代接口链表模块中创建一个新的迭代接口,并通知迭代接口刷新模块对新***的迭代接口进行填充;当有一个迭代接口的引用计数为零时,迭代接口维护模块将该迭代接口删除。
路由下发模块负责根据***需要将路由下发并在下发时展开并填充迭代接口。例如,在本发明的一个较佳实施例中,该模块在下发路由前先进行路由的接口检查,如果发现待下发的路由中有迭代接口,则展开该迭代接口并用真实出接口索引信息进行填充,然后下发。
本发明的一个较佳实施例的启动路由迭代并进行初始化的流程如图2,该流程在***传入一个下一跳要求查找路由时执行。该流程的大部分步骤在迭代接口维护模块中完成。
首先进入步骤110,根据传入的下一跳查找真实出接口。该步骤和现有的路由模块处理完全相同,即查找的是和本路由直接相连的下一跳的出接口。
接着进入步骤120,判断查找结果是否所有接口均为真实出接口,如果是则进入步骤140,否则进入步骤130。如果有一个接口不是真实出接口,则表明通过该接口的下一跳与本机不直接相连,此时需要进行迭代,要启动迭代流程。
在步骤130中,将该路由串在路由迭代内部使用的一个双向链表上。其中该链表保存了所有没有迭代成功和已经迭代成功的路由。***的位置就是保存的当前迭代断点指针的位置以保证在调用路由迭代处理函数进入路由迭代处理流程后立刻处理该路由。接着进入步骤150。
在步骤140中,进行一般的路由处理。此时由于下一跳与本机直接相连,所以处理不涉及迭代路由,处理方法和现有方案相同。至此,说明该下一跳不需要进行路由迭代,该流程至此结束。
在步骤150中,给该路由打上迭代接口标记。其中迭代接口标记用于区分真实接口和迭代接口,以便在接口处理和路由下发的时候根据不同的接口做不同的处理。
接着进入步骤160,检查该路由是否存在真实出接口,如果有则进入步骤180,否则进入步骤170。在本步骤中,如果能够找到至少一个真实出接口,则表明该路由虽然在处于迭代过程中,但仍然可以通过已有的真实出接口直到转发;否则就表示该路由没有任何的真实出接口,不能直接转发。
在步骤170中,标记该路由无法实现。在本发明的一个较佳实施例中,具体实施时就是将路由的优先级变为负数,表明该路由不能生效,防止***将其刷新并下发给其它模块,等到以后迭代成功时再将优先级变为正数下发表项。接着进入步骤180。
在步骤180中,调用路由迭代处理函数。该路由迭代处理函数负责迭代接口的处理流程。调用时,通过传入特定参数值将其与路由迭代正常的定时处理区分开来。由于***位置正好是当前断点位置,也即路由迭代处理函数中的当前待处理迭代接口的指针指向***的新迭代接口,因此在处理函数中立刻就会对新***的路由进行迭代处理。在本发明的一个较佳实施例中,传入的参数值为空。
至此,启动路由迭代并进行初始化的流程结束。
本发明的一个较佳实施例的路由迭代处理流程如图3,该流程在有***定时调用或者在***启动路由迭代后被调用。该流程的大多步骤在迭代接口刷新模块中完成。
首先进入步骤200,获取循环次数。具体实施中,该步骤通过接收函数调用时传入的参数来确定循环次数。在本发明的一个较佳实施例中,如传入参数为空,则表明该函数不是正常的定时处理,而是在增加或改变路由时为启动迭代处理而调用本函数,此时只需要处理当前新***的路由即可,循环次数为1;否则次数为链表中一次循环要处理的迭代路由数目,该数目由***预定义,最多是500。
接着进入步骤210,判断目前待处理的迭代路由是否合法,如果是则进入步骤220,否则进入步骤310。例如若当前待处理的迭代路由打上了迭代接口标记或者正在被删除等情况下均为不合法。
接着进入步骤220,用当前要处理的迭代路由的各个下一跳分别查找相应的路由表。在本发明的一个较佳实施例中,***为远端下一跳管理一张哈希表,将拥有相同远端下一跳的诸多路由全部挂在一个双向链表上,查找时以下一跳作为KEY查找哈希表。需要说明的是,对于当前要处理的迭代路由的每个下一跳都要进行查找,此流程为了说明的简便,在下面的处理中只对一个下一跳的查找来讨论,熟悉该领域的技术人员可以理解,这样说明并不影响对该发明的理解和实现。
接着进入步骤230,判断查找到的路由是否合法,如果是则进入步骤240,否则进入步骤250。例如,在本发明的一个较佳实施例中,判断是否是缺省路由,如果是则不合法;是否正处于删除状态,如果是则不合法。
在步骤240中,将查到的贡献者串在一个临时链表。该步骤中的链表为临时的,只是在路由迭代处理流程中临时使用,流程结束就删除。接着进入步骤270。
在步骤250中,将一个空指针串在临时链表上。此空指针即表示该迭代路由的当前远端下一跳没有对应的贡献者,即当前下一跳找不到路由。接着进入步骤260。
在步骤260中,标记该迭代路由失败。在本发明的一个较佳实施例中,该步骤通过调用路由变化处理函数实现。接着进入步骤310。
在步骤270中,判断是否需要更新路由,如果是则进入步骤280,否则进入步骤310。该步骤通常和步骤280结合起来执行。
在步骤280中,从贡献者路由中获取真实的出接口并更新迭代路由。该步骤和步骤270紧密联系,步骤270有多种判断方法,步骤280也对应有多种更新方法,具体的方法在迭代接口刷新模块中有详细说明。
接着进入步骤290,用真实接口为输入查找迭代接口并生成对应的逻辑接口。该步骤中的真实接口由步骤280更新之后得到。
接着进入步骤300,更新迭代路由。在本发明的一个较佳实施例,该步骤通过用步骤290得到的信息作为参数调用路由变化处理函数完成。接着进入步骤310。
在步骤310中,将指针指向下一个待处理的迭代路由。该步骤中所述指针为路由迭代处理流程中一个指向当前待处理的迭代路由的指针。在本发明的一个较佳实施例中,通过将指针增加或减少一个固定的数值实现。
接着进入步骤320,将处理循环次数减1。该步骤表示处理完循环中的一个迭代路由。
接着进入步骤330,判断循环次数是否为0,如果是则结束,否则进入步骤210。该步骤即判断循环是否结束,如果没有结束则开始下一个迭代路由的处理。
至此,路由迭代处理流程结束。
本发明的一个较佳实施例的迭代接口管理流程如图4,该步骤为一个大循环。
首先进入步骤400,根据迭代接口中的实际接口和直连下一跳计算键值。在本发明的一个较佳实施例中,按照哈希算法计算。
接着进入步骤410,根据键值将迭代接口挂在哈希表不同冲突链上。所谓冲突链,即键值相同的链。步骤410和步骤420为迭代接口的初始化步骤,这两个步骤将所有的迭代接口组织到一个哈希表中以方便以后的查询。本专业的技术人员不难理解,在实际实施中,除了哈希表,可以有很多种组织迭代接口的方法。步骤400和步骤410只是在***初始化建立迭代接口链表模块时执行,不参与大循环。
接着进入步骤420,判断是否需要查找迭代接口,如果是则进入步骤430,否则进入步骤480。在具体实施时,该步骤根据***传入的消息来决定是否需要进行查找。
在步骤430中,根据传入的真实出接口信息计算键值。在本发明的一个较佳实施例中,采用远端下一跳计算键值。
接着进入步骤440,在对应的冲突链上用直连下一跳和真实出接口逐一匹配。在本发明的一个较佳实施例中,这种匹配是采用哈希算法进行的。
接着进入步骤450,判断是否找到匹配,如果是则进入步骤460,否则进入步骤470。找到匹配就说明查找的迭代接口存在,可以直接引用;否则就说明该迭代接口不存在,需要另外构建。
在步骤460中,将引用计数增1并返回查找结果。该步骤将所引用的迭代接口的引用计数增1,表明该接口被引用的频率比较高,暂时不用删除。接着进入步骤480。
在步骤470中,创建新的迭代接口并将其挂在相应的冲突链上。该步骤中创建新的迭代接口并将其挂在相应的冲突链上的步骤在前面启动路由迭代并进行初始化的流程和路由迭代处理流程中已经详细叙述。接着进入步骤480。
在步骤480中,判断是否在更新接口或释放路由,如果是则进入步骤490,否则进入步骤500。该步骤中,更新接口的操作是由***定时进行的。
在步骤490中,将对应迭代接口的引用计数减1。接着进入步骤500。该步骤表明该迭代接口的引用频率在降低。
在步骤500中,判断迭代接口的引用计数是否为0,如果是则进入步骤510,否则进入步骤420。
在步骤510中,从哈希表中删除该迭代接口。该步骤用来删除很久没有被引用的迭代接口以节省存储空间。熟悉该领域的技术人员可以理解,如果不使用哈希表而用其它形式组织迭代接口,则删除时从其它形式的链表中删除。
这些步骤周而复始实现迭代接口管理。
本发明的一个较佳实施例的路由下发流程如图5,该流程在***要求路由核心向其它模块发送路由的时候执行。
首先进入步骤600,检查待下发路由的接口类型。其中,待下发路由的接口有两种类型:真实出接口和虚拟的迭代接口。
接着进入步骤610,判断是否存在迭代接口,如果是则进入步骤620,否则跳过步骤620直接进入步骤630。该步骤中,不管下发路由中有多少真实出接口,只要检查中发现下发路由中有至少一个迭代接口就进入步骤620。
在步骤620中,将迭代接口展开为真实的出接口。在本发明的一个较佳实施例中,该步骤通过在现有路由模块的路由下发程序中添加迭代接口展开的语句实现。
接着进入步骤630,用真实出接口索引信息填充消息结构。该步骤的处理在现有的路由模块中已经存在,可以直接使用而不需要修改。
接着进入步骤640,将填充后的消息结构发送给其它模块。该步骤的处理同样在现有的路由模块中已经存在,也可以直接使用而不需要修改。
至此,路由下发流程结束。
虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。
Claims (14)
1.一种路由迭代***,其特征在于,所述***包含虚拟的迭代接口,所述迭代接口的属性是物理接口的属性的一个子集,对需要同时使用所述物理接口和所述迭代接口的模块,所述迭代接口的属性和所述物理接口的属性在数量和性质上完全一致。
2.根据权利要求1所述的路由迭代***,其特征在于,所述迭代接口的属性包含类型、状态、名称、引用记数、真实下一跳数组和出接口数组;所述迭代接口上创建有逻辑接口,在所述迭代接口的出接口数组中存放所述逻辑接口的指针。
3.根据权利要求2所述的路由迭代***,其特征在于,所述***还包含迭代接口链表模块,迭代接口操作模块,迭代接口刷新模块,迭代接口维护模块和路由下发模块;其中,
所述迭代接口链表模块负责存储所有的迭代接口并为所有的迭代接口组织索引表;
所述迭代接口操作模块负责索引所述迭代接口链表模块,在索引到匹配的迭代接口时增加引用计数并返回查询结果,在没有匹配的时候通知所述迭代接口维护模块进行迭代接口的创建;
所述迭代接口刷新模块负责在其它模块调用时刷新或者定时刷新所述迭代接口链表模块;
所述迭代接口维护模块负责在所述***没有检索到迭代接口时创建迭代接口,在迭代接口的引用系数为零时删除迭代接口;
所述路由下发模块负责根据所述***需要将路由下发并在下发时展开并填充迭代接口。
4.根据权利要求3所述的路由迭代***,其特征在于,所述迭代接口链表模块使用哈希算法生成哈希表组织索引表。
5.根据权利要求4所述的路由迭代***,其特征在于,所述迭代接口链表模块为所有迭代接口保存以真实下一跳和物理接口为键值的哈希表,所述迭代接口操作模块用迭代接口封装的每一个真实下一跳和物理接口作为输入,根据预先定义的哈希值生成函数计算出键值,并在哈希表的冲突链上进行逐一匹配。
6.根据权利要求4所述的路由迭代***,其特征在于,所述迭代接口链表模块为所有迭代接口保存以迭代路由的远端下一跳为键值的哈希表,所述迭代接口操作模块用迭代接口封装的远端下一跳作为输入,根据预先定义的哈希值生成函数计算出键值在哈希表的冲突链上进行逐一匹配。
7.根据权利要求4所述的路由迭代***,其特征在于,所述迭代接口链表模块为所有迭代接口管理两张哈希表:以迭代路由的远端下一跳为键值的第一哈希表和以真实下一跳和物理接口为键值的第二哈希表;所述迭代接口操作模块先用远端下一跳作为输入,根据预先定义的哈希值生成函数计算出键值在第一哈希表的冲突链上进行逐一匹配,如果匹配到则不继续查找,否则再以真实下一跳和物理接口作为输入,根据预先定义的哈希值生成函数计算出键值在第二哈希表的冲突链上进行逐一匹配。
8.根据权利要求3所述的路由迭代***,其特征在于,所述迭代接口刷新模块在刷新时不管该路由是否变化,均按照一定的规则,从贡献者路由中获取直连下一跳和真实出接口,然后用这些信息全部替换掉迭代路由原来的出接口。
9.根据权利要求3所述的路由迭代***,其特征在于,所述迭代接口刷新模块在刷新时首先判断被依赖的贡献者路由是否变化,如果没有变化,则不再更新;否则再按照一定的规则,从贡献者路由中获取直连下一跳和真实出接口,然后用这些信息全部替换掉迭代路由原来的出接口。
10.根据权利要求3所述的路由迭代***,其特征在于,所述迭代接口刷新模块在刷新时首先判断被依赖的贡献者路由是否变化,如果没有变化,则不再更新;否则,再检查本迭代路由原来选中的那些真实出接口在本次新的贡献者路由中是否还是生效的,如果依然生效,就不需要替换,否则只替换那些不再生效的真实出接口。
11.一种路由迭代中启动路由迭代并进行初始化的方法,其特征在于,包含以下步骤:
A 根据传入的下一跳查找真实出接口,如果所有接口均为真实出接口则进行常规的路由处理,否则进入步骤B;
B 将该路由***在路由迭代内部使用的一个双向链表上,并给该路由打上迭代接口标记,***位置为当前迭代断点指针的位置;
C 检查该路由是否存在真实出接口,如果有则直接启动路由迭代处理,否则在标记该路由无法实现后启动路由迭代处理过程。
12.一种路由迭代中路由迭代处理的方法,其特征在于,包含以下步骤:
D 判断目前待处理的迭代路由是否合法,如果是则进入步骤E,否则进入步骤I;
E 用当前要处理的迭代路由的各个下一跳分别查找相应的路由表并判断查找到的路由是否合法,如果是进入步骤F,否则进入步骤G;
F 将查到的贡献者串在一个临时链表并判断是否需要更新路由,如果是则进入步骤H,否则进入步骤I;
G 将一个空指针串在临时链表上并标记该迭代路由失败,接着进入步骤I;
H 从贡献者路由中获取真实的出接口、更新迭代路由后用真实接口为输入查找迭代接口并生成对应的逻辑接口并用这些信息更新迭代路由;
I 将指针指向下一个待处理的迭代路由后将处理循环次数减1并判断循环是否结束,如果是则结束,否则进入步骤D。
13.一种路由迭代中迭代接口管理的方法,其特征在于,包含以下步骤:
J 在***初始化时,根据迭代接口中的实际接口和直连下一跳计算键值并根据键值将迭代接口挂在哈希表不同冲突链上;
K 判断是否需要查找迭代接口,如果是则进入步骤L,否则进入步骤M;
L 根据传入的真实出接口信息计算键值并在对应的冲突链上用直连下一跳和真实出接口逐一匹配,如果匹配到则将引用计数增1并返回查找结果,否则创建新的迭代接口并将其挂在相应的冲突链上;
M 判断是否在更新接口或释放路由,如果是则将对应迭代接口的引用计数减1;
N判断迭代接口的引用计数是否为0,如果是则从哈希表中删除该迭代接口,否则进入步骤K。
14.一种路由迭代中路由下发的方法,其特征在于,包含以下步骤:
O 检查待下发路由的接口类型并判断是否存在迭代接口,如果是则先将所述迭代接口展开为真实的出接口;
P 用所述真实出接口索引信息填充消息结构并将填充后的消息结构发送给其它模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN03127252A CN100583806C (zh) | 2003-09-30 | 2003-09-30 | 路由迭代***及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN03127252A CN100583806C (zh) | 2003-09-30 | 2003-09-30 | 路由迭代***及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1604558A true CN1604558A (zh) | 2005-04-06 |
CN100583806C CN100583806C (zh) | 2010-01-20 |
Family
ID=34658866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN03127252A Expired - Fee Related CN100583806C (zh) | 2003-09-30 | 2003-09-30 | 路由迭代***及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100583806C (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102420761A (zh) * | 2011-12-05 | 2012-04-18 | 瑞斯康达科技发展股份有限公司 | 一种路由迭代方法 |
CN102594657A (zh) * | 2011-12-20 | 2012-07-18 | 杭州华三通信技术有限公司 | 一种路由迭代方法及路由交换设备 |
CN102594656A (zh) * | 2011-12-20 | 2012-07-18 | 杭州华三通信技术有限公司 | 一种路由迭代方法及路由交换设备 |
CN102752205A (zh) * | 2012-07-04 | 2012-10-24 | 杭州华三通信技术有限公司 | 一种路由迭代的方法和装置 |
CN103220217A (zh) * | 2013-04-27 | 2013-07-24 | 杭州华三通信技术有限公司 | 一种路由生成方法和设备 |
CN105591917A (zh) * | 2015-08-11 | 2016-05-18 | 杭州华三通信技术有限公司 | 一种多链接透明互联网络中的报文转发方法和装置 |
WO2016150093A1 (zh) * | 2015-03-20 | 2016-09-29 | 中兴通讯股份有限公司 | 报文转发方法、装置及服务提供商网络边缘pe设备 |
CN109039908A (zh) * | 2018-06-14 | 2018-12-18 | 北京星网锐捷网络技术有限公司 | 一种递归路由的切换方法、路由器、交换机及电子设备 |
-
2003
- 2003-09-30 CN CN03127252A patent/CN100583806C/zh not_active Expired - Fee Related
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102420761A (zh) * | 2011-12-05 | 2012-04-18 | 瑞斯康达科技发展股份有限公司 | 一种路由迭代方法 |
CN102420761B (zh) * | 2011-12-05 | 2014-08-13 | 瑞斯康达科技发展股份有限公司 | 一种路由迭代方法 |
CN102594656B (zh) * | 2011-12-20 | 2016-05-04 | 杭州华三通信技术有限公司 | 一种路由迭代方法及路由交换设备 |
CN102594657A (zh) * | 2011-12-20 | 2012-07-18 | 杭州华三通信技术有限公司 | 一种路由迭代方法及路由交换设备 |
CN102594656A (zh) * | 2011-12-20 | 2012-07-18 | 杭州华三通信技术有限公司 | 一种路由迭代方法及路由交换设备 |
CN102594657B (zh) * | 2011-12-20 | 2016-07-06 | 杭州华三通信技术有限公司 | 一种路由迭代方法及路由交换设备 |
CN102752205B (zh) * | 2012-07-04 | 2016-06-01 | 杭州华三通信技术有限公司 | 一种路由迭代的方法和装置 |
CN102752205A (zh) * | 2012-07-04 | 2012-10-24 | 杭州华三通信技术有限公司 | 一种路由迭代的方法和装置 |
CN103220217B (zh) * | 2013-04-27 | 2016-05-04 | 杭州华三通信技术有限公司 | 一种路由生成方法和设备 |
CN103220217A (zh) * | 2013-04-27 | 2013-07-24 | 杭州华三通信技术有限公司 | 一种路由生成方法和设备 |
WO2016150093A1 (zh) * | 2015-03-20 | 2016-09-29 | 中兴通讯股份有限公司 | 报文转发方法、装置及服务提供商网络边缘pe设备 |
CN105591917A (zh) * | 2015-08-11 | 2016-05-18 | 杭州华三通信技术有限公司 | 一种多链接透明互联网络中的报文转发方法和装置 |
CN105591917B (zh) * | 2015-08-11 | 2018-12-11 | 新华三技术有限公司 | 一种多链接透明互联网络中的报文转发方法和装置 |
CN109039908A (zh) * | 2018-06-14 | 2018-12-18 | 北京星网锐捷网络技术有限公司 | 一种递归路由的切换方法、路由器、交换机及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100583806C (zh) | 2010-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1976313A (zh) | 高性能路由器bgp路由协议分布并行实现方法 | |
CN100512238C (zh) | Mpls网络中的递归bgp路由更新方法 | |
KR20210064217A (ko) | 네트워크 라우팅 환경에서 비동기식 객체 관리자 | |
US7756998B2 (en) | Managing L3 VPN virtual routing tables | |
CN1132452C (zh) | 公共移动数据通信网和方法 | |
US7327727B2 (en) | Atomic lookup rule set transition | |
CN108989202A (zh) | 用于虚拟节点的基于结构路径上下文的转发 | |
CN102137024B (zh) | 报文处理方法、出口路由设备及边界路由设备 | |
CN1404591A (zh) | 执行高速互联网协议路由查找和管理路由选择/转发表的装置和方法 | |
CN1852214A (zh) | 一种虚拟专用网络的路由方法 | |
CN1652542A (zh) | 实现虚拟租用线的方法 | |
CN1722726A (zh) | 支持伪线标签反射的二层虚拟专网设备和组网方法 | |
CN1606291A (zh) | 网络处理加速器 | |
CN1859170A (zh) | 一种实现跨域路由分离的方法 | |
CN103581022B (zh) | Mac地址的查找转发方法和装置 | |
CN1744563A (zh) | 在以太网交换机上实现策略路由的方法 | |
CN112202670B (zh) | 一种SRv6段路由转发方法及装置 | |
US11991081B1 (en) | Micro SID packet processing | |
CN1604558A (zh) | 路由迭代***及其方法 | |
CN105471747A (zh) | 一种智能路由器选路方法和装置 | |
CN106803809A (zh) | 一种报文转发的方法和装置 | |
CN101047625A (zh) | 一种策略路由装置和方法 | |
CN1170397C (zh) | 一种IPv4网络接入层次式交换网络的方法 | |
CN1870634A (zh) | 双归属/多归属逻辑组网方法和提供商设备 | |
CN106034075B (zh) | 一种为vpn路由分配标签的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100120 Termination date: 20160930 |