7-5 RIPv2繞路協定與設定
內容:
7-5-1 RIP
繞路協定簡介
『路徑訊息協定』(Routing
Information Protocol, RIP)(RFC
1058)是由
Xerox 公司的
Palo Alto Research Center(PARC)所發展出來。
RIP採用『距離向量繞路法』(Distance
–Vector
Routing),首先路由器(內部閘門)紀錄每個進入封包的來源位址和計算其所經過路徑的數目(hop)(可由
IP 封包之
TTL 欄位數值計算出),在每一段時間(一般設定
30
秒)內廣播給相鄰的路由器。每一個路由器從自己所計算的訊息和其他路由器所傳遞過來的訊息之中計算出最佳路徑(請參閱
7-4 節之演算法),再更新路由表。目前
RIP 協定在
Internet 網路上應用有兩種版本規格:RIP
和
RIP 2,目前大多使用
RIPv2,吾人僅介紹它。以下分別介紹其訊息格式及運作方式。
(A)
RIPv2
訊息封裝
RIP 訊息是以
UDP 協定(埠口
520)包裝,也是透過
IP 協定傳送,圖
7-19 為
RIP、UDP
和
IP 封裝格式。
圖
7-19 RIP 訊息封裝
(B)
RIPv2
訊息格式
圖 7-20
為
RIPv2 封包格式,各欄位功能如下:
圖
7-20 RIPv2
封包格式
在一個 RIP
封包內最多可增列
25 筆路徑訊息,每一筆訊息的長度為
20 Bytes,因此
RIP 訊息最長為
504(20
×
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,如果超過
15(16)表示不可到達。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 = 0、Addr
= 自己的
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 的路徑訊息內有一個
RT(Route
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
為向量值(跳躍數量)、D(Direct)表示直接到達網路。假設訊息傳遞方式為
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] |
|
翻轉工作室:粘添壽
網路規劃與管理技術:
翻轉電子書系列:
|