人來咨詢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是由華為公司自己分配的地址編號。
? MAC、MAC地址表項、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地址漂移的前因后果,前世今生,敬請期待吧。 |