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

时间: 2024-03-30 15:25:09 |   作者: ky体育app官方网址最新版

  目前数据中心网络大范围的应用的Fabric架构中会应用大量的ECMP(Equal-CostMultipathRouting,简写ECMP),其优点大多数表现在能大大的提升网络冗余性和可靠性,同时也提高了网络资源利用率;大量的ECMP链路在特定场景下运行过程中会引发别的问题。例如,当某条ECMP链路断开后,ECMP组内所有链路流量都会被重新HASH,在有状态的服务器区域(如LVS)中将导致雪崩现象,又或者会出现多级ECMP的HASH极化导致链路拥塞等。本文将结合ECMP运行原理针对以上问题做多元化的分析,并探讨如何优化ECMP的运用。

  等价多路径路由,即存在多条到达同一个目的地址的相等开销的路径。当设备支持等价路由时,发往该目的IP或者目的网段的三层转发流量就能够最终靠不同的路径分担,实现网络链路的负载均衡,并在链路发生故障时,实现快速切换。

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

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

  HASH算法有很多种,我们以XOR算法为例做出说明。XOR运算法则为两个输入比特位相同时为0,不同则为1。HASH因子不同,运算结果也不尽相同。

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

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

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

  为避免单台LVS服务器故障或者单链路故障导致整个ECMP组内流量全部被重新HASH,ECMP可采用弹性HASH算法来优化。采用弹性HASH算法后,仅将故障链路的流量重新HASH到其他活跃链路上,而非故障链路上的数据流则无需改变下一跳。实现效果如图例4所示:

  在交换机上生成一张索引表(RHFlowSetTable),用于存放相关索引值对应下一跳路由地址。数据报文经过路由查表后找到对应ECMP基值,提取HASH因子进行HASH运算,在HASHKey与ECMP数量取余数时无论是不是出现故障链路,均以最初数量进行取余运算,因此运算结果一致,非故障链路数据依然按照原有链路转发。如下图中,链路3故障后软件CPU将及时来更新RHflowtable,将失效链路用正常链路均匀替换。

  如图例7所示,在Leaf设备和Spine设备均采用上联链路数为偶数且ECMP算法及HASH因子一致的情况下,数据流在Leaf设备上经过一次HASH计算,将数据流负载分担到两台Spine上,均衡后效果为数据流1、2、3转发至Spine-1,数据流4、5、6转发至Spine-2,Spine再进行HASH计算负载分担到两台DCI核心上,因在Spine层采用的HASH算法与Leaf的HASH算法一致,最终Spine-1的数据流1、2、3均转发至DCI-1上,未负载分担到DCI-2上任何数据流,而Spine-2的数据流4、5、6均转发至DCI-2上,未负载分担到DCI-1上任何数据流,同理Leaf-2发送的数据流也是如此,进而产生HASH极化问题,导致SPINE和DCI之间链路有一条空闲,极大的浪费了网络资源,甚至会导致流量拥塞。

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

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

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

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

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

  感谢您关注锐捷网络技术干货文章!现诚邀您参与有奖调研,您宝贵的意见和建议将让我们在技术探索与分享上持续精进。

上一篇:电度表节电器电路图 下一篇:新疆计量院展开北疆范围内油库流量计在线计量检定作业

返回