IP 在 TCP/IP protocol suit 中是非常重要的一個協定,有多重要呢? 以下用一張圖來簡單說明 IP 所負責的事情:
在圖中的 routing table 是最常被 IP 存取的部份,可能每秒數百次;而 routing daemon 則是在背景執行的程序,大約半分鐘會更新 routing table 的資訊一次,而更新的資訊可能來自鄰近的 router,或甚至是 ICMP redirect 的封包都可以用來作為更新 routing table 的依據。
Routing 原則
基本上,routing 的規則如下:
- 搜尋有無符合的 host
- 搜尋有無符合的 network
- 搜尋 default gateway (預設閘道)
以上的 routing 工作是由 IP 負責處理;而上面的規則都是去搜尋 routing table 中的資訊,而這些資訊(也稱為 routing policy)都是由 routing daemon 所負責提供。
routing table 長什麼樣呢? 以下截圖說明:
其中兩條被框起來的規則(Flags 的部份有大寫「G」)為 gateway,而 Flags 說明如下:
- U:表示此規則路徑是正常運作的
- G:將封包導向 gateway
- H:將封包導向特定的主機
- D:表示此規則是由 ICMP Redirect 訊息所新增的
- M:表示此規則是由 ICMP Redirect 訊息所修改的
關於 routing 時會發生的錯誤種類
ICMP Host & Network Unreachable Errors
當 router 收到 IP datagram 卻無法將其繼續傳送時,就會發生此錯誤,通常此種錯誤出現的原因為網路設定上的錯誤,或是硬體線路沒接好。
ICMP Redirect Errors
此錯誤訊息是由 router 所發,目的是用來告知發送 IP datagram 的主機,應該要將封包送到另外一個 router 上。
以下用圖片來說明一下發生 ICMP Redirect Error 的情境:
- 其中 host 將 IP datagram 送給 R1,因為 R1 是 host 的 default gateway。
- R1 收到封包,檢查 routing table 規則後,發現其實 R2 才是正確的路徑,因此將封包導向 R2。
- 除了將封包導向外,R1 也額外發送了 ICMP Redirect Error 的訊息給 host,通知它要修改自己本身的 routing table。
由這個功能可以瞭解到,若是在複雜一點的 topology 中,要每個 host 都清楚知道封包 routing 的路徑是很難的,但有了這功能後,就可以僅設定 default gateway,接著送封包後就會由 router 通知來改變自身的 routing table 了。
【備註】
- 此種錯誤訊息僅有 router 能發送,host 是不能發送的。
- router 僅能送出 host redirect 而不是 network redirect,理由是因為 router 要掌握 topology 所有的網段資訊不是很容易,而且也有可能覆蓋原本 host 的 routing table 中不需要修改的設定。
ICMP Router Discovery Messages
此種訊息是用來讓 host 動態取得 routing 資訊用,透過發送此訊息(solicitation),周遭收到此訊息的 router 便會進行回應(advertisement);此外,router 還會定期的廣播 router advertisement,讓 host 可以即時更新 routing table 中的資訊。
從上面的運作方式可以瞭解到:
ICMP Router Discovery Message = ICMP Router Solicitation Message +接著是兩種 message 的格式:
ICMP Router Advertisement Message
ICMP Router Solicitation Message
ICMP Router Advertisement Message
Router 在做哪些事情?
在 routing 資訊的傳送中,router 做了哪些事情呢?
router 會固定每一段時間(約 450~600 秒不等)都發送 advertisement 訊息,若是 router 中有網路介面準備要關閉停用時,會發送一個 lifetime = 0 的 advertisement 訊息通知周圍的 host 與 router 此網路介面將要失效,必須要更新 routing table 中的資訊。
若是同時有多台 router 在同一個網段中,preference level 的部份就是要由網路管理者來決定了,才有辦法讓 routing policy 有先後順序之分。
Host 在做哪些事情?
host 就跟 router 相反了,開機時送出 router solicitation 訊息,以便接收 router 的回應來更新 routing table;當然,也會隨時監聽來自 router 的 advertisement 訊息,以便取得 routing 的最新資訊。
一般來說,router advertisement 訊息每 10 分鐘就會發送一次,而 lifetime 為 30 分鐘,只要在 30 分鐘之內有收到 router advertisement,就可以一直保持著有 routing 資訊了!
沒有留言:
張貼留言