文章目錄
- 1. 前言:
- 2. 路由基礎
- 2.1. 路由的相關概念
- 2.2. 路由的特征
- 2.3. 路由的過程
- 3 路由協議
- 3.1. 靜態路由:
- 3.2. 動態路由:
- 3.2.1. 距離矢量協議
- 3.2.2. OSPF協議:
- 3.2.2.1.OSPF概述
- OSPF的工作原理
- 路由計算
- 功能特性
- 3.2.2.2.OSPF報文
- OSPF 報文類型
- 3.2.2.2.OSPF鄰接關系建立
- 3.2.2.2.OSPF區域概念
1. 前言:
提起路由又和網絡相關,可能很多人第一反應就是家里的路由器。家里的路由器實際上是簡化了部分企業路由器功能的wiif信號發射器。
路由器確實有路由功能不假,但是并非這篇文章的重點,?重點是路由器中路由是什么,為什么要有路由,路由器是如何實現的?
2. 路由基礎
2.1. 路由的相關概念
由于可能有的的網絡環境比較復雜,可能有多個網段,vlan,或者多個網關,那么,vlan要不要通信,網段之間要不要通信,或者,什么時候,哪個網段走哪個網關都是一個需要考慮的問題,對不同的數據流設置一個走的路徑就是路由需要實現的功能。
2.2. 路由的特征
- 路由是指導報文轉發的路徑信息,通過路由可以確認轉發IP報文的路徑。
- 路由設備是依據路由轉發報文到目的網段的網絡設備,最常見的路由設備:路由器。
- 路由設備維護著一張路由表,保存著路由信息。
2.3. 路由的過程
-
接收數據包: 路由器接收來自網絡的數據包,這些數據包通常包含目標設備的IP地址、源設備的IP地址以及其他與網絡通信相關的信息。
-
查找路由表: 路由器內部維護一個路由表,其中包含有關網絡的信息,包括與其他網絡相連的接口以及如何將數據包發送到目標網絡的指令。路由器使用目標IP地址來查找路由表,以確定數據包應該被發送到哪個接口。
-
確定下一跳: 路由表中的信息幫助路由器確定數據包的下一跳,即下一個網絡節點或路由器,以便將數據包傳送到目標網絡。
-
轉發數據包: 路由器將數據包發送到正確的接口,進而將數據包傳送到下一跳。這可能涉及到使用各種網絡協議(例如IP、IPv6)來確保數據包按照正確的方式轉發。
3 路由協議
3.1. 靜態路由:
經過上面的簡單了解,我們知道了路由中存在路由表,那么靜態路由就是給了人為的高度自主權,
我們通過靜態路由可以設置那些網段,轉發到哪里
簡單實驗(pc1,pc2,ip分別為10.0.0.1,10.0.1.1)
要用三層口哦(GigabitEthernet)
由于跨網段,路由器在不進行任何配置的情況下,應該是ping不通的。
😄 如果我們配置一個靜態路由就可以簡單解決跨網段的問題了。
- 進入系統視圖
system view
- 設置路由器端口ip
interface GigabitEthernet 0/0/0
ip address 10.0.0.254 255.255.255.0quit
interface GigabitEthernet 0/0/1
ip address 10.0.1.254 255.255.255.0
- 添加默認路由
route-static 10.0.0.1 24 10.0.1.254
route-static 10.0.1.1 24 10.0.0.254
## ip address 源地址 掩碼 下一跳
3.2. 動態路由:
3.2.1. 距離矢量協議
- 運行距離矢量路由協議的路由器周期性的泛洪自己的路由表。通過路由的交互,每臺路由器都從相鄰的路由器學習到路由,并且加載進自己的路由表中。
- 對于網絡中的所有路由器而言,路由器并不清楚網絡的拓撲,只是簡單的知道要去往某個目的方向在哪里,距離有多遠。這即是距離矢量算法的本質。
3.2.2. OSPF協議:
3.2.2.1.OSPF概述
OSPF是典型的鏈路狀態路由協議,是目前業內使用非常廣泛的IGP協議之一。目前,針對IPv4協議使用的是OSPF Version 2(RFC2328),而針對IPv6協議使用OSPF Version 3(RFC2740)。本章后續提到的OSPF均指的是OSPF Version 2。
OSPF的工作原理
運行OSPF路由器之間交互的是LS(Link
State,鏈路狀態)信息,而不是直接交互路由。LS信息是OSPF能夠正常進行拓撲及路由計算的關鍵信息。OSPF路由器將網絡中的LS信息收集起來,存儲在LSDB中。路由器都清楚區域內的網絡拓撲結構,這有助于路由器計算無環路徑。
路由計算
每臺OSPF路由器都采用SPF算法計算達到目的地的最短路徑。路由器依據這些路徑形成路由加載到路由表中。
功能特性
- OSPF支持VLSM(Variable Length Subnet Mask,可變長子網掩碼)。
- 支持手工路由匯總。
- 多區域的設計使得OSPF能夠支持更大規模的網絡。
3.2.2.2.OSPF報文
OSPF 報文類型
- Hello 報文
- 目的: 發現相鄰的OSPF路由器。
- 包含信息: OSPF版本、區域ID、路由器ID等。
- 用途: 確定鄰居關系,協商OSPF參數。
- DBD(Database Description)報文
- 目的: 交換LSDB(Link State Database)的摘要信息。
- 包含信息: LSDB摘要,用于比較兩臺路由器的LSDB。
- 用途: 在建立鄰居關系后,用于同步鏈路狀態數據庫。
- LS Request 報文
- 目的: 請求鄰居發送缺失的LSA(Link State Advertisement)
- 包含信息: 請求缺失的LSA的ID。
- 用途: 用于同步LSDB,確保每臺路由器都有完整的鏈路狀態數據庫。
- LS Update 報文
- 目的: 向鄰居發送新的或更新的LSA。
- 包含信息: 包含新增或更新的LSA。
- 用途: 用于更新鏈路狀態數據庫。
- LS Acknowledgment 報文
- 目的: 確認接收到的LS Update 報文。
- 包含信息: 確認收到的LSA的ID。
- 用途: 確保LSA的可靠傳輸。
3.2.2.2.OSPF鄰接關系建立
-
Hello 報文發送:
路由器通過發送Hello報文來廣播自己的存在。
報文包含路由器ID、OSPF區域ID、鄰居路由器的IP地址等信息。
Hello 報文接收: -
相鄰的路由器接收Hello報文,并檢查其中的參數。
如果參數匹配,它們將進入鄰居候選狀態。 -
DR/BDR 選舉:
如果OSPF網絡是多播網絡(如Ethernet),路由器將參與DR(Designated Router)和BDR(Backup Designated Router)的選舉。
DR負責與其他區域的路由器建立鄰居關系。 -
鄰居狀態確認:
路由器收到Hello報文后,會檢查鄰居的路由器ID和OSPF區域ID。
如果匹配,則路由器將進入鄰居狀態。 -
LSDB 同步:
通過DBD(Database Description)報文,路由器交換其鏈路狀態數據庫(LSDB)的摘要信息。
如果兩個路由器的LSDB相同,那么它們就具有相同的視圖,進入“Exchange”狀態。 -
LSA 請求和更新:
如果有不同的LSA(Link State Advertisement),路由器將使用LS Request和LS Update報文來請求和更新缺失的LSA。 -
LSA Acknowledgment:
收到LS Update報文后,路由器發送LS Acknowledgment報文進行確認。
這確保了LSA的可靠傳輸。 -
最終鄰居狀態:
當LSDB同步完成并且鄰居確認了所有LSA的更新后,路由器進入“Full”狀態。
此時,路由器之間建立了完全鄰居關系,可以開始交換路由信息并計算最短路徑。
狀態 | 描述 |
---|---|
Down | 初始狀態,表示路由器與鄰居之間尚未建立連接。 |
Init | 路由器發送了Hello報文,但尚未收到鄰居的Hello報文。 |
2-Way | 路由器之間建立了雙向通信,已經收到了鄰居的Hello報文。 |
ExStart | 用于Master/Slave選舉。在這個狀態,路由器確定哪一個將作為Master,用于Master/Slave狀態機的同步。 |
Exchange | 路由器在這個狀態下交換數據庫描述(DBD)報文,以了解彼此的鏈路狀態數據庫(LSDB)的摘要信息。 |
Loading | 在這個狀態下,路由器交換Link State Request(LSR)和Link State Update(LSU)報文,以請求和傳輸LSA(Link State Advertisement)。 |
Full | 路由器在這個狀態下,與鄰居建立了完全鄰居關系,LSDB已經同步完成,可以進行最短路徑計算,并開始交換路由信息。 |
3.2.2.2.OSPF區域概念
- OSPF域(Domain):一系列使用相同策略的連續OSPF網絡設備所構成的網絡。
- OSPF路由器在同一個區域(Area)內網絡中泛洪LSA。為了確保每臺路由器都擁有對網絡拓撲的一致認知,LSDB需要在區域內進行同步。
- 如果OSPF域僅有一個區域,隨著網絡規模越來越大,OSPF路由器的數量越來越多,這將導致諸多問題:
- LSDB越來越龐大,同時導致OSPF路由表規模增加。路由器資源消耗多,設備性能下降,影響數據轉發。
- 基于龐大的LSDB進行路由計算變得困難。
當網絡拓撲變更時,LSA全域泛洪和全網SPF重計算帶來巨大負擔。