這篇文章把OSPF講的明明白白
OSPF
- OSPF屬于IGP,是Link-State協(xié)議,基于IP Pro89。
- 采用SPF算法(Dijkstra算法)計算最佳路徑。
- 快速響應網(wǎng)絡變化。
- 以較低頻率(每隔30分鐘)發(fā)送定期更新,被稱為鏈路狀態(tài)刷新。
- 網(wǎng)絡變化時是觸發(fā)更新。
- 支持等價的負載均衡。
OSPF維護的3張表
- Neighbor Table:確保直接鄰居之間能夠雙向通信。
- Topology Table:LSDB(Link-State DataBase),同一區(qū)域的所有路由器LSDB相同。
- Routing Table:對LSDB應用SPF算法,選擇到達目標地址的最佳路由放入路由表。
OSPF的區(qū)域劃分
(1) OSPF采用層次設計,用Area來分隔路由器。
區(qū)域中的路由器保存該區(qū)域中所有鏈路和路由器的詳細信息,但只保存其他區(qū)域路由器和鏈路的摘要信息。
(2) Transit area (backbone or area 0)區(qū)域0--主要作用是防環(huán),也提高了擴展性!
主要功能:為快速、高效地傳輸數(shù)據(jù)包。通常不接用戶。
(3) Regular areas (nonbackbone areas) 主要是連接用戶。而且所有數(shù)據(jù)都必須經(jīng)過area 0中轉(zhuǎn)。
包括:Stub / Totally Stubby / NSSA
采用層次設計的好處
- 減少了路由表的條目
- LSA的泛洪在網(wǎng)絡邊界停止,加速會聚
- 局限拓撲變更的影響 縮小網(wǎng)絡的不穩(wěn)定性,一個區(qū)域的問題不會影響其它區(qū)域。
OSPF的鄰居與鄰接關系
- OSPF路由器與它直連的鄰居建立鄰居關系。
- OSPF路由器只會與建立了鄰接關系的路由器互傳LSA。
- 路由器只和建立了鄰接關系的鄰居才可以到達FULL狀態(tài)。
- 路由更新只在形成FULL狀態(tài)的路由器間傳遞。
- P2P鏈路可以到達FULL狀態(tài)。
- MA網(wǎng)絡,所有路由器只和DR/BDR到達FULL狀態(tài)。
(Backup Designated Router)
鄰居及鄰接的區(qū)別
- 鄰居---必須有直連的鏈路
- 鄰接--- 1. 必須是鄰居 2. 鏈路兩邊同一區(qū)域的數(shù)據(jù)庫必須同步(狀態(tài)為:FULL).
(1) Route-ID:
為唯一標識OSPF域中路由器。
設置Route-ID的優(yōu)先順序:
- 手工指定Route-ID x.x.x.x(可任意,但不能重復)
- 最大的Loopback IP
- 最大的接口IP(保證接口是激活狀態(tài))higher active physical interface ip推薦使用環(huán)回口和手工指定的router-id,因為它們的穩(wěn)定性更高。
(2) DR/BDR的選舉:
比較優(yōu)先級,越大越優(yōu)(默認為1,如設為0表示不參與選舉)
比較Route-ID,越大越優(yōu)。
- DRother發(fā)送LSA給DR/BDR用224.0.0.6
- DR發(fā)送LSA給DRother用224.0.0.5
- 非MA網(wǎng)絡(沒有DR/BDR),路由器都用224.0.0.5
< DR/BDR>特點
- 不搶占,DR正常時,即使有新的Pri比DR高的路由器也不能搶占成為DR。
- DR正常時,BDR只接收所有信息,轉(zhuǎn)發(fā)LSA和同步LSDB的任務由DR完成,當DR故障時,BDR自動成為DR,完成原DR的工作,并選舉新的BDR。
- DR是個接口概念。每個網(wǎng)段都會選舉DR。
- 不同網(wǎng)段分別選DR/BDR
SPF算法
- 在一個區(qū)域內(nèi)的所有路由器有同樣的LSDB
- 每一個路由器在計算時都將自已做為樹根
- 具有去往目標的最低cost值的路由是最好的路徑
- 最好的路由被放入轉(zhuǎn)發(fā)表
計時器
- Hello Intervals:10S/30S(廣播型網(wǎng)絡默認10s,非廣播型網(wǎng)絡缺省是30s!)
- Dead Interval:4*Hello =40S 不同于其它協(xié)議的三倍于Hello時間
hello包發(fā)向224.0.0.5
下面這三種網(wǎng)絡類型的hello時間是30S
- NON_BROADCAST
- POINT_TO_MULTIPOINT
- POINT_TO_MULTIPOINT(點到多點) NON_BROADCAST(非廣播)
OSPF開銷值計算
- OSPF Cost = 10^8/BW (bps)
默認情況下,環(huán)回口的COST值是1,serial口的COST值是64,以太口是10
OSPF的5種報文
(1) Hello:發(fā)現(xiàn)并建立鄰接關系。還有選舉DR和BDR!!!
(2) DBD:包含路由的摘要信息。
(3) LSR:向另一臺路由器請求特定路由的完整信息。
(4) LSU:用于LSA的泛洪和回應LSR該條路由的完整信息。在OSPF中,只有LSU需要顯示確認
(5) LSAck:對LSU做確認。
確認(ACK):
- 隱式 如Update對Request的隱式確認
- 顯式 LSA只對LSU顯式確認
DBD包中有一個三位的標志字段(主從關系控制標志):
- Initial(初始位)、More(后繼位)、Master/Slave(主從位)
- I(是否第一個包) M(是否還有后續(xù)包) M/S
- 1 1 1
- 0 1 0
- 0 1 1
分別是0x7,0x2,0x3 具有最高route-id的路由器為主路由器,建鄰居時第一個DBD是空的,目的為了選主從關系。選主從的目的是為了同步DBD,一開始兩臺路由器都發(fā)送一個空的DBD,序列號隨機生成,選出主路由器后從路由器先發(fā)送一個DBD,序列號為主路由器的序列號。(這樣就隱式確認)
OSPF建鄰居的必要條件
- Hello/Dead Intervals
- Area ID
- Authentication Password
- Stub Area Flag
- MTU
- subnet mask(必須是同一個網(wǎng)段)
- show ip ospf nei 如皋市exstart 狀態(tài) 表明他們呢的mtu 不一致, 那么 就 ip ospf mtu-ignore (忽略這個問題zx)
OSPF狀態(tài)機
- down state
- init state
- two-way state
- exstart state
- exchange state
- loading state
- full state
OSPF基本操作命令
- R1(config)#router ospf 110 注意:進程號是cisco的私有技術(shù) 沒有必要都設置成一樣的
- R1(config-router)#network 1.1.1.0 0.0.0.255 area 0 (正/反掩碼皆可)
- R1(config-router)#network 12.1.1.0 255.255.255.0 area 0 區(qū)域號還可用點分十進制表示
- R1#show ip protocols
- R1#show ip ospf 可查看router-id,進程號,域的數(shù)量
- R1#show ip ospf interface
- R1#show ip ospf interface brief
- R1#show ip ospf neighbor 查看鄰居信息
- R4(config-if)#ip ospf hello-interval 9
- (dead自動*4)
- R4(config-if)#ip os dead-interval 80
- R4(config-if)#ip ospf priority 10 修改優(yōu)先級
- R1#show ip os database
- 注意:在OSPF中,環(huán)回接口的路由掩碼會變?yōu)?2位 可用命令IP OSPF NETWORK POINT-TO-POINT
假如在一個大型網(wǎng)絡中,OSPF如果沒有分層,會有以下的問題產(chǎn)生:
- 每一個路由器會接收到太多的LSA
- 會經(jīng)常進行路由的計算
- 路由表太大,而路由器的內(nèi)存是有限的。
OSPF路由器的類型:
- 內(nèi)部路由器--在一個普通區(qū)域內(nèi)的路由器
- 核心路由器--在area 0區(qū)域內(nèi)的路由器
- ABR區(qū)域邊界路由器--連接兩個不同區(qū)域的路由器
- ASBR自治系統(tǒng)邊界路由器--連接OSPF域到另一個自治系統(tǒng)的路由器
LSA
鏈路狀態(tài)類型、鏈路狀態(tài)ID、通告路由器用來唯一地標識一條LSA序列號、校驗和、老化時間標識一條LSA的具體實例
- 32位
- 16b----------|----8------------|------8-----|
- 老化時間 可選項 類型
- 鏈路狀態(tài)ID(Link-ID)名字
- 通告路由器(ADV Router)Router-id
- 序列號 .seq
- 校驗和 .CRC 長度 .len
學習時的注意點:
- 傳播范圍
- 由誰產(chǎn)生
- 包含內(nèi)容
- ·類型 指明是哪種類型的LSA
- ·Link-ID 每一條LSA都有一個Link-ID,區(qū)分不同路由器發(fā)出的LSA
- ·ADV Router 指通告路由器的Router-id
- 1 2 3 4 5 7
- Link ID RID DR IP Route ASBR RID Route Route
- show ip ospf database router 1.1.1.1
- LSA1(Router Link States)
- R1#show ip ospf database router 查看LSDB中的1類LSA的詳細信息
- 域內(nèi)路由,僅在本區(qū)域傳遞,不會穿越ABR。
- 每臺路由器都會產(chǎn)生。
- 包含本路由器的直連的鄰居,以及直連網(wǎng)絡的信息
- Link ID: router ID
- ADV router: router ID
- 三種信息:Another neighbor stub network transit network(Ma網(wǎng)絡的一些信息,說明是否連接到ma網(wǎng)絡!)
- LSA2(Net Link States)
- R1#show ip ospf database network
- 1、僅在本區(qū)域傳遞
- 2、只有MA網(wǎng)絡才會產(chǎn)生LSA2,由DR產(chǎn)生。
- 3、標識出本MA網(wǎng)中有哪些路由器以及本網(wǎng)的掩碼信息。
- Link ID: DR的接口IP
- ADV router: DR的router ID
- LSA3(Summary Net Link States)
- R1#show ip ospf database summary
- 1、域間路由,能泛洪到整個AS。
- 2、由ABR發(fā)出,穿越一個ABR,其ADV Router就會變成此ABR的Router-id.
- 3、包含本區(qū)域中的所有路由信息,包括網(wǎng)絡號和掩碼。
- Link ID: 路由route(網(wǎng)絡號)
- ADV router: ABR的router ID(經(jīng)過一個ABR,就會改為這個ABR的router ID)
- LSA4(Summary ASB Link States輔助作用,用來告知其他路由器ASBR的位置
- R1#show ip os database asbr-summary
- 1、把ASBR的Router-id傳播到其他區(qū)域,讓其他區(qū)域的路由器得知ASBR的位置。
- 2、由ABR產(chǎn)生并發(fā)出,穿越一個ABR,其ADV Router就會變成此ABR的Router-id.
- Link ID: ASBR的RID
- ADV router: ABR的router ID(經(jīng)過一個ABR,就會改為這個ABR的router ID)
- 在ASBR直連的區(qū)域內(nèi),不會產(chǎn)生4類的LSA,因為ASBR會發(fā)出一類的LSA,其中會指明自已是ASBR
- LSA5(Type-5 AS External Link States)
- R1#show ip os database external
- 1、域外路由,不屬于某個區(qū)域。將外部路由通告進入ospf區(qū)域!
- 2、ASBR產(chǎn)生,泛洪到整個AS。不會改變ADV Router。因為不改變所以其他路由器不知道ASBR怎么走,這就要用到類型4LSA!
- 3、包含域外的路由 Type 4 LSA is needed to find the ASBR
- Link ID: 路由(網(wǎng)絡號)
- ADV router: ASBR的router ID (unchange)
- R1#sh ip os database external
- OSPF Router with ID (172.16.1.1) (Process ID 1)
- Type-5 AS External Link States
- LS age: 135
- Options: (No TOS-capability, DC)
- LS Type: AS External Link
- Link State ID: 172.16.1.0 (External Network Number )
- Advertising Router: 172.16.1.1
- LS Seq Number: 80000001
- Checksum: 0xB76C
- Length: 36
- Network Mask: /24
- Metric Type: 2 (Larger than any link state path)
- TOS: 0
- Metric: 20
- Forward Address: 0.0.0.0 轉(zhuǎn)發(fā)地址為0.0.0.0表示要向外部路由發(fā)數(shù)據(jù)包就發(fā)向通告路由器.....什么情況下不是0.0.0.0呢?這時會出問題。
- External Route Tag: 0
- LSA7(Type-7 AS External Link States)
- R2#show ip os database nssa-external
- 特殊的域外路由,只存在于NSSA區(qū)域中。
- Link ID: 路由(網(wǎng)絡號)
- ADV router: ASBR的router ID (只在NSSA區(qū)域中)
- R2(config-if)#bandwidth 5000
- R2(config-if)#ip ospf cost 30
OSPF的四種路徑類型
- 域內(nèi)路由 O...1、2
- 域間路由 O IA....3、4
- E1的外部路由 O E1...5 (當有2個出口的時候可以優(yōu)化)
- E2的外部路由 O E2...5 (只有一個出口的時候最佳)
外部路由重分布進OSPF有兩種類型:
- 重分布進OSPF的路由默認為E2,Cost=20,且傳遞過程中不改變COST。
- 如果改為E1類型,則在傳輸過程中會累加每個入接口的cost值
如果有去往同一目標的多條路由重分布進OSPF,OSPF在選擇外部路由的時候,遵循的原則是:
- O E1優(yōu)于O E2
- 在同樣的情況下,Cost越小越優(yōu)先
- 在cost相同的情況下,選擇到達ASBR最優(yōu)的路徑
新命令
- Router(config-router)#max-lsa maximum-number [threshold-percentage] [warning-only] [ignore-time] [ignore-count] [reset-time]...限制lsa的條數(shù)
- 定義一個百分比值,當收到LSA的條數(shù)超過我指定的值,進行相應的操作,用于限定路由器所能收到的LSA條數(shù)
- maximum-number 所允許收到LSA的最大條數(shù)
- [threshold-percentage] maximum-number的百分比,超過這個值就會發(fā)出警告,默認75%
- [warning-only] 只發(fā)送警告,不做其它動作,默認是關閉的
- [ignore-time] 超過最大值后進入ignore狀態(tài)的時間,默認5分鐘,5分鐘后恢復
- [ignore-count] 超過多少次后,一直進入ignore狀態(tài)
- [reset-time] 一直進入ignore狀態(tài)后多長時間重置所有鄰居
ABR有多條路由時如何發(fā)出三類LSA:
ABR路由器即使知道它有多條路由可以到達同一個目的地,它只會為這個目的地始發(fā)單條網(wǎng)絡匯總LSA通告。不論是從核心區(qū)域到非核心,還是從非核心到核心區(qū)域。而且一定是代價最低的一條LSA。
修改Cost參考值
- ·OSPF Cost = 108/BW (bps) 環(huán)回口的COST值是1,serial口的COST值是64,以太口是10
要修改路由的COST值有兩種方法:
第一種:
- R1(config)#int e0
- R1(config-if)#ip ospf cost 10 直接修改COST值1-65535
第二種:
- R1(config)#router ospf 110
- R1(config-router)#auto-cost reference-bandwidth 1000 (Mbps10的六次方)在COST公式中修改分子,本例修改分子為10的九次方
匯總的好處:
- 減少路由條目數(shù)
- 使拓撲變化的影響局限在一個小范圍內(nèi)
- 減少了LSA3和LSA5的flood