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

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

随着时间的推移,网络设备(例如,路由器)转发速率已经快速地增长,而控制平面处理能力以较慢的速率增长。转发平面速度与控制平面速度之间的比率非常大(例如,一千或更大的因子)并且随着时间的推移一直在增长。用于互联网协议(IP)多播的已有方法相对是控制平面密集的。一种被称为比特索引显式复制(bitindex explicit replication,BIER)转发方法的方式已经被引入到互联网工程任务组(IETF)中,以允许许多多播组同时在网络的核心中以最低状态被支持。在BIER转发方法中,仅有针对任何特定分组流的入口路由器需要知道哪些出口路由器将要接收任何特定分组。BIER转发方法不要求任何显式的树构建(tree-building)协议,BIER转发方法也不要求中间路由器来维持任何的每流状态。实施BIER转发方法的路由器被称为比特转发路由器(BFR)。

在包括等价多路径(ECMP)或链路聚合组(LAG)(例如,随着路由器变得更快,它们正变得更加常见)的网络中,BIER转发方法导致了针对任何一个目的地的不确定路径。特别地,分组采取来通向一个目的地的路径取决于哪些其他目的地也正在接收相同的分组。因此,在大型的多播组中,如果一个路由器或者数个路由器交替地加入和离开该多播组,则被采取来通向该多播组中的其他路由器的路径将会波动,这使得网络操作、监管和管理(OAM)是困难的。例如,利用BIER转发方法,对于跟踪路由技术而言可能难以正确地确定由特定分组流针对特定目的地所采取的路径。BIER转发方法还可能导致不一致的性能和/或向任何特定目的地的分组递送的无序。考虑到不一致性能可能取决于所采取来通向特定目的地的路径,可能难以诊断这样的不一致性能。



技术实现要素:

在一些实施方式中,一种网络设备可以包括一个或多个处理器,该一个或多个处理器用以:创建多个转发表,其中每个转发表包括与目的地集合相关联的信息;针对多个转发表中的每个转发表,确定针对目的地集合的下一跳;针对多个转发表中的每个转发表,确定针对目的地集合的等价多路径下一跳;利用与下一跳和等价多路径下一跳相关联的信息来填充多个转发表;以及将多个转发表组合为单个转发表,其中该单个转发表被用来朝向多个目的地转发多播分组,并且该单个转发表包括分离的条目,分离的条目取决于多播分组朝向目的地将要经过的针对下一跳具有多个选择的路由。

在一些实施方式中,该一个或多个处理器进一步用以:存储该多个转发表和该单个转发表;以及将该单个转发表编程到被用来转发多播分组的数据平面中。

在一些实施方式中,该单个转发表包括针对目的地集合中的每个目的地的多个可能的下一跳。

在一些实施方式中,该单个转发表包括比特索引转发表(BIFT)。

在一些实施方式中,网络设备包括比特转发设备。

在一些实施方式中,该一个或多个处理器进一步用以:接收多播分组,该多播分组包括标识针对该多播分组的目的地地址的信息;分析该多播分组来确定单个转发表的一部分以使用用于该多播分组;标识与单个转发表的该部分相关联并且与目的地地址相关联的特定下一跳;以及将该多播分组转发给特定下一跳,特定下一跳朝向与目的地地址相关联的目的地转发该多播分组。

在一些实施方式中,在分析多播分组时,该一个或多个处理器进一步用以:将哈希函数应用到该多播分组的至少一部分以确定要使用用于该多播分组的该单个转发表的部分。

在一些实施方式中,在将多播分组转发给特定下一跳时,该一个或多个处理器进一步用以:针对特定下一跳中的每个下一跳创建多播分组的副本;以及将多播分组的副本转发给特定下一跳中的每个下一跳。

在一些实施方式中,一种方法可以包括:由网络中所提供的网络设备创建多个转发表,其中每个转发表包括与目的地集合相关联的信息;由网络设备并且针对每个转发表,确定针对目的地集合的下一跳;由网络设备并且针对每个转发表,确定针对目的地集合的等价多路径下一跳;由网络设备利用与下一跳和等价多路径下一跳相关联的信息来填充多个转发表;以及由网络设备将多个转发表组合为单个转发表,其中该单个转发表被用来朝向多个目的地转发多播分组,并且该单个转发表包括分离的条目,分离的条目取决于多播分组朝向目的地将要经过的针对下一跳具有多个选择的路由。

在一些实施方式中,该方法进一步包括:将该单个转发表编程到与网络设备相关联并且被用来转发多播分组的数据平面中。

在一些实施方式中,该单个转发表包括针对目的地集合中的每个目的地的多个可能的下一跳。

在一些实施方式中,网络设备包括比特转发设备。

在一些实施方式中,该方法进一步包括:接收多播分组,该多播分组包括标识针对该多播分组的目的地地址的信息;分析该多播分组来确定该单个转发表的一部分以使用用于该多播分组;标识与该单个转发表的该部分相关联并且与目的地地址相关联的特定下一跳;以及将该多播分组转发给特定下一跳,特定下一跳朝向与目的地地址相关联的目的地转发该多播分组。

在一些实施方式中,哈希函数被应用到该多播分组的头部的一个或多个字段,以用于确定要使用用于该多播分组的该单个转发表的部分。

在一些实施方式中,将该多播分组转发给特定下一跳进一步包括:针对特定下一跳中的每个下一跳创建该多播分组的副本;以及将该多播分组的副本转发给特定下一跳中的每个下一跳。

在一些实施方式中,一种比特转发设备可以包括一个或多个处理器,该一个或多个处理器用以:创建多个比特索引转发表,其中每个转发表包括与目的地集合相关联的信息;利用与目的地集合相关联的信息来填充多个比特索引转发表;以及将多个比特索引转发表组合为单个比特索引转发表,其中该单个比特索引转发表包括分离的条目,分离的条目取决于多播分组朝向目的地将要经过的针对下一跳具有多个选择的路由。

在一些实施方式中,该一个或多个处理器进一步用以:存储该单个比特索引转发表;以及将该单个比特索引转发表编程到被用来转发多播分组的数据平面中。

在一些实施方式中,该单个比特索引转发表包括针对目的地集合中的每个目的地的多个可能的下一跳。

在一些实施方式中,该一个或多个处理器进一步用以:接收多播分组,该多播分组包括标识针对该多播分组的目的地地址的信息;分析该多播分组来确定单个比特索引转发表的一部分以使用用于该多播分组;标识与该单个比特索引转发表的该部分相关联并且与目的地地址相关联的特定下一跳;以及将该多播分组转发给特定下一跳,特定下一跳朝向与目的地地址相关联的目的地转发该多播分组。

在一些实施方式中,在将多播分组转发给特定下一跳时,该一个或多个处理器进一步用以:针对特定下一跳中的每个下一跳创建多播分组的副本;以及将多播分组的副本转发给特定下一跳中的每个下一跳。

在一些实施方式中,一种方法可以包括:由网络中所提供的网络设备创建转发表,该转发表包括与目的地集合相关联的信息;由网络设备确定针对目的地集合的下一跳;由网络设备利用与下一跳相关联的信息来填充转发表;以及由网络设备存储转发表,其中该转发表被用来朝向多个目的地转发多播分组,并且该转发表包括分离的条目,分离的条目取决于多播分组朝向目的地将要经过的针对下一跳具有多个选择的路由。

附图说明

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

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

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

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

图5A-5F是与图4中所示出的示例过程有关的示例实施方式的示图;

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

图7A-7D是与图6中所示出的示例过程有关的示例实施方式的示图。

具体实施方式

示例实施方式的以下详细描述参考了附图。不同附图中的相同参考标号可以标识相同或类似的元件。

BIER转发方法利用了比特索引转发表(BIFT)。在不包括ECMP和LAG的网络中,针对分组的每个潜在目的地可以由转发比特掩码(F-BM)中的唯一单个比特来表示,并且可以仅具有单个可能的下一跳。此外,在不包括ECMP和LAG的网络中,单个BIFT中的每个条目(例如,对应于特定的可能目的地)包括单个行,该单个行指定与特定下一跳相对应的单个F-BM。然而,在包括ECMP和/或LAG的网络中,单个BIFT中的一些条目将包含与多个可能的下一跳相对应的多个行(例如,针对每个下一跳具有不同的F-BM)。哪个条目被选择可以取决于正被转发的分组上所执行的哈希(hash)。例如,哈希可以基于IP源和目的地地址、IP协议字段、传输控制协议(TCP)端口、和/或用户数据报协议(UDP)端口。在这样的情形中,表示任何一个特定目的地的比特可以存在于针对多个条目的F-BM中。因为BIER转发方法首先确定通向具有F-BM中的较低编号比特的目的地的路径,所以通向与较高编号比特相对应的目的地的路径将取决于分组是否也去向具有较低编号比特的目的地、以及取决于哪个哈希值被使用。

本文所描述的系统和/或方法可以扩展BIER转发方法,以确保被采取来通向任何特定目的地的路径取决于该特定目的地、以及被用于针对通向该特定目的地的特定分组流来选择ECMP分组的哈希值。在一些实施方式中,这些系统和/或方法可以利用多个BIFT,并且每个BIFT可以包括针对任何一个目的地的单个可能的下一跳。在一些实施方式中,这些系统和/或方法可以将多个BIFT组合为单个BIFT。这些系统和/或方法可以使路径的不必要的早期发散(divergence)最小化,由此对网络资源进行更高效的使用。这些系统和/或方法可以使得BIER转发方法是确定的,这可以简化网络OAM并且允许更稳定的网络性能。这些系统和/或方法可以在多播业务如何跨ECMP和/或LAG被扩散的方面改进网络效率。单个BIFT可以要求比多个BIFT较少的存储空间,并且单个BIFT可以比多个BIFT更容易创建。在一些实施方式中,单个BIFT的一个或多个条目可以被精简并且要求较少的存储空间。

图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和比特串)。因此,“1”在比特串中的放置(例如,从右到左)可以提供向与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-A);并且“10000”的比特串可以对应于BFR-id“5”(例如,BFR-G)。

每个BFR可以利用单个BIFT,该单个BIFT包括针对任何一个目的地的四个可能的下一跳。例如,如图1中所示出的,BFR-B(例如,入口BFR)可以利用单个BIFT用于转发分组,该单个BIFT被编程到数据平面中。该BIFT可以包括用于BFR-id(例如,“1”、“2”、“3”、“4”和“5”)的列、用于转发比特掩码(F-BM)的列、以及用于邻居BFR(BFR-NBR)的列。特定BFR的邻居BFR可以包括邻近于并且通过直接链路连接到该特定BFR的BFR。F-BM可以包括与SI和BFR-NBR的组合相对应的比特掩码。在一些实施方式中,BFR-B可以通过首先使用比特掩码中的比特“1”填充用于针对目的地的可能下一跳的BIFT,然后使用比特掩码中的比特“2”填充用于针对该目的地的可能下一跳的BIFT,以此类推,来填充BIFT。随着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可以包括能够对经由网络220行进的分组进行接收、传输、处理、路由等的设备。例如,网络设备210可以包括路由器、交换机、网关、调制解调器、防火墙、网络接口控制器(NIC)、集线器、桥接器、光分插复用器(OADM)、或者另一类型的网络设备。在一些实施方式中,网络设备210可以包括与接收分组相关联的一个或多个输入端口、以及与传输分组相关联的一个或多个输出端口。在一些实施方式中,网络设备210可以连接到一个或多个其他的网络设备210。在一些实施方式中,网络设备210可以与其他设备(未示出)进行通信,以便处理和/或路由网络设备210所接收的分组。尽管本文关于作为网络设备210的BFR描述了实施方式,但是本文所描述的系统和/或方法可以与(例如,除了BFR之外的)其他类型的网络设备210一起被利用。

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

图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可以包括输入线路卡,输入线路卡包括一个或多个分组处理组件(例如,以集成电路为形式),诸如一个或多个接口卡(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中所示出的组件的数目和布置被提供作为示例。在实践中,网络设备210可以包括另外的组件、较少的组件、不同的组件、或者与图3中所示出的那些组件不同地被布置的组件。另外地或替换地,网络设备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中的每个BIFT确定针对第一目的地集合(例如,较低编号的目的地)的下一跳。在一些实施方式中,特定BFR可以试图用使交叠最大化的方式跨BIFT来分布针对任何特定目的地的可能下一跳。例如,在两个目的地具有相同下一跳的场合,特定BFR可以尝试将这样的下一跳指配给相同的BIFT,同时尝试遵循所计算的下一跳的分布。在一些实施方式中,对于多个BIFT中的每个BIFT,特定BFR可以首先确定哪些下一跳要使用用于较低编号的目的地(例如,基于BFR-id,诸如BFR-id“1”、“2”、“3”等)。例如,假设存在五个目的地(例如,BFR-id“1”、“2”、“3”、“4”和“5”),则特定BFR可以针对每个BIFT确定要使用用于BFR-id“1”和“2”的下一跳。如下面关于框430所描述的,特定BFR可以针对每个BIFT确定要使用用于BFR-id“3”、“4”和“5”的ECMP下一跳。在一些实施方式中,特定BFR可以基于与多播域相关联的下一跳和/或ECMP下一跳的数目,来确定要利用的较低编号的目的地的特定数量。

在一些实施方式中,特定BFR可以首先针对目的地“1”填充每个BIFT,然后可以针对目的地“2”填充每个BIFT,然后可以针对目的地“3”填充每个BIFT,并且以此类推直到BIFT为满。在一些实施方式中,特定BFR标识具有多个可能ECMP下一跳的特定目的地的第一次,该特定BFR可以针对该特定目的地填充每个BIFT,因为之前的条目在每个BIFT中将是相同的。这样的条目可以与第一目的地集合(例如,较低编号的目的地)相对应。然而,特定BFR标识具有多个可能ECMP下一跳的特定目的地的第二次、以及所有后续的次数,之前的条目在每个BIFT中将并不都是相同的(例如,因为存在一些之前的条目,对于这些之前的条目,存在多个下一跳),并且如下面关于框430所描述的,该特定BFR可以考虑已经在每个BIFT中的事物以便确定是否要放置这样的条目。

如图4中进一步示出的,过程400可以包括利用技术针对每个BIFT确定针对第二目的地集合的ECMP下一跳(框430)。例如,特定BFR可以利用技术针对多个BIFT中的每个BIFT确定针对与第一目的地集合不同的第二目的地集合(例如,较高编号的目的地)的ECMP下一跳。在一些实施方式中,针对多个BIFT中的每个BIFT,特定BFR可以利用技术确定哪些ECMP下一跳要使用用于较高编号的目的地(例如,基于BFR-id,诸如BFR-id“5”、“6”、“7”等)。例如,假设存在五个目的地(例如,BFR-id“1”、“2”、“3”、“4”和“5”)并且特定BFR首先确定了要使用用于BFR-id“1”、“2”和“3”的ECMP下一跳,则特定BFR可以利用技术针对每个BIFT确定要使用用于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中的两个BIFT使用下一跳BFR-1,并且这些BIFT中的其他两个BIFT使用下一跳BFR-2。在一些实施方式中,特定BFR可以确定业务将在这些可能的ECMP下一跳上基本等同地被划分,在这些可能的ECMP下一跳上随机地被划分,等等。

跨BIFT来指配可能的ECMP下一跳、同时使ECMP下一跳被放置到已经具有相同下一跳的最多实例的BIFT中的程度最大化的任务,可以被称为装箱(bin-packing)问题或者非确定性多项式时间(NP)困难问题。在装箱问题中,不同体积的对象可以以最小化所使用的箱体数目的方式被装入到有限数目的箱体或容器中,每个箱体或容器具有特定体积。当非确定性多项式时间中的每个问题“L”能够在多项式时间上被减少到问题“H”时,问题“H”可以被考虑是NP-困难问题。然而,跨BIFT来指配可能的ECMP下一跳的任务在相对小数目的变量上是NP-困难问题。如此,特定BFR可以利用任何已有的装箱算法(例如,二维装箱、线性装箱、通过权重装箱、通过成本装箱,等等)来跨BIFT指配可能的ECMP下一跳。

在一些实施方式中,特定BFR可以利用试探性(heuristic)方法(例如,更简单问题(simpler problem)、旅行商问题、搜索问题,等等)来跨BIFT指配可能的ECMP下一跳,同时使ECMP下一跳被放置到已经具有相同下一跳的最多实例的BIFT中的程度最大化。例如,特定BFR可以利用如下的试探性方法,该试探性方法首先向拥有最多的具有相同下一跳的已有条目的BIFT指配最低编号的下一跳,然后向拥有最多的具有该下一跳的已有条目的剩余BIFT指配接下来较高编号的下一跳,以此类推。

如图4中进一步示出的,过程400可以包括利用与所确定的ECMP下一跳相关联的信息来填充这些BIFT(框440)。例如,特定BFR可以利用与所确定的ECMP下一跳相关联的信息来填充多个BIFT。在一些实施方式中,多个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的列。在一些实施方式中,多个BIFT中的每个BIFT可以包括针对任何一个目的地的单个可能的下一跳。

如图4中进一步示出的,过程400可以包括将这些BIFT组合为针对任何一个目的地具有多个ECMP下一跳的单个BIFT(框450)。例如,特定BFR可以将这些BIFT组合为针对任何一个目的地具有多个ECMP下一跳的单个BIFT。在一些实施方式中,特定BFR可以支持一个数目(M)的ECMP分支用于BIER转发,并且可以利用具有多个条目的单个BIFT,其中每个条目可以包括M个ECMP分支的下一跳。在一些实施方式中,如果特定BFR具有一个路径要遵循,则与该路径相对应的BIFT条目可以包括M个ECMP分支的下一跳,并且每个分支可以包括相同或不同的F-BM。

例如,假设M=4并且多播域包括通过链路被互连的多个网络设备,诸如BFR-A、BFR-B、BFR-C、BFR-D、BFR-E和BFR-F。进一步地,假设BFR-D包括一(1)的BFR-id、零(0)的SI、以及“00001”的比特串(例如,其中“0:00001”标识BFR-D的SI和比特串);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-E与BFR-F之间的链路变为可用之前,针对特定BFR(例如,BFR-B)的单个BIFT可以包括以下条目。

在这一示例中,BFR-NBR字母之后的数字可以标识特定的ECMP分支。与每个BFR-id相关联的F-BM初始可以是相同的,因为每个BFR可能仅具有到达邻居BFR的单个路径。此外,F-BM和BFR-NBR针对BFR-id“1”(BFR-D)和BFR-id“2”(BFR-F)可以是相同的。当BFR-E与BFR-F之间的链路变为可用时,通向BFR-F的路由可以包括两个ECMP路径,经由BFR-E的第一ECMP路径和经由BFR-C的第二ECMP路径。特定BFR(例如,BFR-B)可以确定这两个ECMP路径如何被利用用于BIFT的BFR-id“2”(BFR-F)的四分支ECMP下一跳。

在一些实施方式中,特定BFR可以利用试探法用于这一确定,诸如,例如更简单问题试探法、试探性搜索假说,等等。假设BFR-id“2”的前两个分支保持为C1和C2,并且最后两个分支改变为E3和E4。特定BFR针对前两个分支C1和C2可以不改变BIFT。然而,因为第三分支原始为C3并且被改变为E3,所以特定BFR可以关掉(例如,使为零)与BFR-id“2”的C3中的BFR-F相关联的比特,因为该特定BFR针对第三分支将不使用BFR-C来到达BFR-F。由于第三分支C3还被使用用于BFR-id“1”(BFR-D),所以特定BFR也可以关掉(例如,使为零)与BFR-id“1”的C3中的BFR-F相关联的比特。因为BFR-E将被使用用于BFR-id“2”的第三分支,所以特定BFR可以开启(例如,使为一)与BFR-id“2”的E3中的BFR-F相关联的比特。由于第三分支E3还被使用用于BFR-id“3”(BFR-E),所以特定BFR也可以开启与BFR-id“3”的E3中的BFR-F相关联的比特。

特定BFR针对第四分支(例如,C4和E4)可以执行相同的过程,并且经修改的BIFT可以包括以下条目(其中粗体和斜体指示被修改的信息)。

现在假设BFR-E与BFR-F之间的链路再次变为可用,并且通向BFR-F的路由包括经由BFR-C的单个ECMP路径。在这一示例中,特定BFR(BFR-B)可以通过关掉与E3和E4中的BFR-F相关联的比特,并且开启与C3和C4中的BFR-F相关联的比特,来修改针对BIFT的BFR-id“2”的第三分支和第四分支。在这些改变之后,BIFT可以返回到它的原始形式。在一些实施方式中,当特定BIFT条目(例如,由于单播路由改变)需要被修改时,并且针对需要被修改的每个分支,特定BFR可以关掉原始分支的F-BM中的对应比特,并且开启新分支的F-BM中的比特。

在一些实施方式中,特定BFR可以直接创建单个BIFT,而无需首先创建多个BIFT。例如,替代创建多个BIFT并且将该多个BIFT组合为单个BIFT,特定BFR可以利用上文关于框420-450所描述的技术中的一个或多个技术来创建单个BIFT。

如图4中进一步示出的,过程400可以包括存储该单个BIFT(框460)。例如,特定BFR可以将该单个BIFT存储在与该特定BFR相关联的存储器(例如,路由组件320中所提供的存储器,图3)中。在一些实施方式中,特定BFR可以取决于多少存储器可用于该特定BFR来存储必要大小的单个BIFT。在一些实施方式中,特定BFR可以将该单个BIFT编程到数据平面中,并且可以使用该单个BIFT来转发分组。

在一些实施方式中,假设特定BFR创建了八个BIFT,并且该特定BFR具有可能的下一跳K、L和M。进一步地,假设针对一个目的地D1,可能的下一跳是K或L,并且针对不同的目的地D2,可能的下一跳是L或M。针对目的地D1,假设跨可能的下一跳等同划分业务,则特定BFR可以确定这八个BIFT中的四个BIFT将包括K作为下一跳,并且其他四个BIFT将包括L作为下一跳。针对目的地D2,特定BFR可以确定这些BIFT中的四个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的示例框,但是在一些实施方式中,过程400可以包括另外的框、较少的框、不同的框、或者与图4中所描绘的那些框不同地被布置的框。另外地或替换地,过程400的框中的两个或更多框可以并行地被执行。

图5A-5F是与图4中所示出的示例过程400有关的示例实施方式500的示图。图5A-5F示出了在网络设备210(诸如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和/或比特串相关联。如果BIER转发方法被利用用于图5A的多播域,则BFR-B可以生成具有以下信息的单个BIFT:

不像BIER转发方法那样,在一些实施方式中,每个BFR 210可以利用多个BIFT 510,并且每个BIFT 510可以包括针对任何一个目的地的单个可能的下一跳。例如,如图5B中所示出的,BFR-B可以利用四个BIFT 510-1、510-2、510-3和510-4,不具有ECMP支持。在分组上执行的哈希可以确定这四个BIFT 510中的哪些被BFR-B使用。第一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中的每个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中的两个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。这将创建包括以下信息的BIFT 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然后可以将目的地“3”(例如,BFR-id“3”)添加到每个BIFT 510。因为仅存在一个最佳路径通向目的地“3”(例如,BFR-E),所以BIFT 510-1和510-2可以被更新如下:

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

BFR-B然后可以将目的地“4”(例如,BFR-id“4”)添加到每个BIFT 510。仅存在一个最佳路径通向目的地“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”(例如,由BFR-B基于多播域确定为是较低编号的目的地)的下一跳相关联的信息520-1来填充第一BIFT 510-1的F-BM列和BFR-NBR列。假设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可以向每个BIFT 510提供针对目的地“5”(例如,BFR-id“5”)的条目。在这种情况中,目的地“5”可以与两个可能的下一跳(例如,BFR-C和BFR-E)相关联。因为存在多个可能的下一跳,所以BFR-B可以确定BFR-C的多少下一跳以及BFR-E的多少下一跳已经在每个BIFT 510中。然而,在这种情况中,针对每个BIFT 510答案是不相同的,因为存在具有多个ECMP条目的之前的目的地,多个ECMP条目导致了包含不同信息的不同BIFT 510。BFR-B可以通过选取BIFT 510-1和510-2用于BFR-C的可能的下一跳(例如,因为BIFT 510-1和510-2拥有更多的具有作为下一跳的BFR-C的条目),并且通过选取BIFT 510-3和510-4用于BFR-E的可能的下一跳(例如,因为BIFT 510-3和510-4拥有更多的已经具有作为下一跳的BFR-E的条目),来对转发进行优化。

参考图5D和5E,在决定哪个下一跳要使用用于每个BIFT 510中的BFR-id“5”时,BFR-B可以利用ECMP路由计算(例如,对Dijkstra算法的扩展)来确定(例如,针对BFR-id“5”的)可能的ECMP下一跳包括BFR-C和BFR-E。假设业务在可能的下一跳上等同地被划分,则BFR-B可以确定BIFT 510中的两个BIFT 510要使用下一跳BFR-C并且其他两个BIFT 510要使用下一跳BFR-E。如图5D中所示出的,第一BIFT 510-1包括对BFR-C的两个参考(reference)以及对BFR-E的一个参考;第二BIFT 510-2包括对BFR-C的两个参考以及对BFR-E的一个参考;第三BIFT 510-3包括对BFR-C的一个参考以及对BFR-E的两个参考;并且第四BIFT 510-4包括对BFR-C的一个参考以及对BFR-E的两个参考。

BFR-B可以利用简单的试探性方法来跨BIFT 510指配可能的下一跳(例如,对BFR-C的两个参考以及对BFR-E的两个参考),同时使下一跳被放置到已经具有相同下一跳的最多实例的BIFT 510中的程度最大化。该简单的试探性方法可以包括首先向拥有最多具有相同下一跳的已有条目的BIFT 510指配较低编号的下一跳,然后向拥有最多具有该下一跳的已有条目的剩余BIFT 510指配接下来较高编号的下一跳,以此类推。基于这一方式,并且如图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所指示的。

如图5F中所示出的,BFR-B可以将BIFT 510组合为单个BIFT 540,该单个BIFT 540包括针对任何一个目的地(例如,目的地“1”至“5”)的多个ECMP下一跳550。如进一步示出的,如由BFR-NBR C1和C2所指示的,可以经由与BFR-C相关联的第一路径,或者如由BFR-NBR E3和E4所指示的,经由与BFR-E相关联的第二路径来到达目的地“2”(例如,BFR-F)。如由BFR-NBR E1和E2所指示的,可以经由与BFR-E相关联的第一路径,或者如由BFR-NBR C3和C4所指示的,经由与BFR-C相关联的第二路径来到达目的地“5”(例如,BFR-G)。

在一些实施方式中,BIFT 540中的许多目的地包括具有不同比特串的F-BM,并且BIFT 540中的一些目的地包括具有相同比特串的F-BM。例如,目的地“4”(例如,BFR-id“4”)针对所有四个F-BM包括相同的比特串(010000)。在一些实施方式中,当目的地包括具有相同比特串的四个F-BM时,BFR-B可以分开地存储这四个F-BM,这可能使用更多的存储空间但是可以简化编码。替换地,BFR-B可以将这四个F-BM组合为单个F-BM,这可能要求用于存储和取回F-BM的更复杂的编码,但是可以减少所要求的存储空间。

在一些实施方式中,在转发分组时,BFR-B可以执行BIFT 540的哈希以确定BIFT 540中的哪排要使用用于每个目的地,并且可以相应地转发该分组。例如,假设BIFT 540的哈希指示每个目的地的第三排将被使用。在这样的示例中,在转发分组时,BFR-B可以利用第三排用于BIFT 540中的每个目的地(例如,目的地“1”至“5”)。这样的示例可以类似于图5B中所示出的使用BIFT表510-3。

如上文所指出的,图5A-5F被提供仅作为示例。其他示例是可能的并且可以不同于关于图5A-5F所描述的事物。

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

如图6中所示出的,过程600可以包括接收多播分组,该多播分组包括具有标识目的地地址的信息的分组头部(框610)。例如,多播域可以包括多个网络设备210,诸如多个BFR。在一些实施方式中,每个BFR可以利用多个BIFT,并且每个BIFT可以包括针对任何一个目的地的单个可能的下一跳。在一些实施方式中,每个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)的一排下一跳以使用用于多播分组(框620)。例如,特定BFR可以分析多播分组的分组头部以便确定单个BIFT中的下一跳以使用用于多播分组。在一些实施方式中,特定BFR可以执行分组头部的哈希(例如,利用哈希函数)以便标识分组头部中所包含的信息。例如,特定BFR可以执行分组头部的一些或全部的哈希以标识“11100”的比特串。在一些实施方式中,特定BFR可以利用该比特串来确定多播分组将被递送给与BFR-id“3”、“4”和“5”相关联的BFR。在一些实施方式中,特定BFR可以标识哪排要利用用于BIFT中的每个条目,并且可以利用所标识的排将多播分组递送给与BFR-id“3”、“4”和“5”相关联的BFR。例如,特定BFR可以把要利用用于每个条目的该排标识为包括用于向与BFR-id“3”、“4”和“5”相关联的BFR转发分组的条目的排。在一些实施方式中,特定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分组上。这可能发生在例如当相同的两个提供商边缘设备之间存在多个伪线时(例如,每个伪线可以支持不同的用户或者不同的应用)。这些伪线可以每个都具有MPLS标签交换路径(LSP),但是多个伪线LSP可以在单个LSP内被复用。这可以暗示每个分组包括两个MPLS头部(例如,用于两个提供商边缘设备之间的路径的第一头部、以及用于每个伪线的第二头部)。该路径中间的网络设备(例如,特定BFR)可以基于第一MPLS头部来转发分组,但是可以在第二头部上执行哈希。如果存在通过网络的ECMP路径或者如果存在位于两个网络设备之间的LAG组,则来自相同伪线的分组可以利用相同的路径,但是来自不同伪线的分组可以被扩散在多个路径上。

在一些实施方式中,如果分组是BIER分组,则特定BFR可以不在标识哪些目的地要接收每个分组的BIER比特串上进行哈希。这可以使得去往特定目的地的分组能够总是利用相同的路径,而无需考虑哪些其他目的地也需要接收相同的分组。然而,哈希函数可以包括应用信息和源信息。例如,如果第一人正在第一电视上观看频道7,则该第一人可能想要针对频道7的分组总是采取一致的路径,即使第二人保持着在频道7与频道5之间进行改变。然而,如果该第一人正在观看频道7,则该第一人可能不关心针对频道7的分组是否采取与用于该第二人正进行的视频聊天的分组相同的路径。

如图6中进一步示出的,过程600可以包括基于所确定的下一跳的排来标识针对多播分组的下一跳(框630)。例如,特定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的示例框,但是在一些实施方式中,过程600可以包括另外的框、较少的框、不同的框、或者与图6中所描绘的那些框不同地被布置的框。另外地或替换地,过程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包括针对任何一个目的地的多个可能的下一跳。例如,BIFT 710的每个条目可以包括四个可能的下一跳。如进一步示出的,BFR-B可以接收多播分组720,多播分组720包括有效载荷和具有“10101”的比特串的分组头部。“10101”的比特串可以指示分组720将被递送给具有“1”(例如,BFR-D,如由比特串的“00001”部分所指示的)、“3”(例如,BFR-E,如由比特串的“00100”部分所指示的)和“5”(例如,BFR-G,如由比特串的“10000”部分所指示的)的BFR-id的BFR 210。如图7A中的参考标号730所指示的,BFR-B可以执行分组720的哈希以标识分组头部的比特串。

如图7B中所示出的,BFR-B可以利用(例如,如基于分组720的哈希所标识的)“10101”的比特串来确定BIFT 710的条目的特定排。例如,如图7B中的参考标号740所指示的,BFR-B可以确定BIFT 710的条目的第四排将被利用来将分组720转发给BFR-D、BFR-E、BFR-G(例如,目的地“1”、“3”和“5”)。

如图7C中所示出的,基于BIFT 710的条目的第四排,BFR-B可以创建分组720的第一副本750-1,第一副本750-1将“10001”的比特串包括在分组头部中。BFR-B可以将第一分组副本750-1转发给BFR-C,并且BFR-C可以接收第一分组副本750-1。进一步基于BIFT 710的条目的第四排,BFR-B可以创建分组720的第二副本750-2,第二副本750-2将“00110”的比特串包括在分组头部中。BFR-B可以将第二分组副本750-2转发给BFR-E(例如,基于比特串的“00100”部分),并且BFR-E可以接收第二分组副本750-2。

如图7D中所示出的,“10001”的比特串可以向BFR-C指示第一分组副本750-1将被转发给具有“1”(例如,BFR-D)和“5”(例如,BFR-G)的BFR-id的BFR 210。因此,BFR-C可以将第一分组副本750-1转发给BFR-D,并且BFR-D可以接收第一分组副本750-1。BFR-C可以将第一分组副本750-1转发给BFR-F,并且BFR-F可以基于比特串“10000”将第一分组副本750-1转发给BFR-G。BFR-G可以接收第一分组副本750-1。“00101”的比特串可以向BFR-E指示第二分组副本750-2将由BFR-E(例如,具有BFR-id“3”,如由比特串的“00100”部分所指示的)接收并且转发给具有“2”的BFR-id的BFR 210(例如,BFR-F,如由比特串的“00010”部分所指示的)。因此,BFR-E可以接收第二分组副本750-2,并且可以将第二分组副本750-2转发给BFR-F。BFR-F可以接收第二分组副本750-2。

如上文所指出的,图7A-7D被提供仅作为示例。其他示例是可能的并且可以不同于关于图7A-7D所描述的事物。

本文所描述的系统和/或方法可以扩展BIER转发方法,以确保被采取来通向任何特定目的地的路径取决于该特定目的地、以及被用于针对通向该特定目的地的特定分组流来选择ECMP分组的哈希值。这些系统和/或方法可以利用单个BIFT,该单个BIFT包括针对任何一个目的地的多个可能的下一跳。这些系统和/或方法可以最小化路径的不必要的早期发散,由此对网络资源进行更高效的使用。这些系统和/或方法可以使得BIER转发方法是确定的,这可以简化网络OAM并且允许更稳定的网络性能。这些系统和/或方法可以在多播业务如何跨ECMP和/或LAG被扩散的方面改进网络效率。

前述公开提供了说明和描述,但是不意图为详尽无遗的或者将实施方式限制到所公开的精确形式。修改和变化鉴于上述公开是可能的,或者可以从实施方式的实践来获取。例如,虽然为了简单在BFR的上下文中描述了本文所描述的系统和/或方法,但是这些系统和/或方法可以等同地应用在其他类型的网络设备的上下文中。

如本文所使用的,术语“组件”意图为宽泛地被解释为硬件、固件、和/或硬件与软件的组合。

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

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

即便特征的特定组合被记载在权利要求中和/或被公开在说明书中,但是这些组合不意图为限制可能实施方式的公开。事实上,这些特征中的许多特征可以按照没有在权利要求中具体记载和/或在说明书中公开的方式而被组合。尽管下面所列出的每个从属权利要求可能直接从属于仅一个权利要求,但是可能实施方式的公开包括每个从属权利要求与权利要求集合中的每个其他权利要求相组合。

本文所使用的元件、行动或指令不应当被解释为是关键的或者至关重要的,除非明确地如此描述。此外,如本文所使用的,冠词“一”和“一种”意图为包括一个或多个项目,并且可以与“一个或多个”可互换地被使用。此外,如本文所使用的,术语“集合”意图为包括一个或多个项目,并且可以与“一个或多个”可互换地被使用。在意图为仅一个项目的场合,使用了术语“一个”或者类似语言。此外,如本文所使用的,术语“具有”、“拥有”、“有”等意图为是开放式术语。进一步地,短语“基于”意图为意指“至少部分地基于”,除非明确地另有陈述。

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