CN1883146B - 在路由选取协议的实现中分布路由选择的系统和方法 - Google Patents

在路由选取协议的实现中分布路由选择的系统和方法 Download PDF

Info

Publication number
CN1883146B
CN1883146B CN2004800335315A CN200480033531A CN1883146B CN 1883146 B CN1883146 B CN 1883146B CN 2004800335315 A CN2004800335315 A CN 2004800335315A CN 200480033531 A CN200480033531 A CN 200480033531A CN 1883146 B CN1883146 B CN 1883146B
Authority
CN
China
Prior art keywords
path
bgp
spokesman
router
peer
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.)
Active
Application number
CN2004800335315A
Other languages
English (en)
Other versions
CN1883146A (zh
Inventor
戴维·亚历山大·鲍尔
埃里克·R·班尼特
马丁·黑斯克斯
约翰·伽莱恩·斯卡德
戴维·D·沃德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN1883146A publication Critical patent/CN1883146A/zh
Application granted granted Critical
Publication of CN1883146B publication Critical patent/CN1883146B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/44Distributed routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

部分最佳路径技术在路由器上的路由选取协议实现中分布路由选择。该技术还确保接收自路由器的对等体的通告的路径(即“负载”)按正确顺序被比较以选择最佳路径,该最佳路径随后被路由器用于转发分组和广告给对等体。当被用在分布式体系结构中时,该技术还减少了存储器占用。为此,部分最佳路径技术增强了由路由器执行的最佳路径选择算法,从而使接收到的路径负载能够分散到路由器的多个处理节点或元件,同时保持算法的排序要求。部分最佳路径技术本质上提供了对最佳路径选择算法的增强,其从多个路径中选择一个路径子集,该子集是选择最佳路径所需的最小子集。

Description

在路由选取协议的实现中分布路由选择的系统和方法
技术领域
本发明一般地涉及计算机网络中使用的路由选取(routing)协议,更具体而言,涉及在路由选取协议的实现中分布路由选择(route selection)的技术。
背景技术
计算机网络是地理上分布的用于在节点(例如计算机)间传输数据的互连通信链路的集合。有很多类型的计算机网络可用,这些类型的范围从局域网(LAN)到广域网(WAN)。节点一般通过根据预定协议交换数据的离散分组或消息来进行通信。在此上下文中,协议包含一组规则,这组规则定义节点如何彼此交互。
计算机网络可以通过中间节点(例如路由器)来进一步互连以扩展每个网络的有效“大小”。由于可以证明互连的计算机网络的大系统的管理很麻烦,因此可以将计算机网络的较小群组作为路由选取域或自治系统来维护。自治系统内的网络一般通过传统的“域内”路由器耦合在一起。然而,仍旧希望增大能够交换数据的节点的数目;在此情况下,执行域间路由选取协议的域间路由器被用于互连各种自治系统的节点。
域间路由选取协议的一个示例是边界网关协议版本4(BGP),该协议通过在系统的相邻域间路由器之间交换路由选取(可达性)信息来执行自治系统之间的路由选取。邻接关系(adjacency)是出于交换路由选取信息消息和提取网络拓扑的目的而在所选相邻(对等)路由器之间形成的关系。但是,在发送这样的消息之前,对等体协同工作以在路由器之间建立逻辑“对等”连接(会话)。BGP使用可靠的/顺序的传输协议(例如传输控制协议)来建立可靠的连接/会话。
由BGP对等体交换的可达性信息一般包括目的地地址前缀,即目的地地址中被路由选取协议用于作出路由选取(“下一跳”)判决的部分。这种目的地地址的示例包括因特网协议(IP)版本4(IPv4)和版本6(IPv6)地址。前缀意味着合作描述对等体可以到达的网络区域的IP地址和掩码的组合。每个前缀可能具有多个关联路径;每个路径由BGP路由器的一个或多个对等体通告给BGP路由器。BGP路由选取协议标准是公知的,并在以下公开文献中被详细描述:Y.Rekhter和T.Li的请求注释(RFC)1771(1995);Y.Rekhter和T.Li的题为“A Border GatewayProtocol 4(BGP-4)”的因特网草案<draft-ietf-idr-bgp4-22.txt>(2003年4月);以及由Addison Wesley Publishing公司出版的R.Perlman的“Interconnections,Bridges and Routers”,第323-329页(1992年),所有这些公开文献通过引用被结合于此。
被配置用于执行BGP协议的实现的域间路由器(这里称之为BGP路由器)执行各种路由选取功能,包括发送与接收路由选取消息和基于路由选取度量作出路由选取判决。每个BGP路由器维护路由选取表,该路由选取表列出了到特定网络的所有可行路径。一般不对路由选取表执行周期性刷新;但是,位于自治系统中的BGP对等路由器在某些情况下交换路由选取信息。例如,当BGP路由器最初连接到网络时,对等路由器交换其路由选取表的全部内容。此后在这些内容发生改变时,路由器只交换其路由选取表中改变的那些部分,以更新它们的对等体的表。因此这些更新消息是响应于路由选取表内容改变而发送的递增更新消息,并且只通告到特定网络的最佳路径。
宽泛地讲,BGP路由器通过“走过”路由选取表和应用适当的路由选取策略来生成针对邻接关系(也称之为对等路由器)的路由选取更新消息。路由选取策略是使BGP路由器能够根据过滤和偏好(即“最佳路径”)来对路由分等级的信息。由更新消息提供的路由选取更新允许自治系统的BGP路由器构建网络拓扑的一致视图。更新消息一般是利用可靠传输(例如TCP)来发送的,以确保可靠的递送。TCP是由IP体系结构的传输层实现的传输协议;术语TCP/IP常用于指代这种体系结构。TCP/IP体系结构是公知的,在由Prentice-Hall出版的Andrew S.Tanenbaum的“Computer Networks,3rd Edition”(1996年)中有所描述。
BGP协议的常见实现被体现为在BGP路由器的单个处理器(例如中央处理单元(CPU))上执行的单个进程,而另一已知实现提供了在单个CPU上运行的BGP进程的多个实例。在后一种实现中,每个BGP实例具有其自己的路由选取表并针对给定前缀挑选其自己的最佳路径;针对同一前缀,每个实例还可能具有不同的最佳路径。从协议角度来看,每个BGP实例是单独的路由器,但是,每个路由器实例共享相同的资源,例如单个CPU。这两种BGP实现都存储和处理接收自它们的对等路由器的更新消息,并创建和处理用于传输到(通告给)它们的对等体的更新消息。但是,在单个CPU上可获得的处理时间量(即带宽)有限,进而导致BGP实现方式可以处理的路由的数目受限,以及BGP实现可以支持的对等体/邻接关系的数目受限。
限制BGP实现可以支持的邻接关系和路由的数目的因素的示例包括BGP路由器中存储器的物理量。BGP路由器可以支持的存储器量很重要,因为假设对附属存储设备(例如盘)的访问涉及很大的读/写等待时间,则无法将这样的盘有效地用于存储更新消息。此外,由路由器维护的每个邻接关系具有与其相关联的某个最小CPU代价。这种代价的示例包括以预定间隔发送“保活(KeepAlive)”消息,处理接收到的更新消息以及在路由选取表发生改变时判决是否向对等体发送更新消息。
BGP协议的每种实现都要求BGP路由器针对每个可路由的前缀,接收和存储接收自其对等体的(或本地生成的)多个路径。随后利用最佳路径选择算法对这些路径进行比较,该最佳路径选择算法描述了路径之间的关系,即该算法指定应如何比较路径以及比较路径的顺序,以选择最佳路径。最佳路径随后被路由器用于转发分组并被通告给路由器的对等体。然而,随着对等体数目的增长以及每个对等体通告(广告)的前缀数目的增长,用于存储所有接收到的路径(即“负载”)所需的存储器量也增长。因此,最好能够将此接收到的路径负载分散到例如多节点系统的各种处理元件或节点中,以避免单个节点存储所有路径,从而限制了单个节点上所需的最大存储器。
一般而言,任何传递性的关系都可被分散。在此上下文中,传递性例如指的是:如果A小于B,B小于C,则A小于C。利用传递性关系,可从多个不同的路径子集中的每个子集中选择最佳路径,然后对这些所选路径进行比较以选择总的最佳路径。但是,最佳路径选择算法(如BGP标准指定的)不是传递性的,即如果路径A优于路径B,路径B优于路径C,路径A不一定优于路径C。在可能发生这种非传递性的情况下,BGP标准定义了对路径进行比较的顺序,以使得总体最佳路径的选择是确定性的。
发明内容
本发明通过提供部分最佳路径技术而克服了现有技术的缺陷,所述最佳路径技术在路由器上的路由选取协议实现中分布路由选择。另外,该技术确保接收自路由器的对等体的通告的路径(即“负载”)按正确顺序被比较以选择最佳路径,该最佳路径随后被路由器用于转发分组和广告给对等体。当被用在分布式体系结构中时,该技术还减少了存储器占用。为此,部分最佳路径技术增强了由路由器执行的最佳路径选择算法,从而使接收到的路径负载能够分散到路由器的多个节点或处理元件,同时保持算法的排序要求。部分最佳路径技术本质上提供了对最佳路径选择算法的增强,其从多个路径中选择一个路径子集,该子集是选择最佳路径所需的最小子集。
在所示实施例中,分布式软件体系结构将路由选取协议实现为运行在路由器的一个或多个处理元件(例如处理器)上的一组进程。路由选取协议优选地是边界网关协议版本4(BGP)。分布式软件体系结构的BGP实现包括多个进程(例如BGP发言人),负责BGP实现中的大多数处理代价。每个BGP发言人优选地在不同处理器上执行,并一般负责以下任务:(i)处理(终止)一个或多个BGP对等连接,(ii)存储和“获知”接收自其对等体的针对每个前缀的通告的路径,以及(iii)根据新的部分最佳路径技术执行第一阶段路由选择以选择针对每个前缀的部分最佳路径,以便形成一组部分最佳路径,等等。
每个BGP发言人还负责将它的所选择的一组部分最佳路径转发(下载)到分布式体系结构的另一进程,即BGP路由选取信息库(RIB)或“bRIB”。bRIB优选地在与执行发言人的处理器不同的处理器上执行,并执行第二阶段路由选择以从从路由器的所有BGP发言人下载的部分最佳路径的集合中选择一组最佳路径。此后,bRIB将被选为最佳路径的每个路由下载到另一进程,即全局RIB,该全局RIB执行第三(最后)阶段路由选择。bRIB还将选择的最佳路径发送到每个BGP发言人,BGP发言人在将这些路径发送到对等体之前对它们应用外出策略(针对每个对等体)。
根据本发明的技术,每个发言人从其接收自分配给它的对等体的路径集合中选择部分最佳路径的子集。在每个发言人中,针对每个前缀的路径被分割成若干群组,以使得在每个群组内,最佳路径算法是传递性关系。就是说,对于来自同一群组的三个路径A、B和C,如果路径A优于路径B,路径B优于路径C,则路径A优于路径C。如何对路径分组的一个示例是根据从其接收到路径的自治系统(AS)对路径分组。
发言人利用标准的BGP最佳路径算法来计算每个群组中的最佳路径。然后发言人在来自每个群组的最佳路径之间执行比较,这包括以下步骤:(1)丢弃具有较低优选程度的路径,(2)如果另一路径是在本地发起的,则丢弃获知的路径,(3)丢弃具有较长AS路径的路径,以即(4)丢弃具有较高起源的路径。在来自每个群组的最佳路径中的在运行了算法之后还未被丢弃的任何路径形成针对前缀的部分最佳路径的集合并被发言人发送到bRIB。bRIB随后使用标准的BGP最佳路径算法来从接收自所有发言人的部分最佳路径中选择针对前缀的最佳路径。更一般地,该技术使发言人能够执行最佳路径算法,直到妨碍总体最佳路径算法具有传递性的第一步骤。
有利的是,新的部分最佳路径技术提供了对最佳路径选择算法的增强,其允许BGP最佳路径选择进程被分布在路由器的多个处理元件中。该技术无需存储在单个元件处所有通告的路径来维持算法的正确性。它是通过将接收到的路径负载划分成发言人可快速(或单独)访问的子集来实现这一点的。发言人随后可以对这些路径子集执行第一阶段路由选择(比较操作),以使bRIB只需要比较这些子集操作的输出。部分最佳路径技术因此允许最佳路径选择算法被分布到多个阶段中或在多个阶段中执行,从而减少了路由器中的存储器占用。
该新技术还具有“数据减少”的优点。通过在每个发言人处对每个子集运行第一阶段路由选择,在第二阶段路由选择时只需对可能更少的路径执行更少的比较操作,即使bRIB被例示为对接收到的部分最佳路径执行完整的最佳路径选择算法也是如此。
附图说明
通过结合附图参考以下描述,可以更好地理解本发明的上述和其他优点,在附图中,类似标号指示相同或功能上类似的元件:
图1是包括多个通过中间节点(例如边界网关协议(BGP)域间路由器)互连的自治系统的计算机网络的示意性框图;
图2是可被有利地用于本发明的域间路由器的实施例的示意性框图;
图3是图2的域间路由器内的传统协议栈(例如因特网通信协议栈)的示意性框图;
图4是可被有利地用于本发明的更新消息(例如BGP更新消息)的示意性框图;
图5是可被有利地用于本发明的BGP更新消息的路径属性字段的示意性框图;
图6是示出BGP协议的体系结构的示意性框图;
图7是示出根据本发明的分布式软件体系结构的BGP实现的示意性框图;以及
图8是示出与根据本发明的部分最佳路径技术相关的步骤序列的流程图。
具体实施方式
图1是计算机网络100的示意性框图,该网络100包括通过中间节点互连的多个路由选取域或自治系统,所述中间节点例如是传统的域内路由器120和域间路由器200。自治系统可以包括通过域间路由器互连的各种路由选取域(AS1-4)。域间路由器200进一步通过诸如局域网(LAN)104之类的网络和诸如帧中继链路、异步传输模式链路或其他串行链路之类的点对点链路102互连。路由器之间的通信一般是通过根据预定协议交换离散的数据分组或消息来实现的,所述预定协议例如是传输控制协议/因特网协议(TCP/IP)。本领域技术人员将会理解,诸如因特网分组交换(IPX)协议之类的其他协议也可被有利地用于本发明。
图2是可被有利地用于本发明的域间路由器200的示意性框图。域间路由器200包含多个松散耦合的处理器210,这些处理器210经由互连250(例如纵横制互连或高速总线)被连接到多个入口和出口线路卡(线路卡260)。本领域技术人员将意识到,根据本发明,可以使用其他路由器平台,例如经由通信架构互连为多节点集群的多个独立节点。在此上下文中,术语“节点”指的是包括处理器和由处理器共享的独立存储器的计算机或处理器联合体。
处理器210被例示为路由处理器(RP),其各自具有专用存储器230。存储器230可以包括可由处理器寻址的存储单元,用于存储与本发明的分布式路由选取协议体系结构相关联的软件程序和数据结构。处理器210可以包括用于执行软件程序和操纵数据结构的处理元件或逻辑。路由器操作系统232的某些部分一般位于存储器230中并由处理器执行,路由器操作系统232通过调用支持在处理器上执行的软件进程(这里描述的)的网络操作等等来从功能上组织路由器。本领域技术人员将发现,包括各种计算机可读介质的其他处理器和存储器装置也可被用于存储和执行与这里描述的本发明的体系结构相关的程序指令。
在所示实施例中,每个RP包含两个被配置为对称多处理(SMP)对的中央处理单元(CPU 220),例如Power-PC 7460芯片。CPU SMP对适合于运行路由器操作系统232的单个复本和访问其存储器空间230。如图所示,在路由器200中,每个RP具有与其他RP相分离的存储器空间。处理器利用进程间通信(IPC)机制来通信。另外,每个线路卡260包括具有多个端口的接口270,所述多个端口被耦合到接收转发处理器(FPRx 280)和发送转发处理器(FP Tx 290)。FP Rx 280为经由入口线路卡的接口270在路由器处接收到的每个分组作出转发判决,以确定向何处转发分组。为此,FP Rx利用转发信息库(FIB)275。在分组将被转发到路由器的RP之一的情况下,FP Rx利用内部FIB(即IFIB)来确定应该向哪个RP转发分组。类似地,FP Tx 290对经由出口线路卡的接口270从路由器发送的分组执行查找操作(利用FIB 275)。
域间路由器200的关键功能是确定分组被发送到的下一个路由器;为了实现这样的“路由选取”,域间路由器合作确定通过计算机网络100的最佳路径。优选地,路由选取功能由每个路由器内的传统协议栈的互联网络层来执行。图3是传统的网络协议栈的示意性框图,该协议栈例如是因特网通信协议栈300。因特网协议栈的体系结构用4层表示,按接口升序,这4层被称为网络接口层308、互联网络层306、传输层304和应用层302。
较低的网络接口层308一般被标准化并以硬件和固件来实现,而更高层一般以软件形式实现。因特网体系结构的主要互联网络层协议是IP协议。IP主要是一种无连接协议,该协议用于在因特网环境中交换的分组(一般称之为“数据报”)的互联网络路由选取、分段和组装,并且该协议依赖于针对端对端可靠性和其他服务特性的传输协议。这种传输协议的示例是TCP协议,TCP协议由传输层304实现,并向因特网体系结构的更高层协议提供面向连接的端对端可靠性服务。术语TCP/IP一般用于指代因特网体系结构。
具体而言,互联网络层306关注如何通过网络转发分组,但是它并不直接关注如何计算FIB。诸如边界网关协议版本4(BGP)之类的域间路由选取协议被用于执行通过计算机网络的域间路由选取(用于互联网络层)。域间路由器200(下文称之为“对等路由器”)经由可靠的传输层连接(例如TCP)在自治系统之间交换路由选取和可达性信息。邻接关系是出于交换路由选取消息和提取网络拓扑的目的而在所选对等路由器之间形成的关系。BGP协议“运行”在TCP传输层304顶部,以确保路由选取消息在对等路由器间的可靠传输。
为了根据BGP协议执行路由选取操作,每个域间路由器200维护路由选取表235,该路由选取表235列出了到每个网络的所有可行路径。路由器还在它们的路由选取表改变时,利用路由选取更新消息400来交换路由选取信息。路由选取更新消息由更新路由器生成,以向其遍布在计算机网络中的相邻对等路由器中的每一个广告最佳路径。这些路由选取更新允许自治系统的BGP路由器构建网络拓扑的一致且最新的视图。
图4是传统的BGP更新消息400的示意性框图,该消息400包括多个附接到头部410的字段。不可行路由长度字段402指示撤回路由字段404的总长度,撤回路由字段404被例示为包含已撤出服务的路由的IP地址前缀的列表。总路径属性长度字段406指示路径属性字段500的总长度,网络层可达性信息字段408被例示为包含IP(例如IPv4)地址前缀的列表。注意,一组路径属性和一个前缀的组合被称为“路由”,而“路径”是由给定对等体通告的路由的实例;术语“路由”和“路径”在这里可互换使用。更新消息400的格式和功能在RFC 1771和“Interconnections,Bridges and Routers”中有所描述。
具体而言,路径属性字段500包括一系列字段,其中每个字段以三元组(即属性类型、属性长度、属性值)的形式描述路径属性。图5是路径属性字段500的示意性框图,该字段500包括多个子字段,其中包括标志子字段502、属性类型子字段504、属性长度子字段506和属性值子字段508。具体而言,属性类型子字段504指定多个属性类型码中的一个,所述属性类型码的示例包括自治系统(AS)路径、多出口区分器(MED)码和团体属性,团体属性是可应用于路由的一组不透明32位标签。MED是一种可选的非传递属性,其具有这样的值,该值可被更新BGP路由器的判决算法用于在到相邻AS的多个出口点之间进行区分,如这里将进一步描述的。注意,路径属性是从配置和协议(即从BGP协议传播的)信息的组合中导出的。
BGP体系结构
图6是示出BGP协议的体系结构的示意性框图。对等体经由TCP连接602通告路由选取更新。BGP协议“监听”路由选取更新消息400并将针对每个连接获知的所有路由存储在BGP数据库中。BGP数据库在例示为组织为邻接关系RIB入(Adj-RIB-In 610)、邻接关系RIB出(Adj-RIB-Out 640)和本地RIB(loc-RIB 620)。每个对等体/TCP连接602与一个Adj-RIB-In 610和一个Adj-RIB-Out 640相关联。注意,这种关联是概念上的数据结构;对于每个对等体,一般不存在单独的Adj-RIB-In/-Out数据库。
BGP协议对针对每个连接602“获知”的所有路由运行进入策略,并且匹配的那些路由被存储在该连接特有的Adj-RIB-In 610中。附加进入策略650(过滤)随后被应用到那些存储的路由,可能经修改的路由被安装在loc-RIB 620中。loc-RIB 620一般负责从所有经策略修改的Adj-RIB-In路由的并集中选择每个前缀的最佳路由,从而得到被称为“最佳路径”的路由。最佳路径的集合随后被安装在全局RIB 630中,并在全局RIB 630中与来自其他协议的最佳路径竞争以成为最终选择用于转发的“最优”路径。此后,对最佳路径的集合运行外出策略660,其结果被放置在适当的Adj-RIB-Out 640中,并经由已从其获知了路由选取更新消息400的TCP连接602被通告给各自的对等体。应该注意,这样的外出路由广告不一定跟在全局RIB下载后面,即可以在将路由下载到全局RIB之前运行外出策略,或可以使两者并行执行。
在BGP协议内执行的很多功能或任务是在彼此独立的路由选取数据的不同子集上执行的。这些任务包括(1)根据draft-ietf-idr-bgp4-22.txt(Section 8)描述的BGP有限状态机(FSM)跟踪每个对等体的状态,并对FSM事件作出响应,(2)解析接收自每个对等体的更新消息400并将它们放置在该对等体的Adj-RIB-In 610中(Section 3),以及(3)对该对等体应用进入策略650以过滤或修改Adj-RIB-In中接收到的更新。BGP实现还(4)计算针对Adj-RIB-In的集合中的每个前缀的最佳路径并将这些最佳路径放置在loc-RIB 620中(Section 9)。随着对等体数目的增长,每个前缀的路径数目一般也会增长,因此,该计算变得更加复杂。由BGP实现执行的附加任务包括(5)对在loc-RIB中的所有所选路径上的每个对等体应用外出策略660以过滤或修改这些路径,并将过滤和修改后的路径放置在该对等体的Adj-RIB-Out 640中,以及(6)对更新消息400格式化,并基于每个对等体的Adj-RIB-Out中的路由将其发送到该对等体。
任务(1)、(2)和(3)是针对每个对等体定义的,并仅对从该对等体获知的路由选取数据执行操作。对给定对等体执行这些任务中的任何一个任务的过程与对任何其他对等体执行相同任务的过程相互独立。任务(4)检查来自所有对等体的所有路径,以将它们插入到loc-RIB中并确定每个前缀的最佳路径。如下所述,新的部分最佳路径技术通过将该任务f划分成多个子任务来分布该任务。任务(5)和(6)与任务(1)、(2)和(3)类似,也是针对每个对等体定义的。虽然任务(5)和(6)都必须访问在任务(4)中确定的最佳路径的集合,但它们对每个对等体生成路由选取数据的过程是独立于所有其他对等体的。因此,只要每个任务具有对所需数据的访问权限,每个数据子集和对数据子集执行的任务的自治性就使它们适合于分布到n路SMP路由器中的多个进程或线程中或集群中的多个节点中。所需数据包括(i)来自对等体的用于任务(1)、(2)和(3)的进入路由;(ii)所有Adj-RIB-In中用于任务(4)的所有路径;以及(iii)用于任务(5)和(6)的最佳路径的集合。
在所示实施例中,提供了分布式软件体系结构,该体系结构将诸如BGP之类的路由选取协议实现为运行在路由器的一组处理器上的一组进程。这些分布式进程以这样的方式协作:在内部采用处理器的分布式集合,但从外部来看却呈现出与网络中其对等体通信的单个路由选取协议进程的表现/行为。该体系结构的分布式本质不是通过改变基本BGP路由选取协议来实现的,而是通过将协议的某些功能/任务划分到多处理器路由器中的各种进程来实现的。
分布式软件体系结构的BGP实现
图7是分布式软件体系结构的BGP实现700的示意性框图。所示分布式BGP实现包括多个进程,其中包括一个或多个BGP发言人(speaker)进程710和BGP路由选取信息库(“bRIB”)进程720,其中每个BGP发言人进程710负责管理一组路由选取对等体。BGP发言人710对BGP实现中的大多数处理代价负责。多个BGP发言人的使用通过实现任务(例如分组接收、分组发送和分组格式化)的划算的处理来提供充分的缩放特征。每个BGP发言人一般负责(i)处理(终止)一个或多个BGP对等连接,(ii)存储和“获知”针对每个前缀接收自其对等体的通告的路径,以及(iii)根据这里描述的部分最佳路径技术执行第一阶段的路由选择以针对每个前缀选择部分最佳路径,从而形成一组部分最佳路径,等等。
具体而言,每个BGP发言人(i)建立和维护到每个路由选取对等体的可靠的TCP连接并处理对等体的FSM事件,(ii)接收和处理接收自对等体的更新消息400,以获知针对每个前缀通告的多个路径,(iii)对获知的路径应用进入策略650,(iv)针对每个前缀选择部分最佳路径以形成被放置在Adj-RIB-In 610中的一组部分最佳路径,并将该组部分最佳路径转发到bRIB 720,以及(v)从bRIB 720接收针对每个前缀的至少一个最佳路径,并在对每个路由选取对等体应用了外出策略660之后将其广告给该对等体。在分布式软件体系结构中,策略计算由BGP发言人“绑定”到的单独的软件组件(例如库)处理,但是这些计算也可以作为BGP代码的一部分而“在线”实现。每个BGP发言人710被例示为多线程进程,因此优选地,策略作为BGP发言人线程之一发起的库函数调用来处理。因此,策略计算发生在BGP进程空间内。
策略可被用于限制来自和去往BGP发言人的路由选取信息(即某种形式的访问控制或过滤)的接收或分发,以及操纵路由选取信息中的数据。路由选取策略的示例包括“如果前缀为10.0.0.0/8则匹配”或者“如果前缀以192.168开始并且AS路径以690开始则匹配”。这些策略之一或其两者可被用于以进入方式对对等会话进行过滤,以使BGP发言人只接受满足策略标准的那些路由。策略还可用于以外出方式过滤,以使得只有与策略之一匹配的路由被发送到对等体。此外,策略可被用于对是否传递路由以及是否以某种方式操纵路由执行“进行或不进行”判决。例如,假设策略是“如果路由包含AS号1800,则将团体42添加到路由”。这根据策略控制来操纵包括路由的数据。
若干处理器或节点210可被用于运行发言人710,其中每个处理器的运行完全独立于其他处理器。策略在BGP发言人中运行的一个原因在于策略是“针对每个对等体”来指定的。此外,针对每个策略修改后的路由充当到最佳路径计算的输入,该最佳路径计算进而检查可能已被策略修改的属性。因此,在采用部分最佳路径的实现中,必须在计算部分最佳路径之前应用策略,因为策略会影响最佳路径计算的结果。将功能(例如策略)分布到BGP发言人710中而不是在bRIB 720中对其进行处理的另一原因在于执行策略代码在整个BGP协议中是最昂贵的操作之一。如图所示,在分布式软件体系结构中只有一个bRIB 720,但可能具有多个发言人710。通过将策略代码功能/任务分发给多个发言人,该任务可被划分成很多更小的子任务,并且多个处理器的总强度可被用来执行代码。另外,每个BGP发言人被例示为被分配很多个要管理的路由选取对等体(例如1000个),并且在路由器上配置的每个路由选取对等体被分配给一个发言人。因此,当BGP路由选取对等体数目的增长时,可以将额外的处理器添加到路由器来处理所需的额外处理。
每个BGP发言人710负责向bRIB 720转发(下载)其部分最佳路径的所选集合,这里将进一步描述。bRIB被例示为在BGP路由器200的处理器(RP 210)上执行的进程,该处理器可与充当发言人的那些处理器相分离;或者,bRIB可以与发言人之一共享一个处理器。本领域技术人员将会理解,本发明可以在其他实现上工作,包括在同一处理器上运行分布式BGP体系结构的多于两个(或所有)进程的实现。
BRIB进程720(i)接收和存储接收自每个发言人进程的部分最佳路径,(ii)执行第二阶段的路由选择,以从从所有BGP发言人下载的部分路径(前缀)的所选集合中选择每个前缀的最佳路径,从而形成最佳路径集合(iii)将最佳路径的集合安装到系统路由选取表(即全局RIB 630)中,以及(iv)将所选最佳路径发回所有发言人710,以使它们能够被发送(广告)给它们的路由选取对等体。应该注意,发言人不可以将它们从bRIB获知的路径/路由通告回bRIB。此外,由于只有所有Adj-RIB-In 610中的部分路径被发送到bRIB 720,因此根据BGP协议标准,针对每个前缀的正确的最佳路径由bRIB选择。
全局RIB 730被例示为维护路由器的“系统”路由选取表。系统路由选取表(“路由选取表235”)是包含用于构建FIB 275的转发表的路由选取信息的数据库,所述转发表在对分组执行转发判决时被路由器200的FP所使用。路由选取表235一般指的是包含所有可用路由的数据库,其中包括已被选择用于转发的路由(最佳路径)以及当前未被选择用于转发的备用路由,而转发表指的是那些实际上已被选择用于转发的最优的最佳路径。
loc-RIB 620表示存储了与转发表中路由类似的路由的表。bRIB 720维护loc-RIB 620,其中包括处理loc-RIB中被选择为最佳路径的每个路由/路径并将其下载到全局RIB 730。全局RIB 730维护那些已下载的最佳路径的复本以及从其他路由选取协议下载的其他最佳路径,以便执行第三阶段(最后阶段)的路由选择来选择针对每个前缀的最优的最佳路径,从而形成用于安装在路由选取表235中的最优的最佳路径/路由的集合。全局RIB 730优选地与另一软件组件交互,以将那些最优路径/路由下载到路由器200的所有线路卡260,其中每个线路卡260维护其自己的复本,作为转发表。
在所示实施例中,分布式BGP软件体系结构被组织为使得每个BGP发言人进程710在不同的RP 210上执行。另外,bRIB进程720一般在与执行BGP发言人710的RP相分离的RP 210上执行,从而避免bRIB和发言人对共享资源的争用。例示地,bRIB 720在与全局RIB 730相同的RP210上执行,但这不是必须的,这些进程可以在不同的RP上执行。但是,当将bRIB 720配置为在与全局RIB 730相同的RP上执行时,由于进程经由消息交换执行通信(例如关于路由选择),而消息交换在同一RP210上比通过交换架构250发生得更快,因此路由器的性能提高。本领域技术人员将会理解,可设想这样的备选配置,其包括允许所有进程在同一RP 210上运行,以及允许bRIB和全局RIB是同一进程。
如图所示,分布式软件体系结构的BGP进程以这样的方式协作:尽管这些进程在路由器的不同RP 210上运行,但从外部呈现出单个路由选取协议进程的表现/行为。为了使分布式RP看起来像单处理器BGP,本地分组传输服务被用于向RP分发TCP会话,甚至具有相同目的地IP地址的TCP会话也被分发。因此,从“外部观者”的角度来看,所有RP共享一个或多个相同的IP地址。这不同于处理处理器/路由器的集合的典型方式,在此典型方式中,每个处理器/路由器具有其自己的唯一的IP地址。可被有利地用于本发明的本地分组传输服务的示例在2002年11月12日递交的题为“System and Method for Local Packet Transport Services withinDistributed Routers”的美国专利申请No.10/293,180中有所描述。
路由选择
路由选择是分布式软件体系结构的各种组件(BGP发言人、bRIB和全局RIB)合作的点。具体而言,每个发言人710和bRIB 720执行路由选择过程的一部分。在所示实施例中,路由选择过程包括BGP最佳路径选择算法,即路径向量算法。根据BGP标准,每个BGP路由器向其所有对等体通告其最佳路径的集合。作为这些通告的结果,特定路由器可以从其对等体收集两个或更多个针对某些前缀/网络的路由。例如,路由器可能已经获知两个或更多个到达网络10.1.1.0/24的不同途径;最佳路径选择计算是这样一种方式,其挑选这些路由之一作为“最佳的”并利用该路由为路由器作出转发判决。注意,在多路径BGP的情况下,算法可以挑选多于一个路径作为最佳的。为了被视为多路径,路径必须直到最佳路径选择算法的预定点(例如步骤7)都是相等的;因此这里描述的部分最佳路径技术自动包括任何候选多路径。但是,还应该注意,这多个所选路径仅被下载到全局RIB,在所示实施例中,针对每个前缀,只有一条最佳路径被发回发言人。本领域技术人员将会理解,可设想其他备选方式,包括将多个所选路径中的某些或全部发回发言人。
宽泛地讲,所示BGP最佳路径选择算法包括以下步骤:
1.优选具有最大LOCAL PREF的路径;
2.优选在本地发起的路径,即经由本地聚集或经由内部网关协议(IGP)发起的路径;
3.优选具有最短AS PATH的路径;
4.优选具有最低起源类型的路径,例如LGP低于外部网关协议(EGP),而EGP低于INCOMPLETE;
5.优选具有相同AS的路由中具有最低MED的路径;
6.相对于内部(iBGP)路径,优选外部(eBGP)路径;
7.优选具有最低的到BGP下一跳的IGP度量的路径;
8.优选来自具有最低路由器ID(BGP标识符)的BGP路由器的路由;
9.如果发起者或路由器ID对于多个路径是相同的,则优选具有最小集群ID长度的路径;以及
10.优选来自最低邻居(对等体)地址的路径。
本发明关注部分最佳路径技术,该技术在路由器上的路由选取协议(BGP)实现中分布路由选择。另外,该技术确保接收自路由器的对等体(即“负载”)的已通告路径按正确顺序被比较,以选择最佳路径,该最佳路径随后被路由器用于转发分组和广告给对等体。当在分布式体系接收中被采用时,该技术还减少了存储器占用。为此,部分最佳路径技术增强了由路由器执行的最佳路径选择算法(例如BGP最佳路径选择算法),从而使接收到的路径负载分散到路由器的多个节点或处理元件中,同时维持算法的排序要求。部分最佳路径技术本质上提供了对最佳路径选择算法的增强,其从多个路径中选择路径的子集,该子集是选择最佳路径所需的最小子集。
根据该技术,每个BGP发言人从已接收自分配给它的对等体的路径的集合中选择部分最佳路径的子集,如下所述。在每个发言人中,针对每个前缀的路径被分成若干群组,以使得在每个群组内,最佳路径算法是传递性关系。就是说,对于来自同一群组的路径A、B和C,如果路径A优于路径B,路径B优于路径C,则路径A优于路径C。如何对路径分组的一个示例是根据从其接收到路径的自治系统(AS)对路径分组。
发言人利用标准BGP最佳路径算法来计算每个群组中的最佳路径。然后,发言人执行来自每个群组的最佳路径之间的比较,该比较包括以下步骤:(1)丢弃具有较低优选程度的路径,(2)如果另一路径是在本地发起的,则丢弃已获知的路径,(3)丢弃具有较长AS PATH的路径,并且(4)丢弃具有较高起源的路径。在来自每个群组的最佳路径中,在运行该算法后尚未丢弃的任何路径形成针对该前缀的部分最佳路径的集合,并被发言人发送到bRIB。BRIB随后使用标准BGP最佳路径算法从接收自所有发言人的部分最佳路径中选择针对前缀的最佳路径。更一般地,该技术使发言人能够执行最佳路径算法,直到妨碍总体最佳路径算法具有传递性的第一步骤。
如上所述,标准BGP最佳路径算法不是传递性的,因此,它对路径被比较的顺序施加某些限制,以确保结果是确定性的。排序要求是这样的,即在对前一步骤中没有消除的任何路径对执行比较的下一步骤之前,针对所有路径都已完成算法的每个步骤。这似乎意味着所有路径都必须在步骤1之后被发送到bRIB,因为这是在启动步骤2之前能够针对所有路径(包括来自不同发言人的那些路径)都完成步骤1的唯一途径。但是,如果在进入下一步骤之前在较早步骤中对某些路径的比较的失败导致在该步骤中有一条应该已被消除的路径没有被消除,则该比较失败只会影响最终结果,并且该路径随后可以成为总体上的最佳路径。
当算法是传递性的时,这种情况永远不会发生(假设对于任何路径对,步骤总是以正确的顺序被执行)。例如,考虑以下情况:在路径B在较晚步骤中与另一路径C相比较之前,有两条路径A和B在较早步骤中没有被比较。如果路径A和B已经在较早步骤中被比较过,路径B则应该已经被消除以让位于路径A,就是说,路径A优于路径B。现在,当路径B和C被比较时,如果B优于C,则(根据传递性)路径A也优于路径C,并且无论比较发生的顺序如何,路径A都被正确地选择为总体上的最佳路径。如果路径C优于路径B,则无论比较顺序如何,路径B都在其第一次与其他路径比较时被消除,而总体上的最佳路径是路径A和C中的优选者。在任何一种情况下,路径B都无法成为总体上的最佳路径。
因此,当算法是传递性的时,发言人可以安全地在后面的步骤中进行比较,即使不是所有路径都已在较早步骤中被比较也是如此(因为来自不同发言人的路径尚未被比较)。当比较在同一AS中发起的路径时,算法整体上是传递性的,发言人可以对从同一AS发起的路径的每个路径群组运行标准BGP最佳路径算法。当比较在不同自治系统中发起的路径时,算法仅对步骤1-4是传递性的。这意味着发言人可以在步骤4之前比较来自每个群组的最佳路径,但是到此时为止没有被消除的任何路径都必须作为部分最佳路径被发送到bRIB。bRIB能够在进行到下一步骤之前对在每个步骤时来自所有不同发言人的部分最佳路径进行比较,从而达到排序要求。
当比较来自不同自治系统的路径时该算法在步骤4之后不是传递性的的原因在于步骤5(MED比较)仅在比较来自同一AS的路径时应用。当比较来自不同自治系统的路径时,步骤5被跳过。这意味着可能具有这样的路径A、B和C,其中A和B来自一个AS,而C来自另一AS,并且根据该算法,A优于B,B优于C,而C优于A。对于来自一个AS的路径A和B和来自不同AS的路径C,如果路径A具有MED 10和IGP度量30,路径B具有MED 20和IGP度量10,而路径C具有MED 20和IGP度量20,这三条路径的所有其他参数都相同,并且回想一下,对于MED(步骤5)和IGP度量(步骤7)两者,都是具有较低值的路径被优选,那么就将发生上述情况。注意,如果所有这三条路径都来自同一AS,则传递性将被恢复,因为路径A将优于路径C。
操作性地,每个BGP发言人对存储在其Adj-RIB-In 610中的所有路由/路径运行步骤1-4。在步骤5之前“失败”的任何路径都被从部分最佳路径的候选群组中删除。在剩余的部分最佳路径中,来自每个不同邻居AS的路径在步骤5中被看作一个群组。对于每个不同的邻居AS,只有一个路径被选为部分最佳路径。该第一阶段路由选择中存活的部分最佳路径的集合被下载到bRIB 720,bRIB 720将来自所有发言人710的所有这样的部分最佳路径收集起来,并对它们运行BGP最佳路径选择算法的至少步骤5-10,以计算最终最佳路径的集合。应该注意,只有在bRIB比较接收自同一发言人的路径的情况下,它才能仅执行步骤5-10。当比较接收自不同发言人的路径时,bRIB 720必须执行完全BGP最佳路径选择算法。
loc-RIB 620在概念上包括BGP选择算法的输出;因此bRIB 720和loc-RIB 620不完全相同。bRIB 720包含被考虑选择到loc-RIB 620中的所有部分最佳路径,然后bRIB执行第二阶段的路由选择。注意,bRIB 720优选地运行BGP最佳路径选择算法从头到尾的所有步骤(步骤1-10),这是因为特定发言人可能已经选择一条路径作为局部部分最佳,该路径随后在算法的例如步骤2中败给另一发言人的局部部分最佳路径。然而,bRIB 720仍旧受益于在每个发言人710处执行的有限计算,因为基于下述实现,它不需要对如此之多的路径运行整个选择算法,发言人也无需将如此之多的路径传输到bRIB,所述实现是这样的:发言人和bRIB没有在处理器210上运行,在处理器210中,路径被存储在共享的存储器中,该存储器可以被发言人和bRIB快速访问。还要注意,当比较来自同一发言人的路径时,bRIB可以跳过算法的步骤1-4,如上所述。
一旦bRIB计算loc-RIB 620,路由选择过程中的下一功能就将生成用于线路卡260的FIB 275的转发表。BRIB提取出loc-RIB的最终最佳路径/路由,并将它们下载到全局RIB 730。由于在路由器200上除了BGP还可能运行有其他协议,因此全局RIB收集从其他路由选取协议提取出的路由(例如OSPF和IS-IS路由)以及本地配置的路由和静态路由,并且执行它自己的(第三和最终)阶段的路由选择,以选择对在路由器上执行的所有路由选取协议来说最优的最佳路径的集合。例如,全局RIB 730检查BGP最终的最佳路径/路由,并确定它是否是针对特定目的地的唯一路由;如果是,全局RIB则选择该路由作为最优的最佳路径。但是,如果从BGP和例如OSPF都提供了去往目的地的最终的最佳路径(“冲突”),则全局RIB必须选择一个。
具体而言,全局RIB 730从各种协议中选择最优的最佳路径,其中在不同协议的输出之间可能存在冲突。通过检查来自不同协议的路由选择输出,全局RIB 730是确定哪些路由被选为去往目的地的最优路径的最终仲裁者。具有不同目的地的路由永远不会冲突,因此当存在具有相同目的地的两条或更多条路由时会出现这个问题。例如,假设从OSPF得到一条去往10.0.0.0/8的路由,从BGP得到一条去往10.0.0.0/8的路由;全局RIB则必须选择一条安装在路由选取表235中。全局RIB 730可应用来确定安装哪条路由的标准例如可以是:总是优先于BGP使用OSPF。一旦全局RIB已提出了其冲突解决方案,其本质上就可以选择用于安装在FIB中的路由了。路由器中的其他软件组件随后将来自全局RIB的路由下载到线路卡260的FIB 275中。
当生成要发送到其对等体的更新消息400时,每个BGP发言人710可以应用被配置用于将来自其他协议的路由重新分发到BGP的策略,路由的重新分发是通过全局RIB 730更新(传输)那些最优的最佳路径到bRIB 720中而发生的。例如,重新分发可能发生在从OSPF到BGP中,这意味着所有活动的OSPF最优最佳路径(已被放置到全局RIB中的那些)都被复制到bRIB 720的BGP路由选取表中。这些重新分发的协议路由不取代loc-RIB中的那些路由,而是加强它们以在本质上被纳入BGP最佳路径选择算法的考虑中。注意,loc-RIB中已被下载到全局RIB的最佳路径此后不被上载回bRIB。此外,如果重新分发的路径被bRIB选为最佳路径并被安装到loc-RIB 620中,则它随后不再被下载到全局RIB中(因为该路径就来源于全局RIB)。
BRIB 720将loc-RIB 620的复本发送到每个BGP发言人710,BGP发言人710对这些loc-RIB最佳路径/路由执行外出策略操作。作为策略操作的结果,发言人计算用于对等路由器的Adj-RIB-Out 640的路由子集。BGP发言人随后基于Adj-RIB-Out 640中的路由的内部数据表示来创建一个或多个BGP更新消息400,并将这些更新消息发送到对等体。如上所述,BGP协议是递增协议,因为更新消息是递增的。尽管Adj-RIB-Out640具有很多(例如一百万个)路由,但是只有已经改变(包括撤回)的路由被包括在更新消息中。BGP发言人710在利用更新消息400发送数据之前,还可以对数据执行某种操纵/改变。BGP更新消息一旦被创建,就被传递到TCP层和网络协议栈的其他更低层,在这些层,消息被格式化并作为分组经由通信链路被发送到对等路由器。
图8是示出与根据本发明的部分最佳路径技术相关的步骤序列的流程图。该技术例如被描述为响应于在路由器200处接收以及从路由器200发送的更新消息而在分布式BGP体系结构上工作。这些更新消息进而与路由器中的路由选择结合使用。该序列开始于步骤800并前进至步骤802,其中每个BGP发言人接收到来自其对等体的更新消息400,并且在步骤804中,BGP发言人通过对在这些消息中通告的路由应用进入策略来处理这些接收到的消息。在步骤806处,发言人执行第一阶段的路由选择,以选择部分最佳路径并将这些路径安装在Adj-RIB-In 610中,如这里所描述的。部分最佳路径随后在步骤808中被下载到bRIB 720。
bRIB进而检查其接收自各种BGP发言人的所有部分最佳路径,并在步骤810中执行第二阶段的路由选择,以选择最佳路径/路由(基于每个前缀)。在步骤812中,bRIB 720将选择的最佳路径/路由下载到路由器的全局RIB 730,在步骤814中,路由器执行第三(以及最后)阶段的路由选择以选择最优的最佳路径/路由。在步骤816中,bRIB将在步骤810中计算出的这些最佳路径/路由上载到每个BGP发言人。在步骤818中,BGP发言人710还通过对这些最佳路径/路由应用外出策略来执行处理,并在步骤820中,判断所应用的策略是否阻挡了先前发送的一个或多个路由的传输。如果是,则利用更新消息400的撤回路由字段404使这些路由撤出服务(步骤822)。否则,发言人在步骤824中将最佳路由作为更新消息发送(广告)到其对等体,该序列在步骤826结束。
应该注意,新的部分最佳路径技术与最佳路径选择算法一样也是一种排序算法,其按算法定义的顺序对路径排序。因此,该新技术可以以其他方式被使用。在所示实施例中,部分最佳路径技术是在减小了从每个发言人转发到bRIB的数据量的分布式BGP实现的上下文中被描述的。就是说,所示实现减小了必须从每个发言人转发到bRIB的路径数目,因此减少了最终必须被比较的路径的数目。但是,本发明也可用于可有利地使用该技术的特性的非分布式环境或其他环境。
例如,可有利地用于本发明的备选实施例包括SMP计算机环境和具有多个用于执行BGP进程的线程的多线程处理环境的非分布式实现。SMP计算机环境可被配置为多个处理元件(例如处理器),这些处理元件被配置为流水线的级,而多个线程可以共享公共存储器和具有多个“内核”的处理元件,其中每个内核具有算术逻辑单元、一组寄存器、指令解码单元等等。或者,多线程环境可以包括两个单内核处理器,其中每个具有一个执行线程。另一备选实施例可以包括被配置用于执行第一阶段路由选择的第一处理器以及执行第二阶段的第二处理器的阵列。
对于每个备选实施例,部分最佳路径技术可以允许将最佳路径选择算法划分成多个(例如2个)阶段,从而使路由选择能够并行执行,而不是像现有技术那样串行执行。就是说,第一处理器(或第一线程)运行第一阶段的部分最佳路径路由选择以选择一组部分最佳路径,而第二处理器(或第二线程)对部分最佳路径运行第二阶段的完全最佳路径路由选择以选择一组最佳路径。虽然本发明的技术由于第二阶段无需访问第一阶段的所有存储器而减少了分布实现中的存储器占用,但是在非分布式实现中,该技术通过将路由选择划分成部分最佳路径和完全最佳路径比较操作而允许使用多个处理器或线程。这进而允许多个处理器或线程基本同时地执行算法,并更加有效地利用路由器资源来实现性能改善。
有利的是,新的部分最佳路径技术提供了对最佳路径选择算法的增强,其允许BGP最佳路径选择进程被分布在路由器的多个处理元件中。该技术无需在单个元件处存储所有通告的路径,同时保持了算法的正确性。通过将接收到的路径负载划分成子集,负载可被存储在发言人可快速(或单独)访问的存储器中。发言人随后可以对这些路径子集执行第一阶段的路由选择(比较操作),以使bRIB只需要比较这些子集操作的输出。部分最佳路径技术因此允许最佳路径选择算法被分布到多个阶段中或在多个阶段执行,从而减少了路由器中的存储器占用。
具体而言,分布式软件体系结构上的部分最佳路径技术的实现能够将工作量划分到多个进程中,从而实现可缩放性更强的BGP实现,该实现能够允许用户具有将资源专用于特定对等体群组的能力,同时保持单个BGP协议实例的外部表现。如上所述,BGP实现还可以被划分到多处理器路由器中的若干处理器(或多节点集群中的节点)中,以使所需总处理被分布在多个处理器中,而不是集中在单个处理器中。随着路由选取对等体数目的增长,附加处理器可被添加到路由器中以处理所需的额外处理,从而避免单个处理器过载并因此不利地影响协议的收敛时间。
新技术还具有“数据减少”的优点。通过对在每个发言人处的每个子集运行第一阶段路由选择,在第二阶段路由选择时所需的比较操作更少,即使bRIB被例示为对接收到的部分最佳路径执行完整的最由路径选择算法也是如此。
虽然已经示出和描述了在路由器上的路由选取协议实现中分布路由选择的部分最佳路径技术,但是将会理解,在本发明的精神和范围内可以执行各种其他改变和修改。例如,在本发明的备选实施例中,提供了配置选项(“总是比较MED”),其提高了BGP最佳路径选择算法的效率。如果该配置选项被启用,则无论是从哪个AS获知路由,都将MED属性与所有路由相比较。在此情况下,每个BGP发言人710可以运行整个最佳路径选择算法。由于每个发言人针对每个前缀只下载一个路径/路由,而不是像采用典型MED行为那样必须采用(可能)若干路由,因此该选项大大减少了bRIB 720必须处理的数据量。但是,如果多路径也被启用,则针对每个前缀仅下载一条路径是不够的;每个发言人必须将所有候选多路径(上至为多路径配置的最大值)下载到bRIB。
之前的描述针对本发明的特定实施例。但是,将会意识到,对所述实施例执行其他变化和修改,也可以达到本发明的某些或全部优点。例如,显而易见,本发明的教导,包括这里所述的各种进程,可被实现为软件,包括具有在计算机、硬件、固件及其组合上执行的程序指令的计算机可读介质。另外,将会理解,这里所述的数据结构可以包括附加信息,同时仍保持在本发明范围内。此外,本发明的分布式软件体系结构可以一般地应用于距离向量路由选取协议(例如IGRP、EIGRP或RIP)以及标记分布协议(LDP)。因此,以上描述应当以示例方式来理解,不应另外限制本发明的范围。因此,所附权利要求书的目的在于覆盖落入本发明的真实精神和范围内的所有这样的变化和修改。

Claims (11)

1.一种用于在在计算机网络的一路由器上执行的边界网关协议BGP的实现中分布BGP最佳路径选择的方法,该方法包括以下步骤:
在在所述路由器上执行的所述BGP的多个发言人中接收从所述路由器的对等体通告的路径;
在所述多个发言人中执行第一阶段路由选择来选择部分最佳路径,所述第一阶段路由选择包括:将针对每个前缀的通告的路径分割成多个群组以使得在每个群组内BGP最佳路径选择算法具有传递性关系,在发言人处利用所述BGP最佳路径选择算法计算每个群组中的最佳路径,在来自每个群组的每个最佳路径之间执行比较,以及从还未通过在每个发言人处运行所述算法被丢弃的任何路径形成一组部分最佳路径;
将所述部分最佳路径转发到在所述路由器上执行的所述BGP的BGP路由选取信息库bRIB;
在所述bRIB中执行第二阶段路由选择以选择最佳路径;以及
将选择的最佳路径发送到所述多个发言人以通告给所述对等体。
2.如权利要求1所述的方法,还包括以下步骤:
提供被配置用于运行所述多个发言人的多个第一处理器;以及
提供被配置用于运行所述bRIB的第二处理器。
3.如权利要求1所述的方法,其中所述分割步骤包括以下步骤:根据从其接收到所述路径的自治系统AS来对所述路径进行分组。
4.如权利要求1所述的方法,其中所述执行比较的步骤还包括以下步骤:
选择具有最高优选程度的路径;
优先于获知的路径选择本地发起的路径;
选择具有最短AS路径的路径;以及
选择具有最低起源的路径。
5.如权利要求1所述的方法,其中所述执行第二阶段路由选择的步骤包括以下步骤:利用完全BGP最佳路径选择算法从接收自所有发言人的部分最佳路径中选择每个前缀的最佳路径。
6.一种适合于在在计算机网络的一路由器上执行的边界网关协议BGP的实现中分布BGP最佳路径选择的系统,该系统包括:
在所述路由器上执行的所述BGP的多个发言人,所述多个发言人被配置用于接收从所述路由器的对等体通告的路径,以及执行第一阶段路由选择来选择部分最佳路径,所述第一阶段路由选择包括:将针对每个前缀的通告的路径分割成多个群组以使得在每个群组内BGP最佳路径选择算法具有传递性关系,在发言人处利用所述BGP最佳路径选择算法计算每个群组中的最佳路径,在来自每个群组的每个最佳路径之间执行比较,以及从还未通过在每个发言人处运行所述算法被丢弃的任何路径形成一组部分最佳路径;
在所述路由器上执行的所述BGP的路由选取信息库bRIB,该bRIB被配置用于响应于由所述多个发言人转发的所述部分最佳路径来执行第二阶段路由选择以选择最佳路径,所述bRIB还被配置用于将选择的最佳路径发送到所述多个发言人以通告给所述对等体。
7.如权利要求6所述的系统,还包括:
被配置用于运行所述多个发言人的多个第一处理器;以及
被配置用于运行所述bRIB的第二处理器。
8.如权利要求6所述的系统,其中所述群组是根据从其接收到所述路径的自治系统AS来组织的。
9.如权利要求6所述的系统,其中所述发言人通过以下步骤来执行比较:(1)丢弃具有较低优选程度的路径,(2)如果另一路径是本地发起的,则丢弃获知的路径,(3)丢弃具有较长AS路径的路径,以及(4)丢弃具有较高起源的路径。
10.如权利要求6所述的系统,其中所述bRIB利用完全最佳路径选择算法来执行所述第二阶段路由选择,以从接收自所有发言人的部分最佳路径中选择每个前缀的最佳路径。
11.一种适合于在在计算机网络的一路由器上执行的边界网关协议BGP的实现中分布BGP最佳路径选择的装置,该装置包括:
用于在在所述路由器上执行的所述BGP的多个发言人中接收从所述路由器的对等体通告的路径的装置;
用于在所述多个发言人中执行第一阶段路由选择来选择部分最佳路径的装置,所述第一阶段路由选择包括:将针对每个前缀的通告的路径分割成多个群组以使得在每个群组内BGP最佳路径选择算法具有传递性关系,在发言人处利用所述BGP最佳路径选择算法计算每个群组中的最佳路径,在来自每个群组的每个最佳路径之间执行比较,以及从还未通过在每个发言人处运行所述算法被丢弃的任何路径形成一组部分最佳路径;
用于将所述部分最佳路径转发到在所述路由器上执行的所述BGP的BGP路由选取信息库bRIB的装置;
用于在所述bRIB中执行第二阶段路由选择以选择最佳路径的装置;以及
用于将选择的最佳路径发送到所述多个发言人以通告给所述对等体的装置。
CN2004800335315A 2003-12-23 2004-12-17 在路由选取协议的实现中分布路由选择的系统和方法 Active CN1883146B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/743,973 2003-12-23
US10/743,973 US7023808B2 (en) 2003-12-23 2003-12-23 System and method for distributing route selection in an implementation of a routing protocol
PCT/US2004/042667 WO2005062819A2 (en) 2003-12-23 2004-12-17 System and method for distributing route selection in an implementation of a routing protocol

Publications (2)

Publication Number Publication Date
CN1883146A CN1883146A (zh) 2006-12-20
CN1883146B true CN1883146B (zh) 2012-07-18

Family

ID=34678728

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800335315A Active CN1883146B (zh) 2003-12-23 2004-12-17 在路由选取协议的实现中分布路由选择的系统和方法

Country Status (6)

Country Link
US (1) US7023808B2 (zh)
EP (1) EP1698089B1 (zh)
CN (1) CN1883146B (zh)
AU (1) AU2004308327B2 (zh)
CA (1) CA2548003A1 (zh)
WO (1) WO2005062819A2 (zh)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7860115B1 (en) * 2003-12-18 2010-12-28 Cisco Technology, Inc. Withdrawing multiple advertised routes based on a single tag which may be of particular use in border gateway protocol
KR100591107B1 (ko) * 2004-02-02 2006-06-19 삼성전자주식회사 분산 구조 라우터의 라우팅 처리 방법 및 그 장치
US7499459B1 (en) * 2004-02-05 2009-03-03 Cisco Technology, Inc. Partitioned routing information base
US8265058B2 (en) * 2004-02-05 2012-09-11 Ericsson Ab Method and an apparatus for route selection in routing protocols
US7664110B1 (en) 2004-02-07 2010-02-16 Habanero Holdings, Inc. Input/output controller for coupling the processor-memory complex to the fabric in fabric-backplane interprise servers
US7757033B1 (en) 2004-02-13 2010-07-13 Habanero Holdings, Inc. Data exchanges among SMP physical partitions and I/O interfaces enterprise servers
US7685281B1 (en) 2004-02-13 2010-03-23 Habanero Holdings, Inc. Programmatic instantiation, provisioning and management of fabric-backplane enterprise servers
US7561571B1 (en) 2004-02-13 2009-07-14 Habanero Holdings, Inc. Fabric address and sub-address resolution in fabric-backplane enterprise servers
US7843906B1 (en) 2004-02-13 2010-11-30 Habanero Holdings, Inc. Storage gateway initiator for fabric-backplane enterprise servers
US7843907B1 (en) 2004-02-13 2010-11-30 Habanero Holdings, Inc. Storage gateway target for fabric-backplane enterprise servers
US20050198269A1 (en) * 2004-02-13 2005-09-08 Champagne Andrew F. Method and system for monitoring border gateway protocol (BGP) data in a distributed computer network
US7873693B1 (en) 2004-02-13 2011-01-18 Habanero Holdings, Inc. Multi-chassis fabric-backplane enterprise servers
US8868790B2 (en) 2004-02-13 2014-10-21 Oracle International Corporation Processor-memory module performance acceleration in fabric-backplane enterprise servers
US7633955B1 (en) 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
US7953903B1 (en) 2004-02-13 2011-05-31 Habanero Holdings, Inc. Real time detection of changed resources for provisioning and management of fabric-backplane enterprise servers
US7990994B1 (en) 2004-02-13 2011-08-02 Habanero Holdings, Inc. Storage gateway provisioning and configuring
US7860961B1 (en) 2004-02-13 2010-12-28 Habanero Holdings, Inc. Real time notice of new resources for provisioning and management of fabric-backplane enterprise servers
US8145785B1 (en) 2004-02-13 2012-03-27 Habanero Holdings, Inc. Unused resource recognition in real time for provisioning and management of fabric-backplane enterprise servers
US7860097B1 (en) 2004-02-13 2010-12-28 Habanero Holdings, Inc. Fabric-backplane enterprise servers with VNICs and VLANs
US20060029035A1 (en) * 2004-03-25 2006-02-09 Chase Christopher J Method and apparatus for selecting routes for distribution within IP networks
US8713295B2 (en) 2004-07-12 2014-04-29 Oracle International Corporation Fabric-backplane enterprise servers with pluggable I/O sub-system
US20060067337A1 (en) * 2004-09-30 2006-03-30 Netravali Arun N Methods and devices for generating a hierarchical structure for the internet
US7318108B2 (en) * 2004-12-22 2008-01-08 Cisco Technology, Inc. Method and apparatus providing prioritized convergence in border gateway protocol
DE102005003260B4 (de) * 2005-01-24 2008-07-17 Nokia Siemens Networks Gmbh & Co.Kg Iteratives Routing-Verfahren mit pfadabhängiger Routing-Metrik
US7590119B2 (en) * 2005-01-27 2009-09-15 Cisco Technology, Inc. Method and apparatus for context-based prefix updates in border gateway protocol
US20060233174A1 (en) * 2005-03-28 2006-10-19 Rothman Michael A Method and apparatus for distributing switch/router capability across heterogeneous compute groups
US7542467B2 (en) * 2005-03-28 2009-06-02 Intel Corporation Out-of-band platform switch
US7697439B2 (en) * 2005-05-10 2010-04-13 Cisco Technology, Inc. Method of determining transit costs across autonomous systems
US8228818B2 (en) 2005-06-24 2012-07-24 At&T Intellectual Property Ii, Lp Systems, methods, and devices for monitoring networks
US7710899B1 (en) * 2005-08-16 2010-05-04 Cisco Technology, Inc. System and method for speeding border gateway protocol graceful restart
US7948873B2 (en) * 2005-10-17 2011-05-24 Cisco Technology, Inc. Method for recovery of a controlled failover of a border gateway protocol speaker
US7688819B2 (en) * 2006-03-06 2010-03-30 Cisco Technology, Inc. Faster routing protocol convergence using efficient message markup
US20070226456A1 (en) * 2006-03-21 2007-09-27 Mark Shaw System and method for employing multiple processors in a computer system
US7583672B2 (en) 2006-04-05 2009-09-01 Cisco Technology, Inc. Techniques to support asymmetrical static/dynamic adjacency in routers
US9043487B2 (en) * 2006-04-18 2015-05-26 Cisco Technology, Inc. Dynamically configuring and verifying routing information of broadcast networks using link state protocols in a computer network
US7940649B2 (en) * 2006-08-01 2011-05-10 Cisco Technology, Inc. Techniques for graceful restart in a multi-process operating system
US8179905B1 (en) * 2006-09-27 2012-05-15 At&T Intellectual Property Ii, L.P. Method and apparatus for providing communication for virtual private networks
US8892625B2 (en) * 2007-03-20 2014-11-18 Thomson Licensing Hierarchically clustered P2P streaming system
JP5053370B2 (ja) * 2007-05-23 2012-10-17 株式会社ナビタイムジャパン ナビゲーションシステム、経路探索サーバおよび携帯端末装置ならびに経路案内方法
KR100922896B1 (ko) * 2007-10-23 2009-10-20 한국전자통신연구원 Ipc 기반의 포워딩 엔트리 관리 시스템 및 방법
CN101459577B (zh) * 2007-12-14 2012-04-04 上海博达数据通信有限公司 Bgp路由在分布式路由子系统中实现硬件查找的方法
US8059668B2 (en) * 2008-01-25 2011-11-15 Cisco Technology, Inc. Efficient end-to-end proposal/agreement messaging for spanning tree convergence in a computer network
US7940668B2 (en) * 2008-03-21 2011-05-10 Cisco Technology, Inc. Method and apparatus to enable an IPe domain through EIGRP
US8111615B2 (en) * 2008-07-07 2012-02-07 Intel Corporation Dynamic update of route table
US7978612B2 (en) * 2008-10-13 2011-07-12 Cisco Technology, Inc. Two-hop relay for reducing distance vector routing information
US8327444B2 (en) * 2009-04-13 2012-12-04 Verizon Patent And Licensing Inc. Suspicious autonomous system path detection
US8644315B2 (en) * 2009-06-04 2014-02-04 Cisco Technology, Inc. Label distribution protocol label filtering
CN102484650B (zh) * 2009-07-08 2015-06-17 瑞典爱立信有限公司 用于分布面向接收域的连接的方法和设备
US8565247B2 (en) * 2009-08-19 2013-10-22 Brocade Communications Systems, Inc. Techniques for efficiently updating routing information upon shortest path tree computation
US8873563B2 (en) * 2009-09-21 2014-10-28 Brocade Communications Systems, Inc. Techniques for next-hop optimization
US9077607B2 (en) * 2010-07-23 2015-07-07 Force10 Networks, Inc. Border gateway protocol inbound policy optimization
US20180018222A1 (en) * 2010-10-06 2018-01-18 International Business Machines Corporation Router-based routing selection
US9118593B2 (en) 2010-10-07 2015-08-25 Enghouse Networks Limited System and method for best value routing
US8503464B2 (en) 2011-05-20 2013-08-06 Brocade Communications Systems, Inc. Techniques for efficiently updating routing information
CN102546443B (zh) * 2012-03-23 2015-02-11 徐州中矿大华洋通信设备有限公司 一种分布式策略路由的方法
JP2014103514A (ja) * 2012-11-19 2014-06-05 Toshiba Corp 通信装置、通信システムおよびプログラム
US9832102B2 (en) * 2013-08-07 2017-11-28 Telefonaktiebolaget L M Ericsson (Publ) Automatic establishment of redundant paths with cautious restoration in a packet network
CN103997451B (zh) * 2014-06-05 2018-11-09 重庆金美通信有限责任公司 一种有关eigrp与rip混合组网的优化方法
CN105634940B (zh) * 2014-10-27 2020-06-16 中兴通讯股份有限公司 Sr信息获取方法及建立段路由网络的方法
US10097449B2 (en) * 2015-02-20 2018-10-09 Cisco Technology, Inc. Optimized border gateway protocol best path selection for optimal route reflection
CN105516028A (zh) * 2015-12-03 2016-04-20 浙江工商大学 一种bgp协议的主从控制方法
US10642650B2 (en) * 2017-12-13 2020-05-05 Juniper Networks, Inc. Multi-threaded route processing
US10476779B1 (en) * 2018-03-19 2019-11-12 Juniper Networks, Inc. Configuring a topology of devices to support scaling of an exchange point
US10922780B2 (en) 2018-04-10 2021-02-16 Graphisoft Se Method to distribute the drawing calculation of architectural data elements between multiple threads
CN109587061B (zh) * 2018-11-08 2022-04-22 华为技术有限公司 一种路由处理的方法、装置及设备
US11627158B2 (en) * 2019-11-22 2023-04-11 Level 3 Communications, Llc Mitigation of route hijacking techniques in a network
CN113364705B (zh) * 2020-03-06 2022-06-17 烽火通信科技股份有限公司 一种协议报文的处理方法及系统
US11502946B2 (en) 2020-03-10 2022-11-15 Juniper Networks, Inc. Distributed label assignment for labeled routing protocol routes
US11356369B1 (en) * 2020-03-31 2022-06-07 Juniper Networks, Inc. Border gateway protocol update packing for a distributed routing information base
US11218407B2 (en) * 2020-04-28 2022-01-04 Ciena Corporation Populating capacity-limited forwarding tables in routers to maintain loop-free routing
US11784921B2 (en) * 2020-04-30 2023-10-10 Arista Networks, Inc. Route control techniques
US11561823B1 (en) 2020-05-12 2023-01-24 Juniper Networks, Inc. Lockless management of immutable objects by multi-threaded processes using multiple counters
US11762710B2 (en) 2020-06-23 2023-09-19 Juniper Networks, Inc. Multithreaded route processing for routing information display
US11601336B2 (en) 2021-05-18 2023-03-07 Google Llc Assigning routing paths based on interior gateway protocol metric optimization

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519704A (en) * 1994-04-21 1996-05-21 Cisco Systems, Inc. Reliable transport protocol for internetwork routing
CN1349330A (zh) * 2000-10-18 2002-05-15 日本电气株式会社 域间路由选择系统
US6584093B1 (en) * 1998-08-25 2003-06-24 Cisco Technology, Inc. Method and apparatus for automatic inter-domain routing of calls

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5088032A (en) * 1988-01-29 1992-02-11 Cisco Systems, Inc. Method and apparatus for routing communications among computer networks
US5617421A (en) * 1994-06-17 1997-04-01 Cisco Systems, Inc. Extended domain computer network using standard links
US6400681B1 (en) * 1996-06-20 2002-06-04 Cisco Technology, Inc. Method and system for minimizing the connection set up time in high speed packet switching networks
US5881243A (en) * 1997-05-07 1999-03-09 Zaumen; William T. System for maintaining multiple loop free paths between source node and destination node in computer network
US6370119B1 (en) * 1998-02-27 2002-04-09 Cisco Technology, Inc. Computing the widest shortest path in high-speed networks
US6553423B1 (en) 1999-05-27 2003-04-22 Cisco Technology, Inc. Method and apparatus for dynamic exchange of capabilities between adjacent/neighboring networks nodes
US20020021675A1 (en) 1999-10-19 2002-02-21 At&T Corp. System and method for packet network configuration debugging and database
US7180864B2 (en) * 2002-02-27 2007-02-20 Lucent Technologies Inc. Method and apparatus for exchanging routing information within an autonomous system in a packet-based data network
US7424014B2 (en) * 2002-11-12 2008-09-09 Cisco Technology, Inc. System and method for local packet transport services within distributed routers
US20050074003A1 (en) * 2003-10-02 2005-04-07 Ball David Alexander Distributed software architecture for implementing BGP

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519704A (en) * 1994-04-21 1996-05-21 Cisco Systems, Inc. Reliable transport protocol for internetwork routing
US6584093B1 (en) * 1998-08-25 2003-06-24 Cisco Technology, Inc. Method and apparatus for automatic inter-domain routing of calls
CN1349330A (zh) * 2000-10-18 2002-05-15 日本电气株式会社 域间路由选择系统

Also Published As

Publication number Publication date
EP1698089A4 (en) 2007-04-04
WO2005062819A3 (en) 2005-09-29
CA2548003A1 (en) 2005-07-14
US7023808B2 (en) 2006-04-04
CN1883146A (zh) 2006-12-20
EP1698089B1 (en) 2018-04-04
WO2005062819A2 (en) 2005-07-14
AU2004308327A1 (en) 2005-07-14
US20050135256A1 (en) 2005-06-23
AU2004308327B2 (en) 2009-07-16
EP1698089A2 (en) 2006-09-06

Similar Documents

Publication Publication Date Title
CN1883146B (zh) 在路由选取协议的实现中分布路由选择的系统和方法
CN1849783B (zh) 用于实现边界网关协议(bgp)的分布式软件体系结构
US7430176B2 (en) Adaptive timing of update messages transmitted by routers employing the border gateway protocol
US6820134B1 (en) Optimizing flooding of information in link-state routing protocol
US7334047B1 (en) Method and system for selective link state advertisement blocking over a data network area
CN101455030B (zh) 动态共享风险节点组(srng)成员发现
US8576721B1 (en) Local forwarding bias in a multi-chassis router
CN100476791C (zh) 网络中路由协议的平滑关断技术
US7817561B2 (en) Demand-based distribution of internet protocol forwarding information within a router
GB2427786A (en) Routing and forwarding between virtual routers within a single network element
CN101040487A (zh) Igp中的bgp下一跳路由的自动路由标记
US7391730B1 (en) System and method for synchronizing link state databases in a network environment
EP2445147B1 (en) Redirection of requests for target addresses
CN101099341B (zh) 用于调度网络域的内部节点针对可达性事件的扫描的系统和方法
US9282026B2 (en) System and method for improved routing in autonomous systems
US10855572B2 (en) Area abstraction extensions to routing protocols
US8078758B1 (en) Automatic configuration of source address filters within a network device
US12081435B2 (en) Distribution of SRv6 modes of operation via routing protocols
EP2066086A1 (en) Path computing element providing customized objective function

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