IP 封包的傳送 與路徑選擇 靜宜大學資工系 蔡奇偉 副教授 2006
大綱 連接方式 傳送方式 路徑選擇的方法 靜態與動態路徑選擇 路徑表與路徑選擇模組
連接方式 預接式 (connection-oriented) 非預接式 (connectionless) 本地端網路層的協定必須先與遠端地點的網路層協定建立連線後才能送封包。當連線建立之後,同一來源的封包就可以一個接一個送到同一目的地。,這樣子,封包間彼此存在著關係,它們依相同路徑一個接一個送出。當屬於同一個訊息的所有封包都送完後,原先建立的連線即告終止。 非預接式 (connectionless) 非預接式的網路層協定視每個封包為一獨立個體,彼此沒有關係,同一訊息的封包可能以不同路徑送到其目的地。
IP 為非預接式的協定,這是因為 IP 本身是一種互連網路協定,封包可能經不同的網路傳送,如果 IP 是預接式的,那麼在網際網路上的所有網路都必須是預接好的,不過事實並非如此。
傳送方式 直接傳送 (direct delivery)
Figure 6-1 送封包的電腦可以很容易就決定是否為直接傳送,送封包的電腦可將目的封包的網路位址摘取出來 (主機代碼部分全設為 0)。然後將此位址與所在的網路位址比較,如果是一樣那麼就是直接傳送。 直接傳送時,送出者以封包的目的 IP 位址來尋找該目的地的實體位址,然後 IP 軟體將這對位址送給資料連接層來做實際的傳送,我們把這個程序稱為「將 IP 位址對應到實體位址」。
間接傳送 (indirect delivery) 間接傳送時,封包由一台路由器送到另一台路由器,最後封包會到達一台與封包目的地主機位於相同網路上的路由器 (如右圖所示)。
路徑選擇方法 (Routing Methods) 路徑選擇需要一台電腦或路由器並使用一張路徑表。當一台電腦或路由器收到封包要傳送時,它在路徑表中尋找到達其最終目的地的路徑。但是,以今日網際網路而言,若儲存所有的路徑於一張路徑表中,其龐大的條目數 顯然會讓尋表過程變得極無效率。底下我們介紹一些實際的方法: 次站路徑選擇法 特定網路路徑選擇法 特定主機路徑選擇法 預設路徑選擇
次站路徑選擇法 (Next-Hop Routing) 路徑表中只紀錄下一站的位址,而非記載整條路徑的資訊。因此路由器的路徑表彼此必須具有一致性。下圖展示使用這種技術的路徑表。
特定網路路徑選擇法 (Network-specific Routing) Figure 6-4 特定網路路徑選擇法 (Network-specific Routing) 路徑表中只用一個條目定義網路的位址,而不是將此網路上所有的電腦都納入記載。換言之,我們把所有連接在相同網路上的電腦,視為一個主體。譬如有 1000 台電腦連接在一條相同的網路上,則在路徑表上只用一個條目而不是 1000 個。下圖展示此一觀念。
特定主機路徑選擇法 (Host-specific Routing) Figure 6-5 特定主機路徑選擇法 (Host-specific Routing) 將目的主機的位址也放在路徑表中。我們可以藉此要求使用特定的路徑來傳送至目的主機。譬如:右圖主機 A 只能經由 R3 送達主機 B,而不能經由 R1 與 R2。
預設路徑選擇 (Default routing) Figure 6-6 預設路徑選擇 (Default routing) 右圖的主機 A 所處的網路對外有兩台路由器。路由器 R1 用來將封包繞到位於 N2 網路的主機。但是若是繞到網際網路的其他地方,要使用路由器 R2。主機 A 只建一個預設條目就好 (網路位址為 0.0.0.0),這樣做就不用將整個網際網路上的所有網路都列上來。
靜態與動態路徑選擇 靜態路徑表 (static routing table) 靜態路徑表內的資訊是以人工鍵入,由管理者針對每個目的地一一鍵入路徑。當路徑表建立好之後,有改變時它不能自動更新,必須藉管理者以人工方式加以更改。 靜態路徑表可以使用在小型不常改變的互連網路,或是用在除錯的實驗性互連網路上。它並不適合使用於一個像網際網路一般的大型互連網路。
動態路徑表 (dynamic routing table) 動態路徑表使用動態路徑選擇協定像是 RIP、OSPF、或BGP,可以週期性的更新路徑表的內容。當網際網路上有所改變時,如路由器關掉或是路徑壞掉,動態協定可以更新所有路由器內的路徑表,而最後也會更新到主機。 網際網路中的路由器需要週期性的更新,如此 IP 封包傳送才能有效率。 RIP: Routing Information Protocol OSPF: Open Shortest Path First BGP: Border Gateway Protocol
路徑表與路徑選擇模組 當路由器找路徑時, 它先檢查是否為直接傳送, 然後檢查是否為特定主機傳送, 接著檢查是否為特定網路傳迭, 最後檢查是否為預設傳送。 這種階層式的尋找方法可以實現在路由器器模組裡或是路徑表內。
Figure 6-7 路徑選擇模組由 IP 處理模組收到網路封包,之後路徑選擇模組就檢索路徑表以找到最佳路徑。路徑找到後,就把封包與次站位址 (next hop address) 送到分段模組進行分段工作 (如下圖所示) :
Figure 6-8 路徑表 路徑表以階層安排:先放直接傳送的網路的條目,然後是特定主機傳送的條目,再來是特定網路的條目,最後是預設傳送的條目。一般而言,路徑表的每個條目有如下表所示的七個欄位: 封包個數 使用次數 Flags U The router is up and running. G The destination is in another network. H Host-specific address. D Added by redirection. M Modified by redirection.
路徑選擇的模組 從 IP 封包取得目的 IP 位址 從路徑表的第一個條目開始,逐條檢查: D ← (Mask 欄) & (目的 IP 位址); 若 D 和 (Destination address 欄) 相同,則 2a. 若 G 旗標存在,則以 (Next-hup address 欄) 為次站位址; 2b. 否則,以目的 IP 位址為次站位址(直接傳送)。 2c. 用上述步驟所得的次站位址傳送封包到分段模組。 2d. 結束檢查 若找不到符合的條目,送出一個 ICMP 錯誤訊息,然後結束。
網路組態範例
路由器 Rl 的路徑表 Mask Dest. Next Hop F I. 255.0.0.0 111.0.0.0 - U m0 ---------------------------------------------------------------------------------------------------- 255.255.255.255 194.17.21.16 111.20.18.14 UGH m0 255.255.255.0 192.16.7.0 111.15.17.32 UG m0 255.255.255.0 194.17.21.0 111.20.18.14 UG m0 0.0.0.0 0.0.0.0 111.30.31.18 UG m0
範例 路由器 R1 收到 500 個封包,目的地為 192.16.7.14。路徑選擇程序一列一列的將遮罩與目的位址做 bit-AND 運算直到找到相符條目為止。 Direct delivery 192.16.7.14 & 255.0.0.0 192.0.0.0 no match 192.16.7.14 & 255.255.255.224 192.16.7.0 no match 192.16.7.14 & 255.255.255.224 192.16.7. no match Host-specific 192.16.7.14 & 255.255.255.255 192.16.7.14 no match Network-specific 192.16.7.14 & 255.255.255.0 192.16.7.0 match 路由器將封包及其次站的 IP 位址 (110.15.17.32),經由介面 m0 送到分段模組做後續處理,路由器將封包個數欄位增加 500,而使用次數增加1。
範例 路由器 Rl 收到 100 個封包,目的地為 193.14.5.176。路徑選擇程序一列一列的將遮罩與目的位址做 bit-AND 運算直到找到相符條目為止。 Direct delivery 193.14.5.176 & 255.0.0.0 193.0.0.0 no match 193.14.5.176 & 255.255.255.224 193.14.5.160 match 路由器將封包及其次站的 IP 位址 (93.14.5.176)經 由介面 m2 送到分段模組做後續處理,路由器將封包個數欄位增加 100,而使用次數增加 1。
範例 路由器 Rl 收到 20 個封包,目的地為 200.34.12.34。路徑選擇程序一列一列的將遮罩與且的位址做位元及運算直到找到相符條目為止。 Direct delivery 200.34.12.34 & 255.0.0.0 200.0.0.0 no match 200.34.12.34 & 255.255.255.224 200.34.12.32 no match Host-specific 200.34.12.34 & 255.255.255.255 200.34.12.34 no match Network-specific 200.34.12.34 & 255.255.255.0 200.34.12.0 no match Default 200.34.12.34 & 0.0.0.0 0.0.0.0. match 路由器將封包及其次站的 IP 位址 (111.30.31.18) 經 由介面 m0 送到分段模組做後續處理,路由器將封包個數欄位增加 20,而使用次數增加 1。
範例 解答 寫出在下圖路由器 Rl 的路徑表。 Mask Destination Next Hop I.
範例 解答 寫出在下圖路由器 Rl 的路徑表。 Mask Destination Next Hop I. ----------------------------------------------------------------------------- 255.255.255.0 80.4.5.0 201.4.10.3 m1 or m2 or 200.8.4.12 ------------------------------------------------------------------------------ 255.255.255.0 80.4.6.0 201.4.10.3 m1 or m2 or 200.4.8.12 ------------------------------------------------------------------------------- 0.0.0.0 0.0.0.0 ???????????? m0
範例 路由器 R1 的路徑表秀在下表,畫出它的網路連接圖。 Mask Destination Next Hop I.