180120—【寒假培訓筆記】Day 3/6 RIP 和 OSPF機制

路由協議的分類

什麼是路由?
定義:路由(routing)是指分組從源到目的地時,決定端到端路徑的網絡範圍的進程。
路由協議的分類按不同標準有很多分類方法,常見的有如下幾種:

按工作機制分類:
    距離矢量
            RIP、EIGRP、
    鏈路狀態
            OSPF、ISIS、
按使用範圍分類:
    內部網關協議
            RIP、EIGRP、OSPF、ISIS
    外部網關協議
            BGP

動態路由協議:

即讓路由器能夠相互之間進行對話,動態地學習到路由並儲存在路由表之中。
(相關知識:路由表的三個來源:直連、靜態、動態)

下面我們來討論兩個典型的動態路由協議。

RIP 路由信息協議—–屬:距離矢量路由選擇協議

道聽途說的路由協議

路由信息協議RIP(Routing Information Protocol)是基於距離矢量算法的路由協議,利用跳數來作爲計量標準。在帶寬、配置和管理方面要求較低,主要適合於規模較小的網絡中。

    RIP是應用及開發較早的路由協議,是典型的距離矢量路由協議
    適用於小型網絡,最大跳數15跳(16跳視爲不可達)
    RIP是基於UDP的(所以不會保證發送信息的送達與否),使用端口號520(來去都是520,這是比較特殊的)
    在CISCO IOS平臺上的管理距離爲120

RIP的版本:V1/2/ng

V1

已經淘汰,缺陷太明顯。
有類協議,傳遞更新時不攜帶子網掩碼。
不支持認證。
不支持手工彙總。
在有類邊界上自動彙總,而且無法關閉。

V2

有些小型網絡中會使用
無類協議,傳遞更新是會攜帶子網掩碼
支持認證
支持手工彙總和自動彙總
在有類邊界上自動彙總,可以手動關閉。

RIPng

NG 爲 next generation 下一代。因爲該版本支持IPv6。此處不做討論

相關概念:

RIP度量值:

回顧一下昨天的內容,有個東西叫 管理距離/度量值。
其中,管理距離一般是廠商設置的,而且不會影響別的路由器。所以不同品牌的路由器可以協同工作,可以百度得知各廠商的設置。但是大家都認爲AD越小越好。
遇上什麼牌子就去查查官方的指南先就好。
而度量值則是各個協議規定不同:
RIP是以跳數,即經過的節點數作爲度量值的。
當路由每經過一個節點時,跳數增加1,當跳數變爲16的時候則丟棄不使用。

這種判定方式容易導致RIP選擇一條不是很“快”的路線。
如果有一條帶寬爲10M一個節點的路由、一條帶寬爲1G兩個節點的路由,RIP會僅僅因爲節點少而選擇前者。

工作機制:

  • 首先,每臺路由器會把自己的直連端口放到路由表裏,然後互相通信告訴附近的路由器
  • 然後,每臺路由器在更新週期到來時,會將自己的路由表中參與對應協議的部分完全發給所有運行距離矢量協議的鄰居。
  • 如果有某個網絡down了,在下一次更新的時候知道這個網絡掛了的路由器就不會再發送該條路由,其他人就會知道這個網絡可能掛了。
  • 當網絡中所有節點的路由表都穩定不變了,我們稱之爲網絡收斂完成。網絡在收斂之前無法正常工作(即到達所有地址)

RIP更新:

更新週期:30s
HoldTimer:180s
FlushTimer:240s

  • 每30s更新一次,大家重新交換路由
  • 如果在HoldTimer間隔之內都沒有收到某條路由的更新,RIP就會將該條目判定爲可能down。當某個條目處於可能down的狀態下,RIP不會將該路由更新給其他鄰居。
  • 在某條路由被判斷爲可能掛了之後,雖然不會外傳,但該路由器還會認爲它仍舊可以通信。但當到達FlushTimer間隔的時候,會將所有可能down狀態的路由徹底刪除.
    (爲了不等這麼長時間我們有命令”R2#clear ip route *”星號別忘!可以直接全clear掉)

存在的典型問題:

失真:

因爲RIP是一個“道聽途說的協議”,所以在路由傳遞過程中非常可能會出現失真。
比如說路由彙總
我們假設R1,2,3連成一條線。當R2從R3那裏接收到 192.168.23.6,而R2本身又有一個192.168.23.4,因爲它自帶的路由彙總,如果你還不關的話,那麼這兩條會合並稱爲192.168.23.0發給R1。
也就是說,R3到R2的時候是詳細信息,到R1變成個大概的了。失真。

產生環路:

這裏寫圖片描述
如圖,當連在R3上的那條路由掛掉之後,R3的路由表中關於這個路由的信息在被刪除之後。
下次更新時,R2告訴R3本來從R3那裏學來的那條路由。
此時就已經在R2、R3之間產生了環路。
下面是常用的6個放環機制:

RIP防環機制

  • 定義最大跳數:一條路由,最多可以傳遞15跳,第16跳的時候就認爲他已經失真了,就會直接丟掉。這一方法極大程度地限制了RIP網絡的規模。
  • 水平分割: 在更新路由的時候,不會將從某個接口學習到的條目,再從這個接口更新出去。它會挑出來。
  • 毒性路由: 在某個路由失效的時候,路由器在更新的時候會產生一條跳數爲16的條目更新出去,且會往下傳遞這樣所有的鄰居就會從自己的路由表將該條目立即刪除,不用等待240秒。
  • 毒性逆轉: 當某個接口收到某條路由更新的時候,會同時產生一條該路由的Hop爲16的更新,從接收端口發出。
  • 抑制計時器:30s、180s、240s
  • 觸發更新: 當路由表有任何變化的時候,會立即的產生更新,不用等待週期的到來。

RIP的配置

1、配置接口IP地址
    略
2、激活RIP協議
    R1(config)#router rip
3、版本的選擇
    R1(config-router)#version 1|2
4、配置需要接收和發送更新的接口所在網段,以及配置需要參與RIP更新的路由條目。
    R1(config-router)#network 192.168.12.0

配置需要接收和發送更新的接口所在網段,以及配置需要參與RIP更新的路由條目。
R1(config-router)#network 192.168.12.0
這條命令有兩個含義:
- 第一個意思:這個接口要參與接受發送;
- 第二個意思:通過rip告訴外界這裏有這樣一個端口

RIP常見檢查命令

show ip route rip
show ip protocols       \\查看當前路由運行的協議相關的信息
    Routing Protocol is "rip"
     Outgoing update filter list for all interfaces is not set
     Incoming update filter list for all interfaces is not set      \\出入更新過濾列表沒有設置
     Sending updates every 30 seconds, next due in 25 seconds       \\30s週期更新一次,下一更新的到來在25s之後
     Invalid after 180 seconds, hold down 180, flushed after 240        \\失效計時器和刷新計時器
    Redistributing: rip
     Default version control: send version 1, receive any version       \\版本相關的信息
     Interface             Send  Recv  Triggered RIP  Key-chain
     FastEthernet0/0       1     1 2                                  
     Loopback0             1     1 2                                  
     Automatic network summarization is in effect       \\自動彙總行爲是不是生效,這裏生效着。
     Maximum path: 4                                     
     \\負載均衡路徑數。兩條路AD和度量值都一樣,都可以走,叫負載均衡,這個參數表示支持這樣的最大條數。
     Routing for Networks:                                          \\參與RIP的路由條目
            1.0.0.0
            192.168.12.0
     Routing Information Sources:                               \\路由信息來源的狀態
            Gateway         Distance      Last Update
            192.168.12.2         120      00:00:27
     Distance: (default is 120)                                     \\默認管理距離的值
     R2#sh ip route 100.0.0.0   \\查看100.0.0.0路由詳細信息
     R2(config)#no ip cef       \\關閉cisco特快轉發
     R2#clear ip route *        \\刪除所有的路由,重新學習,有助於快速應用RIP的最新變化


    RIP手工彙總:
    在路由更新出接口上配置彙總命令
    R2(config-if)#ip summary-address rip 172.16.0.0 255.255.0.0 
    R2#sh ip rip database   \\查看RIP更新數據庫

OSPF 開放最短路徑優先協議—–屬:鏈路狀態路由協議

鏈路狀態協議:

    每臺路由在開始的時候會建立鄰居關係
    鄰居互相之間會傳遞鏈路狀態信息
    通過鏈路狀態信息數據庫可以得到全網拓撲
    通過SPF算法可以算出到達每個目的地的最短路徑
    通過算出的最短路徑生成路由表

OSPF協議簡介:

OSPF(Open Shortest Path First,開放最短路徑優先)是典型的鏈路狀態路由協議,是目前業內使用最廣泛的IGP之一;
該協議中,路由器之間交互的是鏈路狀態信息,而不是直接交互路由;
每臺OSPF路由器都知曉網絡拓撲結構(rip協議是做不到這一點的)
會採用SPF算法計算達到目的地的最短路徑;

支持VLSM,支持手工路由彙總;
多區域的設計使得OSPF能夠支持更大規模的網絡。

Router-id

相當於路由器的名字,不能出現重複。
你在告訴人家你附近哪個端口有哪個路由的時候,總該自報家門吧?
Router-id的設置有如下規定:

  • 如果路由器存在loopback接口,那麼選擇loopback接口的IP地址中最大的作爲Router-id
  • 如果路由器不存在loopback接口,那麼選擇物理接口最大的IP地址作爲Router-id
  • 如果路由器不存在可用IP地址,那麼將會報錯。
  • 可以手工指定,但是爲了穩定性,手工指定的Router-id不會立即生效,會等到下次OSPF進程啓動的時候生效。所以我們常見的做法是,先設置環回接口來保證id名是自己想要的,然後再去設別的。如果後配環回接口,這時候routerid已經選了物理接口,改不回來了。要麼手工配,要麼重啓。

這裏的最大就是數學上的大小,192比178大。

OSPF metric

其實就是他的度量值啦。。
ospf使用cost來作爲度量值。該值與帶寬有關。

參考帶寬÷接口帶寬=Cost

因爲路由表哪裏那個度量值是不支持浮點數的,如果一個接口的帶寬很大,算出來的會是個小數,0.01會變成1。所以會出現100M和10M的帶寬算出來一樣大。所以ospf支持手工修改參考帶寬值,
建議將參考帶寬值改成網絡中最大的帶寬

一條路由的Cost由該路由從起源到本路由沿途所有入站接口的Cost值累加。
R2#show interfaces f0/0(查看接口信息)

OSPF Packet

ospf在工作時需要使用五種數據包:

  • Hello:
    用於建立和維護鄰居關係,每隔10s從參與OSPF協議的接口發出一次,發出的hello包中IP目的地址爲224.0.0.5
    如果40s中沒有收到Hello則認爲鄰居失效,刪除鄰居以及從這個鄰居那裏得到的所有信息。
  • DD:
    是鏈路狀態的摘要信息,由於直接發送數據庫信息量過於龐大,會佔用太多資源。在正式交換數據庫之前,會先交換摘要,確認自己需要數據庫的哪一部分。
  • LSR:
  • 鏈路狀態請求,請求你把什麼什麼發送給我
  • LSU:
    鏈路狀態更新報文,你好這是你的快遞。
  • LSACK
    對需要保障可靠傳輸信息的一個確認。我收到了之後會給你一個回覆。

OSPF三張表

  • 鄰居表
    鄰居表可以查看和鄰居的關係狀態,所有的鄰居都會被放在這裏。
    鄰居表會40s倒計時,當收到對方發來的Hello包時,會將40s計時器重置
  • 鏈路狀態數據庫
    裏面會保存着所有從鄰居那裏收到的所有LSA(鏈路狀態)信息,即使是自己認爲不可用的也會保存 。
  • 路由表
    通過SPF算法算出的最優路線的下一跳會生成對應的路由條目,放進路由表。也就是說只存最優路徑。

OSPF的配置:

三臺直連路由器R1、R2、R3

    R1
    en
    conf t
    int f0/0
    ip add 192.168.12.1 255.255.255.0
    no sh
    int lo0
    ip add 1.1.1.1 255.255.255.0
    router ospf 1           \\激活OSPF,進程號爲1,進程號僅用於本地區分不同OSPF實例
    network 1.1.1.0 0.0.0.255 area 0            \\宣告1.1.1.0/24網絡屬於區域0,並且設置1.1.1.0/24所在的接口啓用OSPF信息的接受和發送
    network 192.168.12.0 0.0.0.255 area 0
    =======================================
    R2
    en
    conf t
    int lo0
    ip add 2.2.2.2 255.255.255.0
    ip ospf 1 area 0            \\在loopback0接口激活OSPF,並且將該接口放入區域0,並將該接口的鏈路狀態信息加入數據庫,並且在需要的時候更新。
    int f0/0
    ip add 192.168.12.2 255.255.255.0
    no sh
    ip ospf 1 area 0
    int f0/1
    ip add 192.168.23.2 255.255.255.0
    no sh
    ip ospf 1 area 0
    ======================================
    R3
    en
    conf t
    int lo0
    ip add 3.3.3.3 255.255.255.0
    ip ospf 1 area 0
    int f0/0
    ip add 192.168.23.3 255.255.255.0
    no sh
    ip ospf 1 area 0
常見檢查命令
    R2#show ip ospf neighbor        \\查看OSPF鄰居表
    R2#show ip route ospf               \\查看OSPF路由表
    R2#show ip ospf database        \\查看OSPF數據庫
    R2#show ip protocols 
        Routing Protocol is "ospf 1"
          Outgoing update filter list for all interfaces is not set
          Incoming update filter list for all interfaces is not set
          Router ID 2.2.2.2
          Number of areas in this router is 1. 1 normal 0 stub 0 nssa
          Maximum path: 4
          Routing for Networks:
          Routing on Interfaces Configured Explicitly (Area 0):
            FastEthernet0/1
            FastEthernet0/0
            Loopback0
         Reference bandwidth unit is 100 mbps
          Routing Information Sources:
            Gateway         Distance      Last Update
            3.3.3.3              110      00:00:51
            1.1.1.1                110      00:01:23
            2.2.2.2              110      00:01:51
          Distance: (default is 110)

OSPF工作機制:

  • 第一步:鄰居建立。我們知道RIP是用UDP實現通信的,用的是組內廣播的形式。所以它並不知道自己發出去的東西是否被收到也不知道哪些人是自己的鄰居。但ospf有一個發現鄰居的機制,通過發送hello包來建立連接
  • 第二步:鏈路泛洪。鄰居建立之後把所有自己有的鏈路狀態發出去。
  • 第三步:日常檢查鄰居是否存活。日常發hello打招呼,如果發現鄰居掛了,從鄰居那裏學到的所有東西都會被刪除。

ospf從開啓到完成工作有七個狀態:

  • down
    未開啓OSPF
  • Init
    收到對方發來的Hello但是沒有在對方發來的Hello中看到自己的Router-id
  • 2-Way
    在收到對方發來的Hello中看到自己的Router-id ,這樣才保證我們之間發生了通信。
  • ExChange
    選舉由誰主導信息交換過程,Router-ID大的作爲主導,在發送的信息中,會攜帶控制內容,l位表示是否選舉結束,M位表示是否存在後續內容,MS位表示時候爲Master
  • ExStart
    互相交換數據庫摘要,由被主導方先發
  • Loading
    開始發送LSU
  • Full
    同步完成
    這裏寫圖片描述

DR和BDR

在一個局域網中,會有很多臺路由器中間通過交換機連接到一起,這樣的話,互相都會收到發送的hello包,就會形成很複雜的拓撲模型,他們之間的交換是無窮無盡的。。
所以我們規定了這樣一個機制:
在一個局域網中,優先級最大(網上翻配置命令~~)的會成爲DR,
如果優先級都一樣會選舉Router-ID最大的那臺路由器在本局域網的接口作爲DR,
除了DR以外的接口,會選舉出Router-ID最大的路由器在本局域網的接口做爲BDR。

這裏寫圖片描述

  • 在一個局域網中,所有的角色需要發送任何的更新信息,需要先發給DR和BDR,再有DR發給所有的成員。
  • 局域網中的所有成員都必須和DR、BDR建立全毗鄰(就是狀態是Full)的鄰居關係、而DRother之間只需要2-way的鄰居關係即可。
  • DR和BDR會監聽224.0.0.5和224.0.0.6這兩個組播地址,而DRother只會監聽224.0.0.5
  • 當任何成員需要發送更新消息,會發送給224.0.0.6這個地址。然後DR會將消息發給224.0.0.5這個地址。
R5#show ip ospf interface f0/0      \\查看該接口OSPF相關信息
    R3(config-if)#ip ospf priority 10       \\修改接口的DR選舉優先級
    R5#clear ip ospf process                \\讓OSPF進程重啓

注:!
優先級:
配置的時候設大的話會毫無懸念地成爲DR,設成0的話就會根本不參與選舉。
必須要有一個DR,如果沒有的話,所有的路由會卡在two way的狀態,連路由摘要信息都發不了
鄰居表裏有你,但你就是沒法通信。

爲了穩定,如果之後加入了一個更大的,也只能靠邊站。
當DR掛掉之後,BDR將成爲DR,剩下的重新選舉一個BDR才輪得上那個新來的更大的。
如果原DR回來了,那也只能靠邊站。

穩定是首先需要考慮的。。。

選舉過程示例:

這裏寫圖片描述

OSPF多區域的配置

因爲每一個接口都會產生很多的鏈路更新,如果路由器數目多,則最後產生的鏈路將非常負複雜,更新和維護就會很困難。爲了應對這個問題。有 區域 這個概念。
因爲我們在鏈路交換時發送的都是原始信息,而不是彙總過的。因爲彙總是對路由表的操作,而我們交換的又不是路由表。
但在多區域的情勢下。彙總就稱爲可能了。你可以在區域邊界做彙總。減小路由表規模。
“OSPF多區域的設計減小了LSA洪泛的範圍,有效地把拓撲變化的影響控制在區域內,達到網絡優化的目的。”
有如下規定:

  • 區域分骨幹區域和非骨幹區域,骨幹區域標註爲 0 ,非骨幹區域必須和骨幹區域相連。
  • 其他區域的路由,在路由表中會標註爲O IA
  • 本區域會標O
  • area不一樣,不能建立鄰居
  • 兩臺設備的兩個端口,進程號不一樣,是可以建立鄰居的。
  • 在同一臺路由器上,不同進程號的OSPF端口之間信息不互通。不能完成資源共享。
  • 區域號不會隨數據傳輸,所以如果有兩個同名非骨幹區域,大家是分的清楚的。

這裏寫圖片描述

注:這裏的區域是在 端口 上討論的!!!!

P.S.

等價的負載平衡:
這裏寫圖片描述
注意那兩個1 ,表示這兩條負載均衡的線在發數據的時候會這邊一個那邊一個。
等價負載均衡。
星號在哪裏就表示下一次發數據的時候走哪條線。

泛洪:

泛洪(Flooding)是交換機和網橋使用的一種數據流傳遞技術,將某個接口收到的數據流從除該接口之外的所有接口發送出去。
交換機根據收到數據幀中的源MAC地址建立該地址同交換機端口的映射,並將其寫 入MAC地址表中。交換機將數據幀中的目的MAC地址同已建立的MAC地址表進行比較,以決定由哪個端口進行轉發。如數據幀中的目的MAC地址不在MAC地址表中,則向所有端口轉發。

VLSM:可變長子網掩碼

VLSM(Variable Length Subnet Mask)規定了如何在一個進行了子網劃分的網絡中的不同部分使用不同的子網掩碼。這對於網絡內部不同網段需要不同大小子網的情形來說很有效。
其實就是相對於類的IP地址來說的。A類的第一段是網絡號(前八位),B類地址的前兩段是網絡號(前十六位),C類的前三段是網絡號(前二十四位)。而VLSM的作用就是在類的IP地址的基礎上,從它們的主機號部分借出相應的位數來做網絡號,也就是增加網絡號的位數。各類網絡可以用來再劃分子網的位數爲:A類有二十四位可以借,B類有十六位可以借,C類有八位可以借(可以再劃分的位數就是主機號的位數。實際上不可以都借出來,因爲IP地址中必須要有主機號的部分,而且主機號部分剩下一位是沒有意義的,所以在實際中可以借的位數是在上面那些數字中再減去2,借的位作爲子網部分)。

最早的時候是ISIS,但是它站錯了陣營,不支持TCP/IP。後來RIP抄襲了它,支持TCP/IP。後來因爲TCP越來越火,其他的協議死了。
RIP是主流,ISIS是過去,也會是未來、因爲ISIS不依賴任何體制,所以他啥都可以用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章