欢迎来到锐康科技官方网站

0371-86112215/6/7/8
关注我们:

媒体报道

技术盛宴 | 数据中心网络等价多路径(ECMP)技术应用研究

文章出处: 人气:发表时间:2018/9/4 15:46:02

微信图片_20180821163618.gif


目前数据中心网络广泛应用的Fabric架构中会应用大?#24247;腅CMP(Equal-Cost Multipath Routing,简写ECMP),其?#35834;?#20027;要体现在可以提高网络冗余性和可靠性,同时也提高了网络资源利用率;大?#24247;腅CMP链路在特定场景下运行过程中会引发其他问题。例如,当?#31243;鮁CMP链路断开后,ECMP组内所有链路流量都会被重新HASH,在有状态的服务器区域(如LVS)中将导致雪崩现象,又或者会出现多级ECMP的HASH极化导致链路?#31561;?#31561;。


本文将结合ECMP运行原理针对以上问题进行分析,并?#25945;?#22914;何优化ECMP的运用。


等价多路径路由


等价多路径路由,即存在多条到达同一个?#24247;?#22320;址的相等开销的路径。当设备支持等价路由时,发往该?#24247;腎P 或者?#24247;?#32593;段的三层转发流量就可以通过不同的路?#26007;值#迪?#32593;络链路的负载均衡,并在链路出现故障时,?#36842;?#24555;速切换。


ECMP?#36842;?#27969;程


微信图片_20180904154311.png

▲图例1:ECMP流程图


步骤一:HASH因子的选择

首先数据报文转发查询路由表,确认存在多个等价路由,再根据当前用户配置的流量均衡算法,提取参与 HASH 计算的关键字段,即HASH因子。ECMP 流量均衡可选择的 HASH 因子如下表:


微信图片_20180904154318.png

▲图表1:流量均衡模式对应HASH因子表


注:因ECMP为三层转发,即使配置基于源MAC、?#24247;腗AC或者源目MAC作为HASH因子,系统也会默认选择源IP作为HASH因子。另外,在选择提取HASH因子为?#24247;腎P时,系统会默认选择源目IP作为HASH因子。


步骤二:HASH计算

基于步骤一提取的 HASH 因子,根据 HASH 算法进行计算,得出相应的 HASH lb-key(load-balance key)。 ECMP 流量均衡支持的 HASH 算法包括异或(XOR)、CRC、 CRC+扰码等。


HASH算法有很多?#37073;?#25105;们以XOR算法为例做出?#24471;鰲OR运算法则包括两个输入比特位相同时为0,不同则为1。HASH因子不同,运算结果也不尽相同。


1

HASH因子为IP address source(SIP)

  • SIP XOR 0 ,得出一个32bit的数值a;

  • 将数值a再进行高16bit和低16bit做XOR计算得出16bit数值b;

  • 数值b的15~12bit与11~8bit再做XOR计算,得出4bit数值c;

  • 数值c替换数值b的11~8bit,得出数值d;

  • 数值d截取低位10bit即为lb key。

2

HASH因子为SIP+DIP/DIP

  • DIP XOR SIP ,得出一个32bit的数值a;

  • 剩余运算步骤与SIP运算一致。

3

HASH因子为SIP+DIP+SP+DP

  • SIP XOR DIP得到32bit的数值a;

  • 数值a的低16bit XOR SP 得到32bit的数值b;

  • 数值b的低 16bit XOR DP 得到 32bit 的数值c;

  • 数值c的高16bit XOR 低16bit得到16bit的数值d;

  • 数值d的15~12bit XOR 11~8bit,得到4bit的数值e;

  • 数值e替换数值d的11~8bit,得出数值f;

  • 数值f截取低10bit,即为lb-key。


步骤三:确认转发下一跳

数据报文经过路由查表后找到对应ECMP 基值(base-ptr),根据 HASH 因子通过 HASH 算法计算获得 HASH lb-key 后,进行 ECMP 下一跳链路数(Member-count)求余计算,再与ECMP基?#21040;?#34892;加法运算得出转发下一跳index,即确定了下一跳转发路由。

计算公式:Next-hop =(lb-key % Member-count)+ base-ptr


上述流程为ECMP常规转发流程,但在特定网络环境下运行过程中就会出现问题,接下来继续分析数据中心网络中ECMP遇到的2个常见问题


问题一 

      单链路故?#31995;?#33268;ECMP组所有数据流被重新HASH计算

微信图片_20180904160315.png

当Leaf交换机发送6条数据流到LVS服务器,Leaf先进行HASH运算负载均衡到每一台LVS服务器上,正常流量转发如图例2所示:


微信图片_20180904154345.png

▲图例2:ECMP转发图


当?#31243;↙VS服务器网卡出现故障或者链路出现故障,Leaf交换机会将ECMP组内数据流将重新HASH计算,再进行负载均衡到剩余有效链?#39134;希?#36827;而导致TCP会话断开,发生雪崩现象,例如一些支付类业务,同一个用户的一次支付过程会调用多个业务服务,业务侧要求一次支付的过程都落在同一个处理服务器上,当出?#20540;?#26465;链路故障后不仅影响该链路所在LVS承载的用户,同时还影响该ECMP组下其他LVS承载的用户,如图例3所示:


微信图片_20180904154350.png

▲图例3:故障后ECMP转发图


优化方案:

为避免单台LVS服务器故障或者单链路故?#31995;?#33268;整个ECMP组内流量全部被重新HASH,ECMP可采用弹性HASH算法来优化。采用弹性HASH算法后,仅将故障链路的流量重新HASH到其他活跃链?#39134;希?#32780;非故障链?#39134;系?#25968;据流则无需改变下一跳。?#36842;中?#26524;如图例4所示:


微信图片_20180904154354.png

▲图例4:ECMP弹性HASH算法


弹性HASH具体?#36842;?#21407;理:


微信图片_20180904154359.png

▲图例5:弹性HASH流程


在交换机上生成一张索引表(RH Flow Set Table),用于存放相关索引值对应下一跳路由地址。数据报文经过路由查表后找到对应ECMP 基值,提取HASH因子进行HASH运算,在HASH Key与ECMP数量取余数时无论是否出现故障链路,均以最初数量进行取余运算,因此运算结果一致,非故障链路数据依?#35805;?#29031;原有链路转发。如下图中,链路3故障后软件CPU将及?#22791;?#26032;RH flow table,将失效链路用正常链路均匀替换。


微信图片_20180904154404.jpg

▲图例6:弹性HASH索引表替换示意图


问题二 HASH极化问题

微信图片_20180904160315.png

如图例7所示,在Leaf设备和Spine设备均采用上联链路数为偶数且ECMP算法及HASH因子一致的情况下,数据流在Leaf设备上经过一次HASH计算,将数据流负载?#20540;?#21040;?#25945;⊿pine上,均衡后效果为数据流1、2、3转发至Spine-1,数据流4、5、6转发至Spine-2,Spine再进行HASH计算负载?#20540;?#21040;?#25945;―CI核心上,因在Spine层采用的HASH算法与Leaf的HASH算法一致,最终Spine-1的数据流1、2、3均转发至DCI-1上,未负载?#20540;?#21040;DCI-2上任何数据流,而Spine-2的数据流4、5、6均转发至DCI-2上,未负载?#20540;?#21040;DCI-1上任何数据流,同理Leaf-2发送的数据流也是如此,进而产生HASH极化问题,导致SPINE和DCI之间链路有一条?#38556;校?#26497;大的浪费了网络资源,甚至会导致流量?#31561;?/span>

微信图片_20180904154412.png

▲图例7:HASH极化


优化方案:

●  同厂商Leaf设备和Spine设备均采用相同上联链路数场景下,应避免在相邻的?#25945;?#35774;备上使用相同的负载均衡算法;

●  设备在运行HASH计算时,除传统的五元组外,可以增添扰动因子,避免HASH计算结果相同。


HASH扰动的计算过程中HASH因子仍然正常提取,再增加用户?#36828;?#20041;随机扰动因子,经过HASH算法运算时,不同交换机HASH计算结果就将不一致,以达到避免HASH极化现象的出现。


微信图片_20180904154416.png

▲图例8:HASH扰动计算过程


动态负载均衡技术?#36842;?/strong>


在数据中心网络中,突发流量多,并且存在大象流和老鼠流并存现象,本文所描述的基于数据流五元组的HASH算法,并结合HASH扰动因子技术?#36842;?#27969;量负载均衡,但无法?#36842;?#22823;象流和老鼠流并存的网络中多链路之间的流量负载均衡。


锐捷网络新一代25G数据中心网络解决方案中所采用的最新芯片,已能够支持DLB(Dynamic load balance,动态链路负载)特性,可基于流量负载状态?#36842;?#21160;态的HASH负载均衡。具体?#36842;?#26041;法是交换机为每条进行负载均衡的数据流创建一个流表,基于流表记录流?#23458;?#35745;信息,根据流?#23458;?#35745;信息动态调整链路负载均衡。

版权所有: 豫ICP备05055528号、技术支?#37073;?a href="http://www.hnit.wang/" target="_blank">航迪科技

福建麻将游戏 福建体彩26选5 北京时时全天计划 河北2019高考分数线 试机号后杀一码 黑龙江时时分析 2019年481开奖结果 任选九场新浪投注 黑龙江时时10分钟 时时 好运彩彩票网 时时彩改欢乐生肖 老时时复式组选 辽宁十一选五走势图 黑龙江时时图表10 海南体育彩票环岛赛 内蒙古时时开奖结果