這個實驗有點長,看官慢慢看!
傳說中用來取代生成樹(Spanning-tree)的FabricPath(這個還真不太好翻譯,就簡稱FP吧),到底是啥?先別急,首先回顧一下生成樹協議,作爲二層網絡的防環路機制,生成樹確實有積極的一面,不過缺點也是一大堆啦:
1. 收斂很慢,論秒計的速度;
2. 運算機制也比較複雜,配置管理和維護也相對複雜;
3. 網絡裏有接口被BLOCK,才能形成無環路的樹;
在數據中心網絡裏,這些缺點都會進一步被放大,設想:一臺服務器連接到網絡上,需要若干秒才能開始轉發數據,這個速度太慢了;一個巨大的二層網絡的生成樹維護,想想也是醉了的;花了大價錢買來的10G、40G甚至是100G端口,卻被置於BLOCK狀態,那可真是叔可忍嬸兒也不能忍啊!
小小的吐槽了一下生成樹,當然是爲了顯示出社會主義制度,哦,不對,是FabricPath的巨大優越性:
1. 收斂速度大大加快,FP的底層協議是ISIS,ISIS作爲一個路由協議的收斂速度可以達到毫秒級;
2. 雖然原理並不那麼簡單,不過配置起來那就… 哈哈哈,容我大笑五分鐘;
3. 一個二層網絡,居然不用BLOCK任何端口也不會產生環路,好神奇,對比生成樹,最起碼帶寬的利用率高了不少;
實驗邏輯拓撲:
實驗目標:四臺設備互聯的標記爲綠色的線路上運行FabricPath協議
如果不是運行FabricPath,這樣一個二層網絡如果不BLOCK掉一部分接口,那環路是不可避免的了,接踵而來的就是廣播風暴,最後網絡癱瘓,這裏用了FabricPath,情況就完全不一樣了~
Showtime,實驗開始
第一步,允許設備運行FabricPath
DefaultVDC裏開啓FabricPath這個特性集,然後到需要運行FP的VDC裏去開啓FP
N5K也類似,
第二步,定義FP模式的VLAN,
可以看出VLAN的模式有兩種CE和FabricPath,關於這個模式是啥意思,最後詳細說明下 (每臺設備上配置VLAN的方式是一樣的,我這裏就只貼一個圖了)
第三步,把互連接口配置成FP模式
好吧,事情發展到了這個地步,我必須告訴你們,FP的實驗已經做完了…
鄰居建立成功,控制層面開始計算,生成FabricPath路由表和MAC地址表之後,數據層面該怎麼轉發就怎麼轉發啦~
FabricPath的基本操作就是這麼簡單,
細心的同學可能會問,爲啥兩臺N7K之間的鏈路沒有運行FabricPath呢,這個留個大家去思考一下咯?小提示,結合實驗一里面的“主幹、枝葉”結構去思考~
根據以上實驗,補充一些關於FabricPath的知識點,不關心理論的,請直接忽視啦
傳統生成樹網絡中,Server A要訪問Server B,過程是這樣的:基於數據幀頭部裏的Destination MAC信息,ServerB的MAC地址是MAC B
幀頭部包含的信息
Destination MAC (MACA) | Source MAC (MACB) | … … |
DC2-N5K-1交換機上去查CAM表
設備 | MAC | 端口 |
DC2-N5K-1 | MAC A | E1/15 |
MAC B | E1/21-22 |
通過E1/21-22轉發給DC2-N7K-3,
於是,逐跳逐跳的,數據幀從DC2-N5K-1 -> DC2-N7K-3 ->DC2-N5K-2 最後到達Server B,是傳統網絡中的二層交換過程。其核心的思路是轉發是逐跳的,每一跳都要根據地址進行表項查找,這種執行效率是比較低下的。
FabricPath原理相對於二層交換,非常類似於MPLS相對於傳統路由的關係,FabricPath在原有數據幀的前面增加了一個新的二層頭部(MAC in MAC),於是網絡的選路不再基於MAC信息,而是基於新頭部中的信息 - - - Switch ID。
FP網絡中每個節點都有一個唯一的Switch ID(類似於路由協議的router-id),協議會分配,也可以手工指定Switch ID,但必須保證唯一性;FP的底層協議是IS-IS,IS-IS根據Switch-ID來做二層路由計算,在二層路由中用到的表項有兩個FabricPath IS-IS路由表、 FabricPath路由表和mac address-table,
FabricPath IS-IS routing table,到任何一個Switch-ID應該從哪個接口轉發,
例如下圖紅框:60是通過Port-Channel200可達,
Mac address-table,除了MACVLAN 等信息之外,還有SWID/SSID/LID,例如40/0/210
SWID | Switch-ID,FabricPath環境中設備的標識符,必須唯一不衝突 | |
SSID | SubSwitch-ID,沒有vPC+,這個值始終爲0 | |
LID | FabricPath頭部裏的Port-ID,用來標識交換機上的具體接口, (這個值看起來會很奇怪,不過交換機知道是指的哪個接口啦) |
那麼這個時候,Server A 到Server B的訪問是怎麼樣的呢?
首先,數據幀到達DC2-N5K-1之後,會被加上一個新的FabricPath 頭部
<--- Outer DA --><--- Outer SA -->
Switch ID | Sub Switch ID | Port ID | Switch ID | Sub Switch ID | Port ID | Ftag | ...... |
40 | 0 | 4306 | 30 | 0 | 4306 | 1 |
從進入FabricPath的域開始,設備的路由都是基於Switch ID,所有Switch ID該如何到達,在FabricPath路由表和FabricPath IS-IS路由表裏可以查到。
並且數據包是直接要求發送往具體某個Switch ID上的某個PortID對應的接口的,End-to-End的方式,(非常類似於MPLS的標籤查找,完全區別於基於MAC的逐跳查找)
最後我們來看看,FabricPath跟vPC強強聯合的情景吧,這種工作場景被稱之爲vPC+(一般的vPC的二層網絡都是運行Spanning-Tree生成樹協議的)
vPC跟FabircPath兩個傢伙,想要一起工作,除了前面實驗四里面演示過的vPC配置和實驗五上半部分介紹過的FabricPath配置之外,vPC的配置要做如下改動
FabricPath工作在vPC+的環境下只所以有些特殊,原因是:SwitchID跟設備應該是一一對應的,但是vPC的Peer Switch兩臺可以看做是一臺設備在工作,所以,
有vPC+的情況下,vPC的PeerSwitch會增加一個虛擬的節點,這個節點有一個虛擬的Switch ID,稱之爲VirtualSwitch ID。
接入層Switch通過vPC20發送數據,目的地址不是DC2-N5K-1或DC2-N5K-2的Switch ID,而是這兩臺PeerSwitch虛擬出來的Virtual Switch ID,至於這個流量是從Port7發送還是Port6發送,這個會HASH算法運算之後進行負載均衡。
當數據要發往Switch的時候,情形也類似,數據包的目的地址其實是而是這兩臺PeerSwitch虛擬出來的Virtual Switch ID,數據包到底是從DC2-N5K-1還是DC2-N5K-2走?其實是誰都不重要,最終都會從vPC PeerSwitch共同管理的vPC20走,至於最終是哪臺設備來做處理,會用HASH算法計算後做負載均衡。
FabricPath IS-IS routing table,會增加一個virtualSwitch ID的條目
Mac address-table,除了MAC、VLAN、老化時間等信息之外,還有SWID/SSID/LID,例如: 70/0/0
Mac address-table,除了MAC、VLAN、老化時間等信息之外,還有SWID/SSID/LID,例如: 70/0/0
SWID | vPC+環境裏,是vPCdomain裏配置的virutal Switch-ID |
SSID | 用來標識vPC+下的一個Port-Channel, 可以這麼理解,在vPC+環境中,這個值標識出接口,只不過這個出接口是個virtualPort-Channel |
LID | 無意義 |