一、故障现象:
Eth-trunk 状态显示为 down、成员接口显示为 Unselect
lldp 列表空
二、背景:
做了个 Eth-trunk,模式为二层口,允许通过 vlan 11-15,结果 dis eth-trunk 一下,显示接口 down,成员接口是 Unselect,百思不得其解,显示了下 lldp,结果发现 lldp 表是空的,明明 lldp enable 了呀?
看了下 Eth-trunk 配置,正常的呀?于是单独做了个两个交换机做 Eth-trunk 的实验,发现配置正常,Eth-trunk 都是 up 且状态都是 Selected。
唯一不同的是:和原拓扑配置相比,原拓扑多了一句 undo port trunk allow pass vlan 1,这当时是为了安全,禁用了 vlan 1。于是原拓扑去掉禁用 vlan 1 的命令 ,发现 Eth-trunk 接口正常,难道 vlan 1 不能被禁用吗?那为什么很多文章都建议禁用 vlan 1 呢?
那,我们来查文档吧!
三、实验查到第2条故障原因:LLDP 表项为空
在交换机的逻辑接口中,找到 Eth-trunk 的定义:具有二层特性和三层特性的逻辑接口,把多个以太网接口在逻辑上等同于一个逻辑接口,比以太网接口具有更大的带宽和更高的可靠性。
来做个简单的实验,还原 eth 口不通的状况,为了方便抓包,用了物理接口:

lldp enable
vlan batch 11 to 15
int vlanif 11
ip addr 10.1.11.1 30
int vlanif 15
ip addr 10.1.15.1 30
int vlanif 1
ip addr 10.1.1.1 30
int G0/0/1
port link-type trunk
port trunk allow pass vlan 11 to 15
undo port trunk allow pass vlan 1
我们配到这里,发现两端 vlanif 除了 vlanif 1 不通,vlanif 11 到 15 都通的,无法还原 eth-trunk 接口 down 的情况;
再看下 dis lldp neighbor brieff,表项为空,抓下包,发现 lldp 走的二层,发送的组播 MAC 是0180-C200-000e,说明两端都发了 lldp 包,但双方都收不到 lldp 包。
现在再去掉禁用 vlan 1 这一条命令,发现 lldp 表项正常,说明正是因为双方禁用了 vlan 1 导致 lldp 协议失效,说明 lldp 包发送是二层组播 MAC,接收是用最小的 vlan id 接收的,这解释了第 2 条故障现象:为什么 lldp 表项为空:
![图片[1] - 为了安全,你禁用 vlan 1 了吗? - 宋马](https://pic.songma.com/blogimg/20250504/4b8f5185c3d24affb6023bb1a64a276b.png)
查下 LLDP 定义:在交换机的 网络监控与监控配置中,找到定义:LLDP(Link Layer Discovery Protocol)是IEEE 802.1ab中定义的链路层发现协议。LLDP是一种标准的二层发现方式,可以将本端设备的管理地址、设备标识、接口标识等信息组织起来,并发布给自己的邻居设备,邻居设备收到这些信息后将其以标准的管理信息库MIB(Management Information Base)的形式保存起来,以供网络管理系统查询及判断链路的通信状况
![图片[2] - 为了安全,你禁用 vlan 1 了吗? - 宋马](https://pic.songma.com/blogimg/20250504/af4c2aafffed43d79e6b5da8763b1478.png)

四、现在配成 eth-trunk 口,来真实还原故障:

int eth-trunk 1
mode lacp
trunkport GigabitEthernet 0/0/3 to 0/0/4
port link-type trunk
port trunk allow-pass vlan 11 to 15
undo port trunk allow-pass vlan 1
![图片[3] - 为了安全,你禁用 vlan 1 了吗? - 宋马](https://pic.songma.com/blogimg/20250504/1c3db0d3659a4aabbe907a8d6276a317.png)
去掉禁用 vlan 1 的命令后,发现 eth-trunk 接口 up,而且 lldp 也有表项了,那么显然是这一条命令造成了接口和 lldp 故障,那么是 lldp 影响了 eth-trunk 口吗?它只是一个通过二层发现协议,怎么会影响到二层逻辑接口状态,从而影响三层通信呢?显然说不通,我们再来回顾下 ping 通原理吧:
*我们都知道,交换机端口如果不配置,那么默认的 vlan 是 1,终端通信是通过二层泛洪 vlan 1 来实现,交换机接口之间发送不带 vlan tag 的包,即 pvid id 为 1 的包来通信,等于直接做了 vlan 终结。
*
但如果在 trunk 模式下,带上 vlan tag,那么需要做 vlan 终结,剥掉 vlan tag,终端才能通信,我们禁用掉了 vlan 1,那么 trunk 中所有的三层包,都带上了 vlan tag,就没有可以直接通信的 vlan 了,所以,eth-trunk 就 down 掉了。
找到了原因,那么解决起来很简单,选一个 vlan 做为 pvid vlan,如加上这一行:port trun pvid vlan 11,eth-trunk 口就 up了:
![图片[4] - 为了安全,你禁用 vlan 1 了吗? - 宋马](https://pic.songma.com/blogimg/20250504/e570eedd048b43708950107ba7517416.png)
现在,问题解决了,但仔细想一下:导致 eth-trunk 接口 down 的原因是因为没有 pvid 或没有配置 untag vlan 吗?再回顾一下刚才用物理口做的实验:物理接口如果是 trunk 口,禁用 pvid vlan 1,并且也不配置其它 pvid vlan 的情况下,其它的 vlan 照样能通过 trunk 口,到达对方的交换机进行终结;那为什么 eth-trunk 这样的逻辑接口就不能呢?因为它是逻辑口。。。逻辑口就能突破规则吗?!它不能是因为接口 down 了,**那接口 down 了是因为没有 pvid 的原因吗?**显然说不通;虽然我们解决了 eth-trunk down 的问题,但仍然知其然而不知其所以然,继续查资料:
=====================================
EtherChannel 是一种将物理接口捆绑在一起以创建单一逻辑链路的技术。它也被称为链路聚合。它在思科交换机和路由器之间提供容错和高速链接,通常出现在骨干网络中。已获批准的开放标准称为 802.3ad,可与其他供应商合作,通常也称为 LAG。
EtherChannel 如何工作?
我们最多可以为一个 EtherChannel 分配 16 个物理接口,但同时只能有 8 个接口处于活动状态。您可以在 2 个、4 个或 8 个活动的快速、千兆或万兆以太网接口之间组建 EtherChannel,另外还有 1 到 8 个非活动接口,当其他接口出现故障时,这些非活动接口也可以变为活动接口。
要创建 EtherChannel,所有接口都必须具备以下条件:
相同的双工
相同的速度
相同的 VLAN 配置(例如,本地 VLAN 和允许的 VLAN 应相同)
交换机端口模式应相同(接入或集群模式)
EtherChannel 可通过以下选项决定通过哪条物理链路发送数据:
如果要配置 EtherChannel,我们有三种选择:
PAgP(思科专利)
SW1(config)#interface range GigabitEthernet 0/1 - 2
SW1(config-if)#channel-group 1 mode desirable # 将 SW1 配置为 PAgP 理想模式。这样,它就会主动要求 SW2 成为以太通道。我们可以将 SW2 配置为自动模式或理想模式。我将使用自动模式:
SW2(config)#interface range GigabitEthernet 0/1 - 2
SW2(config-if)#channel-group 1 mode auto
SW1#show interfaces port-channel 1 #查看 SW1 port-channel 状态
Port-channel1 is up, line protocol is up (connected)
SW1#show run interface GigabitEthernet 0/1 #查看接口配置,现在不能对属于 EtherChannel 的物理接口做任何更改,只能使用端口通道接口更改
interface GigabitEthernet0/1
channel-group 1 mode desirable
end
SW1(config)#interface Port-channel 1 #配置逻辑接口模式为二层 trunk 模式
SW1(config-if)#switchport trunk encapsulation dot1q
SW1(config-if)#switchport mode trunk
SW1#show run interface GigabitEthernet 0/1
interface GigabitEthernet0/1 #再查看下接口下的配置
switchport trunk encapsulation dot1q
switchport mode trunk
channel-group 1 mode desirable
end
SW1#show etherchannel summary #查看 EtherChannel 的总体情况,可以看到我们使用的协议和接口,和逻辑接口是否正常运行
Flags: D - down P - bundled in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use f - failed to allocate aggregator
M - not in use, minimum links not met
u - unsuitable for bundling
w - waiting to be aggregated
d - default port
Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) PAgP Gi0/1(P) Gi0/2(P)
SW1#show interfaces GigabitEthernet 0/1 etherchannel
Port state = Up Mstr In-Bndl
Channel group = 1 Mode = Desirable-Sl Gcchange = 0
Port-channel = Po1 GC = 0x00010001 Pseudo port-channel = Po1
Port index = 0 Load = 0x00 Protocol = PAgP
Flags: S - Device is sending Slow hello. C - Device is in Consistent state.
A - Device is in Auto mode. P - Device learns on physical port.
d - PAgP is down.
Timers: H - Hello timer is running. Q - Quit timer is running.
S - Switching timer is running. I - Interface timer is running.
Local information:
Hello Partner PAgP Learning Group
Port Flags State Timers Interval Count Priority Method Ifindex
Gi0/1 SC U6/S7 H 30s 1 128 Any 5001
Partner's information:
Partner Partner Partner Partner Group
Port Name Device ID Port Age Flags Cap.
Gi0/1 SW2 0019.569d.5700 Gi0/1 19s SAC 10001
Age of the port in the current state: 0d:00h:02m:37s
LACP(IEEE 标准)
LACP 与 PAgP 类似,但使用不同的术语:
主动: 接口会主动要求对方成为 EtherChannel。
被动: 接口被动等待对方要求成为 EtherChannel。
至少有一台交换机应使用主动模式。如果两台交换机都使用被动模式,则不会发生任何事情。
SW1(config-if)#interface range GigabitEthernet 0/1 - 2
SW1(config-if)#channel-group 1 mode active
SW2(config)#interface range GigabitEthernet 0/1 - 2 #配置 SW2 使用被动模式
SW2(config-if)#channel-group 1 mode passive
SW1#show etherchannel summary
Flags: D - down P - bundled in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use N - not in use, no aggregation
f - failed to allocate aggregator
M - not in use, minimum links not met
m - not in use, port not aggregated due to minimum links not met
u - unsuitable for bundling
w - waiting to be aggregated
d - default port
A - formed by Auto LAG
Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi0/1(P) Gi0/2(P)
SW1#show etherchannel 1 port-channel #查看 eth 接口
Port-channels in the group:
---------------------------
Port-channel: Po1 (Primary Aggregator)
------------
Age of the Port-channel = 0d:00h:01m:43s
Logical slot/port = 16/0 Number of ports = 2
HotStandBy port = null
Port state = Port-channel Ag-Inuse
Protocol = LACP
Port security = Disabled
Load share deferral = Disabled
Ports in the Port-channel:
Index Load Port EC state No of bits
------+------+------+------------------+-----------
0 00 Gi0/1 Active 0
0 00 Gi0/2 Active 0
Time since last port bundled: 0d:00h:01m:04s Gi0/2
SW1#show interfaces GigabitEthernet 0/1 etherchannel #查看 eth 详细状况
Port state = Up Mstr Assoc In-Bndl
Channel group = 1 Mode = Active Gcchange = -
Port-channel = Po1 GC = - Pseudo port-channel = Po1
Port index = 0 Load = 0x00 Protocol = LACP
Flags: S - Device is sending Slow LACPDUs F - Device is sending fast LACPDUs.
A - Device is in active mode. P - Device is in passive mode.
Local information:
LACP port Admin Oper Port Port
Port Flags State Priority Key Key Number State
Gi0/1 SA bndl 32768 0x1 0x1 0x2 0x3D
Partner's information:
LACP port Admin Oper Port Port
Port Flags Priority Dev ID Age key Key Number State
Gi0/1 SP 32768 5e00.0001.8000 18s 0x0 0x1 0x2 0x3C
Age of the port in the current state: 0d:00h:01m:37s
配置一个静态的 EtherChannel,而不使用这些协议进行链路协商。
SW1(config)#interface range GigabitEthernet 0/1 - 2
SW1(config-if-range)#channel-group 1 mode on
SW2(config)#interface range GigabitEthernet 0/1 - 2
SW2(config-if-range)#channel-group 1 mode on
SW1#show etherchannel summary
Flags: D - down P - bundled in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use N - not in use, no aggregation
f - failed to allocate aggregator
M - not in use, minimum links not met
m - not in use, port not aggregated due to minimum links not met
u - unsuitable for bundling
w - waiting to be aggregated
d - default port
A - formed by Auto LAG
Number of channel-groups in use: 1
Number of aggregators: 1
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) - Gi0/1(P) Gi0/2(P)
PAgP 和 LACP 是动态配置以太通道的协商协议。PAgP 是思科专有协议,因此只能在思科设备之间使用。LACP 是许多供应商都支持的 IEEE 标准。
=============================================
从上面的资料中可以看出:eth-trunk 接口的 4 条要求均满足,我们来分析一下所得到的信息:
华为文档中提到:LACP 选择最小的 vlan id 来通信
思科文档中提到:LACP 需要进行主动端、被动端选举
再看下我们抓到的 LACP 包格式:它在二层外直接就是 LACP 包,没有带任何 VLanTag
所以:导致 eth-trunk 二层 trunk 口 down 掉的原因是因为 LACP 协议没有协商出主动端和被动端,从而无法进行协议传输,而没有 pvid 正是导致 LACP 协议无法传输的原因,so,当我们指定了一个 pvid 以后,eth-trunk 接口 就 up 了
五、总结:
简单地说:不要轻易禁用 vlan 1,除非你不想用 LLDP 和 STP,它们的默认 vlan 都是 vlan 1 哟!
六、文档引用:
cisco.com
networklessions.com
链路聚合控制协议
LACP 在 IEEE 802.3ad 中定义,使 Cisco 设备能够管理符合 IEEE 802.3ad 协议的设备之间的以太网通道。通过在以太网端口之间交换 LACP 数据包,LACP 可帮助自动创建以太通道。
通过使用 LACP,交换机或交换机堆栈可了解能够支持 LACP 的合作伙伴的身份以及每个端口的功能。然后,它会将类似配置的端口动态分组到一个逻辑链路(通道或聚合端口)中。类似配置的端口根据硬件、管理和端口参数限制进行分组。例如,LACP 将具有相同速度、双工模式、本地 VLAN、VLAN 范围以及中继状态和类型的端口分组。将链路分组为 EtherChannel 后,LACP 会将该组作为单个设备端口添加到生成树中。
端口通道中端口的独立模式行为会发生变化。CSCtn96950 默认启用独立模式。当未收到 LACP 对等设备的响应时,端口通道中的端口将进入暂停状态。
链路聚合控制协议模式
链路聚合控制协议和链路冗余
链路聚合控制协议与其他功能的交互
链路聚合控制协议模式
LACP 模式指定端口可以发送 LACP 数据包还是只能接收 LACP 数据包。
| 模式 | 描述 |
|---|---|
| 主动activ | 使端口进入主动协商状态,在此状态下,端口通过发送 LACP 数据包与其他端口开始协商 |
| 被动passive | 将端口置为被动协商状态,在此状态下,端口会响应收到的 LACP 数据包,但不会启动 LACP 数据包协商。此设置可最大限度地减少 LACP 数据包的传输 |
主动和被动 LACP 模式都能使端口根据端口速度等标准与 EtherChannel 的伙伴端口进行协商,对于二层 EtherChannel,则根据中继状态和 VLAN 编号进行协商。
端口在不同的 LACP 模式下,只要模式兼容,就可以组成一个 EtherChannel。例如:
处于主动模式的端口可与另一个处于主动或被动模式的端口组成 EtherChannel。
处于被动模式的端口不能与另一个同样处于被动模式的端口组成 EtherChannel,因为这两个端口都不启动 LACP 协商。
















暂无评论内容