在開始閱讀前,能夠先考慮如下問題,閱讀後也能夠來檢驗學習的效果:html
在以前關於路由器的介紹中,咱們知道它是網絡互聯的核心設備,用於鏈接不一樣的網絡,在網絡之間轉發 IP 數據報。對於路由器來講,路由表是其內部最爲重要的構成組件。當路由器須要轉發數據時,就會按照路由表和必定的匹配規則進行轉發。對於路由表來講,通常有兩種靜態和動態這兩種配置方式。下面將細化這一過程,分別討論靜態和動態路由使用場景,以及原理和配置。網絡
回顧一下,對於一個路由器來講須要完成如下的工做:負載均衡
靜態路由:dom
動態路由:oop
總結一下,靜態路由將路由的轉發徹底交給管理員,在出現拓撲更新等狀況,都是由管理員進行維護。而動態路由則相反,全部的轉發,學習過程徹底靠路由器本身。學習
靜態路由-應用場景:測試
動態路由-應用場景:3d
大型的網絡code
當達到目的地有多條路徑時router
在配置靜態路由時,主要配置目的網段和下一跳地址,在配置前須要進行以下的分析:
靜態路由的配置分析:
首先先統計網絡個數
每一個路由器須要配置的路由數目等於總網絡數目減去自己鏈接的網絡數目
目的網絡位須要去的網絡,也就是非直連的網絡
下一跳爲與本身直連路由器的接口地址
在爲接口配置 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 兩條路徑。
這時數據包在到達該網絡時,該如何選擇呢?
採用的原則以下:
路由器之間能夠經過路由協議,自主學習來得到的路由信息,這樣的路由稱爲動態路由。使用路由協議動態構建路由表不須要人工參與,並能自動的適應網絡狀態的變化更新路由表,大型網絡或狀態變化頻繁的網絡一般會採用動態路由協議。
因特網的網絡數量巨大,幾百萬個路由器相互相互鏈接在一塊兒。要讓一個路由器記錄每一個網絡的信息是不可能的,並且許多機構並不肯意本身的網絡內部細節對外暴露。基於以上的緣由,因特網劃分了許多個自制系統(Autonomous System)。
自治系統內部的路由經過內部網關協議(IGP)交換路由信息,典型的內部網關協議有 RIP 和 OSPF。
自治系統之間也須要交換路由信息,自治系統之間使用外部網關協議(EGP)交換路由信息,每一個自治系統都會有邊界路由器來完成這個任務,目前因特網使用的外部網關協議是 BGP。
動態路由協議通常分爲如上圖中這幾種:
距離矢量路由協議:根據跳數來,選擇跳數最小的。如 RIP 協議。EIGRP 會把跳數做爲參考。
鏈路狀態路由協議:經過本身計算和篩選怎麼走(鄰居表,拓撲表,路由表),如 OSPF,IS-IS 等。
應用層協議,使用 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 工做原理
當兩個路由器共享一條鏈路或者在同一個物理網絡中,就稱它們爲鄰居
配置:
#三臺路由器正常配置端口 # 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 在雙方的路由表消失。
如何解決成環的問題:
限制最大距離:RIP 協議容許一條路徑上最多包含 15 個路由器,距離的最大值爲 16(表示網絡不可達)
水平分割:路由器從某個接口接收到的更新信息不容許再從這個接口發回去。
但水平分割依然沒法解決像第一個圖中,有多條路徑可達的狀況。
這裏的解決方法就是毒性反轉:
其實是一種改進的水平分割,當路由器從某個接口上接收到某個網段的路由信息後,並非不往回發送信息了,而是將這個網段的跳數(距離)設爲無限大,再發送出去。收到此種的路由信息後,接收方路由會當即拋棄該路由,而不是等到其老化時間到。
簡單來講,逆轉指的是對水平分割而言,原來是不發送,如今是發送。可是發送的是距離爲 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 結束。