思科OSPF技術詳解

來源:本站原創 網絡技術詳解 超過8,698 views圍觀 10條評論

 

OSPF的五個包:

1.Hello:9項內容,4個必要

2.DBD:數據庫描述數據包(主要描述始發路由器數據庫中的一些或者全部LSA信息),主要包括接口的MTU,主從位MS,數據庫描述序列號等);

3.LSR:鏈路狀態請求數據包(查看收到的LSA是否在自己的數據庫,或是更新的LSA,如果是將向鄰居發送請求);

4.LSU:鏈路狀態更新數據包(用于LSA的泛洪擴散和發送LSA去響應鏈路狀態請求數據包);

5.LSACK:鏈路狀態確認數據包(用來進行LSA可靠的泛洪擴散,即對可靠包的確認)。

Hello包作用:

1.發現鄰居;

2.建立鄰居關系;

3.維持鄰居關系;

4.選舉DR,BDR

5.確保雙向通信。

Hello包所包含的內容:

路由器id

Hello&Dead間隔 *

區域id *

鄰居

DR

BDR

優先級

驗證 *

末節區域 *

注:1.“*”部分全部匹配才能建立鄰居關系。

2.鄰居關系為FULL狀態;而鄰接關系是處于TWO-WAY狀態。

Hello時間間隔:

在點對點網絡與廣播網絡中為10秒;

在NBMA網絡與點對多點網絡中為30秒。

注:

保持時間為hello時間4倍

虛電路傳送的LSA為DNA,時間抑制,永不老化.

OSPF的組播地址:

DR將使用組播地址224.0.0.5泛洪擴散更新的數據包到DRothers

DRothers使用組播地址224.0.0.6發送更新數據包

組播的MAC地址分別為:0100.5E00.0005,0100.5E00.0006

OSPF的包頭格式:

| 版本    | 類型 | 長度  | 路由器ID | 區域ID  | 驗證和 | 驗證類型  |驗證 | 數據 |
| 1 byte |   1   | 2 | 4 | 4 | 2 | 2 | 8 | variance |

OSPF支持的驗證類型:

OSPF支持明文和md5認證,用Sniffer抓包看到明文驗證的代碼是“1”,md5驗證的代碼是“2”。

OSPF支持的網絡類型:

1.廣播

2.非廣播

3.點對點(若MTU不匹配 將停留在EX-START狀態)

4.點對多點

5.虛電路(虛電路的網絡類型是點對點)

虛鏈路必須配置在ABR上,

虛鏈路的配置使用的命令是area transit-area-id virtual-link router-id

虛鏈路的Metric等同于所經過的全部鏈路開銷之和

DR /BDR選舉:

1.優先級(0~255; 0代表不參加選舉;默認為1);

2.比較Router-id。

次者為BDR。

在Point-to-Point, Point-to-Multipoint(廣播與非廣播)這三種網絡類型不選取DR與BDR; Broadcast, NBMA選取DR與BDR。

先啟動OSPF進程的路由器會等待一段時間,這個時間內你沒有啟動其它路由的OSPF進程的話,第一臺路由就認為自己是DR,之后再加進來的也不能在選舉了,這個等待時間叫做Wait Timer計時器,CISCO規定的Wait Timer是40秒。這個時間內你啟動的路由是參與選舉的,所以真實工作環境中,40秒你大概只啟動了兩臺,DR會再前兩臺啟動的路由中產生,工作一段時間以后,活的最久的路由最有可能成為DR

OSPF over FRAME-RELAY 的配置:

(1) NBMA : 在HUB上指定鄰居;SPOKE上設置優先級為0。

(2) P-TO-P: 接口下配置命令 ip ospf network point-to-point。

(3) P-TO-MULT P:接口下配置命令 ip ospf network point-to-multipoint。

按需電路配置:

接口下配置命令 ip ospf demand-cricuit。

孤立區域問題解決:

1.虛電路 (虛電路穿過的區域一定是標準區域,標準區域一定是全路由的)

2.隧道

3.多進程重分發

注:如果中間間隔區域為stub區域,則只能用隧道解決.

OSPF分區域的原因:

1.LSA數據過大,造成帶寬負載過大。

2.計算全網拓撲,對cup要求過高。

3.數據庫過大,對內存要求過高。

OSPF的區域類型:

骨干: LSA:1 2 3 4 5

標準: LSA:1 2 3 4 5

stub: LSA1 2 3

nssa: LSA1 2 3 7 7(default)

AREA 1 NSSA DEFAULT INFORMATION-ORIGINATE

(ABR上產生默認路由LSA 7)

total-stub: 1 2一條默認3

total-nssa: 1 2 7一條默認3

LSA的類型:

類型1: 路由器鏈路信息

內容包括:路由器鏈路Router-id; 接口地址; 接口網絡; 接口花費

可使用show ospf database router命令查看。

類型2: 網絡鏈路信息

由DR通告,如果是點對點的網絡類型,沒有LSA2

類型3、4:匯總鏈路(都是ABR通告)

3號通告ospf區域間信息

4號通告asbr的router-id信息(通告nssa區域的abr)

類型5: 通告外部路由

類型7: nssa區域外部路由

類型11: 用于打標簽

類型代碼

類型名稱

描述

1

路由器LSA

每臺路由器都會產生,在區域內泛洪

2

網絡LSA

DR產生,在區域內泛洪

3

網絡匯總LSA

ABR始發,在整個OSPF域中泛洪

4

ASBR匯總LSA

ABR始發,在整個OSPF域中泛洪

5

AS外部LSA

ASBR始發,在整個OSPF域中泛洪

6

組成員LSA

標識OSPF組播中的組成員,不做討論

7

NSSA外部LSA

ASBR始發,

8

外部屬性LSA

沒有實現

9

Opaque LSA(本地鏈路范圍)

用于MPLS流量工程,不做討論

10

Opaque LSA(本地區域范圍)

11

Opaque LSA(AS范圍)

OSPF鄰居建立過程:

A————————-B

down

init B收到A 發來hello進入init狀態

two way hello 4個“*”匹配,選舉DR BDR ;A在hello中發現自己的Router-id;

exstart 交換DBD;確立主從關系(多路訪問Router-id高為主,低為從; 串行接口下接口地址大的為主)

exchange 交換數據DBD (主的先發)

loading 交換完整數據包LSR LSU

full

注:

每個LSA由序列號確認為最新的更新。

當路由器收到LSA之后的處理過程:

(1)如果數據庫有這樣的,再查看序列號,如果序列號相同,忽略這條LSA;如果序列號偏大,將其轉到數據庫,并進行SPF,更新路由表;如果序列號偏小,將一個包含自己的LSA新信息發送給發送方。

(2)如果數據可沒有這樣的,將其加到數據庫表,并發一個ACK返回,并運行SPF,更新路由表。‘

OSPFMetric值:

Cost=10的8次方/帶寬,簡便記做100Mb/帶寬值。Metric值是由cost值逐跳累加的。

環回口的路由,掩碼為/32,既我們所說的“主機路由”。在實際應用中,環回口以32位的居多,用作ospf的管理接口。但是如果你想讓環回口模擬一個網段,我們可以通過以下配置來消除。

R1(config)#int loopback 0

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

環回口只能配置成point-to-point這種類型,不可以配置成其它的類型。

其他:

1.當一個路由器既是ABR又是ASBR時為了不讓巨量外部路由分發進nssa區域使用命令:area 1 nssa no-redistribution default-information originate

2.配置命令show ip ospf database router用來查詢拓撲

3.一個路由器在理論上支持65535個OSPF進程,在實際環境中一個路由器可支持的OSPF

進程數量與其可用物理接口數量相等。(這個我對老師說的有疑問,如果我啟用了很多環回口,每個環回口一個區域不可以嗎?)

OSPF匯總

在OSPF骨干區域當中,一個區域的所有地址都會被通告進來。但是如果某個子網忽好忽壞不穩定,那么在它每次改變狀態的時候,都會引起LSA在整個網絡中泛洪。為了解決這個問題,我們可以對網絡地址進行匯總。

Cisco路由器的匯總有兩種類型:區域匯總和外部路由匯總。區域匯總就是區域之間的地址匯總,一般配置在ABR上;外部路由匯總就是一組外部路由通過重發布進入OSPF中,將這些外部路由進行匯總。一般配置在ASBR上。

區域匯總:

area area-id range ip-address mask

外部路由匯總:

summary-address ip-address mask

我設計的兩個試驗,把幾個知識點串起來

試驗一

用一個試驗總結一下ospf over 楨中繼的時候,OSPF幾種網絡類型的差別。

clip_image002

封裝好FR,DEBUG看到的幾種情況

情況一:兩邊只起了OSPF進程,其它全部默認

這種情況下鄰居需要手動配置!

R2(config)#router ospf 10

R2(config-router)#neighbor 12.1.1.3

選舉了DR,BDR

hello的間隔是30s

OSPF的數據包是單播傳送的。

情況二:兩邊的網絡類型改為Broadcast(命令接口下ip ospf network broadcast

這種網絡類型下是不需要手動配置鄰居關系

有DR與BDR的選舉。

Hello時間間隔為10s。

使用224.0.0.5這個組播地址傳送數據包。

情況三:網絡類型改為Point-to-Point(命令接口下ip ospf net point-to-point

不需要手動指定鄰居

沒有DR/BDR的選舉

Hello時間間隔為10s

使用224.0.0.5這個組播地址傳送數據。

情況四:Point-to-Multipoint(命令接口下ip ospf network point-to-multipoint

不需要手動指定鄰居

沒有DR和BDR的選舉

Hello時間間隔為30s

以224.0.0.5這個組播地址發送數據

情況五:非廣播的Point-to-Multipoint

(命令接口下ip ospf network point-to-multipoint non-broadcast)

鄰居需要手動指定,但是鄰居只要在一邊指定即可。

沒有DR和BDR的選取

Hello時間間隔為30s

使用單播傳送OSPF數據

列出一張表,方便看

網絡類型

鄰居自動發現

有無DR選舉

Hello間隔

傳輸方式

默認

30s

單播

Broadcast

10s

組播

Point-to-Point

10s

組播

Point-to-Multipoint

30s

組播

Point-to-Multipoint(非廣播)

否,單邊指即可

30s

單播

試驗二

OSPF的認證總結:

clip_image004

OSPF的認證有2種類型(不驗證也算的話是3種),使用DEBUG可以看到type0表示無認證,type1表示明文認證,type2表示MD5認證。明文認證發送密碼進行認證,而MD5認證發送的是報文摘要。

OSPF的認證可以在鏈路上進行,也可以在整個區域內進行認證。另外虛鏈路同樣也可以進行認證。

同樣也是分情況來討論。

情況一:R1和R2明文驗證

R1(config)#int s1/0

R1(config-if)#ip ospf authentication(啟用認證)

R1(config-if)#ip ospf authentication-key cisco(配置密碼)

不配置R2的話

通過debug工具我們可以看到如下信息:

*Aug 15 22:51:54.275: OSPF: Rcv pkt from 10.1.1.2, Serial1/0 : Mismatch Authentication type. Input packet specified type 0, we use type 1

這里的type0是指對方沒有啟用認證,type1是明文認證。

在R2上配置認證,使得鄰居關系恢復。

R2(config)#int s1/0

R2(config-if)#ip ospf authentication

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

*Aug 15 22:54:55.815: %OSPF-5-ADJCHG: Process 10, Nbr 1.1.1.1 on Serial1/0 from LOADING to FULL, Loading Done

情況二:在R2和R3的串行鏈路上進行MD5認證的:

R2(config)#int s1/1

R2(config-if)#ip ospf authentication message-digest(定義認證類型為MD5

R2(config-if)#ip ospf message-digest-key 1 md5 cisco(定義key和密碼)

R3(config)#int s1/0

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

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

情況三:增加R2和R3上串行鏈路的MD5認證的密碼:

在R2原有的配置上加上下面這條命令:

R2(config-if)#ip ospf message-digest-key 2 md5 openlab

R2#sho ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface

3.3.3.3 0 FULL/ – – 11.1.1.2 OSPF_VL0

1.1.1.1 1 FULL/BDR 00:00:34 21.1.1.1 FastEthernet0/0

1.1.1.1 0 FULL/ – 00:00:37 10.1.1.1 Serial1/0

3.3.3.3 0 FULL/ – 00:00:31 11.1.1.2 Serial1/1

鄰居關系沒有丟失。

增加新的密碼鑰匙,然后在將原來的密碼刪除,候鄰居關系不受影響。

情況四:在Area0上進行區域認證(以前沒做過吧)

R1(config)#router ospf 10

R1(config-router)#area 0 authentication

還沒有寫下一步,就是剛啟用,還沒設置密碼,鄰居就down掉了

同樣,R2上啟用一下,鄰居就恢復

或者都設置相同的密碼也可以。

情況五:Area0上進行區域認證以后。。。

R2#clear ip ospf pro清進程,A2區域的學不到鄰居了。R3是通過虛鏈路連接到骨干區域的。因為virtual-link屬于Area0,因此在R2配置完成Area0區域認證后,R3也需要相應的配置。

R3(config)#router ospf 10

R3(config-router)#area 0 authentication

這樣就可以了

情況六:單純的虛鏈路的認證(這個以前也沒做過吧)

明文認證,MD5認證。配置命令如下:

明文:

R2(config-router)#area 1 virtual-link 3.3.3.3 authentication-key cisco

R3(config-router)#area 1 virtual-link 2.2.2.2 authentication-key cisco

MD5:

R2(config-router)#area 1 virtual-link 3.3.3.3 authentication message-digest

R2(config-router)#area 1 virtual-link 3.3.3.3 message-digest-key 1 md5 cisco

R3(config-router)#area 1 virtual-link 2.2.2.2 authentication message-digest

R3(config-router)#area 1 virtual-link 2.2.2.2 message-digest-key 1 md5 cisco

另外通過實驗知道虛鏈路在建立起來后是DNA LSA(不老化LSA),所以如果沒有重啟OSPF進程的話,即使一端配置了認證,虛鏈路也是不會斷開的。

后面是sniffer抓得包

Hello包

clip_image006

Lsu包

clip_image008

clip_image010

LSACK包

clip_image012

上面是一般情況,下面是明文驗證的幾個包

Hello

clip_image014

DBD

clip_image016

LSR

clip_image018

LSU

clip_image020

LSACK

clip_image022

下面是MD5加密認證得包

Hello

clip_image024

DBD

clip_image026

LSR

clip_image028

LSU

clip_image030

clip_image032

LSACK

clip_image034

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文標題:思科OSPF技術詳解
本文鏈接:http://www.qdxgqk.live/?p=3041轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
下篇文章:
?
?
萌宠夺宝游戏