searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

数据中心网络HASH技术演进

2024-06-17 04:09:06
96
0

Hash基本原理

为了提升业务弹性扩容能力和可靠性,数据中心通常会采用CLOS架构的网络结构。这种结构当中存在二层LACP等价路径、三层ECMP等价路径。

而Hash一般称为哈希散列,是通过交换机或路由器的芯片内置算法将一段任意的输入(通常是一个非常大的集合)转化成一个固定长度输出(通常是一个小的集合)。在网络架构中,这种方法可以用来解决多个等价路径上的负载均衡问题,并由此提升数据中心内的资源利用率。

某款ASIC芯片的Hash流程简示:

ASIC提取报文字段值以及转发端口等信息,由Hash多项式计算出Hash值,再映射到等价路径下一跳。

虽然总体原理相同,但不同的厂商的不同设备均有着不同的Hash实现方法。下面我们就结合Hash的发展阶段,以新华三交换机操作系统为例,来为大家逐一介绍Hash的五种实现方法,以及更高级的智能Hash。

Hash的进化与五种实现方法

Hash一直随着网络应用的发展而进化,因此,Hash也在不同的阶段出现了五种不同的实现方法。那么下面就让我们来逐一解析。

01、逐包 Hash与逐流Hash?

逐包Hash转发,不考虑同一特征的流量转发路径的一致性,把所有报文都逐个Hash、转发,这样能够做到更均匀的负载分担。但是,在上下游网络组网结构不均衡、时延不均衡的环境中,逐包Hash的数据包会经过不同路径到达目的地,不同路径的时延抖动差异较大,会造成接收方的报文到达乱序,从而影响通信的效率。

而逐流Hash会把同一条流特征的流量(例如五元组:源IP地址、源端口、目的IP地址、目的端口、传输层协议类型),分发到固定一条路径,避免了乱序问题;如果设备Hash转发的N条流的带宽占比没有失衡,则逐流Hash总体是平均的负载分担;但是在大象流和老鼠流的场景,大象流具有少量的流数量却占用大量的带宽,Hash不均衡。

02、内层Hash

对于GRE、VxLAN等封装报文的Hash,封装的外层字段的信息是固定的,例如SIP/DIP就是隧道的起始设备/终结设备的Loopback IP,不变化,不利于Hash;所以需要设备具有刺探到内层字段(封装之前的原始报文)的能力,通过内层字段进行Hash,保证Hash的均衡性。

03、Hash极化

多组流量经过两次或两次以上的Hash,会出现后续转发设备Hash极化、流量只走一半链路的极化现象,这种现象往往出现在第一次Hash和第二次Hash的设备极为类似(例如同一芯片型号、同样的Hash算法)的情况下。

如下图,第一次Hash时,A设备通过Hash值得mod 2动作把流量分成了两类:Hash值分为为奇数、偶数。到了第二次Hash时,B设备处理的流量的Hash值全部都为奇数,所以全部流量都走左侧链路,留下右侧链路空置。同样,C设备也出现极化,把所有流量都Hash到了右侧链路,留下左侧链路空置。

对于Hash极化现象,通常的处理办法是调整Algorithm算法ash因子,只需微调便可避免第一次和第二次的Hash结果雷同。

 

04、对称Hash

对于网络设备,对称Hash指的是:对于同一个业务的来回双向流量,予以分配同宿同源的转发端口。

在某些场景下,例如交换机旁挂两台FW对流量进行安全防护,交换机根据五元组Hash分发流量给两台FW,在两台FW各自为自己负责的流量(占总流量的一半)建立了session;而返程流量到达交换机时将被再次Hash分发,如若返程Hash分发与去程Hash分发不一致(不对称),则FW上会重复建立session,不仅浪费了FW的资源,而且对流量的安全防护做得不够准确。所以在该场景下,需要启用“对称Hash”以保证双向流量走相同的链路。

 

 

05、Hash的弹性自适应能力

在某些场景例如LVS集群场景,可能存在128台服务器与交换机建立等价路由(通过OSPF/BGP协议),业务流量从交换机分发到128台服务器,各台服务器维护了各自流量的session信息,需要稳定的Hash,避免Hash路径频繁变更导致session频繁切换服务器。

采用普通Hash算法时,当等价路径的其中一条或者多条路径失效时,会对所有流量进行重新Hash计算、流量分发,会导致LVS集群业务session全部重建,业务受影响极大,效果见下图。

 

采用弹性自适应Hash算法时,当等价路径的其中一条或者多条路径失效时,只将失效路径上的业务流量将被重新Hash分发给剩余可用路径,而可用路径上转发的业务流量不做变更,以保持业务的连续性。

等价路由增强模式:Enhanced模式下,每个等价组具有128个下一跳,用实际的下一跳轮流填写这128个寄存器字段,某个下一跳失效后,它的位置被其他下一跳轮流替代;效果见下图,链路1失效后,它的位置由链路2/3/4轮流填补上。

 

面向未来的智能Hash

智能Hash实现的关键在于DLB(Dynamic load balance,动态负载均衡)。DLB突破传统静态Hash机理的限制,通过引入时间戳、实时负载度量(端口带宽负载、队列大小)因子,在时间、带宽空间两个维度优化了负载均衡效果,提供了动态、智能的Hash机制。

 

超过flowset-inactive-time老化时间周期,如若未有流量维持该Flowset有效,则该Flowset记录被老化,即使后续再有该Flowset相同特征的流量到来,设备认为是一个新的流,创建新的Flowset,重新到负载较轻的路径。

0条评论
作者已关闭评论
r****n
2文章数
0粉丝数
r****n
2 文章 | 0 粉丝
r****n
2文章数
0粉丝数
r****n
2 文章 | 0 粉丝

数据中心网络HASH技术演进

2024-06-17 04:09:06
96
0

Hash基本原理

为了提升业务弹性扩容能力和可靠性,数据中心通常会采用CLOS架构的网络结构。这种结构当中存在二层LACP等价路径、三层ECMP等价路径。

而Hash一般称为哈希散列,是通过交换机或路由器的芯片内置算法将一段任意的输入(通常是一个非常大的集合)转化成一个固定长度输出(通常是一个小的集合)。在网络架构中,这种方法可以用来解决多个等价路径上的负载均衡问题,并由此提升数据中心内的资源利用率。

某款ASIC芯片的Hash流程简示:

ASIC提取报文字段值以及转发端口等信息,由Hash多项式计算出Hash值,再映射到等价路径下一跳。

虽然总体原理相同,但不同的厂商的不同设备均有着不同的Hash实现方法。下面我们就结合Hash的发展阶段,以新华三交换机操作系统为例,来为大家逐一介绍Hash的五种实现方法,以及更高级的智能Hash。

Hash的进化与五种实现方法

Hash一直随着网络应用的发展而进化,因此,Hash也在不同的阶段出现了五种不同的实现方法。那么下面就让我们来逐一解析。

01、逐包 Hash与逐流Hash?

逐包Hash转发,不考虑同一特征的流量转发路径的一致性,把所有报文都逐个Hash、转发,这样能够做到更均匀的负载分担。但是,在上下游网络组网结构不均衡、时延不均衡的环境中,逐包Hash的数据包会经过不同路径到达目的地,不同路径的时延抖动差异较大,会造成接收方的报文到达乱序,从而影响通信的效率。

而逐流Hash会把同一条流特征的流量(例如五元组:源IP地址、源端口、目的IP地址、目的端口、传输层协议类型),分发到固定一条路径,避免了乱序问题;如果设备Hash转发的N条流的带宽占比没有失衡,则逐流Hash总体是平均的负载分担;但是在大象流和老鼠流的场景,大象流具有少量的流数量却占用大量的带宽,Hash不均衡。

02、内层Hash

对于GRE、VxLAN等封装报文的Hash,封装的外层字段的信息是固定的,例如SIP/DIP就是隧道的起始设备/终结设备的Loopback IP,不变化,不利于Hash;所以需要设备具有刺探到内层字段(封装之前的原始报文)的能力,通过内层字段进行Hash,保证Hash的均衡性。

03、Hash极化

多组流量经过两次或两次以上的Hash,会出现后续转发设备Hash极化、流量只走一半链路的极化现象,这种现象往往出现在第一次Hash和第二次Hash的设备极为类似(例如同一芯片型号、同样的Hash算法)的情况下。

如下图,第一次Hash时,A设备通过Hash值得mod 2动作把流量分成了两类:Hash值分为为奇数、偶数。到了第二次Hash时,B设备处理的流量的Hash值全部都为奇数,所以全部流量都走左侧链路,留下右侧链路空置。同样,C设备也出现极化,把所有流量都Hash到了右侧链路,留下左侧链路空置。

对于Hash极化现象,通常的处理办法是调整Algorithm算法ash因子,只需微调便可避免第一次和第二次的Hash结果雷同。

 

04、对称Hash

对于网络设备,对称Hash指的是:对于同一个业务的来回双向流量,予以分配同宿同源的转发端口。

在某些场景下,例如交换机旁挂两台FW对流量进行安全防护,交换机根据五元组Hash分发流量给两台FW,在两台FW各自为自己负责的流量(占总流量的一半)建立了session;而返程流量到达交换机时将被再次Hash分发,如若返程Hash分发与去程Hash分发不一致(不对称),则FW上会重复建立session,不仅浪费了FW的资源,而且对流量的安全防护做得不够准确。所以在该场景下,需要启用“对称Hash”以保证双向流量走相同的链路。

 

 

05、Hash的弹性自适应能力

在某些场景例如LVS集群场景,可能存在128台服务器与交换机建立等价路由(通过OSPF/BGP协议),业务流量从交换机分发到128台服务器,各台服务器维护了各自流量的session信息,需要稳定的Hash,避免Hash路径频繁变更导致session频繁切换服务器。

采用普通Hash算法时,当等价路径的其中一条或者多条路径失效时,会对所有流量进行重新Hash计算、流量分发,会导致LVS集群业务session全部重建,业务受影响极大,效果见下图。

 

采用弹性自适应Hash算法时,当等价路径的其中一条或者多条路径失效时,只将失效路径上的业务流量将被重新Hash分发给剩余可用路径,而可用路径上转发的业务流量不做变更,以保持业务的连续性。

等价路由增强模式:Enhanced模式下,每个等价组具有128个下一跳,用实际的下一跳轮流填写这128个寄存器字段,某个下一跳失效后,它的位置被其他下一跳轮流替代;效果见下图,链路1失效后,它的位置由链路2/3/4轮流填补上。

 

面向未来的智能Hash

智能Hash实现的关键在于DLB(Dynamic load balance,动态负载均衡)。DLB突破传统静态Hash机理的限制,通过引入时间戳、实时负载度量(端口带宽负载、队列大小)因子,在时间、带宽空间两个维度优化了负载均衡效果,提供了动态、智能的Hash机制。

 

超过flowset-inactive-time老化时间周期,如若未有流量维持该Flowset有效,则该Flowset记录被老化,即使后续再有该Flowset相同特征的流量到来,设备认为是一个新的流,创建新的Flowset,重新到负载较轻的路径。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0