Dynamic Routing
相鄰的 router 之間互相交換網段資訊、連線資訊 ... 等資訊,稱為 dynamic routing,而在 router 上處理這一類工作的 process,就稱為 routing daemon。
routing protocol 還可以根據是否在同一個 AS(Autonomous System) 中來分類,分別是:
- IGP (Interior Gateway Protocol)
包含 RIP(Routing Information Protocol)、EIGRP、OSPF(Open Shortest Path First Protocol)、IS-IS ... 等等。 - EGP (Exterior Gateway Protocol)
包含 EGP、BGP(Border Gateway Protocol) ... 等等。
Routing Information Protocol
RIP message 是包在 UDP datagram 中傳遞的,以下是傳遞 RIP 訊息的 UDP datagram 格式:
接著是 RIP message 本身的格式:
其中 RIP message 有幾個部份需要注意的:
- command
1 = request
2 = reply - version
是版本不同而不同,RIP = 1,RIPv2 = 2。 - address family
此欄位的值永遠為 2,而其他框起來的部份(共 20 bytes)則共同組成一個 IP address 與 metric 資訊。
一個 RIP 訊息最多就僅能帶 25 個 IP address 與 metric 資訊。
運作方式
RIP 所使用的是 UDP port 520,運作的流程如下:
- Initialization
首先會偵測 router 上的介面是否啟用,接著會從啟用的介面送出 request 封包,請求其他 router 將其完整的 routing table 資訊送過來。
而 request 封包中的 command = 1,address family = 0,metric = 16。 - Request received
router 接收到 request 的封包後,回傳 routing table 資訊給請求者;或是根據封包中所請求的位址給予相對應的 routing 資訊。 - Response received
請求者收到回應,更新 routing table。 - Regular routing updates
接著 router 每 30 秒會將自己的 routing table 資訊送給相鄰的 router。 - Triggered updates
當設定有改變時,就可以發送訊息給鄰近的 router 進行修改。
每個 router 都有其 timeout 的預設值,以三分鐘為例,就表示有 6 次 router advertisement message 沒有收到,因此此時會將 metric 設定為 16,表示此 router 已經不存在,將其刪除。
但沒辦法避免的,使用 RIP 的確會發生 routing table 更新延遲而發生網路不夠穩定的情況。
Metric 的意義
metric 在 RIP 是用來紀錄封包傳遞時,會經過的 router 次數(hop count),而直接連接網路介面的 hop count 為 1,以下用圖來說明:
若是 R1 要到 N2,metric = 1
若是 R1 要到 N3,metric = 2
若是 R2 要到 N2,metric = 1
若是 R2 要到 N1,metric = 2
RIP 的問題所在
從上面運作的原理,其實就可以大概推測出一些問題的端倪了,大概有以下幾點:
- hop count 最大是 15,這到 internet 上就不是那麼適用了。
- RIP 無法處理 subnet 的定址資訊。
- 不論是 router 故障或是從故障中復原,要讓網路上的其他 router 知道以更新 routing table,需要花過多的時間。
RIP version 2
基本上 RIPv2 並沒有改變原先 RIP 運作的模式,而是將原本在 RIP message 中沒有用到的欄位拿來使用而已,以下是 RIPv2 message 的格式:
不同於 RIP 的欄位說明如下:
- routing domain
辨識此封包屬於哪個 routing daemon(儲存 process number) 之用,因此表示可以同時有多個 routing daemon 同時處理 RIPv2 的封包。 - route tag
用來支援 EGP 之用,儲存 AS(Autonomous System) number。 - subnet mask
對應上面的 IP address,以支援 subnet 的處理。
另外要提的是,RIPv2 還支援了簡單的認證功能,只要 address family 設定為 0xFFFFF,且 route tag 的值為 2,往下的 16 個 bits 就是儲存明文密碼的地方。
不僅如此,RIPv2 還支援 multicast,如此一來就不用使用 broadcast 來減少網路流量了!
0 Comments:
Subscribe to:
張貼留言 (Atom)