交換基礎知識

交換一詞最初來源於電話交換,在電話網中使用程控交換機來完成線路的選擇和連接,這是一種電路交換技術。本文中的交換是指數據通信領域的數據報交換技術,主要通過儲存/轉發的方式來完成數據報文的傳輸。


根據國際標準化組織(ISO)提出的開放系統互聯參考模型(OSI-RM),依據二層(鏈路層)信息進行數據幀轉發的稱爲二層交換,僅支持二層交換的交換機稱爲二層交換機;依據三層(網絡層)信息進行數據包轉發的稱爲三層交換,支持三層交換的交換機稱爲三層交換機。本文主要根據以太網互連技術的演進來介紹二、三層交換的相關基礎知識。

1         共享式以太網互連

以太網採用CSMA/CD機制,這種衝突檢測方法使得以太網可以使用共享總線型的連接方式。最初的局域網搭建採用HUB或者同軸電纜將同一網絡的主機互連起來,如圖1所示。

20091116_878044_image001_655251_97665_0.

                                                                                                                                                                      圖1 共享式以太網互連

HUB與同軸電纜都是典型的物理層設備,所有互連的設備位於一個衝突域中,當網絡流量較小時,衝突較少發生,利用衝突檢測機制已經可以較好的保證通信質量;但是當網絡流量增加到一定程度時,將導致衝突不斷,網絡的吞吐量受到嚴重影響,數據也可能頻繁的由於衝突而被拒絕發送。二層交換機的出現有效的解決了這個問題,大大的減小了衝突域的範圍。

2         二層交換原理

二層交換機工作在OSI模型的第二層,即數據鏈路層,它對數據包的轉發是建立在鏈路層信息——MACMedia Access Control )地址基礎之上的,它的內部一般使用稱爲ASICApplication Specific Integrated Circuit )的硬件芯片來實現轉發,同時由於是硬件轉發,其轉發性能非常高。二層交換機不同的端口發送和接收數據獨立,各端口屬於不同的衝突域,因此有效地隔離了網絡中物理層衝突域,使得通過它互連的主機(或網絡)之間不必再擔心流量大小對於數據發送衝突的影響,典型的組網結構如圖2所示。

20091116_878045_image002_655251_97665_0.

                                                                                                                                                       圖2 多臺主機通過二層交換機互連

由於二層交換機的轉發依據是MAC地址,下面先簡單介紹一下這個概念。

2.1        MAC地址簡介

在每個以太網幀的幀頭,都包含有一個目的MAC地址和一個源MAC地址,它的作用是標誌幀的源節點和目的節點的物理地址。一個MAC地址有48bit6個字節),從應用上可以分爲單播地址、組播地址、廣播地址:

(1)              單播地址:第1字節的最低位爲0,比如0000-0EF3-0038,一般用於標誌唯一的設備;

(2)              組播地址:第1字節的最低位爲1,比如0100-5E00-0001,一般用於標誌同屬一組的多個設備;

(3)              廣播地址:所有48bit全爲1,即FFFF-FFFF-FFFF,它用於標誌同一網段中的所有設備。

在常用的以太網幀結構中,目的、源MAC的位置如圖3所示。

    20091116_878046_image003_655251_97665_0.

                                                                                                                                                                   圖3 常見的以太網幀結構

2.2        二層交換基本原理

二層交換機通過解析和學習以太網幀的源MAC來維護MAC地址與端口的對應關係(保存MAC與端口對應關係的表稱爲MAC表),通過其目的MAC來查找MAC表決定向哪個端口轉發,基本流程如下:

(1)             二層交換機收到以太網幀,將其源MAC與接收端口的對應關係寫入MAC表,作爲以後的二層轉發依據。如果MAC表中已有相同表項,那麼就刷新該表項的老化時間。MAC表表項採取一定的老化更新機制,老化時間內未得到刷新的表項將被刪除掉;

(2)             根據以太網幀的目的MAC去查找MAC表,如果沒有找到匹配表項,那麼向所有端口轉發(接收端口除外);如果目的MAC是廣播地址,那麼向所有端口轉發(接收端口除外);如果能夠找到匹配表項,則向表項所示的對應端口轉發,但是如果表項所示端口與收到以太網幀的端口相同,則丟棄該幀。

從上述流程可以看出,二層交換通過維護MAC表以及根據目的MAC查錶轉發,有效的利用了網絡帶寬,改善了網絡性能。圖4是一個二層交換的示例。

20091116_878047_image004_655251_97665_0.

                                                                                                                                                                            圖4 二層交換示例

二層交換機的MAC地址老化和刷新通常直接由硬件ASIC芯片來完成,這裏順便介紹一下其通常採用的機制:

(1)              在芯片中儲存的每一個動態添加的MAC地址表項都有一個 1 bit 長度的老化標誌,同時芯片有一個老化定時器用於控制地址老化;

(2)              對於新學習到的MAC地址表項,其老化標誌位置1;對於已經學習到的MAC表項,如果後續有報文的源MAC與表項相同,那麼將其老化標誌位刷新爲1

(3)              每當芯片的老化定時器超時後,將MAC地址表中老化標誌位等於1的項目,修改其老化標誌位等於0;對於MAC地址表中老化標誌位等於0的項目,直接刪除。

在這樣的老化更新機制下,MAC地址的實際老化時間並不是精確的,而是一個範圍:12倍的老化定時器時間。

二層交換機雖然能夠隔離衝突域,但是它並不能有效的劃分廣播域。因爲從前面介紹的二層交換機轉發流程可以看出,廣播報文以及目的MAC查找失敗的報文會向所有端口轉發,當網絡中的主機數量增多時,這種情況會消耗大量的網絡帶寬,並且在安全性方面也帶來一系列問題。當然,通過路由器來隔離廣播域是一個辦法,但是由於路由器的高成本以及轉發性能低的特點使得這一方法應用有限。基於這些情況,二層交換中出現了VLAN技術。

2.3        支持VLAN的二層交換機

2.3.1       VLAN簡介

VLAN,即Virtual Local Area Network(虛擬局域網),遵循IEEE802.1Q標準,它在原來的以太網幀源MAC字段的後面加入了4個字節的VLAN Tag,這4字節的結構如圖5所示。

20091116_878048_image005_655251_97665_0.

                                                                                                                                                                      圖5 VLAN Tag示意圖

VLAN Tag中各字段的含義如下:

Type:取固定值0x8100,用於標誌VLAN Tag

User Priority:用戶優先級,用於流量的等級劃分;

Flag:該bit在以太網中固定取0

VLAN-ID:取值爲04095,用於標誌不同VLAN

由於不同VLAN之間是二層隔離的,通過將不同的主機劃分到不同的VLAN中去,就有效的控制了廣播域的範圍。我們知道,通常情況下主機發出的報文都是不帶VLAN Tag的(稱爲Untagged報文),那麼如何將這樣的報文劃分到某個VLAN中去呢。VLAN劃分的方法有多種,包括基於端口劃分、基於MAC劃分、基於IP劃分、基於協議劃分等等。目前,基於端口來劃分VLAN是使用最爲廣泛的,也就是通過收到報文的端口來決定Untagged報文屬於哪個VLAN。當Untagged報文進入交換機內部以後,會根據VLAN劃分被加上VLAN Tag,然後進行後續轉發處理。當然,如果報文本身是帶了VLAN Tag的,就直接根據其中的VLAN ID來決定了。圖6是一個VLAN應用的示意圖。

20091116_878049_image006_655251_97665_0.

                                                                                                                                                                      圖6 VLAN應用示意圖

6中,兩臺二層交換機之間的鏈路一般稱爲Trunk鏈路,其上傳輸的一般都是帶VLAN Tag的報文(稱爲Tagged報文),這樣的報文進入交換機以後直接根據其VLAN ID來區分VLAN

交換機引入VLAN後,帶來了以下好處:

(1)      有效控制廣播域範圍,廣播流量僅在VLAN內轉發;

(2)      配置靈活,虛擬局域網的範圍可根據需要隨時調整;

(3)      由於不同VLAN之間二層隔離,帶來了更高的安全性。

有關VLAN的內容這裏不再深入討論,感興趣的同學可參考其他VLAN相關文檔。

支持VLAN的二層交換機,其二層轉發和MAC地址維護方式都發生了一定的變化,下面分別討論兩種不同的MAC地址維護方式的交換機。

2.3.2       SVL方式的二層交換機

SVLShared VLAN Learning)方式的二層交換機在學習MAC地址並建立MAC地址表的過程中並不附加VLAN ID,或者說它的MAC地址表是爲所有VLAN共享使用的。它的二層轉發基本流程如下:

(1)      根據接收到的以太網幀的源MAC信息添加或刷新MAC地址表項;

(2)      根據目的MAC信息查找MAC地址表,如果沒有找到匹配項,那麼在報文對應的VLAN內廣播;

(3)      如果找到匹配項,但是表項對應的端口並不屬於報文對應的VLAN,那麼丟棄該幀;

(4)      如果找到匹配項,且表項對應的端口屬於報文對應的VLAN,那麼將報文轉發到該端口,但是如果表項對應端口與收到以太網幀的端口相同,則丟棄該幀。

這種類型的二層交換機轉發與普通二層交換機轉發基本相同,只是多了轉發過程中的VLAN檢查。這樣的交換機可能遇到下述問題:位於不同VLAN的主機(或網絡設備)具有相同的MAC地址,由於SVL交換機所有VLAN共享一個MAC表,這樣對應的MAC表項中端口就會不斷的變化,而且兩個VLAN的報文轉發也會受到影響,這種情況如圖7所示。

20091116_878050_image007_655251_97665_0.

                                                                                                                                                                  圖7 SVL二層交換示意圖

7中,VLAN 10PC A發送給PC B的報文由於MAC地址表查找結果與VLAN不符而被丟棄了;同理,當MAC B學習到PORT 2時,VLAN 20PC DPC C之間的通信就會出現問題。這樣,雖然不同的主機被隔離在了不同的衝突域和廣播域中,但是MAC地址卻可能導致不同VLAN的通信相互影響。

在實際應用中,SVL方式的二層交換機已經比較少見了。

2.3.3       IVL方式的二層交換機

IVLIndependent VLAN Learning)方式的交換機在學習MAC地址並建立MAC地址表的過程中同時附加VLAN ID,同一個MAC地址可以出現在不同的VLAN中,這樣的方式也可以理解爲每個VLAN都有自己獨立的MAC地址表。它的二層轉發基本流程如下:

(1)      根據接收到的以太網幀的源MACVLAN-ID信息添加或刷新MAC地址表項;

(2)      根據目的MACVLAN-ID查找MAC地址表項,如果沒有找到匹配項,那麼在VLAN-ID對應的VLAN內廣播;

(3)      如果能夠找到匹配表項,則向表項所示的對應端口轉發,但是如果表項所示端口與收到以太網幀的端口相同,則丟棄該幀。

SVL方式交換機上可能遇到的轉發問題,在IVL交換機中得以解決,如圖8所示。

20091116_878051_image008_655251_97665_0.

                                                                                                                                                                    圖8 IVL二層交換示意圖

IVL方式的二層交換機轉發流程更加清晰,VLAN之間不會互相影響,目前實際應用中的二層交換機大多采用這種方式。

3         三層交換基本原理

早期的網絡中一般使用二層交換機來搭建局域網,而不同局域網之間的網絡互通由路由器來完成。那時的網絡流量,局域網內部的流量佔了絕大部分,而網絡間的通信訪問量比較少,使用少量路由器已經足夠應付了。通常的組網結構如圖9

20091116_878052_image009_655251_97665_0.

                                                                                                                                                             圖9 二層交換機+路由器組網

但是,隨着數據通信網絡範圍的不斷擴大,網絡業務的不斷豐富,網絡間互訪的需求越來越大,而路由器由於自身成本高、轉發性能低、端口數量少等特點無法很好的滿足網絡發展的需求。我們知道,路由器主要是通過IP轉發(三層轉發)來實現不同網絡間的互連,那麼是否能夠將交換機的高性能應用到三層轉發中去呢?答案是肯定的,三層交換機就是這樣一種實現了高速三層轉發的設備。大多數三層交換機採用ASIC硬件芯片來完成轉發,ASIC芯片內部集成了IP三層轉發的功能,包括檢查IP報文頭、修改存活時間(TTL)參數、重新計算IP頭校驗和、IP包的數據鏈路封裝等等。三層交換機的組網結構如圖10所示。

20091116_878053_image010_655251_97665_0.

                                                                                                                                                                圖10 三層交換機組網結構

路由器的三層轉發主要依靠CPU進行,而三層交換機的三層轉發依靠ASIC芯片完成,這就決定了兩者在轉發性能上的巨大差別。當然,三層交換機並不能完全替代路由器,路由器所具備的豐富的接口類型、良好的流量服務等級控制、強大的路由能力等仍然是三層交換機的薄弱環節。

目前的三層交換機一般是通過VLAN來劃分二層網絡並實現二層交換,同時能夠實現不同VLAN間的三層IP互訪。在討論三層交換機的轉發原理之前有必要交代一下不同網絡的主機之間互訪時的行爲:

(1)              源主機在發起通信之前,將自己的IP與目的主機的IP進行比較,如果兩者位於同一網段(用網絡掩碼計算後具有相同的網絡號),那麼源主機直接向目的主機發送ARP請求,在收到目的主機的ARP應答後獲得對方的物理層(MAC)地址,然後用對方MAC作爲報文的目的MAC進行報文發送。位於同一VLAN(網段)中的主機互訪時屬於這種情況,這時用於互連的交換機作二層交換轉發;

(2)              當源主機判斷目的主機與自己位於不同網段時,它會通過網關(Gateway)來遞交報文,即發送ARP請求來獲取網關IP地址對應的MAC,在得到網關的ARP應答後,用網關MAC作爲報文的目的MAC進行報文發送。注意,發送報文的源IP是源主機的IP,目的IP仍然是目的主機的IP。位於不同VLAN(網段)中的主機互訪時屬於這種情況,這時用於互連的交換機作三層交換轉發。

3.1        三層交換機硬件結構

爲了後續討論的三層交換原理便於理解,這裏簡單介紹一下三層交換機的內部結構,如圖11所示。

    20091116_878054_image011_655251_97665_0.

                                                                                                                                                                圖11 三層交換機硬件結構

根據圖11,三層交換機內部的兩大部分是ASICCPU,它們的作用分別如下:

(1)             ASIC:完成主要的二三層轉發功能,內部包含用於二層轉發的MAC地址表以及用於IP轉發的三層轉發表;

(2)             CPU:用於轉發的控制,主要維護一些軟件表項(包括軟件路由表、軟件ARP表等等),並根據軟件表項的轉發信息來配置ASIC的硬件三層轉發表。當然,CPU本身也可以完成軟件三層轉發。

從三層交換機的結構和各部分作用可以看出,真正決定高速交換轉發的是ASIC中的二三層硬件表項,而ASIC的硬件表項來源於CPU維護的軟件表項。

3.2        三層交換原理

下面分別以兩種組網情況下的主機間通信來解釋三層交換機的轉發原理。

組網1如圖12所示,通信的源、目的主機連接在同一臺三層交換機上,但它們位於不同VLAN(網段)。對於三層交換機來說,這兩臺主機都位於它的直連網段內,它們的IP對應的路由都是直連路由。

20091116_878055_image012_655251_97665_0.

                                                                                                                                                                       圖12 三層轉發組網1

12中標明瞭兩臺主機的MACIP地址、網關,以及三層交換機的MAC、不同VLAN配置的三層接口IP。當 PC A PC B 發起ICMP請求時,流程如下:(假設三層交換機上還未建立任何硬件轉發表項)

(1)             根據前面的描述,PC A首先檢查出目的IP地址2.1.1.2PC B)與自己不在同一網段,因此它發出請求網關地址1.1.1.1對應MACARP請求;

(2)             L3_SW收到PC AARP請求後,檢查請求報文發現被請求IP是自己的三層接口IP,因此發送ARP應答並將自己的三層接口MACMAC S)包含在其中。同時它還會把PC AIP地址與MAC地址對應(1.1.1.2<==>MAC A)關係記錄到自己的ARP表項中去(因爲ARP請求報文中包含了發送者的IPMAC);

(3)             PC A得到網關(L3_SW)的ARP應答後,組裝ICMP請求報文併發送,報文的目的MACMAC S、源MACMAC A、源IP1.1.1.2、目的IP2.1.1.2

(4)             L3_SW收到報文後,首先根據報文的源MAC+VID(即VLAN ID)更新MAC地址表。然後,根據報文的目的MACVID查找MAC地址表,發現匹配了自己三層接口MAC的表項。這裏說明一下,三層交換機爲VLAN配置三層接口IP後,會在交換芯片的MAC地址表中添加三層接口MACVID的表項,並且爲表項的三層轉發標誌置位。當報文的目的MAC匹配這樣的表項以後,說明需要作三層轉發,於是繼續查找交換芯片的三層表項;

(5)             交換芯片根據報文的目的IP去查找其三層表項,由於之前未建立任何表項,因此查找失敗,於是將報文送到CPU去進行軟件處理;

(6)             CPU根據報文的目的IP去查找其軟件路由表,發現匹配了一個直連網段(PC B對應的網段),於是繼續查找其軟件ARP表,仍然查找失敗。然後L3_SW會在目的網段對應的VLAN 3的所有端口發送請求地址2.1.1.2對應MACARP請求;

(7)             PC B收到L3_SW發送的ARP請求後,檢查發現被請求IP是自己的IP,因此發送ARP應答並將自己的MACMAC B)包含在其中。同時,將L3_SWIPMAC的對應關係(2.1.1.1<==>MAC S)記錄到自己的ARP表中去;

(8)             L3_SW收到PC BARP應答後,將其IPMAC對應關係(2.1.1.2<==>MAC B)記錄到自己的ARP表中去,並將PC AICMP請求報文發送給PC B,報文的目的MAC修改爲PC BMACMAC B),源MAC修改爲自己的MACMAC S)。同時,在交換芯片的三層表項中根據剛得到的三層轉發信息添加表項(內容包括IPMAC、出口VLAN、出端口),這樣後續的PC A發往PC B的報文就可以通過該硬件三層表項直接轉發了;

(9)             PC B收到L3_SW轉發過來的ICMP請求報文以後,迴應ICMP應答給PC AICMP應答報文的轉發過程與前面類似,只是由於L3_SW在之前已經得到PC AIPMAC對應關係了,也同時在交換芯片中添加了相關三層表項,因此這個報文直接由交換芯片硬件轉發給PC A

(10)         這樣,後續的往返報文都經過查MAC=>查三層轉發表的過程由交換芯片直接進行硬件轉發了。

從上述流程可以看出,三層交換機正是充分利用了一次路由(首包CPU轉發並建立三層硬件表項)、多次交換(後續包芯片硬件轉發)的原理實現了轉發性能與三層交換的完美統一。

下面介紹另一種組網情況的三層轉發流程,如圖13所示。

       20091116_878056_image013_655251_97665_0.

                                                                                                                                                                       圖13 三層轉發組網2

13中標明瞭兩臺主機的MACIP地址、網關,以及兩臺三層交換機的MAC、不同VLAN配置的三層接口IP。假設L3_SW1上配置了靜態路由:ip route 2.1.1.0 255.255.255.0 3.1.1.2L3_SW2上配置了靜態路由:ip route 1.1.1.0 255.255.255.0 3.1.1.1。當然,路由信息也可以通過動態路由協議的交互來獲得,有關路由的知識請查閱相關文檔。

這種組網情況下的轉發過程與圖12的組網1情況是類似的,下面的流程講解中將省略部分前面已經分析過的細節內容。當 PC A PC B 發起ICMP請求時,流程如下:(假設三層交換機上還未建立任何硬件轉發表項)

(1)            PC A首先檢查出目的IP地址2.1.1.2PC B)與自己不在同一網段,因此它通過ARP解析得到網關地址1.1.1.1對應的MACMAC S1)。然後,PC A組裝ICMP請求報文併發送,報文的目的MACMAC S1、源MACMAC A、源IP1.1.1.2、目的IP2.1.1.2

(2)            L3_SW1收到報文後,首先根據報文的源MAC+VID更新MAC地址表。然後,根據報文的目的MACVID查找MAC地址表,發現匹配了自己三層接口MAC的表項,於是繼續查找芯片的三層轉發表;

(3)            由於之前未建立任何表項,因此三層轉發表查找失敗,於是將報文送到CPU去進行軟件處理;

(4)            CPU根據報文的目的IP去查找其軟件路由表,發現匹配路由2.1.1.0/24,其下一跳IP地址爲3.1.1.2,於是繼續查找3.1.1.2是否有對應的ARP,仍然查找失敗。然後L3_SW1在下一跳地址3.1.1.2對應的VLAN 4內發起ARP請求,並得到L3_SW2的迴應,從而得到IPMAC對應關係(3.1.1.2<==>MAC S2);

(5)            L3_SW1PC A發出的ICMP請求報文轉發給L3_SW2,報文的目的MAC修改爲L3_SW2MACMAC S2),源MAC修改爲自己的MACMAC S1)。同時,將剛剛用到的轉發信息添加到交換芯片的三層轉發表中去,包括匹配的網段2.1.1.0/24、下一跳地址的MACMAC S2)、出口VLAN、出端口。這樣,後續發往2.1.1.2的報文就可以直接通過交換芯片硬件轉發了;

(6)            L3_SW2收到報文後,與組網1中的處理類似,經過查MAC=>查三層轉發表=>CPU=>匹配直連路由=>ARP解析=>轉發報文同時添加硬件表項的過程,將報文轉發給PC B,此時報文的目的MAC修改爲PC BMACMAC B),源MAC修改爲L3_SW2MACMAC S2)。這樣後續發往2.1.1.2的報文就直接由交換芯片硬件轉發了;

(7)            PC B收到來自PC AICMP請求報文後進行ICMP應答。由於在ICMP請求報文轉發的過程中,每個網段的兩端節點都已經通過ARP解析得到了對方的IPMAC對應關係,因此應答報文的轉發完全由交換芯片完成(查MAC=>查三層轉發表=>發送);

(8)            這樣,後續的往返報文都經過查MAC=>查三層轉發表的過程由交換芯片直接進行硬件轉發了。

 

從上述兩種組網情況下的轉發流程可以看出,三層交換機的轉發具有以下特點:

(1)              首包通過CPU轉發,同時建立交換芯片硬件表項;後續包由交換芯片直接硬件轉發,即常說的一次路由、多次交換

(2)              交換芯片的硬件轉發並不關心路由的具體下一跳IP地址是多少,硬件三層表項中只包含了目的地址(或網段)、目的IP(或下一跳IP)對應的MAC、出口VLAN、出端口;(這裏說明一下,並不是所有的三層交換機的硬件三層表項都會包含出端口的,這一點後面會有具體介紹。)

(3)              IP報文每經過一次三層轉發,它的源、目的MAC都會變化,但是源、目的IP是始終不變的。

3.3        三層交換的其他一些技術細節

在三層交換轉發中,交換芯片(ASIC)起到了至關重要的作用,因此三層交換機的性能和轉發特點主要取決於交換芯片的實現機制。在4.2節中講解的三層交換原理只是一個大致的轉發流程,對於使用了不同交換芯片的三層交換機,其硬件轉發過程中的一些細節內容是有所區別的。本節主要就硬件三層表項的結構和查表方式介紹幾種不同的實現。

3.3.1       三層表項的精確匹配和最長匹配

從前面的描述可以看出,三層轉發是必然需要路由信息的,而轉發過程中的路由選擇決定了報文的最終出口如何,三層交換機只是將這種路由功能整合到交換芯片中去了。路由選擇存在精確匹配和最長匹配兩種方式,精確匹配即目的IP地址與路由的地址信息必須完全吻合,而最長匹配則是選擇所有包含了目的地址的路由中掩碼最長的一條。

早期的三層交換機上,其交換芯片多采用精確匹配的方式,它們的硬件三層表項中只包含具體的目的IP地址,並不帶掩碼信息。比如在轉發目的IP2.1.1.2的報文時,通過軟件查找匹配了非直連路由2.1.1.0/24,那麼就將2.1.1.2的轉發信息添加到交換芯片中去,如果繼續來了目的IP2.1.1.3的報文需要轉發,則要重新進行軟件查找,並在交換芯片中爲2.1.1.3增加新的表項。這樣的選路方式和表項結構對交換芯片的硬件資源要求很高,因爲芯片中集成的表項存儲空間是很有限的,如果要轉發大量目的IP地址不同的報文那麼就需要添加大量的硬件表項。曾經氾濫一時的衝擊波病毒,就導致了當時大量的只支持精確匹配的三層交換機資源耗盡。因爲衝擊波病毒的手段之一就是發送巨大數量的網段掃描報文,而多數三層交換機上都配置了缺省路由,這樣所有的報文在CPU軟件查找時都能夠找到匹配路由,進而針對每一個病毒報文的目的IP都需要新增硬件表項並迅速將硬件資源佔滿。這樣,大部分用戶的正常數據流由於轉發資源耗盡而得不到高速處理了。

由於精確匹配方式的三層交換機的這種缺陷,後期的三層交換機增加了對最長匹配方式的支持,即硬件三層表項中可同時包含IP地址和掩碼,在查找時遵循最長匹配原則。這種類型的三層交換機,一般在軟件路由表建立時就將路由信息添加到硬件三層表中去,包括直連路由和非直連路由。對於直連路由,對應的硬件三層表項的“to CPU”標誌位始終置1,報文的目的IP匹配這樣的表項以後被送往CPU處理,CPU軟件會在直連網段發送ARP請求,並將獲取的ARP信息作爲主機路由添加到硬件表項中(對應的“to CPU”標誌位置0),這樣後續的同樣目的IP的報文就直接通過新添的硬件表項轉發了;對於非直連路由,當下一跳地址的對應ARP信息還未獲得時,對應的硬件三層表項的“to CPU”標誌位置1,報文的目的IP匹配這樣的表項以後被送往CPU處理,CPU軟件會在下一跳地址對應的直連網段發送ARP請求,並使用獲取的ARP信息中的下一跳MAC、出口VLAN等信息更新對應的硬件三層表項,然後將其“to CPU”標誌位置0,這樣後續的目的IP匹配該非直連路由的報文就能夠直接通過修改後的硬件表項轉發了。

目前,大多數的三層交換機均能夠同時支持精確匹配表項和最長匹配表項,一般來說精確匹配表項對應於軟件中的ARP表,最長匹配表項對應於軟件中的直連路由和非直連路由。

3.3.2       三層表項的出口信息

4.2節描述的交換機三層轉發流程中,曾經提到,硬件三層表項由目的IP(或網段)、目的IP(或下一跳IP)對應MAC、出口VLAN、出端口組成,採用這樣表項的三層交換芯片一般直接通過查找三層轉發表項就能夠完成轉發。這種處理機制流程簡單、轉發效率高,但是也使得CPU軟件對硬件表項的配置控制比較複雜,因爲每當IP地址對應的MAC和物理端口出現變化,就必須對三層轉發表項進行更新。而在交換機上二層信息變化的可能性是比較大的,特別是交換機支持鏈路聚合、生成樹等冗餘機制,所以在某些應用環境中CPU不得不經常的對三層轉發表進行更新,一旦更新出現問題(特別是出端口錯誤)必然對轉發造成嚴重的不利影響。

不過,並不是所有三層交換機的硬件三層表項都帶有出端口信息,部分交換芯片使用的硬件表項只包括目的IP(或網段)、目的IP(或下一跳IP)對應MAC、出口VLAN,從轉發流程上來說有以下變化:根據報文的目的IP查找三層轉發表後,只得到了目的IP(或下一跳IP)對應的MAC和出口VLAN;然後繼續根據MAC+VID去查找MAC地址表,並最終獲得出端口信息,如果查找MAC表失敗的話會在出口VLAN進行廣播。這樣的處理機制雖然增加了芯片處理複雜度,但是流程更加清晰合理,CPU的處理也更加簡單,因爲物理出口的變化只需要反映在MAC地址表中就可以了,硬件三層表項無需頻繁更新。

這兩種處理方式的交換芯片各有優勢,不同廠商會根據成本、可靠性、產品定位等各方面因素來進行選擇,這也使得不同型號的三層交換機在同一應用環境中可能有不同的表現。

4         結束語

通過了解交換機的基本轉發原理,可以幫助技術人員更深入的理解交換機產品應用特點、更好的進行網絡規劃、更快的定位網絡故障。本文所介紹的只是交換機轉發方面的一些基礎知識,不同的交換機(芯片)的內部實現細節千差萬別,當然也各有優劣,因此更加深入詳細的內容還需要針對具體產品的進一步研究。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章