【交換機在江湖之維護寶典】第十章 輕松定位MAC地址學習不到問題


 

 
 

人來咨詢MAC地址學習不到的問題,把小編忙得不可開交。小編忙里偷閑反省了一下,“授人以魚不如授人以漁”,於是把經驗整理出來,與眾俠分享。

 首先,小編還是要講解一下MAC地址的基本原理,澄清幾個概念,照顧一下初入江湖的少俠們。

什么是MAC

MAC全稱Media Access Control,是設備的唯一標識符,是由各個廠商向IETF等機構申請的。它有48Bit,通常被表示為12位的點分十六進制數,每個MAC地址的前6位(點分十六進制)代表OUI(Organizationally Unique Identifier),后6位由廠商自己分配。

例如,48Bit的MAC地址000000001110000011111100001110011000000000110100,表示為12位點分十六進制就是00e0.fc39.8034。前面的00e0.fc是IEEE分配給華為公司的OUI,后面的39.8034是由華為公司自己分配的地址編號。

MACMAC地址表項、MAC地址表的關系是什么呢?

  MAC地址表是由一條條的MAC地址表項組成。MAC地址表項是由MAC、VLAN和端口組成。所以這里所說的MAC地址學習不到,是指的MAC地址表項學習不到。

? MAC地址表項是怎么學習的呢?

MAC地址表項是在交換機收到數據幀時,解析出數據幀的源MAC地址和VLANID,然后和接收數據幀的端口組合成的。如下圖所示就是一條MAC地址表項。

MAC 地址學習不到,會導致什么問題?

問題1:MAC地址是用來指導報文進行單播轉發的。通過目的MAC地址在MAC地址表中查找不到的報文,就會進行廣播,就會占用帶寬,浪費網絡資源了。

問題2:設備收到報文,才會進行MAC地址學習。MAC地址學習不到,很可能是設備沒有收到報文。設備沒有收到報文,就意味着設備間的通信是不通的喲。

 好了,跟小編一起來看看“MAC地址學習不到問題”的定位步驟吧。

第一步:判斷端口是否收到報文

查看方法:先在用戶視圖下執行reset counters interface GigabitEthernet3/0/0命令清空端口的計數,然后再在用戶視圖下執行display interface GigabitEthernet 3/0/0查看入報文的統計計數是否為0。

江湖小貼士:在場景比較復雜的情況下,端口入報文計數不為0不表示端口就收到了指定MAC地址的報文喲。在這種情況下可以根據源MAC地址做流量統計,判斷端口是否收到了指定MAC的報文。呵呵,如果條件允許,也可以直接在使用抓包工具進行抓包,判斷端口是否收到了指定MAC的報文喲。

第二步:查看設備配置是否正確

1.VLAN是否創建並加入端口。

查看方法:任意視圖下執行display vlan vlan-id命令,查看VLAN是否存在並加入端口。

2.端口下是否配置了MAC地址不學習功能。

查看方法:接口視圖下執行display this命令,查看是否存在mac-address learning disable配置。

3.端口下是否配置了MAC地址學習限制數功能。

查看方法:接口視圖下執行display this命令,查看是否存在mac-limit maximum配置。

4.VLAN下是否配置了MAC地址不學習功能。

查看方法:VLAN視圖下執行display this命令,查看是否存在mac-address learning disable配置。

5.VLAN下是否配置了MAC地址學習限制數功能。

查看方法:VLAN視圖下執行display this命令,查看是否存在mac-limit maximum配置。

江湖小貼士:接口視圖下執行display this命令,會看到很多配置,是不是很煩呢。小編教你一招,可以使用display this | include  mac-address快速查看命令中含有mac-address的命令的。

第三步:查看端口是否被阻塞

1.查看端口是否被生成樹協議阻塞。

查看方法:任意視圖下,執行display stp brief命令查看端口的狀態。

2.查看端口是否被LBDT或LDT環路檢測協議阻塞。

查看方法:任意視圖下,執行display loop-detection命令查看端口是否被LDT阻塞。在任意視圖下,執行display  loopback-detect命令查看端口是否被LBDT阻塞。

江湖小貼士:端口被阻塞,是否正常呢?這就要各位大俠根據組網確認一下,該端口是否需要使能破環協議或者環路檢測協議了,如果確認需要使能並且阻塞端口也是正確的,那這個端口學習不到MAC地址也是正常的喲。

光說不練假把式,根據現象找出問題並解決問題才是真本事。那么現在就和小編一起,來“定位兩個MAC地址不學習”的問題吧。

典型問題一:端口沒有加入VLAN,導致MAC地址學習不到。 

? 組網說明

PC1和PC2屬於同一個網段,在同一個VLAN10內,通過兩台交換機進行通信。

 

? 問題現象

PC1 ping PC2不通

 

交換機Switch1學習到了PC1的MAC地址

 

交換機Switch2沒有學習到PC1的MAC地址

 

? 定位和解決

第一步:判斷Switch2設備的GE0/0/2端口是否收到報文

 

哦?通過上圖,發現端口入計數都是0, 看來是GE0/0/2端口沒有收到報文才導致MAC地址學習不到呀,那到底什么原因導致的呢?還得進一步定位了。

第二步查看設備配置是否正確

1. 判斷VLAN是否創建,並且端口是否加入VLAN。

 

 

有上圖可以看出,VLAN10已經創建,但是GE0/0/2端口沒有加入VLAN 10。這就是導致MAC地址學習不到的根本原因了。那就把GE0/0/2端口加入VLAN 10,再ping一下看看呢。

 

哈哈,可以ping通了,我們再來查看一下MAC地址表項。

 

哈哈,MAC地址也學習到了,問題搞定了。

典型問題二:端口被生成樹協議STP阻塞,導致MAC地址學習不到。

? 問題現象:在VLAN100內,GE3/0/0端口學習不到MAC地址00e-fc01-0001。

? 定位和解決

第一步:判斷該端口是否收到報文。

 

通過上圖可以看到,端口有收到報文,但是端口收到的報文中,是否有源MAC地址是00e0-fc01-0001的報文呢?通過基於源MAC地址進行流量統計來判斷一下了。

1.  配置流策略。

 

2.  把流策略應用到GE3/0/0端口。

 

3.  查看是否有統計計數。

 

 

通過上圖可以看到,基於源MAC地址00e0-fc01-0001的流量統計計數不為0,可見端口收到了報文,那MAC地址學習不到的原因具體是啥呢?我們接着分析。

第二步查看設備配置是否正確

1.  查看配置第1項:VLAN是否創建並把端口加入VLAN。

 

通過上圖可以看出,VLAN 100已經創建並且端口GE3/0/0也已經加入VLAN100。

2.  查看配置第2項和第3項:查看端口下是否配置了MAC地址不學習和MAC地址限制數。

 

通過上圖可以看出,端口下沒有配置MAC地址不學習和MAC地址限制數的功能。

3.  查看配置第4項和第5項:查看VLAN下的配置是否配置了MAC地址不學習和MAC地址限制數。

 

通過上圖可以看出,VLAN下沒有配置MAC地址不學習和MAC地址限制數的功能。

配置檢查完了,沒有發現問題,那就進行第三步。

第三步查看端口是否被阻塞

1.  判斷端口是否被STP阻塞。

 

通過上圖可以看出端口被阻塞了。這可能就是導致MAC地址學習不到的原因,那我們把端口去使能STP試試呢。

 

可以看到MAC地址可以學習到了。這樣就可以確認是因為端口被環路block,導致MAC地址學習不到,問題定位了。

至於端口被STP阻塞是否合理,則需要根據組網判斷了。如果確認端口被阻塞是正確的,那端口MAC地址學習不到,也就不是問題了哈。

OK,學習兩個典型問題的定位過程,對MAC地址學習不到的問題是否有了思路呢。本期小編的講解也結束了,下期小編再帶你了解一下MAC地址漂移的前因后果,前世今生,敬請期待吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM