文章目錄
- 1、frrouting的配置:
- 2、ospf
- 2.1、檢測和維護鄰居關系
- 2.2、ospfDR和BDR
- 2.3、odpf鄰居表
- 2.4、ospf常用命令
- 2.5、bfd配置
1、frrouting的配置:
sudo service zebra start
sudo service ospfd start
telnet localhost 2604
en
configure terminal
router ospf
ospf router-id 192.168.30.2
network 192.168.142.0/24 area 0
network 192.168.30.0/24 area 0
quit
quit
write
quit
service zebra start:啟動Zebra守護進程。Zebra是FRR的核心守護進程,負責管理路由表,并與操作系統的內核進行交互。
service ospfd start:啟動OSPF守護進程。OSPF(Open Shortest Path First)守護進程負責處理OSPF路由協議相關的操作,如建立鄰居關系、交換路由信息等。
通過Telnet連接到OSPF守護進程
● telnet:使用Telnet協議連接到指定的主機和端口。
● localhost:連接到本地主機。
● 2604:OSPF守護進程的默認端口。
router ospf:進入OSPF路由協議的配置模式。在這個模式下,你可以配置OSPF的具體設置。
ospf router-id 192.168.30.2:設置OSPF的Router ID。Router ID是一個唯一的標識符,用于標識OSPF路由器。通常設置為路由器的某個接口IP地址,但也可以是任何唯一的32位值。
network 192.168.142.0/24 area 0
network是一個關鍵字,用于指定OSPF路由器在其配置中宣布的網絡。這個命令告訴OSPF進程某個特定的IP網絡需要參與OSPF路由計算,并通告給其他OSPF路由器。
area:
分隔網絡 ,
● 同一個區域內的 OSPF 路由器,會自動尋找并建立鄰居關系。成功建立鄰居關系的路由器會交換鏈路狀態數據庫(LSDB),確保區域內的所有路由器在鏈路狀態和路由信息上保持一致。
● 當同一區域內的某個路由器檢測到拓撲變化(如接口狀態變化),會生成新的 LSA 并進行泛洪(flooding),使該區域內的所有路由器更新其 LSDB。
● 同一個區域內的網絡才會進行計算路由
● DR 和 BDR 是在 每個廣播網絡段 上進行選舉的,而不是在整個區域范圍內選舉。
● 本項目域內網段全是aera0 域間連接的網段全是aera1
2、ospf
2.1、檢測和維護鄰居關系
OSPF(開放最短路徑優先)協議通過以下幾個步驟來檢測和維護鄰居關系:
- 發送Hello包
OSPF通過在每個啟用了OSPF的接口上定期發送Hello包來檢測鄰居。Hello包是OSPF的特殊報文,用于鄰居發現和保持鄰居關系。 - 接收Hello包
當一個OSPF路由器接收到來自其他路由器的Hello包時,它會檢查包中的信息,以確定是否要建立或維護與發送者的鄰居關系。 - 交換Hello包
如果兩個路由器的Hello包中包含匹配的信息(如區域ID、子網掩碼、Hello間隔和死間隔等),它們將成為鄰居,并開始交換更多詳細的OSPF信息。 - 建立鄰居關系
建立鄰居關系的步驟如下:
發送和接收Hello包:兩個路由器交換Hello包并驗證它們的兼容性。
雙向通信狀態:如果Hello包中包含對方的Router ID,表明對方已經收到并認可它的Hello包,鄰居狀態將變為雙向。
交換數據庫描述(DBD)包:鄰居關系進入Exchange狀態,路由器開始交換DBD包,其中包含鏈路狀態數據庫的摘要信息。
發送鏈路狀態請求(LSR):路由器請求尚未擁有的鏈路狀態信息。
發送鏈路狀態更新(LSU):路由器響應LSR請求,發送LSU包,提供詳細的鏈路狀態信息。
數據庫同步完成:一旦鏈路狀態數據庫完全同步,鄰居狀態進入Full狀態,表示鄰居關系完全建立。
OSPF 鄰居關系的狀態轉換通常經歷以下幾個階段:
- Down:初始狀態,沒有任何 OSPF 鄰居。
- Init:鄰居發現,但未完全建立。
- 2-Way:雙方確認彼此的存在。
- Exstart:準備交換 LSA。
- Exchange:交換 LSA。
- Loading:加載缺失的 LSA。
- Full:完全建立鄰接關系。 . 完成鄰接建立 LSA 交換 SPF 計算 :路由器可以使用收到的 LSA 來執行最短路徑優先(SPF)算法,計算到網絡中其他路由器的最佳路徑。 “Full” 狀態的鄰居會參與 OSPF 的路由選擇過程,從而在 OSPF 路由表中添加有效的路由
- 定期發送Hello包
鄰居關系建立后,OSPF路由器會定期發送Hello包來維持鄰居關系。如果在規定的時間間隔內(通常是死間隔的四倍)沒有收到鄰居的Hello包,OSPF將認為該鄰居不可達,并刪除其鄰居條目。
示例說明
假設有兩個OSPF路由器A和B,它們連接在同一以太網交換機上,并配置在同一網段 192.168.1.0/24:
路由器A的接口配置:
interface GigabitEthernet0/1
ip address 192.168.1.1 255.255.255.0
ip ospf 1 area 0
路由器B的接口配置:
interface GigabitEthernet0/1
ip address 192.168.1.2 255.255.255.0
ip ospf 1 area 0
在這種配置下:
路由器A和B在同一網段 192.168.1.0/24 內。
它們使用組播地址 224.0.0.5 發送Hello包。
它們的Hello包中包含相同的區域ID、Hello間隔、死間隔和子網掩碼。
因此,路由器A和B會相互發現并建立鄰居關系。
在大多數情況下,OSPF鄰居關系是在同一網段內建立的。這意味著OSPF鄰居之間的接口IP地址和子網掩碼必須匹配,確保它們在同一網絡范圍內。這種機制確保了OSPF路由器能夠正確地發現和維護鄰居關系,從而保證路由信息的準確性和一致性。
2.2、ospfDR和BDR
在OSPF(Open Shortest Path First)協議中,DR(Designated Router,指定路由器)和BDR(Backup Designated Router,備份指定路由器)是兩個重要的角色,它們在多接入網絡(如以太網)中扮演著關鍵的作用,用以優化網絡中的OSPF流量和減少網絡帶寬的消耗。
Designated Router (DR)
DR是OSPF網絡中每個多接入網絡(如以太網)中被選舉出來的一個路由器。它的主要作用是代表該網絡中的其他路由器進行OSPF通信。當一個網絡中存在多個路由器時,如果這些路由器都相互發送OSPF鏈路狀態通告(LSA),那么網絡中的OSPF流量將會非常龐大,從而可能導致網絡擁塞。通過選舉一個DR,網絡中的其他路由器只需與DR交換LSA,而DR則負責將這些LSA轉發給網絡中的其他路由器以及自治系統內的其他路由器。這樣,就大大減少了網絡中的OSPF流量。
BDR
是DR的備份,它的作用是在DR失效時能夠迅速接管DR的職責,從而保證網絡的穩定性和連續性。與DR類似,BDR也會監聽網絡中的LSA,但通常不會轉發給網絡內的其他路由器,除非DR失效。BDR的選舉過程與DR相同,但優先級稍低,確保在DR正常工作時,BDR處于待命狀態。
選舉過程
DR和BDR的選舉過程基于以下幾個因素:
- 路由器優先級:每個路由器都可以配置一個OSPF優先級(默認為1),優先級最高的路由器將被選為DR,次高的則被選為BDR。如果優先級相同,則根據路由器的Router ID(通常基于IP地址)來選擇。
- 全連接性:為了被選為DR或BDR,路由器必須能夠與網絡中的其他所有OSPF路由器形成鄰接關系。
2.3、odpf鄰居表
● FULL:表示已經建立了完全的鄰居關系,并同步了 LSDB。
● Init:表示接口已經接收到 Hello 報文,但還沒有完成整個鄰居關系建立過程。
● DR/BDR:表示該鄰居是 Designated Route(DR(指定路由器)r 或 Backup Designated Router(備份指定路由器)。
● 在OSPF協議中,每個路由器都必須有一個唯一的Route ID
● DR負責在該網絡內廣播路由信息,而BDR則作為DR的備份。其他路由器則被稱為DROther,它們只與DR和BDR交換路由信息,而不直接與其他DROther路由器交換信息。
2.4、ospf常用命令
vtysh 是一個集成的命令行接口,用于訪問所有FRR守護進程(例如,zebra、ospfd等)
show ip ospf 查看ospf的全局狀態
show ip ospf interface 查看OSPF接口信息
show ip ospf neighbor # 查看 OSPF 鄰居狀態
show ip ospf neighbor # 查看指定接口的 OSPF 鄰居
show ip ospf neighbor detail # 查看 OSPF 鄰居的詳細信息
show ip ospf database # 查看 OSPF 數據庫(LSDB)中所有 LSA
show ip ospf database router # 查看 Router LSA(類型 1 LSA)
show ip ospf database network # 查看 Network LSA(類型 2 LSA)
show ip ospf database summary # 查看 Summary LSA(類型 3 LSA)
show ip route ospf # 查看 OSPF 路由
show running-config 顯示設備的完整運行配置,包括所有接口的 IP 地址、路由協議配置(如 OSPF、BGP 等)、訪問控制列表(ACL)、靜態路由、NAT 配置等。
show ip route 此命令用于查看路由器的完整路由表,包括所有路由來源 , 包括直連路由、靜態路由、OSPF 路由、RIP 路由、BGP 路由等。每種路由類型會以不同的標識符表示,例如 O 表示 OSPF 路由,C 表示直連路由
show ip route ospf 此命令專門用于查看 OSPF 協議學習到的路由信息。 ,包括來自其他 OSPF 路由器的路由、直連路由和默認路由。
/usr/lib/frr/frrinit.sh restart 重啟frr 通常只需要將 frr.conf 文件放置在 /etc/frr/ 目錄下,FRR 就會在啟動時自動加載該配置文件
show ip ospf database
頂部信息
● OSPF Router with ID (0.0.0.61):當前 OSPF 路由器的 Router ID,
Router Link States(路由器鏈路狀態)(LSA) 類型 1
● Link ID:鏈路的標識符(Router ID),表示一個 OSPF 路由器或某個鏈路的標識。
● ADV Router:Advertising Router,發布該鏈路狀態的路由器 ID。
● Age:LSA(鏈路狀態廣告)老化計時器,值為秒數,越大表明此 LSA 更舊(默認 3600 秒自動刷新)。
● Seq#:序列號,OSPF 用于版本控制。值越大代表 LSA 較新。
● CkSum:LSA 校驗和,用于檢查鏈路狀態的完整性。
● Link Count:該路由器的鏈路數,表示此路由器直接連接的鏈路數量。
Net Link States(網絡鏈路狀態)類型 2:
● Link ID:網絡鏈路標識符,通常是 DR(指定路由器)的 IP 地址,代表此網絡的 IP。
● ADV Router:發布此網絡狀態的路由器的 Router ID,通常是網絡的 DR。
● Age:同樣為 LSA 老化時間,單位為秒。
● Seq#:序列號,用于標識 LSA 的版本。
● CkSum:LSA 校驗和。
Summary Link States(匯總鏈路狀態)
● Link ID:目的網絡的標識符(如 17.2.5.20/30),表示網絡前綴。 Summary LSA 和 AS External LSA 的作用是描述如何到達特定網絡前綴,而不僅僅是描述鏈路之間的連接狀態。因此,Link ID 表示目標網絡,以便接收 LSA 的路由器可以根據此信息更新路由表,了解該目標網絡的路徑。
● ADV Router:發布此匯總狀態的路由器的 Router ID,通常為 ABR。 ABR 負責連接 OSPF 的骨干區域(Area 0)與其他非骨干區域(如 Area 1、Area 2)。當非骨干區域的路由信息需要傳播到骨干區域或其他區域時,ABR 會將這些信息匯總并生成 Summary LSA,即匯總鏈路狀態通告,將匯總的路由信息從一個區域傳遞到另一個區域。 存儲的網段全是跨越網段. 當前區域(域)內的連接信息,OSPF 使用的是 Link State Advertisement (LSA) 類型 1 和類型 2:
● Age:該 LSA 的老化時間。
● Seq#:序列號。
● CkSum:LSA 校驗和。
● Route:路由前綴或子網,表示 LSA 描述的網絡范圍。
2.5、bfd配置
BFD(Bidirectional Forwarding Detection)**是一種網絡協議,用于快速檢測兩臺路由設備之間的連接狀態,以便在發生連接故障時迅速做出響應。BFD 提供了超低延遲的故障檢測機制,可以支持 OSPF、BGP、IS-IS 等多種路由協議,加速網絡收斂,提高整體網絡可靠性
OSPF 中,BFD 與 OSPF 鄰居關系協同工作,用于檢測 OSPF 路由器之間的鏈路是否出現故障。BFD 提供的快速故障檢測機制能夠讓 OSPF 在鏈路中斷時更快速地收斂,從而減少網絡中斷的持續時間。
● OSPF 默認鏈路故障檢測時間:OSPF 默認使用 Hello 協議檢測鄰居鏈路的狀態。鏈路故障檢測的時間可能會長達 40 秒或更多,具體取決于 OSPF 的 Hello 和 Dead 間隔時間。
● BFD 故障檢測時間:通過 BFD,鏈路故障的檢測時間通常可以減少到 300 毫秒以內,遠遠小于 OSPF 的默認故障檢測時間。
經過實測,分布式網絡108節點ospf收斂時間:10s->1s內
bfd配置: