靜態路由,動態路由 RIP


在開始閱讀前,可以先考慮以下問題,閱讀后也可以來檢驗學習的效果:

  • 靜態路由和動態路由的區別,以及應用的場景。
  • 為什么要有默認路由?
  • 動態路由中距離矢量和鏈路狀態矢量是怎么一回事?
  • 為什么說 RIP V1 僅支持有類網絡?
  • RIP 的功能原理是什么?
  • 為什么說 RIP 會出現成環的現象?
  • 水平分割和毒性反轉解決的是什么問題?

路由器

在之前關於路由器的介紹中,我們知道它是網絡互聯的核心設備,用於連接不同的網絡,在網絡之間轉發 IP 數據報。對於路由器來說,路由表是其內部最為重要的構成組件。當路由器需要轉發數據時,就會按照路由表和一定的匹配規則進行轉發。對於路由表來說,一般有兩種靜態和動態這兩種配置方式。下面將細化這一過程,分別討論靜態和動態路由使用場景,以及原理和配置。

回顧一下,對於一個路由器來說需要完成以下的工作:

  • 識別數據包的目的地:通過匹配子網掩碼,確定出數據包應該發往的網段。
  • 確定路由信息的來源:當使用動態協議時,假如有多條路由可以到達某個網絡,應該先評估將最優的那條添加到路由表中。
  • 匹配路由:根據路由表選擇最合適的路由條目。
  • 維護和更新:拓撲的信息可能隨時方法改變,需要自動的更新。

靜態路由和動態路由的對比及應用場景

靜態路由:

  • 是網絡管理員在路由器上手動配置的路由條目
  • 當網絡拓撲改變時,需要讓管理員手動的更新路由條目
  • 路由過程必須根據管理員的配置轉發

動態路由:

  • 當拓撲改變時,可以自動的更新路由條目。
  • 通過交換和路由更新來學習和維護遠端的路由。就是動態路由器定期會同步哥各個路由器之間的路由信息,保持一致。
  • 路由器發現新的網絡是通過共享路由表來實現的。

總結一下,靜態路由將路由的轉發完全交給管理員,在出現拓撲更新等情況,都是由管理員進行維護。而動態路由則相反,所有的轉發,學習過程完全靠路由器自己。

靜態路由-應用場景:

  • 小型的網絡-比如只有幾台路由器
  • 到達目的地只有單一路徑時
  • 當測試,排錯等情況想快速建立一條路由時
  • 作為默認路由使用:比如作為外網的輸入

動態路由-應用場景:

  • 大型的網絡

  • 當達到目的地有多條路徑時

靜態路由

在配置靜態路由時,主要配置目的網段和下一跳地址,在配置前需要進行如下的分析:

靜態路由的配置分析:

  1. 首先先統計網絡個數

  2. 每個路由器需要配置的路由數目等於總網絡數目減去本身連接的網絡數目

  3. 目的網絡位需要去的網絡,也就是非直連的網絡

  4. 下一跳為與自己直連路由器的接口地址

在為接口配置 IP 地址后,路由器就會生成兩條默認路由-表示直連

Loopback 接口的作用主要是用於測試,當接收到數據時,會將數據自動返回來。

# 預配置命令
enable 
configure terminal
line console 0
no exec-timeout
logging synchronous
no ip domain lookup

# R3 Router 
Router(config)#hostname R3
# Configure 1.1.1.1/24, 12.1.1.1/24 IP
Router(config)#int e 0/0
Router(config-if)# ip addr 12.1.1.1 255.255.255.0
Router(config-if)# no shutdown
Router(config)#int lo 0
Router(config-if)# ip addr 1.1.1.1 255.255.255.0
Router(config-if)# no shutdown

# Configure Static Route
# Method1:
Router(config)#ip route 2.2.2.0 255.255.255.0 12.1.1.2
Router(config)#ip route 3.3.3.0 255.255.255.0 12.1.1.2
Router(config)#ip route 23.1.1.0 255.255.255.0 12.1.1.2

# Method2:邊界配置默認路由比較省時間
Router(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

// hostname R4
Router(config)#interface ethernet 0/0
Router(config-if)#ip address 12.1.1.2 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface loopback 0
Router(config-if)#ip address 2.2.2.2 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface ethernet 0/1
Router(config-if)#ip address 23.1.1.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit

# Configure Static Route
Router(config)#ip route 1.1.1.0 255.255.255.0 12.1.1.1
Router(config)#ip route 3.3.3.0 255.255.255.0 23.1.1.2
# The configuration of R5 is same as the R3

想象這樣一種情況,假設到達 5.5.5.5/24 的網絡,在 R4 配置靜態路由時,可以通過 R6 和 R7 兩條路徑。

這時數據包在到達該網絡時,該如何選擇呢?

采用的原則如下:

  • 首先通過 mask 匹配最長掩碼
  • 如果最長掩碼一樣,比較 AD,可以手動配置
  • 當 AD 一樣,可以比較 Metric
  • 最后還一樣的話,通過負載均衡來實現

動態路由

路由器之間可以通過路由協議,自主學習來獲得的路由信息,這樣的路由稱為動態路由。使用路由協議動態構建路由表不需要人工參與,並能自動的適應網絡狀態的變化更新路由表,大型網絡或狀態變化頻繁的網絡通常會采用動態路由協議。

自制系統和分層路由

因特網的網絡數量巨大,幾百萬個路由器相互相互連接在一起。要讓一個路由器記錄每個網絡的信息是不可能的,而且許多機構並不願意自己的網絡內部細節對外暴露。基於以上的原因,因特網划分了許多個自制系統(Autonomous System)。

自治系統內部的路由通過內部網關協議(IGP)交換路由信息,典型的內部網關協議有 RIP 和 OSPF。

自治系統之間也需要交換路由信息,自治系統之間使用外部網關協議(EGP)交換路由信息,每個自治系統都會有邊界路由器來完成這個任務,目前因特網使用的外部網關協議是 BGP。

動態路由協議一般分為如上圖中這幾種:

距離矢量路由協議:根據跳數來,選擇跳數最小的。如 RIP 協議。EIGRP 會把跳數作為參考。

鏈路狀態路由協議:通過自己計算和篩選怎么走(鄰居表,拓撲表,路由表),如 OSPF,IS-IS 等。

RIP (距離矢量)

應用層協議,使用 UDP 傳輸,端口為 520。RIP 和 IGRP 已經被淘汰,因為它們僅支持有類路由協議。(就是不能划分子網的協議)

路由信息協議(RIP)是路由器生產廠商之間使用的第一個開放標准,是連接不同廠商設備使用最為廣泛的共有協議。RIP 協議有兩個版本,V2 版本比 V1 版本的基礎上增加了一些拓展特性,如更新認證、路由匯總、無類路由、VLSM, 將廣播改為組播等。

RIP 協議是基於距離矢量的路由狀態協議。RIP 協議中,如果路由器 A 和 網絡 B 直接相連,那么路由器 A 到網絡 B 的距離就是 N + 1。如果從路由器 A 出發 到達網絡 B 需要經過 N 個路由器,則路由器 A 到網絡 B 的距離就是 N + 1。

RIP 認為距離最小的路徑就是最好的路徑。RIP 中的距離也稱為 “跳數”,每增加一個路由器,跳數就加 1。

RIP 工作原理

  1. 每個路由器每隔 30s 給自己所有的鄰居路由器廣播 RIP 報文,報文的內容是這個路由器當前的路由信息。
  2. 收到鄰居路由器的路由表信息后,更新自己的路由表,下次將更新后的路由表告訴自己的鄰居
  3. 180s 沒有收到某個路由器的路由表信息,就認為這個路由器出現故障,路由表中將所有以這個路由器為下一站的表項的距離修改為 16,表示不可達。再過 60s 依然沒有回復,從路由表刪除

當兩個路由器共享一條鏈路或者在同一個物理網絡中,就稱它們為鄰居

配置:

#三台路由器正常配置端口

# R1
# r1(config)#router rip 
# 關閉自動匯總,匯總成主類 A,B,C 類的網絡。
r1(config-router)#no auto-summary
r1(config-router)#version 2
r1(config-router)#network 12.0.0.0
r1(config-router)#network 1.0.0.0
r1(config-router)#network 13..0.0
# R2,R3 同理

# 排錯命令
show ip rip database
show ip protocols/inc second

由於在向外通告網絡時,存在 30s (默認)的時間差,這就有可能出現環路的現象。

比如在圖中 R3 宣告自己的網絡后,恰巧 Lo 0 接口 down,此時 R3 會立即將在路由表中刪除 3.3.3.0 的網絡。

但此時 R2 是不知道的,假設過了 10 s 后,到了 R2 該通告本身路由的情況,此時會組播發給 R1 和 R3.

而此時 R3 發現,R2 能到達 3.3.3.0 的網絡,會將該網絡加入自己的路由表,並且距離加一。

此時如果有數據包發送 3.3.3.0 的網絡,就會在 R2 和 R3 之間一直傳遞。而隨着下一通告周期的來臨,R2 和 R3

的距離會一直增加,直到 16 在雙方的路由表消失。

如何解決成環的問題:

  1. 限制最大距離:RIP 協議允許一條路徑上最多包含 15 個路由器,距離的最大值為 16(表示網絡不可達)

  2. 水平分割:路由器從某個接口接收到的更新信息不允許再從這個接口發回去。

    1. 如 R2 收到了 R3 中到達 3.3.3.0 網絡的路由信息,在自己宣告時不會將到 3.3.3.0 的消息再告訴 R3.

但水平分割依然無法解決像第一個圖中,有多條路徑可達的情況。

這里的解決方法就是毒性反轉:

實際上是一種改進的水平分割,當路由器從某個接口上接收到某個網段的路由信息后,並不是不往回發送信息了,而是將這個網段的跳數(距離)設為無限大,再發送出去。收到此種的路由信息后,接收方路由會立即拋棄該路由,而不是等到其老化時間到。

簡單來說,逆轉指的是對水平分割而言,原來是不發送,現在是發送。但是發送的是距離為 16 的信息,這樣就表明該網絡不可達,所以叫毒。

這里可以做一個實驗,利用關閉水平分割,手動造成成環現象。

# 關閉 R1 e 0/0 接口的水平分割
R1(config-if)#no ip split-horizon

# 關閉 R2 e 0/0 接口的水平分割
R2(config-if)#no ip split-horizon

# 設置 R2 的 e0/0 為被動,禁止發送協議報文
R2(config-router)# passive-interface e 0/0

# 關閉 R2 的 loopback 0 口

# 設置 R2 的 e0/0 為主動
R2(config-router)#no passive-interface e 0/0

這時我們可以利用 show ip route 來觀察,會發現 R1 和 R2 的跳數一直都會增加,增加到 16,全都消失

原因:

由於把 R2 的端口設置成被動,R1 收不到 R2 關閉了 lo 0 的消息。而且 R1,R2 的水平分割都已經被關閉。

這時 R2 會收到來自 R1 的它到 2.2.2.0 網絡的跳數是 1,所以到 2.2.2.0 網絡的跳數是 2。

由於 R2 已經無法通過直連到達 2.2.2.2。所以會更新自己的跳數。之后 R2 又會給 R1 發送到 2.2.2.2 的跳數是 2。

由於 R1 本身到 2.2.2.2 網絡就是通過 R2,所以會更新自己的路由表跳數為 3。就這樣以此類推直到到 16 結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM