從二層交換機來說為什麼三層交換機比路由器轉發速率快

我們都知道二層交換機工作的數據鏈路層,依靠mac地址來進行數據通信的,而路由器是工作在網絡層,依靠ip地址來通信的,為了說明三層交換機比路由器的轉發速率快,那我們還是先從二層交換機入手。

首先我們來比較下二層交換機與路由器的報文轉發速率(當然嚴格意義上是不能這樣比較的,畢竟一個是二層設備,一個是三層設備,這主要是為下面說明三層交換機與路由器之間的比較做鋪墊)

二層交換機:接收到由自己的物理層送上來的二層數據幀時,根據源mac地址學習並寫入mac地址表中,根據目的mac地址查找mac地址表決定是轉發還是廣播,這裡交換機查找mac地址表和轉發都是由硬件ASIC芯片來完成,而且二層交換機沒有對數據幀做過任何封裝,解封裝動作(忽略物理層bit數據流還原成二層以太幀),並且沒有對數據幀做過任何改寫

路由器:工作在網絡層,對接收到的數據幀必須解封裝,獲取三層數據,根據三層數據的目的ip,查找路由表,封裝下一跳的mac等等一系列動作,相比二層交換機而言,路由器查找路由表是通過基於軟件的cpu來查找,比二層交換機查找mac地址表用的ASIC硬件芯片慢,另外路由器還得對數據進行拆封,解封動作,而且還改寫了數據幀(只改寫二層數據幀的目的mac、源mac、FCS,不會改變三層數據包的內容)

由上可知:基於軟硬件的查找轉發方式(路由器通過軟件的相對慢些)以及對數據包的處理(路由器相對來說複雜),這兩個原因導致二層交換機的轉發性能通常高於路由器(嚴格意義上這樣的比較是沒有意義的,畢竟一個是二層設備、一個是三層設備,主要是為下面做鋪墊)

下面開始說三層交換機

以前的文章中也提到過,三層交換機的核心思想是:“一次路由,多次轉發”,實現了數據包的快速轉發:三層交換機技術=二層交換技術+三層路由轉發技術

也即是:

三層交換技術=1次三層路由轉發技術+多次(N)二層交換技術

路由器=(N+1)次三層路由轉發技術

再結合上面所寫的二層交換機的轉發速率高於路由器,可以得出三層交換機的轉發速率同樣高於路由器

三層交換機的硬件架構

從二層交換機來說為什麼三層交換機比路由器轉發速率快

假設兩個使用ip協議的站點A、B通過第三層交換機進行通信,發送站點A在開始發送時,把自己的ip地址與B站點的ip地址進行比較,判斷B站是否與自己再同一個子網內,若在同一個子網內,則進行二層轉發(沒經過三層的必要);若A、B站點不在同一個子網內,那麼發送站點A要向“缺省網關”發出arp請求,而“缺省網關”的ip地址其實就是三層交換機上站點A所屬vlan的接口ip地址,當A向“缺省網關”發送一個arp請求時,交換機就向發送站點A回一個arp回應報文,同時通過軟件把站點A的ip地址、mac地址、與交換機直接相連的端口號等信息寫到交換芯片的三層硬件表項中;站點A收到回覆報文後,進行目的mac的替換,把要發到B的包首先發給交換機。交換機收到這個包之後,進行源mac地址學習,目的mac地址查找,由於此時目的mac地址為交換機的mac地址,在這種情況下將會把該報文送到交換芯片的三層 引擎處理,由於站點B屬於交換機的直連網段之一,cpu收到這個ip報文以後,會直接以B的ip為索引檢查arp緩存,若沒有站點B的mac地址,則根據路由信息向B站廣播一個arp請求,B站收到此請求後向交換機回覆其mac地址,cpu收到這個arp回覆的同時,同樣把站點B的ip地址、mac地址、端口信息等寫入交換芯片的三層硬件轉發表項中,然後把由站點A發來的ip報文轉發給站點B,這樣就完成了站點A到站點B的第一次單向通信。由於芯片內部的三層引擎中已經保存站點A、B的路由信息,以後站點A、B之間進行通信或其它網段的站點想要與A、B進行通信,交換芯片則會直接把包從三層硬件表項中指定的端口轉發出去,而不必再把包交給cpu處理,這就是“一次路由,多次轉發”的實現,大大提高了轉發速度.

平常所說的三層交換機基本上是指硬件三層交換機,三層交換機其實也有軟件三層交換機,它們的區別在於三層交換 引擎,硬件三層交換機的三層交換引擎通常是用專用的ASIC芯片來完成(類似二層交換機),而軟件三層交換機的三層交換引擎通常是由cpu來完成(類似路由器),沒有特別說明情況下一般是指硬件三層交換機.


分享到:


相關文章: