為什麼不把路由器集成在計算機裡?

溫馨提示:請您在閱讀本文之前,點擊文章上方的“關注”,以後您就可以免費收到智慧網絡2333每天推送的網絡、寬帶等內容了。謝謝您的關注與轉發!

路由器本身就是一臺計算機,如果連著鍵盤、鼠標、顯示器,操作系統裡再安裝個Office,就可以當做辦公電腦使用了。

為什麼不把路由器集成在計算機裡?

但是,如果真把路由器當電腦用,那真是太屈才了,好比開著坦克去菜場買菜!路由器的“高效的IP報文的硬件轉發能力”就被嚴重浪費了。

為什麼不把路由器集成在計算機裡?

路由器到底是幹什麼的?

如圖所示,A網絡信封數據,是如何沿著箭頭的方向,先到達B網絡,再到達C網絡,然後到達D網絡,最後到達目的地主機的?

為什麼不把路由器集成在計算機裡?

邏輯很簡單,路由器在信封數據產生之前,已經和自己的鄰居路由器,通過路由協議數據報文,同步了整個網絡(互聯網)的IP路由表。

當IP報文到達時,路由器知道如何將接收到的IP報文,轉發給自己的鄰居。鄰居也知道如何將接收到的IP報文,轉發給更靠近目的地的路由器。通過連續接力的方式,最終IP報文到達了目的地。

A網絡與B網絡、B網絡與C網絡、C網絡與D網絡相交處,都有一個橢圓形的圖標。這些橢圓形的圖標就是路由器!

路由器為了連接多個網絡,通常有多個網絡接口。接口的類型取決於連接的是什麼網絡。

  • 連接的是以太網,使用以太網接口。
  • 連接的是ATM網,使用ATM接口。
  • 連接的是ISDN網,使用E1/T1接口。

讀者可能會說,這有什麼稀奇的?在普通電腦的擴展插槽中,插入這些接口卡,電腦不是一樣可以實現路由器功能?這也許是題主真正想表達的意思,對嗎!

完全可以,只要兩個網卡就可以在普通電腦上實現路由器的功能。

很少有人會用這樣的路由器,為什麼呢?

轉發效率太低了!

問大家一個問題,TCP/IP協議棧是軟件還是硬件?

當然是軟件了。

當電腦充當路由器時,從一個接口收到的IP報文,是否要交由IP協議來處理?

沒錯!

既然IP協議是軟件實現,那麼轉發IP報文的工作,全部由軟件來實現。

軟件完全依靠電腦的CPU作為計算的引擎,所以CPU直接決定著IP報文的轉發效率。

CPU很忙的,是整個電腦的計算中樞。要處理各種計算工作,還要兼顧著來自硬件外設的中斷信號,CPU高速運轉的間隙,還要處理來自網卡的中斷信號。

CPU計算能力大小、同時競爭CPU資源的事務的多寡,將直接決定著CPU轉發IP報文的效率。

一般的電腦IP報文的轉發效率,無法達到每秒幾百萬次的轉發效率。商業的路由器是可以達到的!

接下來的問題是,路由器是如何做到的?

硬件加速

一個IP報文在路由器內部的行走軌跡,不過是從入口流入,從出口流出的過程,對嗎?

  • 查路由表,找出口
  • 根據出口的接口類型,決定接口的封裝方式
  • 要麼點對點,PPP/HDLC封裝
  • 要麼ATM,ATM信元封裝
  • 要麼以太網,EthernetII 封裝

屁大點事,為何要勞煩日理萬機的CPU大駕?

於是,路由器將這些簡單判斷邏輯的工作,統統外包給了硬件轉發芯片。

硬件轉發芯片,擁有自己的硬件轉發表,也有出口下一跳對應的MAC地址,壓根不需要ARP的參與,這些內容CPU已經統統提前告訴了硬件芯片。

CPU語重心長地對著硬件轉發芯片說:孩子,我已經給了你所有的轉發信息,你可以獨立處理轉發事務了。

但要記住一點,有兩種情況你必須要通知我來處理:

  • IP報文的目的IP =路由器任何接口的IP
  • 硬件芯片無法處理的複雜邏輯,比如無法找到IP報文的對應的硬件轉發表

通過以上外包的方式,路由器的CPU從繁雜的IP報文轉發事務中解脫了出來。把更多的CPU資源用於處理“路由協議”的路由表的同步工作,以及物理鏈路失效,如何快速檢測失效並快速將失效消息通告給所有的鄰居,讓所有的鄰居都意識到某一條鏈路已經失效,從而在路由算法中將該條鏈路剔除出去。

最終,整個網絡的路由器的路由表又一次同步(達成一致),這個過程就叫網絡收斂!

路由器成就了互聯網,互聯網又推動了路由器向更快、更強、更安全的方向發展。

"


分享到:


相關文章: