掌桥专利:专业的专利平台
掌桥专利
首页

用于减轻多路径网络中的散列相关性的方法

文献发布时间:2023-06-19 09:27:35


用于减轻多路径网络中的散列相关性的方法

技术领域

本公开涉及用于减轻多路径网络中的散列相关性的方法。

背景技术

负载平衡在网络操作和管理中至关重要。例如,利用等价多路径(ECMP)路由,转发到单个目的地的分组可以基于分组的报头字段的散列来在多个最低成本路径上发生,这允许使用多条路径上的带宽。在这样的系统中,可以在多个流中转发分组,并且可以通过把一个或多个报头字段散列化使得每个流中的分组遵循同一路径以避免分组重新排序来实现负载平衡。同样地,除了可以为多条路径指派不同的权重以外,加权成本多路径(WCMP)路由也允许在多条路径上将分组转发到单个目的地,从而使一些路径变得比其它路径更可能被选择。

基于散列的负载平衡的一个有挑战性的问题是在不同路由器中重复使用相同或相关的散列函数可以引起负载不平衡。例如,当不同的交换机重复地使用同一散列算法时,可以为去往一个目的地前缀的所有业务选择单个链路,然而其它链路未充分利用或未使用。避免散列相关性的一个方式是对于网络中的每个交换机使用不同的散列函数。然而,交换机芯片支持有限数量的散列函数。另外,使用大量散列函数的计算是不切实际的,因为它可能在高分组速率下产生瓶颈。减轻散列相关性的另一方式是基于每个具体交换机操纵若干散列函数以获得更多的变化。然而,由于循环冗余校验(CRC)的滚动性质,或者当为其它网络管理保留随机性时,这种操作可能不适用于奇数数量的等价路径。向交换机芯片散列函数提供不同的种子可以减轻但无法解决散列相关性问题。减轻散列相关性的再一个方式是基于分组报头中的生存时间(TTL)的值来选择散列函数。然而,此方法需要更改数据平面中的分组处理流水线,并且因此可能需要硬件改变和供应商合作。

发明内容

本公开提供:由一个或多个处理器确定在网络中的第一交换机与网络中的第二交换机之间存在散列相关性,其中,将在第一交换机处从第一组出口端口当中选择第一出口端口用于转发分组,将在第二交换机处从第二组出口端口当中选择第二出口端口用于转发分组,并且第一组具有第一组大小而第二组具有第二组大小;在确定存在散列相关性时,由所述一个或多个处理器选择与第一组大小互质的新的第二组大小;由所述一个或多个处理器将第二组出口端口映射到具有新的第二组大小的映射组;以及由所述一个或多个处理器将第二交换机配置成根据映射组来路由分组。

确定存在散列相关性可以基于确定在第一交换机处应用的第一散列函数与在第二组处应用的第二散列函数相同,并且第二组是第一组能到达的。

第二组可以是ECMP组,并且所述新的第二组大小可以是进一步基于ECMP组的协方差满足预定阈值来选择的。

第二组可以是WCMP组,并且所述新的第二组大小可以是进一步基于WCMP组的K-S统计量满足预定阈值来选择的。

所述新的第二组大小可以是进一步基于满足网络中的路由表的存储器容量来选择的。

该方法可以进一步包括:由所述一个或多个处理器确定由第一交换机对于第一组的第一存储器使用率大于由第二交换机对于第二组的第二存储器使用率,其中,选择新的第二组大小是基于第一存储器使用率大于第二存储器使用率。

该方法可以进一步包括:由所述一个或多个处理器确定由第一交换机对于第一组的第一存储器使用率小于由第二交换机对于第二组的第二存储器使用率,其中,代替选择新的第二组大小并映射到映射组,新的第一组大小被选择用于映射第一组。

第二组可以是WCMP组,并且将第二组出口端口映射到具有所述新的第二组大小的映射组可以是进一步基于指派给第二组出口端口的路由权重。该方法可以进一步包括:由所述一个或多个处理器接收网络的遥测数据;由所述一个或多个处理器基于所接收到的遥测数据将路由权重更新到第二组出口端口;以及由所述一个或多个处理器基于经更新的路由权重来重新映射出口端口的第二组。

