CN112583717B - 用于构建下一跳属性变化标签的方法、对等设备和介质 - Google Patents

用于构建下一跳属性变化标签的方法、对等设备和介质 Download PDF

Info

Publication number
CN112583717B
CN112583717B CN201911328985.XA CN201911328985A CN112583717B CN 112583717 B CN112583717 B CN 112583717B CN 201911328985 A CN201911328985 A CN 201911328985A CN 112583717 B CN112583717 B CN 112583717B
Authority
CN
China
Prior art keywords
bgp
peer device
control plane
peers
message
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
CN201911328985.XA
Other languages
English (en)
Other versions
CN112583717A (zh
Inventor
陈伟堂
R·J·绍雷克基
K·G·绍尔科威科兹
J·M·哈斯
S·S·科恩奇瑞
S·R·桑格利
S·赫格德
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.)
Juniper Networks Inc
Original Assignee
Juniper Networks 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 Juniper Networks Inc filed Critical Juniper Networks Inc
Publication of CN112583717A publication Critical patent/CN112583717A/zh
Application granted granted Critical
Publication of CN112583717B publication Critical patent/CN112583717B/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/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • 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/033Topology update or discovery by updating distance vector protocols
    • 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/20Hop count for routing purposes, e.g. TTL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/34Source 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/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • H04L45/507Label distribution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing

Landscapes

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

Abstract

本公开的实施例涉及在网络层可达性信息中构建关于下一跳属性变化的标签序列。改进了将标签绑定到地址前缀的更新消息的使用和处理,使得标签被更高效地使用和/或使得这样的更新消息可以被更高效地处理。距离矢量控制信令协议对等设备从下游对等设备接收控制平面消息,控制平面消息包括:(1)作为下一跳值的、下游设备的网络地址,(2)前缀值,以及(3)与前缀值相关联的至少一个标签。响应于接收到控制平面消息,对等设备生成新控制平面消息,新控制平面消息包括:(1)作为下一跳值的、对等设备的网络地址,(2)来自控制平面消息的前缀值,以及(3)标签堆栈。然后,对等设备将新控制平面消息发送给上游对等设备。

Description

