OSPF筆記


一、OSPF

  • Open Shortest Path First  開放式最短路徑優先;屬於鏈路狀態路由協議
  • OSPF被IP協議封裝,工作在網絡層之上的一種路由協議,協議號為89
  • OSPF路由信息傳遞與路由計算分離,基於SPF算法,以累計鏈路開銷作為選路參考值
  • OSPF四張表:鄰居表、鏈路狀態數據庫、OSPF路由表、全局路由表

二、OSPF報頭

  • Version(1字節):版本v2代表v4網絡,v3代表v6網絡
  • Type(1字節):類型;ospf報文的類型;一共五種(看下面OSPF報文,type1-5順序)
  • Pack Length(2字節):總長度;包括報文頭部+數據
  • Router ID(4字節):發送該報文的路由器標識(router id)
  • Area ID(4字節):發送該報文的所屬區域
  • checksum(2字節):校驗和,包含了除認證字段的整個報文的校驗和
  • Auth Type(2字節):驗證類型;0:驗證 1:簡單驗證 2:MD5認證
  • Authentication(8字節):驗證信息;0代表沒有 1為明文密碼 2為key id

三、OSPF報文

  1. hello 報文:發現和建立鄰居關系
    1. 鄰居發現:自動發現鄰居路由器
    2. 鄰居建立:完成hello報文中的參數協商,建立鄰居關系
    3. 鄰居保持:通過keepalive機制,檢測鄰居運行狀態
    4. hello報文:

        

  2. DD 建立鄰接關系:交互鏈路狀態數據庫摘要(DD報文兩種情況:不攜帶LSA摘要信息的DD報文和攜帶LS摘要信息的DD報文)
  3. LSR 鏈路狀態請求:請求特定的鏈路狀態信息
  4. LSU 鏈路狀態更新:發送詳細的鏈路狀態信息(擁有完成LSA)
  5. LACK 鏈路狀態確認:發送確認報文
HELLO報文中影響鄰居關系的因素:
  • router id(不沖突)
  • area id(一致)
  • 認證類型(一致)
  • 認證數據(一致)
  • Hello時間間隔(一致)
  • Hello失效時間(一致)
  • N bit和E bit取值(一致)
DD、LSR、LSU、LSAck與LSA的關系:

  DD報文:攜帶LSDB所有LSA的摘要信息;摘要信息包括:type、Ls id、Advertising Router、ls age(老化時間)、seq(序列號)、chksum(校驗和)等信息

  

  LSR:攜帶LSA的標識;type、Ls id、Advertising Router

  

  LSU:攜帶LSA的頭部以及鏈路狀態

  

  LACK:包含LSA摘要信息,跟DD報文一樣

  

OSPF協議router ID如何確認

  • 管理員手動配置ospf的router id優先級最高
  • 默認使用路由器的全局router id;全局router id:設備第一個配置的IP成為router ID;手動配置全局ID:router id X.X.X.X 需要重啟生效
  • 手動配置---->loopback最大--->物理接口最大/或者第二大(一般思科遵循此選舉辦法,華為設備建議手動配置)

四、OSPF工作狀態

  • dowm:
    • 鄰居初始狀態;表示沒有從鄰居收到任何信息,此狀態下可以發送hello報文,發送間隔為poll interval通常和router dead interval間隔相同
  • attempt:
    • 此狀態只有在NBMA網絡中存在。
  • init:
    • 此狀態已經從鄰居收到hello報文,但hello報文中不包含自己route id,將鄰居的router id添加到hello報文中再發送出去。
  • to-way:
    • 收到含有自己router id的hello包進入2-way狀態,建立鄰接關系;根據網絡類型選舉DR/BDR
  • ex-start:
    • 這是形成鄰接關系的第一個步驟;進入此狀態向鄰居發送DD報文(不攜帶LSA摘要信息的DD報文)主要確認主從路由器(router id較大稱為主master)
    • 為什么要選舉主從路由器;通過DD報文序列號+1機制實現隱式確認,保障數據可靠傳輸; 
    • I(init)置1,表示第一個DD報文     M(more)置1表示后續還有其他DD報文     MS(master)置1表示自己為master
  • ex-change
    • 將自身LSDB中所有LSA信息摘要信息通過DD報文進行交換,實現LSDB同步;(DD報文好處:傳遞的是鄰居之間沒有的LSA頭部信息,減少無用的LSA傳遞)
    • LSDB同步:就是鄰居之間最終擁有相同的LSA的信息以及LSA的新舊程度
    • 摘要信息用途:
      • 標識唯一條LSA(由type、ls id、adv rtr三個參數標識一條LSA)
      • 用於判斷LSA的新舊(seq(序列號)、chksum(校驗和)、ls age(老化時間)三個參數判斷新舊程度)
    •   

  • loading
    • 相互發送LSR報文請求LSA,發送LS Updata通告LSA(交互LSR和LSU)
  • full
    • 運行SPF算法,LSDB已經同步完成(主路由器優先進入full狀態)

   

  OSPF 鄰居建立和LSDB同步過程:

  
   判斷一條LSA新舊:
  • Seq(序列號)越大的越新,起始值:0x80000001  最大值:0x7fffffff
  • 如果seq相同則比較chksum(檢驗和)越大越新
  • chksum相同,則判斷LS age(老化時間)是否等於3600s,等於3600s最新
  • 如果LS age不等於3600s則判斷ls age差值,如果大於900s則LS age小的最新,小於900s則認為相同
  • DR/BDR選舉
    • 根據優先級選舉DR/BDR;優先級高的優先;當優先級相同時router id大的優先;
    • 接口優先級0-255,0代表不選舉,默認是1,不具有搶占性;
    • 每條廣播/NBMA鏈路都必須選舉一個DR,默認會選舉BDR路由器(可選),鏈路上其他路由器稱為Drother
    • DR/BDR/Drother之間保持full的鄰接關系需要進行LSDB同步;Drother之間保持tao-way的鄰居關系,不進行LSDB同步;
    • DR/BDR 監聽:224.0.0.5和224.0.0.6        Drother監聽:224.0.0.5
  • 鏈路總結:
  • 網絡類型
    hello時間
    特點
    缺省選擇
    備注
    p2p
    10s
    以組播形式發送hello報文、DD報文、LSR報文、LSU報文、LSAck報文
    當鏈路層協議是ppp、hdlc、lapb時,缺省情況下ospf網絡類型是P2P
     不選舉DR/BDR
    NBMA
    30s
    以單播形式發送hello報文、DD報文、LSR報文、LSU報文、LSAck報文、NBMA網絡必須是全連通的,
    即網絡中任意兩台路由器之間必須直連可達
    當鏈路層協議是ATM時,缺省情況下ospf認為網絡類型是NBMA
      
    DR與BDR/DRoute建立鄰接關系
    BDR與DR/DRoute建立鄰接關系
    DRoute之間只建立鄰居關系
    廣播(broadcast)
    10s
    通常以組播形式發送hello報文、LSU報文和LSAck報文,以單播形式發送DD報文和LSR報文
    當鏈路層協議是ethernel、FDDI時,缺省情況下ospf認為網絡類型是broadcast
    P2MP
    30s
    以組播形式發送hello報文、以單播形式發送DD報文、LSR報文、LSU報文、LSAck報文、P2MP網絡中掩碼長度必須一致
    必須手動指定
     不選舉DR/BDR

五、LSA

  • LSA(link state Advertisement)是路由器之間鏈路狀態信息的載體,LSA是LSDB最小的組成單位,也就是說LSDB是由一條條LSA構成的;一共6種LSA。
  • LS age(16位):此字段表示LSA生存時間,單位是秒
  • LS type(8位):此字段標識了LSA的格式和功能,常用的LSA類型有五種
  • Link State ID(32位):此字段是該LSA所描述的的那部分鏈路的標識,例如:router id等
  • Advertising Router(32位):此字段是產生此LSA的路由器的rouer ID
  • LS sequence number(32位):此字段用於檢測舊的和重復的LSA;序列號越大代表LSA越新。
  • LSA checksum(16位):校驗和
  • Length(16位):LSA總長度
  • 1800s 更新一次   3600s失效

鏈路狀態信息

  • 什么是鏈路?路由器之間相連的鏈路
  • 什么是狀態?鏈路上各種網絡參數在某一個時刻的取值
  • 鏈路的類型、接口IP地址及掩碼、鏈路上所連接的鄰居路由器、鏈路的帶寬(開銷 cost)

  • 1類LSA
    • router lsa
    • 每個ospf路由器都會產生,描述路由器自身加入到ospf進程的直連鏈路的鏈路狀態;只在區域泛洪(右圖是建立鄰居關系后)
    • 1類LSA的鏈路狀態由4種組成link type來進行描述;Stubnet(描述自身直連的網絡號/掩碼)、p-to-p(描述點對點、點對多點鏈路鄰居)、transnet(描述廣播/NBMA鏈路上的鄰居)、virtual(描述虛鏈路)
    • 注意:廣播/NBMA 網絡里會出現一個偽節點概念,廣播網絡里ospf在計算拓撲的時候都把當成與偽節點相連,依次來計算路由拓撲。
    • 下面三張分別描述:stubnet、p-to-p、transnet

       

        

  • 2類LSA
    • network lsa
    • 由DR路由產生,描述DR周邊網絡環境(包括拓撲和網絡號),只在本區域泛洪
    • (transNet:用於描述連接偽節點的信息,type2 LSA其實描述了偽節點連接的哪些節點)
  • 3類LSA
    • network summary lsa
    • 網絡匯總lsa,由ABR路由器產生,將區域1、2類LSA做歸納,生成3類LSA泛洪到其他區域中。
    • 一條三類LSA只能傳遞一條路由;(如果1類2類LSA很多那么生成的三類LSA路由也會很多)
  • 4類LSA
    • asbr summary lsa
    • 由ABR路由器產生,描述ASBR路由所在區域的位置  
  • 5類LSA
    • AS external LSA 自治系統外部LSA(外部引入路由)由ASBR路由器產生,用來通告網絡去往其他路由協議的LSA。
    • 外部路由通過重分布引入到ospf路由域中,以5類LSA進入ospf區域。引入外部路由時默認是type2的路由;
    • type 1:路由表始終顯示引入時開銷和AS內部路徑開銷之和
      • 同類型的路由,選擇cost小的,如果cost值相同則負載分擔,路由意義上選路方式,OSPF根據SPF算法自動選路;
    • type2:引入外部路由時在路由表中忽略AS內部路徑的開銷,僅顯示引入的開銷,cost默認是1;
      • 同類型的路由,優先比較引入時的開銷,引入時的開銷值小的優先,如果引入時開銷相同則比較AS內部路徑開銷,即選擇到ASBR近的優先,如果內部開銷也相同則負載分擔;管理意義上的選路方式,人為可控。
  • 7類LSA
    • nssa external lsa
    • 由NSSA區域中的ABR/ASBR產生,描述到達外部網絡的信息
  • 總結:

  

六、OSPF區域

  • OSPF將網絡划分成兩層區域結構
    • 一層為骨干區域(area 0)
    • 一層為非骨干區域(非area 0)
    • 非骨干區域一定要和骨干區域相連
  • OSPF路由類型:
    • 區域內路由:由1類和2類LSA產生
      • 把整個OSPF的一棵大樹划分成幾個小樹;1類和2類LSA各自在樹內的計算路由
    • 區域間路由:由3類LSA產生          
      • 把各自樹內計算出的路由通過轉換成三類LSA在區域間傳遞,一條區域內路由只能轉換成一條區域間的路由
      • ABR將自身直連區域內路由轉化其他直連區域3類LSA,完成區域間路由計算;ABR將區域0中的3類LSA轉換成其他非骨干區域的3類
      • 區域間路由的計算方法:cost=自身到ABR的開銷+ABR到路由的開銷
    • 區域外路由:由5類和7類LSA產生

ABR:連接多個區域並且至少一個活動的接口屬於區域0的路由器

IR:區域顳部路由器,所有接口都屬於同一個區域的路由器

ASBR:連接其他自治系統的路由器稱為ASBR

 

虛鏈路介紹:

  • 主要創建vlink的路由器都是ABR
  • vlink永遠屬於區域0的鏈路
  • vlink只能在非骨干區域創建,只能跨越一個非骨干區域
  • 特使區域不能創建vlink
  • 用於修復不連續的骨干區域
  • 將非骨干區域和骨干區域相連起來
  • 可以作為區域0的備用路線,能不用就不用
  • 配置:骨干區域配置vlink-peer X.X.X.X:非骨干區域的IP地址  非骨干區域:vlink-peer X.X.X.X:骨干區域IP地址   

 

特殊區域介紹:

  • stub區域(末節區域)
    • 不允許5類LSA在該區域泛洪,不會產生4類LSA;
    • ABR為該區域產生一條3類LSA的缺省路由用於訪問外部路由;區域試圖下:default-cost修改缺省路由的開銷
    • 通過3類的LSA用於訪問區域間的路由;
    • 該區域的所有路由器都要配置成末節區域
  • totally stub(完全末節區域)
    • 不允許5類LSA在該區域泛洪,不產生3類和4類lsa
    • 該區域的ABR產生一條3類的LSA用於訪問區域間路由和外部路由
    • 該區域的ABR路由配置成完全末節區域,IR路由器配置成末節區域
    • 和ASBR在同一個區域路由如何計算外部路由?
      • Cost=自身到ASBR的開銷+引入時的開銷(5類)    next-hop=自身到asbr的下一跳
    • 和ASBR不在同一個區域的路由器如何計算外部路由?
      • Cost=自身到ABR的開銷+ABR到ASBR的開銷(4類)+引入時的開銷(5類)   next-hop=自身到asbr的下一跳
  • nssa
    • 允許本區域ASBR引入外部路由,以7類LSA形式引入;
    • 只能在本區域泛洪,不能在其他區域泛洪
    • 不允許其他區域的ASBR產生的5類LSA泛洪,不產生4類LSA
    • NSSA區域的ABR產生一條7類缺省路由,用於訪問其他區域引入外部路由
    • NSSA區域ABR將7類LSA轉成5類LSA泛洪到其他區域,如果有多個ABR則router ID大的ABR去做7轉5;nssa translator-always 這條命令可以指定某個ABR做7轉5;
  • totally nssa
    • 允許本區域的ASBR引入外部路由,以7類的LSA方式引入
    • 不允許其他ASBR產生的5類LSA泛洪,不產生4類LSA
    • 不產生3類lsa,由NSSA區域的ABR產生一條3類LSA的缺省路由,用於訪問區域間路由
    • NSSA區域的ABR產生一條7類LSA的缺省路由,用於訪問其他區域引入的外部路由(存在兩條缺省路由,一條3類,一條7類,優選3類的LSA的缺省路由)
    • 7類LSA只能在NSSA區域泛洪,不能泛洪到其他區域
    • NSSA區域的ABR將7類LSA轉成5類LSA泛洪到其他區域,如果有多個ABR,則router id大的ABR去做7轉5;nssa translator-always
  • 總結:
  • 特點
    stub 區域
    totally stub區域
    nssa區域
    totall nssa區域
    是否必須位於AS邊緣
    ABR數量
    1個
    1個
    1個或者多個
    1個或者多個
    是否允許有ASBR
    不允許
    不允許
    允許一個或者多個
    允許一個或者多個
    是否允許虛連接穿過
    不允許
    不允許
    不允許
    不允許
    type 3 LSA
    允許
    不允許
    允許
    不允許
    type 4 LSA
    type 5 LSA
    不允許
    不允許
    不允許
    不允許
    type 7 LSA
    不允許
    不允許
    允許
    不允許
    缺省路由
    自動生成一條默認路由;下一跳是所在區域內的ABR路由器接口地址;
    自動生成一條默認路由;下一跳是所在區域內的ABR路由器接口地址;
    自動生成一條默認路由;下一跳是所在區域內的ABR路由器接口地址;
    自動生成兩條默認路由;一條3類,一條7類
    允許的LSA
    type 1 LSA
    type 2 LSA
    type 3 LSA
    type 1 LSA
    type 2 LSA
    type 1 LSA
    type 2 LSA
    type 3 LSA
    type 7 LSA
    type 1 LSA
    type 2 LSA
    type 7 LSA
    不允許的LSA
    type 4 LSA
    type 5 LSA
    type 7 LSA
    type 3 LSA
    type 4 LSA
    type 5 LSA
    type 7 LSA
    type 4 LSA
    type 5 LSA
    type 3 LSA
    type 4 4 LSA
    type 5 LSA

七、路由匯總

  • 區域間路由匯總
    • 只能在ABR上執行。只能對直連區域的路由匯總(即對區域內的路由)
    • 匯總路由的開銷默認繼承明細路由中開銷最大的值
    • 明細路由全部失效,匯總路由也會失效(哪怕明細路由只有一條可達,匯總路由也不會失效)
    • 如果區域有多個ABR,所有ABR都要執行匯總,否則失去匯總的效果
  • 外部路由匯總
    • 只能在ASBR上執行
    • 匯總路由開銷類型繼承明細路由的開銷類型,如果明細路由開銷類型不一致則默認為type2
    • NSSA區域的外部路由匯總可以在ASBR上執行,也可以再NSSA區域的ABR執行

八、路由過濾

  • 過濾工具filter-policy 
  • import方向:對接收路由設置過濾策略,只有通過過濾策略的路由才被添加到路由表中,但不影響對外發布路由。ospf路由信息記錄在lsdb中,實際上只是對ospf計算出來的路由進行過濾,不能對LSA過濾
  • export方向:通過引入外部路由后通過filter-policy對引入路由發布時進行過濾,將滿足條件的外部路由轉換為type5、type7發布出去。先引入路由,再過濾。filete-policy acl name filter-export

九、OSPF防環

  • 區域內
    • 在區域內每個路由器都維護一個獨立的lsdb,根據SPF算法得出最優路由,算法本身防環。
  • 區域間:
    • 所有非骨干區域必須和骨干區域相連,區域間路由需要通過骨干區域中轉。
    • ABR只能將本區域內部路由注入到area 0(ABR存在其他區域的路由不會注入到area0中)但可以將區域內部路由以及區域間的路由注入到非0區域
    • ABR從非骨干區域收到type-3LSA不能用於區域間路由計算
    • ABR不會將area 0內部路由信息type-3再注入該區域中(情景:三角網絡架構其中路由器1、2為區域0,與另一台路由器3非0區域相連,路由1通過路由器3把type-3路由信息傳遞到了路由器2,路由器2不會把該type-3路由信息再此傳遞給路由器1)
    區域外(mpls)
    • ospf通過down位防環,3類LSA DN比特不僅可以防環還可以優化數據轉發;DOWN比特在把多協議BGP引入到ospf時3類LSA自動添加,其他PE設備如果檢測到3類LSA中down位 置位就拒絕再引回BGP(自動完成)
    • ospf 通過tag防環,主要針對5類和7類;在MPLS VPN環境下,會把BGP的AS號放到5、7類的tag字段,其他PE設備檢測到TAG位和自身的AS號相同就拒絕路由。display ospf lsdb ase 可以看到TAG 值
OSPF 不能建立原因:
  1. 路由器接口未參與OSPF 進程
  2. 網絡一二層故障
  3. 路由器接口被設置為passive接口
  4. Hello 包被acl 攔截
  5. MA 網絡子網掩碼不匹配
  6. Hello包時間間隔不匹配
  7. 認證類型和認證密鑰不匹配
  8. 區域ID 和 router id
  9. Stub/NSSA 區域選項不匹配
  10. P2MP 中FR沒有配置broadcast
  11. 企圖用接口輔助地址建立鄰居

 


免責聲明!

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



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