MAC地址學習異常處理方法
1、故障現(xiàn)象
交換機端口學習不到或者錯誤學習到MAC地址。
?2、故障可能原因
1)?數(shù)據(jù)丟包流量沒有經(jīng)過該二層接口;
2)?STP拓撲震蕩頻繁清除MAC地址;
3)?MAC地址學習能力被關(guān)閉或被配置MAC過濾;
4)?接口屬性配置錯誤;
5)?端口開啟安全功能;
6)?軟件缺陷;
7)?硬件故障;
3、故障處理步驟
步驟1:交換機接口是否有收到報文流量,查看接口是否有丟包
通過在交換機上show int counter可以查看接口是否有流量(可以多show 幾次,看進來的流量(單播報文個數(shù)、組播報文個數(shù)、廣播報文個數(shù))是否有增長,如果有增長表示接口收到了報文。另外也確認接口是否有丟包)
Switch#show int fastEthernet 0/1 counters
Interface : Fa0/1
5 minute input rate??: 0 bits/sec, 0 packets/sec //5分鐘的平均速率
5 minute output rate : 0 bits/sec, 0 packets/sec
InOctets?????????????: 68023600 進入的包總數(shù)
InUcastPkts??????????: 92842????進入單播包個數(shù)
InMulticastPkts??????: 36700???進入組播包個數(shù)
InBroadcastPkts??????: 75636???進入廣播包個數(shù)
OutOctets????????????: 3630373??出去的總包數(shù)
OutUcastPkts?????????: 32053????出去單播包個數(shù)
OutMulticastPkts?????: 1059????出去組播包個數(shù)
OutBroadcastPkts?????: 13231???出去廣播包個數(shù)
[1] Undersize packets????: 0
[2] Oversize packets?????: 0
[3] collisions???????????: 0
[4] Fragments????????????: 0
[5] Jabbers??????????????: 0
[6] CRC alignment errors : 0
[7] AlignmentErrors??????: 0
[8] FCSErrors????????????: 0
[9] dropped packet events (due to lack of resources): 0
[10] packets received of length (in octets):??????????????????????????????????????
??64:119136, 65-127: 75769, 128-255: 12663,
??256-511: 3149, 512-1023: 1955, 1024-1518: 38849
?[1] 長度小于64字節(jié),校驗和正確的報文:和Fragment幀對應,區(qū)別在于校驗和。
[2] 幀超長且校驗和正確的報文:和Jabber幀對應,區(qū)別在于校驗和。
[3] 沖突幀:多站點同時試圖發(fā)送信息導致沖突,單雙工遇到較多。
[4] 長度小于64字節(jié),校驗和錯誤的報文:和Undersize幀對應,區(qū)別在于校驗和。
[5] 幀超長且校驗和錯誤的報文:和Oversize幀對應,區(qū)別在于校驗和。
[6] 非超常幀且校驗和錯誤的報文:和FCS相同,CRC是發(fā)送方本地進行校驗,對端收到后重新進行計算,然后比對FCS字段。
[7] 接收的幀有重組錯誤:沒有通過幀校驗且沒有邊界字節(jié)結(jié)束(非整字節(jié))的幀,bit丟失。
[8] 幀的內(nèi)容改變或者丟失:幀校驗FCS錯誤
[9] 丟棄報文統(tǒng)計:總和
[10] 根據(jù)長度統(tǒng)計接收的報文
如果沒有收到報文流量則無法學習到用戶的MAC地址。
步驟2:物理端口不能是三層口,如果是三層口無法學習mac地址
只有switchport口(如access、trunk、hybird、dot1q-tunnel、uplink口)才有學習mac地址的能力,如果是no switchport口是沒有學習地址的能力的。如果該端口配置的是no switchport 端口,該端口無法學習mac地址。只能show arp查看arp對應情況。
步驟3:確認端口的地址學習能力是否被關(guān)閉
??Ruijie#show mac-address-learning
??Gi0/1????learning ability: enable
??如果是enable則為開啟。如果是disable 表示關(guān)閉
步驟4:確認是否有配置對應的靜態(tài)MAC地址或過濾MAC地址。如果是,則不會學習到

步驟5:確認希望學習的MAC地址是否是組播地址,廣播地址
可以通過抓包來看,收到的報文的源mac是否為廣播地址和組播mac地址,交換機是無法學習組播及廣播的MAC地址的。
判斷該地址是否為組播mac地址的方式:

