为了安全,你禁用 vlan 1 了吗?_undo port trunk allow-pass vlan 1
一、故障现象:
- 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 enablevlan batch 11 to 15int vlanif 11 ip addr 10.1.11.1 30int vlanif 15 ip addr 10.1.15.1 30int vlanif 1 ip addr 10.1.1.1 30int 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 表项为空:
查下 LLDP 定义:在交换机的 网络监控与监控配置中,找到定义:LLDP(Link Layer Discovery Protocol)是IEEE 802.1ab中定义的链路层发现协议。LLDP是一种标准的二层发现方式,可以将本端设备的管理地址、设备标识、接口标识等信息组织起来,并发布给自己的邻居设备,邻居设备收到这些信息后将其以标准的管理信息库MIB(Management Information Base)的形式保存起来,以供网络管理系统查询及判断链路的通信状况
四、现在配成 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
去掉禁用 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了:
现在,问题解决了,但仔细想一下:导致 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 - 2SW1(config-if)#channel-group 1 mode desirable# 将 SW1 配置为 PAgP 理想模式。这样,它就会主动要求 SW2 成为以太通道。我们可以将 SW2 配置为自动模式或理想模式。我将使用自动模式:SW2(config)#interface range GigabitEthernet 0/1 - 2SW2(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 desirableendSW1(config)#interface Port-channel 1#配置逻辑接口模式为二层 trunk 模式SW1(config-if)#switchport trunk encapsulation dot1q SW1(config-if)#switchport mode trunkSW1#show run interface GigabitEthernet 0/1interface GigabitEthernet0/1#再查看下接口下的配置 switchport trunk encapsulation dot1q switchport mode trunk channel-group 1 mode desirableendSW1#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 portNumber of channel-groups in use: 1Number of aggregators: 1Group 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 = 0Port-channel = Po1 GC = 0x00010001 Pseudo port-channel = Po1Port index = 0 Load = 0x00 Protocol = PAgPFlags: 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 GroupPort Flags State Timers Interval Count Priority Method IfindexGi0/1 SCU6/S7 H30s 1 128 Any 5001Partner\'s information: Partner Partner Partner Partner GroupPort Name Device ID Port Age Flags Cap.Gi0/1 SW2 0019.569d.5700Gi0/1 19s SAC10001 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 - 2SW1(config-if)#channel-group 1 mode active SW2(config)#interface range GigabitEthernet 0/1 - 2#配置 SW2 使用被动模式SW2(config-if)#channel-group 1 mode passiveSW1#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 LAGNumber of channel-groups in use: 1Number of aggregators: 1Group 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:43sLogical slot/port = 16/0 Number of ports = 2HotStandBy port = null Port state = Port-channel Ag-Inuse Protocol = LACPPort security = DisabledLoad 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 0Time since last port bundled: 0d:00h:01m:04s Gi0/2SW1#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 = Po1Port index = 0 Load = 0x00 Protocol = LACPFlags: 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 PortPort Flags State Priority Key Key Number StateGi0/1 SA bndl 32768 0x1 0x1 0x2 0x3D Partner\'s information: LACP port Admin Oper Port PortPort Flags Priority Dev ID Age key Key Number StateGi0/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 - 2SW1(config-if-range)#channel-group 1 mode onSW2(config)#interface range GigabitEthernet 0/1 - 2SW2(config-if-range)#channel-group 1 mode onSW1#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 LAGNumber of channel-groups in use: 1Number of aggregators: 1Group 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 数据包。
主动和被动 LACP 模式都能使端口根据端口速度等标准与 EtherChannel 的伙伴端口进行协商,对于二层 EtherChannel,则根据中继状态和 VLAN 编号进行协商。
端口在不同的 LACP 模式下,只要模式兼容,就可以组成一个 EtherChannel。例如:
处于主动模式的端口可与另一个处于主动或被动模式的端口组成 EtherChannel。
处于被动模式的端口不能与另一个同样处于被动模式的端口组成 EtherChannel,因为这两个端口都不启动 LACP 协商。