2017年11月25日 星期六

21 - OSPF基本


21 - OSPF基本

OSPF
1. 範圍: IGP
2. 原理: 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:多個路由器他會選一個DRBDR,除了DRBDR其他的路由器都叫DROTHERs(選一個正的和一個副的其他都是平民)

DROTHERs之間是不需要溝通,他們之間只需要維持一個鄰居狀態。只要有接到DR的都是鄰接狀態。

3. 路由更新和拓樸訊息在鄰接關係的路由器上交互

4. 鄰接關系建成,LSDBexchanging(交流)狀元同步完成



OSPF路由計算

路由器根據鏈路狀態數据庫(LSDB),採用DijkstraSPF算法來計算到達目地網路的最優路徑。

最優的計算是基於最小的路徑開銷(Cost)所有路由器有一致的LSDB

OSPF的算法只跟頻寬有關係 =Cost (108次方除以頻寬)

Cost是看路由流向的入接口累加

OSPFHello時間為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 *
驗證數據
末節區域標示* stub-flag

MA網路當中進入了Two-Way state才會開始選DRBDR,選出來之後進入了第三個狀態叫Exstart StateExstart 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
在初始化(init)狀態的時候先發hello包,兩個hello包互相hello之後進入2way狀態。只有在MA網路才會進入2way狀態,PPP網路只直進入Exstart

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.0
R1(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.0
R2(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 ospf 1   1是進程號,為本地有效
R1(config-router)# router-id 1.1.1.1
可以通過手動方式給OSPFrouter-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 0
R2(config-router)# network 12.1.1.0 0.0.0.255 area 0
關掉debug
R2# un all


R1# show ip ospf neighbor
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 0
R2(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 DRBDR)

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      他是0255



show ip ospf interface e 0/0 看到2WAY狀態他們只是鄰居狀態,看到FULL狀態他們就是鄰接狀態。