端口聚合与负载均衡

数据流是指一组具有某个或某些相同属性的数据包。这些属性有源MAC地址、目的MAC地址、源IP地址、目的IP地址、TCP/UDP的源端口号、TCP/UDP的目的端口号等。

对于负载分担,可以分为逐包的负载分担和逐流的负载分担。

逐包的负载分担
在使用Eth-Trunk转发数据时,由于聚合组两端设备之间有多条物理链路,就会产生同一数据流的第一个数据帧在一条物理链路上传输,而第二个数据帧在另外一条物理链路上传输的情况。这样一来同一数据流的第二个数据帧就有可能比第一个数据帧先到达对端设备,从而产生接收数据包乱序的情况。

逐流的负载分担
这种机制把数据帧中的地址通过HASH算法生成HASH-KEY值,然后根据这个数值在Eth-Trunk转发表中寻找对应的出接口,不同的MAC或IP地址HASH得出的HASH-KEY值不同,从而出接口也就不同,这样既保证了同一数据流的帧在同一条物理链路转发,又实现了流量在聚合组内各物理链路上的负载分担。逐流负载分担能保证包的顺序,但不能保证带宽利用率。

转发原理

如图1所示,Eth-Trunk位于MAC与LLC子层之间,属于数据链路层。

图1 Eth-Trunk接口在以太网协议栈的位置

Eth-Trunk模块内部维护一张转发表,这张表由以下两项组成。

HASH-KEY值

HASH-KEY值是根据数据包的MAC地址或IP地址等,经HASH算法计算得出。

接口号

Eth-Trunk转发表表项分布和设备每个Eth-Trunk支持加入的成员接口数量相关,不同的HASH-KEY值对应不同的出接口。

例如,某设备每Eth-Trunk支持最大加入接口数为8个,将接口1、2、3、4捆绑为一个Eth-Trunk接口,此时生成的转发表如图2所示。其中HASH-KEY值为0、1、2、3、4、5、6、7,对应的出接口号分别为1、2、3、4、1、2、3、4。

图2 Eth-Trunk转发表示例

Eth-Trunk模块根据转发表转发数据帧的过程如下:

Eth-Trunk模块从MAC子层接收到一个数据帧后,根据负载分担方式提取数据帧的源MAC地址/IP地址或目的MAC地址/IP地址。

根据HASH算法进行计算,得到HASH-KEY值。

Eth-Trunk模块根据HASH-KEY值在转发表中查找对应的接口,把数据帧从该接口发送出去。

负载分担方式

为了避免数据包乱序情况的发生,Eth-Trunk采用逐流负载分担的机制,其中如何转发数据则由于选择不同的负载分担方式而有所差别。

负载分担的方式主要包括以下几种,用户可以根据具体应用选择不同的负载分担方式。

根据报文的源MAC地址进行负载分担
根据报文的目的MAC地址进行负载分担
根据报文的源IP地址进行负载分担
根据报文的目的IP地址进行负载分担
根据报文的源MAC地址和目的MAC地址进行负载分担
根据报文的源IP地址和目的IP地址进行负载分担
配置负载分担方式时,请注意:

负载分担方式只在流量的出接口上生效,如果发现各入接口的流量不均衡,请修改上行出接口的负载分担方式。
尽量将数据流通过负载分担在所有活动链路上传输,避免数据流仅在一条链路上传输,造成流量拥堵,影响业务正常运行。
例如,数据报文的目的MAC和IP地址只有一个,则应选择根据报文的源MAC和IP地址进行负载分担,如果选择根据报文的目的MAC和IP地址进行负载分担则会造成流量只在一条链路上传输,造成流量拥堵。
————————————————
版权声明:本文为CSDN博主「一杯酸奶牛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42342531/article/details/112472167

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值