客户边界设备双归属的实现方法

文档序号:7901136阅读:414来源:国知局

专利名称::客户边界设备双归属的实现方法
技术领域
:本发明涉及虚拟专用网技术,特别涉及一种客户边界设备双归属的实现方法。
背景技术
:在客户边界设备(简称CE)双归属的组网中,由于一个CE同时连接两个服务者边界设备(简称PE),这种组网形式成为CE双归属。参阅图1,客户边界设备CE1分别与服务者边界设备PE1和PE2连接,因此它内部的一条私网路由(例如10.163.1.1/24)将会分别通过所连接的服务者边界设备PE1和PE2发布出去,另一端服务者边界设备PE3将分别从服务者边界设备PE1和PE2收到这两条到同一目的地的路由。如果这两条路由被放置在不同路由表中,由于现在的实现没有在不同路由表间进行路由选优的机制,因此服务者边界设备PE3将这两条路由都通过PE3-CE2之间的边界网关协议(BGP协议)发给了客户边界设备CE2。因为它们的目的地、子网掩码以及下一跳都相同,所以客户边界设备CE2认为是一条路由,只保留后传来的路由。然而当其中的一条路由断链后,远端服务者边界设备PE1通过BGP协议通知本端服务者边界设备PE3,然后本端服务者边界设备PE3就向客户边界设备CE2发送不可达报文,导致客户边界设备CE2将那条路由删除。如果远端传来的两条路由的路由区分符(简称RD)不同,它们放在两个不同的虚拟路由表中(简称VRIB)中,因此其中一条路由被删除后,不会影响位于另一个VRIB中的相同目的地路由,所以也不会再次向客户边界设备CE2发送路由,从而导致虽然在服务者边界设备PE3上还存在转发路径,但在客户边界设备CE2上却没有相应的路由,因而CE后面的用户无法通过另一条标签交换路径(简称LSP)访问远端由用户自己维护的接入运营商网络的路由设备和主机的集合(简称site),使得原来想通过备份LSP增加可靠性的初衷无法实现。对于上述组网中的问题,有三种规避方案方案一、将客户边界设备CE1相连的两个服务者边界设备PE1和PE2上的虚拟路由转发实例(简称VRF)配置成相同的RD,这样就可以沿用以前的路由刷新流程,从服务者边界设备PE1和PE2传来的到同一目的地路由在服务者边界设备PE3上被放置在同一个VRIB中,而现有的机制可以在VRIB内选择最优路由下发客户边界设备CE2,当选中的路由不可达后会自动选择备份路由。但这种方案要求的前提远端PE上的VRF配置成相同RD,在实际组网中可能不能满足。因为远端设备可能不是同厂商的设备,可能在不同时间进入市场,而且运行良好。如果改动RD,则需要重新发布该VRF中的所有路由,带来网络的波动,运行商可能难以接受。方案二、在客户边界设备CE2上配置静态路由指向服务者边界设备PE3,这样就可以不受服务者边界设备PE3上路由刷新的影响。但静态路由也有其局限性。它不能根据当前网络上的拓扑实时变化,特别是远端目的地已经不可达时,还将流量送往公网,给网络带来不必要的冲击。另外,这些静态路由需要配置人员自己维护,特别是当路由数目较多时,维护的工作量很大,而且容易出错。因此,用户的CE设备有可能不接受完全依赖静态路由的方案。方案三、在服务者边界设备PE3与客户边界设备CE2之间运行RIP协议。因为RIP协议是定时发布所有路由的方式通报路由变化的。即使服务者边界设备PE3没有将另一条备份路由发给CE,但经过一段时间(如30秒)后,RIP协议会重新将当前所有可达路由全部发给客户边界设备CE2。但因为RIP协议较为陈旧,特别是那种定期广播所有路由的方式在路由较多时会给网络带来一定的冲击,因此用户的CE设备有可能不愿意在PE-CE之间运行RIP。上面的三种方案都是在具有一定假设条件下的规避方案,并不是对这个问题的真正的解决方案。而且,除了上面提到的CE双归属时路由不能自动备份的问题还,还存在其他一些问题例如VRF的限制路由表中的最大路由数目(maxroute)命令只能限制本地路由而不能限制远端路由;如果一个路由表中的两条路由的导出路由目标(exportroutetarget)配置成不同时,某些VRF就会收不到路由等问题。所有这些问题都是同一个原因引起的,即现在的多路由表结构不够完善造成的。现在的多路由表结构是为了满足MPLS/VPN模型设计的,它将不同site来的路由放在不同的路由表中,用RD唯一标识。不同site之间的互通通过路由目标(Routetarget)的相互匹配来实现路由的交互。因此就存在一个VRIB中的路由可以导入多个不同的VRF,而一个VRF又可以接收多个VRIB中的路由的情况,这样一种m*n的交叉关系体现了MPLS/VPN的高度的灵活性,但同时也增加了实现的复杂性。现在的实现方案主要是为了解决内存问题。一个site中的路由只存在于其RD对应的VRIB中,通过修改刷新流程实现转发表和路由发布的拷贝。这样的实现不但节约了内存,而且也省去了路由的多重拷贝带来的数据之间的不一致性,从这一点上看不失为一种优秀的解决方案,它成功地解决了交叉关系中的一个VRIB导入多个VRF的问题。但对于交叉关系中的另一类问题,即一个VRF接收多个VRIB中的路由,特别是同一目的地的路由,该个方案未能很好解决。主要是由于在多个VRIB之间没有任何关联,彼此互相不知道。因此,不同VRIB之间的路由无法进行比较、选优和相互备份,一个VRIB中的路由变化不会通知其他的VRIB。正是由于割断了这样的相互联系,导致了出现上面描述的问题。虽然对于目前出现的问题,可以通过打补丁的方法暂时解决,但这样将使得路由的代码越来越复杂,变得难以维护,更增加了出问题的可能,同时也丧失了进一步扩展适应新需求的能力。
发明内容本发明的目的在于提供一种客户边界设备双归属的实现方法,以解决服务者边界设备中因不同虚拟路由表之间不相关联而无法进行路由的全局比较、选优和相互备份的问题。本发明的技术方案一种客户边界设备双归属的实现方法,所述客户边界设备分别与两个服务者边界设备相连,在服务者边界设备上具有多个虚拟转发实例和与每一虚拟转发实例对应的虚拟路由表,以及至少一个远端虚拟路由表,在同一虚拟路由表中到相同目的地的路由信息形成第一关联关系,且每一路由信息可导入其它虚拟转发实例的所有引用关系形成与该路由相对应的第二关联关系;所述方法包括步骤将可以导入同一虚拟转发实例且到相同目的地的所有路由,通过所述的引用关系建立第三关联关系;以及在加入路由信息和删除路由信息而引起路由重新选优时,根据所述第一、第二关联关系和第三关联关系在不同虚拟路由表间进行全局路由选择。其中所述的第一、第二和第三关联关系分别为一双向链表。所述加入路由信息包括步骤A、本地客户者边界设备从远端的客户者边界收到私网路由后,根据协议报文中路由所属的路由区分符在本地寻找相应的远端虚拟路由表,如果找到则进行步骤B,否则以该路由区分符为关键值(KEY)创建一个新的远端虚拟路由表,并继续步骤B;B、新分配一个存放路由的数据结构,并用新收到的路由信息填充;C、将该存放路由的数据结构插入所述远端路由表的第一关联关系中,根据路由选优规则在该虚拟路由表内进行路由选优;D、根据所述路由的导出路由目标(exportroute-tagret)属性,依次匹配本地所有虚拟转发实例的导入路由目标(importroute-tagte)属性,如果能够匹配上,则为虚拟转发实例分配一个存放路由引用关系的数据结构并将其插入到远端路由表的该路由的第二关联关系中;E、以新增路由的目的IP地址和掩码在可以导入的虚拟转发实例对应的虚拟路由表中查找与其相同的第一关联关系的头节点;如果未找到,则在当前虚拟转发实例对应的虚拟路由表中创建一个新的头节点,将步骤D中分配的存放路由引用关系的数据结构插入相应的第三关联关系中,根据路由选优规则在该虚拟路由表间进行路由选优;如果找到,则直接将步骤D中分配的存放路由引用关系的数据结构插入相应的第三关联关系中,根据路由选优规则在该虚拟路由表间进行路由选优。所述删除路由信息包括步骤a、根据待删除路由的路由区分符(route-distinguish)属性找到存放该路由的虚拟路由表,并找到实际存放待删除路由的数据结构;b、判断待删除路由是否为当前的最优路由,如果不是则进行步骤c,否则触发第一关联关系中路由的重新选优,实现路由的备份和切换,继续步骤c;c、依次处理与该路由相对应的第二关联关系,并触发第三关联关系中的节点在不同的虚拟路由表之间重新选优,实现路由的备份和切换。本发明具有以下有益效果(1)本发明不用预设任何假设条件就可以彻底解决CE双归属组网时带来的EBGP的可达路由不能发布以及转发表不能实现路由备份等问题。(2)本发明可以支持诸如1)通过maxroute控制远端路由;2)可以任意配置位于同一个VRIB中路由的exportroutetarget等功能(3)将一个虚拟路由表可以导入多个虚拟转发实例和一个虚拟转发实例可以接受多个虚拟路由表的路由这种复杂的m*n的关系结合起来,对于路由与虚拟转发实例的路由目标(routetarget)没有任何限制,可以将控制粒度细到一条路由的级别,这是以前的方案所不能支持的。正是有了高度的灵活性,使得它在支持新需求方面有很大的扩展性。图1为客户边界双归属的组网示意图;图2为本发明的服务者边界设备中虚拟路由表内路由关系的示意图。图3为本发明加入路由的流程图;图4为本发明删除路由的流程图。具体实施例方式本发明模仿同一个虚拟路由表(简称VRIB)中的相同目的地的路由之间的关联在不同VRIB的路由之间建立起联系,使用已有的同一个VRIB中相同路由之间的相互备份机制来解决不同VRIB之间相同目的地路由之间的备份问题。这样的联系需要满足以下条件(1)不同VRIB的路由能相互感知,能够象在同一VRIB那样应用所有现存的比较规则选择最优路由。当最优路由变化或出现更好的路由后能自动进行重新选择并重新下发表项。(2)VRIB中的任何一条路由应该允许任意导入指定的虚拟转发实例(简称VRF)中,任何一个VRF也应该允许导入任何VRIB中的任何路由,这两个方面的关系应该没有任何的相互制约。而且对一个VRF而言,它只关心导入其中的路由的信息而不关心这些路由位于哪个VRIB中。(3)虽然一个VRF可以导入多个VRIB中的路由,但向边界网关协议(BGP)的虚拟专用网(VPN)实例发布私网路由时却只能发布自己的私网路由而不能将其他的私网一并发布,因此,它必须能区分那些是导入的路由,哪些是自己产生的路由。(4)为了保持系统的稳定,这个改动尽可能限制在路由管理的范围之内,减少对各个路由协议的影响;尽量使用原有的已经很成熟的流程。参图2所示,虚拟转发实例VRF1和VRF2分别表示服务者边界设备(简称PE)上的一个虚拟转发实例,它表示了PE下挂的一个由用户自己维护的接入运营商网络的路由设备和主机的集合(简称site)的路由属性,包括路由区分符(route-distinguish、route-target)、最大路由限制、是否能够访问Internet等一系列属性。同时每个VRF还与一个虚拟路由表(VRIB)关联,VRIB中存放的就是本地site中包含的私网路由,这些路由可以通过BGP协议扩散到远端设备上去,以便远端的用户可以感知这些路由的存在。但并不是所有的VRIB都和VRF相关联,从远端PE收到的私网路由就需要放置到一个全新的远端VRIB中以便在必要时向本地VRF中导入。这些私网路由在VRIB中以radix树的形式存在,由不同协议产生的到相同目的地(相同子网和掩码长度)的路由全部挂在一个以系统中存放路由链表的头节点rt_head的双向链表中。rt_head中记录了这些路由的共有属性,例如IP地址、掩码等。节点rt_entry就是真正存放路由信息的数据结构,VRIB中所有的节点rt_entry构成一个双向链表以形成第一关联关系。为了表示路由内部的引用关系,又在节点rt_entry上拖出一根由系统中存放路由引用关系的数据结构的节点rtbit组成的双向链表,形成第二关联关系。链表中的每个节点对应一个可以导入该路由的VRF,节点中记录了路由被该VRF中的哪些协议所引用。通过这样一根引用链表解决了一条路由可以同时导入多个VRF时数据共享和相互引用的问题。将可以导入同一VRIB且到相同目的地的所有路由,通过节点rtbit构成双向链表,形成第三关联关系,使一个VRF中导入的不同VRIB中路由相互关联,参阅图中的虚线所示的链表。有了这样一条串联所有rtbit的链表后,需要将链头放在需要导入的VRF对应的VRIB中的头节点rt_head上,并在头节点rt_head中扩充一个活动路由指针active_vrf指向这条链中的激活路由,以便将其与原有的指针active区分开来。因为同一VRIB中的相同目的地的路由都串在一个双向链表中,任何新增一个节点rt_entry或删除一个节点rt_entry,都可以在已有的节点rt_entry中进行重新选优,从而起到路由备份切换的作用。由于第三关联关系将不同VRIB中的相同目的地的路由也全部串联起来,因此不同VRIB中的相同目的地的路由彼此之间能相互感知,使得在一个VRIB中新增或删除一条路由不仅能在VRIB内部选优,而且能在VRIB之间进行全局选优,在一个VRIB中到该目的地已经无路由可达时,系统能够主动切换到另一个VRIB的路由上。参阅图2,以PE在本地有两个虚拟转发实例VRF1和VRF2和一个远端的VRIB,以及它们之间都存在导入关系为例来说明路由的加入和删除过程。通过第二关联关系,远端的VRIB中的路由可以导入虚拟转发实例VRF1和VRF2中,作为它们自己的路由一样使用,第二关联关系中的节点rtbit就象是第一关联关系的节点rt_entry结构在不同VRF中的一个映像,通过该映像就可以找到真正存放路由信息的rt_entry。第三关联关系够实现一个VRF中导入的不同VRIB中路由时的相互关联问题。参阅图3,PE加入路由的具体步骤如下步骤10从远端PE收到私网路由后,根据协议报文中路由所属的路由区分符(route-distinguish)在本地寻找VRIB。如果找到则进行步骤20,如果没有找到,就以该路由区分符为关键值(KEY)创建一个新的远端VRIB,继续步骤20。步骤20新分配一个存放路由信息的节点rt_entry,并用新收到的路由信息填充,包括下一跳、标签、metric等。步骤30将该节点rt_entry插入找到的VRIB第一关联关系中,即挂到以头节点rt_head和节点rt_entry所形成的一个双向链表上。此时会引起该链表中路由的重新选优。如果最优路由发生变化,需要通知MBGP协议重新发布这些私网路由。步骤40根据该路由的导出路由目标(exportroute-tagret)属性,依次匹配本地VRF的导入路由目标(importroute-tagte)属性,路由的导出路由目标属性在协议报文中获取。如果能够匹配上,则表明该路由可以导入该VRF,此时应该在远端VRIB中为该VRF分配一个存放引用关系的数据结构的节点rtbit,并将其挂到节点rt_entry上。步骤50以新增路由的目的IP和掩码在可以导入的VRF对应的VRIB中寻找第一关联关系的头节点rt_head(这是标准的radix搜索算法)。如果未找到,说明本VRF中还没有收到过该目的地的路由,则创建一个新的头节点rt_head。然后,将步骤40中节点rt_entry上为本VRF分配的节点rtbit插入到该头节点rt_head上的第三关联关系的链表上。此时可能触发链表中节点rtbit的重新选优。如果最优的节点rtbit发生变化,则通过该VRF中的各个路由协议重新发布新选出的最优路由。参阅图4,删除路由的具体步骤如下步骤100根据路由的路由区分符(route-distinguish)属性找到存放该路由的VRIB路由表,然后使用标准的radix算法在第一关联关系中找到实际存放待删除路由的节点rt_entry。步骤200如果该路由是当时的最优路由,触发节点rt_entry链表中路由的重新选优,实现路由的备份和切换。如果能够选出新的最优路由,则通过MBGP协议发布新选出的最优路由,否则通知MBGP发布不撤消消息。步骤300依次处理该节点rt_entry下挂第二关联关系的纵向节点rtbit,使用步骤200中的规则,对第三关联关系中的节点rtbit重新选优,实现路由的备份和切换。因为所有可以导入本VRF的路由的节点rtbit都串在这样一根双向链表上(第三关联关系),则可以在VRIB之间选择出最优路由,避免了原来VRIB之间的路由无法相互关联的问题。最后当本VRF中没有路由协议引用该路由时可以将对应的节点rtbit删除,当所有的VRF都不再引用该路由时可以将整个节点rt_entry也一并删除。建立第三关联关系后,能实现上述的四条需求1)节点rtbit组成的链表与原来的节点rt_entry组成的链表都是双向链表,而且通过节点rtbit可以直接获得对应的节点rt_entry,因此对串在一起的诸多节点rtbit按照原有的规则进行选优依然可以得到符合要求的最佳路由。同时所有可以导入VRF的相同目的地路由的引用关系都已经串在一条链表上,因此当其中任何一条路由发生变化时都可以按照原有流程重新选优。这样就满足了第一个需求。2)存放引用关系的数据结构是存放路由关系的数据结构在不同VRF中的映像,一个存放路由关系的数据结构的不同存放引用关系的数据结构之间没有任何关系,所以当一条路由可以导入一个新的VRF后只需要新增一个节点rtbit而已,对已有的节点不会造成任何影响;反之当一条路由不再需要导入某个VRF时,也只需要将该VRF对应的节点rtbit从链表上摘除即可。正是由于节点rtbit结构之间的松耦合使得一条路由可以通过不同的存放引用关系的数据结构任意导入不同的VRF中,而不用考虑该路由的存放路由关系的数据结构实际存放于哪个VRIB中,这样也满足了第二条需求。3)前面提到每个VRF都有一个与之关联的VRIB,其中存放了本地的私网路由。这些私网路由通过第一关联关系中的链表关联起来,向远端PE扩散时也只需要扩散该链表上的路由。而其它VRIB导入本VRF的路由通过第二关联关系中的链表关联起来(当然其中也包括本地私网路由的存放引用关系的数据结构结构),再向本地CE扩散路由时就需要扩散该链表上的路由,这样就将两个方向上的路由扩散通过使用不同的链表区分开来,这样就满足了第三个需求。4)向挂链、拆链以及选优等操作都是由路由管理完成的,与路由协议无关。因此增加这样一个第三关联关系的链表不会影响到路由协议。唯一和路由协议相关的接口是flash流程中通知各个协议重新发布路由时,需要获取原来已经发布过的路由。这个查找过程原来是通过遍历第一关联关系中的链表实现的,现在就需要通过遍历rt_head中active_vrf指针所指向的第三关联关系的双向链表实现。为了减少今后再次扩展带来的影响,可以在路由管理中封装一个函数供各个协议调用。而获取最新的发布路由时,因为协议并不关心该路由是否存在于本VRIB中,因此只需要用指针active_vrf替换指针active即可。由此可见,这个方案对路由协议带来的冲击不大,可以满足第四条需求。由于建立了第三关联关系,其他的一些问题在自然而然的得以解决。例如,(1)原来为了解决CE双归属时转发表项之间的互为备份,在转发模块做了修改。但这样的修改不太合理,因为最优路由有自己的选择准则,有时这个准则还很复杂并有可能出现新的变化,而转发模块对此并不注意,因此由转发模块选择的最优路由可能不满足协议的规定。如果按照这个方案修改后,选择路由的功能由路由管理承担,转发收到的一定是按照某种专责选择后的最优路由,而且转发模块也无须保存多个路由的备份。(2)原来的Maxroute命令只能限制本地路由数目而不能限制远端路由,那是因为加入远端路由时并没有关注在本地是否存在相同目的地的的路由,而是直接加入的。而现在因为所有可以导入某个VRF的路由的存放引用关系的数据结构都串在一个链表上,很容易识别出本地VRF是否已经有这条路由了。若已经存在,则不再受maxroute的限制,如果不存在而当前路由数目又超限了,只是该节点rtbit不挂在链上而已,以后maxroute变大后只需要将节点rtbit重新挂一次即可。所有这些与本地路由的处理策略完全一致。(3)当挂在第一关联关系的链表上的路由的导出路由目标(exportroutetarget)不同时,原有的实现可能会因为某个VRF可以导入的路由不是活动(active)路由而接收不到任何路由。而采用这个方案后无论路由是否在第一关联关系的链表上是否为活动(active)状态,都会将自己的节点rtbit挂到相应的链上,因此也就有资格参与导入VRF的最优路由的选择并有可能最终被选为最优路由,从而使得即使某个路由在第一关联关系上不是最优路由也可以导入到某个VRF中。为了实现上述方法,在以下4个方面做修改1)将路由变化的状态机移植到存放引用关系的数据结构上。现在总共有7种事件Initialize、Preference、Unreachable、Inactive、Active、Bitset和Bitreset。它们对应的事件处理函数为rt_event_XXX(XXX为事件名)。现在每个节点rtbit可以看作路由在特定VRF中的一个拷贝,自然也会经历这些状态的变迁,因此也需要相应的事件处理函数,所以需要将存放路由关系的数据结构上的事件处理函数移植到存放引用关系的数据结构上来。这些事件函数的移植修改不大,基本上就是将原来的存放路由关系的数据结构换成存放引用关系的数据结构即可。2)路由插入、拆离和选优过程的扩展。通用路由平台使用rt_insert函数将节点rt_entry插入头节点rt_head后面的双向路由链表中;用rt_remove函数将节点rt_entyy从链表中拆离下来;使用rt_select_active函数从链表中选择当前最优路由下发转发模块。因为,现在头节点rt_head中也扩展了一个存放引用关系的数据结构的双向链表,而且其功能与原来的第一关联关系的链表完全相同,因此,需要将上述三个函数也移植到存放引用关系的数据结构上来。其内部实现与原来的代码几乎完全一样,只是将原来遍历存放路由关系的数据结构的链表改成遍历存放引用关系的数据结构链表而已。以下为增加的节点rtbit的插入、拆离和选优的函数。3)路由改变过程的修改。在改变路由中可能需要将路由中的一些信息保存保存起来以便在刷新路由之用。现在将存放路由关系的数据结构多实例化扩展后,对存放路由关系的数据结构的修改可能不仅需要将原来的信息保存在自己VRF的头节点rt_head结构中,而且可能需要保存到其他VRF的头节点rt_head结构中中。4)分配存放引用关系的数据结构的扩展。在原来的的实现中,仅仅是分配一个存放引用关系的数据结构并将其串在第一关联关系的链表上。然而现在就有所不同,因为节点rtbit同时还必须串在VRF的第三关联关系的双向链表上。因此,此时必须到所在的VRF中定位是否存在相同目IP的头节点rt_head结构。如果不存在就需要调用rt_table_add函数创建头节点rt_head。但现有技术中,需要检测对应VRF上的maxroute是否超限。如果已经超限,则头节点rt_head不能创建,所以节点rtbit也无法创建,这条路由就不能导入本VRF中。通过这样的方法可以顺理成章地实现maxroute对远端路由的限制。虽然本实施例通过双向链表将已有的存放路由引用关系的数据结构形成第三关联关系,但并不仅限于此,也可用其他数据结构,只要能够将允许导入一个VRF的所有路由关联起来即可。只要实现了这一基本需求,那么MPLS/VPN环境下的分布在多个路由表中的路由问题就转化为公网环境下只存在于一个路由表中的路由问题,也就可以利用原来公网环境下对路由实施的所有流程。权利要求1.一种客户边界设备双归属的实现方法,所述客户边界设备分别与两个服务者边界设备相连,在服务者边界设备上具有多个虚拟转发实例和与每一虚拟转发实例对应的虚拟路由表,以及至少一个远端虚拟路由表,在同一个虚拟路由表中到相同目的地的路由信息形成第一关联关系,且每一路由信息可导入其它虚拟转发实例的所有引用关系形成与该路由相对应的第二关联关系;其特征在于所述方法包括步骤将可以导入同一虚拟转发实例且到相同目的地的所有路由,通过所述的引用关系建立第三关联关系;以及在加入路由信息和删除路由信息而引起路由重新选优时,根据所述第一、第二关联关系和第三关联关系在不同虚拟路由表间进行全局路由选择。2.如权利要求1所述的方法,其特征在于,所述的第一、第二和第三关联关系分别为一双向链表。3.如权利要求1或2所述的方法,其特征在于所述加入路由信息包括步骤A、本地客户者边界设备从远端的客户者边界收到私网路由后,根据协议报文中路由所属的路由区分符在本地寻找相应的远端虚拟路由表,如果找到则进行步骤B,否则以该路由区分符为关键值(KEY)创建一个新的远端虚拟路由表,并继续步骤B;B、新分配一个存放路由的数据结构,并用新收到的路由信息填充;C、将该存放路由的数据结构插入所述远端路由表的第一关联关系中,根据路由选优规则在该虚拟路由表内进行路由选优;D、根据所述路由的导出路由目标(exportroute-tagret)属性,依次匹配本地所有虚拟转发实例的导入路由目标(importroute-tagte)属性,如果能够匹配上,则为虚拟转发实例分配一个存放路由引用关系的数据结构并将其插入到远端路由表的该路由的第二关联关系中;E、以新增路由的目的IP地址和掩码在可以导入的虚拟转发实例对应的虚拟路由表中查找与其相同的第一关联关系的头节点;如果未找到,则在当前虚拟转发实例对应的虚拟路由表中创建一个新的头节点,将步骤D中分配的存放路由引用关系的数据结构插入相应的第三关联关系中,根据路由选优规则在该虚拟路由表间进行路由选优;如果找到,则直接将步骤D中分配的存放路由引用关系的数据结构插入相应的第三关联关系中,根据路由选优规则在该虚拟路由表间进行路由选优。4.如权利要求3所述的方法,其特征在于,如果路由重新选优后最优路由发生变化,则通过相应的协议发布新选出的最优路由。5.如权利要求1或2所述的方法,其特征在于所述删除路由信息包括步骤a、根据待删除路由的路由区分符(route-distinguish)属性找到存放该路由的虚拟路由表,并找到实际存放待删除路由的数据结构;b、判断待删除路由是否为当前的最优路由,如果不是则进行步骤c,否则触发第一关联关系中路由的重新选优,实现路由的备份和切换,继续步骤c;c、依次处理与该路由相对应的第二关联关系,并触发第三关联关系中的节点在不同的虚拟路由表之间重新选优,实现路由的备份和切换。6.如权利要求5所述的方法,其特征在于步骤b中,如果能够选出新的最优路由,则通过相应的协议发布新选出的最优路由,否则通知相应的协议发布撤消消息。7.如权利要求5所述的方法,其特征在于当本虚拟路由转发实例中没有路由协议引用待删除路由时将对应的存放路由引用关系的节点删除;当所有的虚拟路由转发实例都不再引用待删除路由时将存放该路由信息的数据结构删除。8.如权利要求1所述的方法,其特征在于,路由变化的状态机设置在所述第二关联关系中的节点上。9.如权利要求1所述的方法,其特征在于,对第一、第二和第三关联关系中节点的插入、删除机制,以及从这些关联关系中进行路由选优的机制设置在所述第二关联关系中的节点上。全文摘要本发明公开了一种客户边界设备双归属的实现方法,该方法为在服务提供者设备的虚拟路由表中,在原有存放路由信息的数据结构形成的第一关联关系和存放路由引用关系的数据结构形成的第二引用关系的基础上,将可以导入同一虚拟转发实例且到相同目的地的所有路由,通过引用关系的数据结构形成第三关联关系,并在加入路由信息和删除路由信息而引起路由重新选优时,根据所述第一、第二关联关系和第三关联关系在不同虚拟路由表间进行全局路由选择。文档编号H04L12/24GK1581828SQ0315413公开日2005年2月16日申请日期2003年8月12日优先权日2003年8月12日发明者王军申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1