OSPF Router-LSA詳解
幀中繼環境下DR和BDR的選舉
1、DR和BDR在同一網段而不是同一區域,因為在同一區域里面可能會存在多個DR,多個BDR;DR和BDR是接口的概念。


2、在NBMA網絡環境中一般是不能通過組播去建立鄰居關系的,在NBMA環境中如何通過組播去建立鄰居關系?
需要把網絡類型改成點到多點,會從接口發送組播報文,需要將PVC修改一下:
需要開啟偽廣播:
開啟brocast以后,幀中繼也是支持組播和廣播


加broadcast關鍵字,更改網絡類型,R2上可以有正常路由條目,和算法是有關系的。
或者把網絡類型改成點到多點:

改成點到多點網絡類型,是不會選舉DR和BDR的,只是通過單播的方式:點到點的方式去維護鄰居關系。

橫杠:表示接口的狀態機是點到點(網絡類型是點到多點):


點到多點、非廣播網(幀中繼、ATM非廣播網的 環境,低速鏈路)
網絡類型 hello timer dead timer DR/BDR選舉
廣播 10 40 有
非廣播網 30 120 有
點到點 10 40 無
點到多點 30 120 無
虛鏈路 無 無 無
點到多點非廣播(cisco) 30 120 無
結論:由於DR和BDR的選舉會造成DR會通告2類LSA,造成SPF算法錯誤 ,所以才引申出一個點到多點的網絡類型去解決這個問題。
*******************************************************
OSPF LSA(LSA在OSPF里面是一個最重要的內容)
LSA:鏈路狀態通告,不同的LSA通告不同的內容
LSDB:在鏈路狀態數據庫保存的是不同類型的LSA
有了LSA以后,才可以執行SPF算法,計算一個最短路徑




ASBR:將Rip、Eigrp重分發進OSPF的話,它的角色就是ASBR
ASBR:自治系統邊界路由器(如果將一些外部路由重分發進OSPF,這樣的設備就是ASBR)
ABR:區域邊界路由器,連接了多個區域
OSPF常用的LSA?(R/S)
1類LSA(Router LSA) :
由誰通告:所有配置OSPF的設備;
傳遞范圍:本區域內通告
2不會將 1的1類LSA傳遞到3中,但可以在本區域內傳遞的;最終,在這個區域的所有設備都會有這條1類LSA
通告的內容:通告所有宣告進OSPF的鏈路信息


【分解實驗】31:01
show ip ospf database //查看LSDB


Router Link states:1類LSA
ADV Router:通告路由器
Age: age時間-LSA的一個老化時間;LSA的 最大老化時間:3600秒;
Seq#序列號:0X 80 00 00 02 有4個字節,1個字節8個比特,2的32次方比特
checksum:對LSA的 一個校驗
Link count:在這個LSA里面,通告了幾條鏈路信息
show ip ospf database ? //查看各種LSA


為什么router-id不能重復?
因為LSA通告的時候,會標識這個LSA是由誰通告的,而標識者就是自己的Router-id。
show ip ospf database router 12.1.1.1 //加router參數,后見指定一個鏈路狀態ID,實際上這個鏈路狀態ID等於自己的Router-ID


LSA的頭部內容:


1類LSA的內容:


R1#show ip ospf database router 12.1.1.1
OSPF Router with ID (12.1.1.1) (Process ID 1)
Router Link States (Area 0)
LS age: 331 \\LSA的保存時間,老化時間為3600S, LSA的更新時間為1800S。
Options: (No TOS-capability, DC)
LS Type: Router Links \\ 1類LSA
Link State ID: 12.1.1.1 \\
1類LSA中LS ID等於發送者的Router-id
Advertising Router: 12.1.1.1 \\LSA通告者的Router-id(填充LSA通告者的Router-id)
LS Seq Number: 80000002 \\LSA序列號為32個bit,第一個比特代表符號(1=負數 0=整數),同時用到線性增長和棒棒糖算法。每個LSA更新序列號都會加1,這樣來表示每個LSA都是最新的
Checksum: 0xCF25
Length: 36
Number of Links: 1
Link connected to: a Transit Network 鏈路類型 -LINK類型
(
Link ID) Designated Router address: 12.1.1.2
(
Link Data) Router Interface address: 12.1.1.1
Number of TOS metrics: 0 服務類型
TOS 0 Metrics: 1
如何去比較一個LSA的新舊?(大體流程)
1.用LSU去通告LSA,判斷這個LSA是否在LSDB里面?
2.如果在的話,比較序列號,看序列號是否一致?
如果一致,Ignore LSA;如果 不一致,看這個序列號是否大於本地保存的一個LSA?如果 大於,接收,替換掉本地保存的LSA;如果不是,繼續將LSA發給我的鄰居
3.如果這條LSA不在LSDB里面,需要將這條LSA添加到LSDB,並發送LSACK,去泛洪LSA,給鄰居,后續去運行SPF算法做一個計算


1類LSA中其實用31bit去表示序列號,如果到達最大序列號,會重復執行最小序列號,開始重新執行算法,這種算法是棒棒糖算法


增長方法:線性增長
32個bit位里面,其中的31bit是代表序列號的,第一個bit位代表正負,1為負數,0為正數
最小的序列號十六進制數:0x80000001 = 1000 0000(80)
-0000 0001
-ffff ffff
00000000
7f ff ff ff
OSPF序列號增長需要100多年用完
LSA序列號用到兩個算法:(1)線性增長 (2)棒棒糖算法
checksum:對LSA做一個哈希,保證LSA的可靠性,防止竄改
鏈路類型有4種:
LINK類型 LINK-ID LINK-DATA
Transit DR接口IP地址 本接口IP地址
Poinit-to-point(P2P) 鄰居的Router-id 本接口IP地址
Stubnet 網絡前綴地址 掩碼地址
Virtul-link 虛鏈路 鄰居的Router-id MIB的接口ID(本接口IP地址)
//看OSPF里面的LSU報文
Do Not Age:如果這個比特位置位,1,這個LSA永遠不老化
Flags:只有在routerLSA里面才包含,如何知道網絡中是 虛鏈路/ASBR/ABR - V / E /B


注:在Router-LSA中包含3個flag位。
1、Vbit 標識虛鏈路
2、Ebit 標識是ASBR
3、Bbit 標識是ABR


在OSPF中的序列號如何判斷LSA的新舊?
(
收到一條LSA之后需要和我的LSA做個比對,用新的LSA去代替舊LSA)
1、比較序列號,序列號越大越新。
2、如果序列號一樣,比較checksum值,越大越新。
3、如果checksum一樣,比較LSA AGE,如果LSA AGE等於MAX AGE(3600)為最新。
說明這條LSA是需要馬上被老化掉的
4、如果LSA AGE不等於MAX AGE,需要運行Maxage diff算法,比較接收到的LSA和本地保存的LSA的AGE時間差,如果時間差大於15分鍾,LSA AGE越小越新,如果小於15分鍾則認為是一樣的,忽略。


1.R4轉發時延設為500s,經過R2加500,經過R3加500s,變為1000s
,約等於16分鍾
2.R3到R4的時間1000多s,而R4到R3約為2秒
3.現在LSA age> max age 15分鍾,R4到R3的LSA會變為新的替換掉R3到R4的 LSA
【實驗演示】1:21
2類LSA(Network LSA):
3類LSA(Network summary LSA):
4類LSA(ASBR summary LSA):
5類LSA (AS External LSA):AS外部的LSA
6類LSA:組播的LSA,用於MSPF
7類LSA(NSSA LSA):
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">