CCNA - Part12 - 路由協議 (1) - 靜態路由,動態路由 RIP

在開始閱讀前,能夠先考慮如下問題,閱讀後也能夠來檢驗學習的效果:html

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

路由器

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

回顧一下,對於一個路由器來講須要完成如下的工做:負載均衡

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

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

靜態路由:dom

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

動態路由:oop

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

總結一下,靜態路由將路由的轉發徹底交給管理員,在出現拓撲更新等狀況,都是由管理員進行維護。而動態路由則相反,全部的轉發,學習過程徹底靠路由器本身。學習

靜態路由-應用場景:測試

  • 小型的網絡-好比只有幾臺路由器
  • 到達目的地只有單一路徑時
  • 當測試,排錯等狀況想快速創建一條路由時
  • 做爲默認路由使用:好比做爲外網的輸入

動態路由-應用場景:3d

  • 大型的網絡code

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

靜態路由

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

靜態路由的配置分析:

  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 接口端口,此時 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 結束。

相關文章
相關標籤/搜索