cisco 3750 error "cdp-4-native_vlan_mismatch native vlan mismatch discovered"

CDP-4-NATIVEVLANMISMATCH 有在玩Cisco网路设备的人,大概对于"CDP-4-NATIVEVLANMISMATCH"这个log讯息不会太陌生。在这裡提到的NATIVE VLAN,如果介面是access mode的话,指的是它access的VLAN;而如果介面是trunk mode的话,指的是它的Trunking Native Mode VLAN。如果两台Cisco网路设备直接连线,而两边的native vlan不一致的话,这个讯息就会在log裡面不停的跳出来像这样子: 00:02:29: %CDP-4-NATIVEVLANMISMATCH: Native VLAN mismatch discovered on FastEthernet0/1 (2), with Switch FastEthernet0/1 (1). 00:02:29: %CDP-4-NATIVEVLANMISMATCH: Native VLAN mismatch discovered on FastEthernet0/1 (2), with Switch FastEthernet0/1 (1). 00:02:29: %CDP-4-NATIVEVLANMISMATCH: Native VLAN mismatch discovered on FastEthernet0/1 (2), with Switch FastEthernet0/1 (1). 00:02:36: %CDP-4-NATIVEVLANMISMATCH: Native VLAN mismatch discovered on FastEthernet0/1 (2), with Switch FastEthernet0/1 (1).

为了这个小小的message,我曾经和一位比我资深的工程师发生相当的争论,还几乎要在客户的机房当场借用机器作lab,好证明谁对谁错,还好现场刚好找不到cross over cable,让这个lab环境无法顺利架起来,也让我有机会多K一点文件。

争论的起点是这样的: 如果网路的规划,分配二楼使用VLAN 2,而二楼的switch使用一条网路线连接到core switch的fa0/1介面上,那麽只要在core switch的fa0/1上面,设定 interface fa0/1 switchport access vlan 2 switchport mode access 在分配给二楼的edge switch上面则不用进行任何设定,则二楼的使用者网路会通,而且log裡面不会有native vlan mismatch讯息出现。

上面是这位资深工程师的看法,我的看法则是「鬼扯,如果这样设定的话,二楼使用者的网路会通,但是switch上面会不停的跳出native vlan mismatch的错误讯息」

由于当场找不到cross over cable进行测试,这个僵持不下的争论暂时没有解答。但真正让我恼火的是旁边另一位工程师,他虽然啥也没说,可是那一脸轻蔑的表情似乎嘲笑着「你到底懂不懂网路?你真的有用过Cisco的switch吗?」

早上进办公室,第一件事就是抓两台switch来作实验,测试机是两台Cisco 3550 switch,IOS版本分别是12.1(22)EA4和12.2(25)SEB2,其中担任Edge switch的一台事先把设定档(包含flash:vlan.dat)全部清空,以便模拟「全新」的switch,担任core switch的一台则设定如下: interface fa0/1 switchport access vlan 2 switchport mode access interface fa0/3 switchport access vlan 2

设定完毕后,用cross over cable连接两台switch的fa0/1介面,模拟更换全新备品。这时候console画面开始弹出以下的讯息: 00:02:29: %CDP-4-NATIVEVLANMISMATCH: Native VLAN mismatch discovered on FastEthernet0/1 (2), with Switch FastEthernet0/1 (1). 00:02:29: %CDP-4-NATIVEVLANMISMATCH: Native VLAN mismatch discovered on FastEthernet0/1 (2), with Switch FastEthernet0/1 (1). 00:02:29: %CDP-4-NATIVEVLANMISMATCH: Native VLAN mismatch discovered on FastEthernet0/1 (2), with Switch FastEthernet0/1 (1). 00:02:36: %CDP-4-NATIVEVLANMISMATCH: Native VLAN mismatch discovered on FastEthernet0/1 (2), with Switch FastEthernet0/1 (1). 观察两台switch上面,都有相同的讯息,这和我的预期相符。接下来我把edge switch的fa0/1改接到core switch的fa0/3上面,则这个讯息也不会弹出来,原因是因为现在两个switch之间用的是trunk,在core switch上面使用show interface fa0/3 switchport可以看见以下的结果: CoreSW#show interface fa0/3 switchport Name: Fa0/3 Switchport: Enabled Administrative Mode: dynamic desirable Operational Mode: trunk Administrative Trunking Encapsulation: negotiate Operational Trunking Encapsulation: isl Negotiation of Trunking: On Access Mode VLAN: 2 (VLAN0002) Trunking Native Mode VLAN: 1 (default) Administrative Native VLAN tagging: enabled Voice VLAN: none Administrative private-vlan host-association: none Administrative private-vlan mapping: none Administrative private-vlan trunk native VLAN: none Administrative private-vlan trunk Native VLAN tagging: enabled Administrative private-vlan trunk encapsulation: dot1q Administrative private-vlan trunk normal VLANs: none Administrative private-vlan trunk private VLANs: none Operational private-vlan: none Trunking VLANs Enabled: ALL Pruning VLANs Enabled: 2-1001 Capture Mode Disabled Capture VLANs Allowed: ALL

Protected: false Unknown unicast blocked: disabled Unknown multicast blocked: disabled Appliance trust: none 在Operational Mode的地方就可以看出,它目前是以trunk mode方式运作,因为两端都没有手动更改native vlan设定,所以自然不会跳出这样的讯息出来。到这裡,算是戳破了资深工程师的理论。

但争论的时候,那位资深工程师信誓旦旦的告诉我,他在很多客户的环境都这样用过,都不会出现这个讯息,这引起我的好奇心,跟同事讨论之后,我上Cisco网站找到了这一篇文件,提到了CDP version 2的封包裡面,增加了VTP Management Domain Name、Native VLAN,以及full/half-Duplex三个栏位。换言之,当两台switch都使用CDP version 1的时候,因为CDP封包裡面没有native vlan的栏位,自然不会有这个警告讯息出现在log裡面了。我在两台switch上面,使用 no cdp advertise-v2 指令,让两台switch都送出version 1的CDP讯息,果然这个警告讯息就消失了。

特别在这裡写下这一篇,是要提醒自己,老经验老资格,从来不是标准答桉的保证,今天我可以在这裡呛声,有一天也有别人会来挑战我,而虚心学习永远不会是错误的作法。

最后只有一个小小的问题还没有得到解答,既然Cisco在IOS 12.0(3)以后,就已经改用CDP version 2了,而且12.0(3)已经是很久以前的IOS版本了,我实在不知道这位资深工程师信誓旦旦的「很多客户」,是多久以前的客户了......anyway,我要感激您,让我对CDP又多了一点认识。

via: 1.