交换机链路聚合的负载分担方式

admin 2022年12月20日02:59:59评论18 views字数 4798阅读15分59秒阅读模式

前言

本文介绍了链路聚合的转发原理、支持的负载分担方式,以及如何配置链路聚合的负载分担。

0背景

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

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

02

转发原理


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

交换机链路聚合的负载分担方式
图1-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。因此,在每Eth-Trunk中加入接口数为2、4或8个时,才能实现理想的负载分担。

交换机链路聚合的负载分担方式
图1-2 Eth-Trunk转发表示例

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

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

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

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

03

负载分担方式


用户可以根据流量模型设置不同的负载分担方式,流量中某个参数变化越频繁,选择对应负载分担方式的流量就越均衡。例如,在网络中,如果报文的IP地址变化较频繁,那么选择基于目的IP地址、源IP地址或源IP和目的IP地址的负载分担模式更有利于流量在各物理链路间合理的负载分担;如果报文的MAC地址变化较频繁,IP地址比较固定,那么选择基于目的MAC地址、源MAC地址或源MAC和目的MAC地址的负载分担模式更有利于流量在各物理链路间合理的负载分担。

交换机可以基于报文的以下参数进行负载分担:

  • 源MAC地址
  • 目的MAC地址
  • 源MAC地址和目的MAC地址
  • 源IP地址
  • 目的IP地址
  • 源IP地址和目的IP地址
  • VLAN、物理源端口等(对L2、IPv4、IPv6和MPLS报文进行增强型负载分担)
例如,DeviceA的一条TCP报文流的源IP地址为192.168.1.1(MAC地址:a-a-a,源端口号:50),目的IP地址为172.16.1.1(MAC地址:b-b-b,目的端口号:2000),另一条TCP报文流的源IP地址为192.168.1.1(MAC地址:a-a-a,源端口号:60),目的IP地址为10.1.1.1(MAC地址:c-c-c,目的端口号:2000)。如果在DeviceA上配置基于报文的源MAC地址进行负载分担,则报文出接口仅有1个;如果在DeviceA上配置基于报文的目的IP地址进行负载分担,则报文出接口有两个,去往不同目的IP的报文会从不同的出接口转发。

配置负载分担方式时,请注意:

  • 负载分担方式只在流量的出接口上生效,如果发现各入接口的流量不均衡,请修改上行出接口的负载分担方式。

  • 尽量将数据流通过负载分担在所有活动链路上传输,避免数据流仅在一条链路上传输,造成流量拥堵,影响业务正常运行。

例如,数据报文的目的MAC和IP地址只有一个,则应选择根据报文的源MAC和IP地址进行负载分担,如果选择根据报文的目的MAC和IP地址进行负载分担则会造成流量只在一条链路上传输,造成流量拥堵。

如果配置完成后出现负载分担流量不均的情况,请看下文。

04

 配置链路聚合的负载分担


链路聚合分担方式分为两种:普通负载分担方式和增强型负载分担方式。请根据需要选择其中一种方式进行配置。

4.1  配置普通负载分担方式

【1】执行命令system-view,进入系统视图。

【2】执行命令interface eth-trunktrunk-id,进入Eth-Trunk接口视图。

【3】执行命令load-balance { dst-ip | dst-mac | src-ip | src-mac | src-dst-ip | src-dst-mac },配置Eth-Trunk负载分担方式。

缺省情况下,Eth-Trunk接口的负载分担模式为src-dst-ip。

下面这个示例显示了如何在接口Eth-Trunk1下配置基于源MAC地址和目的MAC地址的负载分担方式,并查看是否配置成功。
<HUAWEI> system-view
[HUAWEI] interface eth-trunk 1
[HUAWEI-Eth-Trunk1] load-balance src-dst-mac
[HUAWEI-Eth-Trunk1] quit
[HUAWEI] display eth-trunk 1 load-balance
Eth-Trunk1's load-balance information:
Load-balance Configuration: SA-XOR-DA
Load-balance options used per-protocol:
L2 : Source XOR Destination MAC address, Vlan ID, Ethertype, Ingress-port
IPv4: Source XOR Destination MAC address, Vlan ID, Ethertype, Ingress-port
IPv6: Source XOR Destination MAC address, Vlan ID, Ethertype, Ingress-port
MPLS: Source XOR Destination MAC address, Vlan ID, Ethertype, Ingress-port
由上述信息可以看出,“Load-balance Configuration”字段显示为“SA-XOR-DA”,说明接口Eth-Trunk1的负载分担方式为基于源MAC地址和目的MAC地址进行负载分担。
交换机链路聚合的负载分担方式
表1-1 display eth-trunk load-balance命令输出信息描述

4.2  配置增强型负载分担方式

【1】执行命令system-view,进入系统视图。

【2】执行命令load-balance-profile profile-name,创建负载分担模板,并进入模板视图。设备全局公用一个负载分担模板。

【3】对于L2、IPv4、IPv6、MPLS报文,可以分别配置负载分担模式,以下步骤可不选、选择其一或多选,请根据网络转发报文的实际情况选择。

  • 执行命令l2 field [ dmac | l2-protocol | smac | sport | vlan ] *,配置指定负载分担模板中二层报文的负载分担模式。缺省情况下,二层报文的负载分担模式为smac、dmac。

  • 执行命令ipv4 field [ dip | l4-dport | l4-sport | protocol | sip | sport | vlan ] *,配置指定负载分担模板中IPV4报文负载分担模式。缺省情况下,IPv4报文负载分担模式为sip、dip。

  • 执行命令ipv6 field [ dip | l4-dport | l4-sport | protocol | sip | sport | vlan ] *,配置指定负载分担模板中IPV6报文负载分担模式。缺省情况下,IPv6报文负载分担模式为sip、dip。

  • 执行命令mpls field [ 2nd-label | 3rd-label | dip | dmac | l4-dport | l4-sport | protocol | sip | smac | sport | top-label | vlan ] *,配置指定负载分担模板中的MPLS报文负载分担模式。缺省情况下,MPLS报文负载分担模式为top-label、2nd-label。

【4】执行命令quit,返回系统视图。

【5】执行命令interface eth-trunktrunk-id,进入Eth-Trunk接口视图。

【6】执行命令load-balance enhanced profileprofile-name,应用配置的负载分担模板。

下面这个示例显示了如何创建一个负载分担模板a,并在模板中配置IPv6报文负载分担方式为sip、protocol,然后在接口Eth-Trunk1下应用此负载分担模板,最后查看是否配置成功。
<HUAWEI> system-view
[HUAWEI] load-balance-profile a
[HUAWEI-load-balance-profile-a] ipv6 field sip protocol
[HUAWEI-load-balance-profile-a] quit
[HUAWEI] interface eth-trunk 1
[HUAWEI-Eth-Trunk1] load-balance enhanced profile a
[HUAWEI-Eth-Trunk1] quit
[HUAWEI] display eth-trunk 1 load-balance
Eth-Trunk1's load-balance information:
Load-balance Configuration: ENHANCED
Load-balance enhanced profile: a
Load-balance options used per-protocol:
L2 : Source XOR Destination MAC address
IPv4: Source XOR Destination IP address
IPv6: Source IP address, IP protocol
MPLS: Top XOR Second label
由上述信息可以看出,“Load-balance Configuration”字段显示为“ENHANCED”,说明接口Eth-Trunk1下配置了增强负载分担方式;“Load-balance options used per-protocol”中的“IPv6”字段显示为“Source IP address, IP protocol”,说明IPv6报文负载分担方式为基于源IP地址和协议进行负载分担

如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell
「 超详细 | 分享 」手把手教你如何进行内网渗透
神兵利器 | siusiu-渗透工具管理套件
一款功能全面的XSS扫描器
实战 | 一次利用哥斯拉马绕过宝塔waf
BurpCrypto: 万能网站密码爆破测试工具
快速筛选真实IP并整理为C段 -- 棱眼
自动探测端口顺便爆破工具t14m4t
渗透工具|无状态子域名爆破工具(1秒扫160万个子域)

查看更多精彩内容,还请关注橘猫学安全:
每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“再看

原文始发于微信公众号(橘猫学安全):交换机链路聚合的负载分担方式

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月20日02:59:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   交换机链路聚合的负载分担方式https://cn-sec.com/archives/1474009.html

发表评论

匿名网友 填写信息