本公开进一步提供一种系统,该系统包括一个或多个处理器。所述一个或多个处理器被配置成:确定在网络中的第一交换机与网络中的第二交换机之间存在散列相关性,其中,将在第一交换机处从第一组出口端口当中选择第一出口端口用于转发分组,将在第二交换机处从第二组出口端口当中选择第二出口端口用于转发分组,并且第一组具有第一组大小而第二组具有第二组大小;在确定存在散列相关性时,选择与第一组大小互质的新的第二组大小;将第二组出口端口映射到具有新的第二组大小的映射组;以及将第二交换机配置成根据映射组来路由分组。

确定存在散列相关性可以基于确定在第一交换机处应用的第一散列函数与在第二组处应用的第二散列函数相同,并且第二组是第一组能到达的。

第二组可以是ECMP组,并且可以进一步基于ECMP组的协方差满足预定阈值来选择新的第二组大小。

第二组可以是WCMP组,并且可以进一步基于WCMP组的K-S统计量满足预定阈值来选择新的第二组大小。

可以进一步基于满足网络中的路由表的存储器容量来选择新的第二组大小。

所述一个或多个处理器可以被进一步配置成确定由第一交换机对于第一组的第一存储器使用率大于由第二交换机对于第二组的第二存储器使用率,其中,选择新的第二组大小是基于第一存储器使用率大于第二存储器使用率。

所述一个或多个处理器可以被进一步配置成确定由第一交换机对于第一组的第一存储器使用率小于由第二交换机对于第二组的第二存储器使用率,其中,代替选择新的第二组大小并映射到映射组,新的第一组大小被选择用于将第一组映射到第一映射组。

第二组可以是WCMP组,并且将第二组出口端口映射到具有所述新的第二组大小的映射组可以是进一步基于指派给第二组出口端口的路由权重。所述一个或多个处理器可以进一步被配置成:接收网络的遥测数据;基于所接收到的遥测数据将路由权重更新到第二组出口端口;以及基于经更新的路由权重来重新映射第二组出口端口。

本公开再进一步提供非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质存储能由一个或多个处理器执行以执行一种方法的指令。该方法包括:确定在网络中的第一交换机与网络中的第二交换机之间存在散列相关性,其中,将在第一交换机处从第一组出口端口当中选择第一出口端口用于转发分组,将在第二交换机处从第二组出口端口当中选择第二出口端口用于转发分组,并且第一组具有第一组大小而第二组具有第二组大小;在确定存在散列相关性时,选择与第一组大小互质的新的第二组大小;将第二组出口端口映射到具有所述新的第二组大小的映射组;以及将第二交换机配置成根据映射组来路由分组。

确定存在散列相关性可以基于确定在第一交换机处应用的第一散列函数与在第二组处应用的第二散列函数相同,并且第二组是第一组能到达的。

附图说明

图1A和图1B图示根据本公开的各方面的通过示例多路径网络的路由。

图2示出根据本公开的各方面的被配置成减轻散列相关性的示例系统。

图3是图示根据本公开的各方面的用于减轻散列相关性的示例过程的直观图。

图4图示根据本公开的各方面的用于确定散列相关性的示例图。

图5A和图5B示出根据本公开的各方面的用于WCMP网络的互质选择的参数的示例图。

图6图示根据本公开的各方面的用于减小存储器使用率的示例互质选择。

图7A和图7B图示根据本公开的各方面的用于WCMP网络的示例路由映射。

图8是图示根据本公开的各方面的用于减轻散列相关性的示例替代过程的直观图。

图9是根据本公开的各方面的示例方法的流程图。

具体实施方式

技术一般地涉及减轻多路径网络中的散列相关性。例如,为了通过多路径网络来路由分组,可以在第一交换机处的出口端口的第一组当中选择第一出口端口,并且可以在第二交换机处的出口端口的第二组当中选择第二出口端口,其中第一组具有第一组大小并且第二组具有第二组大小。可以通过基于相应的组大小应用散列函数然后应用模函数来执行每个这种选择。在这方面,在两个交换机处存在散列相关性可以导致通过两个交换机选择同一路径,从而使两个交换机之间的其它路径未使用。

