1.0.0 路由 OSPF LSA介绍、1~7类LSA详细介绍
OSPF LSA 链路状态通告( Link status announcement
),作用于 向其它邻接OSPF路由器 传递拓扑信息与路由信息。
LSA如何去描述拓扑信息与路由信息的呢?
其实是基于不同类型LSA进行描述,而常见的LSA类型有1类、2类、3类、4类、5类、7类
。
OSPF路由器通过不同类型的LSA组建成一下LSDB数据库(链路状态数据库)再通过SPF算法进行计算出最优的OSPF路由加入到路由表中。
宏观下的6种LSA作用:
1类 Router
- 路由器LSA,描述设备的直连拓扑信息、路由信息。
- 该LSA只能在接口所属的区域内泛洪。
- 解释(接口所属的区域):在OSPF中以接口划分区域,故每个接口都可以属于不同的区域。
- 1类LSA只会在区域内泛洪/传递,不会泛洪到其它区域中。
2类 Network
- 网络LSA,该2类LSA只会在广播类型网络中出现。
- 由DR产生,描述DR所在的MA网络中所有与之形成邻接关系的路由器,以及DR自己。
- 解释(所有与之形成邻接关系的路由器):
- 在广播类型的网络中,OSPF会选举出DR设备统一管理广播网络中的LSA。
- 而广播网络中只有DR与BDR能够与DR-other设备建立邻接关系。
- 2类LSA描述的正是DR与其它设备之间的拓扑信息
[DR连接了谁]
,与DR广播网络的路由信息[DR广播网络是什么]
。
- 解释(所有与之形成邻接关系的路由器):
- 该LSA只能在接口所属区域泛洪。
3类 Summary-Network
- 网络汇总LSA,由ABR设备产生,描述区域内的路由信息。
- 因为1类、2类LSA只能在区域内传递。
- 故其它区域需要学习到另一个区域的1类2类就需要有新的LSA来统一描述1类2类的拓扑、路由信息。这个LSA就是3类LSA。
4类 ASBR-Summary
-
ASBR汇总LSA,由ABR产生,描述到ASBR的路由,服务于5类LSA。
-
通告给除ASBR所在区域的其它区域。
-
这里需要进行图形的解释:
-
5类LSA在传递过程中下一跳是不可改变的,故AR5想访问AR1就需要去往AR2的2.2.2.2。
-
1、首先AR2的router-id=2.2.2.2并没有发布到OSPF网络中,故AR5不会学习到去2.2.2.2的路由。
-
2、由于AR3与AR2在同一个区域中,通过1类LSA就可以知道如何去2.2.2.2。
-
【唉?不是说2.2.2.2是RID吗?不是没有发布到OSPF吗?AR3如何知道去2.2.2.2的呢?】
-
【答案就是在1类LSA的子类型中可以得知去往RID的拓扑信息,
往后会详细讲解1类LSA的其它子类型
】 -
Type : RouterLs id : 2.2.2.2 【该LSA由谁产生?因为1类描述自己的直连接口信息,当然是自己】Adv rtr : 2.2.2.2 【谁通告的?1类LSA由自己产生,当然是自己】Ls age : 623 Len : 36 Options : ASBR E seq# : 80000007 chksum : 0x2ec3Link count: 1* Link ID: 10.1.23.3【基于TransNet子类型可知该地址表示广播网络的DR地址】Data : 10.1.23.2【谁通告的该LSA信息?基于该地址我们就知道如何去2.2.2.2了】Link Type: TransNet Metric : 1 该LSA由2.2.2.2通告过来给AR3的,其中产生了1条拓扑信息,可通过10.1.23.2访问到。 故同样的也可以访问到2.2.2.2。
-
-
3、由于1类只能在区域中传递,故AR5无法学习到去往2.2.2.2的路由信息。这个时候就需要用到ABR(AR3)发布的4类LSA
(去2.2.2.2来找我AR3准没错了)
-
5类 AS-External
- AS外部LSA,由ASBR产生,描述到OSPF域外的路由。
- OSPF引入的路由,如引入RIP、ISIS、BGP等路由,引入的路由就属于外部路。外部路由用5类LSA进行通告。
- 5类LSA在传递的过程中,下一跳不会被中间设备修改。
7类 NSSA
- 用于特殊区域 NSSA 中的LSA。
- 由ASBR产生,用于描述到达OSPF域外的路由。NSSA7类与5类功能一样,但泛洪范围不同。
- NSSA7类只能在始发区域内泛洪,并不能直接进入Area0。当7类需要传递Area0的时候,ABR会将7类转换成5类传递入到Area0中。
查看LSDB数据库
LSDB链路状态数据库,是存放各类LSA的地方,在路由设备上通过命令:display ospf lsdb
查看数据库信息。
Type表示LSA的类型(1类Router、2类Network、3类Sum-Net、4类 )
Linkstate通常表示谁产生的LSA
AdvRouter表示谁通告的LSA
Age表示LSA的年龄,也是老化时间。
Len为LSA的大小
Sequence为LSA序列号
Metric表示去往该LSA的开销。
<AR3>display ospf lsdb OSPF Process 1 with Router ID 3.3.3.3【OSPF路由设备的router-id】Link State Database 【以下就是关于AR3的LSDB数据库信息】Area: 0.0.0.0【区域0的LSA】Type LinkState ID AdvRouter Age Len Sequence MetricRouter 4.4.4.4 4.4.4.4 1240 36 80000005 1Router 3.3.3.3 3.3.3.3 834 36 80000005 1Network 10.1.34.4 4.4.4.4 1240 32 80000002 0Sum-Net 10.1.45.0 4.4.4.4 1277 28 80000001 1Sum-Net 10.1.23.0 3.3.3.3 834 28 80000002 1Area: 0.0.0.1【区域1的LSA】Type LinkState ID AdvRouter Age Len Sequence MetricRouter 2.2.2.2 2.2.2.2 585 36 80000007 1Router 3.3.3.3 3.3.3.3 785 36 80000005 1Network 10.1.23.3 3.3.3.3 785 32 80000001 0Sum-Net 10.1.45.0 3.3.3.3 834 28 80000001 2Sum-Net 10.1.34.0 3.3.3.3 834 28 80000001 1NSSA 0.0.0.0 3.3.3.3 834 36 80000001 1NSSA 10.1.23.0 2.2.2.2 585 36 80000002 1NSSA 192.168.1.0 2.2.2.2 585 36 80000002 1NSSA 10.1.12.0 2.2.2.2 585 36 80000002 1AS External Database【外部路由的LSA】Type LinkState ID AdvRouter Age Len Sequence MetricExternal 192.168.1.0 3.3.3.3 584 36 80000002 1External 10.1.12.0 3.3.3.3 584 36 80000002 1
新旧LSA判断
话说网络中的LSA如此之多,OSPF路由器是如何进行判断哪些是新的LSA,哪些是旧的LSA呢?
对于LSA,有三个重要的字段。通过这三个字段可以判断出LSA的新旧:序列号seq
、校验chksum
、年龄Age
。
LSA优先区域顺序
1、先比较序列号,越大越新,越新越优先。
- 因为OSPF最新生成的LSA会比旧的LSA序列号更大。
2、序列号一样,校验和越大越新。
-
OSPF报文中的校验和并不简简单单是用来判断报文有没有出错的,该值的计算不仅仅需要LSA报文的信息,还需要上一次计算出的校验和,并且每次计算校验和,都会比之前的校验和更大,因此校验和被认为是OSPF LSA消息新旧的第二个标准。
-
红字部分借鉴CSDN博主「永远是少年啊」的原创文章:https://blog.csdn.net/weixin_40228200/article/details/118497166
3、特例就是当Age=3600时该LSA最优先,其它Age则是越小越优先。
- Age表示LSA产生至今有多久了,默认从0开始。
- 当OSPF设备需要删除某个LSA时,就会通过设置Age时间为3600秒进行泛洪,让其它OSPF设备进行删除指定LSA。所以LSA=3600比Age=0更具备优先级。
- 但正常情况下Age是不会达到3600的,因为OSPF 默认情况下1800秒(30分钟)周期性更新一次LSA,当收到新的LSA之后就会进行刷新Age时间。
查看LSA的详细信息
通过命令:display ospf lsdb LSA类型 LSA条目ID
,如查看2.2.2.2的1类LSA详细信息:display ospf lsdb router 2.2.2.2
<AR3>display ospf lsdb router 2.2.2.2OSPF Process 1 with Router ID 3.3.3.3Area: 0.0.0.0Link State Database Area: 0.0.0.1【查询的1类LSA所属区域】Link State Database Type : RouterLs id : 2.2.2.2Adv rtr : 2.2.2.2 Ls age : 455 【新旧LSA判断依据3】Len : 36 Options : ASBRseq# : 80000007 【新旧LSA判断依据1】chksum : 0x4ca7 【新旧LSA判断依据2】Link count: 1* Link ID: 10.1.23.3 Data : 10.1.23.2 Link Type: TransNet Metric : 1
详细介绍1~7类LSA的内部信息
了解LSA的产生,什么情况下产生LSA,产生什么样的LSA。
查看并了解其LSA内部信息所表示的含义。
1类 Router
产生:运行了OSPF的设备并配置活动接口使用之后,必然会产生1条1类LSA描述该直连链路信息。
一类LSA头部信息
<AR4>display ospf lsdb router 4.4.4.4Type : Router 【LSA的类型】Ls id : 4.4.4.4 【该LSA由谁产生?因为1类描述自己的直连接口信息,当然是自己】Adv rtr : 4.4.4.4 【谁通告的?1类LSA由自己产生,当然是自己】Ls age : 1521 【该LSA活了多久?1521秒】Len : 36 【LSA的大小,36Byte】Options : ABR E 【ABR身份,E表示可接收OSPF外部LSA的能力】seq# : 80000007 chksum : 0xab1eLink count: 1 【直连链路信息数量】* Link ID: 10.1.34.4Data : 10.1.34.4Link Type: TransNet【子类型】 Metric : 1
一类LSA子类型与内部信息
不同的子类型,其LinkID、Data所表示的含义也不同。
- Link ID: 10.1.34.4【DR地址】
Data : 10.1.34.4【宣告该LSA的接口】
Link Type: TransNet【子类型】
Metric : 1
Link Type | Link ID | Data |
---|---|---|
P2P(P2P接口网络中产生) | 邻居的RID | 宣告该LSA的路由器接口的IP地址 |
StubNet(广播网络中产生) | 路由器接口的网络IP地址 | 该Stub网络的网络掩码 |
TransNet(广播网络中产生) | DR的接口地址 | 宣告该LSA的路由器接口的IP地址 |
Virtual(虚链路路由器产生) | 邻居的RID | 宣告该LSA的路由器接口的IP地址 |
P2P、TransNet、virtual三类都是一类LSA用于描述拓扑信息,StubNet则用于描述路由信息。
疑惑:为什么都是通过network 宣告网络,有时候产生的是1类的Transnet、有时候产生的是StubNet呢?
Vritual Link虚链路
为了避免区域间的环路,OSPF规定不允许直接在两个非骨干区域之间传递路由信息。
但是非骨干区域与非骨干区域之间还是可以通过hello报文建立邻居关系,并学习到对方自己产生的路由。
即:非骨干区域之间不能传递其它区域的路由,但是可以传递自己产生的路由。
1、建立Vlink的作用?
为了实现以上区域2与区域5之间的路由传递,让区域5也能学习到其它区域的路由信息,就需要建立Vlink虚链路。
Vlink实现非骨干区域之间能够交互路由信息的逻辑是什么?
因为非骨干区域与非骨干区域无法交互路由信息,只有非骨干区域与骨干区域之间可以。
基于上面的环境,AR4与AR5建立Vlink(区域0与区域2的两台边界路由器),实现逻辑上将骨干区域0扩展到AR5上。
建立完成之后就会和下图一样的:由于AR5逻辑上属于骨干区域,故区域5的AR10就会与AR5交互路由了。
2、如何配置Vlink?
首先观察环境,因为区域5与区域0之间相隔了区域2,需要做的就是将区域2打通,实现区域5与区域0的通信。
AR4是区域0与区域2的边界、AR5是区域2与区域5的边界,在这两台上配置Vlink是最优的。
配置Vlink的时候通常都是指定对端的router-id。
为什么虚链路不直接指定对端IP地址,而是指定对端的router-id呢?
-
从实用性上看,如果单独指定其接口地址,那么这个时候去往目标时并不一定是最优的。
而使用router-id,OSPF将会基于OSPF路由进行最优路由的转发。
-
从可靠性上看,如果单独指定其接口地址,如果该接口断开了,那么该虚链路就断开了。
而使用router-id,只要还有路由能到router-id该虚链路就不会断开。
3、配置Vlink的注意事项
- Vlink虚链路只能在同区域建立连接,无法跨域建立虚链路。
- 因为Vlink计算到达目标路径需要依靠1、2类LSA,而1、2类LSA无法跨区域传递,导致Vlink无法跨区域寻邻居。
以实验结果理解1类LSA
1、通过在AR2、AR3上查看lsdb可以知道1类的LSA只会在区域内传递(因为除了在区域1中可以看到1类的2.2.2.2,其它区域都不会有1类的2.2.2.2)
2、1类2.2.2.2中只有一条信息,也就是transnet子类型的LSA,表示的是AR2与AR3相连的拓扑信息(10.1.23.0)
3、其它区域想要学习到该1类的LSA,只能通过3类的LSA学习。(如:AR4需要学习区域1中的1类2.2.2.2的路由信息,只能通过AR3产生的3类学习到)
4、为什么AR4收到的3类是10.1.23.0呢?为什么不是2.2.2.2?因为3类是统一汇总通告1类2类的拓扑信息、路由信息。故只会将1类2.2.2.2中的拓扑信息(10.1.23.0)通告出去。
2类 Network
产生:在广播类型的接口运行OSPF时,由选出的DR设备产生。
二类LSA头部信息与内部信息
<AR4>display ospf lsdb network 10.1.34.4Type : NetworkLs id : 10.1.34.4【DR的地址】Adv rtr : 4.4.4.4【该LSA由谁宣告的?】Ls age : 1297Len : 32 Options : E seq# : 80000001 chksum : 0xf903Net mask : 255.255.255.0【与LS id结合,表示DR所在的广播网络】Priority : LowAttached Router 4.4.4.4【表示与DR相连的设备】Attached Router 3.3.3.3【表示与DR相连的设备】
通过上面的报文可以绘制一个逻辑拓扑:
配合1类的LSA,我们就可以知道4.4.4.4与3.3.3.3互联接口为这个链路中的DR。以及这个链路连接有哪些设备。
3类 Sum-Network
产生:由ABR边界路由器产生
三类LSA头部信息与内部信息
<AR4>dis ospf lsdb summary 10.1.23.0OSPF Process 1 with Router ID 4.4.4.4Area: 0.0.0.0Link State Database Type : Sum-NetLs id : 10.1.23.0【某条1类或2类的路由信息】Adv rtr : 3.3.3.3 【下一跳找谁】Ls age : 1557 Len : 28 Options : E seq# : 80000002 chksum : 0x8ca0Net mask : 255.255.255.0【Lsid的掩码,与Lsid结合就知道了路由信息】Tos 0 metric: 1Priority : Low
4类 ASBR-Summary
产生:由ABR边界路由器产生
4类LSA主要的作用就是通过头部的 Ls id与Adv rtr了解如何去往ASBR。
四类头部信息
<AR4>display ospf lsdb asbr 3.3.3.3Type : Sum-AsbrLs id : 3.3.3.3【ASBR的router-id】Adv rtr : 4.4.4.4【去往ASBR找我】Ls age : 1716Len : 28 Options : E seq# : 80000002 chksum : 0x62dbTos 0 metric: 1
5类/7类 AS-External
产生:由ASBR区域自治边界路由器产生
5类与7类都是一样的LSA,只不过Type类型不一样。
五类头部信息与内部信息
<AR4>display ospf lsdb ase 192.168.1.0OSPF Process 1 with Router ID 4.4.4.4Link State DatabaseType : ExternalLs id : 192.168.1.0【5类外部路由】Adv rtr : 3.3.3.3 【去往该路由的下一跳】Ls age : 95 Len : 36 Options : E seq# : 80000003 chksum : 0xa68dNet mask : 255.255.255.0【路由掩码】TOS 0 Metric: 1E type : 2【外部路由开销的计算类型】Forwarding Address : 10.1.23.2 【转发地址】Tag : 1 【Tag标签】Priority : Low
五类LSA—E Type字段
External Type 外部路由类型
OSPF外部路由默认优先级为150
Type 1
可学习到外部的开销为:ASBR到外部路由部开销
+本路由器到ASBR之间的路由部开销
= 该外部路由的总开销
通过LSA可以知道访问192.168.1.0就需要经过3.3.3.3、2.2.2.2最终到192.168.1.0,故开销为3。
Type 2
5类LSA的外部路由开销为:(ASBR到外部路由的总开销
)
啥时候用Type1、啥时候用Type2?
当网络中有多个ASBR都引入同一条外部路由时,如果用默认的Type2方式引入,则去往该外部路由时必然是负载分担的。
如下图,AR14学习到的外部路由开销都是1,故AR14会认为该路由负载分担流量。
但很明显,走AR13是次优的路径,故在多个ASBR引入同一条外部路由的时候需要考虑使用Type1类型。
五类LSA—Forwarding字段
转发地址作用:解决广播型网络中OSPF路由次优路径问题
引入外部路由时,连接其他协议的接口运行了OSPF 协议并且网络类型为广播类型,则FA地址为重发布之前路由的下一跳地址,若网络类型为P2P,则不会产生FA地址。
转发地址不置位(0.0.0.0)
转发地址置位条件:
1.ASBR与外部路由交互的接口,启用了OSPF协议(即接口运行了OSPF协议,还运行了其它外部路由协议)
2.链接外部的接口不能配置Slient-interface
(类似边缘端口,禁止设备向该接口发送OSPF报文)
3.只有广播型网络的接口才会置位,P2P只有单一的一条路无法置位。
环境介绍:
1、AR5的G0/0/0接口与AR7建立OSPF、并且G0/0/0还与AR6建立ISIS
2、路由引入操作:AR5将ISIS与OSPF进行双向的路由引入,即OSPF引入ISIS、ISIS引入OSPF中。
3、这个时候AR7就能通过AR5学习到AR6的ISIS相关路由,但是访问AR6的网络时会优先通过AR5进行中转,在该环境中明显是不合适的,因为AR7明显可以直接与AR6进行通信。
3、为此,OSPF的FA地址生效了。该环境满足了FA地址置位的要求。
4、AR5会将引入的AR6路由相关SLA的FA地址设置为去往AR6网络的下一跳接口地址(192.168.1.2),这样AR7需要访问AR6的时候就直接访问AR6即可。
五类LSA—Tag字段
用于区分路由,将特定的路由打上tag之后,可以通过路由策略选择性的接收和拒绝指定的路由。ISIS与路由策略相关知识在后面几章介绍到
双点双向引入时、环路就是通过tag解决的。
汇总1~7类相关查看命令
查看所有类型LSA的汇总信息,LSDB数据库
<AR4>display ospf lsdb
查看指定类型的LSA
# 1类
<AR4>display ospf lsdb router
# 2类
<AR4>display ospf lsdb network
# 3类
<AR4>display ospf lsdb summary
# 4类
<AR4>display ospf lsdb asbr
# 5类
<AR4>display ospf lsdb ase
# 7类
<AR4>display ospf lsdb nssa
# 查看指定类型的LSA详细信息,如查看1类1.1.1.1的详细LSA信息
<AR4>display ospf lsdb router 1.1.1.1
查看ospf网络中哪些是ABR、ASBR
<AR3>dis ospf abr-asbr OSPF Process 1 with Router ID 3.3.3.3Routing Table to ABR and ASBR RtType Destination Area Cost Nexthop TypeIntra-area 4.4.4.4 0.0.0.0 1 10.1.34.4 ABR Intra-area 5.5.5.5 0.0.0.0 2 10.1.34.4 ABR Intra-area 2.2.2.2 0.0.0.1 1 10.1.23.2 ASBR