網路規劃與管理技術第 七章 路由規劃與設定 上一頁    下一頁

7-5 RIPv2繞路協定與設定

內容:

  • 7-5-1 RIPv2 路由協定簡介

  • 7-5-2 RIPv2 繞路設定

  • 7-5-3 RIPv2+預設閘門設定

7-5-1 RIP 繞路協定簡介

『路徑訊息協定』(Routing Information Protocol, RIPRFC 1058)是由 Xerox 公司的 Palo Alto Research CenterPARC)所發展出來。 RIP採用『距離向量繞路法』(Distance Vector Routing,首先路由器(內部閘門)紀錄每個進入封包的來源位址和計算其所經過路徑的數目(hop)(可由 IP 封包之 TTL 欄位數值計算出),在每一段時間(一般設定 30 秒)內廣播給相鄰的路由器。每一個路由器從自己所計算的訊息和其他路由器所傳遞過來的訊息之中計算出最佳路徑(請參閱 7-4 節之演算法),再更新路由表。目前 RIP 協定在 Internet 網路上應用有兩種版本規格:RIP RIP 2,目前大多使用 RIPv2,吾人僅介紹它。以下分別介紹其訊息格式及運作方式。

(A) RIPv2 訊息封裝

RIP 訊息是以 UDP 協定(埠口 520)包裝,也是透過 IP 協定傳送,圖 7-19 RIPUDP IP 封裝格式。

 

7-19 RIP 訊息封裝

(B) RIPv2 訊息格式

7-20 RIPv2 封包格式,各欄位功能如下:

 

7-20 RIPv2 封包格式

        在一個 RIP 封包內最多可增列 25 筆路徑訊息,每一筆訊息的長度為 20 Bytes,因此 RIP 訊息最長為 50420 × 25 + 4 Bytes,還不超過 UDP 封包最長 512 Bytes 限制,在一般環境下都可順利傳輸(MTU 限制)。其實 RIP 封包內設計每筆訊息可存放 14 位元組長的位址,但使用 IP 位址格式只用到 4 個位元組,其餘都設為 0

7-20 RIP 2 封包格式,由圖中我們可發現 RIP 2 充分利用 RIP 的位址的空白欄位,填入更多的訊息。以下介紹所增加的3 個訊息欄位:

路由網域(Routing Domain, RD):提供路由程式的辨識記號,也就是執行該程式的程序識別碼(Process ID)。

路由標籤(Route Tag, RT):提供一個方法來區分內部閘門和外部閘門之間的路徑訊息。

次網路遮罩(Subnet Mask, SM):提供該筆訊息的次網路遮罩,如都為 0 表示沒有提供 SM 資料。

下一路徑(Next Hop, NH):到達該筆訊息之位址的下一路徑。

路由值(Metric):到達位址欄位內之 IP 位址所必須經過的跳躍次數(hop count)。最高值為 15,如果超過 1516)表示不可到達。Matric 的計算方式如圖 7-21,每經過一個路由器就增加一,譬如路由器 1 3 之間的 Metric 2

 

7-21 RIPv2 Metric

(C) RIP 運作程序

RIP 協定是使用路由器上眾所皆知(Well-Know)的 UDP 埠口 520,它運作程序如下:

1. 初始化: RIP 啟動時,便偵測所有運作的介面,並針對每一介面送出請求的封包(RIP Request)(或廣播方式),詢問其它路由器的路由表。對方路由器的埠口也是 UDP 520,而該 RIP Request AFI = 0Addr = 自己的 IP 位址、Metric = 16

2. 收到請求:路由器收到 RIP Request,即將本身的路由表以 RIP Response 回應給詢問者。另一種情況,如果 RIP Request 內所紀錄的路徑訊息,本身路由表內無資料,表示可能無法到達,便將該路徑的 Metric 設定為 16(表示無窮大的值),也一起回應給詢問端。

3. 收到回應:詢問端收到 RIP Response,就利用 RIP Response 上所登錄的路徑訊息,來更改本身路由表。新的紀錄可以被加入,已存在的紀錄可以被更改或刪除。

4. 定期更新路由表:一般系統都設定每 30 秒,路由器會將本身路由表得全部或部份,廣播給相鄰的路由器,以更新路由資訊。

5. 被動更新:當路由器發現本身和相鄰之間的跳躍數有變更時,隨時發送更新資訊給其它相鄰之路由器,但只發送變更部份。

如果路由器發現它相鄰的路由器已超過三分鐘沒有發送訊息,則將前往該路由器的跳躍值更改為 16,以隔離往該路由器之路徑。又針對 RIP 有一些缺點,RIPv2 將其改進如下:

為了減少廣播 RIP 封包的數量,儘可能減少自治系統(AS)之間的 RIP 訊息流通,因此在 RIP 2 的路徑訊息內有一個 RTRoute Tag)以區分不同自治系統,如果路由器收到的路徑訊息是不屬於本身自治系統,便可將其拋棄。

一般路徑資訊上的 IP 位址都以網路位址來表示,但也有可能以路由器本身的 IP 位址,如此便很難區分網路位址範圍,尤其是在有子網路分割的環境裡,因此 RIP 2 增加『次網路遮罩』(Subnet Mask, SM),以提供網路號碼的識別。

RIP 雖然提供路由器之間交換路由表,但沒有提供最佳路徑選擇,RIP 2 的每一筆路徑訊息裡,也提供下一路徑(Next Hop, NH)訊息,以提供最佳路徑給其它路由器參考。

(D) RIP 運作範例

我們用圖 7-22 來說明 RIP 協定的運作程序,也讓我們對 DV Routing 演譯法有更進一步的認識。假設圖中各路由器的路由表皆為起始狀態(未和其它路由器交換任何訊息),其中 Dest. 欄位表示目的網路(Destination)、Next H 欄位為下一路徑(Next-Hop)的路由器、Metric 為向量值(跳躍數量)、DDirect)表示直接到達網路。假設訊息傳遞方式為 R1 R2、再到 R3、再到 R4,依此方向來看各路由表變化情形(當然,實際在運作的網路會雙方向廣播)。

 

7-22 RIP 運作範例

R1 傳遞路由表給 R2

R1 廣播路由表給 R2 後,R2 建立新的路由表,如圖 7-23 所示。

 

7-23 R1 廣播路由表給 R2

R2 傳遞路由表給 R3

R2 廣播新的路由表給 R3 後,R3 建立新的路由表,如圖 7-24 所示。

 

7-24 R2 廣播路由表給 R3

R3 傳遞路由表給 R4

R3 廣播新的路由表給 R4 後,R4 建立新的路由表,如圖 7-25 所示。

 

7-25 R3 廣播路由表給 R4

        RIP 協定的最大限制就是跳躍距離最大 15 個區段,目前網路中自治系統環境也愈來愈大,在一個自治系統之路由器也許會超過這個數目。又因採用距離向量法可能會發生訊息過慢收斂問題,也就是說當網路變更或故障時,無法在快速的時間內傳遞及更新所有路由器上的路由表,造成封包回繞或到達不了目的地。解決方法有水平分割法、以毒攻毒法等等。(詳細推演請參考: TCP/IP Internet 網路)

7-5-2 RIPv2 繞路設定

(A) RIPv2 繞路規劃

(請匯入『自治系統網路()_介面設定.pkg』再實際演練)

 

7-5 自治系統網路()

吾人依照圖 7-14 自治系統網路(),規劃 RIPv2 動態繞路環境如下:(假設沒有設定『預設閘門』)

Router

Network_1

Network_2

Network_3

R1

192.168.0.0

192.168.100.0

 

R2

192.168.100.0

192.168.1.0

192.168.101.0

R3

192.168.101.0

192.168.2.0

192.168.102.0

R4

192.168.102.0

192.168.3.0

202.168.1.0

R_R5

120.118.166.0

202.168.1.0

 

(B) RIPv2 設定

R1設定 RIPv2 與網路範圍:

R4(config)#ip routing            [啟動 IP Routing 功能]

R1(config)#router rip            [進入設定 rip 繞路功能]

R1(config-router)#version 2        [選擇 RIPv2 版本]

R1(config-router)#network 192.168.0.0    [設定網路管轄範圍]

R1(config-router)#network 192.168.100.0  [設定網路管轄範圍]

R1(config-router)#exit

R2設定 RIP 與網路範圍成果:

R4(config)#ip routing

R2(config)#router rip

R2(config-router)#version 2

R2(config-router)#network 192.168.1.0

R2(config-router)#network 192.168.100.0

R2(config-router)#network 192.168.101.0

R2(config-router)#exit

R3設定 RIP 與網路範圍:

R4(config)#ip routing

R3(config)#router rip

R3(config-router)#version 2

R3(config-router)#network 192.168.2.0

R3(config-router)#network 192.168.101.0

R3(config-router)#network 192.168.102.0

R3(config-router)#exit

R3(config)#do show ip route

….

R 192.168.0.0/24 [120/2] via 192.168.101.1, 00:00:05, FastEthernet0/0

S 192.168.1.0/24 [1/0] via 192.168.101.1

C 192.168.2.0/24 is directly connected, FastEthernet1/0

R 192.168.100.0/24 [120/1] via 192.168.101.1, 00:00:05, FastEthernet0/0

C 192.168.101.0/24 is directly connected, FastEthernet0/0

R3(config)#exit

R3#copy running-config startup-config

R4設定 RIP 與網路範圍:

R4(config)#ip routing

R4(config)#router rip

R4(config-router)#version 2

R4(config-router)#network 192.168.3.0

R4(config-router)#network 192.168.102.0

R4(config-router)#network 202.168.1.0

R4(config-router)#exit

R4(config)#do show ip route

Gateway of last resort is not set

 

R 192.168.1.0/24 [120/2] via 192.168.102.1, 00:00:17, FastEthernet0/0

R 192.168.2.0/24 [120/1] via 192.168.102.1, 00:00:17, FastEthernet0/0

C 192.168.3.0/24 is directly connected, FastEthernet1/0

R 192.168.100.0/24 [120/2] via 192.168.102.1, 00:00:17, FastEthernet0/0

R 192.168.101.0/24 [120/1] via 192.168.102.1, 00:00:17, FastEthernet0/0

C 192.168.102.0/24 is directly connected, FastEthernet0/0

C 202.168.1.0/24 is directly connected, Serial0/2/0

R_R5設定 RIP 與網路範圍成果:

R_R5(config)#ip routing

R_R5(config)#router rip

R_R5(config-router)#version 2

R_R5(config-router)#network 120.118.166.0

R_R5(config-router)#network 202.168.1.0

R_R5(config-router)#exit

R_R5(config)#do show ip route

Gateway of last resort is not set

 

120.0.0.0/24 is subnetted, 1 subnets

C 120.118.166.0 is directly connected, FastEthernet0/0

R 192.168.1.0/24 [120/3] via 202.168.1.1, 00:00:07, Serial0/2/0

R 192.168.2.0/24 [120/2] via 202.168.1.1, 00:00:07, Serial0/2/0

R 192.168.3.0/24 [120/1] via 202.168.1.1, 00:00:07, Serial0/2/0

R 192.168.100.0/24 [120/3] via 202.168.1.1, 00:00:07, Serial0/2/0

R 192.168.101.0/24 [120/2] via 202.168.1.1, 00:00:07, Serial0/2/0

R 192.168.102.0/24 [120/1] via 202.168.1.1, 00:00:07, Serial0/2/0

C 202.168.1.0/24 is directly connected, Serial0/2/0

重點說明:當所有路由器都設定完成後,再回來檢視 R1 繞路功能如何:

R1(config)#do show ip route

Gateway of last resort is not set

 

R 120.0.0.0/8 [120/4] via 192.168.100.2, 00:00:18, FastEthernet0/1

C 192.168.0.0/24 is directly connected, FastEthernet1/0

R 192.168.1.0/24 [120/1] via 192.168.100.2, 00:00:18, FastEthernet0/1

R 192.168.2.0/24 [120/2] via 192.168.100.2, 00:00:18, FastEthernet0/1

R 192.168.3.0/24 [120/3] via 192.168.100.2, 00:00:18, FastEthernet0/1

C 192.168.100.0/24 is directly connected, FastEthernet0/1

R 192.168.101.0/24 [120/1] via 192.168.100.2, 00:00:18, FastEthernet0/1

R 192.168.102.0/24 [120/2] via 192.168.100.2, 00:00:18, FastEthernet0/1

R 202.168.1.0/24 [120/3] via 192.168.100.2, 00:00:18, FastEthernet0/1

吾人可以發現,各路由器設定 RIP 協定之後,它們之間利用 RIP 協定交換訊息,並建立新的路由表,即可與所有網路通訊。

(C) 路由器繞路測試

(完成後:自治系統網路()_RIPv2設定.pkg)

PC1 (192.168.0.1) 繞路測試:

C:\>ping 192.168.1.1     [OK]

C:\>ping 192.168.2.1     [OK]

C:\>ping 192.168.3.1     [OK]

C:\>ping 120.118.166.1   [OK]

PC2 (192.168.1.1) 繞路測試:

C:\>ping 192.168.0.1     [OK]

C:\>ping 192.168.2.1     [OK]

C:\>ping 192.168.3.1     [OK]

C:\>ping 120.118.166.1   [OK]

PC3 (192.168.2.1) 繞路測試:(PC4 略過測試)

C:\>ping 192.168.0.1     [OK]

C:\>ping 192.168.1.1     [OK]

C:\>ping 192.168.3.1     [OK]

C:\>ping 120.118.166.1   [OK]

R_PC5 (120.118.166.1) 繞路測試:

C:\>ping 192.168.0.1     [OK]

C:\>ping 192.168.1.1     [OK]

C:\>ping 192.168.2.1     [OK]

C:\>ping 192.168.3.0     [OK]

7-5-3 ­RIPv2+預設閘門設定

(A) 預設閘門規劃

(請匯入『自治系統網路()_RIPv2設定.pkg』再實際演練)

 

7-5 自治系統網路()

理論上,已設定動態繞路協定之後,路由器之間會交換繞路訊息,每個路由器依照接收到的訊息建立路由表,而且此路由表會隨著訊息改變而更新。但如果路由器收到一個封包需轉送到陌生 IP,而其並不在路由表之內,它將會不知所措而將它拋棄。因此,吾人還是設定預設閘門位址,當收到目的網路不在路由表時,直接將它轉送到預設閘門。

接下來,我們來驗證如果設定預設閘門是否可以順利轉送封包,吾人規劃各路由器的預設閘門如下:

Router

Default Route

備註

R1

192.168.100.2

往外部網路方向傳送

R2

192.168.101.2

往外部網路方向傳送

R3

192.168.102.2

往外部網路方向傳送

R4

202.168.1.2

往外部網路方向傳送

R_R5

202.168.1.1

內部網路方向傳送

(B) 預設閘門設定

R1設定預設閘門:

R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.100.2

R1(config)#do show ip route

..

Gateway of last resort is 192.168.100.2 to network 0.0.0.0

 

R 120.0.0.0/8 [120/4] via 192.168.100.2, 00:00:26, FastEthernet0/1

C 192.168.0.0/24 is directly connected, FastEthernet1/0

R 192.168.1.0/24 [120/1] via 192.168.100.2, 00:00:26, FastEthernet0/1

R 192.168.2.0/24 [120/2] via 192.168.100.2, 00:00:26, FastEthernet0/1

R 192.168.3.0/24 [120/3] via 192.168.100.2, 00:00:26, FastEthernet0/1

C 192.168.100.0/24 is directly connected, FastEthernet0/1

R 192.168.101.0/24 [120/1] via 192.168.100.2, 00:00:26, FastEthernet0/1

R 192.168.102.0/24 [120/2] via 192.168.100.2, 00:00:26, FastEthernet0/1

R 202.168.1.0/24 [120/3] via 192.168.100.2, 00:00:26, FastEthernet0/1

S* 0.0.0.0/0 [1/0] via 192.168.100.2

R2設定預設閘門:

R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.101.2

R3設定預設閘門:

R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.102.2

R4設定預設閘門:

R1(config)#ip route 0.0.0.0 0.0.0.0 202.168.1.2

R_R1設定預設閘門:

R1(config)#ip route 0.0.0.0 0.0.0.0 202.168.1.1

(C) 路由器繞路測試

(完成後:自治系統網路()_RIPv2+預設閘門.pkg)

PC1 (192.168.0.1) 繞路測試:

C:\>ping 192.168.1.1     [OK]

C:\>ping 192.168.2.1     [OK]

C:\>ping 192.168.3.1     [OK]

C:\>ping 120.118.166.1   [OK]

R_PC1 (120.118.166.1) 繞路測試:

C:\>ping 192.168.0.1     [OK]

C:\>ping 192.168.1.1     [OK]

C:\>ping 192.168.2.1     [OK]

C:\>ping 192.168.3.0     [OK]

 

翻轉工作室:粘添壽

 

網路規劃與管理技術:

 

 

翻轉電子書系列: