一. 基本知識:
OSPF(Open Shortest Path Fist),開放式最短路徑優先,傳信機制,目前所使用的為OSPFv2版本,IPV6使用OSPFv3版本,協議優先級為10/150
OSPF依靠IP進行承載,協議號位89。OSPF作為鏈路狀態的協議(Link-state Routing Protocol),具有收斂快、路由無環、擴展性好等優點,被快速接受並廣泛使用。
鏈路狀態算法路由協議互相通告的是鏈路狀態信息,每台路由器都將自己的鏈路狀態信息(包含接口的IP地址和子網掩碼、網絡類型、該鏈路的開銷值等)發送給其它路由器,,並在網絡中泛洪,當這台路由器收集到網絡內所有的鏈路狀態信息后,就能應有整個網絡的拓撲情況,然后通過運行SPF(Shortest Path First)算法,得出所有網段的最短路徑。
1. 特點:
① 支持無類域間路由CIDR
② 支持報文的認證
③ 無路由自環
④ 路由變化收斂速度快,觸發更新
⑤ 使用組播首發協議數據(DR-other:224.0.0.5/DR:224.0.0.6)
⑥ 支持多條等價路由
⑦ 支持區域划分
(1)支持無類域間路由CIDR:
OSPF路由匯總可以減少LSA的條目,當明細條目消失時,不會形成路由動盪,當所有的明細條目消失后,匯總路由也會消失。與RIP不同,OSPF不支持自動路由聚合,僅支持手動路由聚合。OSPF的路由聚合有兩種方式:
① 區域間路由聚合
② 外部路由聚合
① 區域間路由聚合:
在區域邊界路由器ABR上進行路由聚合:
[Huawei]ospf
[Huawei-ospf-1]area 1
[Huawei-ospf-1-area-0.0.0.1]abr-summary 1.1.1.0 255.255.255.0-將區域1
的聚合路由發布到其他區域
not-advertise---不通告,即匯總和明細都沒有
cost------------修改匯總通告的cost值,默認聚合路由的開銷值為0
advertise-------默認為通告
注1:在做區域間路由聚合時,一定要在產生明細路由的區域ABR上做匯總
注2:當明細路由全部消失后,匯總路由也會消失
② 外部路由聚合:
[Huawei]ospf
[Huawei-ospf-1]asbr-summary 1.1.1.0 255.255.255.0----將外部路由聚合
注:外部路由匯總只能在ASBR或NSSA區域7轉5的ABR上做路由匯總時,默認的花費為
2
(2)報文認證:
OSPF支持鄰居間認證和鏈路間認證兩種方式,認證可以基於明文和md5模式。
① 鏈路認證:
[Huawei-GigabitEthernet0/0/1]ospf authentication-mode simple Huawei
② 區域認證:
[Huawei-ospf-1-area-0.0.0.0]authentication-mode simple Huawei
注:當同時存在鏈路認證和區域認證時,鏈路認證優先
③ V-Link認證:
V-Link屬於區域0,所以如果配置了V-Link,並且區域0啟用了認證,此時由於V-Link端沒有配置認證,此時會造成V-Link down的現象,V-Link認證屬於特殊的接口認證
[Huawei-ospf-1-area-0.0.0.1]vlink-peer 1.1.1.1 simple huawei
注:當同時存在V-Link認證和區域認證時,V-Link優先
備注:
V-link配置方法:
- 在R3的area0上配置區域認證
- 在兩端的V-Link上配置V-Link認證
④ MD5認證原理:
當OSPF采用MD5認證的時候,OSPF區域認證的頭部報文里面會攜帶以下參數:
① 2Byte的保留位
② 1Byte的Key ID
③ 1Byte的認證數據長度
④ 4Byte的加密序列號
報文的最后攜帶128bit的哈希值
並不攜帶密碼,摘要信息進行驗證,信息摘要附加在OSPF包的后面,不考慮為OSPF包的一部分。認證長度描述了附加在OSPF包后面的信息摘要的長度(128bit==16Byte)
a) 摘要生成過程:
OSPF的MD5摘要是OSPF包(OSPF Header+OSPF payload有效載荷)和Key的計算結果,生成128bit的哈希值,並附加在OSPF報文的后面。
注:密碼只是起到一個哈希改變的作用,並不是直接用密碼+ID進行哈希,而是使用OSPF報文+Key ID生成哈希,所有的協議都基於此過程進行哈希
b) Key id作用:
- 結合OSPF報文進行哈希的生成,每次增加數值不確定
- 進行平滑過渡,OSPF MD5驗證可以在不中斷鄰居關系的前提下更改密鑰,所以可以在OSPF接口上配置多份密鑰,每個密鑰有一個Key ID(1~255)關聯,驗證時同時傳遞多份報文,分別使用不同的Key,接收測根據Key ID在已有的密鑰列表中找到對應的Key即可,只有一個Key存在即可,不用所有的密碼都存在
c) Data Length:
哈希長度
d) Data:
哈希值,為128bit
e) Sequence Number:
序列號,默認每次發送數據包,序列號都會加1,如果對端收到重復的序列號不會接受,用於防止“報文重放攻擊”(anti-replay)。重放攻擊是攻擊者先從鏈路上捕獲包含認證信息的OSPF信息,在適時重新放到鏈路上發送,以達到干擾OSPF鄰居路由器間的通訊的目的。
加密序列號是個32位整數,與特定的一台鄰居路由器關聯,OSPF路由器會增加該值,當鄰居路由器收到該序列號之后,便記憶下來,隨后的OSPF消息中的加密序列號字段值低於上次記憶的值,鄰居路由器會丟棄該消息。目的是攻擊者捕獲了曾經的報文,使用該消息的SN到Link上,受攻擊路由器不收,所以每個消息中該值都在遞增。
針對加密序列號的攻擊是攻擊者偽造更大的加密序列號讓鄰居路由器記憶,合法的路由器送來的相對較小的序列號反而不被接受,導致鄰居關系Down,攻擊成功,所以加密序列號絕非提供完美的安全方案(但如果攻擊者吧加密序列號變大,相當於OSPF報文發生變化,這樣導致接收方驗證摘要值的時候不相等,所以OSPF驗證失敗)
如果序列號增加到最大值,至少需要100多年,可以不去考慮擔心
(3)默認路由發布:
OSPF引入靜態時不會引入默認路由,所以使用以下方式引入默認路由
① 配置默認路由,使用命令[Huawei-ospf-1]default-route-advertise重分布,如果沒有默認路由,命令不生效
② 使用命令[Huawei-ospf-1]default-route-advertise always強制下發默認路由
2. Area/AS:
(1)Area:
OSPF支持區域的划分,區域是從邏輯上將路由器划分為不同的組,每個組用區域號(Area ID)來標識,一個網段(鏈路)只能屬於一個區域,或者說每個運行OSPF的接口必須指明屬於哪一個區域。Area 0位骨干區域,所有的非特殊區域都必須連接到Area 0實現通信,在一個OSPF區域中有且只有一個骨干區域,區域的路由器稱為ABR。
Area的規划為一個AS中只能有一個Backbone區域(Area0),其余的區域都為Normal區域,所有的Normal區域只能與Backbone區域傳遞3類LSA,Normal區域與Normal區域之間不會傳遞3類LSA,用於防止環路。
3類LSA是ABR將區域內的路由表生成LSA傳遞給另外一個區域,所以區域間為距離矢量的行為,會造成環路,所有的Normal區域只能與Backbone區域傳遞3類LSA用於防止環路
① 如果沒有規定Normal區域之間不可以傳遞三類LSA,此時Area 1生成三類LSA傳遞給Area0
② Area0將三類LSA傳遞Area2,Area2將三類LSA傳遞給Area3,Area3會將三類LSA重新傳回給Area0,如果此時Area1中的網段消失了,Area1會刪除此三類LSA,此時Area0會選擇Area3傳遞的關於10.1.1.0/24的網段的LSA,形成環路
(2)AS:
Autonomous System,通常運行一個OSPF的體系為一個AS,AS包含ospf所有的區域,AS外部的路由稱之為OSPF外部路由,自制系統邊界路由器稱為ASBR。
(3)進程ID:
代表的僅僅是OSPF進程,只具有本地意義。
空間大小為16bit,默認0不可用
取值范圍為1-2^16為1-65535
注:ABR路由器上,所連接的兩個區域必須在同一個進程ID中,否則會造成鄰居可以建立但是無法傳遞路由的現象,使用import可以解決此現象
3. 區域路由器角色:
(1)BR:
Backbone Router,骨干區域路由器,至少有一個接口屬於骨干區域。
(2)IR:
Internal Router,內部路由器,純屬於普通區域中的路由器。
(3)ABR:
Area Border Router,區域邊界路由器,用於連接骨干區域和非骨干區域的路由器,但其中一個必須是骨干區域,和骨干區域可以是物理連接的(真ABR),也可以是邏輯連接的(假ABR)。
“真正的ABR”需要滿足兩個兩個條件:
① 能產生3類LSA通告給隔壁區域
② 接口發布到Area0並且和鄰居形成Full的鄰居關系(只有Loop口屬於Area0的路由器稱為“偽ABR”)
注:由於ABR連接着骨干區域0和Normal區域,所以ABR設備維護骨干區域的LSDB和Normal區域的LSDB
(4)ASBR:
AS Border Router自制系統邊界路由器,用於OSPF邊界連接外部的路由器並引入外部路由的設備為ASBR。
4. Router-ID:
一些動態路由協議要求使用Router-ID作為路由器的身份標識,為點分十進制。
Router-ID選舉規則:
① 如果配置路由協議的Router-ID,則將其作為協議Router-ID
② 如果在全局下配置了Router-ID,則將其作為協議Router-ID
③ 如果配置了loopback接口IP,則將loopback中地址最大的作為協議Router-ID
④ 如果配置接口IP地址,則從接口IP中地址最大的作為協議Router-ID(不考慮接口的Up/down狀態)
注1:在選舉Router-id之后,即使被標識Router-id的接口down掉或更改IP也不會造成Router-id的重新選舉
注2:Router-ID是用來標識路由器的。
5. Router身份:
廣播型網絡和NBMA網絡中,如果網絡中存在很多路由器,則需要建立很多鄰接關系,即當路由器很多時,需要建立和維護鄰接關系就很多,兩兩之間需要發送的報文也就特別多,這會造成很多很多內容重復的報文在網絡中傳遞,浪費了設備的帶寬資源。此時,便出現了DR/BDR/DR-other的定義。
(1)身份定義:
在OSPF中,主要包含三種路由角色:
① DR
② BDR
③ DR-other
① DR:
DR是針對同一網段中接口的一種標志,OSPF協議定義了指定路由器DR(Designated Router),即所有其他路由器都只將各自的鏈路狀態信息發送給DR,再由DR以組播的方式發送至所有路由器,減少了OSPF數據包的發送。
注1:DR偵聽地址為224.0.0.6,也偵聽224.0.0.5,所有發送到DR、BDR的LSA的目標地址都為 224.0.0.6。
② BDR:
在OSPF中,如果DR由於某種故障失效,此時網絡中必須重新選舉DR,並同步鏈路狀態信息,這需要較長的時間。為了能夠縮短這個過程,OSPF協議又定義了BDR(Backup Designated Router)的概念,作為DR路由器的備份,當DR路由器失效時,BDR成為DR,並在重新選舉新的BDR路由器。
注1:與DR相同,BDR默認偵聽地址為224.0.0.6,也偵聽224.0.0.5,所有發送到DR、BDR的LSA的目標地址都為224.0.0.6。
注2:默認DR工作正常時,BDR只會接收DD報文,請求缺少的LSA,但是不會去泛洪DD報文和LSA
③ DR-other:
沒有選舉為DR或BDR的路由器稱為DR-other。DR-other默認偵聽的地址為224.0.0.5,當DR或BDR發送信息給DR-other時,采用224.0.0.5作為目標地址。
6. DR/BDR:
(1)DR/BDR選舉規則:
在廣播型網絡和NBMA網絡中會進行DR/BDR的選舉,通過Hello包的交換進行選舉。
注1:DR在選舉完成后,默認為非搶占模式,即當網絡中出現了比DR更優的設備時,默認DR也不會被搶占,防止端口抖動出現的頻繁遷移,所以優先級高的不一定為DR,在有限時間內只有一台設備啟動,超出選舉時間后(40S)便認為自己是DR。
注2:在一個廣播型網絡中,當兩台路由器建立鄰居選舉出DR和BDR后,此時又有一台設備啟用OSPF,不會搶占,所以優先級高的路由不一定為DR,可以在全局下使用命令
<Huawei>reset ospf process重新加載OSPF進行重新選舉DR。
主要通過以下幾種方式選舉:
①優先級
②Router-id
① 優先級:
首先比較優先級,優先級數值越大越優先,默認為1(如果為0沒有選舉權),使用命令在接口上進行優先級的修改:
[R1]inter G0/0/1
[R1-G0/0/1]ospf dr-priority 100
② Router-ID:
當優先級一致時,使用Router-ID進行DR的選舉,默認Router-ID越大越優先。
(2)DR/BDR選舉算法:
在OSPF中,一個網段內的路由器在沒有選舉出DR之前,都會啟用一個Wait timer,時間大小和Dead timer時間一致,在Wait timer時間內,不會自動選舉DR和BDR,而是檢測鄰居發送過來的Hello報文中的Designated Router表項和Backup Designated Router表項中的標識參考當前網絡的DR和BDR。
如果在Wait timer時間超時后,依舊沒能得知當前網網絡中的DR和BDR,此時會使用DR算法進行選舉。
DR算法過程:
① 路由器會啟用DR算法生成三個結合:DR-other{}、BDR{}、DR{},選舉順序也是按照此順序進行選舉
② 由於當前沒有設備認為自己為DR或BDR,所以將當前接收到的Router-ID標識全部放入DR-other{}中
③ 從DR-other中選舉出最好的Router-ID放入BDR{}中
④ 從BDR{}中選舉出最好的Router-ID放入DR{}中
⑤ 缺少BDR,再從DR-other{}選舉出最好的Router-ID放入BDR{}中
Router-ID選舉案例:
(1)默認情況下:
- R6為DR
- R5為BDR
(2)當LSW1與LSW2端口down掉后:
1)左側網段:
- R5為DR
- R3為BDR
2)右側網段:
- R6為DR
- R4為BDR
(3)當兩端鏈路恢復后:
- R6為DR
- R4為BDR
(4)當R6down掉后:
- R4為DR
- R5為BDR
7. Neighbor/Adjacency:
① Neighbor鄰居狀態
② Adjacency鄰接狀態
(1)Neighbor:
鄰居狀態,默認雙方發送並接收到對端的hello報文后,為Neighbor狀態,DR-other之間收斂之后處於鄰居狀態。
通常在雙方互相發送Hello包之后並且得到了對端的確認之后進入此狀態,需要:
1)數據包頭部信息無誤:
- 版本號一致
- Router-ID不相同
- Area-ID一致
- 認證類型和密碼一致
2)Hello包中內容無誤:
- 掩碼一致(P2P網絡可以不一致)
- Hello時間一致
(2)Adjacency:
鄰接狀態,DR和DR-other收斂之后的最終狀態。
網絡類型中的鄰接關系:
網絡類型 |
是否和鄰居建立鄰接關系 |
P2P |
總是和鄰居建立鄰接關系 |
P2MP |
總是和鄰居建立鄰接關系 |
Virtual Link |
總是和鄰居建立鄰接關系 |
Broadcast NBMA |
DR總是和其他所有路由器包括BDR建立鄰接關系 BDR總是和其他所有路由器包括DR建立鄰接關系 處於DR-other狀態的路由器只與DR和BDr建立鄰接關系 DR-other之間為鄰居狀態 |
8. 被動接口:
OSPF被動接口也稱為抑制接口,成為被動接口后,將不會接收和發送OSPF報文。
[Huawei-ospf-1]silent-interface g0/0/1-----ospf進程下配置g0/0/1為被動口
二. OSPF報文類型:
OSPF報文特點:
① 運行在IP協議之上,協議號為89
② 使用組播進行更新,DR/BDR偵聽組播地址為224.0.0.6和224.0.0.5,所有路由器偵聽組播地址為224.0.0.5
五種報文類型:
① hello報文
② DD報文
③ LSR報文
④ LSU報文
⑤ LSACK報文
不同網絡類型報文目標地址:
網絡類型/報文類型 |
Hello |
DD |
LSR |
LSU |
LSACK |
Broadcast |
組播地址 |
單播地址 |
單播地址 |
組播地址 |
組播地址 |
NBMA |
單播地址 |
單播地址 |
單播地址 |
單播地址 |
單播地址 |
P2P |
組播地址 |
組播地址 |
組播地址 |
組播地址 |
組播地址 |
P2MP |
組播地址 |
單播地址 |
單播地址 |
單播地址 |
單播地址 |
OSPF報文頭部:
一個OSPF的頭部為24Byte
① Version:版本
② Message Type:OSPF報文類型
③ Packet Length:報文長度
④ Router-ID:發送者路由ID
⑤ Area-ID:區域ID
⑥ Checksum:校驗和
⑦ Authentication Type:認證類型
⑧ Auth Data:認證數據
Options選項位:
所有的OSPF報文和所有的LSA都包含Options選項
① DN:Down位,用來在MPLS中預防環路
② O:表示支持Opaque LSA
③ DC:支持按需鏈路
④ EA:支持外部路由屬性
⑤ N/P:
- N:表示為NSSA區域
- P:在NSSA區域中表示LSA是否能7轉5類LSA,置位表示可以裝換
⑥ MC:表示支持MOSPF
⑦ E:表示支持外部路由
⑧ MT:表示支持多拓撲OSPF
1. Hello報文:
協議號為1,用於建立鄰居關系、維持鄰居關系,在廣播鏈路中路由器根據hello報文中的優先級和Router ID選舉DR和BDR,目標地址為224.0.0.5。(不同的網絡類型,Hello發送時間不一致),當接口啟用OSPF后,會一直發送Hello報文用於鄰居的建立
注:除P2P網絡,其余的網絡類型中兩端的鏈路子網掩碼要一致。
① Network Mask:網絡掩碼
② Hello Interval:Hello時間間隔
③ Options:選項
④ Router Priority:本Router DR優先級
④ Router Dead Interval:Dead時間
⑤ Designated Router:DR的接口IP地址
⑥ Backup Designated Router:BDR的接口IP地址
⑦ Neighbor:已建立的鄰居(Router-ID)
2. DD報文:
協議號為2,Database Description,數據庫檢索報文,路由器將LSDB中LSA簡化成一張只有網段的目錄(只存放LSA的頭部信息),發送給對端,用於對端根據此檢索信息查看自己缺少的LSA。
(1)DD報文格式:
- Header Message
- DD Message:
① MTU:接口MTU值(華為設備默認不檢測)
② Options:選項
③ Flags:置位符
- R:
- I:置位表示為Fist DD報文,用於主從關系的選舉
- M:置位表示后面還有DD報文
- MS:置位表示本路由器為Master
④ Sequence:序列號
⑤ LSA Header:LSA頭部信息
(2) Options選項位:
Options選項中的包含8位
① DN:Down位,用來在MPLS中預防環路
② O:表示支持Opaque LSA
③ DC:支持按需鏈路
④ EA:支持外部路由屬性
⑤ N/P:
- N:表示為NSSA區域
- P:在NSSA區域中表示LSA是否能7轉5類LSA,置位表示可以裝換
⑥ MC:表示支持MOSPF
⑦ E:表示支持外部路由
⑧ MT:表示支持多拓撲OSPF
3. LSR報文:
協議號為3,Link State Request請求報文,只存放LSA的標識三要素,用於向對端請求自己缺少的LSA報文。
4. LSU報文:
協議號為4,Link State Update報文,當收到對端發送LSA Request報文請求后,本端使用LSA Update報文回復對端缺少的LSA,LSU報文中包含了對端所缺少的LSA。
5. LSACK報文:
協議號為5,Link State ACKnowledgment,只存放LSA的頭部信息,當收到對端發送過來的LSU報文后,回復LSACK確認回復報文。
三. OSPF收斂過程:
OSPF收斂需要經過八種狀態機制:
① down
② Attempt
③ Init
④ Two-way
⑤ Exstart
⑥ Exchange
⑦ Loading
⑧ Full
1. Down:
關閉狀態,默認運行ospf的路由端口剛up的一瞬間處於此狀態。
注:在NBMA網絡中,由於120S沒有收到Hello報文會由Attempt狀態進入down狀態,此狀態下120S發送一次Hello報文。
2. Attempt:
試圖等待狀態,Attempt狀態只在NBMA網絡中出現,由於NBMA使用單播建立鄰居關系,當手工指定對端接口后,會進入此狀態,默認會每隔30S發送一次Hello包,當120S內沒有收到Hello報文后,會跳轉到Down狀態,如果在120S內收到Hello報文跳轉到Init狀態
3. Init:
初始狀態,當一台路由器收到對端發送過來的Hello報文,便進入此狀態。
注:單項鏈路故障造成一直收不到對端的Hello報文,會造成本端一直停留在Init狀態
4. Two-way:
鄰居狀態,路由器收到對方的Hello包,本端路由器也會發送Hello報文,並將鄰居的Router-ID放入Hello報文中,發送給對端鄰居,鄰居收到Hello報文后發現報文中存在自己的Router-ID,進入Two-way狀態,並且在此發送Hello報文,報文中包含對端的Router-ID,對端收到Hello報文后,也進入Two-Way狀態,並選舉出DR、BDR和DR-other。
路由器不會自主選擇DR、BDR,而是偵聽鏈路上的Hello數據包,如果數據包中的DR、BDR字段一直為0,則在40S過后,會根據收到的Hello數據包中的DR優先級選舉出DR和BDR
注1:Hello包交換建立Two-way狀態為三次握手
注2:DR-other之間永遠是Two-way狀態
5. ExStart:
ExStart狀態用於檢測MTU是否一致,並通過發送Fist DD報文選舉並確立主從關系,Router-ID高(忽略優先級)的路由器成為主路由器(Master),低的為Slave
注:如果MTU值不匹配,將停留在此階段,華為設備默認不檢測MTU
(1)主從選舉原因:
OSPF承載在IP層,為了保障可靠的傳輸,在交換DD報文前,首先選舉出Master,在進
行DBD報文交互時,Master首先發送DD報文給Slave,Master首先確定一個序列號,並發送此序號的DD報文,如果對端收到DD報文,會回復和Sequence number一致的DD報文,如果沒有回復,表示當前發送的DD報文沒有被對端收到,此時會重新發送。
注:選舉主從路由,只有DR和DR-other進行主從選舉(因為只有他們是Full狀態,才會
進行主從選舉,鄰居關系(DR-other和DR-other)只停留在Two-way狀態。
(2)主從選舉過程:
① 兩端都發送Fist DD報文,無任何頭部描述信息,只有序列號和I、M、MS三個置位符:
- I:置位表示第一個DD報文
- M:置位表示后面還有DD報文
- MS:置位表示當前本路由器為Master
② 當兩端互相收到對端的DD報文后,查看Router ID,如果路由器發現自己的Router ID小於對端的Router ID,便認為對端為Mater,自己進入Exchange狀態,並將LSA的序列號改為對端發送過來的序列號進行同步,並發送帶有LSA頭部的DD報文給對端
③ 對端收到新的DD報文后,發現序列號和本端的序列號一致,於是進入Exchange狀態,並選舉自己為Mater
注1:當兩端設備MTU不一致,將一直停留在Exstart狀態。華為默認不檢查MTU值,如果發送的MTU數值超出對端的最大MTU並且不分片,送往對端將會被丟包
注2:如果一端認為自己為Slave,立刻發送帶有LSA header的DD報文,Seq Number為Mast起始的Seq Number,在每次交互中,只有Mast會主動增加Seq Number
注3:如果兩端的DD個數不一樣,如果一端發送完畢,另一端繼續發送,此時一端會使用空DD報文進行回復確認
(3)MTU檢測不通過問題:
如果華為設備開啟了MTU檢測,並且兩端MTU不一致,會有以下情況
① 只有一端開啟MTU檢測:
如果兩端MTU不一致,只有單邊開啟MTU檢測是不會影響鄰居建立的,兩端都會到Full狀態
① AR1開啟MTU檢測,AR2沒有開啟MTU檢測
② AR1發送DD報文,MTU值為1400,AR2由於沒有開啟MTU檢測,所以不會查看該值,直接通過
③ AR2發送DD報文,由於設備不檢測MTU值,所以DD報文中的MTU值為0,AR1收到此DD報文,檢測MTU值,發現值為0,小於自身接口的MTU值,通過檢測,進入下一狀態
② 如果兩端開啟MTU:
a) Master端的MTU小於Slave端的MTU:
- AR2(Master)發送DD報文,MTU值為1500,AR1(Slave)收到此報文,檢測MTU,MTU值大於當前接口的MTU,檢測不通過,停留在ExStart狀態
- AR1(Slave)發送DD報文,MTU值為1400,AR2收到(Master)收到此報文,檢測MTU,MTU值小於當前接口的MTU,檢測通過,但是收不到Slave發送過來的確認報文,所以卡在ExStart狀態
b) Master端的MTU大於Slave端的MTU:
- AR2(Master)發送DD報文,MTU值為1400,AR1(Slave)收到此報文,檢測MTU,MTU值小於當前接口的MTU,檢測通過,進入ExChange狀態
- AR1(Slave)發送DD報文,MTU值為1500,AR2收到(Master)收到此報文,檢測MTU,MTU值大於當前接口的MTU,檢測不通過,卡在ExStart狀態
6. Exchange:
主從關系確立后,進入Exchange狀態,開始正式交換交換DD報文內容,當將所有的DD報文發送完畢后,發送一個空的DD報文,將M位置為0,表明DD報文已發送完畢,並進入Loading狀態
7. Loading:
發送LSR,通過更新LSU,LSACK報文,交換相互缺少的LSA報文,完成LSDB的同步。
注:卡在Loading狀態的原因huawei設備不檢測MTU,有可能發送LSU報文超出接收路由器接口的MTU,所以設備會丟掉此LSU報文,由於一直得不到LSACK回復,卡在Loading狀態,如果在規定時間內沒有收到相應的確認報文,會在重傳30次,默認重傳間隔為5S,在30次之后沒有收到確認,斷開鄰居關系
- 使用命令[Huawei-GigabitEthernet0/0/0]ospf timer retransmit 10修改重傳間隔。
- 使用命令[Huawei-ospf-1]retransmission-limit 10修改重傳次數
8. FULL:
同步完成后,建立鄰接關系。並且每隔一段時間周期的發送Hello報文,每隔30min發送一次完整的LSDB中的LSA報文。
9. 泛洪新LSA:
① 在廣播網絡中,當網絡中出現新的路由器,泛洪新的LSA時,此時路由器只需要發送目標地址為224.0.0.6的LSU報文給DR,由DR重新泛洪目標地址224.0.0.5的LSU報文給所有的路由器
② 在點到點鏈路上,當網絡中出現新的路由器,泛洪新的LSA時,此時路由器會直接發送目標地址為224.0.0.5的LSU給對端設備
四. LSA:
Link State Advertisement,鏈路狀態通告信息,OSPF是一種基於鏈路狀態的動態路由協議,每台OSPF路由器都會生成相關的鏈路狀態廣播LSA,並將這些LSA通過出去,路由器收到LSA后,會將他們存放在鏈路狀態數據庫LSDB中。
LSA主要分為:
① Router LSA路由器LSA
② Network LSA 網絡LSA
③ Network summary LSA 網絡匯總LSA
④ ASBR summary LSA ASBR匯總LSA
⑤ AS external LSA 自制系統外部LSA
⑥ Group membership LSA 組成員LSA
⑦ NSSA External LSA NSSA外部LSA
LSA的標識:
OSPF使用LSA頭部中的LS type、Link Start ID、Advertising Router標識一條LSA
LSA的選擇:
當收到了兩條相同的LSA,OSPF會根據以下信息判斷一條LSA的新舊程度,選取最新的LSA
① 序列號大的優先
② 校驗和大的優先
③ 比較老化時間:
- 如果一條LSA具有最大的老化時間,即3600S,那么就選擇該LSA實例
- 如果LSA老化時間差大於15分鍾,則老化時間小的優先
- 如果LSA老化時間之差在15分鍾以內,則認為這兩個LSA一樣
注:3600S:
① 區域內,如果出現鏈路故障時,路由器使用新的lSA重新通告鄰居路由器,鄰居路由器重新SPF計算最短路徑樹,此時新的lSA沒有包含故障的鏈路,所以達到了重新收斂
② 區域間路由,如果鏈路出現故障時,發送一份和原來序列號一樣的三類LSA通告對端鄰居,並將Age Timer設為3600S,收到此LSA的路由器將刪除對應的路由
③ 外部路由,ASBR檢測到外部路由消失,發送一份和原來序列號一樣的LSA通告全網,並將Age Timer設為3600S,收到此LSA的路由器將刪除對應的外部路由
傳遞與泛洪:
① 傳遞:傳遞是指LSA在傳輸過程中標識身份的三要素是否發生改變
② 泛洪:泛洪是指該LSA所描述的內容是否能夠被接收到
各類LSA允許泛洪的區域:
LSA報文頭部:
① LS age:LSA老化時間,遞增數值,每經過一台路由器加2S,在數據庫中按正常時間增加,最大老化時間為3600S
② Options:選項
a) DN:Down位,用來在MPLS中預防環路
b) O:表示支持Opaque LSA
c) DC:支持按需鏈路
d) EA:支持外部路由屬性
e) N/P:
- N:表示為NSSA區域
- P:在NSSA區域中表示LSA是否能7轉5類LSA,置位表示可以裝換
f) MC:表示支持MOSPF
g) E:表示支持外部路由
h) MT:表示支持多拓撲OSPF
③ Ls type:LSA類型
④ Link State ID:鏈路狀態ID值,不同類型LSA含義不同
LSA |
OSPPFv2 LS ID |
Router LSA |
Router ID |
Network LSA |
DR所在IPv4網段IP |
Type 4 LSA |
ASBR的Router ID |
Type3、Type5、Type7 LSA |
IPv4網段 |
⑤ Advertising Router:通告該LSA的路由器的RID
⑥ LS sequence number:序列號,大小為32bit
⑦ LS checksum:校驗和
⑧ Length:長度
⑨ Flags:
a) V:表示是否存在虛鏈路
b) E:表示是否為ASBR
c) B:表示是否為ABR
LS sequence number詳解:
序列號,大小為32bit,線性增長,序列號使用“原碼”表示,第32位表示“正負”號,
1表示負號,0表示正號,最小的數位0x80000000,最大的數為0x7FFFFFFF。
- 1表示負號,所以最小的數為1000 (28個0)=80000000
- 0表示正號,所以最大的數為0111 (28個1)=7FFFFFFF
I----------------------------------------------------------I I----------------------------------------------------------I
80000000-------------------------------------------à0--------------------------------------------à7FFFFFFF +1
重新回到80000000 I
ß----------------------------------------------------------------------------------------------------------------------------I
Options選項位:
所有的OSPF報文和所有的LSA都包含Options選項
① DN:Down位,用來在MPLS中預防環路
② O:表示支持Opaque LSA
③ DC:支持按需鏈路
④ EA:支持外部路由屬性
⑤ N/P:
- N:表示為NSSA區域
- P:在NSSA區域中表示LSA是否能7轉5類LSA,置位表示可以裝換
⑥ MC:表示支持MOSPF
⑦ E:表示支持外部路由
⑧ MT:表示支持多拓撲OSPF
1. Router LSA:
Type-1 LSA,路由器LSA,每台路由器都會產生Router LSA,用來描述路由器本身的直連鏈路狀態和開銷值。
Router LSA只能在所屬區域內部傳遞,在所屬區域內泛洪
1)頭部信息:
① Ls id:自身的Router-ID
2)LSA信息:
① Flags:標識位:
- V:是否為V-Link
- E:是否是ASBR
- B:是否是ABR
② Link count: 鏈路信息數量(表明當前設備有幾條Link)
③ Link ID:鏈路IP地址信息
④ Data:Router id自身的接口地址
⑤ Link Type:拓撲類型
⑥ Metric:開銷值,每經過一個ABR,開銷值都會重新計算
注:每種拓撲類型對應的Link ID和Data都不相同:
Link Type |
實際物理網絡 |
Link ID |
Data |
Stub net |
環回口/串行/以太網絡(無鄰居)、Sub IP |
該Stub網段的IP網絡地址 |
該Stub網段的網絡掩碼 |
Transit |
以太鏈路、FR(有鄰居) |
DR的接口IP地址 |
自己的接口IP |
P2P |
串行鏈路 |
鄰居的RID |
自己的接口IP |
Virtual |
V-Link |
鄰居的RID |
自己的接口IP |
2. Network LSA:
Type-2 LSA,網絡LSA,它是由DR產生(不選舉DR的網絡環境不存在Network LSA),在廣播網絡中,Network LSA用來描述虛節點周邊的連接關系和網段信息
Network LSA只能在所屬區域內傳遞,在所屬區域內泛洪
1)頭部信息:
① Ls id:DR自身的接口IP地址
2)LSA信息:
① Net Mask:當前網絡的子網掩碼
② Attached Router:當前連接此區域的所有Roter-ID
注:P2P網絡不選舉DR,所以沒有network LSA,由於Router LSA中的P2P網絡沒有攜帶網絡掩碼信息,所以P2P網絡類型會在Router LSA中增加Stub net拓撲條目,用來表示本地接口的網絡信息和掩碼信息
3. Network summary LSA:
Type-3 LSA,網絡匯總LSA,完整的路由信息,沒有拓撲信息,它是由ABR產生,ABR路由器將所連區域的Router LSA和Network LSA轉換為Network summary LSA,用來描述區域間的路由信息,Network summary LSA只傳遞路由信息,並不傳遞拓撲信息。
ABR是查看路由表中的路由條目生成三類LSA,所以可以使用路由策略修改路由表得到過濾區域間路由的效果
一條路由條目為一個3類LSA,一條三類路由失效,生成此LSA的路由器重新生成一條關於此路由的新(和前一條LSA的Seq Number相同)的LSA,並將Age Timer置為3600S傳遞給鄰居,收到此毒化LSA的路由器刪除此條路由
Network Summary LSA每經過一個區域,LSA中的adv rtr會變為引入Network Summary
LSA的ABR的RID,Network summary LSA只在區域內傳遞,在AS內泛洪(特殊區域除外)
1)頭部信息:
① Ls id:目標網段
2)LSA信息:
① Net mask:掩碼
④ Metric:開銷值,三類LSA內域內傳遞開銷值不變,當到達下一個ABR時,重新計算Metric,在原基礎上加上兩端ABR之間的開銷值,傳遞給下一個Area中。
Network Summary Flooding原則:
① Network Summary LSA不會在兩個Normal區域之間傳遞
② 水平分割原則:
- 從一個區域流出的Network Summary LSA不會再流入此區域(Area0除外)
一個區域的1類2類優於3類,所以ABR接收到3類LSA的內容如果和區域內的1類和2類一樣,不會將他放入路由表,也不會將他傳回到區域內
- 從一個區域流入的Network Summary LSA不會在從此區域流出(Area0除外)
- ABR不會傳遞非Area0來的LSA3到其他的區域,並且不會生成路由表
- 如果沒有了Area0的鄰居,此ABR不能成為真正的ABR,而是一個普通區域的路由器,他便會接收三類LSA
① 在Area1區域內,AR2和AR4發送類型1的LSA,並將flag中的E置位,表明自己當前為ABR
② AR2發送三類LSA,Adv為自己的Router ID,經過區域0傳遞給AR4,針對三類1.1.1.1/32的路由,區域內會使用1類和2類進行傳遞,所以AR4不接受此三類LSA進入Area1,而是直接使用1類和2類表示1.1.1.1/32這條路由
③ 如果此時AR1和AR3中的鏈路斷掉,AR4不知道AR2為ABR,那么此時在經過Area0傳遞過來的由AR2生成的三類LSA會經過AR4傳遞到Area1中
④ AR6和AR8之間建立鏈路,同時屬於Area2,AR6發送1.1.1.1/24的三類LSA給AR8,由於是非骨干區域傳遞過來的三類LSA,AR8不會將他計算並放入路由表
⑤ 如果此時AR8去往骨干區域的鏈路斷掉時,此時AR8只能通過AR6去往骨干區域,他會將AR6傳遞過來的三類LSA放入路由表中
4. ASBR summary LSA:
Type-4 LSA,ASBR匯總LSA,它是由ASBR所在區域的ABR產生的,用來描述ASBR的路由,ASBR summary LSA可以泛洪到整個AS內部,但不能泛洪到所有的特殊區域。
當本區域的路由器收到AS External LSA時,查看Adv rtr時,可以根據一類和二類拓撲信息可以得到去往ASBR的實際地址,所以本區域中的ASBR Router ID依靠Router-LSA進行傳遞告知當前區域內的路由器ASBR的地址,但是區域間的路由不存在拓撲信息,所以不同區域的路由器並不知道去往不同區域ASBR的地址,所以此時需要使用ASBR summary LSA告知不同區域去往ASBR的地址。
ASBR summary LSA只在區域內傳遞,在區域間泛洪(特殊區域除外),每經過一個Area區域,Adv Router都會變成ABR
注:四類為五類工作,但產生五類不一定會產生四類,比如ASBR所在的區域中,有五類,
但是沒有四類
1)頭部信息:
① Ls id:ASBR的RID
2)LSA信息:
① Net mask:掩碼
② metric:發布者ABR到ASBR的花費
5. AS External LSA:
Type-5 LSA,AS外部LSA,它是由ASBR產生的,用來描述到AS外部網絡的路由。
一條五類路由失效,生成此LSA的路由器重新生成一條關於此路由的新的LSA(序列號和上一個Seq Number相同),並將Age Timer置為3600S傳遞給鄰居,收到此毒化LSA的路由器刪除此條路由
AS External LSA在AS內傳遞,在AS內泛洪(特殊區域除外),只有AS External LSA在傳遞過程中不會被ABR更改Adv Rtr,所以只有AS External LSA在區域間傳遞並泛洪
注:V-Link不會傳遞AS External LSA
1)頭部信息:
① Ls id:外部路由網段
2)LSA信息:
① Net mask:掩碼
② E type:路由類型
③ Forwarding Address:轉發地址
④ Tag:標簽
注:網絡穩定后,一台設備稱為ASBR並引入外部路由,此時此設備會發送一類LSA和五類LSA,使用Flags中的E置位表明自己為ASBR,五類為外部路由
(1)Metric詳解:
LSA類型5中的Metric值為域外到ASBR的開銷值,所以如果E type類型為E1時,路由器去往外部路由的總開銷為LSA5中的開銷值+路由器到ASBR的開銷,計算域內路由器到ASBR的開銷有兩種情況
- 當路由器和ASBR在同一個區域內:
a) FA地址為0,根據1類和2類計算到ASBR的開銷
b) FA地址不為0,根據1類和2類計算到FA地址的開銷
注:如果FA地址不為0,1類和2類中沒有到達FA地址的路由,此時這條五類路由不會放入路由表
- 當路由器和ASBR不在同一區域內:
a) FA地址為0,根據四類Metric計算到ASBR的開銷
b) FA地址不為0,根據三類LSA計算到FA地址的開銷
注:如果FA地址不為0,3類中沒有到達FA地址的路由,此時這條五類路由不會放入路由表
(2)五類LSA防環:
默認AS External LSA在全網傳遞,所以普通區域也會傳遞給普通區域,但是由於普通區域不
存在ABR,所以不會傳遞ASBR summary LSA,此時會存在只有AS External LSA而沒有ASBR
summary LSA的情況,所以路由器並不知道去往ASBR的地址,也不知道外部路由的開銷值,
所以不會將LSA中的路由放入路由表中
(3)E type:
E type用來表示引入路由條目的類型,主要分為兩個類型,為E1、E2,默認在引入外部路由時使用E2,E1的優先級別高於E2, E1路由和E2路由的區別在於他們計算前往目的地開銷的方式不一樣.。
① E1:
E1路由前往目的子網的開銷計算是域內開銷+域外開銷,也就是說經過的路徑的開銷的總和。
② E2:
E2路由前往目的子網的開銷則只計算域外開銷,也就是說出去ASBR之后的路徑的開銷總和,不考慮域內開銷.
注:引入外部路由時不定義引入cost,默認外部路由的cost全部為1
使用命令修改引入外部路由的類型:
[Huawei-ospf-1]import-route rip type 1
使用Router-Policy修改部分路由類別:
[Huawei]ip ip-prefix 1 permit 5.5.5.5 32
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply cost-type type-1
[Huawei]route-policy 1 permit node 10
[Huawei]ospf
[Huawei-ospf-1]import-route rip route-policy 1
(4)Forwarding address:
Forward Address,為OSPF的ASBR去往外部路由的下一跳地址IP
注:必須滿足以下四個條件,OSPF的轉發地址才能為非0地址:
- 連接外部路由的接口必須存在OSPF進程中
- 連接外部路由的接口不能為Silent-interface
- 連接外部路由的接口網絡類型不能為P2P類型
- 連接外部路由的接口網絡類型不能為P2
如圖,OSPF網絡中,並沒有將192.168.2.0和192.168.3.0的網段宣告進OSPF進程中,所以無法產生基於192.168.2.0和192.168.3.0的鏈路狀態信息,所以R1並不知道192.168.2.0和192.168.3.0的具體位置,所以轉發地址為0.0.0.0,但是R1知道外部路由的產生者為R2,此時只需要將數據傳遞給R2即可。
當將192.168.2.0的網段宣告到OSPF進程中,產生基於192.168.2.0的網段的鏈路LSA,傳遞給R1,此時R1便知道外部鏈路的信息,Forwarding Address便為外部路由的下一跳具體地址:
解決次優路徑問題:
① AR2和AR3運行OSPF
② AR2配置靜態路由去往AR1的192.168.2.0/24的路由網段
③ AR2將靜態路由引入OSPF,將192.168.1.1作為靜態路由的下一跳地址,由於G0/0/0接口符合FA地址條件,所以192.168.1.1作為去往192.168.2.0/24的Forwarding address
④ AR3收到5類LSA后,發現去往192.168.2.0、24的Forwarding address為192.168.1.1
⑤ AR3訪問192.168.2.0/24直接將數據包送往192.168.1.1,而不會送往RTB
6. Group membership LSA:
Type-6 LSA,組成員LSA,用於OSPF組播。
7. NSSA External LSA:
Type-7 LSA,NSSA外部LSA,它是由NSSA區域或Totally NSSA區域的NSSA ASBR產生的,用來描述NSSA區域或Totally NSSA區域所連接的AS外部路由。NSSA LSA只能出現在所屬NSSA區域或Totally NSSA區域內部。
1)頭部信息:
① Ls id:外部路由網段
2)LSA信息:
① Net mask:掩碼
② E type:路由類型
③ Forwarding Address:轉發地址
④ Tag:標簽
Options選項中的NP(Propagate)置位,表示此LSA在NSSA的ABR上將7類LSA變為5類LSA通告到骨干區域中,如果NP不置位,表明此LSA只能在NSSA中傳遞
Options選項中NP不置位的場景:
① 當NSSA中的ABR連接着骨干區域,並且也連接者其他路由器,使用其他路由協議進行路由的傳遞,並在OSPF進程中引入了外部路由,此時外部路由會以五類的LSA傳遞到骨干區域,也會以7類的LSA傳進NSSA區域,但這些LSA在進行7轉5流入骨干區域是沒有必要的,所以會將Options選項中的NP不置位,只在NSSA區域中傳遞。
② NSSA區域中使用命令生成7類默認路由,此默認路由NP不置位,只在NSSA區域中傳遞
(1)E type:
E type用來表示引入路由條目的類型,主要分為兩個類型,為E1、E2,默認在引入外部路由時使用E2,E1的優先級別高於E2, E1路由和E2路由的區別在於他們計算前往目的地開銷的方式不一樣.。
① E1:
E1路由前往目的子網的開銷計算是域內開銷+域外開銷,也就是說經過的路徑的開銷的總和。
② E2:
E2路由前往目的子網的開銷則只計算域外開銷,也就是說出去ASBR之后的路徑的開銷總和,不考慮域內開銷.
注:引入外部路由時不定義引入cost,默認外部路由的cost全部為1
使用命令修改引入外部路由的類型:
[Huawei-ospf-1]import-route rip type 1
使用Router-Policy修改部分路由類別:
[Huawei]ip ip-prefix 1 permit 5.5.5.5 32
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply cost-type type-1
[Huawei]route-policy 1 permit node 10
[Huawei]ospf
[Huawei-ospf-1]import-route rip route-policy 1
(2)Forwarding address:
在LSA7中,不會存在FA不為0的場景(ABR發布的默認7類路由除外),如果真的有FA不為0,則ABR不會將此LSA進行7到5的轉換發布到骨干區域中。
LSA7類的FA地址分為兩類:
① ASBR去往外部路由的下一跳地址:
- 連接外部路由的接口必須存在OSPF進程中
- 連接外部路由的接口不能為Silent-interface
- 連接外部路由的接口網絡類型不能為P2P類型
- 連接外部路由的接口網絡類型不能為P2MP
② 如果不滿足上述條件,當環回接口在OSPF進程中,則FA地址為ASBR的環回接口地址;如果沒有環回接口,則為物理接口地址
注:使用以下命令在ABR設備上將7 轉5類LSA時清空FA地址:
[Huawei-ospf-1-area-0.0.0.1]nssa suppress-forwarding-address
(3)FA地址不為0的原因:
① 防止次優路徑
② 防止環路
① 防止次優路徑:
NSSA區域可能和骨干區域之間存在多個ABR,但是只有Router-ID地址大的ABR才會將7類
LSA轉換為5類LSA,並且Cost會變為1,但是如果此ABR並不是骨干區域內的路由器到達
NSSA區域ASBR的最優路徑
注:由於連接NSSA區域的骨干區域ABR起到了7類轉5類的作用,所以可以認為為ASBR,所以此區域不會產生四類LSA
- 如果FA地址為0,則骨干區域內的路由器訪問NSSA區域的外部路由只能走此ABR,有可能不是最優路徑
- 如果FA地址不為0,骨干區域內的路由器可以根據三類LSA知道區域FA地址的最優路徑,也就是相當於骨干區域內的路由器知道去往NSSA區域ASBR最優的路徑,防止了次優路徑的產生
a) Area1為NSSA區域,默認huawei設備AR4會將7類LSA轉為5類LSA傳遞給AR5
b) 如果FA地址為0,此時AR5想要訪問外部網絡,唯一標識去往外部網絡的只有AR4,所以AR5會將數據包送給AR4,路徑為AR5→AR4→AR3→AR1,形成次優路徑
c) 如果FA地址為AR1的環回接口會實際物理IP地址,AR5會根據FA地址查看三類LSA,知道去往AR1的最優路徑為AR5→AR2→AR1,解決了次優路徑
② 防止環路:
① NSSA區域將外部路由1.1.1.1/32傳遞到AR4
② AR2將七類LSA傳遞AR3,此時AR3去往外部路由的下一跳為AR4
③ 只有Router ID最大的ABR進行7轉5的工作,此時AR3將7類LSA轉為5類LSA傳遞給AR4,如果FA地址為0,AR4收到此5類LSA后,由於FA地址為0,所以去往ASBR的地址只能走AR3
④ AR4收到此五類LSA后,也會交給AR2,AR2會從Area1收到一份7類的LSA,同樣也會從Area0收到一份5類的lSA,優先級相同,都為E2模式,比較外部開銷,AR2到達ASBR AR1的開銷為48;到達ASBR AR3的開銷值為2,所以優選開銷值小的走AR2去往AR3,環路產生
注:使用命令[Huawei-ospf-1-area-0.0.0.1]nssa suppress-forwarding-address在ABR七轉五的時候刪除FA地址
五. 拓撲結構:
1. Stub網段:
在OSPF網絡中,將Loopback網段成為Stub網段,在路由器中,將Stub網段看作一個節點。
注:默認OSPF中Stub中loop口都是/32主機地址
2. Transit網段:
有至少兩台路由器的廣播型網段或NBMA網段就是一種Transit網段。
3. P2P網段:
六. 網絡類型:
網絡類型是指運行OSPF網段的二層鏈路類型,根據路由器所連接的二層鏈路類型的不同,OSPF將網絡結構划分為四種網路類型,每種類型存在差異。
OSPF將網絡划分為四種類型:
① Broadcast廣播多路訪問型網絡
② NBMA非廣播多路訪問型網絡
③ Point-to-Point點到點型網絡
④ Point-to-MultiPoint點到多點型網絡
注:
使用命令[Huawei-GigabitEthernet0/0/0]ospf network-type p2p修改網絡類型
使用命令[Huawei]disp ospf interface g0/0/0查看網絡類型
網絡類型差異:
網絡類型 |
Hello時間/死亡時間 |
DR選舉 |
Broadcast |
10/40 |
√ |
NBMA |
30/120 |
√ |
P2P |
10/40 |
× |
P2MP |
30/120 |
× |
不同網絡類型報文目標地址:
網絡類型/報文類型 |
Hello |
DD |
LSR |
LSU |
LSACK |
Broadcast |
組播地址 |
單播地址 |
單播地址 |
組播地址 |
組播地址 |
NBMA |
單播地址 |
單播地址 |
單播地址 |
單播地址 |
單播地址 |
P2P |
組播地址 |
組播地址 |
組播地址 |
組播地址 |
組播地址 |
P2MP |
組播地址 |
單播地址 |
單播地址 |
單播地址 |
單播地址 |
不同網絡類型互聯結果:
路由器交換Hello包進行鄰居的建立,所以不同的網絡類型只要Hello時間間隔一致就可以建立鄰居,選DR的會自動認為自己為DR,不選DR的知己跳過,鄰居建立成功就能夠成功交互DD報文,並傳遞LSA。
但是不同的網絡類型中描述LSA的Link ID和DATA是不同的,所以LSA生成路由能成功的條件為Link ID和DATA信息描述和接口發出的描述是一樣的
網絡類型 |
Full鄰居建立 |
路由學習 |
P2P------- Broadcost |
√ |
× |
P2MP----Broadcost (手工設置Hello時間相同) |
√ |
× |
P2P--------P2MP (手工設置Hello時間相同) |
√ |
√ |
NBMA ----Any (單播,對方都是組播) |
× |
× |
注:所有的網路類型中只有NBMA是單播發送Hello報文的,需要手工指定鄰居,所以會發送單播的OSPF的Hello報文,對端如果是其余三種網絡類型,在收到單播的Hello報文后,由於發現目標地址是自身的IP地址,所以會接收此報文,進入Init狀態,發送組播Hello報文,但是NBMA網絡的路由器並沒有偵聽OSPF組播組,所以不會接收此組播報文,最近進入到Down狀態,所以NBMA和其余三種網絡類型建立OSPF鄰居時,NBMA會由Apptemp狀態進入Down狀態,而其余三種網絡類型會一直在Init狀態
1. Broadcast:
廣播型多路訪問,以太網環境為Broadcast,默認進行DR、BDR的選舉,Hello時間為10S發送一次,死亡時間為40S。
2. NBMA:
Non Broadcast multiple Access,非廣播多路訪問,ATM或幀中繼接口的默認網絡類型為NBMA,默認進行DR、BDR的選舉,Hello時間為30S發送一次,死亡時間為120S。
(1)NBMA網絡不支持廣播,所以OSPF在發送組播報文時無法到達對端,也就無法建立鄰居,此時狀態會一直停留在Attempt狀態。
- 將網絡類型改為Broadcast類型,並在幀中繼網絡中建立map映射表時使用命令讓鏈路支持廣播:
[Huawei-Serial0/0/0]ospf network-type broadcast
[Huawei-Serial0/0/0]fr map ip 192.168.1.3 103 broadcast
- 使用單播命令指定對端IP地址建立鄰居:
[Huawei-ospf-1]peer 192.168.1.1
(2)在hub-spoken中,由於所有的路由器沒有完全建立pvc,所以導致dr的選舉錯誤,此時r2和r3都認為自己是DR,所以應該將hub端選舉為DR
- 除Hub外,將其余的路由器的優先級置為0
(3)R1與R2,R1和R3之間建立了pvc,R1為Hub點,所以為R2,R3更新路由條目 ,此時R2,R3已經收到所有的路由條目,如果此時R2訪問R3,根據FS地址下一跳為R3的接口地址,但是數據層面無法通信,因為R2,R3之間沒有建立pvc,R2去往R3不知該封裝多少DLCI號,此時會造成有路由但數據不通的現象。
- dlci復用,R3去往R2的dlci設置為去往R1的dlci,R2去往R3的dlci設置為去往R1的dlci,此時R3和R2通信經過R1中轉便可以實現
- 注:Hub-Spoke中,Spoke路由器是無法建立鄰居的,及時是單播建立鄰居,采用DLCI復
用的方法也不行,因為單播的TTL值為1
3. Point-to-Point:
點到點鏈路,環回口,串行接口(PPP、HDLC)為點到點鏈路,默認不會進行DR、BDR的
選舉,Hello時間為10S發送一次,死亡時間為40S。
(1)P2P的缺點:
P2P網絡默認不檢查網絡掩碼,所以兩端IP掩碼不一致也可以建立Full狀態,如果掩碼不一致,設備會自動為對端生成一條關於對端接口的OSPF網絡路由
路由互指會生成環路:
① AR1訪問192.168.1.3,OSPF路由器訪問192.168.0.0/16的下一跳為S4/0/0
② AR2收到數據包后,發現去往192.168.1.3,根據OSPF路由下一跳為AR1,造成環路
4. Point-to-MultiPoint:
點到多點,支持廣播針對FR中Hub-Spoke模式中出現的問題而設計的網絡類型,默認沒有
一種網絡拓撲為此結構,默認不會進行DR、BDR的選舉,Hello時間為30S發送一次,死亡
時間為120S。
針對幀中繼HUB-Spoke模型,可以采用P2MP模式解決所出現的問題:
P2MP網絡會將路由器所有的直連接口作為OSPF路由條目發送出去
問題1.支持組播,所以將端口改為P2mp不需要手工peer,但需要在建立fr map的時候加入broadcast命令支持組播發送
問題2.在hub-spoken中,由於P2MP不需要選舉DR,所以不會出現DR選舉錯誤的問題
問題3.在hub-spoken中,網絡類型為p2mp網絡的時候,由於沒有另外一端Spoke的DLCI,但是遞歸查詢,去往Spoke的下一跳為HUB端,而且也知道HUB端的DLCI號,於是遞歸查詢將去往另一端Spoke的DLCI自動封裝為HUB端的DLCI送往HUB,實現了數據方向通信
5. Virtual:
虛鏈路網絡類型,當配置V-Link后,這個虛擬接口(不是物理口)類型屬於Virtual網絡類型類型
注:在Cisco中,是沒有Virtual類型的,他使用的P2P類型
七. 區域類型:
OSPF網絡中存在兩種傳統區域和四種特殊區域,與傳統區域區別在於這四種區域的允許的LSA泛洪有所不同。特殊區域的存在,為網絡部署提高了活躍性。
兩種傳統區域:
① Backbone骨干區域
② Normal普通區域
四種特殊區域:
① Stub Area 末梢區域
② Totally Stub 完全末梢區域
③ NSSA 非純末梢區域
④ Totally NSSA 完全的非純末梢區域
OSPF區域標識:
OSPF在建立鄰居時,使用Hello包中的Area-ID和Options選項中的Flag位的組合表示當前的區域類型,如果區域類型不一致,將無法建立鄰居關系。
Area ID:當前的路由器所屬區域
NP:是否是NSSA區域
E:是否有外部路由的能力
類型標識:
區域類型使用Hello報文中的Area ID和Options字段組合標識區域類型
區域類型/標志位 |
AreaID |
NP位 |
E位 |
Backbone |
為0 |
0 |
1 |
Normal |
不為0 |
0 |
1 |
Stub |
不為0 |
0 |
0 |
Totally Stub |
不為0 |
0 |
0 |
NSSA |
不為0 |
1 |
0 |
Totally NSSA |
不為0 |
1 |
0 |
Stub(NSSA)和Totally Stub(Totally Stub)在傳遞hello報文中用來表示特殊區域的組合是沒有區別的,唯一的區別是配置上在ABR上是否放行三類LSA,所以變為Totally Stub(Totally Stub),只需要在所有的ABR上不允許放行三類LSA
四種特殊區域允許存在的LSA:
LSA/區域類型 |
Stub |
Totally Stub |
NSSA |
Totally NSSA |
Type1 LSA |
√ |
√ |
√ |
√ |
Type2 LSA |
√ |
√ |
√ |
√ |
Type3 LSA |
√ |
× |
√ |
× |
Type4 LSA |
× |
× |
× |
× |
Type5 LSA |
× |
× |
× |
× |
Type6 LSA |
× |
× |
× |
× |
Type7 LSA |
× |
× |
√ |
√ |
1. Backbone:
骨干區域,為區域0
2. Normal:
普通區域,除區域0意外的區域
3. Stub Area:
末梢區域:
- Stub區域不允許所有AS External LSA在其內部進行泛洪
- 在Stub區域連接骨干區域的邊界ABR路由器使用Network Summary LSA 向這個Stub區域通告缺省路由,所有去往AS外部的路由全部通往骨干區域進行轉發
- ABR發布的缺省路由不會被通告到這個區域的外部去。
4. Totally Stub:
完全末梢區域:
- 不允許所有Network Summary LSA和所有AS External LSA在其內部進行泛洪
- 在Totally Stub區域連接骨干區域的邊界ABR路由器使用Network Summary LSA 向這個Stub區域通告缺省路由,所有去往外Area部區域和AS外部的路由全部通往骨干區域進行轉發
- ABR發布的缺省路由不會被通告到這個區域的外部去
5. NSSA:
非純完全末梢區域:
- NSSA區域不允許骨干區域傳遞過來的AS External LSA在其內部進行泛洪
- 允許自己直連的外部路由的引入,並將自身引入的外部路由轉換為NSSA External LSA在本區域傳遞
- 在NSSA區域連接骨干區域的邊界ABR路由器使用7類LSA向這個NSSA區域通告缺省路由,所有去往NSSA區域外部的路由全部通往骨干區域進行轉發
- NSSA中的ABR將NSSA External LSA轉化為AS External LSA泛洪到整個AS中,唯一變化的內容為Adv變為了ABR的Router-ID。
注:NSSA區域中,ABR會將NSSA區域中的7類LSA轉為5類LSA發布到區域0,所以ABR
也是ASBR,當NSSA區域存在多個ABR和骨干區域相連接時,NSSA會選擇ABR的
Router-ID最大的ABR將七類轉換為五類發布到骨干區域,huawei設備可以在ABR設備
上使用命令[Huawei-ospf-1-area-0.0.0.1]nssa translator-always規定此設備進行7轉5功能
NSSA區域的ABR將七類裝換為五類LSA的時候,不會生成四類LSA,所以骨干區域收到NSSA的外部路由是沒有四類LSA輔助的,由於類型7的FA地址不為0,所以轉為5類LSA時也不為0,此時骨干區域中的路由器直接根據三類LSA就可以知道去往ABR的開銷
當骨干區域在往其他的區域Flooding NSSA域的外部路由時,會產生四類LSA,用來描述到NSSA的ABR的開銷(ASBR),如果存在多個ABR時,會產生多份四類LSA分別描述到不同的ABR的開銷,不管他是否將7類LSA裝換5類LSA
6. Totally NSSA:
完全非純完全末梢區域:
- Totally NSSA區域不允許所有的Network Summary LSA和骨干區域傳遞過來的AS External LSA在其內部進行泛洪
- 允許自身引入的外部路由轉換為NSSA External LSA在本區域傳遞
- 在Totally NSSA區域連接骨干區域的邊界ABR路由器使用7類LSA和3類LSA分別向這個NSSA區域通告缺省路由,所有去往外部區域和AS外部的路由全部通往骨干區域進行轉發
- ABR發布的缺省路由不會被通告到這個區域的外部去
- NSSA中的ABR將NSSA External LSA轉化為AS External LSA泛洪到整個AS中,唯一變化的內容為Adv變為了ABR的Router-ID
注1:NSSA區域中,ABR會將NSSA區域中的7類LSA轉為5類LSA發布到區域0,所以ABR也是ASBR,當NSSA區域存在多個ABR和骨干區域相連接時,NSSA會選擇ABR的Router-ID最大的ABR將七類轉換為五類發布到骨干區域
注2:由於NSSA網絡中的路由器會收到LSA3和LSA7的兩條默認路由,根據路由選路規則,路由器會將類型3的默認路由放入路由表
Totally NSSA區域的ABR將七類裝換為五類LSA的時候,不會生成四類LSA,所以骨干區域收到NSSA的外部路由是沒有四類LSA輔助的,由於類型7的FA地址不為0,所以轉為5類LSA時也不為0,此時骨干區域中的路由器直接根據三類LSA就可以知道去往ABR的開銷
當骨干區域在往其他的區域Flooding NSSA域的外部路由時,會產生四類LSA,用來描述到NSSA的ABR的開銷(ASBR),如果存在多個ABR時,會產生多份四類LSA分別描述到不同的ABR的開銷,不管他是否將7類LSA轉換5類LSA
八. V-Link:
通常情況下,一個OSPF網絡的每個非骨干區域都必須與骨干區域通過ABR路由器直接連接,非骨干區域之間的通信都需要通過骨干區域進行中轉。但在現實生活中,可能會因為各種條件限制,導致非骨干區域與骨干區域無法直接連接,在這種情況下,可以使用OSPFV-Link(Virtual Link)來實現非骨干區域與骨干區域在邏輯上直接相連。
OSPF協議還要求骨干區域必須是唯一且連續的,然而,由於發生故障等原因,骨干區域有可能出現被分割的情況。此時,同樣可以使用V-Link來實現物理上被分割的骨干區域能夠邏輯相連。
注1:普通區域之間可以建立鄰接關系,但是無法傳遞三類路由和四類路由,可以傳遞五類,但是不會放入路由表
注2:虛擬鏈路屬於區域0,用於做鏈路的備份,V-Link的成本就是物理鏈路的成本
1. V-Link原理:
V-Link屬於骨干區域的一部分,當建立一條V-Link后,邏輯上將非骨干區域中與另外一個費骨干區域相連接的路由器作為真正意義上的“ABR”,屬於Area0的ABR,此時非骨干區域就可以利用ABR生成Network summary LSA通過V-Link傳遞給Area0,ABR屬於區域0。
指定對端的Router ID,由於兩端建立Router ID存在於隔離兩端的非骨干區域中,此時兩端的路由器通過同區域的1類和2類,根據路由器根據物理地址建立連接。
2. V-Link檢測:
V-Link會每隔10S進行Hello包的檢測,Dead時間為40S,目標地址為單播
注:Cisco的V-link為Demand-Croat,當兩端鄰居通過Hello報文到達Full之后,便不會在發送Hello報文進行檢測鏈路,所以當V-Link兩端無法通信時,V-Link的狀態依舊是Full,所以當huawei設備和Cisco設備做V-Link時,數據包交互中會顯示V-link的模式,如果模式不匹配無法建立Full狀態,當Cisco設備檢測到對端的模式后,會自動變為Full之后每10S發送Hello包的模式
3. V-Link場景:
① 骨干區域和非骨干區域被另外一個非骨干區域隔離,此時需要使用V-Link將非骨干區域和骨干區域建立虛鏈接。
② 當骨干區域被非骨干區域分離時,此時為了使兩個骨干區域合並通信,此時需要使用V-Link建立連接實現兩個被分離的骨干區域的通信。
③ 三個連續的非骨干區域相連接,想要讓兩端的非骨干區域聯通通,可以在中間的非骨干區域配置V-Link將兩端的非骨干區域相連實現通信。
④ 使用V-Link做冗余備份時,如下圖:
⑤ 解決次優路徑問題:
a) AR16訪問13.13.13.13/32的網絡,由於AR16為ABR,不會接受非骨干區域Area2的ABR AR17發送過來的三類LSA
b) 此時AR16訪問13.13.13.13/32的網絡走的為低速鏈路
c) 在Area2區域將AR17和AR16之間建立V-Link,此時AR16個AR17建立一條屬於Area0的鏈路
4. V-Link問題:
(2)鄰居不穩定:
路由器ID沖突或修改路由器ID會導致虛鏈路不穩定
(2)無法接受匯總路由:
如果在V-Link區域的ABR配置了匯總路由對V-Link區域記性路由匯總的發布,此時這條匯總路由無法生效,在V-Link區域的路由器上還是原始路由條目,目的為了防止環路。
① 在Area1中,AR23和AR25之間使用V-link將AR25作為ABR,實現Area2路由通信
② 在Area23上做路由匯總,匯總為10.0.0.0/8;在Area25上做路由匯總,匯總為10.1.0.0/16
③ AR24訪問10.1.1.1,最長掩碼匹配,下一跳為AR25,將數據包送給AR25
④ AR25收到數據包后,傳給鄰居AR23,下一跳為AR24,於是將數據包樓傳回了AR24,造成了路由環路
(3)V-Link環路:
AR21訪問AR14的14.14.14.14,在沒有V-link的情況下,AR18不會將三類LSA傳遞給AR21,所以在AR17和AR18之間建立V-Link,AR17將一類和二類LSA傳遞給AR18,AR18將轉換為三類LSA傳遞給AR21
④ AR14訪問AR21的22.22.22.22,交給AR17,AR17將數據包交給AR16,送給V-Link鄰居AR18
⑤ AR16為ABR,關於22.22.22.22/32的LSA:
- AR14從區域0傳遞一份三類的LSA給AR16,AR16放入路由表
- AR18從區域1傳遞一份三類的LSA給AR16,由於水平分割的原因,ABR不會接收從普通區域傳遞過來的是三類LSA,所以不會放入路由表。
AR16將數據包送給AR14,形成環路
解決方法:
① 在AR16個AR18之間建立V-link
② 在AR17和AR18之間建立V-link,並且接入一根物理鏈路,物理鏈路的開銷小於AR17走AR15到AR18的開銷
5. V-Link配置:
鄰居已建立,但是因為三類LSA水平分割的原因,沒有路由條目
在區域1中建立一條V-Link,使Area2和Area0實現通信:
R2:
[Huawei]ospf
[Huawei-ospf-1]area 1
[Huawei-ospf-1-area-0.0.0.2]vlink-peer 3.3.3.3
R3:
[Huawei]ospf
[Huawei-ospf-1]area 1
[Huawei-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4
九. OSPF防環機制:
1. 區域內防環:
區域內使用SPF算法,以自己為根,根據LSA的拓撲信息和路由信息,純天然的防環機制
2. 區域間防環:
- 從一個“真ABR”流出的Network Summary LSA不會在流入其他的“真ABR”:
- 普通區域從骨干區域收到的Network Summary LSA不會在傳遞給其他的區域(普通區域和骨干區域),稱為“OSPF水平分割”
- ABR不會計算任何從非骨干區域傳遞過來的3類LSA,只會放進數據庫
3. 外部路由防環:
5類LSA可以在全網傳遞,但是用於標識ASBR和開銷值的四類LSA只由ABR產生,一個普通區域的路由器收到另一普通區域的五類LSA,但是兩個區域之間不存在ABR,所以不會生成只在區域內傳遞的四類LSA,所以普通區域只把五類LSA放入數據庫,但是缺少四類LSA,不會進行外部路由的計算。
十. LSA Flooding:
(1)穩定收斂過程:
① AR1從所有的接口flooding LSA
② AR2、AR3收到LSA后,從除接收到此LSA的接口flooding LSA
③ AR4收到相同的兩條LSA,根據LSA選舉規則選出一條最好的LSA放入數據庫中,同時AR4也會將LSA從接口傳給AR3和AR2(AR4認為是不相同的兩條LSA)
(2)新的LSA Flooding:
① AR2 Flooding一條更好的LSA,AR4將LSA flooding給AR3
② AR3也收到了此更好的LSA,但數據庫中已經存在,於是不再flooding此LSA
(3)舊的LSA Flooding:
① AR3有一條舊的LSA flooding給AR4,AR4不接受,(並將新的傳遞給AR3,huawei設備沒有標明)
(4)3600S LSA Flooding:
① AR3有一條3600S的LSA flooding給AR4,AR4立刻將此LSA從數據庫中刪除
(5)AR1宕機:
① 網絡穩定一段時間后,AR1宕機,AR2和AR3將關於AR1相關的LSA生成的路由刪除,但是保留數據庫中的LSA(依舊3600S老化)
② AR2、AR3發送新的LSA給AR4,AR4重新計算拓撲,此時拓撲中不在存在AR1的路由信息
(6)AR1重新存在:
① AR1會重新發送LSA,序列號為0x80000000,發送給AR2、AR3,但是由於AR2、AR3中的序號要大於此序列號,拒絕接收,AR2、AR3會將原LSA的序列號傳給AR1
② AR1產生新的LSA,將Seq Number作為源序列號+1並重新flooding
十一. SPF:
Shortest Path Fast,最短路徑優先,OSPF使用SPF算法在網絡圖譜中傳出最優的路徑生
成路由信息放入路由表中。
1. SPF過程:
SPF算法分為三個階段:
① 根據LSA生成有向圖
② 保留最優的有向路徑
③ 增加網絡號
(1)有向圖生成:
根據LSA中的P2P和Trans Net描述生成有向圖:
(2)執行SPF計算:
以自己為根,執行SPF計算,將最優的路徑保存,將不必要的邊全部切掉,當網絡中出現去往同一幾點相同的開銷值時,SPF會畫出兩張拓撲圖用來分別描述着兩條路徑
最優的路徑中總鏈路數=N(路由器個數)-1
以RTB為中心:
(3)增加網絡號:
根據Stub net中的網絡信息將網絡掛到最優的有向圖中
2. SPF特點:
1. OSPF在Area內使用SPF算法,以自己無節點,生成一棵以自己為根的無環的樹,保證了無環(區域間可能存在環路)
2. OSPF在OSPFv2中最大的缺點為LSA1和LSA2中既有拓撲信息又有網路信息,當接口IP修改了但是拓撲沒有發生變化,但此時發生接口IP變化的的路由器會立刻Flooding新的LSA,所有收到新的LSA的路由器都會進行SPF的重新計算(OSPFv3解決了此問題)
3. I-SPF:
Incremental SPF,增量最短路徑優先算法,是指網絡中節點發生變化時,針對網絡拓撲改變所做出的行為。當網絡初次收斂時,路由器會以自己為根,對全網信息使用SPF算法算出最優路徑,這種算法稱為Full SPF。
而一個區域內一段鏈路的變化並不會影響其他鏈路的結構,所以進行Full SPF的計算是沒有必要的,只需要對變化的拓撲鏈路進行單獨的SPF計算即可,在OSPF中,區域內由於LSA1類和LSA2類包含着拓撲信息和網絡信息,所以任何LSA1和LSA2的變化都會觸發ISPF計算(也包括LSA1和LSA2)
原理:
A會以自己為根使用SPF算法進行收斂,當網絡穩定后,Root A使用I-SPF算法,此時網段中的4網段出現故障時,不會觸發Root A的重新計算。
當網絡中出現新的設備G,路由器D在網絡中通告路由器G的路由信息,此時Root A使用I-SPF算法只對路由器G的路由網段進行計算,而不會全網重新計算。
4. PRC:
Partial Route Calculation,部分路由計算,是指當網絡中路由發生變化的時候,只對發生變化的路由進行重新計算。
SPF算法中將區域內算出一棵最優的以自己為根的樹,所有的外部路由(3、4、5、7)的路由都充當枝葉掛在ABR和ASBR上,當3、4、5、7的LSA內容發生變化時,是不會影響已經計算好的拓撲樹,所以當區域外的路由發生變化時,時不需要執行SPF算法重新計算拓撲樹的,此時只需要使用RPC算法對網絡中的路由重新計算即可。
5. 按照優先級進行收斂:
OSPF的LSA中有優先級字段,可以按優先級收斂是指在大量路由情況下,能夠讓某些特定的路由(例如指定IP前綴的路由)有限收斂的一種技術,因此用戶可以把和關鍵業務相關的路由配置成相對較高的優先級,使這些路由更快的收斂,從而使關鍵的業務受到的影響減小。通過對不同的路由配置不同的收斂優先級,達到重要的路由先收斂的目的,提高網絡的可靠性。
配置命令:
可以通過配置IP前綴列表或tag路由將特定路由過濾出來,通過對不同的路由配置不同的收斂優先級,達到重要的路由先收斂的目的,提高網絡的可靠性。OSPF路由收斂優先級為critical>high>medium>low,只有本地有效。
[Huawei]ip ip-prefix 1 index 5 permit 192.168.1.0 24
[Huawei-OSPF-1]prefix-priority critical ip-prefix 1
6. 智能定時器:
在進行SPF計算和產生LSA的時候用到的一種定時器,該定時器首次超時時間是一個固定的時間。如果在定時器超時前,又有觸發定時器的時間發生,則該定時器下一次的超時時間會增加,智能定時器默認LSA間隔為2S,SPF計算默認為5S。
- 當R6發送了一條新的LSA給R7,如果網路出現變化,此時R6必須等待2S之后才能將新的LSA發送給R7,如果網絡中不停的出現狀態,此時R6會發送大量的LSA,造成網絡癱瘓,此時使用智能定時器后,每次智能定時器時間內產生新的LSA,定時器數值都逐漸增大,減少LSA,防止網絡癱瘓。
- 當R6發送了一條新的LSA給R7,R7會進行SPF計算,如果網路出現變化,R6重新發送LSA給R7,此時R7必須等待5S之后才弄能重新進行SPF計算,如果網絡中不停的出現狀態,此時R6會發送大量的LSA給R7,R7不停的進行SPF計算,為了防止R7頻繁進行SPF計算出現宕機,此時可以使用智能計時器增大SPF計算時間,防止宕機發生。
智能定時器配置:
[Huawei-OSPF-1]timer LSA-generation 3 5 10---設置產生同一LSA間隔為3S,設
置初次產生LSA的延遲時間為5
毫秒,兩次產生相同的LSA iD的LDP之間的遞增時間為10毫秒
[Huawei-OSPF-1]timer LSA-max-age 3---設置產生LSA的最大老化時間500S,默認為20min
[Huawei-isis-1]timer LSA-refresh 400--設置LSA的刷新時間為400S,默認為15min
[Huawei]timer spf 10---修改SPF重新計算的時間間隔為10毫秒(默認為5S)
十二. OSPF選路:
1. 開銷值計算:
默認情況下,OSPF接口開銷值與接口的帶寬有關,計算公式為:
Bandwidth-reference/bandwidth
- 參考帶寬Bandwidth-reference默認取值為100Mb=100 000Kbps=100 000 000bps
- 實際帶寬bandwidth的單位使用bit/S,以太網接口的開銷默認為1,不足1的按1計算。
- 所以常見接口開銷值為:
a) 十兆:100Mb/10Mb=10
b) 百兆:100Mb/100Mb=1
c) 千兆:100Mb/1000Mb=0.1==1
d) 串口E1:100Mb/2.048=48.82==49
如果想要修改參考帶寬,在OSPF進程下使用以下命令修改:
[Huawei-ospf-1]bandwidth-reference 1000
如果直接改動接口OSPF開銷值,直接在接口下使用以下命令修改:
[Huawei-GigabitEthernet0/0/0]ospf cost 10-----增加花費10
注1:計算Cost計算的為路由傳遞的入方向Cost,所以修改Cost值在路由傳遞方向的入接口進行修改
注2:默認接口修改Cost值只能對區域內和區域間生效,對引入路由(E2)無效
2. 路由選路規則:
① 存在同一目的地的不同LSA時,LSA1/2路由>LSA3路由>LSA5、LSA7路由
② 存在同一目的地同一類型LSA時,骨干區域優於非骨干區域
③ 存在同一外部路由不同Type類型時,E1優於E2
④ 外部路由都為E1,Cost越小越優先
⑤ 外部路由都為E1,並且Cost相等,那么進行負載均衡
⑥ 外部路由都為E2,外部Cost越小越優先
⑦ 外部路由都為E2,外部Cost值相等,則到ASBR路由器cost小的路徑優先
⑧ 外部路由都為E2,Cost值相等,到ASBR路由器cost相等,則進行負載均衡
十三. OSPF擴展特性:
OSPF擴展特性主要包含三方面,分別為:
① LSDB超載機制
② 按需電路
③ Stub路由器
1. LSDB超載機制:
如果路由器內存容量較小,無法存儲太多的AS外部路由信息,可能會導致路由器宕機,為了防止路由器宕機,此時可以使用LSDB超載機制限制LSA的數量。
如果超出LSDB限制,此時首先刪除自身產生的五類LSA,如果此時依舊大於超出限制,只接受限制LSA的數量(若果已經超出限制LSA,默認不會刪除原來的)。
[Huawei-ospf-1]lsdb-overflow-limit 20
2. 過濾策略:
(1)本區域過濾:
[Huawei-ospf-1]filter-policy 2000 import-----------對生成路由表進行路由策略(只對本設備有效)
[Huawei-GigabitEthernet0/0/1]ospf filter-lsa-out all---接口下使用此命令對當前所有的LSA實現過濾(包含1類和2類)
注:此命令並不是用來轉對實現1類2類的過濾,主要用於多鏈路減少LSA泛洪行為
此圖中,AR1和AR4之間為附載分擔,AR2和AR3會將AR1生成的LSA傳遞給AR4,AR4收
到兩份相同的關於AR1生成的LSA,所以只會選擇其中一份進行SPF算法,如果當前AR1端
在大量的1類LSA,AR4會升到大量兩份相同的一類LSA,所以是沒有必要的,所以可以
直接在AR1的G0/0/0和G0/0/1上使用命令ospf filter-lsa-out all過濾此接口的所以LSA,此
時AR4只會收到一份LSA,減少不必要的LSA。
(2)三類過濾:
① 區域下配置:
[Huawei-ospf-1-area-0.0.0.0]filter 2000 export-----在ABR上實現對出方向的三類LSA做過濾
(一類LSA的區域下配置)
[Huawei-ospf-1-area-0.0.0.0]filter 2000 import-----在ABR上實現對入方向的三類LSA做過濾
(生成三類LSA的區域下配置)
[Huawei-ospf-1-area-0.0.0.0]abr-summary 10.10.0.0 255.255.0.0 not-advertise-----在ABR上通過聚合路由默認抑制明細,不通過聚合路由,等同於過濾路由
② 接口下配置:
[Huawei-GigabitEthernet0/0/0]ospf filter-lsa-out summary acl 2000 ------對出(入)方向的LSA做過濾(只對3、5、7起作用)
(3)五(七)類過濾:
① 在ASBR上:
[Huawei-ospf-1]filter-policy 2000 export-------在ASBR上實現引入外部路由時對路由做策略
[Huawei-ospf-1]asbr-summary 10.10.0.0 255.255.0.0 not-advertise-----聚合路由默認抑制明細,不通過聚合路由,等同於過濾路由
② 在接口下:
[Huawei-GigabitEthernet0/0/0]ospf filter-lsa-out summary acl 2000 ------對出(入)方向的LSA做過濾(只對3、5、7起作用)
十四. IE面試題:
1. Router-ID重復:
(1)直連Router-ID重復:
兩台路由器Router-ID重復,當AR1收到AR2的Hello報文,發現Router-ID為自身的Router-ID,認為Router-ID重復,將無法建立鄰居關系
(2)非直連Router-ID重復:
① 同區域Router-ID沖突
如圖,AR1和AR3Router-ID重復
a) 鄰居建立:
- AR2會從G0/0/0和G0/0/1端口收到兩份都是Router-ID標識為1.1.1.1的hello報文
- AR2會將網絡拓撲信息理解為自身與對端1.1.1.1的設備使用雙線連接,於是與對端建立鄰居關系
b) 路由傳遞:
- AR1將LSA傳遞給AR2(Seq=a)
- AR2收到LSA后,放入數據庫中,並將此LSA在從G0/0/1口傳遞給AR3
- AR3收到LSA后,發現此LSA的Adv為自身的Router-ID,檢查響應的拓撲信息,發現拓撲信息不符合當前接口狀態,於是立馬發送a+1的LSA傳遞給AR2
- AR2收到Adv為1.1.1.1,Seq為2001的LSA后,將其從G0/0/0口傳遞給AR1,AR1收到LSA后,發現此LSA的Adv為自身的Router-ID,檢查響應的拓撲信息,發現拓撲信息不符合當前接口狀態,於是立馬發送a+2的LSA傳遞給AR2,AR2收到后,在傳遞給AR3,AR3又會發送新的LSA傳給AR2,如此循環往復,兩端設備不斷發送Seq增加的LSA進行更新
- huawei設備在一段時間后認為網絡的Router-ID存在問題,於是將其中一台的Router-ID設為接口的IP地址,解決Router-ID沖突的問題
② 不同區域Router-ID沖突:
a) 鄰居建立:
- AR2會從G0/0/0和G0/0/1端口收到兩份都是Router-ID標識為1.1.1.1的hello報文
- AR2會將網絡拓撲信息理解為自身與對端1.1.1.1的設備使用雙線連接,於是與對端建立鄰居關系
注:路由器並不在乎相同Router-ID的Area-ID是否相同
b) 路由傳遞:
- AR2為ABR設備,將區域內的1、2類LSA轉變為3類LSA傳遞給其他區域
- AR2生成三類LSA,LS ID為網段信息,Advertise Router為自身Router ID2.2.2.2
- AR1和AR3在收到AR2發送過來的三類LSA后,檢查無誤,放入數據庫中,所以針對此種情況的Router ID沖突,只傳遞三類LSA是沒有任何問題的
- AR1上存在靜態路由,將其引入OSPF進程中,此時AR1變為ASBR設備,全AS內泛洪五類LSA,Seq Number=a,LS ID為網段信息,Advertise Router為自身Router ID1.1.1.1
- AR2在收到五類LSA后,直接傳遞給發現此LSA的Adv為自身的Router-ID,檢查LS ID,發現當前自身無此外部路由,立刻發送一份Age為3600的毒化LSA給AR2。Seq Number=a+1,
- AR2收到AR3發送過來的毒化LSA后,刪除響應的外部路由,並將此LSA傳遞給AR1,
- AR1收到毒化五類LSA后,刪除響應的外部路由,但自身確實存在響應的外部路由,重新生成一份五類LSA,Seq為a+1+1,將其從G0/0/0口傳遞給AR2,AR2又傳遞給AR3,
- AR3,AR3又會發送新的毒化五類LSA傳給AR2,如此循環往復,兩端設備不斷發送Seq增加的LSA進行更新,所以針對此種情況的Router ID沖突,傳遞五類LSA存在問題
注:實驗發現其中一台設備並沒有自動更改自己的Router ID,而是在不斷重復此過程
2. 鏈路故障訪問:
(1)AR1和AR2認證密碼錯誤,但是有此網段的路由並且進行了LSA的Flooding,AR4訪問AR1的192.168.1.1能通嗎?
答:不能通
去方向:AR2將192.168.1.0/24的一類LSA和二類LSA通告給AR4,AR4有去往192.168.1.0/24的路由,下一跳為AR2;AR2收到后,直連網段,將數據包交給AR1
回方向:AR1和AR2沒有形成鄰居關系,所以不能通過AR2去往AR4;由於ABR不會將從普通區域傳遞過來的是三類LSA放入路由表,所以AR3不會將AR4三類LSA傳給AR1,AR1回將數據包丟包
(2)AR1和AR3認證密碼錯誤,但是有此網段的路由並且進行了LSA的Flooding,AR4能夠訪問AR3的192.1682.2接口嗎?
答:能通
去方向:AR1將192.168.2.0的一類和二類LSA傳遞給AR2,AR2將此LSA傳遞AR4,AR4訪問192.168.2.2將數據包送給AR2,AR2送給AR1,AR1發現為直連網段,交給AR3
回方向:AR1和AR3沒有形成鄰居關系,所以AR1不會將AR4的一類和二類LSA傳給AR3;由於AR3為ABR,連接AR1的鏈路沒有形成OSPF鄰居關系,所以他會接受普通區域傳遞過來的三類LSA,AR4生成的三類LSA會被AR3放入路由表,此時AR3訪問AR4走區域1