OSPF


基礎

ospf概述

OSPF:
RIP英文的名稱:route information protocol-------------------貝爾曼斯特算法-------距離矢量算法:道聽途說
OSPF的英文名稱:Open shortest path first   SPF:迪傑科斯特拉算法  Djake-------------鏈路狀態算法:類似百度地圖




同一個區域內         區域之間
LS鏈路狀態            DV距離矢量
map                  無map
LSA                  路由 
SPF                  ——
無環、最短           DV防環機制(水平分割)、不能最短
LSDB要求同步        LSDB不需要同步





OSPF 的特點:
1、收劍速度快,適應於大型園區網絡                 EIGRP收斂速度最快
2、是無類協義,支持不連續子網,支持VLSM CIDR,支持手工匯總
3、OSPF支持路徑負載分擔                          Eigrp沒有可比性 支持非等價負載
   RIP支持8條負載
4、支持區域划分,可以減少鏈路狀態數據庫的容量
5、OSPF支持認證,簡單口令和MD5認證
6、采用觸發更新,無路由環路(在區域內絕對無環)
7、OSPF的優先級(協議管理距離 AD) 10 (內部)   150(OSPF的外部路由)  思科是110
8、OSPF使用COST(協議開銷)作為度量標准  RIP跳數   ISIS  metric值  
9、三張表:鄰居表(鄰接表),拓撲表(鏈路狀態數據庫LSDB)、路由表(轉發信息數據庫FIB)
10、OSPF采用組播進行報文收發  OSPF  224.0.0.5(ALL)  224.0.0.6 (DR  BDR)    RIP(224.0.0.9)              EIGRP 224.0.0.10
11、OSPF的LSA更新時間(1800秒),老化時間(360012、OSPF  是IP協議承載的  端口89 ;RIP 是由UDP承載的,端口號520






OSPF的術語:
1、自治系統(Autonomous System):一個自治系統是指使用同一種路由協議交換路由信息的一組路由器。
2、Router ID:用於在自治系統中唯一標識一台運行OSPF的路由器的32位整數,每個運行OSPF的路由器都有一個Router ID。
3、鏈路:路由器上的一個接口
4、鏈路狀態:各條鏈路的狀態信息,包括接口,IP,掩碼,開銷,以及相關鄰居路由
5、鏈路狀態數據庫(LSDB):所有鏈路狀態信息構成鏈路狀態數據庫
6、區域(Area):在一個區域內,各路由器具有相同的鏈路狀態數據庫
7、鏈路狀態通告(LSA)用來描述鏈路狀態路態和路由
8、鏈路狀態更新LSU:一條LSU包括多條LSA
9、SPF算法
10、鄰居關系:相互建立關系,雙方的關系處在2-way狀態
11、鄰接關系:建立在鄰居之上,雙方進一步交互鏈路狀態信息,處在full狀態




OSPF中路由器的分類
內部路由器(Internal Router):內部路由器是指所有所連接的網段都在一個區域的路由器。屬於同一個區域的IR維護相同的LSDB。
區域邊界路由器(Area Border Router):連接骨干區域(Area0)和非骨干區域的設備區域邊界路由器是指連接到多個區域的路由器。ABR為每一個所連接的區域維護一個LSDB。
骨干路由器(Backbone Router):骨干路由器是指至少有一個端口(或者虛連接)連接到骨干區域的路由器。包括所有的ABR和所有端口都在骨干區域的路由器。
AS邊界路由器(AS Boundary Router):AS邊界路由器是指和其他AS中的路由器交換路由信息的路由器,這種路由器向整個AS通告AS外部路由信息。
AS邊界路由器可以是內部路由器IR,或者是ABR,可以屬於骨干區域也可以不屬於骨干區域。
ospf概述
ripv1廣播,ripv2組播224.0.0.9   ospf組播224.0.0.5(所有路由器),224.0.0.6(只有DR,BDR監控)
224.0.0.6  //DR/BDR監聽的組地址,DRother發送路由更新給DR、BDR的目的地址
224.0.0.5  //DRother監聽的組地址,DR、BDR發送路由更新給DRother的目的地址,運載這些OSPF包的幀的目標MAC地址為0100.5E00.0005



ospf的進程號只具有本地意義,可以運行多個ospf進程



Router ID:用於在自治系統中唯一標識一台運行OSPF的路由器的32位整數,每個運行OSPF的路由器都有一個Router ID。
選舉router-id順序:
    1、優先手工指定的(router-id可以在全局宣告,也可以在ospf進程中宣告。ospf進程宣告優先)
    2、自動選舉的,loopback口IP地址大的優
    3、物理接口IP地址大的優(無論該接口是否宣告進OSPF,該接口必須是UP的)
如果重新配置Router ID,需要重置OSPF進程才會生效
組播IP地址、ospf進程號、router-id
OSPF共有五種報文類型:
Hello報文用於發現和維護鄰居關系,在廣播型網絡和NBMA網絡上Hello報文也用來選舉DR和BDR。
DD報文通過攜帶LSA頭部信息來描述鏈路狀態摘要信息。(第一個DBD報文無LSDB摘要信息,而是用於確定主從關系)
LS Request報文用於發送下載LSA的請求信息,這些被請求的LSA是通過接收DD報文發現的,但是本路由器上沒有的。
LS Update報文通過發送詳細的LSA來同步鏈路狀態數據庫。
LS Ack報文通過泛洪確認信息確保路由信息的交換過程是可靠的。
除了Hello報文以外,其他所有報文只在建立了鄰接關系的路由器之間發送。


OSPF的五種報文中,只有LSU包含具體的LSA信息;DBD報文包括是只是一個摘要信息






           Hello時間   dead       DR/BDR         HELLo       DBD             LSR               LSU           LSACK 
廣播        10         40         需要           組播        單播            單播             組播/單播      組播/單播
點到點      10         40         不需要         組播        單播/組播       單播/組播        組播           組播 
NBMA        30         120        需要           單播        單播            單播             單播           單播
點到多      30         120        不需要         組播        單播            單播             單播           單播
ospf報文的五種報文類型

 

認證字段在ospf頭部攜帶,即五種報文都會進行版本、區域、認證的檢查
了解五種報文,重點掌握報文中的option字段NP位,E位

OSPF 報文頭部格式:
version:版本號  默認就是V2     
type:類型:1 hello  2 dbd   3 lsr   4  lsu  5 ack
Length:OSPF報文長度
Router-id ;
Area號:區域號  如果區域號不一致,會影響OSPF的鄰居建立
Checksum:校驗值
Autype:認證類型:0不認證,1 明文認證  2 MD5認證
Authentication:認證密碼:鑒定字段,其數值根據驗證類型而定。當驗證類型為0時未作定義;類型為1時此字段為密碼信息;類型為2時此字段包括Key ID、MD5驗證數據長度和序列號的信息。
MD5驗證數據添加在OSPF報文后面,不包含在Authenticaiton字段中。
OSPF 報文頭部格式
ospf的報文有五種報文,五種報文都封裝有ospf報文頭部
ospf的多種報文中都有Option字段,hello、dbd源生就有;LSU、LSAck(LSA頭部中有option字段);LSR沒有option字段
Option字段:
   DN位,在MPLS VPN中用來防環路的             *
   O位:支持 9  10 11類LSA的
   DC位:表明該鏈路是按需鏈路,按需鏈路不會發送Hello報文      *
   L位具有接收的轉發外部屬性LSA能力
   NP位:在hello報文中NP=1表明路由器支持7類LSA。NP=0表明該路由器不接收發送7類LSA          *
            在7類LSA中 NP=1 ,需要將7類LSA轉成五類LSA
   MC位:支持Mospf 
   E位:置1表明該接口可以正常接收外部LSA的(5類LSA)    (E位和NP位不能同時置位)     *
   MT位:表明支持多拓撲OSPF


wireshark中的備注
NP位        置1:NSSA is supported                      置0:NSSA is NOT supported
E位         置1:External Routing Capability            置0:NO External Routing Capability


dd報文有option字段,又有lsa頭部,頭部有option字段




   option字段                 NP位             E位                            
普通區域hello報文             置0              置1           NP位置0表示非nssa區域,E位置1表示可以接受5類LSA
普通區域dbd報文               置0              置1 
普通區域LSA報文頭部           置0              置1 

stub區域hello報文             置0              置0           NP位置0表示非nssa區域,E位置0表示不接受5類LSA(滿足這2點的也就是stub區域了)
stub區域dbd報文               置0              置0
stub區域LSA報文頭部           置0              置0

nssa區域hello報文             置1              置0           NP位置1表示nssa區域,E位置0表示不接受5類LSA(特殊區域都是沒有4,5類LSA的)
nssa區域dbd報文               置0              置0
nssa區域LSA報文頭部           置0              置0           普通LSA頭部均置0
nssa區域7類LSA報文頭部        置1              置0           當LSA頭部NP位置1,且該LSA為7類LSA,ABR要對該LSA進行7轉5
ospf報文option字段總結

 

Hello報文格式:
Network Mask:掩碼,在廣播網絡和NBMA網絡中是會檢測掩碼的
HelloInterval:發送Hello 報文的時間間隔,廣播網絡或者點到點(10秒鍾) ,如果是NBMA,點到多(30秒)
Option字段:詳見option字段解讀
RTR pri:DR優先級。默認為1。如果設置為0,則路由器不能參與DR或BDR的選舉。
RouterDeadInterval:死亡時間為Hello時間的4位,如果在該時間沒有收到Hello報文,就認為鄰居故障
Designated Router:發送Hello報文的路由器所選舉出的DR的IP地址。如果設置為0.0.0.0,表示未選舉DR路由器。
Backup Designated Router:發送Hello報文的路由器所選舉出的BDR的IP地址。如果設置為0.0.0.0,表示未選舉BDR路由器。
Neighbor:鄰居路由的Router ID列表。表示自己已經鄰居鄰居收到的合法的Hello報文
Hello報文格式

DD報文格式
Interface MTU: 在不分片的情況下,此接口最大可發出的IP報文長度。 
Options可選項:詳見option字段解讀
I : 當發送連續多個DD報文時,如果這是第一個DD報文,則置為1,否則置為0。 
M (More): 當發送連續多個DD報文時,如果這是最后一個DD報文,則置為0。否則置為1,表示后面還有其他的DD報文。 
M/S (Master/Slave): 當兩台OSPF路由器交換DD報文時,首先需要確定雙方的主從關系,Router ID大的一方會成為Master。當值為1時表示發送方為Master。 
DD sequence number: DD報文序列號。主從雙方利用序列號來保證DD報文傳輸的可靠性和完整性。 
LSA Headers: 該DD報文中所包含的LSA的頭部信息。 
DD報文格式

 鄰居、鄰接

 

 

OSPF根據二層鏈路類型定義了5種網絡類型:
點到點(p2P):PPP鏈路
點到多(P2M):
NBMA:(幀中繼鏈路)\ATM
broadcast :以太網鏈路,缺省情況是broadcast
虛鏈路(第五種)
OSPF的5種網絡類型
鄰接關系建立過程的概要過程:
    1.交互hello報文,進入init狀態
    2.若為MA/NBMA網絡,則停留在2-way狀態,選舉DR/BDR;若為P2P/P2MP,則跳過步驟2,直接進入ExStart
    3.發送第一個DD報文,進入ExStart狀態;接收到第一個DD報文,進入Exchange狀態
    4.loading狀態,LSDB同步
    5.同步完成

--------------------
OSPF有兩種確認機制:隱示確認(主從序列號
                   顯式確認(lsr  lsu  lsack )


鄰居:交互了hello,並且雙方同意了hello包中的相關參數后,就形成鄰居
鄰接:交互了鏈路狀態信息(LSA)或路由信息的是鄰接
鄰接是鄰居的進一步的發展,並不是所有的路由器之間一定會形成鄰接

不同網絡類型,鄰居或鄰接是否可以正常建立
Broadcast 和 P2P                    不需要修改Hello時間,鄰接關系可以正常建立,但是無法學習路由
Broadcast 和 P2MP                修改Hello時間,鄰接可以正常建立,但是無法學習路由
Broadcast 和 NBMA
P2P 和 P2M                        修改Hello時間,鄰接可以正常建立,彼此可以學習到路由
P2P 和 NBMA                      修改Hello時間鄰居也無法正常建立,


鄰接關系是否可以正常建立,要看Hello時間是否一致
是否有路由,看2類LSA (p2p ,P2MP沒有DR,BDR ,沒有二類LSA)

點到點、點到多點、虛鏈路總是建立鄰接關系
MA、NBMA中,DRother之間建立2-way關系,DRother、DR、BDR之間建立鄰接關系


--------------------

直連的設備router-id沖突——報錯(模擬器上不會持續報錯)
非直連的設備router-id沖突——學習不到路由


224.0.0.6  //DR/BDR監聽的組地址,DRother發送路由更新給DR、BDR的目的地址
224.0.0.5  //DRother監聽的組地址,DR、BDR發送路由更新給DRother的目的地址,運載這些OSPF包的幀的目標MAC地址為0100.5E00.0005

在NBMA網絡上,當鄰居失效后,將按ospf timer poll設置的輪詢時間間隔定期地發送Hello報文。輪詢時間間隔值至少應為Hello報文時間間隔的4倍。
鄰接關系建立過程的概要過程
1.交互hello報文(檢查是否合法)
    驗證OSPF Hello報文是否合法:
    一、首先需要驗證一個OSPF報文是否合法:先要看OSPF報文頭部是否合法:
    1. Version必須為2;
    2. Area ID應當滿足以下兩種情況之一:a)和接收端口所屬區域的Area ID一致;b)和接收端口所屬區域的Area ID不一致,但是值為0,表示該報文屬於骨干區域,而且是在一個虛連接上發送的;
    3. AuType字段必須與該區域配置的Autype一致;
    4. Authentication為驗證信息,內容與AuType字段相關。

    二、驗證一個接收到的Hello報文是否合法包括:
    1. 掩碼一致:如果接收端口的網絡類型是廣播型,點到多點或者NBMA,所接收的Hello報文中Network Mask字段必須和接收端口的網絡掩碼一致,如果接收端口的網絡類型為點到點類型或者是虛連接,則不檢查Network Mask字段;
    2. hello間隔一致:所接收的Hello報文中的HelloInterval字段必須和接收端口的配置保持一致;
    3. dead間隔一致:所接收的Hello報文中的RouterDeadInterval字段必須和接收端口的配置保持一致;
    4. 所接收的Hello報文中的Options字段中的E-bit(表示是否接收外部路由信息)必須和相關區域的配置保持一致。


這是形成鄰居關系的過程和相關鄰居狀態的變換過程。
Down:這是鄰居的初始狀態,表示沒有從鄰居收到任何信息。在NBMA網絡上,此狀態下仍然可以向靜態配置的鄰居發送Hello報文,發送間隔為PollInterval,通常和RouterDeadInterval間隔相同。
Attempt:此狀態只在NBMA網絡上存在,表示沒有收到鄰居的任何信息,但是已經周期性的向鄰居發送報文,發送間隔為HelloInterval。如果RouterDeadInterval間隔內未收到鄰居的Hello報文,則轉為Down狀態。
Init:在此狀態下,路由器已經從鄰居收到了Hello報文,但是自己不在所收到的Hello報文的鄰居列表中,表示尚未與鄰居建立雙向通信關系。在此狀態下的鄰居要被包含在自己所發送的Hello報文的鄰居列表中。
2-WayReceived:此事件表示路由器發現與鄰居的雙向通信已經開始(發現自己在鄰居發送的Hello報文的鄰居列表中)。Init狀態下產生此事件之后,如果需要和鄰居建立鄰接關系則進入ExStart狀態,開始數據庫同步過程,如果不能與鄰居建立鄰接關系則進入2-Way。
2-Way:在此狀態下,雙向通信已經建立,但是沒有與鄰居建立鄰接關系。這是建立鄰接關系以前的最高級狀態。
1-WayReceived:此事件表示路由器發現自己沒有在鄰居發送Hello報文的鄰居列表中,通常是由於對端鄰居重啟造成的。

猜測:全新的MA網絡環境,會先進入2-way,選舉DR/BDR再建立鄰接關系;而穩定的MA網絡環境,新加入的路由器在經歷2-WayReceived事件應該會直接進入ExStart狀態,開始建立鄰接關系。
單邊2-way的情況一般情況下是不會存在的,通過策略也難以實現:
    1.MA網絡中,hello報文是發送到組播地址;
    2.要保證鄰居發來的hello包的鄰居列表中有本端端口的IP,
        首先:本端的hello包可以正常發送,也要能正常接收hello包
        其次:對端可以正常接收hello包,也要可以正常發送hello包
1.交互hello報文(檢查是否合法)
建立鄰居關系后,若為MA/NBMA網絡,則停留在2-way狀態,選舉DR/BDR;若為P2P/P2MP,則跳過步驟2,直接進入ExStart
兩端同時進入2-way會進行DR BDR的選舉,選舉時間等於Dead時間(MA默認40秒,NBMA默認120秒)

一個OSPF路由器在廣播型網段和NBMA網段上選舉DR和BDR之前,首先會等待一段時間(RouterDeadInterval),在這段時間里檢測網絡上是否已經存在DR和BDR,如果已經有DR和BDR,則不啟動選舉過程,直接進入DROther狀態。因此,網絡上Router Priority最大的路由器不一定是DR,Router Priority第二大的路由器也不一定是BDR。


MA網絡(多路訪問網絡)會選舉DR/BDR:
(1)BMA(支持廣播的多路訪問網絡)----LAN
(2)NBMA(不支持廣播的多路訪問網絡)----幀中繼


MA網絡中路由器接口的角色:DR(指定路由器)、BDR(備份指定路由器)、DRother:即不是DR又不是BDR的所有其他路由器接口

