TP钱包官方网站:交换机Eth-Trunk负载分担不均配置调整方法)

147小编

点击蓝字

2024

关注我们

前言

本文介绍如何判断设备是否存在Eth-Trunk负载分担不均,和当出现Eth-Trunk负载分担不均时,如何调整Eth-Trunk相关配置。

01

如何判断设备是否存在Eth-Trunk负载分担不均

通过display interface brief命令回显中InUti字段和OutUti字段可以查看接口最近300秒内的平均带宽使用率。

正常情况下,流量在Eth-Trunk负载分担后,会被分配到多条链路上传输。此时,各链路的带宽使用率不超过80%,各链路间带宽使用率相差不超过30%,可以有效提高业务的可靠性。Eth-Trunk负载分担不均是指流量通过负载分担后,仅被分配到一条或者某几条链路上传输,没有被分配到其他链路的情况。此时,通常存在单条链路的带宽使用率超过80%的情况,可能会影响业务正常运行。

需要特别说明的是,Eth-Trunk负载分担分为逐流负载分担和逐包负载分担。由于各流量中包含的数据大小不同,因此无论使用哪种负载分担方式,在现网中都无法保证负载分担后的流量绝对均匀。同时,逐包负载分担在接收数据包时有可能出现乱序的问题,而大部分业务要求保证数据包时序正常,因此在网络设计中推荐使用逐流负载分担。

02

负载分担不均定位思路

如果出现负载分担不均的情况,可以通过以下步骤进行确认和调整配置。

【1】判断Eth-Trunk负载分担不均的端口是否属于集群/堆叠系统中的跨框设备。

是,查看“集群/堆叠跨版负载分担推荐配置” 章节。

否,进入步骤2。

【2】判断设备上是否同时存在ECMP和Eth-Trunk负载分担。

是,查看“ECMP+Eth-Trunk二次负载分担推荐配置”章节。

否,进入步骤3。

【3】判断业务流量是否为非已知单播报文。判断方法是如果MAC表中没有该报文的目的MAC地址,则该报文为非已知单播报文。

负载分担方式只在流量的出接口上生效,因此如果抓包发现单一流量占比其他流量大很多时,需要优先修改上游设备出接口的流量路径,将流量较为均匀引导到本设备上,或者扩容本设备出接口,例如将GE口扩容成XGE口。

是,查看“非已知单播负载分担推荐配置” 章节。

否,查看 “已知单播推荐配置” 章节。

03

 集群/堆叠跨框负载分担推荐配置

在设备集群/堆叠情况下,为了保证流量的可靠传输,流量的出接口通常会设置为跨框Eth-Trunk接口。当集群/堆叠设备转发流量时,通过HASH算法可能会选择跨框的接口转发。由于集群/堆叠设备间线缆带宽有限,跨框转发流量会增加集群/堆叠设备之间的带宽承载压力,同时也降低了流量转发效率。为了解决这个问题,S系列交换机默认使能Eth-Trunk接口流量本地优先转发。此时出现的跨设备端口流量带宽使用率相差超过30%属于正常现象。

但如果此时设备Eth-Trunk的活动接口的带宽不足以承载本设备转发的流量,出现单条链路的带宽使用率超过80%的情况,就需要去使能Eth-Trunk接口流量本地优先转发功能,使本设备的部分流量通过其他设备的Eth-Trunk出接口转发,防止发生丢包。

如果业务对转发性能不敏感,虽然设备接口带宽足以承载转发流量,但是为了保证增强可靠性,防止设备链路故障时,该设备eth-trunk端口无法承载突发流量,也可以在Eth-Trunk视图下配置undo local-preference enable命令,去使能Eth-Trunk接口流量本地优先转发功能。

04

     ECMP+Eth-Trunk二次负载分担推荐配置

先使用ECMP将流量负载分担到多个Eth-Trunk口,再使用Eth-Trunk负载分担的场景中,首先要保证ECMP负载分担均匀,再根据下方步骤调整Eth-Trunk的负载分担配置。

【1】如果ECMP普通方式可以负载分担均匀,那么Eth-Trunk负载分担方式没有限制。此时参考其他Eth-Trunk负载分担不均原因排查。

【2】如果ECMP普通方式负载分担不均,必须采用增强方式才能负载分担均匀,那么Eth-Trunk优先选择普通方式。

【3】如果ECMP必须采用增强方式才能负载分担均匀,且Eth-Trunk采用普通负载分担不均,则Eth-Trunk采用选择增强方式。此时Eth-Trunk有效HASH因子需要比ECMP多。

【4】如果现网流量极不均匀,ECMP和Eth-Trunk都采用了增强方式,且配置了大量HASH因子仍存在负载分担不均的现象,则需要调整ECMP和Eth-Trunk的成员数。两者的成员数不能有公约数,例如两者成员数不能选择4和4、4和2、6和3,可以选择3和4、4和5。

05

非已知单播负载分担推荐配置

非已知单播包括未知单播、组播和广播。当非已知单播流量较大且不均匀时,可以在系统视图下配置unknown-unicast load-balance enhanced,应用增强模板进行负载分担。

框式交换机的配置为unknown-unicast load-balance enhanced lbid。部分型号或版本组合不能配置unknown-unicast load-balance enhanced lbid命令,否则可能会出现丢包或者多包的问题。

06

 已知单播推荐配置

已知单播可以优先尝试配置普通负载分担方式,再尝试配置增强负载分担方式。不同类型流量推荐的负载分担配置不同,需要根据表1-1进行选择,然后依次尝试所列出的方式。除非特殊说明,Eth-Trunk的端口数量需要配置成2的倍数。Eth-Trunk负载分担的基本配置方法请参见普通负载分担方式配置方法和增强型负载分担方式配置方法。查看报文中Protocol字段的方法请参见获取报文头方法。

表1-1 不同类型流量的负载分担推荐配置

图1-1 MPLS网络典型组网

表1-2 MPLS负载分担不均推荐负载分担方式

6.1  普通负载分担方式配置方法

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

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

【3】执行命令load-balance { dst-ip | dst-mac | src-ip | src-mac | src-dst-ip | src-dst-mac },根据表1 不同类型流量的负责分担推荐配置进行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-Trunk1s 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-3 display eth-trunk load-balance命令输出信息描述

6.2  增强型负载分担方式配置方法

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

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

【3】对于L2、IPv4、IPv6、MPLS报文,可以分别配置负载分担模式,以下步骤可不选、选择其一或多选,请根据表1 不同类型流量的负责分担推荐配置进行Eth-Trunk负载分担方式配置。

执行命令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-trunk trunk-id,进入Eth-Trunk接口视图。

【6】执行命令load-balance enhanced profile profile-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-Trunk1s 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地址和协议进行负载分担。

07

 获取报文头方法

当需要获取报文头中Portal字段判断报文类型,或者需要查看报文头中其他信息时,可以使用以下方法。

7.1  镜像方式获取报文头

即使流量大于观察接口带宽,无法采集到完整流量,也可以根据采集流量进行分析流量整体模型。当抓包设备无法承载大流量时,可以在交换机的观察口的系统视图下使用qos lr cir 100000 outbound命令配置限速。

下面这个示例显示了如何将的Eth-Trunk1流量镜像到GE 1/0/1。

<HUAWEI> system-view[HUAWEI] observe-port 1 interface GigabitEthernet 1/0/1[HUAWEI] interface eth-trunk 1[HUAWEI-Eth-Trunk1] port-mirroring to observe-port 1 outbound

7.2  Capture-packet方式获取报文头

如果现网实在不具备第一种镜像的条件,可以考虑在系统视图下使用capture-packet interface interface-typeinterface-number destinationterminal命令获取报文头。建议每次采集间隔一定时间,重复采集50组以上,最后将所有报文头数据汇总分析。

capture-packet方式获取报文头的样本相对较小,有时候并不能反映现网实际流量模型。

2024

扫二维码|关注我们

微信号|Networking_MG

关注公众号

加入“网络工程师”交流群

更多内容

1

割接、运维你真的有经验吗?一问便知

2

谁把无线路由器当Hub乱接啦?

3

线上故障排查全套路,拿走不谢!

4

割接!写脚本的重要性

5

网络常见的 9 大命令,非常实用!