确定性的且优化的比特索引显式复制(BIER)转发的制作方法

文档序号:11959834阅读:288来源:国知局
确定性的且优化的比特索引显式复制(BIER)转发的制作方法与工艺

本发明涉及数据转发,更具体地,涉及确定性的且优化的比特索引显式复制(BIER)转发。



背景技术:

网络设备(例如,路由器)转发率随着时间的流逝已经快速地增加,而控制面(control plane)处理能力以更慢的速率增加了。转发面(forwarding plane)速度和控制面速度之间的比率非常大(例如,千分之一或者更大的因子),并且随时时间的流逝不断增加。用于因特网协议(IP)多播的现有方法是相对控制面密集的。称为比特索引显式复制(BIER)转发方法的一个方案已经被引入到因特网工程任务组(IETF),以允许在网络核心中很多多播组在最小状态下得到同时支持。在BIER转发方法中,仅针对任何特定分组流的入口(ingress)路由器需要知道哪个入口路由器需要接收任何特定分组。BIER转发方法不要求任何显式树构建协议,BIER转发方法也不要求中间路由器来维持任何每流(per-flow)状态。实现BIER转发方法的路由器被称为比特转发路由器(BFR)。

在包括等价多路径(ECMP)或链路聚合组(LAG)(例如,随着路由器变得更快而正变得更通用)的网络中,对于任何一个目的地而言,BIER转发方法导致非确定性路径。特别地,分组到一个目的地所采纳的路径依赖于哪些其它目的地也正接收相同分组。因而,在大多播组中,如果一个路由器或几个路由器交替地加入和离开该多播组,则在该多播组中到其它路由器的路径将波动,这使得网络操作、运营和管理(OAM)困难。例如,在BIER转发方法的情况下,对于追踪路由技术而言可能难以正确地确定针对特定目的地特定分组流 所采用的路径。BIER转发方法还可能导致性能不一致和/或分组至任何特定目的地的递送次序混乱。假定不一致的性能可能依赖于至特定目的地所采用的路径,可能难以诊断这样的不一致的性能。



技术实现要素:

在一些实现方式中,网络设备可以结合转发表来执行操作。网络设备可以包括用于创建转发表的装置。转发表中的每一个可以包括与第一目的地集和第二目的地集相关联的信息,以及第一目的地集不同于第二目的地集。网络设备还可以包括:为每个转发表确定针对第一目的地集的下一跳,以及为每个转发表确定针对第二目的地集的等价多路径下一跳的装置。网络设备还可以包括用于利用与下一跳和等价多路径下一跳相关联的信息填充多个转发表的装置。转发表中的一个或多个被用来朝向目的地转发多播分组。

在一些实现方式中,一种方法可以包括结合转发表来执行操作。该方法可以包括由网络中提供的网络设备创建转发表。转发表中的每一个可以包括与第一目的地集和第二目的地集相关联的信息,以及第一目的地集不同于第二目的地集。该方法还可以包括由网络设备并且针对每一个,确定针对第一目的地集的下一跳和针对第二目的地集的等价多路径下一跳。该方法还可以包括由所述网络设备利用与下一跳和等价多路径下一跳相关联的信息填充转发表。转发表中的一个或多个被用来朝向多个目的地转发多播分组。

在一些实现方式中,比特转发设备可以转发多播分组,以及可以包括用于接收所述多播分组的装置,所述多播分组包括标识所述多播分组的目的地地址的信息。比特转发设备还可以包括用于分析所述多播分组的装置,其用来确定多个比特索引转发表中的要用于多播分组的特定比特索引转发表。比特转发设备还可以包括用于标识与所述特定比特索引转发表相关联以及与所述目的地地址相关联的特定等价多路径下一跳的装置,以及用于将所述多播分组转发到所述特定等价多路径下一跳的装置。特定等价多路径下一跳可以朝向与所述目的地 地址相关联的目的地转发所述多播分组。

附图说明

图1是本文所描述的示例实现方式的概览的示图;

图2是可以实施本文所描述的系统和/或方法的示例环境的示图;

图3是图2的网络设备的示例组件的示图;

图4是用于在网络设备中填充多个比特索引转发表(BIFT)的示例过程的流程图;

图5A-5E是关于图4中所示的示例过程的示例实现方式的示图;

图6是基于多个BIFT转发多播分组的示例过程的流程图;以及

图7A-7D是关于图6中所示的示例过程的示例实现方式的示图。

具体实施方式

对示例实现方式的下列详细描述参考附图。在不同附图中相同的附图标记可以指明相同的或相似的元素。

BIER转发方法使用比特索引转发表(BIFT)。在不包括ECMP和LAG的网络中,对于分组而言每个潜在的目的地(例如,由转发比特掩码(F-BM)中的唯一单个比特表示)仅具有单个可能下一跳(next hop)。再者,在不包括ECMP和LAG的网络中,单个BIFT中的每个条目(例如,对应于特定的可能目的地)包括单个行,该行规定对应于特定下一跳的单个F-BM。然而,在包括ECMP和/或LAG的网络中,单个BIFT中的一些条目将包含多个行,这些行对应于多个可能下一跳(例如,其中对于每个下一跳具有不同的F-BM)。选择哪个条目可以依赖于对正转发的分组所执行的哈希(例如,基于IP源和目的地地址、IP协议字段、传输控制协议(TCP)端口、和/或用户数据报协议(UDP)端口的哈希)。在这样的情形下,对于多个条目而言表示任何一个特定目的地的比特可以存在于F-BM中。由于BIER转发方法首先确定至F-BM中具有较低编号比特的目的地的路径,至对应于较高编号比特的目的地的路径将依赖于分组是否还将到 具有较低编号比特的目的地,以及依赖于使用哪个哈希值。

在此所描述的系统和/或方法可以扩展BIER转发方法,以确保至任何特定目的地所采取的路径依赖于该特定目的地和针对去往该特定目的地的特定分组流而选择ECMP分组所使用的哈希值。系统和/或方法可以利用多个BIFT,并且每个BIFT可以包括针对任何一个目的地的单个可能下一跳,而不是利用单个BIFT,该单个BIFT对于一些可能目的地具有多个可能下一跳。系统和/或方法可以使不必要的早期路径散度(divergence)最小化,从而实现网络资源的更有效利用。系统和/或方法可以使BIER转发方法是确定性的,其可以简化网络OAM并且允许网络的更稳定的性能。在多播流量如何在ECMP和/或LAG上传播方面,系统和/或方法可以改善网络效率。

图1是在此所描述的示例实现方式100的概览的示图。如图1中所示,多播域可以包括通过链路互连的多个网络设备,诸如比特转发路由器BFR-A、BFR-B、BFR-C、BFR-D、BFR-E、BFR-F、和BFR-G。多播域中的每个BFR可以被赋予唯一的BFR标识符(BFR-id)。假定BFR-D包括一(1)的BFR-id、零(0)的设定标识符(SI)和“00001”的比特串(例如,其中“0:00001”标识BFR-D的SI和比特串)。SI和比特串可以用来标识分组将被递送到的出口BFR(BFER)集。假定BFR-F包括二(2)的BFR-id、零(0)的SI和“00010”的比特串(例如,其中“0:00010”标识BFR-F的SI和比特串)。假定BFR-E包括三(3)的BFR-id、零(0)的SI和“00100”的比特串(例如,其中“0:00100”标识BFR-E的SI和比特串)。假定BFR-A包括四(4)的BFR-id、零(0)的SI和“01000”的比特串(例如,其中“0:01000”标识BFR-A的SI和比特串)。假定BFR-G包括五(5)的BFR-id、零(0)的SI和“10000”的比特串(例如,其中“0:10000”标识BFR-G的SI和比特串)。因而,比特串中(例如,从右至左)的“1s”的位置可以提供至与BFR相关联的BFR-id的映射。例如,“00001”的比特串可以对应于BFR-id“1”(例如,BFR-D);“00010”的比特串可以对应于BFR-id“2”(例如,BFR-F);“00100”的比特串可以对应于BFR-id“3” (例如,BFR-E);“01000”的比特串可以对应于BFR-id“4”(例如,BFR-S);以及“10000”的比特串可以对应于BFR-id“5”(例如,BFR-G)。

每个BFR可以利用多个BIFT,并且每个BIFT可以包括针对任何一个目的地的单个可能下一跳。例如,如图1中所示,BFR-B(例如,入口BFR)可以利用四个BIFT,但是可以根据针对任何特定目的地要支持多少个下一跳和/或多少存储器可用于BFR-B,来利用更多的BIFT。BFR-B可以将BIFT编程到数据面中并且可以使用BIFT来转发分组。第四BIFT(例如,BIFT-4)可以包括针对BFR-id(例如,“1”、“2”、“3”、“4”和“5”)的列、针对转发比特掩码(F-BM)的列和针对相邻BFR(BFR-NBR)的列。特定BFR的相邻BFR可以包括临近于且通过直接链路连接到该特定BFR的BFR。F-BM可以包括对应于SI和BFR-NBR的组合的比特掩码。在一些实现方式中,BFR-B可以通过下列方式来填充(populate)BIFT:首先使用比特掩码中的比特“1”针对目的地的可能下一跳来填充BIFT,然后使用比特掩码中的比特“2”针对目的地的可能下一跳来填充BIFT,等等。在填充BIFT时,BFR-B可以对每个BEFT中出现每个下一跳的次数进行计数。当使用比特掩码中的第n比特填充BIFT时,对于每个可能下一跳,BFR-B可以利用已经具有最多出现的相同下一跳的BIFT。

再如图1中所示,假定多播分组到达BFR-B并且包括具有“10101”的比特串的分组报头。分组报头中的比特串的“00001”部分可以指示多播分组要被递送到具有“1”的BFR-id的BFR(例如,BFR-D);比特串的“00100”部分可以指示多播分组要被递送到具有“3”的BFR-id的BFR(例如,BFR-E);以及比特串的“10000”部分可以指示多播分组要被递送到具有“5”的BFR-id的BFR(例如,BFR-G)。BFR-B可以执行多播分组的哈希以确定哪个BIFT要用来转发该分组。例如,BFR-B可以基于多播分组的哈希确定将使用第四BIFT来转发多播分组。第四BIFT可以指示BFR-B要向BFR-C发送多播分组的一个拷贝(例如,具有“00001”的比特串)以及向BFR-E发送多播分组的另一拷贝(例如,具有“10100”的比特串)。“00001”的比特串可以指示 多播分组的拷贝要被递送到具有“1”的BFR-id的BFR(例如,BFR-D)。“10100”的比特串可以指示多播分组的另一拷贝要被递送到具有“3”和“5”的BFR-id的BFR(例如,BFR-E和BFR-G)。再如图1中所示,依据由BFR-B所提供的指令,多播分组可以被转发到BFR-D、BFR-E和BFR-G。

在此所描述的系统和/或方法可以扩展BIER转发方法,以确保至任何特定目的地所采取的路径依赖于该特定目的地和为至该特定目的地的特定分组流选择ECMP分组所使用的哈希值。

图2是可以实施本文所描述的系统和/或方法的示例环境200的示图。如图2中所示,环境200可以包括一个或多个网络设备210-1至210-N(N≥1)(下文中共同称为网络设备210,以及单独称为网络设备210)和网络220。环境200的设备可以经由有线连接、无线连接、或有线和无线连接的组合互连。

网络设备210可以包括能够接收、传送、处理、路由等等经由网络200行进的分组的设备。例如,网络设备210可以包括路由器、交换机、网关、调制解调器、防火墙、网络接口控制器(NIC)、集线器、网桥、光分插复用器(OADM)或另一类型的网络设备。在一些实现方式中,网络设备210可以包括与接收分组相关联的一个或多个输入端口、和与传送分组相关联的一个或多个输出端口。在一些实现方式中,网络设备210可以连接到一个或多个其它网络设备210。在一些实现方式中,网络设备210可以与其它设备(未示出)通信,以便处理和/或路由网络设备210所接收的分组。尽管在此结合作为网络设备210的BFR来描述实现方式的,但是可以与其它类型的网络设备210(例如,不同于BFR)一起利用本文所描述的系统和/或方法。

网络220可以包括一个或多个有线和/或无线网络,其包括网络设备210和/或允许网络设备210进行通信。例如,网络220可以包括局域网(LAN)、广域网(WAN)、城域网(MAN)、电话网(例如,公共交换电话网(PSTN))、自组织网络、内联网、因特网、基于光纤的网络、专用网络、云计算网络、和/或这些或其它类型的网络的 组合。

图2中所示出的设备和网络的数目和布置作为示例提供。在实践中,与图2中所示的那些设备和/或网络相比,可以存在附加的设备和/或网络、更少的设备和/或网络、不同的设备和/或网络、或者不同布置的设备和/或网络。此外,图2中所示的两个或更多个设备可以实现在单个设备内,或者图2中所示的单个设备可以实现为多个分布式设备。另外或者可替换地,环境200的设备集(例如,一个或多个设备)可以执行所描述的由环境200的另一设备集执行的一个或多个功能。

图3是网络设备210的示例组件的示图。如图3中所示,网络设备210可以包括一个或多个输入组件305-1至305-B(B≥1)(在下文中被共同称为输入组件305,以及单独称为输入组件305)、交换组件310、一个或多个输出组件315-1至315-C(C≥1)(在下文中被共同称为输出组件315,以及单独称为输出组件315)、以及路由组件320。

输入组件305可以是用于物理链路的附接点以及可以是诸如分组之类的进入业务的进入点。输入组件305可以诸如通过执行数据链路层封装或解封装来处理进入业务。在一些实现方式中,输入组件305可以发送和/或接收分组。在一些实现方式中,输入组件305可以发送和/或接收分组。在一些实现方式中,输入组件305可以包括输入线卡,所述输入线卡包括一个或多个分组处理组件(例如采用集成电路形式),诸如一个或多个接口卡(IFC)、分组转发组件、线卡控制器组件、输入端口、处理器、存储器、和/或输入队列。在一些实现方式中,网络设备210可以包括一个或多个输入组件305。

交换组件310可以将输入组件305与输出组件315互连。在一些实现方式中,交换组件310可以经由一个或多个交叉开关(crossbar)、经由一个或多个总线、和/或利用一个或多个共享存储器来实现。共享存储器可以起到暂时缓冲器的作用,以便在来自输入组件305的分组在最终调度以递送到输出组件315之前对分组进行存储。在一些实现方式中,交换组件310可以使得输入组件305、输出组件315、和/或 路由组件320能够通信。

输出组件315可以是用于物理链路的附接点以及可以是诸如分组之类的外出流量的退出点。输出组件315可以存储分组并且可以调度分组以便在输出物理链路上进行传输。输出组件315可以支持数据链路层封装或解封装、和/或各种更高级别的协议。在一些实现方式中,输出组件315可以发送和/或接收分组。在一些实现方式中,输出组件315可以包括输出线卡,所述输出线卡包括一个或多个分组处理组件(例如采用集成电路形式),诸如一个或多个IFC、分组转发组件、线卡控制器组件、输出端口、处理器、存储器、和/或输出队列。在一些实现方式中,网络设备210可以包括一个或多个输出组件315。在一些实现方式中,输入组件305和输出组件315可以通过相同的组件集(例如,输入/输出组件可以是输入组件305和输出组件315的组合)来实现。

路由组件320可以包括一个或多个处理器、微处理器、专用集成电路(ASIC)、场可编程门阵列(FPGA)、或类似类型的处理组件。在一些实现方式中,路由组件320可以包括随机存取存储器(RAM)、只读存储器(ROM)、和/或存储信息和/或指令的另一类型的动态或静态储存设备(快闪存储器、磁性存储器、光学存储器等等)。在一些实现方式中,路由组件320可以与连接到网络设备210的其它设备、网络、和/或系统通信,以交换关于网络拓扑的信息。路由组件320可以基于网络拓扑信息创建路由表、基于路由表创建转发表、以及将转发表转发到输入组件305和/或输出组件315。输入组件305和/或输出组件315可以使用转发表执行针对进入和/或外出分组的路由查找。

图3中所示出的组件的数目和布置作为示例提供。在实践中,与图3中所示出的那些组件相比,网络设备210可以包括附加的组件、更少的组件、不同的组件、或者不同布置的组件。另外或者可替换地,网络设备210的组件集(例如,一个或多个组件)可以执行被描述为由网络设备210的另一组件集执行的一个或多个功能。

图4是用于在网络设备中填充多个比特索引转发表(BIFT)的示例过程400的流程图。在一些实现方式中,图4的一个或多个过程块可以由网络设备210执行。在一些实现方式中,图4的一个或多个过程块可以由与网络设备210分开的或包括网络设备210的另一设备或设备组来执行。

如图4中所示,过程400可以包括创建确定数目个比特索引转发表(BIFT)(块410)。例如,多播域可以包括多个网络设备210,诸如多个BFR。在一些实现方式中,每个BFR可以利用多个BIFT,并且每个BIFT可以包括针对任何一个目的地的单个可能下一跳。在一些实现方式中,多个BFR的特定BFR(例如,入口BFR)可以基于针对任何特定目的地要支持多少个下一跳和/或有多少存储器可用于该特定BFR,来确定要创建的BIFT的数目。在一些实现方式中,特定BFR可以在与该特定BFR相关联的存储器中创建确定数目个BIFT。

再如图4中所示,过程400可以包括对于每个BIFT来确定针对第一目的地集的下一跳(块420)。例如,特定BFR可以为多个BIFT中的每一个确定针对第一目的地集(例如,较低编号目的地)的下一跳。在一些实现方式中,特定BFR可以尝试采用使重叠最大化的方式横跨BIFT分布针对任何特定目的地的可能下一跳。例如,在两个目的地具有相同下一跳的情况下,特定BFR可以尝试将这样的下一跳赋予相同的BIFT,同时尝试跟随下一跳的计算分布。在一些实现方式中,对于多个BIFT中的每一个,特定BFR可以首先确定哪些下一跳(例如,基于BFR-id,诸如BFR-id“1”、“2”、“3”等)要用于较低编号目的地。例如,假定存在五个目的地(例如,BFR-id“1”、“2”、“3”、“4”和“5”),特定BFR可以为每个BIFT确定要用于BFR-id“1”和“2”的下一跳。特定BFR可以为每个BIFT确定要用于BFR-id“3”、“4”和“5”的ECMP下一跳,如下面结合块430所描述的。在一些实现方式中,特定BFR可以基于与多播域相关联的ECMP下一跳和/或下一跳的数目,确定要利用的特定量的较低编号目的地。

在一些实现方式中,特定BFR可以首先针对目的地“1”填充每个BIFT,然后可以针对目的地“2”填充每个BIFT,然后可以针对目的地“3”填充每个BIFT,等等直到BIFT满为止。在一些实现方式中,在特定BFR第一次标识具有多个可能ECMP下一跳的特定目的地,由于在每个BIFT中先前条目将是相同的,所以特定BFR可以针对该特定目的地填充每个BIFT。这样的条目可以与第一目的地集(例如,较低编号的目的地)对应。然而,在特定BFR第二次以及所有后续次标识具有多个可能ECMP下一跳的特定目的地,先前条目在每个BIFT中将不会都是同样的(例如,由于存在多个下一跳的一些先前条目),以及特定BFR可能考虑在每个BIFT中已经存在什么,以便确定把这样的条目放在那里,如下面结合块430所描述的。

再如图4中所示,过程400可以包括利用用来为每个BIFT确定用于第二目的地集的ECMP下一跳的技术(块430)。例如,特定BFR可以利用用来为多个BIFT中的每一个确定用于与第一目的地集不同的第二目的地集(例如,较高编号的目的地)的ECMP下一跳的技术。在一些实现方式中,对于多个BIFT中的每一个,特定BFR可以利用用来确定哪些ECMP下一跳用于较高编号目的地的技术(例如,基于BFR-id,诸如BFR-id“5”、“6”、“7”等)。例如,假定存在五个目的地(例如,BFR-id“1”、“2”、“3”、“4”和“5”),并且特定BFR首先确定了用于BFR-id“1”、“2”和“3”的ECMP下一跳,对于每个BIFT,特定BFR可以利用用来确定用于BFR-id“4”和“5”的ECMP下一跳的技术。在一些实现方式中,特定BFR可以基于与多播域相关联的ECMP下一跳的数目来确定要利用的特定量的较高编号目的地。在一些实现方式中,特定BFR可以基于该特定BFR所利用的特定量的较低编号目的地来确定要利用的较高编号目的地。

在一些实现方式中,特定BFR可以利用Dijkstra算法的扩展的技术,用来确定哪些ECMP下一跳用于较高编号目的地。Dijkstra算法是图形搜索算法,其在非负边路径开销的情况下解决了图形的单源最短路径问题,并且产生了最短路径树。例如,假定特定BFR利用了 此技术来为目的地(例如,BFR-id“5”)确定可能ECMP下一跳包括第一BFR(例如,BFR-1)和第二BFR(例如,BFR-2)。此外,假定特定BFR创建了四个BIFT。在这样的示例中,特定BFR可以确定流量要在可能ECMP下一跳上要相等地分散,使得BIFT中的两个使用下一跳BFR-1,而BIFT中的另两个使用下一跳BFR-2。在一些实现方式中,特定BFR可以确定流量要在可能ECMP下一跳上基本相等地分散、在可能ECMP下一跳上随机地分散、等等。

在使哪些ECMP下一跳被放到已经具有最多的相同下一跳实例的BIFT中的程度最大化的同时,在BIFT中赋予可能ECMP下一跳的任务可以被称为装箱(bin-packing)问题或非确定性多项式时间(NP)-难题。在装箱问题中,不同体积的对象可以采用使所使用的箱数目最小化的方式被装到有限数目个箱或容器中,每个箱或容器具有特定体积。当非确定性多项式时间中的每个问题“L”在多项式时间中可以被简化成问题“H”时,问题“H”可以被视为NP-难题。然而,在BIFT中赋予可能ECMP下一跳的任务在相对小数目个变量上是NP-难题。同样,特定BFR可以利用任何现有的装箱算法(例如,二维包装、线性包装、按重量包装、按开销包装等)在BIFT中赋予可能ECMP下一跳。

在一些实现方式中,在将把哪些ECMP下一跳放到已经具有相同下一跳的最多实例的BIFT中的程度最大化同时,特定BFR可以利用启发式方法(例如,更简化的问题、行进销售员问题、搜索问题等)在BIFT中赋予可能ECMP下一跳。例如,特定BFR可以利用启发式方法,该方法首先把最低编号下一跳赋予具有相同下一跳的最多现有条目的BIFT,然后将下一个较高编号下一跳赋予具有该下一跳的最多现有条目的其余BIFT,以此类推。

再如图4中所示,过程400可以包括利用与所确定的ECMP下一跳相关联的信息填充BIFT(块440)。例如,特定BFR可以利用与所确定的ECMP下一跳相关联的信息填充多个BIFT。在一些实现方式中,多个BIFT中的每一个可以包括针对BFR-id的列(例如,“1”、 “2”、“3”、“4”等)、针对转发-比特掩码(F-BM)的列以及针对相邻BFR(BFR-NBR)的列。特定BFR的相邻BFR可以包括临近于该特定BFR的BFR。F-BM可以包括对应于SI和BFR-NBR的组合的比特掩码。在一些实现方式中,特定BFR可以利用与所确定的ECMP下一跳相关联的信息填充多个BIFT中的每一个的列。在一些实现方式中,多个BIFT中的每一个可以包括针对任何一个目的地的单个可能下一跳。

再如图4中所示,过程400可以包括存储BIFT(块450)。例如,特定BFR可以在与该特定BFR相关联的存储器(例如路由组件320中所提供的存储器,图3)中存储多个BIFT。在一些实现方式中,特定BFR可以根据有多少存储器可用于该特定BFR来存储根据需要那么多的BIFT。在一些实现方式中,特定BFR可以将多个BIFT编程到数据面(data plane)中,并且可以使用多个BIFT来转发分组。

在一些实现方式中,假定特定BFR创建了八个BIFT,并且特定BFR具有可能下一跳K、L和M。此外,假定对于一个目的地D1,可能下一跳是K或L,而对于不同的目的地D2,可能下一跳是L或M。对于目的地D1,假定在可能下一跳上相等地分散流量,特定BFR可以确定这八个BIFT中的四个要包括K以作为下一跳,而另外四个BIFT要包括L以作为下一跳。对于目的地D2,特定BFR可以确定BIFT中的四个要包括L以作为下一跳,而另外四个BIFT要包括M以作为下一跳。对于目的地D1,特定BFR可以按下列次序利用下一跳填充这八个BIFT:K、K、K、K、L、L、L、和L。对于目的地D2,特定BFR可以按下列次序利用下一跳填充这八个BIFT:L、L、L、L、M、M、M、和M。如果采用这种方式来填充BIFT,则无论进入分组的哈希值是什么,朝向目的地D1发送的多播分组的拷贝和朝向目的地D2发送的多播分组的拷贝可以采用不同的中间下一跳,但是两个分组都可以在下一跳L结束。在一些实现方式中,对于目的地D2,特定BFR可以按下列次序利用下一跳填充这八个BIFT:M、M、M、M、L、L、L、和L。在这样的实现方式中,对于导致利用最 后四个下一跳中的一个(例如下一跳L)的任何哈希值,可以针对两个目的地D1和D2来发送多播分组的单个拷贝,这导致了对特定BFR和下一跳L之间的链路的较佳利用。

尽管图4示出了过程400的示例块,但是在一些实现方式中,与图4中所描述的那些相比,过程400可以包括附加的块、较少的块、不同的块、或不同布置的块。另外或可替换地,过程400中的块中的两个或更多个可以并行执行。

图5A-5E是关于图4中所示的示例过程400的示例实现方式500的示图。图5A-5E示出了在诸如BFR之类的网络设备中填充多个BIFT的示例。

如图5A中所示,多播域可以包括通过链路互连的多个网络设备210,诸如BFR-A(210-A)、BFR-B(210-B)、BFR-C(210-C)、BFR-D(210-D)、BFR-E(210-E)、BFR-F(210-F)、和BFR-G(210-G)。多播域中的每个BFR 210可以被赋予唯一的BFR-id。假定BFR-D包括一(1)的BFR-id、零(0)的SI和“00001”的比特串;假定BFR-F包括二(2)的BFR-id、零(0)的SI和“00010”的比特串;假定BFR-E包括三(3)的BFR-id、零(0)的SI和“00100”的比特串;假定BFR-A包括四(4)的BFR-id、零(0)的SI和“01000”的比特串;假定BFR-G包括五(5)的BFR-id、零(0)的SI和“10000”的比特串。尽管在图5A中没有为BFR-B和BFR-C示出这样的信息,但是BFR-B和BFR-C也可以与BFR-id、SI和/或比特串相关联。如果对于图5A的多播域利用了BIER转发方法,则BFR-B可以利用下列信息生成单个BIFT:

不像BIER转发方法,在一些实现方式中,每个BFR 210可以利用多个BIFT 510,并且每个BIFT 510可以包括针对任何一个目的地的单个可能下一跳。例如,BFR-B可以在没有ECMP支持的情况下利用四个BIFT 510-1、510-2、510-3、和510-4,如图5B中所示。对分组执行的哈希可以确定BFR-B使用四个BIFT 510中的哪个。第一BIFT 510-1可以假定目的地为BFR-id“2”(例如,BFR-F)的分组经由BFR-C传送,而目的地为BFR-id“5”(例如,BFR-G)的分组经由BFR-E传送。第二BIFT 510-2可以假定目的地为BFR-id“2”(例如,BFR-F)的分组经由BFR-C传送,而目的地为BFR-id“5”(例如,

BFR-G)的分组经由BFR-E传送。第三BIFT 510-3可以假定目的地为BFR-id“2”(例如,BFR-F)的分组经由BFR-E传送,而目的地为BFR-id“5”(例如,BFR-G)的分组经由BFR-C传送。第四BIFT 510-4可以假定目的地为BFR-id“2”(例如,BFR-F)的分组经由BFR-E传送,而目的地为BFR-id“5”(例如,BFR-G)的分组经由BFR-C传送。

在一些实现方式中,BFR-B可以尝试以使重叠最大化的方式在BIFT 510中分布针对任何特定目的地的可能下一跳。例如,如果两个目的地具有相同的下一跳,则在维持下一跳的计算分布时,BFR-B可以尽可能地把那些下一跳放在相同的BIFT 510中。如图5C中所示,BFR-B可以创建四个BIFT 510-1、510-2、510-3和510-4,并且可以为这四个BIFT 510中的每一个利用BFR-id“1”、“2”、“3”、“4”和“5”填充第一列。

在一些实现方式中,BFR-B可以利用针对目的地“1”的信息(例如,BFR-id“1”)来填充这四个BIFT 510。然而,由于针对目的地“1”(例如,BFR-C)只存在一个可能下一跳,则BFR-B可以利用相同的信息来填充这四个BIFT 510,使得每个BIFT 510中的第一条目可以包括下列:

BFR-B然后可以利用针对目的地“2”的信息(例如,BFR-id“2”)来填充这四个BIFT 510。由于对于目的地“2”存在两个可能下一跳BFR-C和BFR-E,所以BFR-B可以确定BIFT 510中的两个要利用BFR-C作为下一跳进行填充,并且另外两个BIFT 510要利用BFR-E作为下一跳进行填充。BFR-B可以确定这四个BIFT 510中的哪些具有BFR-C的更多下一跳,以及这四个BIFT 510中的哪些具有BFR-E的更多下一跳。

然而,在这点上,每个BIFT 510可以包括相同的先前增加的下一跳,并且哪两个BIFT 510表添加BFR-C以作为下一跳以及哪两个BIFT 510添加BFR-E以作为下一跳这都不是问题。假定BFR-B选择BIFT 510-1和510-2用于BFR-C的下一跳,并且注意BFR-C与已经存在于BIFT 510-1和510-2中的条目的下一跳相同。因此,BFR-B可以针对已经在BIFT 510-1和510-2中的条目来更新F-BM。这将创建BIFR 510-1和510-2,其包括下列:

此外,假定BFR-B选择BIFT 510-3和510-4用于BFR-E的下一跳,并且注意BFR-E与已经存在于BIFT 510-3和510-4中的条目的下一跳不同。因此,针对先前添加的条目(例如,针对目的地“1”)的F-BM可以保持相同,并且将创建BIFT 510-3和510-4,其包括下列:

BFR-B然后可以向每个BIFT 510添加目的地“3”(例如, BFR-id“3”)。由于只存在至目的地“3”(例如,BFR-E)的一个最佳路径,所以可以如下更新BIFT 510-1和510-2:

此外,可以如下更新BIFT 510-3和510-4:

BFR-B然后可以向每个BIFT 510添加目的地“4”(例如,BFR-id“4”)。只存在至目的地“4”的一个最佳路径(例如,经由BFR-A),但是此时至目的地“4”的最佳路径可以包括不同于针对先前条目的下一跳的下一跳。基于此,可以如下更新BIFT 510-1和510-2:

此外,可以如下更新BIFT 510-3和510-4:

如图5D中所示,BFR-B可以首先确定哪些下一跳520要用于较 低编号目的地(例如,基于BFR-id,诸如BFR-id“1”、“2”、“3”和“4”)。例如,假定BFR-B利用与针对BFR-id“1”、“2”、“3”和“4”的下一跳相关联的信息520-1来填充F-BM列和BFR-NBR列(例如,基于多播域由BFR-B确定为较小编号目的地)。假定,BFR-B利用与针对BFR-id“1”、“2”、“3”和“4”的下一跳相关联的信息520-2来填充第二BIFT 510-2的F-BM列和BFR-NBR列。假定,BFR-B利用与针对BFR-id“1”、“2”、“3”和“4”的下一跳相关联的信息520-3来填充第三BIFT 510-3的F-BM列和BFR-NBR列。假定,BFR-B利用与针对BFR-id“1”、“2”、“3”和“4”的下一跳相关联的信息520-4来填充第四BIFT 510-4的F-BM列和BFR-NBR列。

最终,BFR-B可以为目的地“5”(例如,BFR-id“5”)向每个BIFT510添加条目。在此情况下,目的地“5”可以与两个可能下一跳(例如,BFR-C和BFR-E)相关联。由于存在多个可能下一跳,所以BFR-B可以确定有多少BFR-C的下一跳和有多少BFR-E的下一跳已经处于每个BIFT 510中。然而,在针对每个BIFT 510而言答案不同的情况下,由于存在基于导致包含不同信息的不同BIFT 510的多个ECMP的先前目的地。BFR-B可以通过下列方式对转发进行优化:为BFR-C的可能下一跳选择BIFT 510-1和510-2(例如,由于BIFT 510-1和510-2具有将BFR-C作为下一跳的更多个条目),以及为BFR-E的可能下一跳选择BIFT 510-3和510-4(例如,由于BIFT 510-3和510-4具有已经将BFR-E作为下一跳的更多个条目)。

参照图5D和5E,在决定哪个下一跳要用于每个BIFT 510中的BFR-id“5”的过程中,BFR-B可以利用ECMP路由计算(例如,Dijkstra算法的扩展)来确定可能ECMP下一跳(例如,针对BFR-id“5”)包括BFR-C和BFR-E。假定在可能下一跳上相等地分散流量,BFR-B可以确定BIFT 510中的两个要使用下一跳BFR-C,而另两个BIFT 510要使用下一跳BFR-E。如图5D中所示,第一BIFT 510-1包括对BFR-C的两个引用和对BFR-E的一个引用;第二BIFT 510-2包括对BFR-C的两个引用和对BFR-E的一个引用;第三BIFT 510-3包括对BFR-C 的一个引用和对BFR-E的两个引用;以及第四BIFT 510-4包括对BFR-C的一个引用和对BFR-E的两个引用。

在将哪些下一跳被放到已经具有相同下一跳的最多实例的BIFT510中的程度最大化同时,BFR-B可以利用简单启发式方法在BIFT510中赋予可能下一跳(例如,对BFR-C的两个引用和对BFR-E的两个引用)。简单启发式方法可以包括首先把较低编号下一跳赋予具有相同下一跳的最多现有条目的BIFT,然后将下一个较高编号下一跳赋予具有该下一跳的最多现有条目的其余BIFT,等等。基于此方案,以及如图5E中所示,BFR-B可以将对BFR-C的每个引用与第一BIFT 510-1和第二BIFT 510-2的目的地“5”(例如,BFR-id“5”)相关联,如分别由附图标记530-1和530-2所指示的。此外,BFR-B可以将对BFR-E的每个引用与第三BIFT 510-3和第四BIFT 510-4的目的地“5”(例如,BFR-id“5”)相关联,如分别由附图标记530-3和530-4所指示的。

如上所指示的,图5A-5E仅仅作为示例提供。其它示例是可能的并且可以与相对于图5A-5E所描述的不同。

图6是基于多个BIFT转发多播组的示例过程600的流程图。在一些实现方式中,图6的一个或多个过程块可以由网络设备210执行。在一些实现方式中,图6的一个或多个过程块可以由与网络设备210分开的或包括网络设备210的另一设备或设备组来执行。

如图6中所示,过程600可以包括接收包括具有标识目的地地址的分组报头的多播分组(块610)。例如,多播域可以包括多个网络设备210,诸如多个BFR。在一些实现方式中,每个BFR可以利用多个BIFT,并且每个BIFT可以包括针对任何一个目的地的单个可能下一跳。在一些实现方式中,多个BFR的特定BFR(例如,入口BFR)可以接收包括分组报头的多播分组。在一些实现方式中,分组报头可以包括标识多个目的地地址的信息。例如,假定多播域包括与BFR-id“1”、“2”、“3”、“4”和“5”相关联的BFR,并且分组报头包括“11100”的比特串。这样的比特串可以指示多播分组要被递送到与 BFR-id“3”(例如,基于比特串的“00100”部分)、“4”(例如,基于比特串的“01000”部分)和“5”(例如,基于比特串的“10000”部分)相关联的BFR。

再如图6中所示,过程600可以包括分析分组报头以确定多个BIFT的要用于多播分组的比特索引转发表(BIFT)(块620)。例如,特定BFR可以分析多播分组的分组报头,以便确定多个BIFT中的哪个BIFT用于多播分组。在一些实现方式中,特定BFR可以执行分组报头的哈希(例如,利用哈希函数)以便标识包含在分组报头中的信息。例如,特定BFR可以执行分组报头中的一些或所有的哈希以标识“11100”的比特串。在一些实现方式中,特定BFR可以利用比特串来确定多播分组要被递送到与BFR-id“3”、“4”和“5”相关联的BFR。在一些实现方式中,特定BFR可以标识多个BIFT中包括可以用来将多播分组递送到与BFR-id“3”、“4”和“5”相关联的BFR的信息的特定BIFT。例如,特定BFR可以将该特定BIFT标识为包括用于将分组转发到与BFR-id“3”、“4”和“5”相关联的BFR的条目的BIFT。在一些实现方式中,特定BFR可以利用不同于哈希函数的另一转换函数,以便标识包含在分组报头中的信息,诸如校验和、校验位、指纹、随机函数等。

在一些实现方式中,特定BFR可以对分组执行哈希以标识多个BIFT中的用于分组的特定BIFT,以及确保属于相同的分组应用流的分组采用相同的路径,并且使得分组保持次序且得到一致的处理。然而,不同源和目的地之间行进的不同应用或分组可能采用不同的路径,以便允许流量在网络中的多个链路上散开。例如,直接在IP上运行的协议可以包括TCP或UDP,然后应用在TCP或UDP上运行。如果协议是UDP,则特定BFR可以对IP源和目的地地址执行哈希以及对UDP源和目的地端口执行哈希(例如,以标识特定BIFT)。如果协议是TCP,则特定BFR可以对IP源和目的地地址执行哈希,以及对TCP源和目的地端口执行哈希(例如,以标识特定BIFT)。如果协议既不是UDP也不是TCP,则特定BFR可以仅对IP源和目的 地地址和IP协议字段执行哈希(例如,以标识特定BIFT)。在相同IP主机之内存在多个应用的情况下,多个应用可以利用不同的端口。这可能允许从相同源至相同目的地并且使用相同应用的分组采用相同的路径。从不同源至不同目的地或者支持不同应用的分组可以采用不同的路径。

在多协议标签交换(MPLS)网络中执行类似的过程。在一些情况下,MPLS分组可以包括IP分组,并且特定BFR可以对处于MPLS分组中的IP分组执行哈希(例如,以标识特定BIFT)。在其它情况下,MPLS分组可以包括其它MPLS分组使得多个MPLS报头处于相同MPLS分组上。例如当相同的两个提供者边设备之间存在多个伪线(pseudowire)(例如,每个伪线可以支持不同的用户或不同的应用)时,这可能发生。伪线可以各自具有MPLS标签交换路径LSP),但是在单个LSP内多个伪线LSP可以复用。这可能暗示每个分组包括两个MPLS报头(例如,第一报头用于这两个提供者边设备之间的路径,而第二报头用于每个伪线)。该路径中间的网络设备(例如,特定BFR)可以基于第一MPLS报头来转发分组,但是可以对第二报头执行哈希。如果存在通过该网络的ECMP路径或者如果两个网络设备之间存在LAG组,则来自相同伪线的分组可以利用相同的路径,但是来自不同伪线的分组可以在多个路径上散开。

在一些实现方式中,如果分组是BIER分组,则特定BFR不会对标识哪些目的地要接收每个分组的BIER比特串进行哈希。这可以使得针对特定目的地的分组能够总是利用相同的路径,而与还有哪些其它目的地需要接收相同分组无关。然而,哈希函数可以包括应用信息和源信息。例如,如果第一人正在第一电视上观看频道7,则第一人会想让针对频道7的分组总是采用一致的路径,即使当第二人在频道7和频道5之间变换的情况下也是如此。然而,如果第一人正观看频道7,则第一人可能不关心针对频道7的分组是否与针对第二人正看的视频的分组采用相同的路径。

再如图6中所示,过程600可以包括基于所确定的BIFT来标识 针对多播分组的下一跳(块630)。例如,特定BFR可以基于所确定的BIFT来标识针对多播分组的下一跳。在一些实现方式中,特定BFR可以利用所确定的BIFT以便标识针对多播分组的下一跳。在一些实现方式中,特定BFR可以利用所确定的BIFT的条目来标识针对多播分组的下一跳。例如,如果所确定的BIFT包括用于将多播分组转发到与BFR-id“3”、“4”和“5”相关联的BFR的特定条目,则特定BFR可以将与特定条目相关联的下一跳标识为是针对多播分组的下一跳。

再如图6中所示,过程600可以包括将多播分组转发到所标识下一跳以便转发到与目的地地址相关联的目的地(块640)。例如,特定BFR可以将多播分组转发到所标识下一跳,并且所标识下一跳可以继续将多播分组转发到与分组报头中所提供的目的地地址相关联的目的地。在一些实现方式中,特定BFR可以将多播分组的拷贝转发到不同的所标识下一跳。例如,如果所确定的BIFT包括用于将多播分组转发到与BFR-id“3”、“4”和“5”相关联的BFR的特定条目,则特定BFR可以创建多播分组的第一拷贝,并且可以在多播分组的第一拷贝的分组报头中包括“01000”的比特串(对应于BFR-id“4”)。特定BFR可以将多播分组的第一拷贝提供至第一ECMP下一跳,以及第一ECMP下一跳可以利用“01000”的比特串朝向与BFR-id“4”相关联的BFR转发多播分组的第一拷贝。特定BFR可以创建多播分组的第二拷贝,并且可以在多播分组的第二拷贝的分组报头中包括“10100”的比特串(对应于BFR-id“3”和“5”)。特定BFR可以将多播分组的第二拷贝提供至第二ECMP下一跳,以及第二ECMP下一跳可以利用“10100”的比特串朝向与BFR-id“3和“5”相关联的BFR转发多播分组的第二拷贝。

尽管图6示出了过程600的示例块,但是在一些实现方式中,与图6中所描述的那些相比,过程600可以包括附加的块、较少的块、不同的块、或不同布置的块。另外或可替换地,过程600中的块中的两个或更多个可以并行执行。

图7A-7D关于图6中所示的示例过程600的示例实现方式700 的示图。图7A-7D示出了基于多个BIFT转发多播分组的示例。

如图7A中所示,多播域可以包括通过链路互连的多个网络设备210,诸如BFR-A(210-A)、BFR-B(210-B)、BFR-C(210-C)、BFR-D(210-D)、BFR-E(210-E)、BFR-F(210-F)、和BFR-G(210-G)。多播域中的每个BFR 210可以被赋予唯一的BFR-id。BFR-D可以包括一(1)的BFR-id、零(0)的SI和“00001”的比特串;BFR-F可以包括二(2)的BFR-id、零(0)的SI和“00010”的比特串;BFR-E可以包括三(3)的BFR-id、零(0)的SI和“00100”的比特串;BFR-A可以包括四(4)的BFR-id、零(0)的SI和“01000”的比特串;以及BFR-G可以包括五(5)的BFR-id、零(0)的SI和“10000”的比特串。尽管在图7A中没有为BFR-B和BFR-C示出这样的信息,但是BFR-B和BFR-C也可以与BFR-id、SI和/或比特串相关联。

再如图7A中所示,每个BFR 210可以利用多个BIFT 710,并且每个BIFT 710可以包括针对任何一个目的地的单个可能下一跳。例如,BFR-B可以利用四个BIFT 710。如进一步示出的,BFR-B可以接收多播分组720,其包括载荷和带有“10101”的比特串。“10101”的比特串可以指示分组720要被递送到具有“1”(例如,BFR-D,如由比特串的“00001”部分所指示的)、“3”(例如,BFR-E,如由比特串的“00100”部分所指示的)和“5”(例如,BFR-G,如由比特串的“10000”部分所指示的)的BFR-id的BFR 210。BFR-B可以执行分组720的哈希以标识分组报头的比特串,如由图7A中附图标记730所指示的。

如图7B中所示,BFR-B可以利用“10101”的比特串(例如,如基于分组720的哈希所标识的),来确定四个BIFT 710-1、710-2、710-3、和710-4中的特定BIFT 710。例如,BFR-B可以确定第四BIFT 710-4要被用来将分组720转发到BFR-D、BFR-E、BFR-G(例如,目的地“1”、“3”和“5”),如图7B中由附图标记740所指示的。

如图7C中所示,基于第四BIFT 710-4,BFR-B可以创建分组720的第一拷贝750-1,其在分组报头中包括“00001”的比特串。BFR-B可以向BFR-C转发第一分组拷贝750-1,并且BFR-C可以接收第一分 组拷贝750-1。进一步基于第四BIFT 710-4,BFR-B可以创建分组720的第二拷贝750-2,其在分组报头中包括“10100”的比特串。BFR-B可以将第二分组拷贝750-2转发到BFR-E(例如,基于比特串的“00100”部分),以及BFR-E可以接收第二分组拷贝750-2。

如图7D中所示,“00001”的比特串可以指示BFR-C,第一分组拷贝750-1要被转发到具有“1”的BFR-id的BFR 210(例如,BFR-D)。因此,BFR-C可以向BFR-D转发第一分组拷贝750-1,并且BFR-D可以接收第一分组拷贝750-1。“10100”的比特串可以指示BFR-E,第二分组拷贝750-2要被BFR-E(例如具有BFR-id“3”,如有比特串的“00100”部分所指示的)接收,并且被转发到具有“5”的BFR-id的BFR210(例如,BFR-G,如由比特串的“10000”部分所指示的)。因此,BFR-E可以接收第二分组拷贝750-2,并且可以将第二分组拷贝750-2转发到BFR-F。BFR-F可以接收第二分组拷贝750-2,并且可以确定(例如,基于比特串的“10000”部分)第二分组拷贝750-2要被转发到BFR-G。因此,BFR-F可以向BFR-G转发第二分组拷贝750-2,并且BFR-G可以接收第二分组拷贝750-2。

如上所指示的,图7A-7D仅仅作为示例提供。其它示例是可能的并且可以与相对于图7A-7D所描述的不同。

本文所描述的系统和/或方法可以扩展BIER转发方法以确保至任何特定目的地所采取的路径依赖于该特定目的地和为至该特定目的地的特定分组流选择ECMP分组所使用的哈希值。系统和/或方法可以利用多个BIFT,并且每个BIFT可以包括针对任何一个目的地的单个可能下一跳。系统和/或方法可以使不必要的早期路径散度最小化,从而实现了网络资源的更有效利用。系统和/或方法可以使BIER转发方法是确定性的,其可以简化网络OAM并且允许网络的更稳定的性能。系统和/或方法可以在多播流量如何在ECMP和/或LAG上传播方面改善网络效率。

上述公开内容提供了图解和描述,但是并不意图是排他性的或者并不意图把实现方式局限于所公开的精确形式。根据上面公开内容修 改和变体是可能的,或者可以从实现方式的实践中获取修改和变体。例如,虽然本文所描述的系统和/或方法为了简便起见是在BFR的环境下描述的,但是这些系统和/或方法可以相等地应用于其它类型的网络设备的环境下。

如本文所使用的,术语组件意图被广义地理解为硬件、软件、和/或硬件和软件的组合。

如本文所使用的,分组可以指的是网络分组、帧、数据报、分段、分组的片段、帧的片段、数据表的片段、分段的片段、或者能够经由网络传送的数据的任何其他格式化单元或非格式化单元。

将显然的是,本文所描述的系统和/或方法可以采用不同形式的硬件、软件、或硬件和软件的组合来实施。用来实现这些系统和/或方法的实际专门控制硬件或软件不限于这些实现方式。因而,在本文中没有参照具体软件代码来描述系统和/或方法的操作和行为——应当理解,可以将软件和硬件设计成实现基于本文描述的系统和/或方法。

即使特征的特定组合记载在权利要求书中和/或公开在说明书中,但是这些组合并不意图限制可能实现方式的公开内容。实际上,这些特征中的一些可以采用未在权利要求书中记载和/或未在说明书中公开的方式进行组合。尽管下面列出的每个从属权利要求可能直接依赖于仅一个权利要求,但是可能实现方式的公开内容包括权利要求集中与每隔一个权利要求组合的每个从属权利要求。

本文中所使用的元素、动作或指示不应当被解释为是关键的或主要的,除非明确这样描述。再者,如本文所使用的,冠词“一个”和“一种”意图包括一个或多个项,以及可以与“一个或多个”互换使用。此外,如本文所使用的,术语“集”意图包括一个或多个项,以及可以与“一个或多个”互换使用。在仅意图一个项的情况下,使用术语“一个”或类似的语言。再者,如本文所使用的,术语“具有”、“有”、“带有”等意图是开放性术语。此外,短语“基于”意图意味着“至少部分基于”,除非另外明确陈述。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1