DR和BDR的作用:
1. 減少鄰接關系的數量,從而減少鏈路狀態信息以及路由信息的交換次數,這樣可以節省帶寬,減少路由器硬件的負擔。
2. 在描述拓撲的LSDB中,一個NBMA網段或者廣播型網段是由單獨一條LSA來描述的,這條LSA是由該網段上的DR產生的。

DR的自動選舉原則:(選舉完成后即為穩定狀態)
1.接口優先級(大):默認為1,0-255;接口優先級設置為0,則不參選
2.router-id(大)

DR和BDR的選舉細則:
雙方同時進入2-way狀態開始選舉,選舉時間=死亡時間(如廣播網絡,則默認為40秒)
1、首先檢查hello報文中的DR和BDR字段是否為空,如果都為空(0.0.0.0)表明沒有DR也沒有BDR,會先選舉出BDR
2、如果 DR字段和BDR字段都為空;會先選舉出BDR,比較 優先級(默認為1)越大越優,如果 優先級相同 ,會比較Router-id,越大越優;選舉出BDR后,BDR會自動升級為DR,然后再重新選舉出BDR
3、如果BDR字段為空,DR字段不為空,會重新選舉出BDR,選舉規則:比較 優先級(默認為1)越大越優,如果 優先級相同 ,會比較Router-id,越大越優
4、如果DR字段為空,BDR字段不為空,BDR會升級為DR,重新選舉出BDR


DR和BDR的選舉特點:
1.DR選舉出來以后就是一個穩定狀態,默認DR,BDR是不搶占的。先選BDR,然后BDR升級為DR,再繼續選舉BDR
2.等待40S(wait時間)
3.40S超時后,路由器認為自己是這個網段的DR,后面加入的路由器則只能成為BDR或DRother
4.在錯誤的DR一端清ospf進程,可重新選舉DR
5.每個網段選舉一個DR

如果當前DR故障,當前BDR自動成為新的DR,網絡中重新選舉BDR;如果當前BDR故障,則DR不變,重新選舉BDR。
極端情況還是可能搶占的:比如2個vlan合並,網絡中同時存在DR和BDR,那么兩個DR之間會選舉出唯一一個DR,另外 DR降為DRother  ;BDR之間同樣會選舉出唯一的一個BDR,另外 一個會降為DRother

看到設備處於2-way狀態,表明了什么:1、自己不是DR,也不是BDR
                                  2、對端不是DR,也不是BDR
                                  3、兩個都是Drother
                                  4、出故障了卡到了2-way,也有可能是兩個優先級都為0



waiting時間:BMA——40S,NBMA——120S
若網絡中沒有DR/BDR,則在waiting時間內競選DR/BDR
若網絡中已經有DR/BDR,新加入的端口在收到DR/BDR發來的hello后,應該會直接進入DRother狀態(MA網絡下實驗實測沒有40秒)
2.DR選舉(P2P、P2MP則跳過該步驟)
------------主從關系------------
主從關系(Master/Slave):當兩個路由器之間通過DD報文交換數據庫信息的時候,首先形成一個主從關系,Router ID大的優先為主,確認主從關系之后,主路由器發送DD報文,從路由器不能主動發送DD報文,只能回應主路由器發送的DD報文,回應時使用的DD序列號必須和所回應的主路由器發送的DD報文的序列號一致。
主從關系的選舉(其實很簡單,只要注意2點):
1.第一個DD報文(沒有LSA摘要信息),序號隨機,Initia位為1表示這是第一個DBD報文,More位為1表示還有后續DBD報文要發送,Master位為1表示路由器宣告自己為主路由器。
2.比較router ID ,大的為主
隱示確認:(從路由器負責響應,響應的DD報文的序號為主路由器的hello報文中的序號,Master位置0)
隱示確認:通過主序列號進行確認:如果主設備收到一條DBD的回復報文,里邊的序列號是自己之前發送的,就認為之前的DBD對端已經收到
顯示確認:LSAck

DBD 報文的2個作用:1.選舉主從;2.交互LSA摘要信息
這里強烈建議查看DD報文的I位,M位,M/S位
Initia位為1表示這是第一個DBD報文,More位為1表示還有后續DBD報文要發送,Master位為1表示路由器宣告自己為主路由器。

------------檢測MTU及可能存在的問題------------

MTU:最大傳輸單元默認是1500
MTU在BDB報文中會攜帶,華為設置默認是不檢測MTU的,思科默認會檢測MTU

如果配置了MTU檢測:
    1、Master MTU小於從MTU:Master會卡在Exstart狀態  從設備會卡在Exchange狀態
    2、Master MTU大於從MTU,兩端都會卡在Exstart狀態
如果不檢查MTU,OSPF有可能會卡在Loading狀態


鄰居關系的建立和MTU沒有任何關系,MTU是在DBD報文中攜帶的;但建立鄰接關系時會受到影響。


------------LSDB同步過程------------
1.雙方各發送第一個DBD報文(也稱DD報文)后,轉入ExStart狀態。序號隨機,Initia位為1表示這是第一個DBD報文,More位為1表示還有后續DBD報文要發送,Master位為1表示路由器宣告自己為主路由器。

2.接收到第一個DBD報文后,進行主從路由器選舉,選舉規則為比較router-id大小。
    從路由器產生一個NegotiationDone事件,同時從路由器狀態改變為ExChange狀態。
    從路由器回應一個DBD報文(包含lsdb摘要信息,序列號則為主路由器的hello報文中的序號,Master位置0)
    主路由器收到報文后,產生NegotiationDone事件,進入ExChange狀態
    主路由器再次發送一個DBD報文(包含LSBD摘要信息,序列號為上次使用的序列號+1)
    從路由器對主路由器發送的DBD報文進行一一確認(猜測:應該還是有DBD報文進行確認,序列號為主路由器的hello報文中的序號)
    發送完DBD報文后,產生一個ExChangDone事件,鄰居狀態進入loading
    總結:正常情況下,主路由器共發送2個dd報文:1.空的DBD報文,2.主動發送1個含有摘要的DD報文
                                            從路由器共發送3個dd報文:1.競爭主從的dd報文,競爭失敗;2.競爭失敗后,回應含有lsdb摘要信息的DD報文;3.對發來含有lsdb摘要信息的DD報文的響應DD報文

3.路由器開始發送LSR報文,請求在ExChange狀態下通過DBD報文發現的,在本地LSDB中沒有的鏈路狀態信息
    對端收到LSR報文后,返回LSU報文。
    收到LSU報文后,進入FUll狀態,並返回LSAck進行確認。
    

    
    

ExStart:發送第一個DBD報文后進入ExStart狀態,這是形成鄰接關系的第一個步驟,鄰居狀態變成此狀態以后,路由器開始向鄰居發送DD報文。主從關系是在此狀態下形成的;初始DD序列號是在此狀態下決定的。在此狀態下發送的DD報文不包含鏈路狀態描述。
ExChange:接收到對方的第一個DBD報文,確認主從關系后,進入ExChange狀態。此狀態下路由器相互發送包含鏈路狀態信息摘要的DD報文,描述本地LSDB的內容。
Loading:DBD報文發完后,進入Loading狀態.相互發送LS Request報文請求LSA,發送LS Update通告LSA。
Full:兩路由器的LSDB已經同步。
3.LSDB同步,完成鄰接關系的建立(ExStart、exchange、loading、full、主從關系、MTU)
網絡類型中的端口狀態
(1)P2P、P2MP、虛鏈路
Down:這是端口的初始狀態,在該狀態下,底層協議顯示該端口不可用,所有定時器被關閉。
Loopback:此狀態表示端口被環回。在該狀態下的端口被通告為一個Stub網段。
Point-to-point(P-to-P):在此狀態下,端口是可用的,而且端口是連接到點到點、點到多點或者虛連接,此狀態下的端口試圖與鄰居建立鄰接關系,並以HelloInterval的間隔發送Hello報文。

由於不需要選舉DR和BDR,因此點到點、點到多點網段以及虛連接的端口狀態變換比較簡單,在Down狀態下收到InterfaceUp事件后,轉為Point-to-point(P-to-P)狀態,此狀態即為穩定工作狀態。

(2)BMA、NBMA
down:這是端口的初始狀態,在該狀態下,底層協議顯示該端口不可用,所有定時器被關閉。
Waiting:在此狀態下,路由器通過監聽接收到的Hello報文檢測網絡中是否已經有DR和BDR。在此狀態下的路由器不可以參與選舉DR和BDR。
Backup:在此狀態下,該路由器成為所連接網絡上的BDR,並與網段中所有的其他路由器建立鄰接關系。
DR:在此狀態下,該路由器成為所連接網絡上的DR,並與網段中所有的其他路由器建立鄰接關系。
DROther:該路由器連接到一個廣播型網段或者NBMA網段,而且該路由器不是一個DR或者BDR。此狀態下的路由器與DR和BDR形成鄰接關系並交換路由信息。
BackupSeen:路由器已經檢測到網絡上是否存在BDR。


經試驗驗證:P2P、P2MP、虛鏈路中,端口狀態穩定后,確實為P2P;而BMA、NBMA中,端口狀態穩定后則為DR、BDR、DRother
網絡類型中的端口狀態(了解)

 LSA

 

 

LS age:此字段表示LSA已經生存的時間,單位是秒。
LS type:此字段標識了LSA的格式和功能。常用的LSA類型有五種。
Link State ID:此字段是該LSA所描述的那部分鏈路的標識。例如Router ID等。
Advertising Router:此字段是產生此LSA的路由器的Router ID。
LS sequence number:此字段用於檢測舊的和重復的LSA。

LS type,Link State ID和Advertising Router的組合共同標識一條LSA。

option可選項:(可參考ospf報文option字段總結)
E:允許Flood AS-External-LSAs 
MC:轉發IP組播報文 
N/P:處理Type-7 LSAs 
DC:處理按需鏈路
LSA報文頭部字段解讀
LS type、Link State ID和Advertising Router的組合唯一標識一條LSA,但是對於一條LSA,有可能同時存在多個實例。LS sequence number用於檢查哪一個實例更新。

-------------LS Sequence Number(LSA的序列號)------------
LS Sequence Number是一個32位的有符號整數,用於檢測過期和重復的LSA。
數值0x80000000,也就是-2**31是最小的數值,但此數值是被保留的,協議可用的最小數值為0x80000001(即-2**31+1)。
當路由器生成一條新的LSA時,使用序列號0x80000001做為該LSA的初始序列號,此后,每次更新該LSA,序列號加1。當試圖增加最大序號 N-1(0x7fffffff,也被定義為 MaxSequenceNumber)時,必須先將當前 LSA從路由域中廢止。這通過將 LSA 提早老化並重新洪泛而實現。

當路由器收到一條自己產生的LSA,而且此LSA的LS Sequence Number比該路由器最近產生的這條LSA的LS Sequence Number更新時,路由器需要重新生成這條LSA的實例,其LS Sequence Number為收到的LSA中的LS Sequence Number加1。

OSPF設備是不能刪除非自己產生的LSA,如果設備要刪除LSA,始發者會發送一條LSA Age時等於MAX-age時間的LSA,收到該LSA的設備會將該LSA老化掉



--------------LSA新舊比較:(小重點)---------------
1、首先比較LSA的序列號,序列號大的是最新的LSA
2、如果序列號相同,會比較他們的校驗值(Checksum),Checksum值大的是最新的LSA
3、如果Checksum值也相同,會比較他們的LS age時間,如果LS Age時間等於Max-age時間,就認為該LSA是最新的LSA;(將會刪除該LSA)
4、如果Checksum值也相同,會比較他們的LS age時間,如果LS Age時間不等於Max-age時間,就比較他們之間的差值,如果值大15分鍾,較小的LSA Age時間的LSA是最優的
5、如果Checksum值也相同,會比較他們的LS age時間,如果LS Age時間不等於Max-age時間,就比較他們之間的差值,如果值小於15分鍾,就認為是同一條LSA,忽略其中一條就行了


tips

當一個路由器的ospf進程重啟后,那么該路由器的lsa肯定是從80000001開始計算的
而其他路由器還保留着序號為800000xx的lsa,根據規則,認為800000xx的lsa更加新
因為觸發更新,8000000xx的lsa的會返回產生該lsa的路由器,然后該路由器刷新序列號,更新一個8000000xx+1的lsa,並泛洪


若重啟ospf進程前,修改了router-id,雖然實際上是同一條lsa,但是根據ospf規則,認為是不同的lsa
所以本地還會學習到重啟前產生的lsa,同時存在兩條。。。
重啟前的lsa只能等3600秒自動老化

當發送來的lsa age時間等於3600,說明產生該lsa的路由器要刪除該lsa


---------LSA老化更新---------

LSA的更新時間 1800  老化時間3600
除Hello報文外,其它的OSPF報文都攜帶LSA信息。

什么情況下LSA會更新:
1、1800秒自動更新
2、觸發更新(接口地址變化(增加,或刪除),修改接口開銷值,刪除接口,或者刪除通告)

觸發更新要刪除某條lsa時或者LS序列號為0x7fffffff后,發出的lsa的age為3600秒;收到age時間為3600秒的lsa后,路由器將刪除該條lsa
LSA序列號、LSA新舊比較、LSA老化更新
LS type,Link State ID和Advertising Router的組合共同標識一條LSA。


  TYPE                     ADV                            區域                                       LS-id                               內容               
1、Router-lsa          每個設備都會產生                  本區域                           產生此LSA的Router ID                   路由器端口中鏈路狀態的集合
2、Network-LSA            DR                             本區域                                  DR接口的IP                廣播網絡或NBMA網絡鏈路上所有設備的router ID
3、network-summary LSA    ABR              除了totally(stub, nssa)都可以                         目標網絡前綴                    區域內的所有有網段的路由信息
4、ASBR-summary LSA       ABR              除了ASBR區域之外的區域                             asbr的router id                        描述ASBR的路由信息
5、AS-external  LSA       asbr             可以跨區域(stub nssa)                             目標網絡前綴                             路由信息
7、NSSA-LSA               asbr                       只能在nssa區域                           目標網絡前綴                             路由信息
 
ospf的各類LSA的對比
Router-LSA每一個路由器都會生成。這種LSA描述某區域內路由器端口鏈路狀態的集合。只在所描述的區域內泛洪。
Network-LSA由DR生成,用於描述廣播型網絡和NBMA網絡。這種LSA包含了該網絡上所連接路由器的列表。只在該網絡所屬的區域內泛洪。

一類LSA的鏈路描述(點到點有P-2-P 、StubNet兩條)
Link Type             Link ID                                       Data   
P-2-P              鄰居的router-id                  該網段上本地接口的IP地址                     
StubNet            該StubNet網段的IP網絡地址        該網段掩碼                                     
TransNet            DR接口的IP地址                   與DR接口相連的地址(與DR接口在同個網段的地址)  
Virtual            虛鄰居的router-id                去往虛鄰居的本地接口IP地址





[R3]dis ospf lsdb router 1.1.1.1

     OSPF Process 100 with Router ID 3.3.3.3
                 Area: 0.0.0.0
         Link State Database 


  Type      : Router       #LS type,Link State ID和Advertising Router的組合共同標識一條LSA。
  Ls id     : 1.1.1.1     #產生該LSA的路由器的router-id  
  Adv rtr   : 1.1.1.1   #產生並宣告該lsa的路由器的router-id
  Ls age    : 202 
  Len       : 60 
  Options   :  E  
  seq#      : 80000007 
  chksum    : 0x7934
  Link count: 3                                 //一個點到點2條+廣播1條=3條
-------------------------下面是P2P------------------------------
   * Link ID: 2.2.2.2      #鄰居的router-id
     Data   : 10.0.0.1     #該網段上本地接口的IP地址
     Link Type: P-2-P        #點到點類型
     Metric : 1562
   * Link ID: 10.0.0.0     #該StubNet網段的IP網絡前綴
     Data   : 255.255.255.0 #該網段掩碼
     Link Type: StubNet      #末節網絡類型
     Metric : 1562                                                                      #若p2p兩端的ip不在同一網段中,則到達對端ip時需要計算2倍的開銷 
     Priority : Low
-------------------------下面是廣播------------------------------
   * Link ID: 13.0.0.1     #DR接口的IP地址
     Data   : 13.0.0.1     #與DR接口相連的地址(與DR接口在同個網段的地址)
     Link Type: TransNet     #廣播網絡的類型
     Metric : 1
-------------------------下面是虛鏈路------------------------------
。。。。。

 
[R3]dis ospf lsdb network 13.0.0.1

     OSPF Process 100 with Router ID 3.3.3.3
                 Area: 0.0.0.0
         Link State Database 


  Type      : Network                              #LS type,Link State ID和Advertising Router的組合共同標識一條LSA。
  Ls id     : 13.0.0.1#DR接口的IP地址
  Adv rtr   : 1.1.1.1  #產生並宣告該lsa的路由器的router-id
  Ls age    : 72 
  Len       : 32 
  Options   :  E         #E表示可以接收外部路由
  seq#      : 80000002 
  chksum    : 0x66d0
  Net mask  : 255.255.255.0
  Priority  : Low
     Attached Router    1.1.1.1 #本區域中的設備的router-id
     Attached Router    3.3.3.3
一類二類LSA及區域內路由(1/2類LSA描述)
---------ospf區域內的metric值計算-------

ospf開銷計算公式:帶寬參考值/接口帶寬;向下取整,最小值為1
    缺省情況下,OSPF的帶寬參考值為100Mbit/s。
    bandwidth-reference     修改參考帶寬
    開銷的參考值要改,那么整個ospf的路由器開銷參考值都要改
    
Cost表示從一個端點到另一個端點的開銷,該參數可以在OSPF接口上配置,表示數據離開該接口(出接口)的開銷。(ospf只計算出接口cost,入接口無cost)


