一、第三層交換機的工作原理
要論述第三層交換機的工作原理,我們可以從傳統交換機和路由器的實現原理中入手。簡單地說,傳統的局域網交換機是從網橋發展來的,屬于第二層設備。它是一個可以將發信方源地址與收信方目的地址連接起來的網絡設備,該設備可以根據數據單元中的頭信息,將來自一個或多個輸入端口的信元或幀移動到一個或多個輸出端口,完成信息發送過程的交換。顯然,第二層交換機的最大好處是數據傳輸快,因為它僅需要識別數據幀中的MAC地址,而直接根據MAC地址產生選擇轉發端口的算法又十分簡單,非常便于采用ASIC芯片實現。所以,第二層交換的解決方案實際上是一個“處處交換”的廉價方案,雖然也能支持子網劃分和廣播限制等基本功能,但控制能力較小。
傳統的第三層路由器屬于第三層設備,它是根據IP地址尋址和通過路由表路由協議來實現路由功能的。在局域網中的作用主要是路由轉發、網絡安全和隔離廣播等,即在完成子網的網間連接的同時,還可以隔離子網間的廣播風暴,可以控制一個網絡非法信息進入到另一個網絡中。由于在路由轉發中,路由器普遍采用的技術是最長匹配方式,而該方式實現起來非常復雜,所以只能利用軟件來完成,自然會對網絡帶來一定的延遲。
由此可見,傳統交換機是同一網絡系統中主機之間端口連接的網絡設備,傳統路由器是同類或異類網絡系統中各子網之間連接的網絡設備。再來看一下第三層交換機。第三層交換機實際上是將傳統交換器與傳統路由器結合起來的網絡設備,它既可以完成傳統交換機的端口交換功能,又可完成部分路由器的路由功能。當然,這種二層設備與三層設備的結合,并不是簡單的物理結合,而是各取所長的邏輯結合。
其中最重要的表現是,當某一信息源的第一個數據流進入第三層交換機后,其中的路由系統將會產生一個MAC地址與IP地址映射表,并將該表存儲起來,當同一信息源的后續數據流再次進入第三層交換機時,交換機將根據第一次產生并保存的地址映射表,直接從第二層由源地址傳輸到目的地址,而不再需要經過第三層路由系統處理,從而消除了路由選擇時造成的網絡延遲,提高了數據包的轉發效率,解決了網間傳輸信息時路由產生的速率瓶頸。
如上所述,第三層交換機是將第二層交換機和第三層路由器兩者優勢結合成一個有機、靈活并可在各層次提供線速性能的整體交換方案。在第三層交換這種集成化結構中所支持的策略管理屬性,不僅使第二層與第三層相互關聯起來,而且還提供了流量優先化處理、安全以及Trunking、虛擬網和Intranet的動態部署等多種功能。另外,第三層交換的目標也非常明確,即只需在源地址和目的地址之間建立一條更為直接快捷的第二層通路,而不必經過路由器來轉發同一信息的每個數據包。
事實上,第三層交換方案是一個能夠支持分類所有層次動態集成的解決方案,雖然這種多層次動態集成也能夠由傳統路由器和第二層交換機搭載一起完成,但這種搭載方案與采用第三層交換機相比,不僅需要更多的設備配置、更大的空間、更多的布線和更高的成本,而且數據傳輸性能也要差得多,因為在海量數據傳輸中,搭載方案中的路由器無法克服傳輸速率瓶頸。
二、第三層交換機的優勢
在與一些朋友交談中,經常會聽到類似“既然第三層交換機能實現路由器的功能,那么它會不會取代路由器?”這樣的疑問。的確,第三層交換機的技術越來越成熟,應用也越來越普及,在一定范圍內,其比路由器有很大的優勢,但第三層交換機與路由器還是有很大區別,在局域網領域,第三層交換機具有明顯優勢。
1.子網間傳輸帶寬可任意分配 傳統路由器的每個串口都可以連接一個子網,而這種通過路由器進行傳輸的子網速率就會受到接口帶寬的直接限制。第三層交換機則不同,它可以把多個端口定義成一個虛擬網(VLAN),把多個端口組成的虛擬網作為虛擬網接口,該虛擬網內的信息可通過組成虛擬網的端口發給第三層交換機,由于端口數可任意指定,子網間的傳輸帶寬便沒有限制了。
2.合理配置信息資源 因利用第三層交換機連接的網絡系統,其訪問子網內資源速率和訪問全局網中資源速率沒有區別,子網設置單獨服務器便沒有什么意義了。這樣,直接通過在全局網中來設置服務器群,在保證內聯網寬帶傳輸速率的前提下,不僅可以節省費用,利用服務器集群的軟硬件資源優勢,更可以做到合理配置和管理所有信息資源。這一點是路由器組網很難辦到的。
3.降低成本 在企業網絡設計中,由于人們通常只用二層交換機構成同一廣播域子網,用路由器進行各子網間的互聯,使企業網絡形成一個內聯網,而路由器的價錢較高,所以支持內聯網的企業網絡無法在設備上降低成本。目前,人們采用第三層交換機進行內聯網絡系統設計時,既可以進行任意虛擬子網劃分,又可以通過交換機三層路由功能完成子網間的通信,即建立子網與內聯子網都可以用交換機完成,大大節省了價格昂貴的路由器。
4.交換機之間連接靈活 在計算機網絡通信設備中,交換機之間是不允許存在任何回路的,而作為路由器,可以采用多條通路(如主備路由)來提高網絡的可靠性和負載平衡。為了解決這類矛盾,在第三層交換機中,一方面采用生成樹算法來阻塞造成回路的端口,在進行路由選擇時,又能依然把阻塞掉的通路作為可以選擇的路徑來參與路由選擇,從而極大地提高了交換機連接的靈活性。
從上面的介紹可以看出,不管是第二層交換機還是第三層交換機,它們終究總屬于網橋類,是數據鏈路層的設備,第三層交換也只是實現路由器的部份第三層路由功能,使其具有線速轉發報文能力。因此,它們都只用于LAN-WAN的連接。路由器則能用于WAN-WAN之間的連接,作用于網絡層中的分組交換設備,具有協議交換能力,主要功能是可以解決異構網絡之間的數據包的分組轉發,這種分組轉發原理只是從一條線路上接受輸入分組,然后向另一條線路轉發,這兩條線路可能分屬于不同拓撲網絡,并采用不同協議,這點又是第三層交換機無法做到的,也是與路由器的主要區別。
綜上所述,第三層交換機非常適應局域網,而路由器可在廣域網中盡顯英雄本色,也就是說,第三層交換機無法適應網絡拓撲各異,傳輸協議不同的廣域網環境。但近年來,隨著第三層交換技術的不斷發展與創新,第三層交換機的應用已從企業網絡環境的骨干層、匯聚層,開始滲透到網絡邊緣接入層,尤其是小區寬帶網絡的發展,第三層交換機完全適合放置在小區中心和多個小區的匯聚層位置。所以說,第三層交換機雖然無法替代路由器,但卻完全動搖了企業路由器的地位,即在企業內聯網絡系統,第三層交換機正在取代路由器。
三、第三層交換機的應用領域
目前,普遍應用于企業網絡中的第三層交換技術,主要是VLAN,因為VLAN打破了傳統網絡許多固有觀念,可使網絡結構更加靈活、多變、方便和隨心所欲。所謂VLAN就是不需考慮用戶的物理位置,而根據信息端的IP地址、用戶名等直接與用戶聯系的特定標志及應用因素就可將用戶在邏輯上劃分為一個個功能相對獨立的工作組,且每個用戶主機都連接在一個支持VLAN的交換機端口上,并屬于一個VLAN。同一個VLAN中的成員都共享廣播,不同VLAN之間的廣播信息是相互隔離的。這就相當于將整個網絡分割成了多個不同的廣播域,從而加強了企業內聯網絡的管理與維護。因此,第三層交換機最適合于那些無需遠程接入或以遠程接入為輔的企業內聯網絡,或者大部分子網系統集中,而只有部分遠程接入子網的企業內聯網絡。
交換機從誕生到現在已經歷了三代。第一代產品是一種由分立電子元件和原語式軟件相結合的簡單混合體,設備體積大、重量大、功耗高,所需散熱風扇功率高、體積大,但性能較差。這樣,運行在一個固定內存處理機上的軟件系統,雖然在管理和協議功能方面有許多改善,但當用戶的日常業務更加依賴于網絡,使得網絡流量不斷增加時,網絡設備便成了傳輸瓶頸。第二代產品的硬件引進了專門用于優化第二層處理的專用集成電路ASIC(Application Specific Integrated Circuit)芯片,體積、功耗和性能都得到了極大改善,并降低了系統的整體成本,這就是傳統的第二層交換機。第三代交換機并不是簡單地建立在第二代交換設備上,而是在第三層路由、組播及用戶可選策略等方面提供了線速性能,在硬件方面也采用了性能與功能更先進的ASIC芯片,也正是我們這個專題中的主題:第三代交換機。
四、三層交換機的工作過程
路由器的三層轉發主要依靠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(網段)中的主機互訪時屬于這種情況,這時用于互連的交換機作三層交換轉發。
為了后續討論的三層交換原理便于理解,這里簡單介紹一下三層交換機內部結構,如圖1所示:
圖1 三層交換機硬件結構
三層交換機內部的兩大部分是ASID和CPU,它們的作用分別如下:
1.ASIC:完成主要的二三層轉發功能,內部包含用于二層轉發的MAC地址表以及用于IP轉發的三層轉發表;
2.CPU:用于轉發的控制,主要維護一些軟件表項(包括軟件路由表、軟件ARP表等等),并根據軟件表項的轉發信息來配置ASIC的硬件三層轉發表。當然,CPU本身也可以完成軟件三層轉發。
從三層交換機的結構和各部分作用可以看出,真正決定高速交換轉發的是ASIC中的二三層硬件表項,而ASIC的硬件表項來源于CPU維護的軟件表項。
下面分別以兩種組網情況下主機間的通信來解釋三層交換機的轉發原理。
組網1如圖2所示,通信的源、目的主機連接在同一臺三層交換機上,但它們位于不同VLAN(網段)。對于三層交換機來說,這兩臺主機都位于它的直連網段內,它們的IP對應的路由都是直連路由。
圖2 三層轉發組網
圖2中標明了兩臺主機的MAC、IP地址、網關,以及三層交換機的MAC、不同VLAN配置的三層接口IP。當PCA向PCB 發起ICMP請求時,流程如下:(假設三層交換機上還未建立任何硬件轉發表項)
1.PCA首先檢查出目的IP地址2.1.1.2(PCB)與自己不在同一個網段,因此它發出請求網關地址1.1.1.1對應MAC的ARP請求;
2.L3_SW收到PCA的ARP請求后,檢查請求報文,發現被請求IP是自己的三層接口IP,因此發送ARP應答并將自己的三層接口MAC(MAC S)包含在其中。同時它還會把PCA的IP 地址與MAC地址對應起來(1.1.1.2《==》MAC A)關系記錄到自己的ARP表項中去(因為ARP請求報文中包含了發送者的IP和MAC);
3.PCA得到網關(L3_SW)的ARP應答后,組裝ICMP請求報文并發送,報文的目的MAC = MAC S 、源MAC = MAC A 、源IP=1。1。1。2、目的IP = 2.1.1.2;
4.L3_SW收到報文后,首先根據報文的源MAC+VID(即VLAN ID)更新MAC地址表。然后,根據報文的目的MAC+VID查找MAC地址表,發現匹配了自己三層接口MAC的表項。這里說明一下,三層交換機為VLAN配置三層接口IP后,會在交換芯片的MAC地址表中添加三層接口MAC+VID的表項,并且為表項的三層轉發標志置位。當報文的目的MAC匹配這樣的表項以后,說明需要作三層轉發,于是繼續查找交換芯片的三層表項;
5。芯片根據報文的目的IP去查找其三層表項,由于之前未建立任何表項,因此查找失敗,于是將報文送到CPU去進行軟件處理;
6.CPU根據報文的目的IP去查找其軟件路由表,發現匹配了一個直連網段(PCB對應的網段),于是繼續查找其軟件ARP表,仍然查找失敗。然后L3_SW會在目的網段對應的VLAN3的所有端口發送請求地址2.1.1.2對應MAC的ARP請求;
7.PCB收到L3_SW發送的ARP請求后,檢查發現被請求IP是自己的IP,因此發送ARP應答并將自己的MAC(MAC B)包含在其中。同時,將L3_SW的IP與MAC的對應關系(2。1。1。1<==>MAC S)記錄到自己的ARP表中去;
8。L3_SW收到PCB的ARP應答后,將其IP和MAC對應關系(2.1.1.2《==》MAC B)記錄到自己的ARP表中去,并將PCA的ICMP請求報文發送給PCB,報文的目的MAC修改為PCB 的MAC(MAC B),源MAC修改為自己的MAC(MAC S)。同時,在交換芯片的三層表項中根據剛才得到的三層轉發信息添加表項(內容包括IP、MAC、出口VLAN、出端口等),這樣后續的PC A發送PCB的報文就可以通過該硬件三層表項直接轉發了;
9.PCB收到L3_SW轉發過來的ICMP請求報文以后,回應ICMP應答給PC A。ICMP應答報文的轉發過程與前面類似,只是由于L3_SW在之前已經得到PCA的IP和MAC對應關系了,也同時在交換芯片中添加了相關的三層表項,因此這個報文直接由交換芯片硬件轉發給PCA;
這樣,后續的往返報文都經過查MAC表=>查三層轉發表的過程由交換芯片直接進行硬件轉發了。
從上述流程可以看書,三層交換正是充分利用了“一次路由(首包CPU轉發并建立三層轉發硬件表項)、多次交換(后續包芯片硬件轉發)”的原理實現了轉發性能與三層交換的完美統一。
下面介紹另一種組網情況的三層轉發流程,如圖3所示。
如圖3 三層轉發組網2
圖3中標明了兩臺主機的MAC、IP地址、網關,以及兩臺三層交換機的MAC、不同VLAN配置的三層接口IP。假設L3_SW1上配置了靜態路由:IP route2。1。1。0 255。255。255。0 3。1。1。2;L3_SW2上配置了靜態路由:IP route1。1。1。0 255。255。255。0 3。1。1。1。當然,路由信息也可以通過動態路由協議的交互來獲得,有關路由的知識請查閱相關文檔。
這種組網情況下的轉發過程與圖2的組網1情況是類似的,下面的流程講解中降省略部分前面已經分析過的細節問題。當PCA向PCB發起ICMP請求時,流程如下:(假設三層交換機上還未建立任何硬件轉發表項)
1.PC A首先檢查出目的IP地址2。1。1。2(PCB)與自己不在同一個網段,因此它通過ARP解析得到網關地址1。1。1。1對應的MAC(MAC S1)。然后,PCA組裝ICMP請求報文并發送,報文的目的MAC=MAC S1、源MAC=MAC A、源IP=1.1.1.2、目的IP=2.1.1.2;
2.L3_SW1收到報文后,首先根據報文的源MAC+VID更新MAC地址表。然后,根據報文的目的MAC+VID查找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對應的VLAN4內發起ARP請求,并得到L3_SW2的回應,從而得到I和MAC對應關系(3。1。1。2<==>MAC S2);
5。L3_SW1將Pc A發出的ICMP請求報文轉發給L3_Sw2,報文的目的MAC修改為L3_SW2的MAC(MAC S2),源MAC修改為自己的MAC(MAC S1)。同時,將剛剛用到的轉發信息添加到交換芯片的三成轉發表中去,包括匹配的網段2。1。1。0/24、下一跳地址的MAC(MAC S2)、出口VLAN、出端口。這樣,后續發往2。1。1。2的報文就可以直接通過交換芯片硬件轉發了;
6。L3_SW2收到報文后,與組網1中的處理類似,經過查MAC表=>查三層轉發表=>送CPU=>匹配直連路由=>ARP解析=>轉發報文同時添加硬件表項的過程,將報文轉發給PCB,此時報文的目的MAC修改為PCB的MAC(MAC B),源MAC修改為L3_SW2的MAC(MAC S2)。這樣后續發往2。1。1。2的報文就直接由交換芯片硬件轉發了;
7。PCB收到來自PCA的ICMP請求報文后進行ICMP應答。由于在ICMP請求報文轉發的過程中,每個網段的兩端節點都已經通過ARP解析得到了對方的IP和MAC對應關系,因此應答報文的轉發完全由交換芯片完成(查MAC表=>查三層轉發表=>發送);
這樣,后續的往返報文都經過查MAC表=>查三層轉發表的過程由交換芯片直接進行硬件轉發了。
從上述兩種組網情況下的轉發流程可以看出,三層交換機的轉發具有以下特點:
1。首包通過CPU轉發,同時建立交換芯片硬件表項;后續包由交換芯片直接硬件轉發,即常說的“一次路由、多次交換”;
2。交換芯片的硬件轉發并不關心路由的具體下一跳IP地址是多少,硬件三層表項中只包含了目的地址(或網段)、目的IP(或下一跳IP)對應的MAC、出口VLAN、出端口;(這里說明一下,并不是所有的三層交換機的硬件三層表項都會包含“出端口”的。)
3。IP報文每經過一次三層轉發,它的源、目的MAC都會變化,但是源IP、目的IP是始終不變。
在三層交換轉發中,交換芯片(ASIC)起到了至關重要的作用,因此三層交換機的性能和轉發特點主要取決于交換芯片的實現機制。在三層交換原理一節中講解的三層交換原理只是一個大致的轉發流程,對于使用了不同交換芯片的三層交換機,其硬件轉發過程中的一些細節內容是有所區別的。本節主要就硬件三層表項的結構和查表方式介紹幾種不同的實現。
從前面的描述可以看出,三層轉發是必然需要路由信息的,而轉發過程中的路由選擇決定了報文的最終出口如何,三層交換機只是將這種路由功能整合到交換芯片中去了。路由選擇存在精確匹配和最長匹配兩種方式,精確匹配即目的IP地址與路由的地址信息必須完全吻合,而最長匹配則是選擇所有包含了目的地址的路由中掩碼最長的一條。
早期的三層交換機上,其交換芯片多采用精確匹配的方式,它們的硬件三層表項中只包含其目的IP地址,并不帶掩碼信息。比如在轉發目的IP為2。1。1。2的報文時,通過軟件查找匹配了非直路由2。1。1。0/24,那么就將2。1。1。2的轉發信息添加到交換芯片中去,如果繼續來了目的IP為2。1。1。3的報文需要轉發,則需要重新進行軟件查找,并在交換芯片中為2。1。1。3增加新的表項。這樣的選錄方式表項結構對交換芯片的硬件資源要求很高,因為芯片中集成的表項存儲空間是有限的,如果要發大量目的IP地址不同的報文那么就需要添加大量的硬件表項。曾經泛濫一時的沖擊波病毒,就導致了當時大量的只支持精確匹配的三層交換機資源耗盡。因為沖擊波病毒的手段之一就是發送巨數量的網段掃描報文,而多數三層交換機上都配置了缺省路由,這樣所有的報文在CPU軟件查找都能夠找到匹配路由,進而針對每一個病毒報文的目的IP都需要新增硬件表項并迅速將硬件資源滿。這樣,大部分用戶的正常數據流由于轉發資源耗盡而得不到高速處理了。
由于精確匹配方式的三層交換機的這種缺陷,后期的三層交換機增加了對最長匹配方式的支持,即硬件三層表項中可同時包含IP地址和掩碼,在查找時遵循最長匹配原則。這種類型的三層交換機,一般在軟件路由表建立時就將路由信息添加到硬件三層表中去,包括直連路由和非直連路由。對于直連路由,對應的硬件三層表項的“to CUP”標志位始終置1,報文的目的IP匹配這樣的表項被送往CPU處理,CPU軟件會在直連網段發送ARP請求,并將獲取的ARP信息作為主機路由添加到硬件表項中(對應的“to CUP”標志位置0),這樣后續的同樣目的IP的報文就直接通過新添加的硬件表項轉發了;對于非直連路由,當下一跳地址對應ARP信息還未獲得時,對應的硬件三層表項的“to CUP”標志位置1,報文的目的IP匹配這樣的表項以后被送往CPU處理,CPU軟件會在下一跳地址對應的直連網段發送ARP請求,并使用獲取的ARP信息中的下一跳MAC、出口VLAN等信息更新對應的硬件三層表項,然后將其“to CUP”標志位置0,這樣后續的目的IP匹配該非直連路由的報文就能夠直接通過修改后的硬件表項轉發了。
目前,大多數的三層交換機均能夠同時支持精確匹配表項和最長匹配表項,一般來說精確匹配表項對應于軟件中的ARP表,最長匹配表項對應于軟件中的直連路由和非直連路由。
在交換機三層轉發流程中,曾經提到,硬件三層表項由目的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地址表中就可以了,硬件三層表項無需頻繁更新。
這兩種處理方式的交換芯片各有優勢,不同廠商會根據成本、可靠性、產品定位等各方面因素來進行選擇,這也使得不同型號的三層交換機在同一應用環境中可能有不同的表現。
評論
查看更多