21
- OSPF基本
OSPF
1. 範圍: IGP2. 原理: Link-state
3. 有/無類: 無類
4. 封裝: FCS→Hello→OSPF→IP→以太網
5. 群播IP地址:224.0.0.5 / 224.0.0.6
6. 更新機制: 週期更新(30分鐘更新一次)和觸發更新
7. 彙總:
8. 負載: 等價負載
鏈路狀態協定
LSA鏈路狀態通告,可以理解為OSPF中傳遞路由的東西
鏈路狀態協定的數據結構
一. 與距離向量協定相比,鏈路狀態協定掌握更多的網路訊息
1. 鄰居表(Neighbor table):稱為鄰居數据庫2. 拓撲表(Topology table):即LSDB(鏈路狀態數据庫)
把所有鏈路的通告LSA放進拓撲表
3. 路由表(Routing table):稱為轉發數据庫
在數据庫中會用SPF算法,算出最佳路徑放進路由表
二. 每台路由器知道整個網路
三. 鏈路狀態協定能計算出更準確的路由
OSPF區域
鏈路狀態協定要求層次型網路結構
這兩層結構包括:
- 中轉區域(骨幹區域或Area 0)- 非骨幹區域(非0區域)
1. 減少路由表條目
在同一個區域是不能彙總,沒有區域就不能彙總,彙總分為域間彙總和域外彙總。
2. 本地拓樸變化只會影響一個區域
3. 減少LSA的泛洪範圍
4. 區域劃分是接口的概念
5. 所有區域都必須接在區域0上
OSPF鄰居/鄰接(Adjacency)
1.
點到點網路,全是鄰接點到點也是一個網路類型,他的物理呈現型號為Serial接口,只要使用S接口他默認就是P2P
2. MA網路DROTHERs之間是鄰居,其他都是鄰接
MA:廣播的多路訪問
(E接口和F接口)不同的網路類型,建立不同的OSPF
只要在MA網路類型的OSPF,建立OSPF鄰居關係的時候,他會有鄰居和鄰接的區分。
DROTHERs:多個路由器他會選一個DR和BDR,除了DR和BDR其他的路由器都叫DROTHERs。(選一個正的和一個副的其他都是平民)
DROTHERs之間是不需要溝通,他們之間只需要維持一個鄰居狀態。只要有接到DR的都是鄰接狀態。
3. 路由更新和拓樸訊息在鄰接關係的路由器上交互
4. 鄰接關系建成,LSDB在exchanging(交流)狀元同步完成
OSPF路由計算
* 路由器根據鏈路狀態數据庫(LSDB),採用Dijkstra的SPF算法來計算到達目地網路的最優路徑。
* 最優的計算是基於最小的路徑開銷(Cost)。所有路由器有一致的LSDB
OSPF的算法只跟頻寬有關係
=Cost (10的8次方除以頻寬)。
Cost是看路由流向的入接口累加
OSPF的Hello時間為10秒和30秒,死亡時間為4倍
OSPF的報文頭格式
R1# debug ip ospf packet
上述debug輸出訊息顯示OSPF報文頭的各字段
Rorter-ID作用:OSPF區域中唯一標示路由器
Rorter-ID選舉方式: 1. 手工指定(任意,唯一) 2. Loopback口最大的IP地址 3. 物理口最大的IP地址
手工配置的Router-ID後面的IP地址不須要本地接口有IP地址的存在,因為這是標示這個路由器的,並不會在整個網路去轉發數據,他單存是標示的作用。
鄰居關係:Hello數据包
在OSPF鄰居路由器上帶*的條目必須一樣
Router ID
|
Hello/dead interval *
你好/失效時間
|
neighbors
|
Area ID *
區域ID
|
Router priority
|
DR IP address
|
BDR IP address
|
Authentication data *
驗證數據
|
MA網路當中進入了Two-Way state才會開始選DR和BDR,選出來之後進入了第三個狀態叫Exstart State,Exstart State在選舉,選誰的路由ID最大跟隱私確認,選出來之後進入Exchange State才開始大範圍的交換DBD。
交換完目錄(DBD)就應該知道我缺少什麼路由、你缺少什麼路由,接下來進入Loading State會發LSR單獨的請求我需要的,對方回一個LSU把你要的網段給你,最後回一個LSAck。(DBD在交換的時候除了顯示確認外還有一個隐式確認機制)
OSPF鄰居狀態
狀態
|
作用
|
init
|
發hello的時候
|
2way
|
收到的hello含有自己的route-id(通過hello包選舉DR/BDR)
|
Exstart
|
First DBD 的時候,選舉Master/slave
|
Exchange
|
DBD完全交互
|
loading
|
LSR/LDU交互
|
full
|
LSACK
|
DR的選舉方法:1. 較大的優先級(default =
1) 2. 較大的Router-ID
DR/BDR群播地址:224.0.0.6
鄰接狀態 = full 鄰居狀態 = 2way
OSPF基本實驗 1:57:00
R1(config)# interface lo 0
R1(config-if)# ip address 11.1.1.1 255.255.255.0R1(config-if)# int s 0/0
R1(config-if)# ip address 12.1.1.1 255.255.255.0
R1(config-if)# no shut
R2(config)# interface lo 0
R2(config-if)# ip address 22.1.1.1 255.255.255.0R2(config-if)# int s 0/0
R2(config-if)# ip address 12.1.1.2 255.255.255.0
R2(config-if)# no shut
R1(config-router)# router-id 1.1.1.1
可以通過手動方式給OSPF配router-id,也可以讓他自己去選
R1(config-router)# network 11.1.1.1 0.0.0.0 area 0
R1(config-router)# network 12.1.1.0 0.0.0.255 area 0
配置完就會去發hello包
R2# debug ip ospf adj
R2# debug ip ospf events
R2(config)# router ospf 2 進程號不一樣沒關係
R2(config-router)# network 22.1.1.0 0.0.0.255 area 0R2(config-router)# network 12.1.1.0 0.0.0.255 area 0
關掉debug
R2# un all
R1# show ip ospf 可以看router-id
R1# show ip ospf interface serial 0/0 看網路類型
R1# show ip ospf database 拓樸表
R1# show ip router
他默認把所有的環回口學過來的路由,全部置於 /32位
1. 如果要讓他變成 /24位也可以
R2(config)# interface lo 0R2(config-if)# ip sopf network point-to-point 改環回口的網路類別
不把你的環回口當成一台主機名,改成point-to-point就是說明另一端有可能還接一台路由器。
2. 用彙總也可以改成 /24
網路拓樸變化的泛洪 (02:16:40)
1. 路由器檢測到網路拓樸變化,更新LSA並進行泛洪
2.
路由器R1將此訊息通知給OSPF鄰居(若在LAN鏈路上,則R1則將此訊息發送到224.0.0.6,通知所有的OSPF DR和BDR)
3. DR將此訊息發送到224.0.0.5通知其他路由器
4. 所有路由器的LSDB逹成同步
OSPF DR-BDR實驗
DR-BDR選舉
DR的選舉方法:
1. 較大的優先級(default = 1) 2.
較大的Router-ID
DR/BDR群播地址:224.0.0.6大部份情況下都用224.0.0.5,只有在DR/BDR的情況下才會用到224.0.0.6
Designated Router
(DR) Backup Designated Router (BDR)
DR/BDR注意點:
1.
具不具備搶占?
DR是不具備搶占
2.
DR掛掉,BDR成為DR,重新選舉BDR
當DR掛掉後,BDR接替DR的位置。直接接替不用重新選舉,其他的路由器在選一個BDR。
3.
DR/BDR/DR
OTHER 只是接口概念
4. 不同的網段分別選DR
R1# show ip ospf interface e 0/0 看DR/BDR
清鄰居關係讓他們在重新選舉DR/BDR/DR OTHER
R1# clear ip ospf process 全部路由器都要清,清的速度要快Reset ALL OSPF processes? [NO]: yes
改優先級要在接口下改
R3(config)# interface eth 0/0 R3(config-if)# ip ospf priority 255 他是0〜255
show ip ospf interface e 0/0 看到2WAY狀態他們只是鄰居狀態,看到FULL狀態他們就是鄰接狀態。