在ospf中,metric=cost
metric:路由算法確定到達目的地的最佳路徑的計量標准。
常用metric有:路徑長度、可靠性、延遲、帶寬、負載等。
在路徑長度這一類中,不同協議有不同標准。如:RIP依據跳數,OSPF依據cost,EIGRP主要依據帶寬K1和延時K3。
通常一個路由算法基於多個metric,並最終形成一個復合metric來作為選路標准。

注意:若p2p兩端的ip不在同一網段中,則到達對端ip時需要計算2倍的開銷


SPF算法
每個路由器計算以自己為根的最短路徑樹。
計算最短路徑樹的過程分為兩個階段:
第一階段,計算所有的Transit節點和P2P,包括路由器和Transit網段。(相當於畫骨架)
第二階段,計算Stub網段。(添加血肉,即實際網段,最終計算路由開銷)

stubnet參與cost計算,但是不能參與鏈路圖的繪制
廣播,p2p既參與cost計算,也參與繪制


看明白了,所謂spf算法,其實就是按照路由連接結構,以度量值為優先值讀取數據庫的做法,同時為深度優先。



---------ospf跨區域的metric值計算---------
1.先計算本區域內到達abr的metric值
2.再疊加3類lsa中的metric值
OSPF路由開銷計算(區域內、區域間、SPF算法)
區域邊界路由器(ABR)上有多個LSDB,ABR為每一個區域維護一個LSDB。
ABR將所連接的非骨干區域內的鏈路狀態信息抽象成路由信息,並發布到骨干區域中,由骨干區域進一步發布到其他非骨干區域中。
ABR也要將骨干區域的鏈路狀態信息抽象成路由信息,並發布到所連接的非骨干區域中。

為了避免區域間的環路,OSPF規定不允許直接在兩個非骨干區域之間發布路由信息,只允許在一個區域內部或者在骨干區域和非骨干區域之間發布路由信息
三類LSA(network summary LSA)由ABR產生,將非骨干區域的一類,二類LSA轉換而成,通告進骨干區域;同時ABR會將骨干區域的三類LSA繼續通告給非骨干區域


3類LSA在ABR上生成,發布到除本區域以外的區域;當3類LSA跨區域傳遞時,通告路由器將是另一個ABR,metric也會重新計算
OSPF的水平分割原則:ABR從非骨干區域接收的一類或二類LSA,會轉成三類LSA,該三類LSA不會再進入始發區域(防環)


骨干區域受水平分割的限制,從骨干區域傳出去的路由,既不會從本身ABR傳回LSA,也不會從其他ABR將LSA傳回骨干區域
非骨干區域則不一樣,從非骨干區域傳出去的路由,不會從自身ABR傳回LSA,但會從其他ABR傳回LSA

這種區域表現為:
    當骨干區域被分割,則2個骨干區域不會有對方的路由信息,因為無3類LSA
    當非骨干區域被分割,OSPF正常,相當於2個不同的非骨干區域


-----------------真假ABR------------

真假ABR的問題----滿足真ABR的條件:
    1、連接骨干區域和非骨干區域
    2、在骨干區域要有活動鄰接

真ABR從非骨干區域收到的三類LSA,只接收(LSDB中會出現),不選路(不加入路由表)
    真ABR從非骨干區域收到的三類LSA和真ABR自己產生的三類LSA還是有區別吧。。。
偽ABR(連接骨干區域和非骨干區域,但是在骨干區域沒有活動鄰接),例如鏈路中斷而造成的骨干區域被分割
假abrABR從非骨干區域收到的三類LSA,既接受,也選路




-----------------3類LSA描述------------

[Huawei]display ospf lsdb summary 12.0.0.0

     OSPF Process 100 with Router ID 4.4.4.4
                 Area: 0.0.0.0
         Link State Database 

                 Area: 0.0.0.10
         Link State Database 


  Type      : Sum-Net
  Ls id     : 12.0.0.0   #網絡前綴。不管實際鏈路層為廣播、環回口、點到點,三類匯總出的信息貌似都是一樣的。只有一點需要注意:環回口默認當做末節網絡宣告,不修改的話,掩碼為32位
  Adv rtr   : 4.4.4.4  
  Ls age    : 62 
  Len       : 28 
  Options   :  E  
  seq#      : 80000001 
  chksum    : 0x9b84
  Net mask  : 255.255.255.0
  Tos 0  metric: 1563

  Priority  : Low
三類LSA及區域間路由(ABR、真假ABR、3類LSA描述)
如果是單區域,可以配置為骨干區域,也可以配置為非骨干區域
如果是多區域,必須要配置一個骨干區域,其他非骨干區域應該要和骨干區域相連
非骨干區域必須要連接到骨干區域,實在不行的話,也要建立虛連接


虛鏈路是屬於骨干區域的
每個虛連接的端點都要計算兩個最短路徑樹,一個是本地最短路徑樹,而另一個是虛連接鄰居的最短路徑樹。
    1.最短路徑樹1----以自己為根
    2.最短路徑樹2---以虛連接鄰居為根
    3.虛連接是不能跨區域的
本端報文的目的IP地址:
    計算虛連接鄰居的最短路徑樹之后,在最短路徑樹上查找如何到達本地路由器(通過Router ID標識),即知曉了該虛連接鄰居在該最短路徑上的端口,即知曉了該IP。
    將該IP設置為本地路由器發送給虛連接鄰居的協議報文的目的IP地址。(所以區域內的鏈路變化可能會造成目的IP的變化)




虛連接的應用場景:
    1、非骨干區域沒有連接到區域0
    2、骨干區域被分割
    3、為了保證區域0的健壯性
    4、解決次優路徑
    5、用虛鏈接代替區域0(華為可以,思科的虛鏈路必須要連接到區域0)



虛連接的缺點:
 1、必需要手工指router ID,如果自動選舉router id ,重啟進程有可能會造成虛連接中斷
 2、不能匯總(使匯總配置失效)
 3、容易產生環路




虛鏈注意事項:配置虛鏈路要指peer 為對端的router id,ID與該設備有沒有該IP沒有任何關系,
             虛鏈接不能跨區域
             虛鏈接不能建立在stub 和nssa區域






#
ospf 10 router-id 2.2.2.2 

 area 0.0.0.20 
  network 23.1.1.2 0.0.0.0 
  vlink-peer 4.4.4.4                      指定虛連接的對端ID
           


[AR4]dis ospf vlink 

         OSPF Process 10 with Router ID 4.4.4.4
                 Virtual Links 

 Virtual-link Neighbor-id  -> 2.2.2.2, Neighbor-State: Full

 Interface: 34.1.1.4 (GigabitEthernet0/0/0)
 Cost: 2  State: P-2-P  Type: Virtual 
 Transit Area: 0.0.0.10 
 Timers: Hello 10 , Dead 40 , Retransmit 5 , Transmit Delay 1 
 GR State: Normal 
虛鏈路
3類LSA和5類LSA很相似
在跨區域傳遞時,3類LSA的通告路由器和metric都發生變化
但5類LSA的通告路由器和metric都不變,因為5類LSA的通告路由器始終是那個ASBR

4類lsa是由ABR產生的,所以引入外部路由的ASBR所在的區域是沒有4類LSA的。。。
4類LSA不能跨區域,而是重新生成一條


-----FA地址-----

FA地址作用:類似icmp重定向,解決次優路徑
計算外部路由時,如果五類LSA的FA地址不為0,那么計算該路由的依據FA地址進行選路;如果FA地址為0,計算該路由的下一跳依據ASBR


OISPF的五類LSA中,FA地址默認為0.0.0.0,攜帶FA地址的條件:
    1、該外部路由的下一跳地址所在網段的接口要發布到OSPF中,即該路由域內或域間可達
        域內可達的場景:類似icmp重定向,下一跳的設備沒跑ospf或者接口沒宣告進ospf中
        域間可達的場景:未知
    2、該接口沒有配置為靜默端口,或被動端口 即silent-interface 
    3、下一跳地址所在網段的接口類型不能是p2p或者P2MP


-------外部路由類型---------

ospf 10 router-id 5.5.5.5 
 import-route rip 1 type 1                      將RIP路由引入到OSPF,並設置類型為OE1,VRP中默認為OE2

OSPF共有兩類外部路由:
第一類外部路由的AS外部開銷值被認為和AS內部開銷值是同一數量級的,因此第一類外部路由的開銷值為AS內部開銷值(路由器到ASBR的開銷)與AS外部開銷值之和;
第二類外部路由的AS外部開銷值被認為遠大於AS內部開銷值,因此第二類外部路由的開銷值只是AS外部開銷值,忽略AS內部開銷值。

第一類外部路由永遠比第二類外部路由優先。
若某台ospf路由器到一個目標外部路由網段有2條OE2路由(即有2個ASBR引入了同一段外部路由),若外部開銷相等,還要比較內部開銷值;若內部開銷值不同,則優選一條開銷值低的

OSPF的路由優先級(好像沒怎么講。。。。)
域內(1-2)優先於 域間(三類) 外部(五類或七類)
域內〉域間〉OE1(ON1)〉OE2(ON2)





----------------4/5類LSA描述------------------

五類LSA
[AR5]dis ospf lsdb ase 6.6.6.6

     OSPF Process 10 with Router ID 5.5.5.5
         Link State Database


  Type      : External
  Ls id     : 6.6.6.6                                 網絡號
  Adv rtr   : 5.5.5.5                                 通告者(ASBR)
  Ls age    : 574 
  Len       : 36 
  Options   :  E  
  seq#      : 80000001 
  chksum    : 0x5351
  Net mask  : 255.255.255.255 
  TOS 0  Metric: 1                                     ASBR到達目標網絡的開銷
  E type    : 2                                                                              OE1 和OE2 ,默認是OE2
  Forwarding Address : 0.0.0.0                                                FA 地址
  Tag       : 1 
  Priority  : Low


四類LSA
<AR8>dis ospf lsdb asbr 5.5.5.5

     OSPF Process 10 with Router ID 8.8.8.8
                 Area: 0.0.0.10
         Link State Database 


  Type      : Sum-Asbr
  Ls id     : 5.5.5.5                                                              ASBR的Router ID  
  Adv rtr   : 2.2.2.2  
  Ls age    : 1362 
  Len       : 28 
  Options   :  E  
  seq#      : 80000002 
  chksum    : 0x4cf0
  Tos 0  metric: 2
四類五類LSA及外部路由(FA地址、外部路由、4/5類LSA描述)
Stub區域技術可以減少Stub區域內部路由器上LSDB的規模和對內存的需求。

NSSA區域可以過濾五類LSA,也過濾4類,本地會生成NSSA(七類LSA)
ABR從骨干區域收到五類LSA會過濾掉,向NSSA區域通告一條類型為七類LSA默認類路由

七類LSA經過ABR時,會轉成五類LSA(ADV會變成ABR的router id)
七轉五的規則:如果有多個ABR,會比較router id,越大越優(即默認情況下,若有nssa區域與骨干區域有多個ABR,只會生成一條5類LSA);但可以通過命令強制某個或多個ABR進行轉換:

虛連接不能跨越Stub area。ABR上可以將7類LSA轉換為5類LSA,所以不是只有ASBR才能生成5類LSA的


域內路由,域間路由,華為標識為ospf,外部路由標識為 O_ASE 
                    思科域 O   域間OIA          外部OASE


------NSSA區域FA地址------

NSSA區域中會始終攜帶FA地址
攜帶FA地址的條件:
    1、該外部路由的下一跳地址所在網段的接口要發布到OSPF中,即該路由域內或域間可達
        域內可達的場景:類似icmp重定向,下一跳的設備沒跑ospf或者接口沒宣告進ospf中
        域間可達的場景:未知
    2、該接口沒有配置為靜默端口,或被動端口 即silent-interface 
    3、下一跳地址所在網段的接口類型不能是p2p或者P2MP
如果滿足那三個條件FA地址是ASBR上外部路由的下一跳地址
如果不滿足那三個條件,FA地址是ASBR上某個接口的IP地址,優選環回口地址

------特殊區域E位、NP位------

stub區域和totally stub區域的option選項中的E比特位都為0,即不接收外部路由

                  E (1表示可以接受5類LSA)          NP(1表示可以接受7類LSA)
normal            1                                  0                               1/2/3/4/5類LSA
stub區域          0                                  0                               1/2/3類LSA
NSSA              0                                  1                               1/2/3/7類LSA
backbone          1                                  0   area ID 為0                  1/2/3/4/5類LSA
 

------特殊區域配置------


配置上的區別:
stub區域:
    區域內所有路由器配置:[Huawei-ospf-10-area-0.0.0.10]stub
totally stub區域:
    區域內(除ABR以外)所有路由器配置[Huawei-ospf-10-area-0.0.0.10]stub
    區域內ABR配置[Huawei-ospf-10-area-0.0.0.10]stub no-summary 
    
nssa區域:
    區域內所有路由器配置:[Huawei-ospf-10-area-0.0.0.20]nssa 
totally nssa區域:
    區域內(除ABR以外)所有路由器配置:[Huawei-ospf-10-area-0.0.0.20]nssa 
    區域內ABR配置:[Huawei-ospf-10-area-0.0.0.20]nssa no-summary

路由現象的區別:
stub區域:
    stub過濾4,5類LSA,生成一條3類的默認路由;stub區域內還保留有3類LSA;不能引入外部路由
    stub區域只有1、2、3類LSA
totally stub區域:
    完全stub區域則過濾3,4,5類LSA,只保留一條3類的默認路由;不能引入外部路由
    完全stub區域有1、2、3類LSA,但無描述其他區域的3類LSA
    
nssa區域:
    nssa過濾4,5類LSA,生成一條7類的默認路由指向ABR;nssa區域內還保留有3類LSA;
    同時nssa區域可以引入外部路由,生成7類LSA在本區域內傳遞
    ABR會將7類LSA轉換為5類LSA傳遞到其他區域
    nssa區域有1、2、3、7類LSA
    
totally nssa區域:
    完全nssa區域則過濾3,4,5類LSA,將3類LSA轉化為一條默認路由指向ABR,同時生成一條7類的默認路由指向ABR;
    同時完全nssa區域可以引入外部路由,生成7類LSA在本區域內傳遞
    ABR會將7類LSA轉換為5類LSA傳遞到其他區域
    完全nssa區域有1、2、3、7類LSA(此處的3類與nssa區域不一樣)





ospf 10 
 area 0.0.0.10 
    stub                           /將該區域配置為stub區域(末節區域),該命令需要在所有配置為stub區域的設備上配置

ospf 10
 area 0.0.0.10 
  stub no-summary                /將該區域配置為totally stub(完全末節區域),該命令只需要在ABR上配置,其他設備只需要配置為stub即可

 area 0.0.0.10 
  nssa no-summary            將該區域配置成完全nssa(過慮掉3類LSA       華為沒有totally nass的說法,只有相應的no-summary配置

nssa no-import-route           不向NSSA區域引入外部路由。該場景適用於即是ABR,也是ASBR的場景
nssa zero-address-forwarding   在NSSA區域的ABR上引入外部路由時,將生成的NSSA LSA的FA置為0.0.0.0。


[Huawei-ospf-10-area-0.0.0.10]nssa translator-always no-summary no-import-route suppress-forwarding-address
translator-always            在NSSA區域的ABR中,指定轉換路由器。允許將NSSA區域中的多個ABR配置成轉換路由器。
no-import-route            不向NSSA區域引入外部路由,自己既是ABR也是ASBR,做路由引入時,不向NSSA區域引入外部路由
no-summary               禁止ABR向NSSA區域內發送Summary LSAs。
suppress-forwarding-address        將通過該NSSA ABR轉換后生成的Type5 LSA的FA(Aaddress Forwarding)設置為0.0.0.0。
zero-address-forwarding             將外部路由引入NSSA區域時抑制FA地址




[AR1]dis ospf lsdb nssa 10.1.1.0

         OSPF Process 10 with Router ID 1.1.1.1
                         Area: 0.0.0.10
                 Link State Database 


  Type      : NSSA
  Ls id     : 10.1.1.0                        /網絡前綴
  Adv rtr   : 7.7.7.7                         /通告者ASBR
  Ls age    : 119 
  Len       : 36 
  Options   :  NP                           
  seq#      : 80000001 
  chksum    : 0xa5f3
  Net mask  : 255.255.255.0 
  TOS 0  Metric: 1000 
  E type    : 2
  Forwarding Address : 7.7.7.7                /在七類LSA中,始終會攜帶FA地址;通過命令可以置0
  Tag       : 1 
  Priority  : Low
OSPF特殊區域

 認證

OSPF的認證:在OSPF的頭部攜帶
    1、不認證 type =0
    2、簡單的明文認證type =1
    3、MD5 認證  type =2



ospf不區分區域或者接口認證,只要認證類型一致,密碼一致,鄰居就可以正常建立
如果在該區域下配置了認證,該區域下的所有接口在發送報文時都會攜帶認證字段
如果同時配置了區域認證和接口認證,接口認證優先
如果OSPF的Area0配置了認證,那么虛鏈接也需要配置認證,因為虛鏈接也屬於區域0

cipher、plain影響的只是本地存儲是否加密,默認為cipher本地加密
cipher、plain不一致並不影響認證

area 0.0.0.0 
 authentication-mode simple cipher                    /配置OSPF區域下的認證類型為簡單明文認證

interface GigabitEthernet0/0/0
 ip address 24.1.1.2 255.255.255.0 
 ospf authentication-mode simple ciphe               /配置OSPF接口 下的認證類型為簡單明文認證

 area 0.0.0.20 
  network 45.1.1.0 0.0.0.255 
  vlink-peer 4.4.4.4 simple cipher                 針對虛鏈路配置認證
認證

 OSPF默認路由、區域間路由匯總、OSPF路由過濾

OSPF默認路由的下放
1、ip route-static 0.0.0.0 0.0.0.0 56.1.1.6
   [AR5-ospf-10]default-route-advertise 
   
2、[AR5-ospf-10]default-route-advertise always                /無論本地是否有默認,始終會下發默認路由


NSSA區域ABR下放默認路由:
    1.ABR配置了NSSA就會下放一條包含默認路由的7類LSA
    2.ABR配置了nssa no-summary會同時下放一條包含默認路由的3類LSA和一條包含默認路由的7類LSA
NSSA區域ASBR下放默認路由
    1.ASBR配置nssa default-route-advertise。。。。。
    2.totally NSSA 區域,ASBR是無法下放默認路由,即使ASBR有默認路由也不會下放
OSPF默認路由
三類LSA的匯總

ospf 10 router-id 2.2.2.2 
 area 0.0.0.10 
  abr-summary 10.1.0.0 255.255.248.0                   三類LSA的匯總,只能在ABR上做,而且只能在起始區域做匯總

 area 0.0.0.10 
  abr-summary 10.1.0.0 255.255.248.0 cost 1000         對三類LSA匯總,並賦予Cost值
 area 0.0.0.10 
  abr-summary 10.1.0.0 255.255.248.0 not-advertise     對三類LSA匯總,不通告給任何鄰居
2、五類LSA的匯總
ospf 10 router-id 5.5.5.5 
 asbr-summary 192.168.0.0 255.255.248.0                 五類LSA的匯總,需要在ASBR上做

[R5-ospf-10]asbr-summary 192.168.0.0 255.255.248.0 cost 1999       對五類LSA進行匯總,並賦予Cost值
asbr-summary 192.168.0.0 255.255.248.0 not-advertise               對五類LSA進行匯總,不通告給任何鄰居
區域間路由匯總
引入路由時,可以使用xxxx調用acl,route-policy等進行路由過濾

OSPF的過濾:
總結:
    1. 在ospf進程中,使用filter-policy進行過濾,只過濾路由,不過濾LSA
        filter-policy:進程下的命令,所有路由器上都可以做;出方向可以敲上去,但是沒有任何效果,只能用入方向(加數據庫但是不加路由表)——同思科
    2. 在ospf進程中,使用filter-lsa-out可以直接過濾LSA
    3. 在ospf進程區域下配置,使用filter進行過濾,可以過濾3類LSA
        filter:區域下的命令,只能在ABR上做(不一定非要是路由起源的ABR)。與思科的不同之處:可以調用ACL或prefix,思科只能調用prefix
    4. 路由匯總時配置not-advertise也有過濾效果
      5. 接口上配置ospf filter-lsa-out,過濾LSA     




------------------------具體用法展示--------------------
1、使用filter-policy進行過濾
acl number 2001  
 rule 5 deny source 77.77.77.77 0 
 rule 10 permit 

ospf 10 
 filter-policy 2001 import            該方法只能過濾路由,不能過濾LSA,如果該命令配置在abr,匹配的路由不會引入進該區域
2、
ospf 10 

 filter-policy 2002 export            在出方向過濾路由該命令只能在ASBR上配置,將外部路由引入OSPF時進行過濾
acl number 2002  
 rule 5 deny source 172.16.0.0 0.0.3.255 
 rule 10 permit 
3、三類LSA的過濾
#
acl number 2001  
 rule 5 deny source 77.77.77.77 0 
 rule 10 permit
 area 0.0.0.10 
  filter 2001 export                   使用filter 過濾三 類LSA,該命令只能在abr 上配置        

 area 0.0.0.0 
  filter 2001 import 

filter  import/export只能在abr上做過濾

4、三類LSA過濾
 area 0.0.0.10 
  abr-summary 10.1.0.0 255.255.252.0 not-advertise  //將該路由匯總並過濾

5、五類LSA的過濾
ospf 10 
 asbr-summary 172.17.0.0 255.255.0.0 not-advertise

6、在接口下進行過濾
interface Serial1/0/0
 ospf filter-lsa-out ase                  過濾五類LSA
interface Serial1/0/0

 ospf filter-lsa-out summary              過濾三類LSA
interface Serial1/0/0
 ospf filter-lsa-out all              過濾所有LSA
OSPF路由過濾

 OSPF配置及常用命令

----------------------------------------常用命令-------------------------------------------

<POP-S12508-01>dis cu configuration ospf #其實配置是可以根據各個視圖進行查看的。。
[Huawei]dis ospf interface  #可以查看當前ospf宣告的端口有哪些,以及該端口的鏈路類型,DR/BDR
[Huawei]display ospf peer brief #查看鄰居表
[Huawei]display ospf lsdb#查看鏈路狀態數據庫
[Huawei]display ospf error interface g0/0/0#查看錯誤,方便排障,思科沒有相應的命令

[Huawei-GigabitEthernet0/0/0]ospf enable 10 area 10#另一種ospf端口宣告方式,不推薦
[Huawei-GigabitEthernet0/0/0]ospf timer hello 15                        修改OSPF 的Hello時間,如果Hello時間修改,Dead 時間會自動為Hello的4倍

<AR2>reset ospf process                  /重置OSPF進程
[AR1]dis ospf int                        //查看OSPF接口宣告狀態
[AR8]dis ospf peer brief                 //查看OSPF鄰居信息
display ospf lsdb                          //查看OSPF的鏈路狀態數據庫


--------------------------------------常見配置---------------------------------------------

把端口宣告進ospf進程有2種方式
    1.再ospf進程的area視圖宣告
    2.在設備端口視圖進行宣告

-----OSPF進程的配置------
Router ID:用於在自治系統中唯一標識一台運行OSPF的路由器的32位整數,每個運行OSPF的路由器都有一個
ospf 10 router-id 1.1.1.1#router-id可以在全局宣告,也可以在ospf進程中宣告;ospf的進程號只具有本地意義;進程優於全局
  bandwidth-reference 1000/修改OSPF的參考帶寬
 area 0.0.0.0
  network 13.0.0.1 0.0.0.0#建議精確宣告

-----端口關於OSPF的配置----

[Huawei-GigabitEthernet0/0/0]ospf dr-priority 0         #修改接口DR優先級,0不參選
[Huawei-GigabitEthernet0/0/0]ospf network-type p2p      #修改鏈路類型
[Huawei-GigabitEthernet0/0/0]ospf mtu-enable            #開啟MTU檢測
[Huawei-GigabitEthernet0/0/0]ospf timer hello 20 #修改Ospf的hello時間,MA網絡中hello默認10秒,dead時間會自動調整
[Huawei-GigabitEthernet0/0/0]ospf timer dead 50#若修改了dead時間,hello時間不會自動修改;MA網絡中默認為hello的4倍
[Huawei-GigabitEthernet0/0/0]ospf timer poll 40#在NBMA網絡上,當鄰居失效后,將按ospf timer poll設置的輪詢時間間隔定期地發送Hello報文。輪詢時間間隔值至少應為Hello報文時間間隔的4倍。
[Huawei-GigabitEthernet0/0/0]ospf timer retransmit 5#設置接口重傳LSA的時間間隔。
[Huawei-Serial0/0/0]ospf trans-delay 400#並不是延遲400秒發送,而是直接增加了age時間400秒
[Huawei-GigabitEthernet0/0/0]ospf p2mp-mask-ignore      #在點到多鏈路中忽略掩碼檢測
OSPF配置及常用命令

 故障排查思路

故障處理步驟:
    1.首先要確保IP地址配置正確dis ip int b
    2.檢查ospf鄰居關系dis ospf peer brief
    3.定位ospf鄰居故障dis ospf error(用戶試圖:reset ospf counter計數器清零)
        [AR1]dis ospf error interface GigabitEthernet 0/0/0
    4.查看配置
        dis cu conf ospf  //查看ospf部分的配置
        dis cu int g0/0/0  //查看接口下的配置


影響OSPF鄰接建立的因素:
    1、物理層故障(鏈路由故障)或者是協議故障(鏈路是UP的,協議是down的)
        ping一下對端地址是否正常
    2、RID沖突導致OSPF鄰居無法正常建立
        如果直連沖突,鄰居無法建立;
        如果在同一個區域,非直連,鄰居沒有問題,LSA會一直震盪,到一定時間,華為設備的OSPF會檢測到沖突,自動修改rid,即可正常
        如果不同一個區域,鄰居正常,路由正常,如果在沖突設備上引入外部路由,LSA會一直震盪,到一定時間,華為設備的OSPF會檢測到沖突,自動修改rid,即可正常
    3、接口是否宣告進OSPF
        display ospf interface                 查看接口的OSPF情況
    4、區域ID錯誤,導致OSPF鄰居無法建立:同一網段的所有端口應當配置在同一區域中
        display ospf interface    
    5、網絡類型不匹配會導致OSPF鄰居無法建立,網絡類型兩端要保持一致
    6、OSPF的認證類型不區配/OSPF的認證密碼不匹配
    7、Hello時間不一致,會導致鄰居無法建立;dead時間不一致,會導致鄰接無法建立
    8、配置了被動接口,會導致鄰居無法建立
    9、option選項不匹配也會導致鄰居無法建立-----E位,N/P位----配置了特殊區域時,區域內的所有路由器都要配置
    10、掩碼不匹配
        如果是ma網絡會檢測掩碼,鄰居無法正常建立
        如果是P2p,p2m不檢測,可以正常建立
    11、DR優先級都為0,會導致鄰接無法(full )建立,但是可以正常建立鄰居(two-way)
    12、MTU不一致,華為設備是不檢測MTU的
        如果配置了MTU檢測會卡在extart 或exchage狀態
        如果沒有開啟MTU檢查功能會卡在Loading狀態
    12、NBMA中環境中,沒有手工指定鄰居
    13、配置了ACL,對224.0.0.5  224.0.0.6做過濾,(協議號89——ACL)
故障排查思路

 其他

LSDB超載機制、stub-router、TAG


LSDB超載機制(限制LSA的另一種方式)

超載正是因為在引入了外部路由后,造成路由表過大產生超載

LSDB超載機制限制路由器所能學習的最大的5類LSA的條目數量,以防超載(超載后將不學習這些5類LSA了)
[Huawei-ospf-10]lsdb-overflow-limit 100


stub路由器特性
如果網絡中有某些低端設備要參與到ospf中,但又不希望將它參與到SPF計算中(因為其性能較差),可以設置這個特性
[Huawei-ospf-10]stub-router //末節路由器
stub特性會修改其1類LSA中通告出來的開銷值,這樣別人就不會從它這里走,從而到達影響路徑選擇的目的



使用import命令引入外部路由時,可以對路由打標記(TAG)
    ISIS協議中搜索tag
LSDB超載機制、stub-router、TAG

 故障案例

案例1:
學習目的:學會路由分析,真假ABR

ospf中,若骨干區域和非骨干區域同時存在多個ABR,則存在多條同一網段的3類LSA,因為每個ABR都會宣告一條
上面為骨干區域,下面為非骨干區域


測試目標為R4的兩個端口與R2的兩個端口互ping



情況1.當r1r2之間的鄰居down,端口狀態正常:[r1-ospf-100]silent-interface Ethernet 0/0/1
R4端口24.0.0.4 ping R1端口12.0.0.1  不通!     去向有路由,返向無路由,因為R1無返向路由;R3為真ABR,雖然有24.0.0.0段的3類LSA,但是不加載路由
R4端口24.0.0.4 ping R1端口13.0.0.1  不通!     去向無路由,因為R4為真ABR,雖然有13.0.0.0段的3類LSA,但是不加載路由;返向也無路由。
R4端口45.0.0.4 ping R1端口12.0.0.1  通! 
R4端口45.0.0.4 ping R1端口13.0.0.1  不通!     


情況2.當R1R2之間的鏈路故障,端口down
因為R4為真ABR,雖然有12.0.0.0,13.0.0.0網段的3類LSA,但不會加載路由
則4個方法都不通



情況3.當R2R4之間的鄰居故障,鏈路正常
此時R4為偽ABR,有12.0.0.0,13.0.0.0網段的3類LSA,同時會加載路由:所以R4到R1的兩個網段總是有路由的,且都是從3類LSA中學習到的
R1去往R4的24.0.0.0網段則是通過1類LSA學習到的,去往45.0.0.0網段則是通過3類LSA學習到的。


情況4.當R2R4之間的鏈路故障,端口down
R4為偽ABR,去往R1的2個網段都有路由;因為端口down了,此時24.0.0.0網段根本就沒有被宣告經ospf進程中。。。
R4端口24.0.0.4 ping R1端口12.0.0.1  不通!     
R4端口24.0.0.4 ping R1端口13.0.0.1  不通!     
R4端口45.0.0.4 ping R1端口12.0.0.1  通! 
R4端口45.0.0.4 ping R1端口13.0.0.1  通! 



這道題目還有一個變種
就是上面為area 10
下面為area 0
所以就相當於非骨干區域被分割,這種情況不會有問題。非骨干區域被分割,則相當於2個非骨干區域

真ABR從骨干區域接受的3類LSA,既接受也選路。
真ABR從非骨干區域收到的三類LSA,只接收(LSDB中會出現,不選路(不加入路由表)


滿足真正的ABR的和條件:1、連接骨干區域和非骨干區域
                      2、在骨干區域要有活動連接



1.首先設備是可以判斷出來自己是ABR
2.應該是ospf系統天生認為骨干區域唯一,所以ABR默認不使用3類LSA選路,因為ABR可以通過1,2類LSA進行SPF計算(猜測)
案例1

 

案例2:虛鏈路的應用場景---解決次優路徑
例如以上場景:當未配置虛連接時,AR21訪問上面的AR14時,路由到達AR20時,由於區域內路由優先於區域間路由(AR20從AR19學習到的是區域內路由,AR20從AR18上獲取的是3類LSA,即區域間路由),而選擇了開銷值更大的AR19為下一跳,此時產生了次優路徑



虛鏈路應用的其他4個場景就沒什么好說的了
案例2:虛鏈路的應用場景---解決次優路徑

案例3:虛鏈路環路場景1
R3作為ABR,在區域0有關於5.5.5.5的3類LSA,在區域1也有關於5.5.5.5的3類LSA

當R2要訪問R5:
    1.R2根據3類LSA,先去尋找ABR(R4),下一跳到達R1
    2.R1根據3類LSA,也去尋找ABR(R4),但由於是虛鏈路,此時實際下一跳到達R3
    3.R3雖然有多條關於5.5.5.5的3類LSA,不管如何,肯定也是去尋找ABR(R4),此時優化區域內路由,即下一跳為R2(環路產生)
    
肯定優選了區域0的3類LSA:1.骨干區域的路由優先,2.R3為真ABR,從非骨干區域接收的3類LSA只接收不選路

結論1:虛鏈路不是真正的隧道,實際走的還是IP轉發,所以R1雖然想到ABR(R4),但實際還是到了R3


R3上關於5.5.5.5的3類LSA共有3條
    1.區域0,由R4傳遞過來的3類LSA
    2.R4通告進區域1的3類LSA
    3.R3通告進區域1的3類LSA
    4.R1不會將該條3類LSA通告進區域1,因為水平分割
案例3:虛鏈路環路場景1
案例3:虛鏈路環路場景2
注意:上圖中有2條虛連接

AR6有去往11.11.11.11的3類LSA,通告路由器為AR10
AR9有去往11.11.11.11的3類LSA應該有3條
    R10作為ABR,向區域1通告3類LSA
    R7作為ABR,向區域2通告3類LSA
    因為R7R9在區域2做了虛連接,所以區域0也有1條3類LSA
    R7是ABR,但不會向區域1通告關於11.11.11.11的3類LSA,因為水平分割
AR8有去往11.11.11.11的3類LSA,通告路由器為AR7

當R6訪問11.11.11.11
    1.R6去往ABR(R10),下一跳為R7
    2.R7去往ABR(R10),但因為虛鏈路,實際下一跳為R9
    3.因為R7R9在區域2做了虛連接,R9認為自己在骨干區域到ABR(R10)可達,實際下一跳為R8(成環關鍵)
    4.R8下一跳到達R7
案例3:虛鏈路環路場景2

案例4:FA地址環路實驗

實驗前提:
    1.7轉5類由R3完成
        七轉五的規則:如果有多個ABR,會比較router id,越大越優(即默認情況下,若有nssa區域與骨干區域有多個ABR,只會生成一條5類LSA);但可以通過命令強制某個或多個ABR進行轉換:
    2.11.11.11.11作為外部路由引入;R2上存在了2條11.11.11.11的LSA,一條為R1生成的7類LSA,另一條為R3生成的5類LSA
    
正常情況下:
    1.R3將7類轉5類時,設置了FA地址12.0.0.1(FA地址域間可達場景);所以R4要訪問11.11.11.11時,即先去往FA地址12.0.0.1,根據關於12.0.0.0的3類LSA,下一跳到達R2
    2.R2此時有2條關於11.11.11.11的LSA,一條7類LSA,另一條R3宣告的5類LSA;但FA地址都設置為12.0.0.1。從路由表關於11.11.11.11的ospf 協議類型為O_NSSA來看,R2選擇了7類LSA??
    
當R3將7類轉5類時,抑制了FA地址,此時將會形成環路:
    1.當R4要訪問11.11.11.11時,通過5類LSA去訪問,因為FA地址為0,所以下一跳到達ABR,即到了R3
    2.R3根據7類LSA進行選路,路由指向R2
    3.(成環關鍵)R2存在2條關於11.11.11.11的LSA,一條為R7生成的7類LSA,表現為ON2,另一條為R3生成的5類LSA,表現為OE2;
    其實ON2和OE2是一樣的,因為外部開銷一致,則開始比較內部開銷;此時在區域0去往ABR的5類LSA的開銷小,所以R2區域11.11.11.11的下一跳為R4(成環)
案例4:FA地址環路實驗

關於R3上為什么只有1條1.1.1.1的lsa的解釋:
    因為虛鏈路是穿越area10到達R4的,同時因為水平分割,所以關於1.1.1.1的LSA不會回傳給R3






其他:
兩台ABR只有一台執行了匯總——可能引起路由環路問題
解決方法:兩台ABR都執行匯總
案例5

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM