1.引言 在今天的網路建設中,新出現的三層交換器已成為我們的首選。它以其高效的效能、優良的效能價格比得到使用者的認可和讚許。目前,三層交換器在企業網/校園網建設、智能社區接入等等許多場合中得到了大量的應用,市場的需求和技術的更新推動這種應用向縱深發展。 2.傳統交換技術
傳統的區域網路交換器是一種二層網路裝置,它在操作過程中不斷收集資訊去建立起它本身的一個MAC地址表。這個表相當簡單,基本上說明了某個MAC 位址是在哪個連接埠上被發現的。這樣當交換器收到一個乙太網路包時,它便會查看一下該乙太網路包的目的MAC地址,核對一下自己的地址表以確認該從哪個連接埠把包發出去。但當交換器收到一個不認識的包時,也就是說如果目的MAC地址不在MAC地址表中,交換器便會把該包“擴散”出去,即從所有連接埠發出去,就如同交換器收到一個廣播包一樣,這就暴露出傳統區域網路交換器的弱點:不能有效解決廣播、異種網路互連、安全性控制等問題。因此,產生了交換器上的VLAN(虛擬區域網路)技術。 3.第三層交換技術
三層交換(也稱多層交換技術,或IP交換技術)是相對於傳統交換概念而提出的。眾所周知,傳統的交換技術是在OSI網路標準模型中的第二層――資料連結層進行操作的,而三層交換技術在網路模型中的第三層實現了分組的高速轉寄。簡單的說,三層交換技術就是“二層交換技術 + 三層轉寄”。三層交換技術的出現,解決了區域網路中網段劃分之後網段中的子網必須依賴路由器進行管理的局面,解決了傳統路由器低速、複雜所造成的網路瓶頸問題。 一個具有三層交換功能的裝置,是一個帶有第三層路由功能的第二層交換器,但它是兩者的有機結合,而不是簡單地把路由器裝置的硬體及軟體疊加在區域網路交換器上。我們可以通過以下例子說明三層交換器是如何工作的。 假設兩個使用IP協議的網站A、B通過第三層交換器進行通訊,發送網站A在開始發送時,會先拿自己的IP地址與B站的IP地址進行比較,判斷B站是否與自己在同一子網內。若目的站B與發送站A在同一子網內,則進行二層的轉寄。具體步驟如下:為了得到網站B的 MAC地址,網站A首先發一個ARP廣播報文,請求網站B的MAC地址。該ARP請求報文進入交換器後,首先進行源MAC地址學習,晶片自動把網站A的MAC地址以及進入交換器的連接埠號碼等資訊填入到晶片的MAC地址表中,然後在MAC地址表中進行目的地址尋找。由於此時是一個廣播報文,交換器則會把這個廣播報文從進入交換器連接埠所屬的VLAN中進行廣播。B網站收到這個ARP請求報文之後,會立刻發送一個ARP回複報文,這個報文是一個單播報文,目的地址為網站A的MAC地址。該包進入交換器後,同樣,首先進行源MAC地址學習,然後進行目的地址尋找,由於此時MAC地址表中已經存在了A網站MAC地址的匹配條目,所以交換器直接把此報文從相應的連接埠中轉寄出去。通過以上一次ARP過程,交換晶片就把網站A和B的資訊儲存在其MAC地址表中。以後A、B之間進行通訊或者同一網段的其它網站想要與A或B通訊,交換器就知道該把報文從哪個連接埠送出。還必須說明的一點是,當尋找MAC地址表的時候發現找不到匹配表項,該報文又不是廣播或多播報文,此時此報文被稱為DLF(Destination Lookup Failure)報文,交換器對此類報文的處理就象對收到一個廣播報文處理一樣,將此報文從進入連接埠所屬的VLAN中擴散出去。從以上過程可以看出,所有二層轉寄都是由硬體完成的,無論是MAC地址表的學習過程還是目的地址尋找確定輸出連接埠過程都沒有軟體進行幹預。 下面我們看一下兩個網站通過三層交換器實現跨網段通訊是怎樣一個過程。 如上例,網站A、B通過三層交換器進行通訊。網站A和B所在網段都屬於交換器上的直連網段,若網站A和網站B不在同一子網內,發送站A首先要向其“預設網關”發出ARP請求報文,而“預設網關”的IP地址其實就是三層交換器上網站A所屬VLAN的IP地址。當發送站A對“預設網關”的IP地址廣播出一個ARP請求時,交換器就向發送站A回一個ARP回複報文,告訴網站A交換器此VLAN的MAC地址,同時可以通過軟體把網站A的IP地址、MAC地址、與交換器直接相連的連接埠號碼等資訊設定到交換晶片的三層硬體表項中。網站A收到這個ARP回複報文之後,進行目的MAC地址替換,把要發給B的包首先發給交換器。交換器收到這個包以後,同樣首先進行源MAC地址學習,目的MAC地址尋找,由於此時目的MAC地址為交換器的MAC地址,在這種情況下將會把該報文送到交換晶片的三層引擎處理。一般來說,三層引擎會有兩個表,一個是主機路由表,這個表是以IP地址為索引的,裡面存放目的IP地址、下一跳MAC地址、連接埠號碼等資訊。若找到一條匹配表項,就會在對報文進行一些操作(例如目的MAC與源MAC替換、TTL減1等)之後將報文從表中指定的連接埠轉寄出去。若主機路由表中沒有找到匹配條目,則會繼續尋找另一個表――網段路由表。這個表存放網段地址、下一跳MAC地址、連接埠號碼等資訊。一般來說這個表的條目要少得多,但覆蓋的範圍很大,只要設定得當,基本上可以保證大部分進入交換器的報文都走硬體轉寄,這樣不僅大大提高轉寄速度,同時也減輕了CPU的負荷。若尋找網段路由表也沒有找到匹配表項,則交換晶片會把包送給CPU處理,進行軟路由。由於網站B屬於交換器的直連網段之一,CPU收到這個IP報文以後,會直接以B的IP為索引檢查ARP緩衝,若沒有網站B的MAC地址,則根據路由資訊向B站廣播一個ARP請求,B站得到此ARP請求後向交換器回複其MAC地址,CPU在收到這個ARP回複報文的同時,同樣可以通過軟體把網站B的IP地址、MAC地址、進入交換器的連接埠號碼等資訊設定到交換晶片的三層硬體表項中,然後把由網站A發來的IP報文轉寄給網站B,這樣就完成了網站A到網站B的第一次單向通訊。由於晶片內部的三層引擎中已經儲存網站A、B的路由資訊,以後網站A、B之間進行通訊或其它網段的網站想要與A、B進行通訊,交換晶片則會直接把包從三層硬體表項中指定的連接埠轉寄出去,而不必再把包交給CPU處理。這種通過“一次路由,多次交換”的方式,大大提高了轉寄速度。需要說明的是,三層引擎中的路由表項大都是通過軟體佈建的 |