内部bgp下载器的制作方法

文档序号:7870757阅读:256来源:国知局
专利名称:内部bgp下载器的制作方法
技术领域
本申请涉及数据联网,更具体地说涉及在因特网中传播路由信息。
背景技术
分组从其来源到其目的地经过了一系列路由器。所述路由一般不是预定的,而是基于目的地网络地址逐跳(hop-by-hop)选择的。每个路由器处的转发表将目的地地址信息与后面的跳进行关联。因特网路由协议本身要考虑适当地填充这些转发表的内容。
为了进行路由,可考虑将因特网划分成多个自治系统(AS),每个AS是一组处于共同管理控制下的网络和路由器。分组在AS内的路由由在该AS内工作的域内协议或内部网关协议(IGP)解决。存在若干不同的可用IGP,包括OSPF、RIP等等。分组跨越AS边界的路由受控于域间路由协议。当前通行的域间路由协议是BGP,例如在Rekhter,et al.“A BorderGateway Protocl 4 BGP-4”,RFC 1771,Internet Engineering Task Force,March1995中进行了描述,其整体内容通过引用被包含于此。
单个BGP会话涉及两个节点,并涉及通过点到点TCP连接来交换路由信息。例如,一个节点将告知另一个节点例如“特定路由可用于特定网络”或“以前公告(advertise)的路由不再可用”。目的地网络由前缀标识,即目的地网络地址和在将分组地址与该网络地址匹配时使用的位掩码的组合。路由信息的特定单元在这里可称为“路径”。路径标识出1)目的地网络地址(前缀),2)包含所述路径的BGP消息在其通往BGP监听者的途径中遍历的AS的列表,以及3)下一跳地址,即所述BGP监听者的AS内可用来到达目的地网络地址的边界路由器的地址。接收BGP路由更新的节点将使用该信息来更新它们自己的转发表,并进一步传播所述路由更新。接收到同一目的地网络的多个路径的节点通常将挑选一个或多个路径来用于其转发表,并通过BGP传播到其他节点。按照这种方式,与如何跨越AS边界来路由分组有关的信息在因特网上传播开来。
根据路由信息本身的传播是跨越了AS边界还是在AN内部,使用BGP通信的不同变体。使用外部BGP(EBGP)来将路由信息跨越AS边界传播,而使用内部BGP(IBGP)来在AS内传播路由信息。同样,对于两种BGP,路由信息都考虑如何将有效载荷分组路由跨过AS边界。
实际中,AS边界处的边界路由器(BR)将使用EBGP来向其他AS的边界路由器传送路径,并使用IBGP来在它们自己的AS内传播它们获知的路由信息。所传送的消息的结构和类型是高度相似的。但是,EBGP和IBGP对于公告路径有不同的规则。具体地说,通过EBGP而得知路径的边界路由器可通过EBGP或IBGP来公告该路径。但是,通过IBGP得知的路径不能通过IBGP来向另一个节点公告。这样是为了避免路由更新回路。BGP用来避免路由回路的方法是跟踪所跨越的AS边界。这在AS内不起作用,因此不会重新公告通过IBGP得知的信息。
这一规则的结果是,基本IBGP协议依赖于每个边界路由器和AS内部的每个路由器之间的BGP会话的全网格(full mesh)。这种方法存在严重的可扩展性问题。来自每个路由器的TCP连接的数量随着AS内的路由器数量线性增长。另一个缺点是从一个边界路由器到多个内部路由器的多个IBGP连接可能会遍历同一链路,使得相同的信息在该链路上被传播许多次。
由于这些问题,已提出了一些替换方法。一种这样的方法是通过采用路由反射(route reflection)来增加层次结构。AS中的一些节点工作为路由反射器。路由反射器已分配了客户路由器,并将它从非客户路由器听到的路由重新公告给客户路由器,而将从客户路由器听到的路由重新公告给非客户路由器。采用路由反射器解决了“全网格”的可扩展性问题,代价是可能存在路由信息的不一致、附加的收敛延迟和引入了人为失败点。
路由反射器使用IBGP连接来与其客户端通信。路由反射器根据可用选项,只向它们传播用于每个目的地网络的单个路径。路由反射器代表其客户端所进行的选择隐藏了信息,并可能会导致转发回路和路由更新回路。正在做的工作是增加通过IBGP传送多个可行路径的能力,以解决这些问题。
路由反射器还影响传播BGP路由信息通过AS的速度。反射路由器重用常规BGP讲者(speaker)的许多机制,并如下工作1.路由反射器接收来自多个AS BR(或者如果使用了多级反射器层次结构的话则是其他路由反射器)的可行路径。
2.它运行BGP最佳路径算法来计算用于每个目的地网络的获胜路径。
3.它将获胜路径传播给其客户端。
上述过程中的3个步骤可能要花费不定量的时间,这依赖于BGP的实现方式。路由反射器传播路由的总延迟可能会很显著。路由反射器引入的延迟很明显在“全网格”IBGP方案中不存在,因为边界路由器并行地将信息传播到所有其他AS路由器。
路由反射器的另一个问题是它们引入了人为失败点。路由反射器通过AS边界路由器将到远程目的地的路径传送给它的客户端。当路由反射器失败时,客户端就不再接收路径。但是,路由反射器失败并非意味着客户端失去了将数据朝着边界路由器转发的能力。事实上,即使路由反射器以前位于客户端和边界路由器之间的转发路径上,AS运行的IGP也可能会在可替换的内部路径上收敛。因此,路由反射器失败禁用了客户端,尽管网络连接应仍存在。一种部署方案是将网络配置成使得内部路由器总是多个路由反射器的客户端。只要这些服务于客户端的路由反射器之一是可工作的,客户端就会接收BGP信息。缺点是现在客户端必须接收、处理并存储来自所述多个路由反射器中每一个的冗余信息。
一个可替换方法是不实施路由信息的传播层次结构,而是将AS划分成多个“邦联”。然后在每个邦联内使用IBGP,而在邦联之间使用EBGP的变体。邦联的使用引发了与使用路由反射器所引发的类似的问题。
因此需要用于在AS内传播域间路由信息的改进的系统和方法。需要改进来同时提供可扩展性、对处理器和存储器资源的有效使用、转发回路的避免、路由信息跨越AS的一致性、网络收敛的改善的速度等等。

发明内容
本发明的实施例提供了改进的系统和方法,用于在自治系统(AS)内传播域间路由信息。已开发了一种BGP的协议扩展即iBGPd(内部边界网关协议下载器),以在AS内传播BGP域间路由信息时替代IBGP。iBGPd技术使用可靠的多方传输协议来逐跳地传播路由信息。由于避免了使用TCP连接的全网格,因此极大地提高了可扩展性。另外,在路由信息传播延迟和路由稳定性上也存在改进。与使用路由反射器和邦联相关的缺点也被避免了。
本发明的第一方面提供了一种方法,用于从自治系统的边界路由器在该自治系统内传播路由信息。该方法包括建立多方传输协议会话,其中所述边界路由器是会话源,并且存在作为所述自治系统的节点的会话接收者;从所述自治系统之外的节点接收外部边界网关协议(EBGP)路由信息;处理所述EBGP路由信息以发展出内部边界网关协议(IBGP)路由信息;以及通过包括所述接收者在内的传播树,传播所述IBGP路由信息,作为所述多方传输协议会话的一部分。
本发明的第二方面提供了一种方法,用于运行自治系统中的路由器。该方法包括标识朝向多方传输协议会话源的下一跳路由器;向该下一跳路由器发送加入(join)消息,以参与所述多方传输协议;作为所述多方传输协议会话的一部分,从所述下一跳接收边界网关协议(BGP)信息;以及基于所接收的BGP信息,更新路由器信息库(RIB)。
通过参考说明书的其余部分和附图可进一步地理解本发明的本质和优点。


图1根据本发明的一个实施例,示出了向数据库内容应用的逐跳传播和传递。
图2根据本发明的一个实施例,示出了传输层模块和其他路由器软件组件之间的交互。
图3根据本发明的一个实施例,示出了传输层模块的内部结构。
图4根据本发明的一个实施例,示出了应用数据序列号的使用。
图5根据本发明的一个实施例,示出了选择性损失重传输和良序应用数据单元传递。
图6根据本发明的一个实施例,示出了哑应用数据单元的间开。
图7根据本发明的一个实施例,示出了多方传输协议中过境路由器(transit router)的使用。
图8根据本发明的一个实施例,示出了通过过境路由器的隧道穿越。
图9根据本发明的一个实施例,示出了同步重定向。
图10根据本发明的一个实施例,示出了过境路由器参与同步。
图11A示出了根据本发明的一个实施例的网络设备。
图11B示出了可以如何在路由处理器和线路卡之间划分本发明的功能。
图12根据本发明的一个实施例,示出了内部边界网关协议下载器(iBGPd)部署。
图13根据本发明的一个实施例,示出了通过桥接路由器的iBGPd数据流。
图14根据本发明的一个实施例,示出了通过内部路由器的iBGPd数据流。
图15根据本发明的一个实施例,示出了在iBGPd中使用应用数据单元(ADU)。
图16A根据本发明的一个实施例示出了旧ADU的替换。
图16B根据本发明的一个实施例,示出了已撤销的前缀状态的清除。
图17示出了利用全IBGP网格的信息传播。
图18根据本发明的一个实施例,示出了用于存储路由信息的数据结构。
图19示出了采用IBGP路由反射的信息传播。
图20根据本发明的一个实施例,示出了采用iBGPd的信息传播。
图21根据本发明的一个实施例,示出了采用iBGPd在路径之间切换。
图22根据本发明的一个实施例,示出了采用iBGPd来保留失败路径和撤销获胜路径。
图23根据本发明的一个实施例,示出了采用iBGPd来公告失败路径和撤销获胜路径。
图24根据本发明的一个实施例,示出了采用iBGPd的多路径负载共享。
图25根据本发明的一个实施例示出了VPN主干上的iBGPd操作。
具体实施例方式
下面将参考内部边界网关协议下载器(iBGPd)的具体实现方式来描述本发明的实施例。使用iBGPd来将路由信息从自治系统(AS)的边界路由器传播到该AS的内部路由器。与IBGP实现方式相同,传输BGP路由信息来用于由网络地址“前缀”标识出的各个目的地网络。每个前缀由目的地网络地址和掩码表示,所述掩码表明所述地址的多少个最高有效位形成了将被用于匹配的前缀。所传输的路由信息与特定前缀有关。特定的路由信息项可以可用来到达一个前缀的下一跳路由器地址的形式来指定到达该前缀的可用路径,并还可包括一个或多个其他BGP“属性”。属性语法和语义在BGP规范中进行了详细的讨论,这里不再全部提供。路由信息项还可撤销用于特定前缀的路径信息。
iBGPd沿着IGP计算的实际网络拓扑逐跳地传播信息,并可自适应于AS内部的拓扑改变。iBGPd例如可用在两种不同的基本配置中1.希望公告域间前缀的可到达性的边界路由器可使用iBGPd来在AS内传播前缀和它们本身作为出口点之间的映射。在这种配置中,所传播的信息不包含任何与所述路由相关联的BGP属性。AS的边界路由器仍需要通过IBGP连接通信,以交换完整的路由和属性信息,以使得它们可以运行BGP最佳路径算法,并决定将用iBGPd传播的获胜路径。
2.可使用iBGPd来完全取代AS内的IBGP。在这种配置中,边界路由器使用iBGPd来传播完整的路由信息(获胜路由和它们的关联属性)。
为了传播BGP路由信息,iBGPd使用了这里描述的RPF多方可靠传输(RMRT)协议的服务。
在更详细地描述iBGPd应用之前,将描述RMRT操作。
RPF多方可靠传输RMRT向IP网络的节点提供可靠的数据库传播服务。RMRT引用了逆路径转发多方可靠传输(RMRT)。每个RMRT会话建立在源路由器上的单个服务器应用和每一个都在接收路由器上的一组客户端应用之间。所述服务器应用和客户端应用可以是iBGPd应用。
图1示出了根据本发明一个实施例的按照RMRT的逐跳传播和应用传递。在图1中,路由器102是会话源,并将数据库更新传播到在接收者路由器104、106和108处运行的客户端。按照RMRT,源路由器102上的服务器应用提供将以一系列应用数据单元(ADU)传输的数据。服务器应用产生的每个ADU与一个序列号相关联。RMRT构建传输协议数据单元(TPDU),它们是包含一个或多个ADU的分组。TPDU由参与RMRT会话的路由器逐跳传播通过网络。
按照RMRT,在正被描述的实施例中,所有用来传播TPDU通过网络的路由器还参与为RMRT会话中的接收者。另外,当一个参与路由器接收新TPDU时,它将所包含的ADU按顺序传递给本地客户端接收应用。
如图1的简单例子所示,RMRT会话通过传播树来传输信息。每个RMRT参与者(除了源之外)在树上具有一个上游邻居,还可具有一个或多个下游邻居。每个RMRT参与者都可以是用于多个关联的上游端点。但是,每个RMRT接收者只有一个上游路由器。根据本发明的实施例,UDP(或某种其他不可靠的数据报协议)被用来在路由器之间传播TPDU。优选不可靠的数据报协议(与可靠的协议例如TCP相对)是因为RMRT包括它自己的重传输机制,下面将解释。每个RMRT会话参与者可在多个下游接收者之间共享重传输缓冲空间,这是对使用多个TCP连接的一项重大改进。
在稳定状态工作期间,每个非源参与者执行4项基本任务1.接收上游邻居路由器发送的RMRT TPDU分组。
2.从TPDU抽取ADU。
3.将ADU传递给本地应用。
4.构建TPDU并将之传播给树上的下游邻居。
传播树的连接性依赖于逆路径转发(RPF),这是一种通常用于多播路由的技术。希望加入RMRT会话并将其本身连接到所述会话的传播树的路由器依赖于单播路由协议信息来建立到源的连接。假设参与路由器运行本领域公知的单播路由协议例如IS-IS、OSPF或EIGRP。假设参与路由器例如通过预配置而知道会话源的IP地址。RMRT接收者使用单播路由协议信息来获得到源的路径以及该路径上的下一跳路由器。TPDU的转发将发生在该路径上,只不过其方向与单播路由协议所看到的方向相反。这样,作为朝向源的单播下一跳的路由器是RMRT传播树上的前一跳。
确定了朝向源的前一跳后,RMRT接收者接收所有的TPDU,并请求来自该路由器的所有重传输。RMRT接收者对前一跳的确定是动态的,并跟踪了单播路由协议所提供的连接信息中的改变。同一RMRT会话中在不同前一跳之间的切换对ADU接收来说是透明的,因为参与会话的所有RMRT路由器都将ADU维护成在源路由器上初始指定的序列号映射。
TPDU的传输使用了UDP/IP最大努力(best-effort)数据报服务。当接收路由器缺失一个或多个TPDU时,由紧邻的前一跳而非源来提供所有必需的重传输。
在一个实施例中,RMRT使用基于NAK的机制来请求重传输。RMRT不必为了能够重传输ADU数据而缓冲它。相反,它可以依赖于下述驻留应用,所述驻留应用能够在向之提供ADU的序列号时根据需要而再现所述ADU。基于特定于应用的参数,应用本身可决定它为了服务于重传输而愿意维护的ADU序列历史量。如果所述历史量不足以重建所需的重传输分组,则RMRT可选择后退到直接相连的邻居之间的全数据库同步。另外,为了提高效率,RMRT可维护它自己的以前发送的ADU的缓存。
图2根据本发明的一个实施例,示出了RMRT模块202和其他路由器软件组件之间的交互。图2示出了RMRT模块202、应用204、RMRT会话管理器(RSM)206、路由信息库(RIB)208以及运行IGP例如OSPF、IS-IS等等的单播路由协议组件210。还存在与路由器的UDP栈212和TCP栈214的交互。
下面将描述的应用程序接口(API)被用于RMRT模块202和应用204之间的交互。所述API用来交换ADU,并使得RMRT可请求以前传输的ADU以用于重传输和同步。RMRT通过RIB 208来得知到源的路径,而RIB 208由单播协议组件210填充。RSM 206提供控制信道服务来与直接相连的邻居路由器交换会话控制信息,包括加入和剪枝(prune)消息。TPDU本身经由UDP栈212来发送和接收。RSM 206使用TCP栈214来维护控制信道。
图3示出了RMRT模块202的内部结构。RPF邻居跟踪组件302与RIB 208交互以确定朝向RMRT会话源的上游路径上的直接相连节点。当然,RIB先前已由在接收者路由器上运行的单播路由协议填充了。成员资格跟踪组件304处理通过RSM控制信道来自下游直接相连节点的加入和剪枝消息。这一所接收的信息被用来维护下游成员资格数据库,即所接收的TPDU将被转发到的节点。
TPDU接收组件306处理传入数据,并将之传递给应用,同时还处理丢失的TPDU的检测,并通过作出任何必需的重传输请求来进行响应。TPDU传播组件308将所接收的TPDU传播到由成员资格跟踪组件304获得的、作出订阅的下游直接相连邻居。从所接收的ADU信息来重构所传输的TPDU,但是一些实现方式通常可能仅仅是拷贝所接收的TPDU的内容,并重写IP源地址和目的地地址。TPDU传播组件308还响应来自下游邻居的重传输请求。ADU缓存310存储最近接收的ADU,它们将被TPDU传播组件所需要。ADU缓存310可以不是严格必需的,因为可从应用204获得ADU,但ADU缓存310对于缓存特定数量的最近传输的ADU来说是更加优化的。
标识出所述RPF上游邻居后,RMRT模块202继续通知该邻居需要会话数据。RPF邻居跟踪组件302调用RSM 206来上行发送加入控制消息到上游邻居。这一发送使用了RSM控制信道。成员资格跟踪组件304接收来自下游路由器的加入和剪枝消息,并维护TPDU将要传播到的邻居的列表。
RPF邻居跟踪组件302持续监视RIB 208,以总是知道哪个节点是朝向源的单播下一跳邻居(RMRT传播树上的前一跳)。单播路由协议所发现的网络拓扑改变可能会导致朝向会话源的下一跳的改变。当存在这种改变时,RPF邻居跟踪组件302调用RSM 206来发送剪枝消息到旧的单播下一跳邻居,以表明不再需要来自先前的下一跳的会话转发。另外,RPF邻居跟踪组件302调用RSM 206来发送加入消息到新的单播下一跳节点。
将可认识到,对于会话源,ADU只是从应用获得的,并不传递给该应用。另外,会话源并不选择上游邻居,而是像任何其他会话参与者那样跟踪下游成员资格。
对于所有从会话源传播到参与接收者的ADU,使用一致的序列号空间。在会话源,服务器应用产生的每个ADU被所述应用或RMRT分配一个新的序列号。序列号和ADU之间的映射被包含在所构建的TPDU分组中,并被传送通过会话接收者。当接收路由器将ADU传递给驻留的客户端应用时,也传送相关联的序列号。接收应用维护这一映射来辅助RMRT的运行。传递ADU到客户端应用后,RMRT模块可通过指定ADU的序列号来请求回该ADU以用于重传输。
ADU序列号是从有限空间中分配的,该空间在RMRT会话的生命期中可能会耗尽。RMRT通过允许序列空间重卷(wrap)来处理耗尽的可能性。
为了避免重卷后共享相同序列号的多个ADU之间的歧义,远在重用序列号之前就解除ADU和序列号之间的关联。这一关联解除发生在当向新的ADU分配从旧的ADU起,跨越序列空间半程的序列号时的最接近处。
图4根据本发明的一个实施例,示出了序列号的关联解除处理。黑点表示ADU。旋转圆表示序列号空间。平直线(圆外)上的ADU表示旧ADU,不再对这些ADU维护序列号关联。一旦分配了圆顶部的序列号,圆底部的ADU的序列号就退休。按照这种方式,确保了单个序列号在任何时刻只表示单个ADU。这一关联解除处理的发生跨越参与RMRT会话的所有路由器。
ADU跨越参与会话的所有路由器的一致的序列号标定使得RMRT组件避免了不必要的ADU缓冲。一旦将ADU传递给本地应用,RMRT就可以通过该应用提供的API,使用ADU序列号作为键值来检索它。因此,为了支持TPDU传播和重传输,可以从应用数据库获得所有的ADU。
不像TCP,由于UDP不包括可靠性机制,因此RMRT规定了在UDP上面建立可靠性机制。图5示出了根据本发明的一个实施例的重传输。TPDU接收组件306跟踪所接收的ADU序列号。任何缺失的序列号都被标记为丢失,并引发到上游邻居的重传输请求。TPDU接收组件306通过发送封装在UDP数据报内的否定性确认(NAK)来请求重传输。
当下一个TPDU分组被正确地接收,并注意到所接收的ADU序列号中的间距时,检测到缺失的ADU。这是通过将最近的TPDU中的起始ADU序列号与最近正确接收的ADU序列号进行比较来实现的。
每个NAK分组包括缺失的ADU序列号范围的列表。接收到NAK后,上游邻居中止当前ADU传播,优先进行缺失ADU的重传输。可构建新的TPDU来用于重传输。所述ADU可来自ADU缓存310,或者可向所述应用来请求它们。当已重传输所有的缺失ADU时,从当前ADU的停止点处恢复当前ADU的传输。
为了提高静止期间丢失检测的速度,发送哑TPDU。哑TPDU不包含实际的ADU数据,只传送最后发送的ADU序列号,以使得接收者可意识到它们已经错过了一个或多个先前的ADU。
图6根据本发明的一个实施例,示出了静止期间开始后哑ADU的传输间开。当静止期间继续时,传输速率随时间指数下降。常规地传输正常TPDU期间不发送哑TPDU。每个传输路由器独立地控制哑TPDU的传输速率。
一些实施例还可包括低频周期性肯定性确认机制。从下游路由器接收到NAK可用来推导出在其之前下游当前已收到所有ADU的最早序列号。但是,当所有ADU都被正确接收时,不发出NAK。使用肯定性确认可以使得会话参与者安全地从其缓存丢弃已知正确接收的ADU。
另外,当接收到表明静止期间前最后发送的ADU被正确接收的肯定性确认时,不再需要进行哑TPDU发送。因此,肯定性确认(ACK)可由每个会话成员以可配置的频率向其上游邻居发送。每个ACK包含下述第一个ADU的ADU序列号,直到所述ADU之前的所有会话ADU都已被正确接收。只是在存在来自上游邻居的TPDU活动,并且未发出NAK时才进行周期性ACK的发送。
可以让接收者RMRT会话错过这样的ADU,其中不能通过指定其序列号来请求所述ADU的重传输。所述ADU要么已解除与其序列号的关联,要么已从上游路由器数据库中删除。例如,这可能发生在两种情形中1.当新接收者加入会话,并且会话已活动了足够长的时间以致可能已经存在没有关联序列号的ADU时。
2.如果网络在会话期间被分开,则从源断开连接的接收者不再能接收ADU。如果这一分开持续得足够长,以致将耗尽一半的序列库,则将解除缺失的ADU的序列号关联。
本发明的实施例规定了RMRT数据库同步过程,以使这两种情形中的接收者与会话保持一样的新。所述同步过程由上游路由器调用,这发生在当该上游路由器接收到来自下游路由器的重传输请求时,其中,由于所请求的ADU与它们的序列号的关联解除,所述上游路由器不能服务于所述下游路由器。同步期间,进行完全的应用数据库传输,而不干扰常规的ADU传播。
同步过程依赖于RMRT组件和本地应用之间的协作。同步是通过传输会话ADU数据库的完整内容来实现的。该数据库包括所有不再与序列号相关联,但是仍被需要来重建应用数据库的当前全局状态的ADU。这些ADU仍被所述应用良序存储着,尽管没有了它们的序列号。该数据库还包括仍具有序列号关联,并因此由所述RMRT组件或应用与其关联序列号一起存储的ADU。同步后,恢复中的路由器将具有由会话源在会话生命期中曾发起的所有ADU。这些ADU按照它们最初被产生的顺序,被传送并传递给本地应用和恢复中的路由器。在ADU数据之外,现有的ADU序列号关联也被传输,以使得恢复中的路由器可以成为完全的会话参与者。
同步期间,所述应用被配置来在RMRT模块的指示下,在其本身的控制下发送所述数据库内容。为了辅助这一控制,RMRT模块和应用之间的应用编程接口(API)包括两个特殊的上行调用(up-call)。一个上行调用启动遍及该数据库的漫游。所述漫游由一个句柄标识,以在由于对不同下游客户端同时发生同步会话而可能并行发生的多个漫游之间进行区分。一旦建立了漫游,就调用另一个上行调用来从该应用的数据库获得下一个ADU。每次调用这一调用时,所述应用都按照会话源最初产生的顺序来提供下一个ADU。对于在应用数据库中仍具有序列号关联的ADU,还将该序列号提供给RMRT。
还可以提供一些上行调用来辅助同一漫游内的回卷(rewinding)和快速前进(fast forwarding)。对回卷和快速前进的支持使得RMRT组件可以避免缓冲在漫游期间获得的ADU数据,直到它确定所述数据已经被正确接收并被传递给接收同步的下游路由器上的应用为止。
在接收同步的路由器处,ADU的处理非常类似于正常会话参与期间的处理。本质上唯一的差别在于在同步会话的早期部分,传递给应用的ADU将不与序列号关联。当同步过程进入仍有序列号与ADU关联的上游路由器的数据库部分时,序列号将变为可用。多种技术可用来在同步过程期间实际传输数据库内容。例如,如果上述回卷前进上行调用可用,则可使用两个路由器之间的专用RMRT会话来传输数据。这最小化了在支持同步的上游路由器上传输缓冲额外开销的需求。如果没有回卷能力,则可使用TCP连接。
希望与RMRT结合使用流控制和拥塞控制。在一个实施例中,RMRT采用数据报拥塞控制协议(DCCP),该协议在Kohler,et al.,“DatagramCongestion Control Protocol”,IETF Internet Draft,March 2003中进行了描述,其内容通过引用而被整体包含于此,用于各种目的。DCCP是一种轻量级协议,其向不需要可靠性,或不提供本身的可靠性机制的应用提供拥塞控制和流控制。RMRT可采用DCCP而不是UDP。DCCP建立双向的信息流。逆路径(从下游到上游)可由RMRT组件用来传送否定性确认。另外,有利的是DCCP具有最小的头部和协议状态额外开销。
ADU缓存310可被利用来在流控制或拥塞控制需要时,适应相同ADU的多次传输。为此以及为了重传输而使用ADU缓存310是相当有效的,因为该缓存在所有下游接收者之间共享。缓存大小依赖于对所述应用的请求的影响而可配置。
RMRT向所述应用提供下述调用·RMRT_ADU_notify(new_ADU_count),其由源路由器上的服务器应用用来向RMRT组件通知新可用的ADU。RMRT可返回将被分配给第一个ADU的序列号,或者该应用本身可提供它。
应用向RMRT提供下述上行调用·app_ADU_request(sequence_no)由RMRT用来向应用请求特定的ADU。应用返回ADU,或者如果所请求的ADU序列号不在应用所维护的历史中,则返回错误。
·app_ADU_receive(ADU,sequence_no)由作为会话接收者的路由器上的RMRT用来将正确接收的ADU传递给客户端应用。
·app_sync_parent_init()由RMRT用来通知应用,表明它正在启动与下游邻居的新的同步过程。应用返回返回一个句柄,RMRT对与该同步过程相关的所有后续调用都应使用该句柄。
·app_sync_parent_done(sync_handle)由RMRT用来通知应用,表明同步过程已结束,并且它可以丢弃任何关联状态。
·app_sync_parent_ADU_next(sync_handle)由RMRT在数据库同步过程期间用来获得应用数据库中的下一个ADU。应用返回ADU,如果该ADU与一个序列号关联的话,则还返回该ADU的序列号。如果同步过程到达了数据库的末尾,则不返回ADU。
·app_sync_parent_ADU_rewind(sync_handle,ADU_count)由RMRT在数据库同步过程期间指示应用,表明需要根据多个ADU的漫游中的回卷。
·app_sync_parent_ADU_fwd(sync_handle,ADU_count)由RMRT在数据库同步过程期间指示应用,表明需要根据多个ADU的漫游中的前向跳转(forward jump)。
·app_sync_child_reset()由RMRT用来通知应用,表明它将要接收数据库同步。
·app_sync_child_done(history_base)由RMRT用来通知应用同步过程完成,并且提供在其之后没有发生关联解除的ADU序列号。
RMRT会话管理器(RSM)206负责协调属于同一应用的一组RMRT会话(一个或多个)。从网络中使用RMRT的特定路由器的角度看,驻留应用可以是多个会话的发起者,以及多个远程发起的会话的成员。不同路由器上的应用发起会话的能力提供了对通过RMRT的多路通信的支持。单个路由器中的应用发起多个RMRT会话的能力提供了对具有不同等级的信息的通信的支持。协调属于同一应用的会话具有两个优点1.协调使得可更有效地使用路由器和网络资源。具体地说
a.RMRT讲者需要与它直接相连的邻居交换会话控制信息。这一交换中使用了基于TCP的RSM可靠控制连接。属于同一应用的不同RMRT会话的控制消息共享每一对直接相连的参与路由器之间的RSM连接。
b.应用可使用大量RMRT会话来对具有不同接收者成员资格的信息分级。当接收路由器正在通过同一RPF邻居加入两个或更多会话时,用来携带TPDU的UDP分组可用来复用属于不同会话的TPDU。
c.与TPDU复用类似,相邻路由器可将属于不同会话的NAK捆绑在同一UDP分组中。事实上,一对邻居之间朝向相反方向的会话的TPDU和NAK可被组合在同一分组中。
d.当路由器重新启动或从网络故障恢复时,它可能需要同步它的应用数据库的内容。在具有许多RMRT会话的应用中,可能会通过同一RPF邻居获得多于一个的同步会话。正如同通过RSM控制连接来实现共享,可在两个路由器之间建立单个同步TCP连接,以传输属于多个同步会话的数据。
2.协调多个会话可实现动态网络配置a.RSM提供了一种hello协议,其可实现直接相连邻居的自动发现。应用可选择手动指定有效邻居的列表,或通过RSM来发现它们。
b.RSM可由发起会话的路由器用来向潜在接收者公告该会话的存在。将有关会话的知识泛滥到所有潜在接收者,这些潜在接收者然后可决定是否加入。发起会话的路由器可与会话公告一起传播特定于应用的会话描述。会话描述可由潜在接收者用来确定它们是否有兴趣接收该会话。
每个使用RSM和RMRT的应用都应选择公知的RSM TCP控制端口以及公知的TPDU UDP目的地端口。所述TCP和UDP端口用来在使用RMRT的不同应用之间解复用,并使得运行相同应用的相邻路由器可在它们之间进行对话。
使用多个RMRT会话的应用应能对它们寻址。RSM和RMRT使用由两项信息构成的公共会话标识机制1.发起会话的路由器的IP地址。
2.发起会话的路由器上的驻留应用分配的会话ID。该ID用来将该会话与同一路由器上的应用发起的其他会话区分开来。
RMRT被设计成将数据库在路由器网络中可靠地传播,每个所述路由器都参与为会话接收者。但是,根据本发明的实施例,RMRT可被扩展来允许不希望接收会话数据的路由器仍可通过作为过境路由器来支持在该网络中实现RMRT。
RMRT过境路由器具有的软件组件结构类似于上面已经示出并描述的结构,但是与RMRT会话参与者相比存在一些差别·由于过境路由器不是常规会话成员,因此它只在一个全下游参与者通过它来加入时才参与会话。当没有下游成员需要会话数据转发时,过境路由器不加入。
·在RMRT过境路由器中,驻留程序对ADU数据不感兴趣。因此,所接收的ADU不会被传递给该应用,因此也不过通过它来重新获得所述ADU。
·RMRT过境路由器依赖于它的本地缓存来存储需要向下游传播的ADU。任何需要但不存在于缓存中的ADU都需要向上游路由器请求。
·RMRT过境路由器不执行同步双亲的服务,因为它不存储完整的会话数据库。因此它将需要同步的下游路由器重定向为从更上游的完全参与者来获得该同步。
图7示出了涉及过境路由器的使用的简单情形。存在会话源702、接收者704、过境路由器706以及两个附加接收者708和710。
下面的事件序列会发生1.接收者704与源702相邻并直接加入它,而接收者708和710向RMRT过境路由器706发送会话的加入。
2.过境路由器706意识到它应该转发所述会话,并将所述加入通过接收者704而朝向源发送。
3.接收者704如同会接受常规成员的加入那样接受来自过境路由器706的加入,并开始转发TPDU。
4.过境路由器706传播TPDU,并可能将所包含的ADU存储在它自己的缓存中。
5.接收到第一个TPDU后,接收者708和710注意到它们错过了在它们加入会话前发起的早先的会话ADU。因此它们发送NAK到过境路由器706,表明它需要重传输的ADU。
6.过境路由器706本地没有存储所请求的ADU,因为驻留应用未在接收数据。因此它记录来自每个下游接收者的缺失的ADU的范围,并发送NAK到接收者704来请求所述ADU。
7.接收者704从它的本地应用数据库再现所述ADU,并在TPDU中将它们发送给过境路由器706。
8.过境路由器706将所述ADU传播给接收者708和710。
接收者708和710现在已加入了进来,并继续正常地参与会话。如下处理TPDU丢失1.接收者708遇到了TPDU丢失。当下一个TPDU到来时,它意识到存在缺失的ADU,并发出NAK到过境路由器706。
2.过境路由器706接收到NAK,由于它最近传播了ADU,因此所述ADU也存储在本地RMRT缓存中。过境路由器使用所缓存的ADU来创建TPDU,并发送到接收者708。
上述例子示出了过境路由器如何对它的上游邻居以及下游成员表现的如同常规参与者一样。事实上,任何数量的RMRT过境路由器和常规参与者可以任何顺序混合在RMRT会话源和接收者之间。对于RPF邻居改变来说也不需要任何特殊的处理。当过境路由器本身改变了它从其处接收会话的邻居时,以及当过境路由器的下游参与者转而通过一个过境路由器加入或离开该过境路由器时都是如此。
对于存储在过境路由器的RMRT缓存中的数据量的控制是在过境路由器本身和网络上的存储器资源,以及过境路由器和它的上游邻居之间的处理资源二者之间的折中。让下游成员请求过境路由器的缓存中不存在的ADU的代价是过境路由器必需与它的上游邻居通信以获得该ADU。
在过境路由器处接收NAK和上述周期性ACK(肯定性确认)可有助于减小本地ADU缓存大小。当过境路由器通过NAK和周期性ACK确认它所有的下游成员都已接收到特定ADU之前的所有ADU时,它在自己的周期性上游ACK中公告该ADU序列号。
在刚刚描述的例子中,过境路由器具有通过它而连接到会话的多个下游会话参与者。使得过境路由器接收TPDU分组并为下游成员而复制它们,而且处理来自下游的NAK,这样可改进传播的可扩展性。但是,如果在RMRT会话中,过境路由器具有通过它而加入的单个下游成员,则在通信中涉及过境路由器仅仅是引入了额外开销。
当只有单个下游成员通过过境路由器加入会话时,过境路由器可以指示它的上游邻居发送TPDU到该下游加入者,而没有涉及任何过境路由器的传输层动作。这一情形示出在图8中。
在图8中,存在源802、两个过境路由器804和806以及两个接收者808和810。过境路由器806只有一个路由器810是通过它而加入的。与此相对比,过境路由器804有接收者808和过境路由器806是通过它而加入的。因此使得过境路由器804接收并转发会话数据是有利的。对于过境路由器806,简单地隧道穿越它是有利的。隧道穿越在加入过程中启动,并自适应于成员资格和网络改变。
考虑下述场景,其开始于图8的示例性网络中两个接收者之一加入会话之前1.接收者808通过过境路由器804加入会话。此时接收者810尚未加入会话。
2.过境路由器804确定由于接收者808是唯一通过它加入的成员,因此TPDU应该隧道穿越它。它联系它的RPF上游邻居(源802)以加入会话。在加入时,它指定了TPDU应该直接发送(即不涉及过境路由器804的传输层动作)到接收者808。
3.源802确认所述加入,并通知过境路由器804,表明TPDU将由它自己发起(即不会从更上游发起,并且仅仅是隧道穿越过境路由器804的上游邻居)。
4.过境路由器804确认接收者808的加入,并通知它说TPDU将由源而不是过境路由器804发送。
接收者808现在加入了会话,并直接从源802接收TPDU。来自接收者808的NAK也直接发送到源802。这一通信中过境路由器804的涉及仅仅是像任何其他普通数据分组那样转发TPDU和NAK。
现在,接收者810启动并决定加入会话。步骤如下1.接收者810发送加入到过境路由器806。
2.过境路由器806确定接收者810是通过它加入的唯一成员,并决定隧道传送TPDU和NAK。它通过过境路由器804加入会话,指示它将TPDU直接发送到接收者810。
3.过境路由器804接收到过境路由器806的加入,现在确定存在两个通过它的下游加入者(接收者808和过境路由器806)。因此它决定开始执行用于该会话的RMRT过境路由器的功能。
a.过境路由器804指示源802,表明TPDU将不再发送到接收者808,而是发送到过境路由器804本身。
b.过境路由器804指示源802,表明它不再直接从源802接收TPDU,而是从过境路由器804本身接收TPDUc.过境路由器804响应过境路由器806的加入,指定TPDU将由过境路由器804发送。
4.过境路由器806接收加入确认,并通知接收者810,表明它将从过境路由器804接收TPDU。
此时,会话转发到达了图8所示的状态。过境路由器804作为过境路由器参与到会话中,因为它有多于一个的下游参与者。会话通过过境路由器806在过境路由器804和接收者810之间隧道传送,因为过境路由器806只有单个下游成员。
或者,过境路由器决定何时隧道传送数据穿越它,以及何时参与会话的下游成员的阈值数量可被设置为大于1。过境路由器可指示它的上游邻居隧道穿越到多个下游成员。
过境路由器的路由器下游可向过境路由器请求下述ADU的重传输,所述ADU在完全参与会话的上游路由器的应用数据库中不再与序列号相关联。当过境路由器尝试从上游恢复这些ADU时,它将会被通知说需要RMRT同步过程。但是,工作为错过了所述ADU的路由器的上游邻居的RMRT过境路由器不能是同步双亲,也不能提供完整的会话数据库。因此,过境路由器将下游路由器重定向为从朝向会话源的路径上第一个完全参与的路由器获得同步。
图9示出了在图7的过境路由器场景中同步重定向是如何运行的。采用来启动同步过程的步骤如下1.接收者710重新启动,具有空应用数据库。它发送NAK到过境路由器706,请求会话中迄今为止的所有ADU。
2.过境路由器706在它的缓存中只有最近的ADU。因此它将所述NAK上游传播到接收者704,表明需要所有ADU。
3.接收者704接收所述NAK,但是由于会话已经存在了很长时间,因此它的数据库中存在不再有序列号关联的ADU。因此它通过RSM控制连接来指示过境路由器706,表明它愿意提供同步服务。
4.过境路由器706接收来自接收者704的同步要约,并将它继续转发到接收者710。
5.接收者710直接联系接收者704,并同步它的数据库。
除了所述重定向步骤之外,接收者704和接收者710之间的同步连接建立以及信息传输保持为与它们好像直接相连一样。
如果网络被分割然后合拢,则需要同步的下游成员的过境路由器的重定向可能会变得相当低效。这一低效可通过允许过境路由器主动参与同步过程来消除。
这一场景参考图10进行了图示。在图10中,存在源1002、3个过境路由器1004、1006和1008以及6个接收者1010、1012、1014、1016、1018和1020。例如考虑源1002和过境路由器1004之间的链路的长期失败的影响。当连接恢复时,如果该链路出现故障已有足够长的时间,则所有6个接收者都需要被同步。过境路由器1004、1006和1008的正常行为都将是重定向所有的接收者来从上游成员获得同步。这将使得所有恢复中的接收者从源1002进行同步。缺点是1.源路由器1002现在发起了6个同步会话。这需要相当的处理和存储器资源。
2.源1002和所述接收者之间的链路将必需多次传送同步数据。具体地说,源1002和过境路由器1004之间的链路上的网络带宽将被浪费,因为相同的数据将传送6次。
本发明的实施例提供了一种解决方案,其允许具有多个下游同步请求者的过境路由器主动转发同步会话。过境路由器可通过简单地终止来自多个下游成员的请求,并发起它自己的上游请求来转发同步会话。当建立用于同步的TCP连接时,过境路由器仅仅是将它在上游连接中接收的数据拷贝到所有的下游连接。
在图10的网络中,过境路由器1006和1008都会接收来自下游接收者的3个同步请求。过境路由器1006和1008不是将这些请求上游转发到过境路由器1004,而是可以终止这些请求,并发起它们自己的到过境路由器1004的请求。由于过境路由器1004现在只接收两个同步请求(来自过境路由器1006和1008),因此它可以决定它不值得参与,并只是将它们上游转发到源。现在,源1002只有两个下游同步接收者,而过境路由器1006和1008每一个都具有3个同步接收者,获得了更具可扩展性的方案。
上述方案的一个考虑是需要同步的各个接收路由器可能在时间上错开它们的请求。例如,来自接收者1012的请求到达过境路由器1006的时间可能比来自过境路由器1010的请求晚一秒钟的若干分之一。一种方案是延迟同步请求通过过境路由器的传播。但是,在具有多个过境级别的网络中,所述延迟将会积累,影响了恢复时间。
优选的方案是允许先前已经向上游转发了同步请求的过境路由器中断已转发的会话,并通过它自己重新启动该会话,以使得所重启的会话可被共享。在中断已转发的会话之前,优选地调查该会话的状态,以使得不会中断已前进到通过预定点的会话。
iBGPd会话对于每个希望成为AS出口路由器,并向该AS外转发流量的边界路由器,建立单个RMRT会话。RMRT会话的应用204是iBGPd,因此该会话可被看作为iBGPd会话。边界路由器上的iBGPd应用工作为RMRT服务器应用,并向该AS注入与它希望为之作为AS出口路由器的前缀有关的信息(吸取流量)。所有其他AS路由器作为接收者从该边界路由器参与RMRT会话。iBGPd通过RMRT存储和传送的信息由一组前缀以及可能的话还有它们的关联属性(依赖于使用模式)构成。iBGPd使用的RMRT ADU被定义为与特定域间前缀有关的信息。只要AS边界路由器希望更新前缀信息,它就使用它的RMRT会话中下一个可用的ADU序列号来产生包含新前缀状态的ADU。当下述情形之一发生时,需要传送与前缀有关的信息1.新前缀刚刚变得通过边界路由器可到达,应该公告该可到达性。
2.以前可到达的前缀不再由这一边界路由器服务,应撤销已公告的可到达性信息。
3.如果属性也与前缀一起传播,并且前缀的属性改变了,则应传播被更新的信息。
在包含前缀标识信息的RMRT ADU之外,iBGPd还在每个会话内使用多个控制ADU·会话参数公告ADU。这是每个会话中的第一个ADU,用来设置会话的BGP上下文。包含在这一ADU中的信息可包括该会话中的前缀的地址家族或VPN参数。
·描述多个已公告的前缀之间共用的属性集合的路径属性ADU。这一ADU类型使得可改进在RMRT会话中打包(pack)BGP前缀属性。所得到的RMRT TPDU分组中的数据量应等同于通过IBGP连接传送的数据。
在常规iBGPd会话中使用上述ADU的顺序如下所述。会话中的第一个ADU是会话参数公告ADU。所有接下来的ADU是路径属性ADU或前缀标识ADU。
路径属性ADU和前缀标识ADU用来编码边界路由器通过会话传播的路径信息。一般地,路径属性ADU生成之后是一个或多个前缀标识ADU。路径属性ADU包含在后跟的前缀标识ADU中标识出的所有前缀共有的BGP属性信息。
图15示出了根据本发明的一个实施例的ADU使用。图15示出了iBGPd会话的一部分,在此期间正在传送4个前缀(C、D、E和F)的信息。所述4个路径并不都共享相同的属性。路径C和D共享属性集I。路径E和F共享属性集II。图15底部标号的框表示iBGPd会话ADU和它们的序列号。对于每个已传送的前缀,产生不同的ADU来标识它。在前缀标识ADU之外,还存在单个已产生的路径属性ADU(ADU6)。路径属性ADU用来通知会话接收者,表明对应于后跟的前缀(ADU7和8中的E和F)的属性与先前已传送的前缀的属性不同。图15未示出会话中早先产生来传送前缀C和D的属性集I的路径属性ADU。
图12根据本发明的一个实施例,示出了AS内的简化iBGPd实现方式。存在3个边界路由器1202、1204和1206以及单个内部路由器1208。3个边界路由器中每个都作为会话的源。内部路由器1208接收来自3个边界路由器的所有会话。每个边界路由器接收来自另外两个边界路由器的会话。发起iBGPd会话的每个边界路由器通过它传播外部目的地的可到达性信息。
在共同参与RMRT会话之外,iBGPd不使用边界路由器和内部路由器之间的直接对等(peering)关系。参与RMRT会话的每个路由器都只负责传播会话信息到它直接相连的下游邻居。这一模型将路由器需要做的工作量限制在邻居成员资格的大小,而不是AS网络的大小。因此,iBGPd具有精细调节的层次结构状路由反射器部署的可扩展性属性,而没有手动配置的额外开销。
利用RMRT,每个路由器通过单个邻接路由器接收会话数据。选择来提供会话数据的路由器是朝向发起会话的边界路由器的RPF邻居。因此,每个iBGPd接收者都只需要接收、处理并存储边界路由器发起的路由信息的单个拷贝。这是相对于路由反射器的一个重大改进,在路由反射器中,每个客户端都需要接收多个输入以获得鲁棒性。
iBGPd适应失败的能力仅受限于AS网络的冗余度。只要存在使IGP在作为会话源的边界路由器和内部接收者之间进行路由的路径,RMRT就会确保会话信息被接收。只有在作为会话源的边界路由器失败,或者接收者从包含边界路由器的网络分开时,会话接收才会停止。在这两种情形中,通过边界路由器从接收路由器进行IP路由都是不可能的,边界路由器发起的会话的路由信息无论如何都是无用的。
路由信息传播通过AS的速度也被iBGPd提高了。接收会话的内部路由器传播信息时可以不必等待它的BGP组件消化该信息。RMRT对所接收的TPDU分组使用本地缓存,并使用该缓存来将会话数据传播到下游路由器。这一透明的传播消除了使用路由反射器时存在的BGP组件延迟,因此提高了内部网络收敛的速度。传播路由信息的暂态传输存储器需求被保持为低,因为RMRT使用共享的缓存来传播会话数据到所有的下游接收者。
图13根据本发明的一个实施例,示出了边界路由器内iBGPd的使用。BGP组件1302与AS之外的代表性对等者1304交互。虽然只示出了一个对等者,但是BGP组件1302可具有与多个对等者的EBGP会话。BGP组件1302还通过RMRT接收者组件1306作为接收者参与多个RMRT会话。所述边界路由器也通过使用RMRT发送者组件1308而作为它自己的RMRT会话的源。
在BGP组件1302内,数据流在许多方面类似于典型的BGP实现方式的数据流。来自外部对等者1302的路由更新存储在RIB-in 1310中。输入策略组件1312根据操作性管理策略来选择并修改导入的路由信息,结果存储在RIB-in-p 1314中。从其他边界路由器作为源的RMRT会话接收的路由更新分别被馈送到RIB-in 1316和1318中。最佳路径选择模块1320根据BGP实践,从包含在所有RIB-in中的路由中挑选获胜路由。所得到的挑选存储在RIB-loc 1322中。RIB-loc 1322的所有内容被注入到本地RIB和转发表(FIB)中,以供本地IP转发所用。
通过(多个)EBGP连接而发现的外部路径被置于RIB-out 1324中,以注入到本地作为源的RMRT会话。每次有先前选择并公告的外部路径在最佳路径选择中失败时,都从RIB-out 1324中撤销它。所述撤销需要使用新RMRT ADU来通过iBGPd进行公告。因此,代表所述撤销的状态需要维护在RIB-out 1324中。而且,当两个或更多外部路径被选择为获胜路径(EBGP多路径场景)时,它们需要在通过RMRT公告前被合并为单个路径。或者,可将多路径公告能力包含到iBGPd中,以允许在同一会话中每个前缀有多个路径。
注意,通过RMRT模块1306接收的路径不能结束在RIB-out 1324中,因为它们不是通过外部对等者发现的。但是,它们可以通过击败以前选择的外部路径,并迫使从RIB-loc 1322中清除该外部路径来影响RIB-out 1324的内容。源自于不同于外部对等者1304的外部AS的所有路径都由输出策略模块1326在存储于RIB-out-p 1328中并传输到外部对等者1304之前所处理。
图14根据本发明的一个实施例,示出了通过运行iBGPd的内部AS路由器1208的数据流。BGP组件1402相对于在边界路由器中可看到的组件被简化了。内部路由器1208具有3个iBGPd会话,因此有3个RMRT会话1404、1406和1408,分别用于每个边界路由器。3个会话中的每一个都具有关联的RIB-in 1410。RIB-in 1410形成到最佳路径选择模块1412的输入。获胜路径存储在RIB-loc 1414中,并馈送到本地RIB和FIB。由于没有EBGP连接,因此内部路由器1208不作为iBGPd或RMRT会话的源。
iBGPd数据库结合图13-14参考的各个RIB可存储成一致的树结构。图18根据本发明的一个实施例,示出了这种一致的数据库的一部分。该树的每个条目或“叶子”对应于由地址/掩码标识的特定前缀。为了辅助最长匹配查找,树的安排使得最接近树根的前缀具有较高的掩码值,因此包括了宽地址范围,而具有较低掩码值的前缀在树中更深。从“双亲”前缀悬下的“孩子”前缀与双亲所匹配的地址范围的子集相匹配。
对之存在BGP路由信息的每个前缀都标注了一系列安排成链表的路径Px。每个路径具有关联属性指针Ax,指向属性集。将指针结构用于属性集是为了获得存储效率,因为许多属性在多个路径之间是共有的。还有一些标注(未示出)用来表明路径属于图13-14中的各个RIB中的哪个或哪些RIB。
为了适应iBGPd的运行,属于给定iBGPd会话的路径也被按照会话源产生的顺序链接到一起。图18中为路径P3、P6和P8示出了这种链接的例子。在会话源,对发起的会话存在一个链表。在任何会话接收者处,对每个所接收的会话存在链表。这种链接辅助对来自RMRT的ADU请求的服务。该链接有效地支持下述操作·插入具有最新的ADU序列号的新前缀状态。
·删除其路径已被撤销或修改的前缀。注意,在删除和修改的情形中,在会话中都发出包含该前缀的当前状态的新ADU。因此,本质上该前缀将被与它的新ADU序列号重新插入iBGPd会话RIB中。如果不再有可用的路径,则新状态仅仅存储前缀已被撤销这一事实。
·通过ADU序列号查找最近添加的路径。这一操作支持RMRT重传输机制。虽然RMRT一般维护ADU缓存,但是并不确保会保留可能被下游路由器重新请求的所有ADU。在此情形下,从驻留客户端应用获得ADU。
·遍历按ADU序列号排序的整个iBGPd会话RIB。需要遍历来支持RMRT数据库同步过程。
为了支持这些任务,路径被标记以RMRT ADU序列号。整体RIB数据结构从而是双链表。
RMRT中的通信可靠性机制依赖于应用(iBGPd)来维护完整的ADU状态。RMRT可能不完全缓冲所传输的数据,只要需要重传输,它就可使用下游邻居缺失的ADU的序列号来要求本地应用再现所关联的数据。在iBGPd中保持完整的ADU历史意味着在会话RIB中存储会话生命期中已被传送的前缀的所有状态。幸运的是,所传送的BGP信息的语义实现了一种优化,使得iBGPd对每个前缀只存储最近选择的路径。
iBGPd的语义对在会话期间传送的信息指定了以下规则。在iBGPd会话中接收的包含特定BGP前缀的信息的ADU替换以前从同一会话源接收的用于同一前缀的任何数据。这意味着如果会话中的两个ADU提供了用于相同前缀的可到达性和路径属性信息,则所述两个ADU中最新的那个ADU中的信息就足以提供完整的当前状态。因此,较早的ADU变得过时了,不再需要存储。如果路由器甚至需要重传输不再存储的ADU,则iBGPd可安全地用哑数据来替换其内容。
例如,假设边界路由器正在公告与3个前缀A、B和C有关的信息,如图16A所示。最初对每个前缀产生一个ADU,但是与前缀B有关的路径信息改变了,因此产生第四ADU来更新接收会话的路由器上的iBGPd客户端。现在,只成功接收ADU1的下游路由器向上请求重传输ADU2。如果提供已重传输的数据的路由器用哑数据来替换ADU2,并且正确地在ADU3和4中提供了该信息,则请求重传输的客户端已接收到数据库的完整的当前状态。
为了能够产生RMRT重传输,用于每个已公告前缀及其关联ADU序列号的最新状态应由iBGPd维护。这包括与已由边界路由器撤销的前缀有关的信息。虽然不太可能,但是随着时间的过去,所维护的已撤销的路径状态的量可能会被认为过多。但是,在ADU可用一定时间后,下游邻居通常已经赶了上来,并通常不再需要它的重传输。那时,对应于已撤销路径的ADU状态可被清除。如果以后下游邻居请求已被清除的ADU的重传输,则需要与该邻居启动RMRT数据库同步。
考虑图16B中的例子。对3个前缀A、B和C产生了6个ADU。ADU3和6分别代表用于前缀A和C的路径的撤销。为了能够产生任何用于下游邻居的所请求的重传输,路由器应维护代表每个所述前缀的最新状态的ADU3、5和6。但是,在本例中,路由器决定它已维护了与前缀A有关的撤销状态(存储在ADU3中)相当长的时间,并清除这一状态。现在它只存储ADU5和6,并应记住不能服务于任何涉及ADU3的重传输请求。任何这种请求都会导致RMRT数据库同步。
为了减小记住哪些ADU已被清除所需的状态量,iBGPd只存储在其之后存在完整历史的第一个ADU的序列号。在本例中这是序列号4。如上所述,可用哑ADU来取代ADU4,因为ADU6已更新了对应的前缀。因此可服务于包括ADU4的重传输请求。任何涉及ADU3及更低ADU的重传输请求都会导致RMRT同步。
对于已存在于iBGPd数据库中很长时间的任何ADU,用于清除用于与前缀撤销相关联的ADU的数据的相同理由可用来丢弃ADU数据及其序列号之间的关联。即使解除了与其ADU序列号的关联,用于未被撤销的前缀的数据仍应由iBGPd维护。所述前缀数据仍需要在路由功能中,以及在下游邻居请求RMRT同步时使用。另外,如上所述,RMRT需要关联解除来避免当会话序列号重卷发生时的歧义。
IBGPd应维护最少量的ADU序列号关联历史。所需要的最少量是网络中路由器的重引导时间的函数。为了防止级联式下游同步,当路由器重引导时,它的上游邻居应保持重引导路由器在其关闭时间中错过的ADU的序列号关联。正在重引导的路由器之外的下游子树中的路由器将会错过相同的ADU。
iBGPd信息传播下面将描述iBGPd在跨越网络传播路由信息时提供的各种优点。下面的论述将比较iBGPd信息传播和使用IBGP网格和使用路由反射器的信息传播。图17示出了构成全IBGP网格的一系列6个路由器。在边缘处存在两个边界路由器1702和1704。1706、1708、1710和1712之间的路由器是内部路由器。路由器的这一简化安排可以看作为代表了实际AS网络。
图17示出了具有IBGP“全”网格部署时,路由器之间的路由信息流。尽管使用了术语“全”网格,但是并不需要在AS中的每一对路由器之间都存在IBGP连接。只有有信息需要发送的路由器才需要到AS中每个其他路由器的IBGP连接。当边界路由器发现所有的外部路径时,它们是需要具有全IBGP连接性的路由器。图17中的箭头表示IBGP连接。箭头的方向表示信息流的方向。注意,在两个边界路由器之间,信息的交换在连接上双向进行。
图19示出了相同的网络拓扑,但使用了路由反射。存在两个边界路由器1902和1904。在内部路由器中,路由器1906和1908是路由反射器,而路由器1910和1912是路由反射器客户端。每个路由反射器需要连接到所有边界路由器。在这一部署中,反射器客户端通过每个反射器接收路由信息,并只有一个IBGP连接。
图20根据本发明的一个实施例,示出了采用iBGPd的相同网络拓扑。存在两个边界路由器2002和2004,以及4个内部路由器2006、2008、2010和2012。所有的内部路由器都参与两个会话,并将会话数据向下游传播到下一跳。边界路由器还参与彼此的会话。
现在考虑整个AS的信息一致性如何受每种方案的影响。使用IBGP“全”网格时,一旦边界路由器通过EBGP发现并消化新的获胜路径,它就将该路径并行地传播给其他AS路由器。尽管有这种并行传播,仍存在可变的延迟,直到所传播的路径到达了各个内部路由器的转发表。所述延迟因多种原因而会变化·边界路由器上的BGP组件尝试对每个IBGP的TCP连接进行写的顺序在不同内部路由器接收新信息的时间之间引入了延迟。
·边界路由器处每个TCP连接的拥塞控制状态可能会向信息的传输引入额外的延迟。
·接收路由器中的BGP组件可能需要可变的时间量来消化新信息并将之选择为应该使用的路径。
·在新选择的路径从BGP组件通过RIB到达每个路由器的FIB之前可能要更多的时间。
结果,当路由器链中间的路由器完成所述过程,并将新的转发信息安置在其FIB中时,不能确保它和发起该信息的边界路由器之间的路由器已经就绪于转发。同样的情形也适用于网络相对两端处,在建立通过AS的转发之前传播新的外部路径的边界路由器。
整个网络的信息发现的序列中的不一致的问题在路由反射器的情形下变得更糟。使用路由反射器时,在路由反射器客户端发现新的路由信息之前引入了额外的延迟。所述延迟是由路由反射器本身接收、消化和传播该信息所花费的时间引起的。与具有到具有新路径的边界路由器的直接IBGP连接的AS路由器相比,反射器客户端在更新它们自己的转发信息时会遇到进一步的延迟。
使用iBGPd提供了显著的改进。利用iBGPd时,信息传播有预定的顺序。路由数据从边界路由器向外沿着所路由的IP分组将遵循的逆路径而传播。当AS中的路由器接收与目的地有关的新路由信息时,可以确定它本身与出口边界路由器之间的IGP转发路径上的所有路由器也已经接收到了该新信息。虽然在将路径信息安置在本地FIB中的可变延迟仍存在,但是稳定性极大地提高了。
由于iBGPd对信息传播通过AS的顺序实施了规范性,因此可以对在网络发现新路由时或正在撤销路由时转发会受到怎样的影响进行推理。这将参考图21-24进行示出。例如,使用具有一排5个路由器的简单网络,两端有两个边界路由器2102和2104,它们之间有3个边界路由器2106、2108和2110。将讨论的场景涉及到单个目的地前缀的路由。两个路径可用于路由到该目的地。路径A通过边界路由器2102可用,路径B通过边界路由器2104可用。
第一个例子描述了已选择了通过边界路由器2102的路径A的网络如何切换到通过边界路由器2104发现的新路径B。网络在切换期间演化其路由状态时经历的阶段示出在图21中。
每个有标号的行表示时间上的一个阶段。只示出了感兴趣的阶段而省略了许多中间阶段。对于每个阶段,示出了每个路由器处可用的路径和IP转发的方向。每个阶段的描述如下1.边界路由器2102已通过它的iBGPd会话传播了路径A。该路径信息已到达了网络中的所有路由器,这些路由器都将用于所述目的地的数据朝着边界路由器2102转发(由指向左边的箭头表明)。
2.边界路由器2104通过它的EBGP连接发现了路径B。路径B优于路径A,因此赢得最佳路径选择,边界路由器2104开始朝右转发。
3.边界路由器2104开始通过它的iBGPd会话传播路径B的信息。在此阶段,路径B已传播通过两跳。已接收到该路径的路由器2108和2110将它选择为获胜路径,并开始朝右通过边界路由器2104转发。
4.新路径到达网络中的所有路由器,这些路由器都通过边界路由器2104转发。此时,边界路由器2102意识到它自己的路径不再是获胜路径,应从内部流通中撤销该路径。
5.边界路由器2102开始通过它的iBGPd会话传播路径A的撤销。注意,边界路由器2102仍将该路径存储在它的EBGP连接的RIB-in中。
6.所述路径撤销通过所述网络。
明确地撤销不再使用的路径(阶段5和6)在路由操作以任何方式正确工作时(从步骤4开始)是可选的。撤销路由的优点在于内部路由器不再需要存储它(尽管为了支持RMRT功能,这些路由器仍应存储足够的信息来记住它已被撤销)。注意,失败路径的删除也是IBGP的默认操作模式。在iBGPd中,从内部流通中撤销失败路径的决定会影响以后当获胜路径离去时的路由行为。
在上述iBGPd新路由公告过程的每个阶段都不会形成微回路。路由总是处在一致的状态中,每个路由器都持续地具有到达目的地的能力。
第二个例子开始于在网络中有两个路径可用(前面的例子停止处)。获胜路径仍然是路径B,而边界路由器2104的外部对等者将要撤销它。边界路由器2102以前是否从内部流通中撤销了失败的路径A这一选择对本例会有影响。我们将描述两种选项的场景,从已经撤销路径A这一选项开始。
图22示出了网络经历的下述阶段,其中边界路由器2102已经保留路径A不再用于内部流通,而边界路由器2104发现路径B正在被撤销1.在初始阶段,所有的路由器都正使用路径B。边界路由器2102还在它的EBGP RIB-in中存储了路径A,但是路径A未被用于转发,因为它在最佳路径选择中失败了。
2.通过边界路由器2104的EBGP连接告知边界路由器2104,表明B不再是有效的路径。由于没有可用的替换,因此它停止转发朝向目的地的数据。
3.边界路由器2104在其iBGPd会话中公告路径B的撤销,沿着该路径的更多路由器停止转发。
4.路径B的撤销一直传播到边界路由器2102。现在路径A赢得最佳路径选择,边界路由器2102开始使用它。
5.边界路由器2102通过它的iBGPd会话传播路径A,所有的路由器又开始朝左转发。
上述场景具有下述优点,即在路径B的撤销以及路径A的重公告期间未形成微回路。缺点在于转发被中断,直到所述撤销和重公告都已完成。
可替换的事务状态是边界路由器2102从不通过其iBGPd连接撤销失败的路径,参考图23进行描述。
1.在初始阶段,两个路径对于所有5个路由器都可用。但是,只有路径B正被使用,因为路径A在最佳路径选择中失败了。
2.通过边界路由器2104的EBGP连接告知边界路由器2104,表明B不再是有效路径。边界路由器2104立即开始使用路径A,并朝左转发,创建了微回路(因为它左边的内部路由器仍在朝右转发)。
3.边界路由器2104在其iBGPd会话中公告路径B的撤销。已被更新的路由器开始使用路径A。微回路的位置随着撤销信息的传播而朝边界路由器2102回移。
4.所有路由器都已就路径B的撤销而被更新,并正在使用路径A来转发。
这一场景的优点在于路径B的撤销信息一开始通过网络就恢复了转发。边界路由器2102不需要重公告路径A,因为它从未被撤销。缺点是撤销期间在每个内部跳上都形成了微回路。
另一个例子探讨了iBGPd在具有同等成本的多个路径上使用负载共享的能力。网络拓扑与前面的部分相同,但是这一次分别通过边界路由器2102和边界路由器2104的路径A和B都一样的好。当所述边界路由器评估两个路径以选择获胜路径时,所述比较依赖于IGP距离,并且每个边界路由器都挑选它自己的路径。因此,每个边界路由器都一直通过它的iBGPd会话公告它自己的外部路径,并且两个路径在所有的内部路由器上都可用。下面将参考图24描述在这一场合下,如果外部对等者撤销了两个路径之一时会发生的情况。
图24示出了路由状态的演化阶段1.在初始阶段,所有路由器都有两个路径。每个路由器向最近的出口转发。例外是中间那个与两个边界路由器等距的路由器。它因此使用两个路径,并在它们之间进行负载共享。
2.边界路由器2102的EBGP对等者通知它,表明路径A已被撤销。边界路由器2102开始使用路径B,并朝右转发。微回路形成了。
3.边界路由器2102在其iBGPd会话中公告路径A的撤销。该路径更下游的路由器开始使用路径B,微回路前移。
4.中间的路由器一接收到撤销信息就也开始只使用路径B来转发。此时微回路被消除。其余尚未得知路径A的撤销的路由器一开始就只使用路径B,因为边界路由器2104对它们来说更近。
5.所述撤销传播到所有的路由器,它们都使用路径B来转发。
iBGPd同步iBGPd支持并利用上述RMRT提供的同步过程。IBGPd面临请求时将它数据库中的所有ADU都提供给RMRT应用。通过上述上行调用,iBGPd漫游整个数据库,在行进时发送RMRT ADU。RMRT将ADU发送到已请求同步的下游邻居。较旧的ADU不太可能具有序列号,因为它们已被解除关联。iBGPd支持通过同一数据库的多个并行漫游操作,因为多个下游节点可能同时请求同步。参考图18描述的RIB数据结构方便了对同步请求的服务。另外,由于具有被取代的前缀状态的ADU被删除了,因此iBGPd一般不向RMRT提供回卷上行调用。因此,RMRT在对iBGPd客户端的同步过程中通常会缓冲所有的未确认数据。
同步会话期间应对上述ADU清除机制实施一种特殊限制。在同步双亲处,不应清除具有比同步开始时当前的序列号更靠后的序列号的ADU,除非它们在同步会话中已被传送。这不是一个非常不利的限制。该规则没有防止同步开始后产生的ADU被包含与同一前缀有关的更新状态的较为靠后的ADU所取代。因此,它在对撤销ADU清除过程引入临时限制之外没有修改默认的iBGPd行为。
iBGPd VPN支持iBGPd还可用来提供对本领域公知的BGP VPN(虚拟专用网)提供支持。在单个提供商网络上可运行多个VPN。图25根据本发明的一个实施例示出了可向其应用iBGPd的简单VPN场景。简化的提供商网络包括网络外围的4个“提供商边缘”路由器2502、2504、2506和2508,以及网络核心内的两个提供商路由器2510和2512。第一“红”虚拟专用网互连3个客户边缘路由器2514、2516和2518。第二“绿”虚拟专用网互连3个客户边缘路由器2520、2522和2524。
对VPN操作的完整描述超出了这里的论述的范围,对于理解本发明来说也没有必要。VPN领域内的技术人员知道VPN操作的一个重要方面是BGP路由信息的受限传播。正通过BGP发送VPN路径的路由器使用属性来指定将记录该路径的BGP监听者,并指定接收路由器中的哪个(哪些)VPN转发表将被更新。在一些情形下,该属性由一个或多个“路由目标”组成。在简单的情形下,该属性包括“路由区分符”,其已被选择来指明特定的客户端VPN。
本发明的实施例利用iBGPd来在AS内传播VPN路由信息。可将特定的iBGPd会话映射到例如一个或多个路由目标、特定的路由区分符或任何其他用来指定哪些路由器将使用通过所述会话而传播的路径的标识符。提供商路由器如果在信息流的路径中,则它们被配置成运行为所有VPN会话的RMRT过境路由器,因为它们不记录VPN路由信息。特定会话的信息流中的提供商边缘路由器运行为过境路由器或RMRT接收者,这依赖于它们是否需要有关VPN路由的知识。RMRT过境路由器优选地只在它们有多于一个的下游接收者时才缓存ADU。
再次考虑图25中的例子。绿VPN和红VPN具有关联的路由目标,并且存在由提供商边缘路由器2502发起的两个iBGPd会话,每个用于一个路由目标。箭头表示会话,其中实线表示绿网络的会话,而虚线表示红网络的会话。
红客户边缘路由器2514、2516和2518接收提供商边缘路由器2502发起的红iBGPd会话。客户边缘路由器2516和2518通过成为用于红会话的RMRT过境路由器的提供商路由器2510加入到该会话。虽然提供商路由器2510参与到会话的转发功能中,但是它不保存会话数据的拷贝,而只是在其RMRT缓存中存储最少量的ADU。所存储的ADU用来向提供商边缘路由器2504和2506提供重传输。
提供商边缘路由器2504和2508加入提供商边缘路由器2502发起的绿iBGPd会话。提供商边缘路由器2504通过提供商路由器2510加入,而提供商边缘路由器2508通过提供商路由器2512和2510加入。来自提供商边缘路由器2502的绿会话的传播的差别在于提供商边缘路由器2508接收数据的方式。由于提供商路由器2512只有一个该会话的下游接收者,所以它意识到它作为缓存而参与是没有意义的,并且它将数据安排为从提供商路由器2510隧道穿越到提供商边缘路由器2508。
在另一场景中,提供商边缘路由器2502使用单个iBGPd会话来传播两个VPN的路径。所述路径被贴上标签,以使得iBGPd会话接收者知道将每个路径分配给哪个VPN转发表。于是只存在一个会话传播树来支持两个VPN。但是,提供商边缘路由器2506和2508将接收并滤掉它们不支持的VPN的路径。
网络设备细节线路卡1102包括用于耦合到物理介质的网络接口。还可以在线路卡1102内发现转发情报。只示出了两个线路卡1102,但是应理解到在同一网络设备1100内实际上可有非常大量的线路卡。线路卡1102由高速主干1104互连以传输分组。路由处理器1106负责控制平面(plane)功能。路由处理器1106具有到高速主干1104的相对低速的连接。
本发明的实施例的功能可在路由处理器1106和线路卡1102之间划分,如图11B所示。一般地说,在图11B中,控制组件和应用(iBGPd)由路由处理器1106实现,而ADU的缓存和转发以及确认机制由线路卡1102处理。例如,路由处理器1106可实现RPF邻居跟踪组件302、成员资格跟踪组件304、到应用204的接口以及TPDU转发控制。路由处理器1106还实现上述同步过程。
TPDU接收组件306、ADU缓存310和TPDU传播组件308可在每个线路卡1102上实现。线路卡1102还负责重传输。每个RMRT会话容宿在工作为到上游直接相连的邻居的接口的线路卡上。该线路卡维护用于RMRT会话的ADU缓存310。将向下游传播的TPDU被传输到直接连接到发出订阅的下游邻居的线路卡。类似地,肯定性和否定性确认在面向下游的线路卡处接收,并传输到容宿将在其处处理或中继到上游邻居的RMRT会话的线路卡,根据需要而定。RMRT因此可实现在分布式转发体系结构的上下文内,其中分组一般不是由路由处理器直接处理,而是保持在线路卡上进行处理。
路由处理器1106的一部分功能可由包含存储在程序存储器1108中的指令的软件实现。程序存储器1108只是可存储实现本发明的实施例时使用的软件的计算机可读存储介质的一个例子。其他例子例如包括硬盘、CD-ROM、DVD-ROM、闪存等等。计算机可读存储介质的另一个例子是携带软件穿过网络的信号。线路卡1102可包括它们自己的处理器功能,其可类似地实现为软件。
应理解到这里所描述的例子和实施例只用于进行说明,考虑到它们,对于本领域内的普通技术人员来说可作出各种修改和改变,这些修改和改变应包含在本申请的精神和范围之内,且被包含在所附权利要求的范围及其完全的等同物的范围之内。
权利要求
1.一种在自治系统内,从所述自治系统的边界路由器传播路由信息的方法,所述方法包括建立多方传输协议会话,其中所述边界路由器是会话源,并且存在作为所述自治系统的节点的所述会话的接收者;从所述自治系统外的节点接收外部边界网关协议(EBGP)路由信息;处理所述EBGP路由信息以发展出内部边界网关协议(IBGP)路由信息;以及通过包括所述接收者的传播树来传播所述IBGP路由信息,作为所述多方传输协议会话的一部分。
2.如权利要求1所述的方法,其中所述传播包括将所述IBGP路由信息封装在传输协议数据单元内;将所述IBGP路由信息发送到所述接收者中直接相连的接收者。
3.如权利要求1所述的方法,还包括接收加入消息,所述加入消息来自希望加入所述多方传输协议会话的直接相连的接收者。
4.如权利要求1所述的方法,其中,所述接收者中的每一个基于单播路由协议信息来标识出朝向所述会话源的路径,从而形成所述传播树。
5.如权利要求1所述的方法,其中所述路由信息包括VPN路由信息。
6.一种用于运行自治系统内的路由器的方法,所述方法包括标识出朝向多方传输协议会话的源的下一跳路由器;发送加入消息到所述下一跳路由器,以参与所述多方传输协议;从所述下一跳接收边界网关协议(BGP)信息,作为所述多方传输协议会话的一部分;以及基于所述接收的BGP信息,更新路由器信息库(RIB)。
7.如权利要求6所述的方法,还包括接收来自直接相连的节点的参与所述多方传输协议会话的请求;以及将所述边界网关协议信息传播到所述直接相连的节点。
8.如权利要求6所述的方法,还包括通过从所述RIB获取所述边界网关协议信息,响应来自所述直接相连的节点的重传输请求。
9.如权利要求6所述的方法,其中更新所述边界网关协议信息包括将所述边界网关协议信息按照由所述会话源产生的顺序存储在链表中。
10.如权利要求9所述的方法,其中所述链表的元素存储成树结构,该结构在多个多方传输协议会话之间共享。
11.一种用于在自治系统内,从所述自治系统的边界路由器传播路由信息的计算机程序产品,所述计算机程序产品包括建立多方传输协议会话的代码,其中所述边界路由器是会话源,并且存在作为所述自治系统的节点的所述会话的接收者;从所述自治系统外的节点接收外部边界网关协议(EBGP)路由信息的代码;处理所述EBGP路由信息以发展出内部边界网关协议(IBGP)路由信息的代码;通过包括所述接收者的传播树来传播所述IBGP路由信息,作为所述多方传输协议会话的一部分的代码;以及存储所述代码的计算机可读存储介质。
12.如权利要求11所述的计算机程序产品,其中进行传播的所述代码包括将所述IBGP路由信息封装在传输协议数据单元内的代码;以及将所述IBGP路由信息发送到所述接收者中直接相连的接收者的代码。
13.如权利要求11所述的计算机程序产品,还包括接收加入消息的代码,所述加入消息来自希望加入所述多方传输协议会话的直接相连的接收者。
14.如权利要求11所述的计算机程序产品,其中,所述接收者中的每一个基于单播路由协议信息来标识出朝向所述会话源的路径,从而形成所述传播树。
15.如权利要求11所述的计算机程序产品,其中所述路由信息包括VPN路由信息。
16.一种用于运行自治系统内的路由器的计算机程序产品,所述计算机程序产品包括标识出朝向多方传输协议会话的源的下一跳路由器的代码;发送加入消息到所述下一跳路由器,以参与所述多方传输协议的代码;从所述下一跳接收边界网关协议(BGP)信息,作为所述多方传输协议会话的一部分的代码;基于所述接收的BGP信息,更新路由器信息库(RIB)的代码;以及存储所述代码的计算机可读存储介质。
17.如权利要求16所述的计算机程序产品,还包括接收来自直接相连的节点的参与所述多方传输协议会话的请求的代码;以及将所述边界网关协议信息传播到所述直接相连的节点的代码。
18.如权利要求17所述的计算机程序产品,还包括通过从所述RIB获取所述边界网关协议信息,响应来自所述直接相连的节点的重传输请求的代码。
19.如权利要求16所述的计算机程序产品,其中更新所述边界网关协议信息的所述代码包括将所述边界网关协议信息按照由所述会话源产生的顺序存储在链表中的代码。
20.如权利要求19所述的计算机程序产品,其中所述链表的元素存储成树结构,该结构在多个多方传输协议会话之间共享。
21.一种用于在自治系统内,从所述自治系统的边界路由器传播路由信息的设备,所述设备包括用于建立多方传输协议会话的装置,其中所述边界路由器是会话源,并且存在作为所述自治系统的节点的所述会话的接收者;用于从所述自治系统外的节点接收外部边界网关协议(EBGP)路由信息的装置;用于处理所述EBGP路由信息以发展出内部边界网关协议(IBGP)路由信息的装置;以及用于通过包括所述接收者的传播树来传播所述IBGP路由信息,作为所述多方传输协议会话的一部分的装置。
22.一种用于运行自治系统内的路由器的设备,所述设备包括用于标识出朝向多方传输协议会话的源的下一跳路由器的装置;用于发送加入消息到所述下一跳路由器,以参与所述多方传输协议的装置;用于从所述下一跳接收边界网关协议(BGP)信息,作为所述多方传输协议会话的一部分的装置;以及用于基于所述接收的BGP信息,更新路由器信息库(RIB)的装置。
23.一种用于在自治系统内,从所述自治系统的边界路由器传播路由信息的设备,所述设备包括执行指令的处理器;以及其上存储有所述指令的存储器设备,所述指令包括建立多方传输协议会话的代码,其中所述边界路由器是会话源,并且存在作为所述自治系统的节点的所述会话的接收者;从所述自治系统外的节点接收外部边界网关协议(EBGP)路由信息的代码;处理所述EBGP路由信息以发展出内部边界网关协议(IBGP)路由信息的代码;和通过包括所述接收者的传播树来传播所述IBGP路由信息,作为所述多方传输协议会话的一部分的代码;
24.一种用于运行自治系统内的路由器的设备,所述设备包括执行指令的处理器;以及其上存储有所述指令的存储器设备,所述指令包括标识出朝向多方传输协议会话的源的下一跳路由器的代码;发送加入消息到所述下一跳路由器,以参与所述多方传输协议的代码;从所述下一跳接收边界网关协议(BGP)信息,作为所述多方传输协议会话的一部分的代码;和基于所述接收的BGP信息,更新路由器信息库(RIB)的代码。
全文摘要
一种改进的系统和方法,用于在自治系统(AS)内传播域间路由信息。已提出了一种对BGP的协议扩展即iBGPd(内部边界网关协议下载器)来替换IBGP,以在AS内传播BGP域间路由信息。iBGPd技术使用可靠的多方传输协议来逐跳传播路由信息。极大地提高了可扩展性,因为避免了使用TCP连接的全网格。另外,在路由信息传播延迟和路由稳定性方面也存在改进。避免了与使用路由反射器和邦联相关的缺点。
文档编号H04L12/18GK1685675SQ03823277
公开日2005年10月19日 申请日期2003年9月24日 优先权日2002年10月28日
发明者艾斯德尔·库韦拉斯 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1