Analysis of an Equal-Cost Multi-Path Algorithm
一种等代价多路径算法分析
翻译参考:等价多径算法的分析.doc - 淘豆网
摘要
等代价多路径ECMP (equal -cost multi-path)是一种路由技术,用于在多条等价路径上路由数据包。转发引擎通过下一跳标识路径。在转发数据包时,路由器必须决定使用哪一跳(路径)。本文分析了做出这一决定的一种方法。分析了算法的性能和下一跳集合变化所引起的中断。
1 Hash-Threshold哈希门限
在使用ECMP进行路由时,确定使用哪个下一跳的一种方法称为哈希阈值。路由器首先通过在标识流的数据包报头字段上执行哈希(例如,CRC16)来选择密钥。N个下一跳在键空间中被分配了唯一的区域。路由器使用密钥来确定使用哪个区域,从而确定下一跳。
CRC16:https://www.cnblogs.com/94cool/p/3559585.html
作为一个哈希阈值的例子,在接收到数据包后,路由器对数据包的头字段执行CRC16,这些字段定义了流(例如,数据包的源和目的字段),这是关键。假设这个目的地有4个下一跳可供选择。每个下一跳被分配一个16位空间(密钥空间)的区域。为了平等使用,路由器可能选择将其平均划分,以便每个区域65536/4或16k大。通过确定哪个区域包含密钥(即CRC结果)来选择下一跳。
2 分析
在选择决定使用哪个下一跳的算法时,有一些问题。一个是性能,即运行算法所需的计算量。另一个是中断(即,流使用的路径的改变)。平衡是第三个问题;然而,由于算法的平衡特性与所选择的散列函数直接相关,因此本文的分析没有深入讨论这个问题。
对于这个分析,我们将假设大小相等的区域。如果哈希函数的输出是均匀分布的,那么流在路径之间的分布也将是均匀的,因此算法将正确地实现ECMP。利用不等大小的区域可以实现非等代价多路径路由;然而,非等价多路径路由不在本文的讨论范围之内。
2.1 复杂度
哈希阈值算法的性能可以分为三个部分:选择下一跳的区域,获取密钥,并将密钥与区域进行比较,以决定使用哪个下一跳。
该算法没有指定用于获取密钥的哈希函数。它在这方面的性能将完全是哈希函数的性能。可以假定,如果这个计算被证明是一个问题,它可以在硬件中与其他需要在决定使用哪个下一跳之前完成的操作并行进行。
由于区域被限制为大小相等,因此区域边界的计算是微不足道的。对于第一个区域,从0开始,每个边界与前一个边界的距离正好是区域大小。正如我们将展示的,对于大小相等的区域,我们不需要存储边界值。
要选择下一跳,我们必须确定哪个区域包含密钥。因为区域大小相等,确定哪个区域包含键是一个简单的除法操作。
区域大小 = 码空间大小/下一跳的个数
区域号 = 决策码 /区域大小
因此,找到下一跳所需的时间取决于下一跳在内存中的组织方式。显然,使用按区域索引的数组会产生0(1)。
2.2 分裂
如果流连接时它们所流经的路径没有改变,诸如TCP之类的协议的性能会更好。中断是对有多少流量由于路由器的某些变化而改变其路径的度量。我们测量中断作为总流量的一部分,其路径改变响应在路由器的一些变化。如果一条或多条路径振荡,这一点就变得很重要。有关中断的描述以及它如何影响TCP等协议,请参阅[1]。
一些算法,如轮询(即,在收到数据包时,选择最近最少使用的下一跳)是中断的,无论路由器中有任何变化。显然,哈希阈值不是这种情况。只要区域边界保持不变,将为给定的流选择相同的下一跳。
因为我们要求区域的大小相等,所以改变区域边界的唯一原因是增加或删除下一跳。在这种情况下,区域必须全部增长或缩小以填充键空间。分析从这方面的一些例子开始。
图1 区域3删除前后
在图1中。已删除区域3。其余地区的增长相同,并向补偿方向转移。在这种情况下,1/4的区域2在区域1,1/2(2/4)的区域3在区域2,1/2的区域3在区域4 1/4的区域4在区域5。由于每个原始区域代表1/5的流量,因此总中断是1/5*(1/4 + 1/2 + 1/2 + 1/4)或3/10。
请注意,添加区域时对流的中断等同于删除区域时的中断。也就是说,我们考虑的是从N到N-1区域移动时改变区域的总流量的比例,以及从N-1到N区域移动时相同的流量比例。
图2 区域4删除前后
在图2中,区域4被删除了,剩下的区域同时增大并且相应平移。区域2的1/4在区域1,区域3的1/2在区域2,区域4的3/4在区域3,区域4的1/4在区域5。由于原来每个区域代表整个流量的1/5,因此总体的分裂比例为1/5*(1/4 + 1/2 + 3/4 + 1/4)=7/20。
考虑一般性的情况,去掉了区域K,剩下的N-1个区域平均增长。增长的流量是平均分配在N-1个区域中的,因此,每个区域的大小变化为1/(N(N-1))。这种大小的变化导致除了两端以外的其他区域发生平移。第一个区域增大了,所以第二个区域就向K方向移动相应的增长量。来自区域2的流量的1/(N(N-1))被纳入区域1的大小变化。区域3的2/(N(N-1))的流量归入区域2。这是因为区域2已经移动了1/(N(N-1))并且增长了1/(N(N-1))。这种情况从两端持续到到达与k相邻的区域。计算从第k个区域纳入到相邻区域的流的数量考虑了第k个区域的移除。这样我们就得到了下面的计算公式。
说明:disruption(分裂比例)
把常数因子1/(N)(N-1)提出来
现在我们使用连续整数和的计算公式。第一个求和是(K)(K-1)/2;第二次对1到N-K的整数求和,即(N-K)(N-K+1)/2。
考虑到这些求和,我们可以看到,当K尽可能接近1和N之间的一半时,干扰最小。这可以通过求K保持N不变的具体公式的最小值来证明。首先将数量分解并收集。
因为我们要最小化K右边(N+1)/2(N-1)是常数分母(N)(N-1)也是常数所以我们可以去掉它们。求最小值,求导数。
当K = (N+1)/2时等于0。
最后要考虑的是K必须是整数。当N是奇数(N+1)/2将得到一个整数,然而当N是偶数(N+1)/2将得到一个整数+1 /2。在这种情况下,由于对称性,当K为N/2或N/2 + 1时,我们得到的干扰最小。
现在,由于公式是二次的,在1和N之间的中间有一个全局最小值,当边缘区域(1和N)被移除时,最大可能的破坏必须发生。如果K等于1或N,公式就变成了1/2。
通过让K=(N+1)/2,可以获得最小可能的干扰。在这种情况下,公式简化为1/4 + 1/(4*N)。所以可能的破坏范围是(1/ 4,1 /2)
为了尽量减少干扰,我们建议在中心而不是末端添加新的区域。
3 与其他算法的比较
还有其他算法可以决定使用哪一个下一跳。这些算法都具有不同的性能和破坏性特征。在这些算法中,我们将只考虑那些在设计上不具有破坏性的算法(即,如果下一跳的集合没有改变,则流所采用的路径保持不变)。这将排除循环和随机选择。我们来看看n模和最高随机权值。
Modulo-N是一种“更简单”的哈希阈值形式。给定N个下一跳,描述流的包头字段通过哈希函数运行。最后的模n应用于哈希的输出。然后,这个结果直接映射到下一跳之一。Modulo-N是最具破坏性的算法;如果增加或删除下一跳,中断是(N-1)/N。Modulo-N的性能相当于hash-threshold。
最高随机权重(HRW)是一种比较方法,在某些方面类似于非固定大小区域的哈希阈值。对于每一个下一跳,路由器使用描述流和下一跳的包头字段种子生成伪随机数,以获得权重。选择权重最大的下一跳。使用HRW的优点是它具有最小的中断(即,由于添加或删除下一跳而导致的中断总是1/ n)。HRW的缺点是下一跳选择比哈希阈值更昂贵。人权观察的描述以及与其他方法的比较可以在[2]中找到。虽然不用于下一跳计算,但HRW的一个示例用法可以在[3]中找到。
由于modulo-N、hash-threshold和HRW都需要对定义流的数据包报头字段进行哈希,因此我们可以将哈希的性能排除在比较之外。如果哈希不能低成本地完成(例如,在硬件中),那么在使用上述任何方法时也必须考虑它。
对于哈希阈值,如modulo-N,查找性能是最优的O(1)。HRW的查找性能为0 (N)。
破坏性行为与绩效相反。HRW在1/N时最好。哈希阈值介于1/4和1/2之间。最后Modulo-N = (N-1)/N。
如果HRW的下一跳选择过程的复杂性是可以接受的,我们认为应该考虑将其作为哈希阈值的替代方案。例如,当保持每流状态,因此很少做出下一跳选择时,可能会出现这种情况。
然而,当HRW的下一跳选择被认为过于昂贵时,显而易见的选择是哈希阈值,因为它的性能与模n一样好,并且破坏性较小。
4 安全性问题
本文分析了用于实现ECMP路由决策的算法。这种分析并不直接影响互联网基础设施的安全性。
5 参考文献
[1] Thaler, D. and C. Hopps, "Multipath Issues in Unicast and Multicast", “单播和多播中的多路径问题”,RFC 2991, November 2000.
[2] Thaler, D. and C.V. Ravishankar, "Using Name-Based Mappings to Increase Hit Rates",“使用基于名称的映射来提高命中率”, IEEE/ACM Transactions on Networking, February 1998.
[3] Estrin, D., Farinacci, D., Helmy, A., Thaler, D., Deering, S., Handley, M., Jacobson, V., Liu, C., Sharma, P. and L. Wei, "Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification", “协议独立多播稀疏模式(PIM-SM):协议规范”,RFC 2362, June 1998.