網絡工程師(18):"牛氣沖天"的三層交換機

我們曾經提到過,路由器的功能不僅僅是為了實現網絡層的互通,更重要的是用來連接不同鏈路層類型的網絡。可以說,交換機是以太網中的大紅人,但離開以太網,路由器的作用更為重要,比如交換機在MPLS網絡中就無能為力,等等。

在很多企業網中,基本都是由若干採用以太網技術的園區網構建而成,其他局域網技術目前基本上見不到了。也就是說,企業網中大量使用了以太網交換機,用路由器來實現VLAN間互通實在是大材小用,而且速度還慢。路由器往往扮演著更為重要的角色,很少用來實現VLAN間路由。

那麼能不能讓交換機自己來實現VLAN間路由呢?

必須能!我們給交換機增加路由模塊,使之具備路由功能。之前曾經討論過,交換機工作在鏈路層,也叫二層交換機,但如果交換機具備了路由功能,就變成了三層交換機!

三層交換機在網絡中的地位實在太重要了,甚至可以說,企業網中可以沒有路由器,但不能沒有三層交換機!

由於廣播風暴的問題,我們不得不使用VLAN來隔離廣播域,但是用路由器來實現VLAN間互通有很多缺點,而三層交換機則可以完美地解決!

我們來看看三層交換機的特點:

網絡工程師(18):

首先,它依然是一臺交換機,同一個VLAN的數據幀還是根據MAC地址錶轉發,這和普通的二層交換機沒什麼區別,如圖中PCB和PCC互訪;

其次,它具有路由功能,可以給每個VLAN創建一個三層SVI接口(Switch Virtual Interface,交換機虛擬接口),給SVI接口配置上IP地址就可以做為這個VLAN的網關。多個VLAN的SVI接口配置的IP地址段就成為了三層交換機的直連路由。

最重要的是,三層交換機在實現VLAN間互通時,具有"一次路由,多次轉發"的特點。這個特點非常牛,讓三層交換機的發展如日中天,也是以太網能夠在局域網領域"一統武林"的有力武器!

我們把三層交換機實現VLAN間路由的功能,稱為MLS(Multiple Layer Switching,多層交換)。

MLS有兩種實現方法:一種叫傳統MLS,另一種叫基於CEF的MLS。

傳統MLS的核心,是通過ASIC(Application Specific Integrated Circuit,專用集成電路)芯片,對被路由的數據包快速執行以太網幀的再封裝操作。由於是由硬件芯片來快速封裝,所以速度非常快。

如圖中PCA訪問PCB的過程是:

1、PCA發送ARP獲取網關的MAC地址為MAC_SVI;

2、PCA把數據幀封裝為:SMAC為MAC_PCA,DMAC為MAC_SVI。源IP為10.1.1.2,目的IP為10.1.2.2,發送給交換機;

3、交換機收到後,查看DMAC,如果不是自己SVI接口的MAC,則根據MAC地址表做二層轉發。否則查看ASIC中是否有MLS匹配項,如果有,直接進行第7步。否則進行第4步;

4、交換機拆除以太網封裝,由路由模塊查找路由表,發現是直連VLAN3的SVI接口(如果這裡沒有匹配的路由,交換機丟棄數據包);

5、路由模塊發送ARP,獲得PCB的MAC地址;

6、交換機根據PCA、PCB的IP、MAC、交換機SVI、數據幀入接口、出接口等信息在ASIC中創建一條MLS條目;

7、交換機根據ASIC中的MLS條目,把數據幀重新封裝:SMAC為MAC_SVI,DMAC為MAC_PCB,並從連接PCB的端口發出。

PCA發給PCB的第一個數據幀經歷了1~7步後,後續的數據幀交換機只做第3步和第7步即可,即所謂的一次路由,多次轉發!

傳統MLS有兩個特點:一是查找路由表是由軟件而非硬件完成;二是MLS條目記錄了精確的內容,其中任何一項數據改變都不能匹配上。比如PCA訪問PCB後,ASIC中有了對應的MLS條目,但PCA再訪問PCC時,因目的IP地址發生變化,無法匹配上原有的MLS條目,所以第一個數據幀也要從2~7來一遍,在ASIC中創建一條新的PCA到PCC的MLS條目才能快速轉發。所以也有人把這叫做"精確匹配轉發模式"。

網絡工程師(18):

基於CEF的MLS的核心,是根據拓撲、路由表預先把查找到的轉發信息存儲在ASIC中,並獲取二層封裝信息,實現數據幀的快速再封裝,轉發速度進一步提升。

CEF(Cisco Express Forwarding,Cisco快速轉發)原是思科的快速轉發技術。它在ASIC中創建了兩個表:一個叫FIB(Forward Information database,轉發信息庫)。FIB很像路由表,有目標網段和掩碼,並採用最長掩碼匹配。每當拓撲、路由表發生變化,交換機都會自動更新FIB表;另一個叫鄰接關係表,保存了數據幀再封裝所用到的MAC地址等信息。交換機預先通過ARP協議獲取FIB表中每一項的下一跳MAC地址,以便數據幀能夠快速再封裝。

如PCA訪問PCB的過程是:

1、PCA發送ARP獲取網關的MAC地址為MAC_SVI;

2、PCA把數據幀封裝為:SMAC為MAC_PCA,DMAC為MAC_SVI。源IP為10.1.1.2,目的IP為10.1.2.2,發送給交換機;

3、交換機收到後,查看DMAC,若不是自己SVI接口的MAC,則根據MAC地址表做二層轉發。否則查看鄰接關係表中是否有MLS匹配項,如果有,直接進行第6步。否則進行第4步;

4、交換機拆除以太網封裝,查找FIB表,向下一跳發送ARP,獲得PCB的MAC地址;

5、交換機根據PCA、PCB的IP、MAC、交換機SVI的MAC、數據幀入接口、出接口等信息在鄰接關係表中創建一條新的MLS條目;

6、交換機根據鄰接關係表中的MLS條目,把數據幀重新封裝:SMAC為MAC_SVI,DMAC為MAC_PCB,並從連接PCB的端口發出。

在以上步驟中,第4步和第5步一般由交換機預先就已經做好,交換機在第3步完成後就到了第6步。如果在第3步的鄰接關係表中沒有找到,交換機不是丟棄幀而是再做一遍第4步和第5步,若第4步的FIB表中還是找不到,則丟棄此幀(一般還是找不到)。

我們注意到,如果PCB和PCC不是交換機直連,而是根據路由表中10.1.2.0/24這條路由訪問,那麼,PCA訪問PCB和PCC就可以匹配上鄰接關係表中的同一條MLS條目,因為它們在FIB中的下一跳相同。所以也有人把這叫做"最長匹配轉發模式"。

網絡工程師(18):

傳統MLS和基於CEF的MLS的重要區別:

傳統MLS精確匹配,每個數據流的第一個包都要查找路由表;

基於CEF的MLS查表都由硬件實現,預先就已經根據路由表保存了數據幀的再封裝信息,對到來的數據幀可以直接進行重新封裝並轉發。


小Q:三層交換機收到一個數據幀後,如何判斷要做二層交換還是三層交換?

歡迎大家留言討論。


分享到:


相關文章: