CN109391549B - 使用一致性哈希进行ecmp路由 - Google Patents
使用一致性哈希进行ecmp路由 Download PDFInfo
- Publication number
- CN109391549B CN109391549B CN201810878765.3A CN201810878765A CN109391549B CN 109391549 B CN109391549 B CN 109391549B CN 201810878765 A CN201810878765 A CN 201810878765A CN 109391549 B CN109391549 B CN 109391549B
- Authority
- CN
- China
- Prior art keywords
- vector
- group
- destinations
- valid
- permuted
- 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
Links
- 239000013598 vector Substances 0.000 claims abstract description 101
- 238000000034 method Methods 0.000 claims description 47
- 230000006870 function Effects 0.000 claims description 30
- 230000015654 memory Effects 0.000 claims description 14
- 230000000873 masking effect Effects 0.000 claims description 12
- 230000002776 aggregation Effects 0.000 claims description 5
- 238000004220 aggregation Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 23
- 230000000694 effects Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 14
- 238000013459 approach Methods 0.000 description 5
- 239000004744 fabric Substances 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 230000003936 working memory Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000032683 aging Effects 0.000 description 3
- 230000000875 corresponding effect Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000032258 transport Effects 0.000 description 2
- 101100269850 Caenorhabditis elegans mask-1 gene Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/20—Hop count for routing purposes, e.g. TTL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
- H04L45/245—Link aggregation, e.g. trunking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
在网络实体的结构中通过由成员向量表示所述实体的组中的有效目的地和无效目的地来进行ECMP路由。对所述成员向量中的元素的顺序进行置换。伪随机地屏蔽经置换向量中的元素的一部分。将分组流传输到被屏蔽的成员向量中的第一有效目的地。
Description
版权声明
本专利文件公开内容的一部分含有受版权保护的材料。版权所有人不反对任何人对专利文件或专利公开内容进行影印复制,因为这些文件或内容在专利和商标局的专利文献或记录上有所显示,但除此以外保留所有其他版权权利。
相关申请的交叉引用
本申请是提交于2017年8月7日的美国申请号15/670,055的继续申请,上述申请通过引用而并入于此。
技术领域
本发明涉及数字信息传输。更具体地,本发明涉及数据交换网络中的分组路由和转发中的哈希操作。
背景技术
表1中给出了本文使用的一些简写和缩写的含义。
表1–简写和缩写
ECMP | 等价多路径 |
FDB | 转发数据库 |
IP | 因特网协议 |
LAG | 链路聚合组 |
MLAG | 多机架链路聚合组 |
SRAM | 静态随机存取存储器 |
TCP | 传输控制协议 |
UDP | 用户数据报协议 |
哈希表广泛用于计算机应用、通信和逻辑电路以实现关联数组,即,将键映射到值的数据结构。例如,哈希表在诸如桥接器和路由器等网络交换单元中用于将源自交换单元所接收到的分组的指定报头字段的键映射到要由交换单元在对分组的转发中应用的指令。哈希表的许多其他应用在本领域中是已知的。
哈希表使用哈希函数,针对每个键计算指向数组中保持期望值的“槽(slot)”的索引。这样的哈希函数被选择以便提供哈希结果的均匀分布,并且从而使不同的键之间的冲突数目(即,发生哈希函数将两个(或更多个)键映射到同一槽的情况)减到最少。大多数哈希表设计假设会发生冲突,并且提供用于调和冲突以及使其对查找性能的影响最小化的技术。
在通过交换网络对分组的路由中,等价多路径(equal cost multi-path,ECMP)是用于从网络中的冗余受益的技术,其中路由器选择链路,通过该链路在多个可能的ECMP成员(例如,出口端口或路由器接口)之间发送每个分组。分组通常以流来发送。分组流意指从特定源到特定目的地的任何数目的分组,其中源或目的地可以是任何的任意一组标识符,诸如IP地址或TCP端口号、外部IP地址、内部IP地址、UDP端口号。
在链路聚合组(link aggregation group,LAG)中,两个实体,例如,网络交换机或NIC,通过不止一个物理接口连接起来。当今,使用LAG将以太网交换机堆栈在一起以形成具有单一IP地址的链接的堆栈组是常见的。有利地,通过将交换机结合成堆栈组,该堆栈组被视为如同其是具有大量端口的单一交换机。LAG中的物理端口被称为LAG成员。交换机或路由器选择由什么链路在多个LAG成员之间发送每个分组。
对所使用的链路的随机选择可能由于失序分组而造成性能下降。因此,大多数交换机和路由器依靠分组报头的哈希来选择要将分组发送到的LAG或ECMP成员。为了避免哈希冲突,应当有大量的哈希值(Nhash)可用,使得流的数目不加入哈希值的数目,一种常见做法是设定
当使用ECMP或LAG时,期望经由同一成员传输分组流,以便避免失序分组并从而即使当添加或移除成员时仍保持路由稳定。当添加或移除路线时在分组流中保留对成员的使用的能力被称为一致性LAG、一致性ECMP或一致性哈希。
一种简单的哈希方案称为“模数(modulus)”,其操作如下:
每一分组:对分组报头进行哈希以获得大伪随机数hpkt∈[0..Nhash-1]。选定的成员为m=mod(hpkt,Nroutes)。然而,该方法不提供对于成员添加或成员移除的一致性。
另一简单的哈希方案称为“细粒度”,其针对每个分组操作如下:
(a)对分组报头进行哈希以获得大伪随机数hpkt∈[0...Nhash-1]。
(b)每一hpkt∈[0...Nhash-1]分配存储器单元,该存储器单元储存当前成员。
(c)每一ECMP组或LAG组分配存储器单元,该存储器单元储存可用成员。该方法以O(Nhash)的存储器复杂度提供了一致性。
一些用于实现ECMP/LAG一致性和公平性的当前解决方案依赖于每一成员的大间接表(indirection table)。交换机/路由器对传入分组进行哈希,在相关的成员间接表中对其进行查找,并且基于该结果而向前转发分组。这样的解决方案中的缺点在于,其需要每一成员的大间接表(在当前实施方式中有数千个条目,但有可能甚至是更大量级),并且相对难以选择性地移除对于特定成员的链路可能性。
发明内容
根据本发明所公开的实施方式,使用一致性哈希方案来解决对要由使用ECMP或LAG的网络中的分组使用的成员进行选择的问题。该解决方案将每一成员所需的信息量从或减少到O(Nmembers)的量级,但仍将时间复杂度保持在O(Nmembers)。所提出的解决方案使用成员列表的置换,以及精心设计的不相等选择概率方案,来使成员选择概率几乎相等,同时保持一致性哈希。该过程总是选取第一有效成员,该第一有效成员被定义为在置换和应用不相等选择函数之后的第一成员。
测试表明,通过适当的参数选择,如通过方差σ2所测量,成员的分布在成员公平性方面比均匀分布差约10%。亦即,对于Nmembers,Nflows的一些设置,流→成员的完全随机映射将会产生方差所提出的算法将会产生方差σ2=1.1σ0。
根据本发明实施方式,提供了一种方法,该方法通过以下步骤进行:在网络实体的结构中定义所述实体的组;以及通过具有有效元素和无效元素的成员向量来表示所述组,所述有效元素和所述无效元素相应地引用所述组中的有效目的地和无效目的地。所述方法还通过以下步骤进行:对所述成员向量中的元素的顺序进行置换;伪随机地屏蔽经置换成员向量的元素的一部分;以及将分组流传输到由被屏蔽的成员向量的第一有效元素表示的有效目的地。
根据所述方法的一个方面,所述目的地是等价多路径(equal cost multi-path,ECMP)组中的下一跳。
根据所述方法的另一方面,所述目的地是链路聚合组(link aggregation group,LAG)中的地址。
根据所述方法的一个方面,通过对分组报头应用哈希函数以及根据所述哈希函数改变成员向量的顺序来对所述成员向量进行置换。
根据所述方法的进一步方面,屏蔽包括对经置换成员向量应用屏蔽哈希函数。
所述方法的又一方面包括在通过成员向量表示所述组之前从所述组删除所述有效目的地中之一,以及使用被屏蔽的经置换成员向量将所述分组流重新分配到剩余的有效目的地。
根据所述方法的一个方面,重新分配所述分组流包括避免将所述剩余有效目的地中的分组流迁移到其他剩余有效目的地。
所述方法的又一方面包括在通过成员向量表示所述组之前向所述组添加新有效目的地,以及使用被屏蔽的经置换成员向量来重新分配所述分组流以包括所述新有效目的地。
根据所述方法的进一步方面,重新分配所述分组流包括避免将预先存在的有效目的地中的分组流迁移到其他预先存在的有效目的地。
根据本发明实施方式,还提供了一种用于数据分组通信的网络实体的结构,其中所述网络实体分别具有多个物理端口和储存转发数据库的存储器。所述网络实体中的可编程硬件逻辑被配置用于通过具有所述转发数据库中的有效元素和无效元素的成员向量来表示所述网络实体的组,所述有效元素和所述无效元素相应地引用所述组中的有效目的地和无效目的地。所述硬件逻辑被配置用于对所述成员向量中的元素的顺序进行置换,伪随机地屏蔽经置换成员向量的元素的一部分,以及将分组流传输到由被屏蔽的经置换成员向量的第一有效元素表示的有效目的地。
附图说明
为了更好地理解本发明,通过举例的方式参考本发明的详细描述,该详细描述应当结合附图阅读,图中相似元件被给予相似的参考标号,并且其中:
图1是根据本发明实施方式的典型网元的框图,该网元传输分组;
图2是根据本发明实施方式的,在其中应用ECMP转发的结构的一部分的示意图;
图3是根据本发明实施方式的,选择ECMP组或LAG的成员的方法的流程图;
图4是根据本发明实施方式,详细图示图3的方法的各个方面的示例图;
图5是根据本发明实施方式的,用于置换成员向量的电路的一部分的示意图;
图6是根据本发明实施方式,详细图示图3的方法的附加方面的示图;
图7是根据本发明实施方式,图示图3的方法的附加方面的示图;
图8是根据本发明实施方式的仿真结果的标绘图;
图9是图示根据本发明实施方式的典型组表的示图;
图10是根据本发明实施方式,在向组添加新成员的过程开始时图9的组表的示图;
图11是根据本发明实施方式,在流活动收集接近完成时图9的组表的示图;
图12是根据本发明实施方式,在收集活动完成之后且在迁移流的过程开始时图9的组表的示图;以及
图13是根据本发明实施方式,在迁移流的过程接近完成时图9的组表的示图。
具体实施方式
在以下描述中阐述了许多具体细节,以便提供对于本发明各种原理的透彻理解。然而,对于本领域技术人员显而易见的是,并非所有这些细节对于实践本发明都是必需的。在这种情况下,未详细示出公知的电路、控制逻辑以及针对常规算法和过程的计算机程序指令细节,以免不必要地混淆一般概念。
通过引用并入本文的文件应被视为本申请的组成部分,除非这些并入的文件中任何术语的定义达到与本说明书中的明示或暗示定义相冲突的程度,在此情况下应仅以本说明书中定义为准。
定义
经受ECMP/LAG转发的分组属于ECMP/LAG组。组由其有效成员所定义。成员可以是出口端口(在LAG的情况下)或路由器接口(ECMP的情况)。组可通过静态指针的向量来表示,所述静态指针是有效的或无效的。指针指向成员的所有属性,例如,端口号、路由器接口号。选择成员相当于选择指向该成员的指针。本发明的原理适用于ECMP和LAG转发,尽管接下来的讨论为方便起见而经常指定ECMP路线。本领域技术人员可以容易地使这些原理适合于LAG转发。
概述
当在通过结构的一个或多个路径中发生故障时,针对所有路径常规重新计算下一跳通常将会导致所有流的重新排序。根据本发明原理的一致性负载均衡覆盖此行为,从而使得只有针对变得不活动的链路的流才得到重定向。因此,在一致性哈希方案中,从一个ECMP目的地(或LAG端口)迁移一些流并将其重新分配到剩余目的地,而其他流则留在其原始目的地。在可用目的地的数目增多的情况下,一些流将会使用新的目的地。假设在一组四个目的地中,每个目的地处理25%的流,并且第五目的地变成活动的。期望所述五个目的地中的每一个保持20%的流。这可以通过将20%的流从预先存在的四个目的地中的每一个移动到新目的地来实现。然而,并不将流从一个预先存在的目的地迁移到另一预先存在的目的地。类似地,当目的地的数目减少时,可以将不活动目的地的流分配到剩余目的地,而剩余目的地中的现有的流则留在原地。优选地,出于效率原因,接下来的方案以硬件实现。特别地,与细粒度ECMP重排相比,本发明实施方式中所采用的方法产生更少的存储器开销。
现在转到附图,参考图1,其为根据本发明实施方式的典型网元10的框图,该网元10传输分组。单元10可以是LAG或MLAG的组件。例如,其可被配置成网络或结构交换机或路由器,并具有多个端口12连接到分组通信网络。单元10内的决策逻辑14在将数据分组16转发于端口12之间,以及执行其他行动诸如封装和解封装、安全过滤以及服务质量功能中应用分类规则。执行这样的转发和其他功能所需的电路对于本领域技术人员将会是显而易见的,并且为了简单起见而从附图中省略,以便专注于决策逻辑14的实际分类功能。
在图示的实施方式中,决策逻辑14接收分组16,所述分组16各自包含报头18和净荷数据20。决策逻辑14中的处理流水线22从每个分组提取分类键,通常(但并不必须)包括报头18的某些字段的内容。例如,键可以包括源及目的地地址和端口,以及协议标识符。如下文详细描述,流水线22将键与包含一组规则条目的匹配数据库24相匹配,所述匹配数据库24储存在网元10中的SRAM 26内。SRAM 26还包含要在发现键匹配于规则条目中之一时执行的行动28的列表,并且可以包含转发数据库。为此目的,每个规则条目通常包含指针,该指针指向决策逻辑14要在匹配的情况下向分组16施加的特定行动。流水线22通常包括专用或可编程硬件逻辑,所述硬件逻辑被配置用于执行本文所述的功能。
此外,网元10通常包括缓存30,所述缓存30包含未纳入到SRAM 26中的匹配数据库24中的规则。缓存30例如可以包含最近添加到网元10且尚未纳入到匹配数据库24的数据结构中的规则,以及/或者具有这样的规则模式的规则——该规则模式以低频率发生,使得将其纳入到匹配数据库24的数据结构将会不切实际。缓存30中的条目同样地指向SRAM 26中的对应行动28。流水线22可以将所有传入分组16的分类键与SRAM 26中的匹配数据库24和缓存30都进行匹配。或者,可以仅在给定的分类键不匹配于数据库24中的任何规则条目的情况下,或者在匹配规则条目指示出(例如,基于指定标记的值)还应当检查缓存30以寻找与具有更高优先级的规则的可能的匹配的情况下,才对缓存30进行寻址。
业务流
当LAG堆栈是基于标准以太网链路时,每个设备执行标准第二层(桥接)转发。现在参考图2,其为根据本发明实施方式的,在其中应用ECMP转发的结构34的一部分的示意图。在源交换机36中接收到的分组要经由ECMP组38转发。结构34包括LAG 54。在图2的示例中,ECMP组38用于可通过路径42、路径44、路径46中之一路由到目的地交换机56的分组。
现在参考图3,其为使用图2的示例,根据本发明实施方式的选择ECMP组的成员(即,路径42、路径44、路径46中之一)的方法的流程图。每个交换机或转发器执行所述方法以选择下一跳。所采用的策略是在对所述组中的成员排序进行伪随机置换之后,以及在使用每个成员的不相等屏蔽概率对所述组的一些成员进行伪随机屏蔽之后选择该组的第一可用成员。这有利地避免了保持每一成员的许多哈希表条目,并且消除了成行的大量比较器。
为了表述清晰,在图3中以特定的线性序列示出了以下算法的过程步骤。然而,很明显这些步骤中的许多步骤可以并行地、异步地或者以不同顺序执行。本领域技术人员还会理解,可以替代地将过程表示为一些相互关联的状态或事件,例如,以状态图表示。此外,实现所述方法可能并不需要所有图示的过程步骤。
在初始步骤60中,基于结构拓扑来准备成员向量。可以将单个成员向量保持在结构的每个单元中。或者,认识到每个交换机或转发器仅看到下一跳,结构控制器(未示出)可以保持用于所述结构的成员向量的相应版本。
接下来,在步骤62中,使用哈希函数对初始步骤60中准备的成员向量进行置换。从一组适当选取的哈希函数中选择哈希函数产生对成员向量的几乎理想的伪随机重排。适当的哈希函数包括Bitwise-XOR、CRC32、CRC16、Toeplitz-Hash和MD5。在图2的示例中,存在预定的有限一组成员向量置换。因此,如果成员向量的大小为128(其中在ECMP组中可以存在2个、3个、4个、10个等有效成员),在ECMP组38的情况中存在3个有效成员。理论上存在128!个置换,而在其中我们选取1024个。从1024个的该有限一组中,使用施加于分组报头的哈希函数选择置换,并且执行对相关的组向量的置换。与生成伪随机数列相比,置换操作对硬件元件具有相对较小的要求。
应当注意,根据交换机的转发数据库要以不涉及ECMP或LAG的方式转发的分组不会激活置换机制。
以下讨论解释了如何使经置换的成员向量的第一有效成员随机出现。
现在参考图4,其为图示根据本发明实施方式的初始步骤60和步骤62(图3)的示图。成员向量64包括由方块表示的一组指针。如上文所述,根据每个交换机设备的向量大小,成员向量可以包括大量指针。假设向量大小为128,由该交换机支持的最大ECMP组将会是128。为简单起见,图4中图示了小得多的数目。成员向量64包括四个元素66,所述四个元素66为有效成员,其引用经过结构通向下一跳的四个ECMP路线,记为路线A、路线B、路线C、路线D。分组业务可以经由路线A、路线B、路线C、路线D来分配。或者,路线A可被指定用于接收前一备选的两倍的流,并且路线继而可以是(A、A、B、C)。成员向量64的其他元素不是有效成员。
有效成员组在引入新路线时改变。因此,如果引入了直接连接交换机35、交换机56的新路线,则ECMP组38将会从3个有效成员增加到4个有效成员。
成员向量64的置换由根据哈希函数72的框70指示。可以使用本领域技术人员已知的技术,以硬件来高效实现图3所表示的算法。例如,上述置换可以使用多路复用器来实现。
现在参考图5,其为根据本发明实施方式的,用于置换成员向量74的电路的一部分的示意图。图示了框76的链接。线路共享控制78(每个框一比特)来自分组哈希。每个框接收来自哈希的不同比特。每个框创建两个置换:{无置换,αi置换}从而存在2k个置换,这可以通过对最后一个框进行处理而产生,并且被应用于所创建的经置换向量80。
此外,可以在步骤62中替换本领域已知的其他置换创建技术。
在图4中,将置换的结果示出为经置换成员向量82。其有效成员(现在标示为经置换元素84)表示根据在框70中应用的特定哈希函数72对元素66的重新排序和重新分配。
用于选择组的成员(诸如成员向量64的元素)的常规方法由选择入口点开始,并且从入口点向前对该组进行扫描,进行环绕,并且继续回到入口点,直至找到有效成员。在成员向量64的情况中,从左到右对元素进行扫描将会对于向量中的几乎每个入口点都在成员M0之前找到成员M1,这导致成员M0与成员M1之间的负载均衡中的不公平。
在将成员向量64置换成经置换成员向量82之后,从适当挑选的一组置换函数中进行选择,对于任何一对元素84,任一成员在扫描中具有相等的概率会处于另一成员之前。事实上,对于任何一组元素84,该组的任何成员具有几乎相等的可能性会处于另一成员之前。在实际系统中,应当存在至少2N个置换可供选择,其中N为ECMP向量大小。
框70中的置换操作消耗的时间为O(log2(置换数目))。
回到图3,在步骤86中将经置换成员向量82(图4)膨胀3倍(被称为“扇出(fanout)”的步骤),接下来是在步骤88中的屏蔽操作。
现在参考图6,其为图示根据本发明实施方式的步骤86、步骤88(图3)的示图。由框92表示将经置换成员向量82膨胀成更长的成员向量90。这是通过经置换成员向量82与其自身的级联来实现的。成员向量90现在包括经置换成员向量82的3个连续实例,并且因此包括重复的三组元素84。
在框92中通过对成员向量90应用哈希屏蔽函数96来实现步骤88。在高效硬件实现中,通过使用哈希函数计算随机比特,以及在扇出向量与随机比特向量之间应用AND(“&”)操作从而使比特向量具有以选定的概率(例如,0.5)伪随机地设定成1的每个比特,来执行哈希屏蔽函数96。对元素84的屏蔽同时完成,从而产生被屏蔽的经置换成员向量98。因此,框94中的屏蔽操作在时间O(1)内完成。意图在于随机地消除预定义百分比的有效成员,该百分比在本例中为50%。
现在参考图7,其为图示根据本发明实施方式的步骤88(图3)的效果的示图。在框100中选择被屏蔽的经置换成员向量98(图6)中的第一有效成员。在成员向量104中标示了选定的成员102。继而在框106中通过移除原始成员向量64的不包含成员102的级联实例来执行对框92的向量膨胀(图6)的逆。该过程称为“扇入(fan-in)”。包含成员102的成员向量108是结果。
在框112中可以对成员102执行附加的置换操作110,从而产生7比特输出向量114,该输出向量114被解释为标识分组将会转发到的ECMP(或LAG)成员的整数。
返回图3,步骤116和最终步骤118分别对应于框100、框106、框112(图7)的操作。图3的过程产生一组均衡的置换、每一屏蔽比特一组均衡的概率,以及O(Nmembers)的存储器。该过程还在成员移除的情况下,以O(Nmembers)的计算时间提供了对替代路线的随机选择的一致性。类似地,该过程可经适当变通后适应于一致地选择要迁移到结构的新添加成员的流。
示例。
以下示例说明了在使用列表1中所示伪代码仿真设计进行的上述过程的仿真中选择成员元素的几乎理想的随机化。
列表1
加载成员向量(mem_vec)。向量对于LAG为128b,而对于ECMP为64b。
1)/*如果加载64b成员向量,则将其复制两次以得到128向量。
生成[0..ch_max_perm-1]哈希,称为ch_permute_hash
置换mem_vec以创建mem_vec_permuted,使用:
ch_permute_hash[128]x[ch_max_perm]-to-1多路复用器:
将mem_vec_permuted复制(扇出)ch_mem_5vec_fan_out_size次
生成[128]x[ch_mem_vec_fan_out_size]随机比特,使得比特的概率(从MSB计数)为:
[1/64]x 64比特
[1/32]x 64比特
[1/4]x 128比特
[1/2]x 128比特
Mem_vec_permuted_mask=Mem_vec_permuted,并且计算随机比特
Mem_vec_permuted_mask_1st=Find_1st_set(Mem_vec_permuted_mask)
2)/*Find_1st_set over[ch_mem_vec_fan_out_size]x[128]比特:
如果(~|Mem_vec_permuted_mask_1st)→
Mem_vec_permuted_mask_1st=Find_last_set(Mem_vec_permuted)
Mem_vec_permuted_mask_fan_in=
fold(Mem_vec_permuted_mask_1st,128)
/*这是128x ch_mem_vec_fan_out_size“x/or”门。
Out_port=reassemble(Mem_vec_permuted_mask_fan_in.
ch_permute_hash).
/*这是7(每一输出比特)x ch_max_perm-to-1多路复用器
3)./*设计参数
ch_max_perm=64
ch_mem_vec_fan_out_size=3
现在参考图8,其为使用上述设计的仿真结果的标绘图。每一ECMP成员元素的流的数目的方差与理论随机分布进行了比较,并且与成员向量中的有效成员元素的数目一起标绘。进行了3个单独的仿真。结果大多在理论预测的10%以内。
ECMP组大小变化
ECMP组大小变化由硬件处理。当引入新的成员时,一些现有的流切换到新成员,而同时遵守当前活动状态——活动的流留在其旧的ECMP成员上,而当流变得不活动时,其继而可被重新分配到新ECMP成员。不活动的流留在其原始ECMP成员上。
现在参考图9,其为图示根据本发明实施方式的典型ECMP组表120的示图。状态为空闲。组表120包括成员向量122,该成员向量122在本例中表示为指向成员的属性的128个指针的数组。成员向量122由基指针124连同其他相关信息(未示出)一起引用。属性通常包括物理端口号或路由器接口号,并且可以包括下文讨论的其他数据。在组表120中包括瞬态标识号码(从0到组的数目-1不等)、工作存储器128、活动影子存储器130,以及分别用于分组老化和计时器转换的计时器132、计时器134。组表120实质上是路由表,其可能需要进行更新以添加或删除路径。成员136表示正在被添加到组表120的新端口或交换机。当流空闲时执行流到新路线的迁移。下文的讨论描述了如何对此加以实现,以便实现一致性负载均衡和最少中断。虽然图9中示出了工作存储器128和活动影子存储器130的一个实例,但系统可以并发地支持不止一个组中的成员变化,每个这样的变化具有其自己的工作存储器128和活动影子存储器130的实例,以及计时器132、计时器134的相关实例。
现在参考图10,其为根据本发明实施方式,在添加新成员的过程开始时的组表120的示图。正在收集流活动。这由工作存储器128正在被参与活动流的成员元素填充并且活动影子存储器130具有指示出流活动的条目所反映。该状态持续,直到活动流如计时器132所测量变得空闲,或者由分组老化计时器134指示出超时。对于每个分组,计算哈希值,该哈希值在本文称为“hash-for-activity”。值hash-for-activity在[0...n_activity_flows]的范围内,其大小与活动影子存储器130相同。
活动影子存储器130中的每个槽表示一个或多个流的活动状态。当引入新成员时,所有这些槽都被初始化为‘活动=3’,虽然其活动状态尚不得而知。每次分组老化计时器132计时时,所有的槽的活动状态从‘活动=3’变为→‘可能活动=2’→‘不活动=0’。
每次分组到达时,并且在其槽活动不是‘不活动=0’的情况下,使用工作存储器128来服务于该分组。其槽活动状态从‘可能活动=2’变为→‘活动=3’。
现在参考图11,其为根据本发明实施方式,在流活动收集接近完成时的组表120的示图。计时器132已经递减,并且即将超时。活动影子存储器130指示出与图10相比增加的活动。
现在参考图12,其为根据本发明实施方式,在收集活动完成之后且在迁移流的过程开始时的组表120的示图。由活动影子存储器130中的条目表示的、先前分配到路线138的空闲流(活动状态活动=3)被分配到新路线140(活动状态活动=2)。
现在参考图13,其为根据本发明实施方式,在迁移流的过程接近完成时的组表120的示图。计时器134已经递减到0,并且活动影子存储器130即将被刷新。遵循路线138的大多数分组已经完成其路线。然而,如果计时器134已经几次递减到0,并且一些流仍然被认为是活动的,则认为这样的流无限地生存,并且强制其使用新的成员向量。
本领域技术人员应当理解,本发明并不限于上文具体示出和描述的内容。相反,本发明的范围包括上述各个特征的组合和子组合,以及本领域技术人员在阅读前文描述后所设想到的、不属于现有技术的变化和修改。
Claims (18)
1.一种使用一致性哈希进行路由的方法,包括以下步骤:
在网络实体的结构中定义所述实体的组,所述组经受ECMP(等价多路径)/LAG(聚合链路组)转发;
通过具有元素的成员向量来表示所述组,所述成员在ECMP的情况下是路由器接口,在LAG的情况下是出口端口,所述元素包括有效元素和无效元素,所述有效元素和所述无效元素相应地引用所述组中的有效目的地和无效目的地;
对所述成员向量中的元素的顺序进行置换,以便定义经置换成员向量;
将所述经置换成员向量的元素的一部分进行扇出,得到扇出向量,将扇出向量与经哈希函数计算得到的随机比特向量之间应用与操作实现随机伪屏蔽,以便定义被屏蔽的经置换成员向量;以及
将分组流传输到由所述被屏蔽的经置换成员向量的第一有效元素表示的有效目的地。
2.根据权利要求1所述的方法,其中所述目的地是ECMP组中的下一跳。
3.根据权利要求1所述的方法,其中所述目的地是LAG中的地址。
4.根据权利要求1所述的方法,其中对顺序进行置换包括对分组报头应用哈希函数以及根据所述哈希函数来改变所述顺序。
5.根据权利要求1所述的方法,其中屏蔽包括对所述经置换成员向量应用屏蔽哈希函数。
6.根据权利要求1所述的方法,还包括在通过成员向量表示所述组之前从所述组删除所述有效目的地中之一,以及使用所述被屏蔽的经置换成员向量将所述分组流重新分配到剩余的有效目的地。
7.根据权利要求6所述的方法,其中重新分配所述分组流包括避免将所述剩余有效目的地中的分组流迁移到其他剩余有效目的地。
8.根据权利要求1所述的方法,还包括在通过成员向量表示所述组之前向所述组添加新有效目的地,以及使用所述被屏蔽的经置换成员向量来重新分配所述分组流以包括所述新有效目的地。
9.根据权利要求8所述的方法,其中重新分配所述分组流包括避免将预先存在的有效目的地中的分组流迁移到其他预先存在的有效目的地。
10.一种使用一致性哈希进行路由的系统,包括以下步骤:
用于数据分组通信的网络实体的结构,其中所述网络实体分别具有多个物理端口和储存转发数据库的存储器;以及
所述网络实体中的可编程硬件逻辑,所述可编程硬件逻辑被配置用于执行以下步骤:
通过具有元素的成员向量来表示所述网络实体的组,所述组经受ECMP(等价多路径)/LAG(聚合链路组)转发,所述成员在ECMP的情况下是路由器接口,在LAG的情况下是出口端口,所述元素包括所述转发数据库中的有效元素和无效元素,所述有效元素和所述无效元素相应地引用所述组中的有效目的地和无效目的地;
对所述成员向量中的元素的顺序进行置换,以便定义经置换成员向量;
将所述经置换成员向量的元素的一部分进行扇出,得到扇出向量,将扇出向量与经哈希函数计算得到的随机比特向量之间应用与操作以实现随机伪屏蔽,以便定义被屏蔽的经置换成员向量;以及
将分组流传输到由所述被屏蔽的经置换成员向量的第一有效元素表示的有效目的地。
11.根据权利要求10所述的系统,其中所述目的地是ECMP组中的下一跳。
12.根据权利要求10所述的系统,其中所述目的地是LAG中的地址。
13.根据权利要求10所述的系统,其中对顺序进行置换包括对分组报头应用哈希函数以及根据所述哈希函数来改变所述顺序。
14.根据权利要求10所述的系统,其中屏蔽包括对所述经置换成员向量应用屏蔽哈希函数。
15.根据权利要求10所述的系统,其中所述硬件逻辑被配置用于在通过成员向量表示所述组之前从所述组删除所述有效目的地中之一,以及使用所述被屏蔽的经置换成员向量将所述分组流重新分配到剩余的有效目的地。
16.根据权利要求15所述的系统,其中重新分配所述分组流包括避免将所述剩余有效目的地中的分组流迁移到其他剩余有效目的地。
17.根据权利要求10所述的系统,其中所述硬件逻辑被配置用于在通过成员向量表示所述组之前向所述组添加新有效目的地,以及使用所述被屏蔽的经置换成员向量来重新分配所述分组流以包括所述新有效目的地。
18.根据权利要求17所述的系统,其中重新分配所述分组流包括避免将预先存在的有效目的地中的分组流迁移到其他预先存在的有效目的地。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/670,055 | 2017-08-07 | ||
US15/670,055 US9853900B1 (en) | 2017-08-07 | 2017-08-07 | Using consistent hashing for ECMP routing |
US15/810,065 | 2017-11-12 | ||
US15/810,065 US10298500B2 (en) | 2017-08-07 | 2017-11-12 | Using consistent hashing for ECMP routing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109391549A CN109391549A (zh) | 2019-02-26 |
CN109391549B true CN109391549B (zh) | 2022-04-12 |
Family
ID=60674733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810878765.3A Active CN109391549B (zh) | 2017-08-07 | 2018-08-03 | 使用一致性哈希进行ecmp路由 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9853900B1 (zh) |
CN (1) | CN109391549B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10257080B1 (en) * | 2016-05-31 | 2019-04-09 | Amazon Technologies, Inc. | Hardware resource allocation for equal-cost multi-path groups |
US10432526B2 (en) | 2017-09-25 | 2019-10-01 | Mellanox Technologies Tlv Ltd. | Enhanced traffic distribution using VRF tables |
US10880236B2 (en) | 2018-10-18 | 2020-12-29 | Mellanox Technologies Tlv Ltd. | Switch with controlled queuing for multi-host endpoints |
CN109450808A (zh) * | 2018-11-07 | 2019-03-08 | 盛科网络(苏州)有限公司 | 使ecmp组中ecmp成员链路分布均衡的方法 |
WO2020236272A1 (en) | 2019-05-23 | 2020-11-26 | Cray Inc. | System and method for facilitating fine-grain flow control in a network interface controller (nic) |
CN111277454B (zh) * | 2020-01-15 | 2021-06-25 | Ut斯达康通讯有限公司 | 一种网络性能检测系统及方法 |
US11343188B2 (en) | 2020-02-25 | 2022-05-24 | Cisco Technology, Inc. | Systems and methods for maintaining consistency between interfaces of locally sourced packets |
US11496354B2 (en) * | 2020-06-16 | 2022-11-08 | Ciena Corporation | ECMP fast convergence on path failure using objects in a switching circuit |
CN114884868B (zh) * | 2022-05-10 | 2024-04-12 | 云合智网(上海)技术有限公司 | 基于ecmp组的链路保护方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6577601B1 (en) * | 1999-08-05 | 2003-06-10 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Masked proportional routing |
CN101572667A (zh) * | 2009-05-22 | 2009-11-04 | 中兴通讯股份有限公司 | 一种ip路由等价多路径的实现方法及装置 |
WO2013095657A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
WO2016105823A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Corporation | Method and apparatus for performing a vector permute with an index and an immediate |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7190696B1 (en) * | 2002-03-05 | 2007-03-13 | Force10 Networks, Inc. | System and method for distributing packets among a plurality of paths to a destination |
US7821925B2 (en) * | 2007-01-29 | 2010-10-26 | Fulcrum Microsystems, Inc. | Traffic distribution techniques utilizing initial and scrambled hash values |
US8509236B2 (en) * | 2007-09-26 | 2013-08-13 | Foundry Networks, Llc | Techniques for selecting paths and/or trunk ports for forwarding traffic flows |
US8351429B2 (en) * | 2009-05-13 | 2013-01-08 | Avaya Inc. | Method and apparatus for providing fast reroute of a packet that may be forwarded on one of a plurality of equal cost multipath routes through a network |
US9019962B1 (en) | 2009-12-03 | 2015-04-28 | Juniper Networks, Inc. | Tunneling from a provider edge routing device to a remote customer edge network device |
EP2564561B1 (en) * | 2010-04-30 | 2019-07-31 | Hewlett-Packard Enterprise Development LP | Method for routing data packets in a fat tree network |
US8614950B2 (en) * | 2010-11-30 | 2013-12-24 | Marvell Israel (M.I.S.L) Ltd. | Load balancing hash computation for network switches |
US8787377B2 (en) * | 2011-03-21 | 2014-07-22 | Avaya, Inc. | Usage of masked BMAC addresses in a provider backbone bridged (PBB) network |
CN102404234B (zh) * | 2011-12-26 | 2015-05-20 | 杭州华三通信技术有限公司 | 流量转发方法和设备 |
US8553552B2 (en) * | 2012-02-08 | 2013-10-08 | Radisys Corporation | Stateless load balancer in a multi-node system for transparent processing with packet preservation |
US20130279503A1 (en) * | 2012-02-17 | 2013-10-24 | Rockstar Consortium Us Lp | Next Hop Computation Functions for Equal Cost Multi-Path Packet Switching Networks |
US9379971B2 (en) * | 2012-05-11 | 2016-06-28 | Simula Inovation AS | Method and apparatus for determining paths between source/destination pairs |
US9548926B2 (en) * | 2013-01-11 | 2017-01-17 | Brocade Communications Systems, Inc. | Multicast traffic load balancing over virtual link aggregation |
US10038626B2 (en) * | 2013-04-16 | 2018-07-31 | Amazon Technologies, Inc. | Multipath routing in a distributed load balancer |
US9467384B2 (en) * | 2013-12-05 | 2016-10-11 | Mediatek Singapore Pte. Ltd. | Packet forwarding apparatus and method using flow subgroup based path selection for dynamic load balancing |
US10193806B2 (en) * | 2014-03-31 | 2019-01-29 | Nicira, Inc. | Performing a finishing operation to improve the quality of a resulting hash |
US9806994B2 (en) * | 2014-06-24 | 2017-10-31 | Mellanox Technologies, Ltd. | Routing via multiple paths with efficient traffic distribution |
US10033641B2 (en) * | 2014-11-06 | 2018-07-24 | Juniper Networks, Inc. | Deterministic and optimized bit index explicit replication (BIER) forwarding |
US20170048144A1 (en) * | 2015-08-13 | 2017-02-16 | Futurewei Technologies, Inc. | Congestion Avoidance Traffic Steering (CATS) in Datacenter Networks |
US10270687B2 (en) | 2015-09-07 | 2019-04-23 | Citrix Systems, Inc. | Systems and methods for dynamic routing on a shared IP address |
US20170085630A1 (en) | 2015-09-22 | 2017-03-23 | Futurewei Technologies, Inc. | System and method for control traffic balancing in in-band software defined networks |
US10116567B1 (en) | 2016-08-11 | 2018-10-30 | Amazon Technologies, Inc. | Load balancing for multipath group routed flows by re-routing the congested route |
-
2017
- 2017-08-07 US US15/670,055 patent/US9853900B1/en active Active
- 2017-11-12 US US15/810,065 patent/US10298500B2/en active Active
-
2018
- 2018-08-03 CN CN201810878765.3A patent/CN109391549B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6577601B1 (en) * | 1999-08-05 | 2003-06-10 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Masked proportional routing |
CN101572667A (zh) * | 2009-05-22 | 2009-11-04 | 中兴通讯股份有限公司 | 一种ip路由等价多路径的实现方法及装置 |
WO2013095657A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
WO2016105823A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Corporation | Method and apparatus for performing a vector permute with an index and an immediate |
Also Published As
Publication number | Publication date |
---|---|
US10298500B2 (en) | 2019-05-21 |
US20190044863A1 (en) | 2019-02-07 |
US9853900B1 (en) | 2017-12-26 |
CN109391549A (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109391549B (zh) | 使用一致性哈希进行ecmp路由 | |
US9246810B2 (en) | Hash-based load balancing with per-hop seeding | |
US6654701B2 (en) | Method and apparatus for measuring protocol performance in a data communication network | |
Yu et al. | BUFFALO: Bloom filter forwarding architecture for large organizations | |
EP1002402B1 (en) | Trunking support in a high performance network device | |
EP2850517B1 (en) | System and method for routing traffic between distinct infiniband subnets based on source routing | |
EP1623557B1 (en) | A bounded index extensible hash-based ipv6 address lookup method | |
JP4068166B2 (ja) | 高性能多層スイッチ要素用探索エンジン・アーキテクチャ | |
EP2924927B1 (en) | Techniques for aggregating hardware routing resources in a multi-packet processor networking system | |
US8937955B2 (en) | System and method for scaling IPv6 addresses in a network environment | |
US7126948B2 (en) | Method and system for performing a hash transformation to generate a hash pointer for an address input by using rotation | |
US10594629B2 (en) | Load balancing on multi-chip network switch without full bi-section bandwidth | |
US10284472B2 (en) | Dynamic and compressed trie for use in route lookup | |
US9369293B2 (en) | Compressing singly linked lists sharing common nodes for multi-destination group expansion | |
WO2017190559A1 (zh) | 路由查找方法、装置、分配节点、查找节点及入口节点 | |
US9838323B2 (en) | Priority based anycast routing | |
US20120230194A1 (en) | Hash-Based Load Balancing in Large Multi-Hop Networks with Randomized Seed Selection | |
US20120287946A1 (en) | Hash-Based Load Balancing with Flow Identifier Remapping | |
US7606230B1 (en) | Link aggregation for routed ports | |
US7809008B2 (en) | Methods and apparatus for routing packets | |
Medhi et al. | Openflow-based scalable routing with hybrid addressing in data center networks | |
KR102001487B1 (ko) | 소프트웨어 정의 네트워킹 제어 방법 및 이를 수행하는 컴퓨팅 장치 | |
Chung et al. | A fast and updatable IP address lookup scheme | |
US11777838B2 (en) | Systems and methods for reducing bias in multicast replication sequence | |
CN113194030B (zh) | 一种基于网络前缀切分的多路径报文转发方法 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220310 Address after: Yoknam, Israel Applicant after: Mellanox Technologies, Ltd. Address before: Israel Lai Ananna Applicant before: Mellanox Technologies TLV Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |