1.什么是Eth-trunk?为什么需要Eth-trunk? - 华为 (huawei.com)
2.故障案例:Eth-Trunk转发不通 - NE40E 维护宝典 - 华为 (huawei.com)
3.Eth-trunk 配置不对称导致部分业务不通 - 华为 (huawei.com)
一、什么是Eth-trunk
Eth-trunk通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性。
为什么需要Eth-trunk
随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出越来越高的要求。在传统技术中,常用更换高速率的单板或更换支持高速率单板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够灵活。
Eth-Trunk又叫以太网链路聚合Eth-Trunk,它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路。达到增加链路带宽的目的。在实现增大带宽目的的同时,Eth-Trunk采用备份链路的机制,可以有效的提高设备之间链路的可靠性。每个聚合组唯一对应着一个逻辑接口,这个逻辑接口称之为链路聚合接口或Eth-Trunk接口。链路聚合接口可以作为普通的以太网接口来使用,与普通以太网接口的差别在于:转发的时候链路聚合组需要从成员接口中选择一个或多个接口来进行数据转发。
Eth-Trunk链路与Eth-Trunk接口、成员接口和成员链路的关系示意图
Eth-Trunk位于MAC与LLC子层之间,属于数据链路层。Eth-Trunk模块内部维护一张转发表,主要由以下两个组成:
HASH-KEY值:根据数据包的MAC地址或IP地址等,经HASH算法计算得出。
- 接口号:Eth-Trunk转发表表项分布和设备每个Eth-Trunk支持加入的成员接口数量相关,不同的HASH-KEY值对应不同的出接口。
Eth-Trunk模块根据转发表转发数据帧的过程如下:
- Eth-Trunk模块从MAC子层接收到一个数据帧后,根据负载分担方式提取数据帧的源MAC地址/IP地址或目的MAC地址/IP地址。
- 根据HASH算法进行计算,得到HASH-KEY值。
- Eth-Trunk模块根据HASH-KEY值在转发表中查找对应的接口,把数据帧从该接口发送出去。
Eth-trunk的优势
Eth-Trunk主要有以下优势:
- 增加带宽:链路聚合接口的最大带宽可以达到各成员接口带宽之和。
- 提高可靠性:当某条活动链路出现故障时,流量可以切换到其他可用的成员链路上,从而提高链路聚合接口的可靠性。
- 负载分担:在一个链路聚合组内,可以实现在各成员活动链路上的负载分担。
- 应用简单:Eth-trunk的作用域仅在相邻设备之间,和整个网络结构无关,应用更简单。
Eth-Trunk示意图
Eth-trunk有哪些模式
根据是否启用链路聚合控制协议LACP(Link Aggregation Control Protocol),Eth-trunk的模式分为手工模式和LACP模式。
- 手工模式Eth-Trunk
手工模式Eth-Trunk,Eth-Trunk的建立、成员接口的加入由手工配置,没有链路聚合控制协议LACP的参与。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中平均分担流量。当需要在两个直连设备之间提供一个较大的链路带宽,而其中一端或两端设备都不支持LACP协议时,可以配置手工模式Eth-Trunk。
DeviceA与DeviceB之间创建Eth-Trunk,手工模式下三条活动链路都参与数据转发并分担流量。当一条链路故障时,故障链路无法转发数据,链路聚合组自动在剩余的两条活动链路中分担流量。
手工模式Eth-Trunk - LACP模式Eth-Trunk
LACP是基于IEEE802.3ad标准的一种实现链路动态聚合与解聚合的协议,以供设备根据自身配置自动形成聚合链路并启动聚合链路收发数据,LACP模式就是采用LACP的一种链路聚合模式。聚合链路形成以后,LACP负责维护链路状态,在聚合条件发生变化时,自动调整链路聚合。
DeviceA与DeviceB之间创建Eth-Trunk,需要将DeviceA上的四个接口与DeviceB捆绑成一个Eth-Trunk。由于错将DeviceA上的一个接口与DeviceC相连,这将会导致DeviceA向DeviceB传输数据时可能会将本应该发到DeviceB的数据发送到DeviceC上。而手工模式的Eth-Trunk不能及时检测到此故障。
如果在DeviceA和DeviceB上都启用LACP协议,经过协商后,Eth-Trunk就会选择正确连接的链路作为活动链路来转发数据,从而DeviceA发送的数据能够正确到达DeviceB。
Eth-Trunk错连示意图
手工模式Eth-Trunk和LACP模式Eth-Trunk的区别如下所示。
表1-1 链路聚合模式比较
维度 | 手工模式 | LACP模式 |
---|---|---|
Eth-Trunk的建立方式 | Eth-Trunk接口的创建、成员接口的加入由手工配置,没有链路聚合控制协议的参与。 | Eth-Trunk接口的创建、成员接口的加入由手工配置,LACP协议参与链路动态调整,负责链路状态维护。在聚合条件发生变化时,自动调整或解散链路聚合。 |
设备是否需要支持LACP协议 | 不需要 | 需要 |
数据转发 | 正常情况下,所有链路都是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在剩余的活动链路中分担流量。 | 正常情况下,部分链路是活动链路。所有活动链路均参与数据转发。如果某条活动链路故障,链路聚合组自动在非活动链路中选择一条链路作为活动链路,参与数据转发的链路数目不变。 |
检测故障 | 只能检测到同一聚合组内的成员链路有断路等故障,无法检测到链路断连、错连等故障。 | 不仅能够检测到同一聚合组内的成员链路有断路等故障,还可以检测到链路故障、链路错连等故障。 |
Eth-trunk的应用场景
数据中心的接入层交换机DeviceB和DeviceC接入到核心层交换机DeviceA,且DeviceB和DeviceC连接很多用户,DeviceA经出口路由器与数据中心外部网络互通。随着用户规模的不断扩大,用户之间的互访更为频繁,DeviceA和DeviceB、DeviceA和DeviceC之间的链路要有足够的带宽来承载不同用户的互访,并且链路要具备一定的可靠性。为保证DeviceA和DeviceB、DeviceA和DeviceC之间的链路带宽及可靠性,可以在它们之间分别建立Eth-Trunk1和Eth-Trunk2。
链路聚合组组网图
Eth-Trunk的工作模式根据以下两种情况选择:
二、Eth-trunk 配置不对称导致部分业务不通
问题描述
版本信息:汇聚交换机S5700 Software Version V100R006C00SPC800
接入交换机S3300 Software Version V100R006C00SPC800
组网概述:如图中所示,SW1为两台S5700堆叠用于替换原有的单S5300汇聚,SW2为S3300,通过两个上行口分别和SW1上主背板对应端口
聚合。聚合方式为手工负载分担模式。
故障现象:设备替换完成后,上电检测,用PC接入时业务正常,可以获得IP地址,可以PING通网关和服务器;登录桌面云时,用户无法登录虚拟机。
告警信息
交换机上所有端口指示灯均为正常。
处理过程
1.分别查看汇聚交换机和接入交换机对应的端口下配置,发现汇聚交换机上有一个端口没有加入Eth-trunk。
2.清除汇聚交换机未加入Eth-trunk端口下配置,加入Eth-trunk,PC登录桌面云虚拟机正常,故障消失,问题解决。
根因
1.汇聚交换机其他下挂接入交换机所有业务均正常,且所有业务指示灯均正常,问题可能出在汇聚交换机相应的端口或者接入交换机上。
2.主机PC可以PING通网关,所以交换机上行链路为通路,问题可能出在链路聚合。
建议与总结
1. 在链路聚合中选用手动负载分担模式时,所有的链路都处于转发状态,分担负载的流量。流的分担基于ip或者mac,所以当链路出现不对称的情况时,对于不同的ip或者mac可能会有不同的影响,当该ip或者mac所对应的流被分配到正常的链路时,会出现部分业务正常的现象。
2. 目前设备割接后,我们一般采用的业务检测方法一般都是连接PC主机进行检测,有些问题当时并不能发现,只有大规模的用户接入以后才能够发现问题。建议使用Eth-trunk时,两台设备都刷入脚本以后,一定要当时核对端口状态,dis trunkmembership eth-trunk+ID来查看端口成员数量,状态是否正常。如下图1中所示为一端状态,图2为另一端状态。在这种不对称的状态下,部分业务是可以通过的,而且有可能引起环路,这就是我们必须通过端口成员的检查来避免的。
如果eth-trunk较多时,也可以通过dis interface brief 来检查端口成员,但是最好还是使用第一种比较稳妥的方法。
三、Eth-Trunk转发不通
常见原因
配置Eth-Trunk接口后,Eth-Trunk接口无法正常转发流量。
本类故障的常见原因有:
- Eth-Trunk接口成员口故障。
- 设备两端的Eth-Trunk接口成员口配置不一致。
- 状态为Up的Eth-Trunk接口的成员口数量小于配置的下限阈值。
- 状态为Up的Eth-Trunk接口的成员口数量大于配置的有效带宽的链路数的上限阈值。
- 静态LACP模式的Eth-Trunk接口成员口协商不成功。
- 设备上配置了BFD检测Eth-Trunk接口成员口,BFD配置错误导致Eth-Trunk接口状态异常。
故障诊断流程
如图12-2所示,Eth-Trunk接口转发不通的故障处理将基于该网络。
本例中interface1、interface2、interface3分别代表GE1/0/1、GE1/0/2、GE1/0/3。
故障诊断思路:
- 检查Eth-Trunk接口成员口是否存在故障。
- 检查设备两端Eth-Trunk接口的成员口信息。
- 检查状态为Up的成员口数是否大于配置的下限阈值。
- 检查状态为Up的成员口数是否小于配置的有效带宽的链路数的上限阈值。
- 若Eth-Trunk接口是静态LACP模式,检查LACP是否协商成功。
- 若配置了BFD检测Eth-Trunk接口成员口,检查BFD配置是否正确。
可按照图12-3排除此类故障。
故障处理步骤
操作步骤
- 检查Eth-Trunk接口成员口是否存在故障。
在任意视图下执行命令display eth-trunk 1查看Eth-Trunk接口状态。
[HUAWEI] display eth-trunk 1 Eth-Trunk1's state information is: WorkingMode: NORMAL Hash arithmetic: According to flow Least Active-linknumber: 3 Max Bandwidth-affected-linknumber: 16 Operate status: down Number Of Up Ports In Trunk: 0 -------------------------------------------------------------------------------- PortName Status Weight GigabitEthernet1/0/1 Down 1 GigabitEthernet1/0/2 Down 1 GigabitEthernet1/0/3 Down 1
如果Eth-Trunk接口中成员口的状态为Down,请处理接口物理故障。详细的故障处理方法请参见物理对接类问题的定位。
如果成员口的状态是Up,请执行步骤2。
- 检查设备两端的Eth-Trunk接口包含的成员口信息。
查看DeviceA上Eth-Trunk接口包含的成员口信息。
[~DeviceA] display eth-trunk 1 Eth-Trunk1's state information is: WorkingMode: NORMAL Hash arithmetic: According to flow Least Active-linknumber: 3 Max Bandwidth-affected-linknumber: 16 Operate status: down Number Of Up Ports In Trunk: 3 -------------------------------------------------------------------------------- PortName Status Weight GigabitEthernet1/0/1 Up 1 GigabitEthernet1/0/2 Up 1 GigabitEthernet1/0/3 Up 1
查看DeviceB上Eth-Trunk接口包含的成员口信息。
[~DeviceB] display eth-trunk 1 Eth-Trunk1's state information is: WorkingMode: NORMAL Hash arithmetic: According to flow Least Active-linknumber: 3 Max Bandwidth-affected-linknumber: 16 Operate status: down Number Of Up Ports In Trunk: 2 -------------------------------------------------------------------------------- PortName Status Weight GigabitEthernet1/0/1 Up 1 GigabitEthernet1/0/2 Up 1
如果设备两端Eth-Trunk接口成员口数不一致,请正确将设备上的物理接口加入Eth-Trunk接口。
如果设备两端Eth-Trunk接口成员口数一致,请执行步骤3。
- 查看Eth-Trunk接口上是否配置了下限阈值。
分别在DeviceA、DeviceB上执行命令display eth-trunk 1查看Eth-Trunk接口配置信息。
[~DeviceA] display eth-trunk 1 Eth-Trunk1's state information is: WorkingMode: NORMAL Hash arithmetic: According to flow Least Active-linknumber: 3 Max Bandwidth-affected-linknumber: 16 Operate status: down Number Of Up Ports In Trunk: 2 -------------------------------------------------------------------------------- PortName Status Weight GigabitEthernet1/0/1 Up 1 GigabitEthernet1/0/2 Up 1 GigabitEthernet1/0/3 Down 1
从上述显示信息可以看出,Eth-Trunk接口上配置了下限阈值3,而Eth-Trunk接口中状态为Up的成员口数实际上只有2个,这导致了Eth-Trunk接口状态为Down。
如果Eth-Trunk接口上配置了下限阈值,且下限阈值大于Eth-Trunk接口中状态为Up的成员口,请正确配置下限阈值。
如果Eth-Trunk接口上没有配置下限阈值,请执行步骤4。
- 查看Eth-Trunk接口上是否配置了有效带宽的链路数的上限阈值。
分别在DeviceA、DeviceB上执行命令display eth-trunk 1查看Eth-Trunk接口配置信息。
[~DeviceA] display eth-trunk 1 Eth-Trunk1's state information is: WorkingMode: NORMAL Hash arithmetic: According to flow Least Active-linknumber: 3 Max Bandwidth-affected-linknumber: 3 Operate status: down Number Of Up Ports In Trunk: 4 -------------------------------------------------------------------------------- PortName Status Weight GigabitEthernet1/0/1 Up 1 GigabitEthernet1/0/2 Up 1 GigabitEthernet1/0/3 Up 1 GigabitEthernet1/0/4 Up 1
从上述显示信息可以看出,Eth-Trunk接口上配置了有效带宽的链路数的上限阈值3,而Eth-Trunk接口中状态为Up的成员口数实际上有4个,这导致了Eth-Trunk接口状态为Down。
如果Eth-Trunk接口上配置了有效带宽的链路数的上限阈值,且上限阈值小于Eth-Trunk接口中状态为Up的成员口,请正确配置上限阈值。
如果Eth-Trunk接口上没有配置有效带宽的链路数的上限阈值,请执行步骤5。
- 查看Eth-Trunk接口是否是静态LACP模式。
分别在DeviceA、DeviceB上执行命令display eth-trunk 1查看Eth-Trunk接口配置信息。
[~DeviceA] display eth-trunk 1 Eth-Trunk1's state information is: Local: LAG ID: 1 WorkingMode: STATIC Preempt Delay: Disabled Hash arithmetic: According to flow System Priority: 32768 System ID: 00e0-fc12-3457 Least Active-linknumber: 3 Max Active-linknumber: 16 Operate status: down Number Of Up Ports In Trunk: 0 -------------------------------------------------------------------------------- ActorPortName Status PortType PortPri PortNo PortKey PortState Weight GigabitEthernet1/0/1 Unselect 1GE 32768 264 305 11100010 1 GigabitEthernet1/0/2 Unselect 1GE 32768 265 305 11100010 1 GigabitEthernet1/0/3 Unselect 1GE 32768 266 305 11100011 1 Partner: -------------------------------------------------------------------------------- ActorPortName SysPri SystemID PortPri PortNo PortKey PortState GigabitEthernet1/0/1 0 00e0-fc12-3458 0 0 0 11100011 GigabitEthernet1/0/2 0 00e0-fc12-3458 0 0 0 11100011 GigabitEthernet1/0/3 0 00e0-fc12-3458 0 0 0 11100011
如果配置了静态LACP模式Eth-Trunk接口,且成员口没有被选中,说明LACP协商不成功。LACP协商不成功有如下原因:
成员口故障,导致LACP协议报文协商超时。
请排除成员口故障。
Eth-Trunk链路两端设备一端配置了静态LACP模式Eth-Trunk,另一端没有配置静态LACP模式Eth-Trunk。
请正确配置Eth-Trunk链路两端设备。
故障排除后,LACP成功协商后,Eth-Trunk接口显示信息如下:
[~DeviceB] display eth-trunk 1 Eth-Trunk1's state information is: Local: LAG ID: 1 WorkingMode: STATIC Preempt Delay: Disabled Hash arithmetic: According to flow System Priority: 32768 System ID: 00e0-fc12-3457 Least Active-linknumber: 3 Max Active-linknumber: 16 Operate status: up Number Of Up Ports In Trunk: 3 -------------------------------------------------------------------------------- ActorPortName Status PortType PortPri PortNo PortKey PortState Weight GigabitEthernet1/0/1 Selected 1GE 32768 264 305 11111100 1 GigabitEthernet1/0/2 Selected 1GE 32768 265 305 11111100 1 GigabitEthernet1/0/3 Selected 1GE 32768 266 305 11111100 1 Partner: -------------------------------------------------------------------------------- ActorPortName SysPri SystemID PortPri PortNo PortKey PortState GigabitEthernet1/0/1 32768 00e0-fc12-3456 32768 2056 305 11111100 GigabitEthernet1/0/2 32768 00e0-fc12-3456 32768 2057 305 11111100 GigabitEthernet1/0/3 32768 00e0-fc12-3456 32768 2058 305 11111100
如果故障排除后,LACP仍然无法成功协商,请执行步骤6。
如果没有配置静态LACP模式Eth-Trunk接口,请执行步骤6。
- 检查是否配置了BFD检测Eth-Trunk接口成员口。
执行命令display current-configuration查看Eth-Trunk接口两端设备的配置文件,查看是否配置了BFD检测Eth-Trunk接口成员口。
- 请收集如下信息,并联系技术支持工程师。
上述步骤的执行结果。
设备的配置文件、日志信息、告警信息。
相关告警与日志
相关告警
无
相关日志
无