步驟6:檢查網(wǎng)絡中是否存在環(huán)路引起廣播風暴,導致MAC表項振蕩/STP 拓撲震蕩(發(fā)送TC清除mac的可能性)
1、如果存在環(huán)路,會導致MAC地址出現(xiàn)漂移,可以多次show mac-address-table address xxxx.xxxx.xxxx查看mac地址是否有出現(xiàn)mac地址一會兒在一個端口學習到,一會兒在另外一個端口學習到的情況,如果有表示出現(xiàn)了環(huán)路。解除環(huán)路后故障消失則結(jié)束定位。
2、多次show int count summary(可以clear count后多次查看),觀察是否有接口的廣播/組播報文遠大于單播報文,若有這樣的接口,關(guān)注該接口下是否存在攻擊或者環(huán)路的情況;
3、STP 震蕩(如收到TC報文)會清 mac地址,可以通過show spanning-tree查看

步驟7:檢查是否開啟端口安全功能
端口安全功能可以顯示端口的MAC學習個數(shù),檢查是否由于端口學習mac地址數(shù)量已經(jīng)達到了上限
#show port-security address
如果MAC地址學習已經(jīng)達到上限,修訂端口安全的地址限制個數(shù),命令如下:
Ruijie(config-if)# switchport port-security maximum value
配置完端口安全地址的個數(shù)后,如果故障消失,則結(jié)束定位。
?步驟8:檢查MAC表項是否已經(jīng)達到設(shè)備支持的最大規(guī)格
在設(shè)備上執(zhí)行#show mac-address-table count確認當前還可以學習的MAC地址個數(shù),如果還可以學習的MAC地址個數(shù)為0,說明MAC地址已經(jīng)學滿。

如果存在攻擊,排除攻擊后故障消失,則結(jié)束定位。
?步驟9:確認是否發(fā)生了HASH沖突
可以修改下PC終端的MAC地址看交換機是否能夠?qū)W習到,如果能里面學習到,然后再改回原來的MAC,看是否又無法學習了,如果是,那么判斷該MAC對交換機來說發(fā)生了HASH沖突。
?步驟10:最簡化環(huán)境進行測試確認
? ? ? 在只有一臺PC、一臺交換機情況進行直連ping測試,看mac地址是否能正常學習。具體操作方法可以參考“附錄--》附錄4:如何設(shè)置電腦抓帶vlan tag報文”
步驟11:進行抓包確認
端口mac地址學習錯誤和端口mac地址學習不到的情況,在交換機的相應端口做RX鏡像,確認報文有沒有到達交換機,以及報文的具體信息,封裝字段是否存在異常等。
注:進行鏡像的PC或者測試儀請確保能夠識別帶tag的報文,
4、故障信息搜集
?步驟1:收集基礎(chǔ)信息
以下藍色的部分修訂接口號后可直接粘貼復制。
show ver
show ver slo
show run
show mac-address-learning
show mac-address-table
show mac-address-table count
show mac-address-table aging-time
show mac-address-table static
show task? ?
show int co su
show int co su
show int co su
show int co rate
show int? counters? ?//建議收集具體接口的,例如show int g0/1 cou ,多收集幾次
show port-security address
show spanning-tree??
show spanning-tree summary
show task? ?
show log
show cpu
show cpu-protect mb
show cpu-protect mb
show cpu-protect mb
deb support
show task? ?
exit
步驟2:配置端口鏡像進行rx方向抓包,例如:
注:進行鏡像的PC或者測試儀請確保能夠識別帶tag的報文,

步驟3:進行底層信息收集
注意:底層信息風險性較高,收集不當可能導致設(shè)備死機,需要重啟交換機才能恢復,請聯(lián)系4008111000工程師協(xié)助收集
以下命令適用于S2600、S26E/P、S29E、S29S、S3250E、S37E、S5750、S5750P、S5750S、S5750L交換機
1)查看地址硬件表項
sd
sh console on
sh ps
sh show c
sh dump chg l2_user_entry
sh dump chg vlan
sh dump chg port
sh dump chg vlan_profile
sh l2 show
sh l2 show
sh l2 show
sh console off
sh l2 show
exit
2)進行debug相關(guān)信息調(diào)試
注意:DEBUG操作可能存在風險(最壞情況可能需要重啟設(shè)備才能恢復),需要客戶知曉風險并同意后才能收集,建議在低峰期操作?。ㄈ羰呛诵脑O(shè)備,必須更加慎重評估)
debug ssp matbl all
該調(diào)試信息收集5分鐘左右,期間要重現(xiàn)故障現(xiàn)象,比如接上pc,卻學習不到該pc的mac地址等
關(guān)閉該調(diào)試信息
? ? ? no debug ssp matbl all
?