我們都知道二層交換機工作的數據鏈路層,依靠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來完成(類似路由器),沒有特別說明情況下一般是指硬件三層交換機.
-
交換機
+關注
關注
21文章
2637瀏覽量
99535 -
路由器
+關注
關注
22文章
3728瀏覽量
113701
發布評論請先 登錄
相關推薦
評論