IP地址可以識別主機和路由器,而路由器有多個埠,分別連線不同的網路區域。通過識別目的IP地址的網路號,再根據路由表進行資料轉發。
主機和路由器都會維護一張路由表,裡面存放著目的地址段和下一跳的地址。
除了路由器,三層交換機、防火牆、負載均衡裝置甚至主機等裝置都可以進行路由操作,只要這個裝置支援路由功能。路由表是路由器通過各種途徑獲得的路由條目,每一個路由條目包含目的網段地址、子網掩碼、路由協定、出介面、下一跳 IP 地址、路由優先順序和度量值等資訊。
路由表的來源分為三類:直連路由、靜態路由和動態路由。
不同來源的路由有不同的優先順序,值越小,優先順序越高。當存在多條目的網段相同時,具有高優先順序的路由成為最優路由。
一條路由條目,無論是靜態的還是動態的,都需要關聯到一個出介面,路由的出介面可以是這個裝置的物理介面,如千兆網口,也可以是邏輯介面,如 VLAN 介面,或者是隧道介面等。其中有一種介面非常特殊,那就是 Null 介面,只有一個編號,那就是 0 。Null0 是一個系統保留的邏輯介面,當網路裝置在轉發封包時,如果使用出介面 Null0 的路由,那麼封包將被丟棄,就像被扔進了一個黑洞裡,因此出介面為 Null0 的路由條目又被稱為黑洞路由。
路由器之間需要執行相同的路由協定,才能相互交換路由資訊。每種路由協定都有自己的語言,即相應的路由協定報文。如果兩臺路由器啟動了相同的路由協定,那麼就有了相互通訊的基礎。不同的路由協定,有相同的目的,就是計算和維護路由表。通常工作過程包含 4 個階段:
隨著 IP 網路的發展,網路規模已經很大了,無論哪種路由協定都不能完成全網的路由計算,因此網路分成了很多個自治系統( AS , Autonomous System )或路由選擇域 ( Routing Domain )。自治系統可以制定自己的路由策略,並管理自治系統內進行具體路由控制的路由器集合。
每個自治系統都有一個編號,範圍是1—65535,通過路由協定和自治系統編號,路由器可以確定路由路徑和路由資訊的交換方式。
自治系統內部使用的協定是域內路由協定,即IGP。RIP、OSPF屬於IGP。
自治系統之間的路由控制使用的是域間路由協定,即EGP。BGP屬於EGP。
按照路由的演演算法和路由資訊的交換方式,路由協定可以分為距離向量( Distance-Vector ,D-V )路由協定和鏈路狀態( Link-State )路由協定。其中典型的距離向量協定是 RIP ,典型的鏈路狀態協定是 OSPF 。
距離向量這個概念包含兩個關鍵的資訊:距離和方向,其中距離是指到達目的網路的度量值(即所要經過路由器的個數),而方向指的是到達目的網路的下一跳裝置。
執行鏈路狀態路由協定的路由器會使用一些特殊的資訊描述網路的拓撲結構和 IP 網段,這些資訊被稱為鏈路狀態資訊( LSA ),所有路由器都會產生自己直連線口的鏈路狀態資訊。
路由器將網路中泛洪的鏈路狀態資訊蒐集起來,存入一個資料庫中,這個資料庫就是 LSDB (鏈路狀態資料庫),LSDB 是對整個網路的拓撲結構及 IP 網段的描述,路由器擁有相同的 LSDB 。對於任何一臺路由器,網路拓撲都完全一樣。
接下來所有的路由器都基於 LSDB 使用最短路由優先演演算法進行計算,得到一棵已自己為根的、無環路的最短路徑樹,並將得到的路由載入到路由表中。
相比距離向量路由協定,鏈路狀態路由協定具有更大的擴充套件性和更快的收斂速度,但是它的演演算法消耗更多的記憶體和 CPU 處理能力。