OSPF

簡介


  • OSPF(開放式最短路由優先協議)

  • IGP

  • LS 發送的是LSA(鏈路狀態通告Link Status Advertisement),包含的是拓撲信息。加入LSDB,用SPF計算出Routing Table

  • VLSM/CIDR

  • 四層協議 三層報頭中的上層協議號爲89

  • 7中鄰接關係

  • 7中LSA

  • 5中報文

  • 3張表

    • 鄰居表(鄰接數據庫)

    • 拓撲表(LSDB)

    • 路由表(轉發數據庫)

鏈路狀態協議特點

  • 鏈路狀態路由協議比距離矢量路由協議更加了解網絡拓撲

  • 每臺路由器都會保存同一區域的拓撲

  • 不會產生環路

OSPF區域

  • 兩個層次

    • 骨幹區域(area 0),或者叫傳輸區域

    • 非骨幹區域

  • 減少路由表表項

    • OSPF中沒有自動彙總的概念,因爲OSPF中傳遞的是LSA,而不是路由條目。

    • 不能進行域內彙總,只能進行域間彙總和域外匯總。

  • 將拓撲變更的影響限制在一個區域內

  • 特定LSA泛洪停止在域邊界上,不同類型的LSA有不同的傳遞性

名詞

骨幹路由  backbone routers

ABR  area border router 區域邊界路由器將其他區域連接到area 0

OSPF鄰接關係

在OSFP中,對鄰居關係(Neighbor)和鄰接關係(Adjacency)嚴格區分。

鄰居關係是指三層直連,鄰接是指7層FULL鄰接關係。

  • P2P WAN

    • 兩端鄰居成爲FULL鄰接關係

  • LAN 

    • 鄰居與DR和BDR形成FULL鄰接關係

    • DROTHER之間形成two-way state

  • 只有當鄰接關係建立起來了,才能交換LSA,並同步LSDB。

  • LSA是泛洪的。

OSPF算法計算

也叫Dijkstra算法

  • 同一個區域內的所有路由器擁有相同的LSDB

  • 度量值稱爲cost,將每段路徑用10^8/BW(bit/s)計算,然後求和,得到整條路徑的cost

LSA


OSPF和RIP一樣,既支持週期發送,也支持觸發發送。

序列號

最小值  0x8000 0001

最大值  0x7FFF FFFF


序列號使用的最右邊的棒棒糖型空間

OSPF報文類型

  • HELLO

    • Hello timer:10s或者30s,取決於接口類型。

    • Dead timer是發送週期的4倍,修改hello時間,dead時間將自動變爲4倍,反過來,修改了dead不會改變hello。

  • DBD(Database Description)

    • LSDB的摘要信息,防止不必要的LSA交換

  • LSR(Link-State Request)

    • 請求自己沒有的LSA

  • LSU(Link-State Update)

    • 包含LSR請求的LSA信息

  • LSAck(Link-State Acknowledgment)

    • 確認收到了LSU中的LSA,有多少條LSA,就有多少LSAck進行確認

OSPF的確認機制

  • 顯示確認 使用LSU確認LSR使用LSAck確認LSU

  • 隱式確認(基於序列號的確認機制) 不使用額外的報文確認,而是用相同序列的同類型報文進行確認。如DBD

OSPF包封裝


Router ID的選擇:

  1. 手工配置

  2. 所有狀態爲UP UP的環回口中選舉最大的IP地址

  3. 所有狀態爲UP UP的物理接口最大的IP地址

Router ID和Area ID都可以用點分十進制表示。

HELLO報文

  • Router ID

  • Hello and dead intervals *

  • Neighbors 包含鄰居的RID

  • Area ID *

  • Router priority 在P2P接口中,這個字段是沒有意義的

  • DR IP address

  • BDR IP address

  • Authentication password *

  • Stub area flag *

*表示建立鄰接關係必須協調成功的條目

鄰接關係建立過程的7種狀態

  1. Down 初始狀態,接口被宣告進OSPF,沒有發送任何報文

  2. Init 通過接口發送一份Hello

  3. Two-Way 通過接口收到了一份Neighbor字段包含自身RID的Hello

  4. Exstart 交互3個不帶LSA報頭的DBD,選擇Master/Slave

  5. Exchange 由Master發起的帶有LSA報頭的DBD信息交互

  6. Loading 交互LSR LSU以及LSAck實現LSDB的同步

  7. Full 一旦LSDB同步,鄰接關係到達Full


Two-Way狀態並不是同時到達的。到達了Two-Way State之後,MA網段將進行DR選舉。


在進入Exstart State之後,將交換3個DBD,以確立主從關係(Master/Slave),由RID更大的作爲Master。


圖中,I指initial,M指more,M/S指Master/Slave。

在Exchange State階段中,由Master主導DBD交換。


OSPF小特性

  • MTU更改

  • 在OSPF中,Loopback口將會處理成一臺stub host,其路由以32位主機路由通告出去,可以防止路由黑洞。

DR/BDR選舉

選舉原則

  1. 參與該MA網段的路由器接口的OSPF優先級,越高越好(0-255),缺省值是1。值爲0,表示不參與選舉。

  2. 該MA網段所連接的路由器的RID,越高越好。

選舉時間爲wait time,從第一臺路由器到達Two-Way State開始計算,默認爲40s或者120s,是必須選滿的。

選舉完成之後,就不再進行選舉了。與根橋選舉不同,根橋選舉是時時進行的。

特點:

  • DR/BDR無法被搶佔

  • DR掛了,BDR會立即搶佔成爲新的DR,新的BDR通過在所有DROther之間重新選舉得出

  • DR和BDR是接口級別概念,每個MA網段的DR和BDR是單獨選舉的

  • BDR並不是必需的,可以使用ip ospf priority 0將除了DR以外的接口置爲0。這個在FR中很重要,只將HUB節點作爲DR,沒有BDR。

  • 如果一個網段中,沒有DR和BDR,所有都爲DROther,2-way state,不會有任何鄰接關係,也沒有任何LSA傳遞。

只要一個接口開啓了OSPF進程,該接口會立即監聽224.0.0.5,僅當該節點成爲DR或BDR時,該接口才會同時監聽224.0.0.5和224.0.0.6。

所有路由器發送給DR和BDR的報文的目的地址都是.6,DR發給其他路由器的是.5。

OSPF路由器類型

ABR 連接骨幹區域和非骨幹區域

ASBR 連接其他路由協議AS

LSA類型


LSA類型1:Router LSA

  • 傳遞範圍: 在該區域內泛洪,不穿越ABR

  • 通告者: 區域內的每個路由器將發送一條Router LSA,用Router ID標識

  • 包含內容: 純拓撲信息,包括宣告進該區域的所有直連鏈路的前綴、掩碼和網絡類型、度量值

  • Link-ID: 通告該LSA的RID

  • ADV Router: 通告該LSA的RID

LSA類型2:Network LSA

  • 傳播範圍: 在該區域內泛洪,不穿越ABR

  • 通告者: DR

  • 包含內容: 純拓撲信息,該MA網段所連接的Router的RID、該MA網段的掩碼

  • Link-ID: DR接口的IP地址

  • ADV Router: DR的RID

LSA類型3:Summary LSA

用來傳遞域間路由的

這裏的Summary只是一個名字,默認是不做彙總的

  • 傳遞範圍: 除了本區域外的所有區域

  • 通告者: ABR

  • 包含內容: 純路由信息,一條域間路由對應一條Summary LSA

  • Link-ID: 3類LSA路由的前綴

  • ADV Router: ABR的RID,每跨域一個ABR都會自動改寫爲該ABR的RID

LSA類型4:Summary ASB LSA

  • 傳遞範圍: 除了ASBR所在區域的所有區域

  • 通告者: ABR

  • 包含內容: 拓撲信息,

  • Link-ID: ASBR RID

  • ADV Router: ABR RID,每跨域一個ABR都會自動改寫爲該ABR的RID

LSA類型5:External LSA

  • 傳遞範圍: 整個AS

  • 通告者: ASBR

  • 包含內容: 純路由信息,一條域外路由對應一條External LSA

  • Link-ID: 5類LSA路由的前

  • ADV Router: ASBR的RID,不會改變

小特性

O E1和O E2

  • 當外部路由引入是,需強制添加Seed Metric(種子度量值)。

  • 對於OSOF而言,如果將BGP路由重分發進入,默認爲1;所有其他外部路由缺省Seed Metric爲20。

  • 當我們更加關心內網路徑好壞的時候,可以手動指定類型1,逐跳累加cost。

  • (config-router)#redistributed eigrp 90 subnets metric-type 1

彙總

域間彙總:需要在該區域的所有ABR上實施對3類LSA彙總

ospf的彙總是在進程內設置的,不是鏈路的。

(config-router)#area 0 range 202.10.8.0 255.255.252.0

該命令之後可以加cost,調整度量值,也可以加not-advertise,不通告該彙總,這樣明細和彙總路由都不會有,相當於路由過濾。

但是,這種路由過濾的方法並不推薦。正常做法是:

(config)#ip prefix-list 10 seq 10 deny 202.10.8.0/23 ge 24 le 24

(config)#ip prefix-list 10 permit 0.0.0.0/0 le 32

(config-router)#area 1 filter-list prefix 10 in

域外匯總:需要再ASBR上對5類LSA彙總

(config-router)#summary-address 192.168.8.0 255.255.252.0

OSPF LSDB過載保護

(config-router)#max-lsa maximum-number

改變cost

(config-if)#ip ospf cost <1-65535>

或者

(config-router)#auto-cost reference-bandwidth ref-bw

改變cost計算公式中的分子,ref-bw單位是Mbits,默認是100,也就是10^8bps。

OSPF建鄰接的條件

  1. 相同的hello時間和dead時間

  2. 直連接口屬於相同的區域

  3. 使用相同的認證類型和密鑰

  4. 相同的末節區域標識

  5. 相同的MTU

  6. 相同的網絡類型

OSPF特殊區域

Stub區域

目的

過濾4/5類LSA

部署條件

  1. 建議只有一個ABR,否則每個ABR都會發送缺省路由,可能導致內網路由器根據自己的情況選擇它認爲更近的缺省路由,從而產生次優路徑。

  2. 同區域內的所有路由器全部配置爲stub路由器

  3. 沒有ASBR

  4. 不能是區域0

  5. 沒有虛鏈路

部署

(config-router)#area 1 stub

在該區域的所有路由器上部署STUB特性,ABR將入區域方向的4/5類LSA同時過來,同時該ABR會主動向區域內部下放一條O IA的0.0.0.0/0的3類缺省路由,Seed Metric爲1。


Area 1成爲Stub Area,R2將過濾4/5類LSA,同時將發送缺省路由。

部署之前


部署之後


假設Area 1還有一個ABR R6,那麼R6也下放缺省路由,可能產生次優路由。

防止次優路由的方法:在R6上,使用area 1 default-cost修改默認cost,改高一些。

Totally Stub區域

目的

過濾3/4/5類LSA

部署

在ABR上部署,內網路由器上並不需要加no-summary參數

(config-router)#area 1 stub no-summary

部署之後


次末節區域

Not-So-Stubby Areas(NSSA)

過濾4/5類路由

允許區域內部有ASBR


NSSA中的ASBR將外部路由重分發進來的時候,就是以7類LSA發送的,僅在NSSA內存在。

NSSA中的ABR把從內到外的7類LSA轉換成5類LSA,一個NSSA只能有一個ABR(RID最大)充當轉換器。

7類LSA與區域是相關的,在R1上以O N2表示,並轉換爲O E2的5類LSA發送給Area 0。

凡是能發送5類LSA的都是ASBR,因此R1的身份變成了ABR/ASBR,也變成了5類LSA的ADV Router。

因此,NSSA內部的ASBR R3並不爲外界知道,外界知道的是轉換器R1作爲ASBR。

forward address就是用來告知真正需要轉發的是R3而不是R1。

NSSA中的ABR默認不會向區域內部下放缺省路由,建議下放。

下放方法是:

(config-router)#area 2 nssa default-information-roginate

 O N2 0.0.0.0/0 Seed-Metric = 1

完全次末節區域

過濾3/4/5類LSA

主動下放缺省路由 O IA 0.0.0.0/0 Seed-Metric = 1

(config-router)#area 2 stub no-summary

加表優先級

O > O IA > O E1/E2 == O N1/N2

OSPF不規則區域

網絡設計時,不要使用不規則區域。不規則區域的產生,大多是由於項目割接。這裏提供的是臨時應急方案。

遠離骨幹區域的非骨幹區域

單點雙向重分發

在沒有與Area 0直連的ABR上,使用OSPF雙進程,啓用單點雙向重分發。

(config)#router ospf 110

(config-router)#redistribute ospf 100 subnets

(config)#router ospf 100

(config-router)#redistribute ospf 110 subnets


缺點:全部是O E2路由。

tunnel

在沒有與Area 0直連的ABR上,建立一個Tunnel鏈路連接到離其最近的Area 0中的ABR路由器上。在這兩臺ABR上對Tunnel配置IP地址爲同一個IP子網段,並且將其宣告進OSPF的Area 0.

tunnel狀態爲Up的條件有3個:

(1)配置了tunnel接口的IP地址;

(2)配置了源地址和目的地址;

(3)源和目的地址之間要有可達的路由。

R1(config)#int tunnel 1

R1(config-if)#ip add 31.1.1.1 255.255.255.0

R1(config-if)#tunnel source 1.1.1.1

R1(config-if)#tunnel destination 3.3.3.3

R3(config)#int tunnel 3

R3(config-if)#ip add 31.1.1.3 255.255.255.0

R3(config-if)#tunnel source 3.3.3.3

R3(config-if)#tunnel destination 1.1.1.1

這樣就建立了邏輯接口tunnel。1.1.1.1和3.3.3.3必須有可達路由,這樣tunnel口才能up up。

在ospf進程內宣告tunnel接口的IP地址,如果此時源地址和目的地址(分別是1.1.1.1和3.3.3.3)也宣告進了ospf進程,將造成ospf鄰接關係翻動現象。

因此,只有將1.1.1.1和3.3.3.3做成靜態路由,就可以同時解決翻動現象和tunnel up up的問題了。

缺點:配置量大且繁瑣。

Virtual-Link

在沒有與Area 0直連的ABR和離其最近的Area 0中的ABR路由器上部署。

不能跨域骨幹區域和特殊區域。

R1(config-router)#area 2 virtual-link 93.3.3.3

R3(config-router)#area 2 virtual-link 91.1.1.1

Virtual-Link是一根按需鏈路,DoNotAge LSA,簡稱DNA,也就是說LSA的老化計數器不會計數。

Virtual-Link沒有Hello時間和Dead時間

被分割的Area 0

OSPF認證

不管是鏈路級認證還是區域級認證,密鑰id和密鑰字符串是配置在接口(包括Virtual-Link)上的,因此每個網段內保持一致即可。

鏈路級認證

明文認證

(config-if)#ip ospf authentication-key cisco

(config-if)#ip ospf authentication

密文認證

(config-if)#ip ospf message-digest-key 13 md5 cisco

(config-if)#ip ospf authentication message-digest

區域級認證

明文認證

(config-if)#ip ospf authentication-key cisco

(config-router)#area 0 authentication

密文認證

(config-if)#ip ospf message-digest-key 13 md5 cisco

(config-router)#area 0 authentication message-digest

針對於虛鏈路認證

如果在R1和R2上做了Area 0的區域級認證,由於虛鏈路是area 0的一部分,因此虛鏈路上不做認證,鄰接關係是起不來的。

因此,還需要在虛鏈路兩端配置密鑰,並在R3上開啓Area 0的區域級認證

OSPF網絡類型

  1. Loopback 只有環回口是Loopback的,其他類型接口都不能改爲Loopback無論接口掩碼多少,都以/32主機路由通告

  2. Point-To-Point Serial/ISDN BRI/FR point2point SubIf支持組播,沒有DR HELLO時間10s

  3. Broadcast Ethernet支持組播,有DR HELLO時間10s

  4. NBMA FR主接口/FR多點子接口不支持組播,有DR HELLO時間30s

  5. Point-To-Multipoint 默認情況不會是這種支持組播,沒有DR HELLO時間30s

  6. Point-To-Multipoint Non-Broadcast 默認情況不會是這種  不支持組播,沒有DR HELLO時間30s

這些網絡類型是高層的概念,與物理接口的類型沒有一一對應的關係,也就是說,串口可以是點到點的,也可以是廣播的。

修改網絡類型

(config-if)#ip ospf network + TYPE


NBMA

(config-if)#ip ospf network non-broadcast

(config-router)#neighbor + IP地址

這裏指neighbor只需要單向指就可以了,不需要雙向。應用場景:


在幀中繼環境中,由於Hub接單和Spoke節點物理相聚很遠,一般在Hub上單向指S1/S2/S3就可以了。

NUMA中,Hello時間爲30s

Point-To-Multipoint

(config-if)#ip ospf network point-to-multipoint

支持組播,有DR

自動生成關於直連鄰居接口的/32主機路由

Point-To-Multipoint Non-broadcast

(config-if)#ip ospf network point-to-multipoint non-broadcast

不支持組播,無DR

自動生成關於直連鄰居接口的/32主機路由

在sh ip ospf interface中看不到non-broadcast,只有在sh run中可以看到

OSPF在幀中繼中的部署

在幀中繼環境中,應用OSPF會比其他環境複雜很多。

幀中繼概念回顧

星型拓撲

PVC

DLCI 相當於MAC地址

LMI 本地管理接口有三類:ANSI/CISCO/Q933a

幀中繼映射 本地DLCI與對端IP地址

有兩種方式:

自動映射  Inverse-ARP(目的IP地址爲0.0.0.0,本地DLCI )

自動開啓

關閉命令:(config-if)#no frame-relay inverse-arp

(config-if)#no arp frame-ralay

手工映射

只能發送單播,不能發送組播和廣播,但是可以發送僞廣播

僞廣播在DLCI自動映射中是自動開啓的,在DLCI手工映射中是手工開啓的

幀中繼拓撲


R1作爲HUB節點,R2和R3作爲SPOKE節點,分別從R1建立兩條PVC通往R2和R3。

配置步驟:

1.將R1~R6的serial口上,設置封裝類型frame-relay,並打上時鐘率(模擬器不需要)

(conig-if)#encapsulation frame-relay ietf

2.在R4~R6上,配置以太網接口IP地址,運行某個IGP(如EIGRP)

3.將R4~R6模擬爲幀中繼交換機

(config)#frame-relay switching

4.將R4~R6上的serial口上,在數據鏈路層上,配置爲DCE。不能打時鐘率(物理層概念)

(config-if)#frame-relay intf-type dce

5.定義lmi類型

(config-if)#frame-relay lmi-type ansi

6.在真實環境中,R1、R2、R3之間距離很遠,爲了使其在邏輯上在同一網段,因此必須在R4~R6上創建tunnel接口

如:

R4(config)#interface tunnel 45

R4(config-if)#tunnel source 45.1.1.4

R4(config-if)#tunnel destination 45.1.1.5

R4(config-if)#frame-relay route 102 interface tunnel 45 500(任意一個DLCI號)

目前,通過幀中繼自動映射,R1可以ping通R2和R3。

但是,R2和R3之間並不能ping通。原因是:

當R2 ping R3時,目的IP地址是123.1.1.3,查路由表發現從serial 1/1發出;

serial 1/1是幀中繼封裝的,因此,必須將DLCI號封裝進二層。但是,R2上並沒有123.1.1.3和DLCI的映射關係。

此時,必須手動指定該映射,命令是:

R2(config-if)#frame-relay map ip 123.1.1.3 201 broadcast ietf

R3(config-if)#frame-relay map ip 123.1.1.2 301 broadcast ietf

這時,R2和R3可以相互ping通,R2的ping先發給R1,再發給R3。

但是,此時,R1並不能ping通自己。即

R1#ping 123.1.1.1

是不通的。

解決方法是:在R1上手動指定123.1.1.1的映射

R1(config-if)#frame-relay map ip 123.1.1.1 102 broadcast ietf

ping包先從R1發給R2,再從R2發回R1。不僅在幀中繼環境中,在PPP或HDLC中,也是這樣的。只有在以太網環境中,是在接口上打了個環,就通了。

幀中繼環境中的OSPF 

假設幀中繼環境中,只有自動映射,將所有的手工映射先刪除掉。

NBMA網路類型

1.

爲了建立鄰居,需要在Hub節點手工指Neighbor,SPOKE節點不需要回指。

R1(config-router)#neighbor 123.1.1.2

R1(config-router)#neighbor 123.1.1.3

2.

由於軸幅型拓撲,只有HUB節點連接了所有其他節點。默認情況下,選舉DR/BDR,可能造成某些節點缺乏某些路由信息。

爲了保證路由傳遞沒問題,需要手工修改接口的OSPF優先級,保證HUB爲DR,spoke節點爲DRother。

R1(config-if)#ip ospf priority 255

R2(config-if)#ip ospf priority 0

R3(config-if)#ip ospf priority 0

此時,

R1#ping 2.2.2.2 source 1.1.1.1

R1#ping 3.3.3.3 source 1.1.1.1

都是通的,但是R2#ping 3.3.3.3 source 2.2.2.2不通。原因是缺少映射。

3.

爲了保證spoke節點所連接的下游網段內的PC可以互訪,需要在spoke節點彼此指手工FR映射。

R2(config-if)#frame-relay map ip 123.1.1.3 201 broadcast ietf

R3(config-if)#frame-relay map ip 123.1.1.2 301 broadcast ietf

此時,R2#ping 3.3.3.3 source 2.2.2.2就通了。

broadcast網路類型

在R1~R3上,指定廣播類型。由於支持組播發送,不需要手工指neighbor(FR Map開啓僞廣播功能)

(config-if)#ip ospf network broadcast

同樣,需要手動指定優先級

R1(config-if)#ip ospf priority 255

R2(config-if)#ip ospf priority 0

R3(config-if)#ip ospf priority 0

彼此指手工FR映射。

R2(config-if)#frame-relay map ip 123.1.1.3 201 broadcast ietf

R3(config-if)#frame-relay map ip 123.1.1.2 301 broadcast ietf


P2MP Non-broadcast網絡類型

(config-if)#ip ospf network point-to-multipoint non-broadcast

爲了建立鄰居,需要在Hub節點手工指Neighbor,SPOKE節點不需要回指。

R1(config-router)#neighbor 123.1.1.2

R1(config-router)#neighbor 123.1.1.3

在這種情況下,因爲不選DR/BDR,不需要手工修改接口OSPF優先級

不需要手工幀中繼映射,因爲/32的主機路由

P2MP網絡類型

(config-if)#ip ospf network point-to-multipoint

不需要指Neighbor

不需要修改OSPF優先級

不需要手工映射

在幀中繼網絡環境中,使用P2MP是最理想的。

但是,在考試中,一般會考“hub節點爲P2MP,spoke節點爲P2P”。

更改網絡類型,然後修改Hello時間,使其一致。

此時,R2和R3之間ping不通,但是下游主機是可以ping通的。即:

R2#ping 3.3.3.3 不通

R2#ping 3.3.3.3 source 2.2.2.2

OSPF高級特性

注入缺省路由

1.

R1(config-router)#default-information originate

R1(config)#ip route 0.0.0.0 0.0.0.0 INTERFACE

2.

R1(config-router)#default-information originate always

不管有沒有0.0.0.0 0.0.0.0缺省路由,R1都會主動下放缺省路由

被動接口

OSPF的被動接口不能發送、接收任何報文。

(config-router)#passive-interfac loopback 0

http://blog.csdn.net/bingosummer/article/details/22926215(原地址)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章