學而時習之,不亦說乎。古往今來,任何領域的學習都離不開一個“勤”字。記下筆記時時思考回顧,既能穩固記憶,又能常看常新。
古語有雲:溫故而知新,可以為師矣。譽天精選了學員在學習過程中第一視角記錄下的随堂筆記,分享給各位小夥伴參考學習。希望前人的腳步印記能夠予大家以啟發,幫助大家走出自己的前程與道路。
本期主要内容是華為數通方向的MAC&ARP精華筆記,作者為譽天數通HCIE學員。受限于篇幅與閱讀體驗,本章節選出了部分精彩内容。
MAC
MAC(Media Access Control)地址用來定義網絡設備的位置。MAC地址由48比特長、12位的16進制數字組成,其中從左到右開始,0到23bit是廠商向IETF等機構申請用來标識廠商的代碼,24到47bit由廠商自行分派,是各個廠商制造的所有網卡的一個唯一編号。
MAC地址可以分為3種類型:
物理MAC地址:這種類型的MAC地址唯一的标識了以太網上的一個終端,該地址為全球唯一的硬件地址;
廣播MAC地址:全1的MAC地址為廣播地址(FF-FF-FF-FF-FF-FF),用來表示LAN上的所有終端設備;
組播MAC地址:除廣播地址外,第8bit為1的MAC地址為組播MAC地址(例如01-00-00-00-00-00),用來代表LAN上的一組終端。其中以01-80-c2開頭的組播MAC地址叫BPDU MAC,一般作為協議報文的目的MAC地址标示某種協議報文。
交換機支持的MAC地址
交換機上面的MAC地址分為系統MAC和接口MAC兩種。其中接口MAC又包括管理網口MAC、VLANIF接口MAC、二層物理接口MAC、三層路由主接口MAC、子接口MAC、二層Eth-Trunk接口MAC、三層Eth-Trunk接口MAC。
系統MAC也就是設備MAC,可以通過命令display bridge mac-address查看。管理網口MAC、子接口MAC、二層物理接口MAC和二層Eth-Trunk接口MAC是相同的,使用的就是系統MAC。其他接口MAC與系統MAC不一緻,具體MAC地址可以通過display interface查看。
交換機的轉發行為
泛洪:當交換機收到未知單播幀、廣播幀或組播幀時會進行泛洪處理,會将該幀從接收端口以外的其他端口發送出去。
轉發:當交換機收到已知單播幀時,會從MAC地址對應的出接口轉發。
丢棄:當交換機收到單播幀後通過查找MAC地址表發現發送接口和接收接口一緻,則丢棄處理。
一般情況下,MAC地址表示設備根據收到的數據幀裡的源MAC地址自動學習而建立的。交換機會從數據幀中解析出源MAC和VLAN ID。如果MAC地址表中不存在該MAC地址表項,設備則将這個新MAC地址及該MAC地址對應的端口号和VLAN ID作為新的表項加入到MAC地址表中;如果MAC地址表中已經存在該MAC地址表象,設備将通過重置該表項的老化時間,對該表項進行更新。所以設備在收到數據幀時,才會觸發MAC地址的學習和刷新,MAC地址表的老化時間為300s。
MAC地址表的定義和分類
MAC地址表的定義
MAC地址表記錄了交換機學習到的其他設備的MAC地址與接口的對應關系,以及接口所屬VLAN等信息。設備在轉發報文時,根據報文的目的MAC地址查詢MAC地址表,如果MAC地址表中包含與報文目的MAC地址對應的表項,則直接通過該表項中的出接口轉發該報文;如果MAC地址表中沒有包含報文目的MAC地址對應的表項時,設備将采取廣播方式在所屬VLAN内除接收接口外的所有接口轉發該報文。
MAC地址表的分類
MAC地址表中的表項分為:動态表項、靜态表項和黑洞表項。另外交換機的MAC地址表中還存在一種業務類型的MAC地址表項,譬如:安全MAC、MUX MAC、Authen MAC、Guest MAC等。該類MAC地址表項是由對應業務維護的,一般是通過動态表項轉換來的。
表1 不同MAC地址表的特點和作用
MAC地址表的組成和作用
MAC地址表的組成
MAC地址表是以MAC地址和VLAN ID或VSI為索引來唯一标識。當一台目的主機屬于多個VLAN或VSI時,在MAC地址表中就會存在相同MAC地址擁有多個不同VLAN ID或VSI的情況。表2中是四條不同的MAC地址表項。如第一條MAC地址表項的作用是:從設備任意接口進入的目的MAC為0011-0022-0034,VLAN ID為10的報文,都會從GE0/0/1接口轉發出去。
表2 MAC地址表項
MAC地址表的作用
MAC地址表用于指導報文進行單播轉發。如圖1中,PC1發往PC3的報文,在到達交換機Switch時,根據報文中的目的MAC地址MAC3和VLAN10查詢交換機的MAC地址表,獲取出接口Port3,然後報文直接從接口Port3轉發到PC3,完成數據的轉發。
圖1 基于MAC地址表的轉發流程圖
MAC地址學習和老化
MAC地址學習過程
一般情況下,MAC地址表是設備根據收到的數據幀裡的源MAC地址自動學習而建立的。
圖2 MAC地址學習示意圖
如圖2,HostA向SwitchA發送數據時,SwitchA從數據幀中解析出源MAC地址(即HostA的MAC地址)和VLAN ID。
如果MAC地址表中不存在該MAC地址表項,設備則将這個新MAC地址以及該MAC地址對應的PortA和VLAN ID作為一個新的表項加入到MAC地址表中。
如果MAC地址表中已經存在該MAC地址表項,設備将通過重置該表項的老化時間,對該表項進行更新。
如果PortA加入了Eth-TrunkA,則MAC地址表項的出接口就是Eth-TrunkA。
交換機設備所有接口默認加入VLAN 1,如果不做修改所有MAC地址表項的VLAN ID都是VLAN 1。
交換機設備對于BPDU MAC(形如:0180-c200-xxxx)不會進行MAC地址學習。但對于VXLAN透傳和VPLS透傳BPDU報文時,會學習源MAC地址。
所以設備在收到數據幀時,才會觸發MAC地址的學習和刷新。
MAC地址老化過程
為适應網絡的變化,MAC表需要不斷更新。MAC表中自動生成的表項(即動态表項)并非永遠有效,每一條表項都有一個生存周期,到達生存周期仍得不到更新的表項将被删除,這個生存周期被稱作老化時間。如果在到達生存周期前記錄被更新,則該表項的老化時間重新計算。
圖3 MAC地址老化過程示意圖
如圖3所示,設備MAC地址老化時間設置為T。在t1時刻有源MAC地址為00e0-fc00-0001、VLAN為1的報文從某接口進入。假定該接口已加入VLAN 1。如果之前MAC地址表不存在關于(MAC: 00e0-fc00-0001,VLAN: 1)的任何種類表項,那麼這個地址就會作為動态MAC地址表項學習到地址表裡,同時該表項的命中标志位被置1。
設備周期性(每經過T時間)地對所有學習到的動态MAC地址表項進行檢查。
在t2時刻,檢查到動态表項(MAC: 00e0-fc00-0001,VLAN: 1)的命中标志位為1,則将該表項的命中标志位置為0,但不删除這條表項。
在t2時刻和t3時刻之間沒有這種報文進入設備,那麼該表項的命中标志位會一直保持為0。
在t3時刻,設備檢查到該表項的命中标志位為0,認為該表項的老化時間到達,将删除此條表項。
如上所述,通過自動老化,一條動态表項在MAC地址表存在的最短時間是設備所配置的老化時間T到2T之間。設備MAC地址老化時間可手動設置。通過設置此時間,可以靈活控制動态學習到的MAC表項在MAC地址表存在的時間。
設備上端口頻繁UP/DOWN會導緻MAC地址表項可能不會在兩個老化周期内正常老化掉, 此時建議檢查鍊路質量或者通過命令port link-flap protection enable配置鍊路振蕩保護功能進行抑制。
MAC地址學習控制
由于MAC地址表的容量是有限的,當黑客僞造大量源MAC地址不同的報文發送到設備後,設備上的MAC地址表項資源可能會被耗盡。當MAC表被填滿後,即使它再收到正常的報文,也無法學習到報文中的源MAC地址,導緻報文廣播轉發,浪費帶寬資源。
為了解決以上問題,設備提供了兩種方式對MAC地址學習進行控制:
基于VLAN或接口關閉學習MAC能力
基于VLAN或接口限制MAC地址數
表3 MAC地址學習控制方式說明
MAC地址漂移
什麼是MAC地址漂移
MAC地址漂移是指設備上一個VLAN内有兩個端口學習到同一個MAC地址,後學習到的MAC地址表項覆蓋原MAC地址表項的現象。圖1所示,MAC地址為0011-0022-0034,VLAN ID為2的表項,出接口由GE0/0/1刷新為GE0/0/2,這就是MAC地址漂移。設備出現MAC地址漂移時,設備CPU占用率會有不同程度地升高。
正常情況下,網絡中不會在短時間内出現大量MAC地址漂移的情況。出現這種現象一般都意味着網絡中存在環路,可以通過查看告警信息和漂移記錄,快速定位和排除環路。
圖4 MAC地址漂移示意圖
如何進行MAC地址漂移檢測
MAC地址漂移檢測是利用MAC地址出接口跳變的現象,檢測MAC地址是否發生漂移的功能。
配置MAC地址漂移檢測功能後,在發生MAC地址漂移時,可以上報包括MAC地址、VLAN,以及跳變的接口等信息的告警。其中跳變的接口即為可能出現環路的接口。網絡管理員可以根據告警信息,手工排查網絡中環路的源頭,也可以使用MAC漂移檢測提供的後續動作,使跳變的端口down或者VLAN從端口中退出,實現自動破環。
圖5 MAC地址漂移檢測組網圖
如圖5網絡中,若SwitchC和SwitchD之間誤接網線,則SwitchB、SwitchC、SwitchD之間形成環路。當SwitchA上Port1接口從網絡中收到一個廣播報文後轉發給SwitchB,該報文經過環路,會被SwitchA上Port2接口收到。配置MAC地址漂移檢測功能,SwitchA就會感知到MAC地址出接口跳變的現象。若連續出現此現象,SwitchA就會上報MAC漂移告警,提醒管理員進行維護。
MAC地址漂移檢測是單台設備根據MAC學習變化感知到流量拓撲變化,是一種單點技術,無法精确感知網絡拓撲。因而該技術應用有一定的場景限制,建議使用在下挂網絡可能會成環的場景。
如何防止MAC地址漂移
網絡中産生環路或非法用戶進行網絡攻擊都會造成MAC地址發生漂移,導緻MAC地址不穩定。
在規劃網絡時,可以通過下面兩種方式來避免這種情況:
提高接口MAC地址學習優先級。當不同接口學到相同的MAC地址表項時,高優先級接口學到的MAC地址表項可以覆蓋低優先級接口學到的MAC地址表項,防止MAC地址在接口間發生漂移。
不允許相同優先級的接口發生MAC地址表項覆蓋。當僞造網絡設備所連接口的優先級與安全的網絡設備相同時,後學習到的僞造網絡設備的MAC地址表項不會覆蓋之前正确的表項。但如果網絡設備下電,仍會學習到僞造網絡設備的MAC地址,當網絡設備再次上電時将無法學習到正确的MAC地址。
如圖6所示,為防止非法用戶僞造服務器MAC地址入侵Switch,可以提高服務器側接口Port1的MAC地址學習優先級。
圖6 MAC防漂移應用組網圖
MAC地址漂移後的處理機制
接口發生MAC地址漂移後,設備會自動觸發廣播和未知單播的流量抑制,使得發生漂移的出接口轉發速率為入接口帶寬的1%,用戶可以執行storm suppression mac-address flapping命令使接口下MAC漂移聯動流量抑制的阈值按照cir進行靈活的配置,并可以使報文強制按照MAC漂移聯動流量抑制的阈值進行轉發。
用戶還可以配置發生漂移後接口Error-Down功能。當檢測到發生MAC地址漂移,接口将會被Error-Down并上報告警。
MAC刷新ARP
在以太網中,主機設備是根據MAC地址來發送、接收以太網數據幀。ARP用于提供IP地址到MAC地址的映射。當不同網段間通信時,需要使用ARP表項來将IP地址映射到正确的MAC地址及相應的出接口上。
一般來說設備上的MAC表項和ARP表項的出接口是一緻的。如圖1所示,在T1時間點,MAC地址表項和ARP表項的出接口是一緻的,都是GE0/0/1。當端口切換後,在T2時間點,MAC地址表項的出接口在收到報文時立即刷新為GE0/0/2,但是ARP表項的出接口還是GE0/0/1,需要等待T3時間點即ARP表項的老化時間到達後,通過ARP老化探測,才會刷新為GE0/0/2。這樣就在T2時間點和T3時間點之間,ARP表項的出接口是不可用的,會導緻不同網段間設備的通信中斷。
圖7 配置MAC刷新ARP功能之前
MAC刷新ARP可以實現在MAC出接口更新時,直接刷新ARP表項的出接口的功能。如圖2所示,在配置MAC刷新ARP功能後,在T2時間點,MAC地址表項出接口刷新為GE0/0/2後,直接把ARP表項的出接口刷新為GE0/0/2。解決了T2時間點和T3時間點之間,ARP表項出接口不可用的問題,避免了業務通信的中斷。
圖8 配置MAC刷新ARP功能之後
通過MAC刷新ARP加快VRRP流量切換
VRRP備份組下挂的設備是服務器時,使用MAC刷新ARP的功能,可以加快VRRP主備切換的性能,減少業務中斷時間。
虛拟路由冗餘協議VRRP(Virtual Router Redundancy Protocol)通過把幾台路由設備聯合組成一台虛拟的路由設備,将虛拟網關設備的IP地址作為用戶的默認網關實現與外部網絡通信。當網關設備發生故障時,VRRP機制能夠選舉新的網關設備承擔數據流量,從而保障網絡的可靠通信。
一般情況下,如圖9所示用戶HostA通過Switch雙歸屬到SwitchA和SwitchB。在SwitchA和SwitchB上配置VRRP備份組,實現鍊路冗餘備份。當SwitchA和Switch之間的連線壞掉時,MAC和ARP表項可以及時切換到Switch和SwitchB的連線上。
圖9 VRRP典型組網圖
而在有些情況下如圖10,VRRP備份組下挂的設備,不是交換機而是服務器Server。Server發送報文時,一般情況下隻會選擇一個網口發包,當檢測到網絡故障或者流量異常時,切換到另外一個網口發包。
SwitchA為VRRP主設備,一開始服務器使用Port2發送報文,此時SwitchA學習到的服務器ARP表項和MAC表項都在Port2接口上,SwitchB學習的服務器MAC在Port1接口;
當服務器檢測到Port2故障時,服務器切換至Port1繼續發送業務報文,這時SwitchA學習到的服務器MAC地址會刷新到Port1,但如果服務器切換轉發接口後不主動發送ARP請求報文的話,ARP表項還是在Port2接口上。這樣SwitchA發往服務器的報文就會從接口Port2接口發出去,而不能被正确轉發,直到該ARP表項老化。
這種情況下就可以在Switch上配置MAC刷新ARP功能,當MAC表項的出接口變化時,會即時更新ARP表項的出接口,從而保證MAC表項和ARP表項的一緻性。
圖10 VRRP下挂服務器組網圖
MAC缺省配置
表4 MAC表參數缺省值
限于篇幅與閱讀體驗,本章分享内容就先到這裡。
有話要說...