为了解决上述问题,网络控制器可以被配置成确定在网络中的交换机之间是否存在散列相关性。例如,如果在第一交换机处应用的第一散列函数和在第二交换机处应用的第二散列函数是相同的,并且如果第二组是第一组可达到的,则可能存在散列相关性。在找到散列相关性时,网络控制器可以为第一组和/或第二组选择新的组大小,并且相应地重新映射组。例如,网络控制器可以选择与第一组大小互质的新的第二组大小,并且将出口端口的第二组映射到具有新的第二组大小的映射组。网络控制器然后可以将第二交换机配置成根据映射组来路由分组。

技术在许多方式上是有利的。例如,通过避免向交换机添加新的散列函数,系统可以减轻散列相关性,而无需交换机供应商支持新的散列函数或创建计算瓶颈。通过避免操纵现有的散列函数,不需要CRC的计算,并且可以为其它网络功能保留随机性。另外,技术能够被适配成减轻ECMP网络和WCMP网络两者中的散列相关性,诸如根据路由权重变化动态地适配WCMP出口端口的映射的特征。技术的特征也提供用于减小通过网络中交换机的总存储器使用率,并且同时,通过在不同交换机处对于互质组大小选择使用各种误差边界来提高业务的一致性。

图1A和图1B是可以在其中使用基于散列的负载平衡的多路径网络100的框图。网络100可以包括多个计算设备,诸如所示的计算设备110、120、130、140。多个计算设备可以在地理上分布和/或组织在集群中。例如,计算设备110和130可以位于一个位置或集群中,而计算设备120和140可以位于另一位置或集群中。为了将分组从一个位置或集群的计算设备路由到另一位置或集群中的计算设备,可以在网络100中提供一个或多个交换机,诸如所示的交换机S1、S2、S3、S4、S5、S6、S7和S8。在一些情况下,多路径网络中的交换机可以按层次布置,使得从源到目的地的路由在到达目的地之前需要通过层次的每个层上的交换机来路由。示例网络100具有带三层交换机的层次,第一层包括交换机S1,第二层包括交换机S2、S3,而第三层包括交换机S4、S5、S6、S7。尽管示出了仅几个计算设备和几个交换机,但是在实际示例中,系统可以包括许多计算设备中的任一个和许多交换机中的任一个。

可以通过多个可能的路径来将分组从源计算设备路由到目的地设备。在图1A中所示的示例中,可以通过如由虚线箭头所指示的四个可能的路径来将分组从源计算设备110转发到目的地计算设备120。为了确定多条路径中的哪一条用于转发分组,可以对分组的一个或多个报头字段应用一个或多个散列函数。例如,可以在需要在多个可能性当中选择出口端口的每个层处应用散列函数。在所示的示例中,可以在交换机S1处应用第一散列函数H1以为下一跳而在交换机S2和S3之间选择,可以在交换机S2处应用第二散列函数H2以为下一跳而在交换机S4和S5之间选择,并且也在交换机S3处应用第二散列函数H2以为下一跳而在交换机S6和S7之间选择。

可以将用于选择作为下一跳的可用出口端口的集合称为组。因此在多路径路由中,可以在源与目的地之间的一个或多个跳得到多个组。例如,交换机S1到交换机S2和S3的出口端口是在大小n=2的组中,交换机S2到交换机S4和S5的出口端口是在n=2的组中,而交换机S3到交换机S6和S7的出口端口也是在n=2的组中。对于ECMP路由,可以为ECMP组中的每个出口端口指派相等的权重,使得存在出口端口中的任一个均可以被选择用于路由分组流的相等机会。对于WCMP路由,可以向WCMP组中的出口端口指派不同的权重,使得出口端口中的一些与其它出口端口比更可能被选择用于路由分组流。

另外在这方面,可以通过应用散列函数来映射下一跳,然后对散列函数的结果应用模运算。作为示例,可以基于对诸如包括源前缀(例如,IP地址)、源端口、目的地前缀(例如,IP地址)、目的地端口和协议的分组报头的字段的5个元组应用散列函数来为下一跳选择交换机的出口端口,其所得值为h。然后可以例如通过交换机处的组大小n对所得值h应用模运算,这可以被表达为h%n。因此,可以通过对分组的报头字段应用H1来选择用于在交换机S1处转发分组的出口端口,然后以2对散列结果进行模运算。同样地,可以通过对分组的报头字段应用H2来选择用于在交换机S2处转发分组的出口端口,然后以2对散列结果进行模运算。

如由图1A所图示的,当用于从不同层跳的散列函数不相同或不相关时,每个层处的每个出口端口具有被选择作为分组的下一跳的一定机会,从而提供负载平衡。相比之下,图1B图示通过使用相同或相关的散列函数所引起的负载不平衡。如图所示,既在交换机S1处又在交换机S2和S3处应用了相同的散列函数H1。例如,在交换机S1处,对具有一组特定报头字段x的分组应用H1然后应用%2可以产生值0,基于此可以选择到交换机S2的出口端口。然后当分组到达交换机S2时,再次对报头字段x应用H1然后应用%2,这再次产生值0,基于此选择到交换机S4的出口端口。因此,虽然到交换机S4和S5的出口端口都可用作从交换机S2起的下一跳,但是始终选择通过交换机S4的路径,从而让通过交换机S5的替选路径未使用并且从而引起交换机S4和S5之间的负载不平衡。同样地,在交换机S3处相同的散列相关性可以使得始终优于交换机S6而选择交换机S7,从而引起交换机S6和S7之间的负载不平衡。尽管在此示例中将相同的散列函数H1用作图示,但是在其它示例中,每跳处的散列函数可以是相关的而不是相同的。

为了减轻网络中的散列相关性,必须在每个层级改变散列函数和/或模运算以选择下一跳。图2是示出被配置成解决由图1B图示的问题的示例系统200的框图。系统200包括网络控制器210和数据平面250,该数据平面包括用于在网络中的计算设备之间路由分组的多个交换机。尽管示出了仅几个交换机251、252、253、254,但是在实际示例中,系统可以包括许多计算设备中的任一个和许多交换机中的任一个。

如上面所提及的,为了减轻散列相关性,可能需要在一个或多个层处改变散列函数和/或模运算,在该一个或多个层处,将在多个可能性当中选择出口端口。另外如上所述,生成新的散列函数可能需要硬件改变和/或增加计算时间。因此,系统200被配置成通过确保模运算使用于每跳的散列函数去相关来减轻散列相关性。为了这样做,网络控制器210可以包括互质选择器230,该互质选择器计算用于参考图3、图4、图5A-B和图6描述的模运算的一个或多个新的组大小。如参考图3、图7A-B所描述的,网络控制器210也可以包括路由映射器240,该路由映射器被配置成对于具有新的组大小的任何组,根据新的组大小将该组中的出口端口映射到映射组。另外如参考图3、图7A-B所描述的,网络控制器210可以根据经映射的出口端口以及尚未被改变的任何组,以及在WCMP的情况下还根据路由权重220来进一步生成转发规则。网络控制器210然后可以将数据平面250中的交换机配置成根据转发规则来路由分组。

另外如图所示,网络控制器210可以监视并控制数据平面250中的交换机的路由。例如,网络控制器210可以向由数据平面250中的交换机所提供的不同路由指派路由权重220。对于ECMP网络,向源与目的地之间的所有路由指派相等的权重。对于WCMP网络,可以向源与目的地之间的路由指派不同的路由权重220,这可以基于诸如遥测数据的网络动态特性。例如,可以由网络控制器210从网络中的交换机接收遥测数据。因此,网络控制器210可以基于遥测数据中的更新来更新路由权重,并且基于经更新的路由权重来重新映射出口端口。

网络控制器210可以是基于硬件的或者可以是软件定义的,诸如软件定义网络(SDN)控制器。例如,网络控制器210可以是在包含一个或多个处理器、存储器以及通常存在于通用计算设备中的其它组件的一个或多个计算设备上运行的软件。一个或多个处理器可以是专用组件,诸如可以被定制或现成的专用集成电路(“ASIC”),或者可以是任何其它常规的处理器,诸如可商购的微处理器、CPU等。尽管不必要,但是这些处理器中的一个或多个可以包括专用硬件组件以执行具体计算过程。

计算设备的存储器可以具有能够存储可由处理器访问的信息的任何非暂时性类型,诸如硬盘驱动器、存储卡、ROM、RAM、DVD、CD-ROM、可写存储器和只读存储器。计算设备的存储器能够存储可由处理器访问的信息,包括数据和指令。例如,计算设备的存储器能够存储能够由处理器执行的指令。计算设备的存储器也能够包括能够由处理器检索、操纵和/或存储的数据。

指令可以是要由一个或多个处理器直接执行的任何指令集,诸如机器代码,或要由一个或多个处理器间接执行的任何指令集,诸如脚本。在这方面,能够在本文中互换地使用术语“指令”、“应用”、“步骤”和“程序”。指令能够被以目标代码格式存储以供由处理器直接处理,或者用包括被按需解释或提前编译的脚本或独立源代码模块的合集的任何其它计算设备语言加以存储。

数据能够具有许多结构中的任一种。例如,数据能够被存储在计算机寄存器中,被存储在作为具有许多不同字段和记录的表存储在关系数据库中,或者被存储在XML文档中。数据也能够被以诸如但不限于二进制值、ASCII或Unicode的任何计算设备可读格式格式化。此外,数据能够包括足以标识相关信息的任何信息,诸如数字、描述性文本、专有代码、指针、对存储在诸如在其它网络位置处的其它存储器中的数据的引用、或由函数用于计算相关数据的信息。

尽管未示出,但是计算设备可以任选地包括通常存在于通用计算机设备中的其它组件。例如,计算设备可以包括输出设备,诸如显示器、扬声器、触控板等。计算设备也可以包括用户输入设备,诸如鼠标、键盘、触摸屏、麦克风、传感器等。

交换机251、252、253、254中的每一个均可以包含如上所述的一个或多个处理器、存储器和通常存在于通用计算设备中的其它组件。运行网络控制器210和交换机251、252、253、254的计算设备可以在网络诸如图1A中所示的网络的不同节点处,并且能够与网络的其它节点直接和间接通信。能够使用各种协议和系统来互连本文描述的网络和中间节点,使得网络可以是因特网、万维网、具体内联网、广域网或本地网络的一部分。网络能够利用诸如以太网、WiFi和HTTP的标准通信协议、一个或多个公司专有的协议以及前述的各种组合。尽管当如上所述发送或接收信息时获得了某些优点,但是本文描述的主题的其它方面不限于信息的任何特定传输方式。

尽管未示出,但是系统可以进一步包括一个或多个存储系统,其可以是能够存储可由运行网络控制器210和/或交换机251、252、253、254的计算设备中的一个或多个访问的信息的计算机化存储的任何类型,诸如硬盘驱动器、存储卡、ROM、RAM、DVD、CD-ROM、可写存储器和只读存储器。此外,存储系统可以包括分布式存储系统,其中数据被存储在可以物理上位于相同或不同的地理位置处的多个不同的存储设备上。存储系统可以经由网络连接到各种计算设备,并且/或者可以直接连接到运行网络控制器210和/或251、252、253、254的计算设备中的任一个。

运行网络控制器210和/或交换机251、252、253、254的计算设备及其相应的处理器、存储器和其它元件可以各自包括可以或可能未被存储在同一物理外壳内的多个处理器、计算机、计算设备或存储器。例如,计算设备的存储器可以是位于与计算设备的外壳不同的外壳中的硬盘驱动器或其它存储介质。因此,对处理器、计算机、计算设备或存储器的引用将被理解成包括对可以或可能不并行操作的处理器、计算机、计算设备或存储器的合集的引用。例如,计算设备可以包括作为负载平衡服务器场、分布式系统等来操作的服务器计算设备。更进一步,尽管下述一些功能被指示为在具有单个处理器的单个计算设备上进行,但是本文描述的主题的各个方面能够由多个计算设备实现,例如,通过网络传送信息。

图3是图示用于减轻多路径网络中的散列相关性的示例过程的直观图,该示例过程可以由网络控制器210执行。图3参考图1B的示例网络100图示此过程。例如,由于在交换机S1处并且也在交换机S2处应用H1%2,所以网络控制器210可以确定在两个层之间存在散列相关性。

另外在这方面,网络控制器210可以被配置成例如通过构建有向图来找到网络范围的散列相关性。图4示出示例有向图400。该图表示组v=(s,d),其中s是交换机并且d是目的地前缀。因此图400表示组v1=(s1,10.1.1.1),其中边(v1,v2)表示交换机S1的组v1是交换机S2的组v2沿着目标前缀10.1.1.1的路由路径的第一预跳。如果组vj从组vi能到达,它们的散列函数是相同的,并且两个组的大小均是偶数,则网络控制器210可以确定边缘(vi,vj)是相关的。因此,由于交换机S2的组v2从交换机S1的组v1能到达,并且在两个交换机处应用的散列函数H1是相同的,所以组v1和v2是相关的。

为了减轻散列相关性,代替改变散列函数,可以通过对于v1和/或v2使用新的组大小来改变模运算。因此,代替改变在交换机S2处应用的H1,可以计算新的组大小q,使得H1%q不同于H1%2。在这方面,根据互质定理,网络控制器210可以使用互质选择器230来计算新的组大小q,使得q与n互质。例如,由于n=2,为了与n互质,所以q可以是大于1的任何奇数。在所示的示例中,选取整数5作为新的组大小q。

例如,互质选择器230可以通过减小误差(v,q)以满足阈值e来选择整数,其中误差(v,q)表示将q应用于组v的误差。对于具有均匀分布的ECMP组,可以通过用于ECMP组的方差系数来量化误差(v,q)。较大的方差系数指示较高的不均匀性,并且因此通常是ECMP负载平衡不太希望的。可以将方差系数计算为标准偏差与集合U={u

相比之下,对于不具有均匀分布的WCMP组,可以通过K-S统计量而代替方差系数来量化误差(v,q)。因此,互质选择器230可以通过基于低于预定阈值T的K-S统计量而减小误差(v,q)来选择整数。图5A和图5B示出权重比为3:1的WCMP组的K-S统计量的示例图510和520。图510的K-S统计量指示两个累积分布函数(CDF)之间的上限距离。图520的p值指示两个CDF相同的概率。因此在此示例中,当K-S统计量低于0.07时,p值满足0.01的预定阈值T。

注意,互质选择器230在此示例中选择了新的组大小q=5,这是与2互质的许多可能性中的一种。在这方面,对新的组大小的选择可以进一步基于除了与另一组的大小互质之外的许多因素。例如,选择为新的组大小的互质整数越小,可能无法有效地减轻散列相关性的机会越大。另一方面,较大的整数生成占用更多存储器空间的更多条目,这可以导致路由表耗尽空间。另外,对于具有多层交换机的多路径网络,可能需要将多个互质数选择为新的组大小以减轻不同层之间的散列相关性,这可能加剧这些问题。因此,互质选择可以基于使这些因素平衡。

图6是图示示例互质选择的框图。多路径网络600被示出具有三层交换机,第一层包括交换机S1,第二层包括交换机S2、S3、S4、S5,而第三层包括交换机S6、S7、S8、S9。另外如图所示,交换机S1具有带有4个出口端口的组,然而交换机S2、S3、S4和S5各自具有带有2个出口端口的组。为了减小网络中的总存储器使用率,可以基于组驻留在的交换机的存储器使用率以降序指派新的组大小(若有的话)。例如,组可以通过其目的地前缀来聚合并根据M[S[v]]来排序,其中v表示组,S[v]是包括v的交换机,并且M[S[v]]是交换机S[v]的存储器使用率。互质选择器230可以将L指派为具有最大存储器使用率的组的组大小,然后为其它组找到互质大小。换句话说,具有最大存储器使用率的组不会改变其组大小。因此在所示的示例中,如果确定了交换机S1与交换机S2、S3、S4、S5比具有较大的存储器使用率,则交换机S1的组被指派有组大小L=4。然后可以为下一个层中的交换机S2、S3、S4、S5中的每一个确定互质组大小。例如,可以基于如以上参考图3所描述的那样减小误差来为每个组选择互质数。在所示的示例中,为交换机S2、S3、S4和S5处的每个组选择与4互质的整数5。

附加地或替选地,系统可以被进一步配置成对于给定存储器大小使误差最小化。例如,可以为上述针对ECMP的误差阈值e或针对ECMP的误差阈值T指派初始小值,并且迭代地增加误差阈值以确定组大小,直到网络的存储器使用率适合在存储器容量C内为止。各种误差可以被用于为网络内的不同交换机确定互质组大小。例如,可以标识瓶颈交换机Sm,其可以是网络中的在所有交换机当中使用最大存储器的交换机。交换机Sm上的组的误差界限E[Sm]可以被赋予初始小值,然后按预定义速率σ_e递增,直到网络的存储器使用率适合在存储器容量C内为止。

返回到图3,为了基于新的组大小生成新的映射组,路由映射器240然后可以将表示组v的实际出口端口L的条目映射到q个桶中。例如,可以通过复制出口端口中的一个或多个来执行映射。作为示例,可以将组v的前

图3进一步图示了当具有目的地前缀10.1.2.1的分组到达交换机S2时,可以将目的地前缀与最长前缀匹配(LPM)表310中的前缀相匹配。LPM表310示出交换机S2处的第一组具有从基索引0开始的前缀10.1.1.0/24,并且交换机S2处的第二组具有从基索引2开始的前缀10.1.2.0/24。根据LPM表310,可以确定分组的目的地前缀10.1.2.1与前缀10.1.2.0/24具有最长匹配,因此交换机S2处的第二组的出口端口将被选择。也就是说,将从交换机S2的映射组中做出选择,交换机S2的映射组包括具有索引2-6的5个条目。因此,可以将H1应用于分组的散列字段,这例如可以产生值9。然后可以对值9应用为5的模,从而产生值4。可以将这个值4加到映射组的基索引2,这然后生成与交换机S2的出口端口1相对应的索引6。然后可以使用出口端口1来转发分组,例如如图1B中所示,出口端口1可以将分组转发到交换机S4。

图3因此图示对于交换机S2调整出口端口的组的大小并映射出口端口的组,从而改变用于交换机S2的LPM 310和多路径表320。由于已经对交换机S2完成调整大小,所以例如如果如上所述除了H1和H2之外没有其它散列相关性,则交换机S1可能不需要调整大小和映射。用于交换机S1的LPM 310和多路径表320可以保持不变。因此,通过在交换机S2处做出改变使得交换机S1和交换机S2处的散列结果不相关。

对于WCMP网络,路由映射器240可以被进一步配置成根据路由权重220映射条目。例如,图7A和图7B图示针对WCMP组的示例映射。图7A和图7B都图示针对两个实际出口端口—具有权重3的出口端口1和具有权重1的出口端口2—的WCMP组到q=7的新的组大小的映射。

在图7A的示例中,对WCMP组执行映射好像有W个ECMP出口端口一样,其中W是WCMP组的权重之和,并且以循环方式映射索引直到满足预定新的组大小为止。因此如图所示,出口端口的组被视为如果有W=3+1=4个端口(出口端口1中的3个和出口端口2的1个),则被映射到具有7个索引的组。前

图7B图示用于映射WCMP组以确保所观察到的权重比接近于期望权重比的替选方式。在这方面,可以不同地处理q/W的商和余数。对于商,可以将WCMP组中的每个WCMP出口端口复制了

图8是图示作为图3的过程的替选方案的用于减轻多路径网络中的散列相关性的另一示例过程的框图。图8参考图1B的示例网络100图示此替选过程,并且示出一些与图3类似的特征,包括LPM 810、多路径表820和互质选择器830。然而,代替具有如图3中所示的路由映射器240,图8的替选过程通过添加另一模运算840来改变数据流水线。例如如图所示,当具有与图3的示例相同的报头的分组到达交换机S2以进行转发时,散列函数H1被应用于报头从而产生值9,并且然后应用模运算%2从而产生值4。然后由交换机S2应用为%5的附加模运算840,从而产生值0。通过将此值0加到组的基索引2,与交换机S2上的实际出口端口2相对应的具有索引2的出口端口被选择,该出口端口路由到交换机S5。在这方面,由于由图8图示的替选过程不使用网络控制器210中的路由映射器240,所以需要对数据平面250进行改变。例如,网络中的交换机可以被配置成将附加模运算应用于分组报头。因此,为了实施此替选过程,可能需要制造交换机芯片的供应商的参与。

图9是图示根据本公开的各方面的示例方法的流程图900。可以使用上述系统、其修改或具有不同配置的各种系统中的任一个来执行该方法。应该理解的是,不需要以所描述的精确顺序执行以下方法中涉及的操作。相反,可以以不同的顺序或同时地处理各种操作,并且可以添加或省略操作。尽管图9图示一种示例方法,但是可以执行方法的变化,例如如以上参考图2-8所描述的。流程图900可以由诸如运行网络控制器210的一个或多个处理器的一个或多个处理器执行。一个或多个处理器可以如以上参考图2-8所描述的那样接收数据并且基于该数据做出确定。

参考图9,在框910处,确定了在网络中的第一交换机与网络中的第二交换机之间存在散列相关性。在图1B中示出了这样的网络的示例,其中将在第一交换机处用于转发分组的出口端口的第一组当中选择第一出口端口,将在第二交换机处用于转发分组的出口端口的第二组当中选择第二出口端口,并且第一组具有第一组大小而第二组具有第二组大小。另外如由图1B的示例所图示的,可以通过确定在第一交换机处应用的第一散列函数和在第二交换机处应用的第二散列函数是相同的并且第二组是第一组能到达的来找到散列相关性。可以使用如图4中所示的有向图来确定散列相关性。

在框920处,在确定存在散列相关性时,可以选择与第一组大小互质的新的第二组大小。对于ECMP组,可以基于ECMP组的协方差满足预定阈值来选择新的第二组大小。对于WCMP组,诸如图5A和图5B中所示,可以基于WCMP组的K-S统计量满足预定阈值来选择新的第二组大小。在一些情况下,可以进一步选择新的第二组大小以满足网络中路由表的存储器容量。另外,可以基于比较两个组的存储器使用率来确定是向第一组还是向第二组指派新的组大小。

在框930处,将出口端口的第二组映射到具有新的第二组大小的映射组。例如,诸如图3中所示,可以通过将多路径路由表中的一个或多个出口端口复制到多个条目中来执行映射。另外如图7A和图7B中所示,可以在对于WCMP组根据新的组大小映射时考虑路由权重。在这方面,在可以基于更新的遥测数据来更新路由权重的情况下,可以执行根据经更新的路由权重的更新或重新映射。

在框940处,第二交换机被配置成根据映射组来路由分组。例如如通过对图1B和图3中所示的示例的比较所图示的,尽管可以仍然在第一交换机和第二交换机处应用同一散列函数,但是因为对第二交换机处的出口端口的选择来自具有新的组大小的新映射组,所以结果是映射组的所有出口端口都具有被选择的机会。因此,散列相关性被减轻并且可以实现负载平衡。

技术在许多方式上是有利的。例如,通过避免向交换机添加新的散列函数,系统可以减轻散列相关性,而无需交换机供应商支持新的散列函数或创建计算瓶颈。通过避免操纵现有的散列函数,不需要CRC的计算,并且可以为其它网络功能保留随机性。另外,技术能够被适配成减轻ECMP网络和WCMP网络两者中的散列相关性,诸如根据路由权重变化动态地适配WCMP出口端口的映射的特征。技术的特征也提供用于减小通过网络中交换机的总存储器使用率,并且同时,通过在不同交换机处对于互质组大小选择使用各种误差边界来提高业务的一致性。

除非另外陈述,否则前述替选示例不是互斥的,而是可以被以各种组合实现以实现独特的优点。由于能够在不脱离由权利要求所限定的主题的情况下利用以上讨论的特征的这些及其它变化和组合,所以应该通过图示的方式而不是通过由权利要求所限定的主题的方式来进行实施例的前述描述。此外,本文描述的示例以及措词为“诸如”、“包括”等的短语的提供不应该被解释为将权利要求的主题限于具体示例;相反,示例不限于旨在图示许多可能的实施例中的仅一个。另外,不同附图中的相同的附图标记能够标识相同或类似的元件。

相关技术
  • 用于减轻多路径网络中的散列相关性的方法
  • 用于进行散列运算的散列单元和方法
技术分类

06120112171405