用于构建下一跳属性变化标签的方法、对等设备和介质
技术领域
§1.1技术领域
本说明书涉及通信网络。更具体地,本说明书涉及在通信网络(例如,采用分段路由(SR)的通信网络)中用于转发数据的信令网络信息。
背景技术
§1.2背景信息
尽管本领域技术人员很好地理解了分段路由(SR)和边界网关协议(BGP),但是为了读者的方便,下面对它们分别进行了介绍。
§1.2.1分段路由
互联网最初被设计为通过最低成本的路径提供最优连接性。但是,在当今的互联网中,许多应用提出了比通过最低成本的路径的最优连接性更多的要求。如今,网络运营商的任务是提供高级服务(例如,业务工程和大规模快速重新路由)。为了大规模提供这些高级服务,网络运营商必须降低网络复杂性。分段路由(SR)提供了业务引导的创新方法。它可以应用于长期存在的问题(例如,业务工程和快速重新路由)。当应用于这些问题时,SR可以简化路由协议、网络设计和网络操作。
分段路由(在联网中也称为源分组路由(“SPRING”))是使得入口路由器能够在不依赖于网络中的中间节点的情况下、通过网络中的特定节点和链路集合来引导分组以确定其应采用的实际路径的控制平面架构。在上下文中,术语“源”是指施加明确路线的点。分段路由在“Segment Routing Architecture,”Request for Comments 8402(July 2018,theInternet Engineering Task Force)(被称为“RFC 8402”并通过引用并入本文)中被定义。SPRING通过使用软件定义的网络(SDN)控制器来实现网络自动化,以用于广域网(WAN)分组网络中的业务引导和业务工程。
分段路由利用了源路由范例。节点通过有序的指令列表(称为“分段”)来引导分组。例如,入口路由器(也称为“首端路由器”)可以通过用包含适当隧道组合的分段来前置分组,通过所需的节点和链接集合来引导分组。
§1.2.1.1 SR域
SR域是参与SR协议的节点集。在SR域内,节点可以执行入口、转接或出口过程。图1描绘了其中源节点将分组发送到目的地节点的网络。源节点和目的地节点驻留在SR域之外,但是它们之间的路径遍历SR域。更具体地,当分组到达SR入口节点(R1)处时,入口节点对分组进行策略处理。策略可以将分组与SR路径相关联。策略包括匹配条件和动作。如果分组满足匹配条件,则SR入口节点(R1)可以将分组封装在SR隧道中。SR隧道遍历SR路径到达出口节点(R6)。
SR路径可以被设计成满足任何数目的约束(例如,最小链路带宽、最大路径时延)。尽管SR路径可以遵循到达出口节点的成本最低的路径,但是约束条件可能使得SR路径遵循另一路径。
源节点和SR入口节点可以驻留在独立的硬件平台上(例如,分别在便携式计算机和路由器上),或者源节点和SR入口节点可以驻留在相同的硬件上(例如,分别在虚拟机上和管理程序上)。类似地,SR出口节点和目的地节点可以驻留在独立的硬件平台上,或者在单个平台上。在不太典型的配置中,源节点驻留在SR域内。在这种情况下,源节点也是SR入口节点,因为它执行SR入口过程。类似地,目的地节点可以驻留在SR域内,在这种情况下,目的地节点也是SR出口节点,因为它执行SR出口程序。
§1.2.1.2 SR路径
SR路径是将SR入口节点连接到SR出口节点的分段的有序列表。尽管SR路径可以遵循从入口到出口的成本最低路径,但它也可以遵循另一路径。
不同的SR路径可以共享相同的分段。例如,参考图2,路径A将入口节点A连接到出口节点Z,而路径B将入口节点B连接到相同出口节点Z。路径A和B都遍历分段3。
当SR入口节点将分组封装在SR隧道中时,它将相关联的分段列表编码在隧道报头中。然后,它将分组向下游转发。转接节点对隧道报头进行处理、将分组从当前分段转发到下一分段。由于SR入口节点将路径信息编码在隧道报头中,因此转接节点无需维护关于其支持的每个路径的信息。相反,仅要求转接节点对隧道报头进行处理,将分组从当前分段转发到下一分段。这是SR的主要优点。更具体地,由于不需要转接节点维护路径信息,因此消除了与维护该信息相关联的开销、简化了路由协议、改进了缩放特性并且网络操作的问题变得较少。
§1.2.1.3 SR分段和分段类型
SR分段是使得分组遍历网络拓扑的一部分的指令。虽然分段(即,指令)使得分组遍历网络拓扑的一部分,但它与网络拓扑的该部分不同。SR限定了许多不同的SR分段类型。其中包括“邻接分段”和“前缀分段”。下面将对每种类型的分段进行描述。
§1.2.1.3.1邻接分段
邻接分段是使得分组遍历指定链路(即,与IGP邻接相关联的链路)的指令。图3描绘了将入口节点R1连接到出口节点R6的SR路径。路径包含以下邻接分段:(1)在R1上被实例化的分段1,使得分组遍历链路R1->R2;(2)在R2上被实例化的分段2,使得分组遍历链路R2->R3;以及在R3上被实例化的分段3,使得分组遍历链路R3->R6。如果上述链路中的任一链路不可用,则相关联的邻接分段也不可用。因此,如果上述邻接分段中的任一邻接分段不可用,则整个路径也不可用。
因此,邻接分段是在两个节点之间的特定链路上携载分组而不管链路成本的严格的转发单跳隧道。
§1.2.1.3.2前缀分段
前缀分段是使得分组遍历成本最低路径(或使用所标识的算法确定的路径)到达节点或前缀的指令。参考图4A,假设所有链路都配置有相同的内部网关协议(IGP)度量,并且SR路径将是成本最低(因此也是)最短路径。SR路径将入口节点R1连接到出口节点R6,并包含以下前缀分段:(1)在R1上被实例化的分段1,使得分组遍历从R1到R2的成本最低路径;(2)在R2和R3上被实例化的分段2,使得分组遍历从实例化节点到R6的成本最低路径。因此,当链路全部可用时,SR路径通过上述链路和分段来引导分组。
参考图4B,假设链路R1->R2变得不可用。当发生这种情况时,网络将在R1和R2之间建立新的成本最低路径。该新的成本最低路径包括链路R1->R4和R4->R2。由于网络已在R1和R2之间建立了新的成本最低路径,因此分段1仍然可用,并使得分组遍历新的成本最低路径。分段2的行为不变。因此,路径现在遍历链路R1->R4、R4->R2、R2->R3和R3->R6。
因此,前缀分段是使用等成本多跳感知最短路径链路来到达前缀的多跳隧道。前缀分段标识符(SID)支持IPv4和IPv6前缀。节点分段是前缀分段中使用两个特定节点之间的最短路径链路的特殊情况。
§1.2.1.3.3任播分段
IGP任播分段是标识路由器集合的IGP前缀分段。任播分段基于朝向任播集合的最近节点的等成本多路径感知(ECMP感知)最短路径来强制转发。在任播组内,所有路由器都用相同的分段标识符(SID)值来通告相同的前缀,这有助于负载平衡。因此,任播分段也是前缀分段的一个类型,其标识路由器集合来利用相同的SID值通告相同的前缀。
§1.2.1.4 SR多协议标签切换(MPLS)
在SR-MPLS中,SR路径被编码为MPLS标签堆栈,每个标签堆栈条目表示SR路径中的分段。下面描述了如何使用MPLS标签对邻接分段和前缀分段进行编码。
§1.2.1.4.1使用MPLS标签对邻接分段进行编码
参考图5,SR路径将R1连接到R4。SR路径包含三个邻接分段。分段1使得分组遍历链路R1->R2,分段2使得分组遍历链路R2->R3,并且分段3使得分组遍历链路R3->R4。当R1从SR域外部接收分组时,它将对分组进行策略处理。策略可以使得R1通过图5所示的SR路径转发分组。当这种情况发生时,R1施加了包含两个条目的MPLS标签堆栈。堆栈顶部处的条目表示分段2并携载MPLS标签1002。堆栈底部处的条目表示分段3并携载MPLS标签1003。
施加了MPLS标签堆栈后,R1通过分段1(即,链路R1->R2)转发经封装的分组。当分组到达R2时,R2从标签堆栈中提取顶部标签(即,1002)并在其转发信息库(“FIB”)中搜索对应条目。对应FIB条目包括指令(即,POP(弹出))和下一跳(即,R3)。因此,R2从标签堆栈中弹出顶部标签,然后通过分段2(即,链路R2->R3)转发分组。
当分组到达R3时,R3从其余标签堆栈中提取标签(即,1003),并在其FIB中搜索对应条目。对应FIB条目包括指令(即,POP)和下一跳(即,R4)。因此,R3从标签堆栈中弹出其余条目,并通过分段3(即,链路R3->R4)转发分组。如图5所示,在遍历SR路径后,分组在没有MPLS封装的情况下,到达R4。
§1.2.1.4.2使用MPLS标签对前缀分段进行编码
在图6中,SR路径经由R4将R1连接到R7。SR路径包含两个前缀分段。分段1是使得分组遍历从R1到R4的路径(例如,成本最低路径)的前缀分段。分段2是使得分组遍历从R4到R7的路径(例如,成本最低路径)的前缀分段。在该网络中,假设所有链路都配置有相同的IGP度量(例如,10)。因此,从R1到R4的第一分段的最小成本路径遍历链路R1->R2、R2->R3和R3->R4,而从R4到R7的第二分段的最小成本路径遍历链路R4->R8和R8->R7。
当R1从SR域外部接收分组时,它将分组进行策略处理。策略可以使得R1通过图6所示的SR路径转发分组。当这种情况发生时,R1施加了包含两个条目的MPLS标签堆栈。标签堆栈的顶部条目表示分段1并携载标签2001。标签堆栈的底部条目表示分段2并携载标签2002。施加MPLS标签堆栈之后,R1经由链路R1->R2将经封装的分组转发到分段1中。
当分组到达R2时,R2从标签堆栈中提取顶部标签(即,2001)并在其FIB中搜索对应条目。对应FIB条目包括指令(即,SWAP(交换)-3001)和下一跳(即,R3)。因此,R2利用新值(即,3001)覆写最顶部标签,并将分组转发给R3。
当分组到达R3时,R3从标签堆栈中提取顶部标签(即,3001)并在其FIB中搜索对应条目。对应FIB条目包括指令(即,POP)和下一跳(即,R4)。因此,R3从标签堆栈中弹出最顶部条目,然后通过链路R3->R4将分组转发到分段2中。
当分组到达R4时,R4从标签堆栈中提取其余标签(即,2002)并在其FIB中搜索对应条目。对应FIB条目包括指令(即,SWAP-3002)和下一跳(即,R8)。因此,R4利用新的值(即,3002)覆写其余标签,并将分组转发给R8。
当分组到达R8时,R8从标签堆栈中提取其余标签(即,3002)并在其FIB中搜索对应条目。对应FIB条目包括指令(即,POP)和下一跳(即,R7)。因此,R8从标签堆栈中弹出其余条目,然后在没有MPLS封装情况下,将分组转发到R7。
§1.2.1.4.3倒数第二跳弹出(PHP)和显式空标签
在以上示例中,每个分段都执行PHP过程。即,当分组遍历分段时,分段的倒数第二节点弹出与分段相关联的标签。如果SR路径包含要被遍历的另一分段,则当前分段的出口节点也是下一分段的入口节点。在这种情况下,分组到达该节点时,下一分段的标签暴露在堆栈的顶部。如果SR路径不包含要被遍历的另一分段,则分段的出口节点也是路径的出口节点。在这种情况下,分组在没有MPLS封装的情况下到达路径出口节点。
在某些情况下,如果没有MPLS封装,SR路径中的最终链路可能无法携载分组。例如,分组可以是IPv6,而链路仅支持IPv4。为了防止出现该问题,SR入口节点可以将MPLS显式空标签添加到MPLS标签堆栈的顶部。
当最终分段中的倒数第二节点弹出与最终分段相关联的标签时,它将暴露显式空标签。然后,它将分组转发到路径出口节点。路径出口节点弹出显式空标签,并继续对分组进行处理。
§1.2.1.5分段标识符(SID)的配置和分布
相对于图5和图6所描述的前述示例假设MPLS标签是分布式的,并且每个节点的FIB均已填充。实际上,分段路由采用内部网关协议(“IGP”)(例如,中间系统中间系统(“IS-IS”))并开放最短路径优先(“OSPF”)来通告两个类型的网络分段或隧道-(1)在两个节点之间的特定链路上携载分组、而不考虑链路成本的严格的转发单跳隧道(在上面的§1.2.1.3.1中描述为“邻接分段”),以及(2)使用两个特定节点之间的最短路径链路的多跳隧道(在上面的§1.2.1.3.2中描述为“节点分段”)。
每个分段都与标识符相关联,标识符称为分段标识符(“SID”)。如上所述,分段的有序列表被编码为标签堆栈。分段可以表示任何指令(拓扑指令或基于服务的指令)。分段可以具有分段路由节点或分段路由域内的全局节点的局部语义。分段路由强制通过任何拓扑路径和服务链的流,同时仅在分段路由域的入口节点处保持每流状态。分段路由可以直接应用于MPLS架构,而转发平面上没有变化。分段被编码为MPLS标签。分段的有序列表被编码为标签的“堆栈”或“标签堆栈”。要被处理的分段位于堆栈的顶部(即,标签堆栈的最外层标签)。分段完成后,相关标签会从堆栈“弹出”(即,移除)。
分段路由可以利用新型路由扩展报头应用于IPv6架构。分段被编码为IPv6地址。分段的有序列表在路由扩展报头中被编码为IPv6地址的有序列表。要被处理的分段由路由扩展报头中的指针指示。在分段完成后,指针递增。
第1.2.1.5.1可配置分段路由全局块
如上所述,分段被编码为MPLS标签。分段的有序列表被编码为标签堆栈。节点标签管理器基于针对源分组路由配置的索引范围,为分段路由域中的每个节点分配标签。这些标签基于节点标签管理器管理的动态标签范围的可用性被分配给节点分段。分段路由全局块(“SRGB”)是分段路由中使用的标签值的范围。可用的SRGB标签范围可以针对IS-IS和OSPF协议来进行配置,使得在分段路由域中可以预测标签。因此,将基于动态标签范围的可用性针对分段路由域中的每个节点来分配标签,并且SRGB是被保留用于分段路由的标签值范围。可以提供SID作为要与SRGB基值相加以获得标签值的索引。
IS-IS协议为每个邻接、等级和地址族创建邻接分段(针对IPv4和IPv6各一个)。为所创建的每个邻接分段分配MPLS标签。在分段的邻接状态变为可用(up)状态之后分配这些标签。OSPF协议为每个邻接创建邻接分段。
§1.2.2边界网关协议(“BGP”)
在网络通信系统中,诸如路由器的设备使用协议来交换网络信息。路由器通常对用于将数据分组朝向目的地转发的路线进行计算。一些协议(例如,边界网关协议(“BGP”))允许不同自治系统(“AS”)中的路由器交换可达性信息。
文档“A Border Gateway Protocol 4(BGP-4),”Request for Comments 4271(Internet Engineering Task Force,January 2006)(被称为“RFC 4271”,并通过引用并入本文)描述了边界网关协议(“BGP”)的一个实现。BGP是自治系统间路由协议。以下是RFC4271中描述的BGP版本。BGP发言方的主要功能是与其他BGP系统交换网络可达性信息。该网络可达性信息包括可达性信息遍历的自治系统(AS)列表上的信息。该信息足以用于构建AS连接性图,从AS连接性图中可以修剪路由环路并且在AS级别处可以执行某些策略决策。
通常假设BGP发言方仅向其对等方通告其自身使用的那些路线(在该上下文中,如果BGP路线是最优选的BGP路线并且被用于转发中,则称BGP发言方“使用”了BGP路线)。
通常,经由BGP交换的路由信息仅支持假设路由器仅基于分组IP报头中携载的目的地地址来转发分组的、基于目的地的转发范例。这进而反映了可以(不可以)使用BGP实施的策略决策集合。
BGP使用传输控制协议(“TCP”)作为其传送协议。这消除了实现显式更新分段、重新传输、确认和排序的需要。当两个系统之间形成TCP连接时,它们交换消息来打开并确认连接参数。初始数据流是导出策略允许的BGP路由表的一部分(称为“Adj-Ribs-Out”)。
随着路由表变化,发送增量更新。BGP不需要定期刷新路由表。为了允许本地策略变化在不重置任何BGP连接的情况下具有正确的效果,BGP发言方应当(a)在连接期间保留所有对等方通告给它的路线的当前版本,或者(b)利用路由刷新扩展。
KEEPALIVE(保持存活)消息可以被周期性地发送来确保连接处于活动状态。响应于错误或特定情况而发送NOTIFICATION(通知)消息。如果连接遇到错误情况,则发送NOTIFICATION消息,并关闭连接。
不同AS中的BGP对等方被称为外部对等方,而相同AS中的BGP对等方称为内部对等方。内部BGP和外部BGP通常分别缩写为iBGP和eBGP。如果在不同自治系统中的两个相邻设备(即,两个对等方)之间建立了BGP会话,则会话为外部BGP(eBGP);并且如果在相同AS中的两个相邻设备之间建立了会话,则会话为内部BGP(iBGP)。
如果特定AS具有多个BGP发言方,并且正在为其他AS提供传输服务,则必须注意确保AS内路由的一致性。AS内使用的IGP提供了AS内部路线的一致视图。在某些情况下,假设通过使得AS内所有BGP发言方彼此维护内部BGP(“iBGP”)来提供AS外部路线的一致视图。
已设计了许多路由协议,以在单个管理域中运行。这些协议统称为“内部网关协议”(“IGP”)。通常,为AS内的每个链路分配特定的“度量”值。然后可以为两个节点之间的路径分配“距离”或“成本”,“距离”或“成本”是属于该路径的所有链路的度量之和。IGP通常选择任何两个节点之间的“最短”(最小距离或最低成本)路径,这可能会受到以下约束:如果IGP提供多个“区域”,则它可能优选区域内的最短路径而不是遍历多个区域的路径。通常,网络管理具有可以通过以该方式选择最短路径来近似的某些路由策略。
与IGP区别的BGP被设计为在任意多个管理域(“自治系统”或“AS”)上运行,并且各个管理之间的协调有限。通常,iBGP和IGP都在单个AS的设备上同时运行,并且相互补充。BGP发言方将网络目的地可达性从eBGP会话导入到iBGP会话,并在iBGP更新中设置BGP下一跳属性。BGP NH属性是IP地址。AS内的其他iBGP发言方在接收上述iBGP更新后,向IGP咨询BGP NH的可达性及其成本。如果BGP NH不可达,则整个iBGP更新均无效。否则,在BGP最佳路径选择期间考虑到达BGP NH的IGP成本。
§1.2.2.1示例环境
图7图示了可以在其中使用本发明的示例环境700。示例环境700包括多个自治系统(AS 710a、710b、…、710c)。AS 710a-710c包括BGP路由器705a-705e。AS内的BGP路由器通常运行iBGP,而与另一AS中的BGP路由器对等的BGP路由器通常运行eBGP。如图所示,BGP路由器705b和705c是BGP会话(描绘为720)中的对等方(也称为“BGP发言方”)。在BGP会话720期间,BGP发言方705b和705c可以交换BGP更新(BGP UPDATE)消息。BGP更新消息790的详细信息在下面的§1.2.1.2中进行描述。
§1.2.2.2 BGP“更新”消息
在BGP中,UPDATE(更新)消息用于在BGP对等方之间传递路由信息。UPDATE消息中的信息可用于构建描述各种自治系统之间关系的图。更具体地,UPDATE消息用于向对等方通告共享(多个)公共路径属性值集合的可行路线(或从服务中撤回多个不可行路线)。UPDATE消息可以同时通告可行路线并从服务中撤回多个不可行路线。
如图7所示,UPDATE消息790包括固定大小的BGP报头,并且还包括其他字段(注意,某些所示字段可能不出现在每个UPDATE消息中)。参考图7,“撤回路线长度”字段730是2个八位字节的无符号整数,其指示以八位字节为单位的撤回路线字段740的总长度。如下所述,其值允许确定网络层可达性信息(“NLRI”)字段770的长度。值为0指示没有路线从服务中撤回,并且撤回路线(WITHDRAWN ROUTES)字段740不存在于该UPDATE消息790中。
“撤回路线”字段740是包含针对正从服务撤回的路线的IP地址前缀列表的可变长度字段。每个IP地址前缀被编码为形式为<长度,前缀>的2元组740'。“长度”字段742指示IP地址前缀的以比特为单位的长度。长度为零指示与所有IP地址匹配的前缀(前缀本身为零个八位字节)。“前缀”字段744包含IP地址前缀,随后是使得字段的尾端落在八位字节边界上所需的最小拖尾比特数。注意,拖尾比特的值是不相关的。
仍参考图7,“总路径属性长度”字段750是2个八位字节的无符号整数,其以八位字节指示路径属性字段760的总长度。它的值允许确定网络层可达性信息(“NLRI”)字段770的长度。值为0指示该UPDATE消息中既不存在网络层可达性信息字段770,也不存在路径属性字段760。
“路径属性”字段760是在每个UPDATE消息(除了仅携载撤回的路线的UPDATE消息)中存在的路径属性的可变长度序列。每个路径属性都是可变长度的三元组<属性类型,属性长度,属性值>。“属性类型”是两个八位字节的字段(由属性标志八位字节和随后的属性类型代码八位字节组成)。
最后,“网络层可达性信息”字段770是包含互联网协议(“IP”)地址前缀列表的可变长度字段。网络层可达性信息的长度(以八位字节为单位)未被显式地编码,但可以被计算为:UPDATE消息长度-23-总路径属性长度(回想字段750)-撤回路线长度(回想字段730),其中UPDATE消息长度是在固定大小的BGP报头中编码的值,总路径属性长度和撤回路线长度是在UPDATE消息的可变部分中编码的值,而23是固定大小的BGP报头、总路径属性长度字段和撤回路线长度字段的组合长度。
可达性信息被编码为<长度,前缀>770'形式的一个或多个2元组,其字段在图7中示出并且在此进行描述。“长度”字段772指示IP地址前缀的以比特为单位的长度。长度为零指示与所有IP地址匹配的前缀(前缀本身为零个八位字节)。“前缀”字段774包含IP地址前缀,随后是足够的拖尾比特来使得字段的尾端落在八位字节边界上。注意,拖尾比特的值不相关。
参考图7B,“Multiprotocol Extensions for BGP-4,”Request for Comments4760(Internet Engineering Task Force,January 2007)(被称为“RFC 4760”,并通过引用并入本文)描述了使用BGP UPDATE消息700的(多个)路径属性字段760来携载针对多个网络层协议(例如,IPv6、IPX、L3VPN等)的路由信息的方式。更具体地,RFC 4760定义了两个新的路径属性:(1)多协议可达NLRI(“MP_Reach_NLRI”);(2)多协议不可达NLRI(“MP_Unreach_NLRI”)。第一个用于携载可达目的地集合以及将用于转发到这些目的地的下一跳信息,而第二个用于携载不可达目的地集合。下面仅讨论MP_Reach_NLRI。
参考图7B,MP_Reach_NLRI“路径属性”760’包括地址族标识符(“AFI”)(2个八位字节)字段761、随后的地址族标识符(“SAFI”)(1个八位字节)字段762、下一跳网络地址的长度(1个八位字节)字段763、下一跳的网络地址(可变)字段764、保留(1个八位字节)字段765和网络层可达性信息(可变)字段766。AFI和SAFI字段761和762组合起来标识(1)下一跳字段764中携载的地址必须所属的网络层协议集合,(2)下一跳的地址被编码的方式,以及(3)NLRI字段766的语义。下一跳的网络地址字段764包含到目的地系统的路径上的下一路由器的网络地址。NLRI字段766列出了路径属性760中正在通告的可行路线的NLRI。即,MP_Reach_NLRI 760’路径属性中携载的下一跳信息定义了BGP UPDATE消息中应用作到MP_NLRI属性中列出的(多个)目的地的下一跳的路由器网络层地址。
如果目的地共享相同(多个)属性值集合,则UPDATE消息可以最多通告一个路径属性集合(回想字段760),但是可以通告多个目的地。给定的UPDATE消息中包含的所有路径属性适用于UPDATE消息的NLRI字段770中携载的所有目的地。
从上面对字段730和740的描述中应显而易见的是,UPDATE消息可以列出要从服务中被撤回的多个路线。每个这样的路线都由其目的地(表示为IP前缀)来标识,该目的地在BGP发言方(先前已向路线通告的BGP发言方连接)的上下文中明确标识路线。
UPDATE消息可以仅通告要从服务被撤回的路线,在这种情况下,消息将不包括路径属性760或网络层可达性信息770。相反,UPDATE消息可以仅通告可行路线,在这种情况下,不需要存在“撤回路线”字段740。UPDATE消息不应在撤回路线字段740和网络层可达性信息字段770或MP_REACH_NLRI路径属性字段766中的“NLRI”字段中包含相同的地址前缀。
§1.2.3使用BGP将MPLS标签绑定到地址前缀
文档“Using BGP to Bind MPLS Labels to Address Prefixes,”Request forComments 8277(Internet Engineering Task Force,October 2017)(被称为“RFC 8277”,并且通过引用并入本文)指定了使用BGP来通告指定的路由器已将指定的MPLS标签或组织为标签堆栈的连续部分的MPLS标签的指定序列绑定到指定的地址前缀的过程。参考图7B至图7D,这可以通过发送BGP更新消息来完成,BGP更新消息的NLRI字段766/766'/766”包含前缀778/778'和(多个)MPLS标签774/774',并且其下一跳字段764标识前缀778/778'被绑定到(多个)标签774/774'的节点。
更具体地,参考图7C,RFC 8277的§2.2描述了当不使用多标签功能时的NLRI编码。如果尚未在给定的BGP会话上发送并接收多标签功能,则在该会话的BGP UPDATE(其MP_REACH_NLRI属性包含RFC 8277的§2中指定的AFI/SAFI组合之一)中对NLRI字段进行如图7C所示的编码。更具体地,8比特长度字段722d指定NLRI字段766’的其余部分的以比特为单位的长度。注意,长度将始终为20(标签字段中的比特数)加上3(RSV字段中的比特数)加上1(S字段中的比特数)加上前缀的比特长度的总和,四舍五入到最接近的整数个八位字节。20比特标签字段774包含MPLS标签值。3比特RSV字段776在发送时应设置为零,而在接收时应忽略。1比特S字段777在发送时被设置为1,而在接收时被忽略。
UPDATE消息不仅通告前缀778和标签774之间的绑定;它还经由MP_REACH_NLRI属性的下一跳的网络地址字段764中所标识的节点来向前缀通告路径。
此外,参考图7D,RFC 8277的§2.3指定了如果已在给定的BGP会话上发送并接收了多标签功能,则使用多标签功能时的NLRI编码。在该会话的BGP更新(其MP_REACH_NLRI属性包含RFC 8277的§2中指定的AFI/SAFI组合之一)中,NLRI字段766”如图7D所示进行编码。更具体地,8比特长度字段772’指定了NLRI字段766’的其余部分的以比特为单位的长度。注意,对于每个标签,长度增加24比特(标签字段774’中的20比特,加上RSV字段776’中的3比特,再加上S字段777’中的1比特)。如图所示,若干条目780可以各自包括20比特的标签字段774'(包含MPLS标签值)、3比特的RSV字段776'(应在发送时设置为零,在接收时忽略)以及1比特的S字段777'。在除最后一个标签之外的所有标签中(即,除紧接在前缀之前的标签之外的所有标签中),S比特777'被设置为0。在最后一个标签中,S比特777'被设置为1。注意,最后一个标签中设置的S比特用于对NLRI进行正确解析。
UPDATE消息不仅通告前缀778'和标签774'之间的绑定;它还经由MP_REACH_NLRI属性的下一跳字段764中所标识的节点来向前缀778’通告路径。
§1.2.4 BGP对等和数据存储:常规“RIB”模型
图8是图示常规BGP RIB模型的图,其中BGP发言方与其他BGP发言方(对等方)交互。(例如,回想在图7A中,BGP路由器705b和705c是BGP会话(描绘为720)中的对等方(也称为“BGP发言方”))。在图8中,BGP对等方810与一个或多个其他BGP对等方850进行会话。BGP对等方810包括用于从至少一个外部BGP发言方850接收传入路由信息820的输入(例如,未示出的控制平面接口)。所接收的路由信息被存储在Adj-RIBS-In存储装置812中。存储在Adj-RIBS-In存储装置812中的信息被决策过程814用来使用路由信息选择路线。决策过程814生成“所选择的路线”作为Loc-RIB信息816(用于构建转发数据库)。然后将要被进一步通告给其他BGP发言方的Loc-RIB信息816存储在Adj-RIBS-Out存储装置818中。如830所示,根据路线通告过程,Adj-RIBS-Out存储装置中的至少某些信息随后被提供给至少一个外部BGP发言方对等设备850。
参考通信820和830,回想BGP可以使用BGP UPDATE消息来通信经更新的路线信息。
更具体地,RFC 4271记录了BGP路由协议的当前版本。其中,BGP的路由状态被抽象地划分为三(3)个相关的数据存储库(历史上称为“信息库”),这些数据存储库被创建作为执行BGP管线的一部分。重申一下,Adj-RIBS-In 812描述了从每个(邻接)BGP对等方850获知到的针对所有目的地的路线集合。Loc-RIB 816描述了在选择最佳BGP路线和其他可行的(例如,有效但不是最佳的)备选路线时,BGP决策过程816的结果(可以宽松地认为是路线选择)。Adj-RIBS-Out 818描述了以下过程:从Loc-RIB 816注入所选择的路线(或可能是来自另一协议的外部路线),然后使用BGP协议将其分配给(邻接)BGP对等方850(例如回想UPDATE消息790/830)。
§1.2.5使用BGP将MPLS标签绑定到地址前缀时的限制
RFC 8277的第3节讨论了安装和传播SAFI 4(例如,IPv4或IPv6)路线和SAFI 128(VPN IPv4或VPN_IPv6)路线。(例如,回想图7B的字段762,并参见例如RFC 8277的§2。)更具体地,RFC 8277的§3.2.1描述了当下一跳字段764中的值不变时,(多个)标签字段774/774'的修改,而RFC 8277的§3.2.2描述了当下一跳字段764中的值已变化时,对(多个)标签字段774/774'的修改。假设其中下一跳字段764中的值被变化的场景。
当前,响应于从下游对等方接收经标记的NLRI路径(例如,标签-地址前缀绑定),BGP发言方通过以下方式生成新的BGP更新:(1)修改BGP下一跳属性760/764,以及(2)由单个本地分配的标签替换NLRI 766'/766”中的整个标签序列774/774'。(例如,参见RFC8277。)然后,BGP发言方将新的BGP UPDATE消息重新通告给上游对等方。附加地,BGP发言方还使用适当的条目对其数据平面MPLS转发信息库(FIB)进行编程,其中FIB条目的键是本地标签且FIB条目的操作是“交换”(或“交换-推送”)(多个)标签(从下游对等方获知)。
这样的操作可以使得为每个经标记的前缀分配唯一的标签。因为经标记的前缀的类型很多,并且预期有更多的类型(例如,IPv4、IPv6、VPNv4、VPNv6、着色的IPv4、着色的IPv6、在草案“Inter-Domain Traffic Steering with BGP Labeled Colored Unicast(BGP-LCU),”draft szarecki idr bgp lcu traffic steering 00(InternetEngineering Task Force,July 7,2019)(通过引用并入本文)中定义的类型等),因此,可能会引起问题。因此,在大型的多域网络中,经标记的前缀的数目可能会超过给定BGP发言方数据平面支持的标签空间(甚至可能会超过整个220个标签空间)。即,由于特定设备的数据平面硬件限制(例如,内容可寻址存储器(CAM)和/或静态随机存取存储器(SRAM)的大小、微码限制等),特定设备可能无法容纳220(
Figure GDA0003370610370000161
1百万)个MPLS FIB条目。此外,给定设备支持的整个标签空间(即使它覆盖所有220个标签)也可以被刻到属于特定应用程序的块,从而仅为携载经标记的前缀的BGP分配整个标签空间的一部分。例如,块可能被保留用于管理平面的静态分配,或者另一块可能被保留用于由控制器进行分配等。最后,经着色的IP前缀的使用增加了标签的使用。这是因为对于每个IP目的地,可能需要分配与所支持的颜色一样多的标签。考虑到在不具有颜色的情况下,当前有100,000个边缘节点的网络正在运行,引入具有用于标识每个切片的颜色的网络切片(例如,10个切片)会多次增加所需标签的数目(例如,具有10个颜色的100,000个边缘节点可以消耗一百万个标签)。
此外,在路由重新收敛事件的情况下,在数据平面中对大量MPLS FIB条目进行重新编程可能需要的时间可能会变得过多并限制可缩放性。
如从前文应当理解的,改进将(例如,MPLS)标签绑定到地址前缀的更新消息(例如,BGP UPDATE)的使用和处理将是有用的,使得更高效地使用标签,使得减少要被重新编程的MPLS FIB条目的数目和/或使得可以更高效地处理这样的更新消息。
发明内容
与本说明书一致的示例实施例改进了将(例如,MPLS)标签绑定到地址前缀的更新消息(例如,BGP UPDATE)的使用和处理,使得标签被更高效地使用和/或使得这样的更新消息可以被更高效的处理。这样的示例实施例可以如下进行。距离矢量控制信令协议(例如,BGP)对等设备从下游对等设备接收控制平面消息(例如,BGP更新),控制平面消息包括:(1)作为下一跳值的、下游设备的网络地址,(2)前缀值,以及(3)与前缀值相关联的至少一个标签。响应于接收到控制平面消息,对等设备生成新控制平面(例如,BGP更新)消息,新控制平面消息包括:(1)作为下一跳值的、对等设备的网络地址,(2)来自控制平面消息的前缀值;以及(3)标签堆栈,该标签堆栈包括:(i)来自控制平面消息的(多个)标签,以及(ii)与对等设备相关联的本地标签。然后,对等设备将新控制平面消息发送给上游对等设备。
响应于接收到控制平面消息,对等设备可以向其数据平面中的转发信息库(FIB)进一步添加条目,条目包括:(1)作为键的本地标签,以及(2)与本地标签相关联的转发操作。
在与本说明书一致的一些示例实施例中,转发操作是以下中的一项:(i)弹出并且转发,(ii)交换并且转发,或(iii)弹出、封装并且转发。
在与本说明书一致的一些示例实施例中,如果BGP对等设备通过单跳BGP会话从下游BGP对等设备接收BGP消息,在该单跳BGP会话中,下一跳值是属于本地附接网络的地址,那么转发操作是弹出并且通过将BGP对等方直接连接到下游BGP对等方的出口接口进行转发。
在与本说明书一致的一些示例实施例中,如果BGP对等设备通过多跳BGP会话从下游BGP对等设备接收BGP消息,在该多跳BGP会话中,BGP对等设备使用MPLS隧道(LSP)对下一跳值进行解析,那么转发操作是交换并且转发。
在与本说明书一致的一些示例实施例中,如果BGP对等设备通过多跳BGP会话从下游BGP对等设备接收BGP消息,在该多跳BGP会话中,BGP对等设备使用非MPLS隧道对下一跳值进行解析,那么转发操作是弹出、封装并且转发。
在与本说明书一致的一些示例实施例中,如果BGP对等设备被配置有显式标签值绑定,该显式标签值绑定针对被提供作为下一跳值的、下游BGP设备的网络地址,那么本地标签被设置为显式标签值绑定。
在与本说明书一致的一些示例实施例中,如果经由具有绑定分段标识符(BSID)值的隧道对下一跳值进行解析,那么本地标签被设置为BSID值。
在与本说明书一致的一些示例实施例中,如果下一跳值经由通过对(i)前缀分段标识符(SID)、(ii)节点SID、或(iii)任播SID中的任一个进行处理被实例化的隧道而被解析,那么BGP对等设备具有分段路由全局块(SRGB),其限定被保留用于分段路由的标签值的范围,并且然后从BGP对等设备的SRGB导出本地标签。
在与本说明书一致的一些示例实施例中,如果BGP对等设备具有针对用于所述下一跳值的解析的隧道的先前指派的本地标签,那么本地标签被设置为先前指派的本地标签。
在与本说明书一致的一些示例实施例中,如果BGP对等设备具有动态标签块,那么本地标签被分配动态标签块的可用标签之一。
附图说明
图1是用于图示SR域的一个示例网络。
图2是用于图示通过SR域的SR路径的一个示例网络。
图3是用于图示SR域中的邻接分段的一个示例网络。
图4A和图4B是用于图示SR域中的前缀分段的一个示例网络。
图5是用于图示使用从邻接分段导出的MPLS标签的一个示例网络。
图6是用于图示使用从前缀分段导出的MPLS标签的一个示例网络。
图7A至图7D图示了边界网关协议(BGP)消息格式以及这样的BGP消息的各部分。
图8是图示其中BGP发言方与其他BGP发言方(对等方)进行交互的常规BGP RIB模型的图。
图9是用于由BGP对等设备对包括具有至少一个标签的NLRI的BGP消息进行处理的一个示例方法的流程图。
图10图示了经由通信链路耦合的两个数据转发系统,两个数据转发系统可以用作BGP对等方。
图11是可以用作BGP对等设备的路由器的框图。
图12是其中ASICS可以分布在分组转发组件中以划分分组转发的责任的一个示例架构。
图13A和图13B是图12的示例架构的操作的一个示例。
图14是用于在示例路由器中提供分组转发的一个示例方法的流程图。
图15是可以执行所描述的一个或多个过程和/或存储由这样的过程使用和/或生成的信息的一个示例性机器的框图。
图16是图示与本说明书一致的示例方法的某些操作的一个示例。
图17是图示与本说明书一致的示例方法的用例的一个示例。
具体实施方式
本公开可以涉及用于以下的新颖的方法、装置、消息格式和/或数据结构:改进将(例如,MPLS)标签绑定到地址前缀的更新消息(例如,BGP UPDATE)的使用和处理,使得标签被更高效地使用和/或使得这样的更新消息可以被更高效地处理。呈现以下描述是为了使本领域技术人员能够制造和使用所描述的实施例,并且在特定应用及其要求的上下文中提供以下描述。因此,示例实施例的以下描述提供了图示和描述,但并不旨在是穷举性的或将本公开限制为所公开的精确形式。对于所公开的实施例的各种修改对于本领域技术人员将是显而易见的,并且下面阐述的一般原理可以应用于其他实施例和应用。例如,尽管可以参考流程图描述一系列动作,但是当一个动作的执行不依赖于另一动作的完成时,动作的顺序在其他实现中可以不同。此外,不相互依赖的动作可以并行地执行。除非明确地描述,否则在说明书中使用的任何元素、动作或指令都不应被解释为对本说明书是关键或必要的。同样,如本文所使用的,冠词“一”旨在包括一个或多个项。在仅旨在一个项的情况下,使用术语“一个”或类似语言。因此,本公开不旨在限于所示的实施例,并且发明人将其发明视为所描述的任何可获得专利的主题。
§4.1定义
Adj-RIB-In:Adj-RIBS-In包含已由本地BGP发言方的对等方通告给本地BGP发言方的未处理的路由信息。
Adj-RIB-Out:Adj-RIBS-Out包含通过于本地发言方的UPDATE消息向特定对等方通告的路线。
自治系统(AS):自治系统的经典定义是在单个技术管理下、使用内部网关协议(IGP)和通用度量来确定如何在AS内路由分组、并且使用AS间路由协议来确定如何将分组路由给其他AS的路由器集合。自从开发了该经典定义,单个AS使用AS内的若干IGP并且有时使用若干度量集合已变得很通用。术语自治系统的使用强调了以下事实:即使在使用多个IGP和度量时,AS的管理对于其他AS也显得是具有单个一致的内部路由计划,并且呈现通过它可达的目的地的一致图景。
BGP标识符:指示BGP消息的发送方的BGP标识符的4个八位字节的无符号整数。给定的BGP发言方将其BGP标识符的值设置为被分配给该BGP发言方的IP地址。BGP标识符的值在启动时确定,并且对于每个本地接口和BGP对等方是相同的。
BGP发言方:实现BGP的路由器。
下游:在从标签交换路径(LSP)的入口到出口的方向上。通常,从一个BGP发言方到另一BGP发言方的路由传播由更新发送过程支配。(例如,参见RFC 4271的§9.2。)BGP更新的发送方通常被称为下游对等方,并且BGP更新的接收方通常被称为上游对等方。
EBGP:外部BGP(外部对等方之间的BGP连接)。
外部对等方:处于与本地系统不同的自治系统中的对等方。
可行路线:供接受方使用的可用的被通告的路线。
FIB:转发信息库。
IBGP:内部BGP(内部对等方之间的BGP连接)。
内部对等方:处于与本地系统相同的自治系统中的对等方。
IGP:内部网关协议——用于在单个自治系统内的路由器之中交换路由信息的路由协议。
Loc-RIB:Loc-RIB包含已由本地BGP发言方的决策过程选择的路线。
NLRI:网络层可达性信息。
前缀:网络(例如,层3)地址的一部分,诸如,互联网地址、IP-VPN地址、经着色的互联网地址等的一部分。
路线:将目的地集合与到这些目的地的路径的属性配对的信息单元。目的地集合是其IP地址被包含在UPDATE消息的网络层可达性信息(NLRI)字段中携载的一个IP地址前缀中的系统。路径是在相同UPDATE消息的路径属性字段中报告的信息。
RIB:路由信息库。
RSVP:资源保留协议。
SID:分段标识符。
上游:在从标签交换路径(LSP)的出口到入口的方向上。
§4.2示例方法
图9是用于由BGP对等设备对包括具有至少一个标签的NLRI的BGP消息进行处理的示例方法900的流程图。如图所示,BGP对等设备从下游BGP对等设备接收BGP消息(框910)。BGP消息包括:(1)作为下一跳值的、下游BGP设备的网络地址,(2)前缀值,以及(3)与前缀值相关联的至少一个标签。响应于接收到BGP消息,BPG对等设备然后生成新BGP消息(框920)并且将新消息发送给上游BGP对等设备(框930)。新BGP消息包括:(1)作为下一跳值的、BGP对等设备的网络地址,(2)来自BGP消息的前缀值,以及(3)标签堆栈,其包括来自接收到的BGP消息的(多个)标签以及(ii)与BGP对等设备相关联的本地标签。
响应于通告BGP消息,BGP对等设备可以进一步向其数据平面中的转发信息库(FIB)添加条目(框940)。FIB条目可以包括:(1)本地标签作为键,以及(2)与本地标签相关联的转发操作。仍然参考框940,转发操作可以是例如以下中的一项:(i)弹出并且转发,(ii)交换并且转发,或(iii)弹出、封装到隧道中并且转发。
§4.3示例架构和装置
图10图示了经由通信链路1030耦合的两个数据转发系统1010和1020。链路可以是物理链路或“无线”链路。数据转发系统1010、1020可以是例如路由器并且可以是BGP对等设备。如果数据转发系统1010、1020是示例路由器,则各自可以包括控制组件(例如,路由引擎)1014、1024和转发组件1012、1022。每个数据转发系统1010、1020包括终止一个或多个通信链路1030的一个或多个接口1016、1026。示例方法900(或其实例)可以在控制组件1014、1024中实现。
如上所述,并且参考图11,一些示例路由器1100包括控制组件(例如,路由引擎)1110和分组转发组件(例如,分组转发引擎)1190。示例方法900可以在控制组件1110中实现。
控制组件1110可以包括操作系统(OS)内核1120、(多个)路由协议过程1130、(多个)基于标签的转发协议过程1140、(多个)接口过程1150、(多个)用户接口(例如,命令行接口)过程1160和(多个)机架过程1170,并且可以存储(多个)路由表1139、标签转发信息1145和(多个)(例如,基于路线的和/或基于标签的)转发表1180。如图所示,(多个)路由协议过程1130可以支持诸如以下的路由协议:路由信息协议(“RIP”)1131、中间系统到中间系统协议(“IS-IS”)1132、开放式最短路径优先协议(“OSPF”)1133、增强型内部网关路由协议(“EIGRP”)1134和边界网关协议(“BGP”)1135,并且(多个)基于标签的转发协议过程1140可以支持诸如以下的协议:BGP 1135、标签分发协议(“LDP”)1136和资源保留协议(“RSVP”)1137。一个或多个组件(未示出)可以允许用户1165与(多个)用户接口过程1160交互。类似地,一个或多个组件(未示出)可以允许外部设备经由SNMP 1185与(多个)路由器协议过程1130、(多个)基于标签的转发协议过程1140、(多个)接口过程1150和(多个)机架过程1170中的一个或多个进行交互,并且这样的过程可以经由SNMP 1185将信息发送给外部设备。示例方法900可以在边界网关协议(“BGP”)过程1135中实现。
分组转发组件1190可以包括微内核1192、(多个)接口过程1193、(多个)分布式ASIC 1194、(多个)机架过程1195和(多个)(例如,基于路线的和/或基于标签的)转发表1196。
在图11的示例路由器1100中,控制组件1110对诸如执行路由协议、执行基于标签的转发协议、控制分组处理等任务进行处置,这释放了分组转发组件1190以快速地转发所接收的分组。即,所接收的控制分组(例如,路由协议分组和/或基于标签的转发协议分组)在分组转发组件1190本身上没有被完全处理,而是被传递到控制组件1110,从而减少了分组转发组件1190必须完成的工作量并且释放它来高效地处理要被转发的分组。因此,控制组件1110主要负责运行路由协议和/或基于标签的转发协议、维护路由表和/或标签转发信息、将转发表更新发送给分组转发组件1190、并且执行系统管理。示例控制组件1110可以处置路由协议分组、提供管理接口、提供配置管理、执行核算(accounting)以及提供警报。过程1130、1140、1150、1160和1170可以是模块化的,并且可以与OS内核1120进行交互。即,几乎所有过程都与OS内核1120直接通信。使用将过程干净地彼此分离的模块化软件隔离了给定过程的问题,使得这样的问题不会影响可能正在运行的其他过程。附加地,使用模块化软件有助于更容易地缩放。
仍然参考图11,示例OS内核1120可以并入用于外部程序回想和脚本能力的应用编程接口(API)系统。控制组件1110可以基于从闪存运行OS的Intel PCI平台,其备选副本存储在路由器的硬盘上。OS内核1120在Intel PCI平台上是分层的,并且在Intel PCI平台与控制组件1110的过程之间建立通信。OS内核1120还确保分组转发组件1190正在使用的转发表1196与控制组件1110中的那些转发表1180同步。因此,除了向控制组件1110软件过程提供底层基础设施之外,OS内核1120还提供控制组件1110和分组转发组件1190之间的链路。
参考图11的(多个)路由协议过程1130,该(多个)过程1130提供平台内的路由和路由控制功能。在该示例中,提供了RIP 1131、ISIS 1132、OSPF 1133和EIGRP 1134(和BGP1135)协议。自然地,可以附加地或备选地提供其他路由协议。类似地,(多个)基于标签的转发协议过程1140提供标签转发和标签控制功能。在该示例中,提供了LDP 1136和RSVP 1137(和BGP 1135)协议。自然地,可以附加地或备选地提供其他基于标签的转发协议(例如,MPLS)。在示例路由器1100中,(多个)路由表1139由(多个)路由协议过程1130产生,而标签转发信息1145由(多个)基于标签的转发协议过程1140产生。
仍然参考图11,(多个)接口过程1150执行物理接口的配置(例如,回想图10的1016和1026)和封装。
示例控制组件1110可以提供管理路由器的若干方式。例如,它1110可以提供允许系统操作方1165通过配置、修改和监测与系统交互的(多个)用户接口过程1160。SNMP 1185允许具有SNMP功能的系统与路由器平台进行通信。这也允许平台向外部代理提供必要的SNMP信息。例如,SNMP 1185可以允许通过诸如惠普的OpenView的框架、从运行诸如惠普的网络节点管理器(“HP-NNM”)的软件的网络管理站来管理系统。对分组的核算(通常称为业务统计)可以由控制组件1110执行,从而避免减慢由分组转发组件1190进行的业务转发。
尽管未示出,但是示例路由器1100可以提供用于串行控制台和远程管理访问的RS-232DB9端口以及使用可移除的PC卡的第三存储装置,以用于带外管理。此外,尽管未示出,但是被放置在机架的前部上的工艺接口提供了路由器的内部工作情况的外部视图。它可以用作故障排除工具、监测工具或两者。工艺接口可以包括LED指示器、警报指示器、控制组件端口和/或显示屏。最后,工艺接口可以经由控制台端口、辅助端口和/或管理以太网端口来提供与命令行接口(“CLI”)1160的交互。
分组转发组件1190负责尽可能快地正确输出所接收的分组。如果转发表中不存在针对给定目的地或给定标签的条目并且分组转发组件1190自身不能执行转发,则分组转发组件1190可以将针对该未知目的地而绑定的分组发送出去,给控制组件1110进行处理。示例分组转发组件1190被设计为执行层2和层3切换、路线查找和快速分组转发。
如图11所示,示例分组转发组件1190具有嵌入式微内核1192、(多个)接口过程1193、分布式ASIC 1194和(多个)机架过程1195,并且存储(多个)(例如,基于路线的和/或基于标签的)转发表1196。微内核1192与(多个)接口过程1193和(多个)机架过程1195交互以监测和控制这些功能。(多个)接口过程1192具有与控制组件1110的OS内核1120的直接通信。该通信包括将异常分组和控制分组转发给控制组件1110、接收要被转发的分组、接收转发表更新、向控制组件1110提供关于分组转发组件1190的健康状况的信息、并且允许从控制组件1110的(多个)用户接口(例如,CLI)过程1160配置接口。所存储的(多个)转发表1196是静态的,直到从控制组件1110接收到新的转发表。(多个)接口过程1193使用(多个)转发表1196来查找下一跳信息。(多个)接口过程1193还具有与分布式ASIC 1194的直接通信。最后,(多个)机架过程1195可以与微内核1192以及分布式ASIC 1194直接通信。
返回参考图11的分布式ASIC 1194,图12是ASICS如何被分布在分组转发组件1190中以划分分组转发的责任的示例。如图12所示,分组转发组件1190的ASIC可以被分布在物理接口卡(PIC)1210、柔性PIC集中器(FPC)1220、中板或背板1230以及(多个)系统控制板1240(用于切换和/或转发)上。切换构造也被示出为系统切换板(“SSB”)或切换且转发模块(“SFM”)1250。PIC 1210中的每一个包括一个或多个PIC I/O管理器1215。FPC 1220中的每一个包括一个或多个I/O管理器1222,每个I/O管理器1222具有相关联的存储器1224。中板/背板1230包括缓冲管理器1235a、1235b。最后,系统控制板1240包括互联网处理器1242和转发表1244的实例(例如,回想图11的1196)。
仍然参考图12,PIC 1210包含接口端口。每个PIC 1210可以被插入FPC 1220中。每个个体PIC 1210可以包含处置介质特定的功能(例如,组帧或封装)的ASIC。一些示例PIC1210提供SDH/SONET、ATM、千兆以太网、快速以太网和/或DS3/E3接口端口。
FPC 1220可以包含一个或多个PIC 1210,并且可以将来自PIC 1210的信号携载到如图12所示的中板/背板1230。
中板/背板1230容纳线卡。当线卡从前部被插入示例路由器的机架中时,它们可以连接到中板/背板1230中。控制组件(例如,路由引擎)1110可以从机架的后部插入到中板/背板1230的后部中。中板/背板1230可以将电(或光)信号和功率携载到每个线卡和控制组件1110。
系统控制板1240可以执行转发查找。它1240还可以将错误传送到路由引擎。此外,它1240还可以基于其从传感器接收的信息来监测路由器的状况。如果检测到异常状况,则系统控制板1240可以立即通知控制组件1110。
参考图12、图13A和图13B,在一些示例性路由器中,PIC 1210、1110'中的每一个包含负责诸如封装的介质特定任务的至少一个I/O管理器ASIC 1215。分组在进出路由器途中传递通过这些I/O ASIC。PIC 1211、1011'上的I/O管理器ASIC 1215负责管理与FPC 1220、1120'上的I/O管理器ASIC 1222的连接、管理链路层组帧并创建比特流、执行循环冗余校验(CRC)、以及检测链路层错误且在适当时生成警报。FPC 1220包括另一I/O管理器ASIC1222。该ASIC 1222从PIC 1210获取分组,并且将其分成(例如,74字节)存储块。该FPC I/O管理器ASIC 1222将块发送给第一分布式缓冲管理器(DBM)1235a'、将封装和协议特定的信息解码、对每个逻辑电路的分组和字节进行计数、验证分组完整性、并且对分组应用服务等级(CoS)规则。此时,分组首先被写入存储器。更具体地,示例DBM ASIC 1235a'管理分组并将其写入跨所有FPC 1220的共享存储器1224。并行地,第一DBM ASIC 1235a'还提取关于分组的目的地的信息,并且将该转发相关的信息传递给互联网处理器1242/1142'。互联网处理器1242/1142'使用转发表1244来执行路线查找,并且将信息发送给第二DBM ASIC1235b'。互联网处理器ASIC 1242/1142'还收集异常分组(即,不具有转发表条目的那些分组),并且将其发送给控制组件1110。第二DBM ASIC 1235b'然后获取该信息和74字节的块,并且将其转发给出口FPC 1220/1120'(或在多播的情况下为多个出口FPC)的I/O管理器ASIC 1222进行重组。(因此,DBM ASIC 1235a'和1235b'负责管理跨所有FPC 1220/1120'分布的分组存储器1224、从分组中提取转发相关的信息、并且指示FPC将分组转发到何处。)
出口FPC 1220/1120'上的I/O管理器ASIC 1222可以执行一些增值服务。除了递增生存时间(TTL)值并重新封装分组以供PIC 1210处置之外,它还可以应用服务等级(CoS)规则。为此,在将规则应用于分组之前,它可以在可用队列之一中将指向分组的指针排队,每个可用队列均共享链路带宽。排队可以基于各种规则。因此,出口FPC 1220/1120'上的I/O管理器ASIC 1222可以负责根据需要在应用CoS规则、将块重新封装并将经封装的分组发送给PIC I/O管理器ASIC 1215之前,从第二DBM ASIC 1235b'接收块、递增TTL值、对指向分组的指针进行排队。
图14是用于在示例路由器中提供分组转发的示例方法1400的流程图。当在入口(传入)端口或接口上接收到分组时,触发方法1400的主要动作(事件1410)。执行其服务的介质类型所需的校验和和帧校验的类型,并且将分组输出作为串行比特流(框1420)。然后将分组解封装并解析为(例如,64字节)块(框1430)。将分组写入缓冲存储器并且将转发信息在互联网处理器上传递(框1440)。然后,将所传递的转发信息用于查找转发表中的路线(框1450)。注意,转发表通常可以对不具有选项(例如,核算)设置的单播分组以及已为其缓存条目的多播分组进行处置。因此,如果确定满足这些条件(判定1460的“是”分支),则分组转发组件找到下一跳和出口接口,并且在方法1400离开(节点1490)之前,将分组经由出口接口转发(或排队以用于转发)到下一跳(框1470)。否则,如果不满足这些条件(判定1460的“否”分支),则在方法1400离开(节点1490)之前,将转发信息发送给控制组件1110以用于高级转发解析(框1480)。
返回参考框1470,可以将分组排队。实际上,如先前参考图12所述,可以将指向分组的指针排队。分组本身可以保留在共享存储器中。因此,所有排队决策和CoS规则可以在不存在实际分组的情况下被应用。当针对分组的指针到达队列的前部时,I/O管理器ASIC1222可以将对分组的请求发送给第二DBM ASIC 1235b。DBM ASIC 1235从共享存储器中读取块,并且将其发送给FPC 1220上的I/O管理器ASIC 1222,I/O管理器ASIC 1222然后将比特序列化并将它们发送给出口接口的介质特定ASIC。出口PIC 1210上的I/O管理器ASIC1215可以应用物理层组帧、执行CRC并且通过链路将比特流发送出去。
再次参考图14的框1480以及图12,关于控制和异常分组的传送,系统控制板1240对几乎所有异常分组进行处置。例如,系统控制板1240可以将异常分组传递给控制组件1110。
尽管与本发明一致的示例实施例可以在图10或图11的示例路由器上实现,但是与本发明一致的实施例也可以在具有不同架构的通信网络节点(例如,路由器、交换机等)上实现。更一般地,与本发明一致的实施例可以在如图15所示的示例系统1500上实现。
图15是可以执行所描述的一个或多个过程和/或存储由这样的过程使用和/或生成的信息的一个示例性机器1500的框图。示例性机器1500包括一个或多个处理器1510、一个或多个输入/输出接口单元1530、一个或多个存储设备1520以及用于有助于耦合元件之间的信息通信的一个或多个系统总线和/或网络1540。一个或多个输入设备1532和一个或多个输出设备1534可以与一个或多个输入/输出接口1530耦合。一个或多个处理器1510可以执行机器可执行指令(例如,在可以从许多供应商(例如,北卡罗来纳州达勒姆的Red Hat公司)广泛获得的Linux操作系统上运行的C或C++)来实现本发明的一个或多个方面。机器可执行指令的至少一部分可以(临时地或永久地)存储在一个或多个存储设备1520上和/或可以经由一个或多个输入接口单元1530从外部源接收。机器可执行指令可以被存储为各种软件模块,每个模块执行一个或多个操作。功能性软件模块是本发明的组件的示例。
在与本发明一致的一些实施例中,处理器1510可以是一个或多个微处理器和/或ASIC。总线1540可以包括系统总线。存储设备1520可以包括系统存储器,例如,只读存储器(ROM)和/或随机存取存储器(RAM)。存储设备1520还可以包括用于从硬盘读取和写入硬盘的硬盘驱动、用于从(例如,可移除)磁盘读取或写入的磁盘驱动、用于从可移除(磁)光盘(例如,光盘)或其他(磁)光介质读取或写入的光盘驱动或固态非易失性存储装置。
与本发明一致的一些示例实施例也可以被提供作为用于存储机器可执行指令的机器可读介质。机器可读介质可以是非暂态的并且可以包括但不限于闪存、光盘、CD-ROM、DVD ROM、RAM、EPROM、EEPROM、磁卡或光卡或适用于存储电子指令的任何其他类型的机器可读介质。例如,与本发明一致的示例实施例可以作为计算机程序被下载,该计算机程序可以通过通信链路(例如,调制解调器或网络连接)从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)并且被存储在非暂态存储介质上。机器可读介质也可以称为处理器可读介质。
与本发明一致的示例实施例(或其组件或模块)可以在硬件(例如,一个或多个现场可编程门阵列(“FPGA”)、一个或多个集成电路(例如,ASIC)、一个或多个网络处理器等)中实现。备选地或附加地,与本发明一致的实施例(或其组件或模块)可以被实现为由处理器执行的存储程序指令。这样的硬件和/或软件可以在寻址数据(例如,分组、小区等)转发设备(例如,交换机、路由器等)、膝上型计算机、台式计算机、服务器(例如,软件定义的网络控制器)、平板计算机、移动电话或具有计算和联网能力的任何设备中提供。
§4.4细化、备选和扩展
尽管在BGP的上下文中描述了一些示例实施例,但是与本说明书一致的示例实施例可以应用于其他(例如,距离矢量)控制信令协议。
§4.4.1示例FIB条目
返回参考图9的框940,可以添加以下类型的FIB条目。作为第一示例,如果BGP对等设备通过单跳外部会话从下游BGP对等设备接收到BGP消息,则转发操作被弹出并通过将BGP对等方直接连接到下游BGP对等方的出口接口进行转发。作为第二示例,如果BGP对等设备通过多跳内部会话从下游BGP对等设备接收到BGP消息,则转发操作是交换且转发。(多个)“交换到”标签值是用于LSP的(多个)传出标签,其具有等于所获知的BGP NH属性的值的MPLS转发等效类(FEC),并且被用来对所获知的给定BGP路径的BGP下一跳属性进行解析。作为第三示例,如果BGP对等设备通过多跳内部会话从下游BGP对等设备接收到BGP消息,在多跳内部会话中,非MPLS隧道(例如,GRE、MPLS over UDP、SRv6等)被BGP对等设备使用以解析下一跳值,则转发操作是弹出、封装且转发。
本地分配的标签可以在BGP发言方的数据平面中的MPLS FIB中被编程为键。
§4.4.2确定本地标签的示例方式
返回参考框920,新BGP消息中包括的标签堆栈中包括的本地标签可以以各种方式来确定。作为第一示例,如果BGP对等设备被配置有针对作为下一跳值被提供的、下游BGP设备的网络地址的显式标签值绑定,则本地标签被设置为显式标签值绑定。作为第二示例,如果经由具有绑定分段标识符(BSID)值的隧道对下一跳值进行解析,则本地标签被设置为BSID值。作为第三示例,如果经由通过对(i)前缀分段标识符(SID)、(ii)节点SID、或(iii)任播SID中的一个进行处理而被实例化的隧道来解析下一跳值,则BGP对等设备具有分段路由全局块(SRGB),分段路由全局块限定针对分段路由所保留的标签值范围,并且本地标签从BGP对等设备的SRGB导出。作为第四示例,如果BGP对等设备具有针对用于对下一跳值进行解析的隧道的先前指派的本地标签,则本地标签被设置为先前指派的本地标签。作为第五示例,如果BGP对等设备具有动态标签块,则本地标签被分配动态标签块的可用标签之一。注意,使用示例一、示例二、示例三和示例四所描述的方法,在多于一个的BGP发言方上分配相同的标签值是可能的,使得它们提供相互保护。标签值同步可以通过在每个盒上进行本地绑定配置、BSID值分配和/或使用任播SID来实现。
§4.4.3非BGP和非MPLS实现
尽管在BGP的上下文中描述了一些示例实施例,但是这些示例实施例中的至少一些可以替代地扩展到其他控制信令协议(或在其他控制信令协议的上下文中使用)。尽管在MPLS标签的上下文中描述了一些示例实施例,但是这些示例实施例中的至少一些可以扩展为与用于转发数据的其他类型的标签一起使用。
§4.5示例方法的操作示例
图16是图示与本说明书一致的示例方法的某些操作的示例。假设RA、RB、RC、RD1、RD2、…、RDn是路由器,特别是BGP发言方。假设RA具有下一跳自身IP地址IP_RA和本地标签LA,RB具有下一跳自身IP地址IP_RB和本地标签LB,RC具有下一跳自身IP地址IP_RC和本地标签LC,并且RD1具有下一跳自身IP地址IP_RD和本地标签LD。主机H11具有相关联的前缀1.1,并且与RD1的接口I/F H11连接。
假设RD1创建BGP UPDATE消息来通告前缀1.1通过它可达。BGP UPDATE消息包括下一跳IP_RD、标签LD和前缀1.1,并且被发送给上游BGP对等方RC。注意,RD具有FIB条目,该FIB条目包括标签LD、命令POP和传出接口I/F H11。
在接收到BGP UPDATE消息时,RC将下一跳更新为IP_RC并且将其标签(LC)前置在标签堆栈上。前缀保持不变。然后,RC将BGP UPDATE消息发送给上游BGP对等方RB。注意,RC还创建FIB条目,该FIB条目包括标签LC、命令POP和传出LSP/隧道RD1。
在接收到BGP UPDATE消息时,RB将下一跳更新为IP_RB并且将其标签(LB)前置在标签堆栈上。前缀保持不变。然后,RB将BGP UPDATE消息发送给上游BGP对等方RA。注意,RB还创建FIB条目,该FIB条目包括标签LB、命令POP和传出接口I/F RC。
最后,在接收到BGP UPDATE消息时,RA(假设其是入口)创建FIB条目,该FIB条目包括与MPLS FEC相对应的前缀、将具有前缀的传入分组与标签堆栈LB、LC、LD封装的命令、以及传出LSP/隧道RB。
如果RA接收到针对主机H11设计的分组(具有与前缀1.1匹配的目的地地址),则RA会将分组和标签堆栈LB、LC、LD封装,并且经由其与RB的接口将分组发送给RB。RB将弹出标签LB,并且经由其与RC的接口将得到的分组转发给RC。RC将弹出标签LC,并且经由其与RD1的接口将得到的分组转发给RD1。最后,RD1将弹出标签LD,并且将分组(如由RA最初接收的)转发给H11。
图17是图示与本说明书一致的示例方法的用例的示例。域1和3可以是城域(例如,接入)区域,而域2可以是核心(例如,传送)区域。HA和HB是主机设备。RA、RB、RC、RD和RE是可以充当BGP发言方的路由器,并且TR是域内转接路由器。注意,任播SID 2001可以用于提供RB和RC之间的冗余,而无需任何标签变化或附加标签。
假设RA具有下一跳自身IP地址IP_RA和本地标签LA,RB具有下一跳自身IP地址IP_RBC、任播SID 2001和SRGB基11000,RC具有下一跳自身IP地址IP_RBC、任播SID 2001和SRGB基11000,并且RD1具有下一跳自身IP地址IP_RD、节点SID 3001、SRGB基5800。主机HA具有相关联的前缀HA,并且与RE1的接口I/F HA连接。
RB和RC具有相同的下一跳自身IP地址(即,IP_RBC)、任播SID和SRGB基。因此,所导出的RB和RC的本地标签相同(13001)。RD的本地标签被导出且等于8801。
假设RD发送BGP UPDATE消息来通告前缀HA通过它可达。BGP UPDATE消息包括下一跳IP_RD、标签8801和前缀HA,并且被发送给上游BGP对等方RB和RC。注意,RD具有FIB条目,该FIB条目包括标签8801、命令SWAP到去往RE的LSP/隧道。
在接收到BGP UPDATE消息时,RB和RC中的每一个将下一跳更新为IP_RBC,并且将其标签(13001)前置在标签堆栈上。前缀(HA)保持不变。然后,RB和RC中的每一个将BGPUPDATE消息发送给上游BGP对等方RB。注意,RB和RC中的每一个还创建FIB条目,该FIB条目包括标签13001、命令SWAP到去往RD的LSP/隧道。
最后,在接收到两个BGP UPDATE消息时,RA(假设其为入口)选择一个最佳路径(假设来自RB的路径),创建FIB条目,该FIB条目包括与MPLS FEC对应的前缀、将具有前缀的传入分组与标签堆栈13001、8801进行封装的命令,并且封装到去往IP_RBC的LSP/隧道中。
如果RA接收到针对主机HA设计的分组(具有与前缀HA匹配的目的地地址),则RA会将分组与标签堆栈13001、8801封装,并且经由其隧道将分组发送给IP_RBC。根据转接路由器TR1处的本地路由决策,分组可以出现在RB或RC上。在该示例中,假设TR1将分组发送给RB。通过使用被编程到其FIB中的信息,RB将弹出顶部标签13001,并且经由其去往RD的LSP/隧道将得到的分组转发给RD。通过使用被编程到其FIB中的信息,RD将弹出标签8801,并且经由去往RE的LSP/隧道得到的分组转发给RE。最后,通过使用被编程到其FIB中的信息,RE会将分组(如由RA最初接收的)转发给HA。
在RB和/或TR1-RB链路发生故障时,TR1可以立即将业务重定向到RC,而无需通知RA,并且可以在网络控制平面(BGP和IGP)收敛之前恢复连接性。RC将弹出标签13001,并且经由其去往RD的LSP/隧道将得到的分组转发给RD。RD将弹出标签8801,并且经由去往RE的LSP/隧道将得到的分组转发给RE。最后,RE会将分组(如由RA最初接收的)转发给HA。
注意,标签13001由RB和RC本地分配,并且标签8801由RD本地分配。这些标签可以被视为到下一跳的路径的抽象。这些标签可以是例如用于SR-TE的绑定SID、用于RSVP的绑定SID、用于另一隧道类型的绑定SID、用于SR的前缀SID或用于其他封装(例如,诸如LDP或MPLSoUDP)的任何本地标签。
§4.6结论
从前述内容应当理解,与本说明书一致的示例实施例允许更高效地使用标签和/或减少维护转发信息库(FIB)所需的处理。
与本说明书一致的至少一些示例实施例提供了在BGP下一跳变化上操纵经标记的NLRI中的(多个)标签的备选过程。不是替换从下游对等方获知的(多个)标签,而是这样的(多个)标签被保留并且由附加的本地分配的标签前置。本地标签被绑定到修改前的BGP下一跳属性值的IP地址(即,从下游对等方获知的值)。
由于所获知的唯一下一跳属性值的数目显著小于经标记的前缀的总数目,因此减轻了BGP发言方本地标签空间的缩放压力。因此,在路由重新收敛时,甚至更少的状态还需要在数据平面中被重新编程。
最后,由于在iBGP场景中,每个IGP域仅一个标签需要被添加到标签堆栈的顶部,或者在eBGP场景中,每个ASBR仅一个标签需要被添加到标签堆栈的顶部,因此从第一入口路由器的角度,标签堆栈深度是可预测的(这在设计具有标签深度限制(例如,由于ASIC或其他硬件限制)的设备的网络时可能很重要)。

Claims (19)

1.一种用于在距离矢量控制信令协议对等设备上使用的计算机实现的方法,所述计算机实现的方法包括:
a)由所述对等设备从下游对等设备接收控制平面消息,所述控制平面消息包括:
1)作为下一跳值的、所述下游对等设备的网络地址,
2)前缀值,以及
3)与所述前缀值相关联的至少一个标签;以及
b)响应于接收到所述控制平面消息,
1)由所述对等设备生成新控制平面消息,所述新控制平面消息包括:
A)作为下一跳值的、所述对等设备的网络地址,
B)来自所述控制平面消息的所述前缀值,以及
C)标签堆栈,所述标签堆栈包括:(i)来自所述控制平面消息的所述至少一个标签,以及(ii)与所述对等设备相关联的本地标签,以及
2)由所述对等设备向上游对等设备发送所述新控制平面消息。
2.根据权利要求1所述的计算机实现的方法,其中响应于接收到所述控制平面消息,还包括:
3)由所述对等设备向所述对等设备的数据平面中的转发信息库(FIB)添加条目,所述条目包括:
A)作为键的所述本地标签,以及
B)与所述本地标签相关联的转发操作。
3.根据权利要求2所述的计算机实现的方法,其中所述转发操作是以下中的一项:(i)弹出并且转发、(ii)交换并且转发、或(iii)弹出、封装并且转发。
4.根据权利要求2所述的计算机实现的方法,其中所述距离矢量控制信令协议是边界网关协议(BGP),
其中所述对等设备是BGP对等设备并且所述下游对等设备是下游BGP对等设备,
其中所述控制平面消息是BGP消息,
其中所述BGP消息由所述BGP对等设备通过单跳BGP会话从所述下游BGP对等设备接收,在所述单跳BGP会话中,所述下一跳值是属于本地附接网络的地址;并且
其中所述转发操作是弹出并且通过将所述BGP对等设备直接连接到所述下游BGP对等设备的出口接口进行转发。
5.根据权利要求2所述的计算机实现的方法,其中所述距离矢量控制信令协议是边界网关协议(BGP),
其中所述对等设备是BGP对等设备并且所述下游对等设备是下游BGP对等设备,
其中所述控制平面消息是BGP消息,
其中所述BGP消息由所述BGP对等设备通过多跳BGP会话从所述下游BGP对等设备接收,在所述多跳BGP会话中,MPLS隧道即LSP由BGP对等设备使用以解析所述下一跳值;并且
其中所述转发操作是交换并且转发。
6.根据权利要求2所述的计算机实现的方法,其中所述距离矢量控制信令协议是边界网关协议(BGP),
其中所述对等设备是BGP对等设备并且所述下游对等设备是下游BGP对等设备,
其中所述控制平面消息是BGP消息,
其中所述BGP消息由所述BGP对等设备通过多跳BGP会话从所述下游BGP对等设备接收,在所述多跳BGP会话中,非MPLS隧道由BGP对等设备使用以解析所述下一跳值;并且
其中所述转发操作是弹出、封装并且转发。
7.根据权利要求1所述的计算机实现的方法,其中所述距离矢量控制信令协议是边界网关协议(BGP),
其中所述对等设备是BGP对等设备并且所述下游对等设备是下游BGP对等设备,
其中所述控制平面消息是BGP消息,
其中所述BGP对等设备被配置有显式标签值绑定,所述显式标签值绑定用于所述下游BGP对等设备的所述网络地址,所述下游BGP对等设备的所述网络地址被提供作为所述下一跳值,并且
其中所述本地标签被设置为所述显式标签值绑定。
8.根据权利要求1所述的计算机实现的方法,其中所述距离矢量控制信令协议是边界网关协议(BGP),
其中所述对等设备是BGP对等设备,
其中所述控制平面消息是BGP消息,
其中所述下一跳值经由具有绑定分段标识符(BSID)值的隧道而被解析;并且
其中所述本地标签被设置为所述BSID值。
9.根据权利要求1所述的计算机实现的方法,其中所述距离矢量控制信令协议是边界网关协议(BGP),
其中所述对等设备是BGP对等设备,
其中所述控制平面消息是BGP消息,
其中所述下一跳值经由通过处理以下中的一项被实例化的隧道而被解析:(i)前缀分段标识符(SID)、(ii)节点SID、或(iii)任播SID,
其中所述BGP对等设备具有分段路由全局块(SRGB),所述分段路由全局块限定被保留用于分段路由的标签值的范围;并且
其中所述本地标签从所述BGP对等设备的所述SRGB导出。
10.根据权利要求1所述的计算机实现的方法,其中所述距离矢量控制信令协议是边界网关协议(BGP),
其中所述对等设备是BGP对等设备,
其中所述控制平面消息是BGP消息,
其中所述BGP对等设备具有针对用于所述下一跳值的解析的隧道的先前指派的本地标签,并且
其中所述本地标签被设置为所述先前指派的本地标签。
11.根据权利要求1所述的计算机实现的方法,其中所述距离矢量控制信令协议是边界网关协议(BGP),
其中所述对等设备是BGP对等设备,
其中所述控制平面消息是BGP消息,
其中所述BGP对等设备具有动态标签块,并且
其中所述本地标签被分配所述动态标签块的可用标签中的一个可用标签。
12.一种距离矢量控制信令协议对等设备,包括:
a)多个通信接口;
b)至少一个控制处理器;以及
c)存储设备,所述存储设备存储处理器可执行指令,所述处理器可执行指令在由所述至少一个控制处理器执行时,使所述至少一个控制处理器执行方法,所述方法包括:
1)由所述对等设备在所述多个通信接口中的一个通信接口上从下游对等设备接收控制平面消息,所述控制平面消息包括:
A)作为下一跳值的、所述下游对等设备的网络地址,
B)前缀值,以及
C)与所述前缀值相关联的至少一个标签;以及
2)响应于接收到所述控制平面消息,
A)由所述对等设备生成新控制平面消息,所述新控制平面消息包括:
i)作为下一跳值的、所述对等设备的网络地址,
ii)来自所述控制平面消息的所述前缀值,以及
iii)标签堆栈,所述标签堆栈包括:(i)来自所述控制平面消息的所述至少一个标签,以及(ii)与所述对等设备相关联的本地标签,以及
B)由所述对等设备向上游对等设备发送所述新控制平面消息。
13.根据权利要求12所述的对等设备,其中响应于接收到所述控制平面消息,所述方法还包括:
C)由所述对等设备向所述对等设备的数据平面中的转发信息库(FIB)添加条目,所述条目包括:
A)作为键的所述本地标签,以及
B)与所述本地标签相关联的转发操作。
14.根据权利要求13所述的对等设备,其中所述转发操作是以下中的一项:(i)弹出并且转发、(ii)交换并且转发、或(iii)弹出、封装并且转发。
15.根据权利要求12所述的对等设备,其中所述距离矢量控制信令协议是边界网关协议(BGP),
其中所述对等设备是BGP对等设备,并且
其中所述控制平面消息是BGP消息。
16.一种用于与距离矢量控制信令协议对等设备一起使用的非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储处理器可执行指令,所述处理器可执行指令在由至少一个处理器执行时,使所述至少一个处理器执行方法,所述方法包括:
a)由所述对等设备从下游对等设备接收控制平面消息,所述控制平面消息包括:
1)作为下一跳值的、所述下游对等设备的网络地址,
2)前缀值,以及
3)与所述前缀值相关联的至少一个标签;以及
b)响应于接收到所述控制平面消息,
1)由所述对等设备生成新控制平面消息,所述新控制平面消息包括:
A)作为下一跳值的、所述对等设备的网络地址,
B)来自所述控制平面消息的所述前缀值,以及
C)标签堆栈,所述标签堆栈包括:(i)来自所述控制平面消息的所述至少一个标签,以及(ii)与所述对等设备相关联的本地标签,以及
2)由所述对等设备向上游对等设备发送所述新控制平面消息。
17.根据权利要求16所述的非暂态计算机可读存储介质,其中响应于接收到所述控制平面消息,所述方法还包括:
3)由所述对等设备向所述对等设备的数据平面中的转发信息库(FIB)添加条目,所述条目包括:
A)作为键的所述本地标签,以及
B)与所述本地标签相关联的转发操作。
18.根据权利要求17所述的非暂态计算机可读存储介质,其中所述转发操作是以下中的一项:(i)弹出并且转发、(ii)交换并且转发、或(iii)弹出、封装并且转发。
19.根据权利要求16所述的非暂态计算机可读存储介质,其中所述距离矢量控制信令协议是边界网关协议(BGP),
其中所述对等设备是BGP对等设备,并且
其中所述控制平面消息是BGP消息。
CN201911328985.XA 2019-09-30 2019-12-20 用于构建下一跳属性变化标签的方法、对等设备和介质 Active CN112583717B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/588,691 US10887225B1 (en) 2019-09-30 2019-09-30 Building a label sequence in Border Gateway Protocol (BGP) labeled network layer reachability information (NLRI) on next hop (NH) attribute change
US16/588,691 2019-09-30

Publications (2)

Publication Number Publication Date
CN112583717A CN112583717A (zh) 2021-03-30
CN112583717B true CN112583717B (zh) 2022-04-12

Family

ID=68965775

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911328985.XA Active CN112583717B (zh) 2019-09-30 2019-12-20 用于构建下一跳属性变化标签的方法、对等设备和介质

Country Status (3)

Country Link
US (1) US10887225B1 (zh)
EP (1) EP3799373B1 (zh)
CN (1) CN112583717B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116782336A (zh) * 2019-10-22 2023-09-19 华为技术有限公司 一种通信方法及装置
US11223499B2 (en) * 2019-11-26 2022-01-11 Arista Networks, Inc. Interconnecting networks operating different types of control planes
US11809410B1 (en) * 2019-12-10 2023-11-07 Cisco Technology, Inc. Systems and methods for assigning colors to nodes of a subgraph
US11418435B2 (en) * 2020-01-31 2022-08-16 Cisco Technology, Inc. Inband group-based network policy using SRV6
US11271854B2 (en) * 2020-02-21 2022-03-08 Ciena Corporation Resolving label depth and protection in segment routing
US11477041B2 (en) * 2020-03-31 2022-10-18 Nokia Solutions And Networks Oy Stateless multicast based on local label spaces
US11516112B2 (en) * 2020-10-20 2022-11-29 Ciena Corporation Optimized layer 3 VPN control plane using segment routing
US11394641B1 (en) * 2020-05-22 2022-07-19 Amazon Technologies, Inc. Consensus protocol for route announcements between autonomous systems
CN113810275B (zh) * 2020-06-17 2023-08-04 华为技术有限公司 发送报文的方法及设备
US11405320B2 (en) 2020-12-04 2022-08-02 Cisco Technology, Inc. Systems and methods for scalable validation of multiple paths in a network using segment routing
US11606244B2 (en) * 2021-02-01 2023-03-14 Cisco Technology, Inc. Longest path first route selection
CN112688872B (zh) * 2021-03-22 2021-06-29 中国人民解放军国防科技大学 联合多域系统及基于联合多域系统的低时延路径传输方法
US11924100B2 (en) 2021-05-27 2024-03-05 Cisco Technology, Inc. Encoding local next-hop information into border gateway protocol (BGP) routes
CN116471220A (zh) * 2022-01-11 2023-07-21 华为技术有限公司 一种信息上报方法、信息处理方法及装置
US11575596B1 (en) * 2022-03-07 2023-02-07 Ciena Corporation Identifying an ingress router of a flow in inter-AS VPN option-C networks with visibility in one AS
CN117201379A (zh) * 2022-05-31 2023-12-08 中兴通讯股份有限公司 业务传输方法、设备和存储介质
US20240073135A1 (en) * 2022-08-26 2024-02-29 Ciena Corporation BGP Segment Routing optimization by packing multiple prefixes in an update

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7633859B2 (en) 2005-01-26 2009-12-15 Cisco Technology, Inc. Loop prevention technique for MPLS using two labels
US7855953B2 (en) * 2005-10-20 2010-12-21 Cisco Technology, Inc. Method and apparatus for managing forwarding of data in an autonomous system
US7936780B1 (en) * 2008-03-12 2011-05-03 Juniper Networks, Inc. Hierarchical label distribution protocol for computer networks
US8305959B2 (en) * 2008-09-30 2012-11-06 Verizon Patent And Licensing Inc. Hierarchical mobility label-based network
US9246801B1 (en) * 2008-12-12 2016-01-26 Juniper Networks, Inc. Transmitting packet label contexts within computer networks
US8208377B2 (en) * 2009-03-26 2012-06-26 Force10 Networks, Inc. MAC-address based virtual route aggregation
US8571029B1 (en) * 2010-11-12 2013-10-29 Juniper Networks, Inc. Label switched path hierarchy for intra-area segments of inter-area point-to-multipoint label switched paths
US10708182B2 (en) * 2013-07-26 2020-07-07 Cisco Technology, Inc. MPLS LSP connectivity test when the initiator address is unknown
US9444677B2 (en) * 2013-10-18 2016-09-13 Cisco Technology, Inc. Scalable edge node protection using IPv6 segment routing extension header
US10193801B2 (en) * 2013-11-25 2019-01-29 Juniper Networks, Inc. Automatic traffic mapping for multi-protocol label switching networks
US9832121B1 (en) * 2014-12-31 2017-11-28 Juniper Networks, Inc. Next hop instruction associations for forwarding unit programming within a network device
US10630585B2 (en) * 2015-04-16 2020-04-21 Arista Networks, Inc. Method and system for withdrawing programmed routes in network devices
US9998368B2 (en) * 2015-06-11 2018-06-12 Futurewei Technologies, Inc. Zone routing system
US10547543B2 (en) * 2015-06-24 2020-01-28 Futurewei Technologies, Inc. Elegant temporal label switched path tunnel service controller
CN107026796B (zh) * 2016-02-01 2021-01-05 华为技术有限公司 一种vpn路由通告方法、数据流转发方法及相关设备
WO2018146526A1 (en) * 2017-02-13 2018-08-16 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for dynamic service chaining with segment routing for bng
US10659352B2 (en) * 2017-05-31 2020-05-19 Juniper Networks, Inc. Signaling private context forwarding tables for a private forwarding layer
US10432523B2 (en) * 2017-05-31 2019-10-01 Juniper Networks, Inc. Routing protocol signaling of multiple next hops and their relationship
US10659363B2 (en) * 2017-12-01 2020-05-19 Extreme Networks, Inc. Forwarding table management
US10785190B2 (en) * 2017-12-13 2020-09-22 Adaptiv Networks Inc. System, apparatus and method for providing a unified firewall manager
US10541912B2 (en) * 2018-05-22 2020-01-21 Juniper Networks, Inc. Detecting egresses of a point-to-multipoint label switched path in a ring network

Also Published As

Publication number Publication date
CN112583717A (zh) 2021-03-30
EP3799373A1 (en) 2021-03-31
US10887225B1 (en) 2021-01-05
EP3799373B1 (en) 2022-07-27

Similar Documents

Publication Publication Date Title
CN112583717B (zh) 用于构建下一跳属性变化标签的方法、对等设备和介质
CN113347091B (zh) 灵活算法感知边界网关协议前缀分段路由标识符
US10454821B2 (en) Creating and maintaining segment routed traffic engineering policies via border gateway protocol
CN112311673B (zh) 在采用分段路由的网络中使用和处理每切片分段标识符
CN112311675B (zh) 用于分段路由(sr)路径的保证型带宽
US10594592B1 (en) Controlling advertisements, such as Border Gateway Protocol (“BGP”) updates, of multiple paths for a given address prefix
US11909556B2 (en) Resilient multiprotocol label switching (MPLS) rings using segment routing
US10917330B1 (en) Minimizing or reducing traffic loss when an external border gateway protocol (eBGP) peer goes down
US11277328B1 (en) Using anycast as an abstract next hop (ANH) to reduce information related to border gateway protocl (BGP) next hops received by autonomous system border routers (ASBRs) and/or to improve BGP path convergence
US11876706B2 (en) Avoiding loops by preventing further fast reroute (FRR) after an earlier FRR
US11336569B2 (en) Ping and traceroute in inter-autonomous system (AS) segment routing (SR) networks without requiring headend router or path monitoring system (PMS) controller knowledge of topology outside of origin as
US11496391B1 (en) Defining non-forwarding adjacencies in bipartite networks, such as Clos networks, having a level 2 backbone and level 1 nodes
US11050679B1 (en) Defining non-forwarding adjacencies in bipartite networks, such as Clos newtorks, having a level 2 backbone and level 1 nodes
US11070468B1 (en) Serverless segment routing (SR)-label distribution protocol (LDP) stitching
US11570086B2 (en) Fast reroute for BUM traffic in ethernet virtual private networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant