OSPF邻接关系建立完成后,会根据通告的信息计算路由信息及拓扑信息。
一条LSU报文中可以携带很多条LSA报文。 不同类型的LSA具有相同的报文头部。
::: tip LSA三要素:
- LS type:表明LSA的种类。
- Link state ID(描述发送者的状态):发送方RID。
- Advertinsing Route(通告路由器):发送方RID。
上述三条表明唯一的一条LSA。 :::
LSA报文头部
上图中信息分为两类,一类表示是唯一LSA,另一类表示LSA的新旧。 第一类:
- LS type:表示路由是区域内、区域间、区域外。
- Link state ID:不同LS Type的LSA的Link state ID不同。
- Advertising Router:产生该LSA的路由器的Router ID。
第二类:
- LS Age:链路状态老化时间,表示LSA已经生存的时间,范围是0-3600s,时间值是递增的,1800s更新,更新的设备不在了,LS Age3600s老化。
- LS Sequence Number:链路状态序列号,每一个LSA都会带有一个序列号的标识,序列号依次增加,即序列号大的LSA是新的。
- LS Checksum:校验和,检验数据的完整。 ::: tip
- LSDB中的每一条LSA都是唯一的,如果有相同的,数据库只保留最新的。*
:::
LSA新旧比较规则:
- 先比较序列号,值越大越优。
- 再比较校验和,值越大越优。
- 最后比较时间值: 如果LSA的时间值LS Age差值<=900,则保留本地的LSA。 如果LSA的时间值LS Age差值>900,则优选LS age值小的LSA。
length:表明LSA的长度 option:功能选项位,表明LSA的特定功能。
LSA三要素:
LSA分类:
::: tip 6类LSA为组播,是淘汰技术。 :::
区域内
- router LSA:1类LSA,每台设备都会通告,描述自身的链路状态(拓扑和路由信息),在区域内进行泛洪。
1类LSA谁产生谁通告。
1类LSA中存在特定的字段flag:保留位、V bit、E bit、B bit。(暂只做了解) V (Virtual Link ) :如果产生此LSA的路由器是虚连接的端点,则置为1。 E (External ): 如果产生此LSA的路由器是ASBR,则置为1。 B (Border ):如果产生此LSA的路由器是ABR,则置为1。 links :LSA中的Link(链路)数量。Router LSA使用Link来承载路由器直连接口的信息。
display ospf brief查看DR和BDR: 查看上图中1类LSA的明细信息: 上图中,LS id:描述谁就是谁的RID。Adv rtr:谁产生就是谁的RID。
[AR1]int LoopBack 0
[AR1-LoopBack0]ip ad 1.1.1.1 32
[AR1-LoopBack0]ospf enable area 0 ospf中宣告环回口
[AR1-LoopBack0]dis th
[V200R003C00]
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
ospf enable 1 area 0.0.0.0
#
return
将OSPF网络类型由默认的广播改为P2P,观察第三种链路状态:
[AR1-GigabitEthernet0/0/0]ospf network-type p2p
[AR2-GigabitEthernet0/0/0]ospf network-type p2p
如上,将网络类型改为P2P后,P2P网络会将自身的物理接口也作为StubNet进行描述,相当于将直连看成自身的末节网络节点。
::: tip
P2P网络中没有DR、BDR的概念,找到邻居即拓扑描述完成。中间互联的网段每一台单独的设备都会进行描述,如下:
:::
::: warning
链路状态包括链路的类型、链路的地址(IP地址)、链路的开销。
链路状态有四种,每种链路状态的类型都相同,但每种状态同一类型的值都不同。
:::
链路状态的类型:
1.TransNet:广播型网络的链路描述,拓扑信息。
* Link ID: 10.1.12.2 描述伪节点设备的RID(即DR设备的接口IP地址,DR充当伪节点)
Data : 10.1.12.1 去往目的设备的出接口IP地址
Link Type: TransNet
Metric : 1 开销
2.StubNet:末节网络的链路描述,路由信息
* Link ID: 1.1.1.1 描述了自身的末节网络路由(如此处环回口)
Data : 255.255.255.255 末节网络对应的掩码
Link Type: StubNet
Metric : 0 开销
Priority : Medium 路由信息的优先级(会优先进行SPF计算)
3.P2P:P2P网络的链路描述,拓扑信息
* Link ID: 10.2.2.2 对端邻居的RID
Data : 10.1.12.1 去往P2P邻居的接口IP地址
Link Type: P-2-P
Metric : 1 P2P开销值为48,此处为1原因网络类型是广播改P2P
4.虚链路
* Link ID:虚链路的邻居RID
Data:去往虚链路邻居的出接口IP地址
Type:Viktual
Metric : 1
虚链路目前暂不涉及
::: tip 路由信息是地址/网络号加掩码。 拓扑信息一般用IP或者router-id标识。 判断链路状态时,只有路由信息才有优先级,其他情况不适用。 ::: ::: warning LSA收敛优先级顺序:critical>high>medium>low,为加速处理高优先级的LSA,泛洪时按照优先级将相应的LSA放在对应critical、high、medium、low队列中。
缺省情况下,公网OSPF主机路由的收敛优先级为medium,直连路由的收敛优先级为high,静态路由的收敛优先级为medium,其他协议(BGP、RIP)路由收敛优先级为low。
公网中OSPF 32位主机路由统标识为medium。 ::: 2. network LSA:2类LSA(每一个广播型网络的内容介绍)。 每一个广播网络都会产生描述广播型网络的内容(拓扑和路由信息)并在区域内泛洪。 2类LSA由广播型网络中的伪节点(DR设备)通告。 修改接口IP并重新通告,如下: 将OSPF的网络类型改回广播,邻居关系建立完成后,此时DR为AR2: 出现2类LSA: 上图中,1类LSA的LinkState ID为每台设置自身的RID;2类LSA的LinkState ID为伪节点的RID。 查看类型2的明细信息: 上图中Ls id和Netmask组合成网段,Attached Router表示连接的设备为10.1.1.2和10.1.1.1。
Link State ID :DR的接口IP地址。 Network Mask:MA网络的子网掩码。 Attached Router:连接到该MA网络的路由器的Router-ID(与该DR建立了邻接关系的邻居的Router-ID,以及DR自己的Router-ID),如果有多台路由器接入该MA网络,则使用多个字段描述。
::: warning 1类LSA和2类LSA区别: | |Ls id|Adv rtr| |-|-|-| |1类LSA|设备自身RID|通告者自身RID| |2类LSA|伪节点RID|DR的RID| :::
OSPF头部信息:
同一链路Area ID不一致:
[AR1]dis ospf error interface GigabitEthernet 0/0/0 查看OSPF接口通告的报文是否存在错误(计数报错)
如上,为0表示没有错误,4表示出现错误:区域ID错误。
同一路由器Area ID不一致:
如上,同一个链路两端的区域必须相同,否则无法建立邻居关系,即区域只在一条链路上影响邻居建立。
同一链路Source OSPF Router(设备RID)相同:
如上,出现Route ID报错。 ::: warning 多次查询如果计数没有增加,表示错误不存在;如果计数增加,表示错误一直存在。建议多查几次以确认错误存在。 ::: 更改RID并重启OSPF进程后邻居建立成功:
[AR2]ospf router-id 10.2.2.2
<AR2>reset ospf process
错误记录被刷新,变为全0: ::: tip 如果计数报错是全0的,则邻居关系正常或设备间没有hello报文交互。 :::
同一网络Source OSPF Router(设备RID)相同:
上图中框选的序列号一直在变化,原因是AR1和AR4使用相同的LSA通告,AR2收到不断更新的LSA后,删除旧的LSA,只保留最新的。 流程大致为:此时AR4发来的LSA更新,AR2收到后将这个LSA通告给AR1,AR1收到后将自己的LSA的序列号+1发给AR2,AR2将AR4发来的LSA删除,再将AR1发来的LSA通告给AR4。如此反复。 ::: tip 上述现象可以在AR1和AR4配置环回口,可以在AR2上看到AR1和AR4的环回口路由交替出现:
[AR4]int LoopBack 0
[AR4-LoopBack0]ip ad 4.4.4.4 32
[AR4-LoopBack0]ospf enable area 0
如上图,AR2可能会认为是AR4通告了1.1.1.1,实际上AR4通告的是4.4.4.4。 即RID相同可能会造成路由错乱。 上图中空缺的80000126可能就是AR4通告的路由,但直接被AR1通告的路由瞬间刷新掉了。 ::: ::: warning OSPF报文头部: 设备RID不相等时才可以正常建立邻居关系。 区域内的RID要求:
- 直连,直连设备RID一定不能相等,否则邻居不能正常建立。
- 非直连,非直连设备RID要求不相等。
如果相等则容易造成路由错误学习,产生冲突。且在一段时间后,RID冲突的设备OSPF进程会自动重启,使用新的RID(优选环回口地址充当)。 :::
OSPF hello报文信息:
掩码不一致:
如上可以查看到由于掩码不一致导致OSPF邻居建立失败。
接口发送Hello报文的时间间隔不一致:
[AR1-GigabitEthernet0/0/0]ospf timer hello 11 设置接口发送Hello报文的时间间隔为11s
如上,多次执行该命令发现hello timer不一致报错计数不断增长,而已有的掩码报错的计数值不变,即掩码的报错可能不存在,原因是OSPF不会同时显示多个错误,只会一个一个显示。
<AR1>reset ospf counters 刷新OSPF计数报错
如上,刷新OSPF计数报错后,查看OSPF接口通告的报文计数报错时,就只能看到hello timer报错,不会有掩码的报错。所以使用该命令判断OSPF是否出错需要多执行几次观察报错信息。 此时再将hello timer改为默认的10s,再执行该命令,就可以看到掩码出现计数报错。
::: warning Hello报文中: 掩码要求同一链路两端必须一致,不能是相互包含的网段,虽然IP可以通信,但掩码不同代表不同网段,不明确以哪个网段的DR作为标准。 :::
LSA的更新和撤销(路由的更新撤销)
::: tip OSPF的LSA,谁产生,谁更新,谁撤销。 :::
- 类型1:
- 更新:在设备上通告路由信息即可更新1类LSA(ls age = 0 ; ls seq + 1)
重新将环回口宣告在区域0,可以抓到LS Update包:[AR1-LoopBack0]ospf enable 1 area 0
- 撤销:在设备上删除路由信息即可撤销1类LSA(LS age = 0 ; LS seq + 1) ::: warning
- 更新:在设备上通告路由信息即可更新1类LSA(ls age = 0 ; ls seq + 1)
撤销是更新撤销,重新通告LSA,序列号+1,新的LSA中不包含要删除的路由条目。 即通过更新LSA完成撤销。 ::: 将环回口IP undo,可以抓到LS Update包:
- 类型2:
非DR设备:
- 更新:在网段中添加新的设备(非DR)连接,DR会更新2类LSA(LS age = 0 ;ls seq + 1),可能需要更新多次才能完成更新。
- 非DR设备撤销:在网段中删除设备(非DR)连接,DR会撤销2类LSA(LS age = 0 ; LS seq + 1) DR设备:
- 更新:网络中原有的DR失效,新添加的BDR成为DR后会更新新的2类LSA(LS age = 0 ,ls seq = 1)
- DR设备撤销:网络中原有DR失效前产生2类LSA,设备在恢复后会撤销该2类LSA,即谁产生谁撤销(ls age = 3600s,ls seq = 原2类LSA的seq) ::: warning 2类LSA也是更新撤销。 2类LSA由DR通告,非DR不应产生2类LSA,原DR失效前通告出去的2类LSA会被撤销。 ::: ::: tip
- LS Age为3600s表示该LSA都会被撤销,包括该LSA下的拓扑信息和路由信息。* 新增撤销路由则不需要LS Age达到3600s。 :::