ospf的lsa
ospf本质是通过lsa(链路状态通告)洪泛,将运行ospf域内的所有lsa存放到本地lsdb(链路状态数据库),然后通过spf(最短路径优先算法)计算出路由并加载到路由表中。ospf中有十几种lsa,其中我们需要掌握的有六种,在这些lsa中,不同的lsa携带的信息不一样,有的携带拓扑信息、有的携带路由信息。通过Type、Ls id和AdvRouter可以唯一的标识一条lsa。
类型 | LS ID | 通告者 | 传播范围 | 携带的信息 |
---|---|---|---|---|
Type - 1LSA:Router | 通告者 | ospf域内所有运行ospf的设备的RID | 单区域 | 本地接口直连的拓扑信息 |
Type - 2LSA:Network | DR的接口IP | MA网路中的DR的RID | 单区域 | 单个MA网络的拓扑信息的补充 |
Type - 3LSA:Sum-net | 路由网段 | ABR,在经由其他ABR转发时会修改为新的ABR | 单区域 | 其他区域的路由信息 |
Type - 5LSA:External(ase) | 域外路由网段 | ASBR | ospf域内 | 域外路由 |
Type - 4LSA: Sum-Asbr(summary) | ASBR的RID | 和ASBR同区域的ABR,在经由其他ABR转发时修改为新的ABR | 除ASBR所在区域外的OSPF单区域 | ASBR的位置信息 |
<r1>display ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 699 72 8000000A 1
Router 1.1.1.1 1.1.1.1 721 60 80000005 0
Router 3.3.3.3 3.3.3.3 690 48 80000007 1
Network 23.1.1.2 3.3.3.3 690 32 80000002 0
Sum-Net 4.4.4.4 3.3.3.3 684 28 80000001 1
Sum-Net 34.1.1.0 3.3.3.3 729 28 80000001 1
Sum-Net 10.1.1.1 3.3.3.3 309 28 80000001 1
Sum-Asbr 4.4.4.4 3.3.3.3 276 28 80000001 1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 10.1.1.0 4.4.4.4 277 36 80000001 1
LSA的头部信息
不同类型的LSA都有相同的头部字段
<r1>display ospf lsdb router 1.1.1.1
OSPF Process 1 with Router ID 1.1.1.1
Area: 0.0.0.0
Link State Database
Type : Router
Ls id : 1.1.1.1
Adv rtr : 1.1.1.1
Ls age : 1464
Len : 60
Options : E
seq# : 80000003
chksum : 0xb2ee --- 从Type到chksum都是LSA的头部信息,每个LSA都具有的
Link count: 3
* Link ID: 1.1.1.1
Data : 255.255.255.255
Link Type: StubNet
Metric : 0
Priority : Medium
* Link ID: 2.2.2.2
Data : 12.1.1.1
Link Type: P-2-P
Metric : 48
* Link ID: 12.1.1.0
Data : 255.255.255.0
Link Type: StubNet
Metric : 48
Priority : Low
Type:LSA的类型,在OSPFV2中,主要需要掌握6中LSA类型
LinkState ID:链路状态标识符,其主要作用是用来标记一条LSA,可以理解为一条LSA的名称,但因为不同类型的LSA获取LS ID的方式不同,可能会出现LS ID相同的情况,所以仅凭借LS ID 并不能唯一的标识一跳LSA
AdRouter:通告路由器,标识发送该LSA信息的路由器的RID
以上三个参数被称为LSA的三元组,可以用来唯一的标识一条LSA
LS AGE:老化时间,单位为s,这个老化时间是从该LSA信息从产生就开始计时,之后,该LS在网络中传播的过程中,老化时间始终累加。老化时间一般最大到1800s(因为OSPF有周期更新,每过30分钟,即将自己所有的LSA信息向外重新发一遍,还会重置自己产生的LSA的老化时间),LSA还有一个最大老化时间(MAX AGE),为3600s,如果一条LSA的老化时间达到3600s时,则将认定该LSA信息失效,直接删除
注:OSPF的周期更新为1800s,正常情况下,当一条LSA信息的老化时间达到1800s时,将进行周期更新,但每条LSA的老化时间不一定一致,如果只对老化时间达到1800s的LSA更新,就会导致多次更新,浪费资源,所以,OSPF中有一个组步调计时器,开启组步调计时器后,达到1800s时,先不进行周期更新,而是等待300s,当老化时间达到2100s时,再进行周期更新,更新时会将所有老化时间再1800s - 2100区间内的LSA信息一起更新。
SEQ:序列号,有32位二进制构成,用8位16进制来表示,每一条LSA都会携带一个序列号,每台路由器在发送相同的LSA信息时会将序列号逐次加1,序列号主要用来区分LSA的新旧。
序列号空间的分类:
直线序列号空间:序列号逐次增大,直到序列号用完。如有100个序列号,第一个产生的LSA序列号为1,后续产生相同LSA时序列号加1,直至第100次产生的相同LSA的序列号为100,后续的LSA的序列号也只能为100。使用直线序列号空间方便比较新旧,通过大小就可以直接进行比较,但序列号有限,超出数量后,就无法正常比较大小关系。
循环序列号空间:序列号逐次增大,直到最大值,在产生相同的LSA就再次从最小值开始循环。这样可以循环使用序列号,不受循环空间大小的限制,但当两条LSA携带的序列号数值相差较大时,无法判断新旧。
棒棒糖序列号空间:棒棒糖序列号结合了直线序列号和循环序列号,它是从负值开始,假设它从-100开始,最大值为100,当它达到100时,序列号就再次从0开始循环,而不是从-100开始,这样做的好处是:如果某台设备重新启动ospf后,发布的LSA的序列号都是负值,这些肯定都是最新的LSA。但棒棒糖学列号也没有完全解决新旧问题。
OSPF采用的是棒棒糖序列空间,但是为了避免循环部分造成新旧部分无法判断的情况,所以,ospf要求序列号不能进入循环。到达最大值后重置序列号。ospf序列号的取值范围为0x80000001 - 0x7FFFFFFF.
OSPF重置序列号空间的方法:当一条LSA的序列号达到最大值0x07FFFFFFF时,OSPF会将该LSA的老化时间设置为3600s,邻居收到这条LSA后,首先替换之前的LSA,之后,又因为该LSA的老化时间达到最大,将该LSA删除,紧接着,设备将再发送一条相同的LSA信息给邻居,这条LSA信息中的序列号为0x800000001,邻居会把最新的信息加入到数据库中,这些就达到了书信序列号空间的作用。
Chksum:校验和,主要任务时校验数据的完整性,这个校验和也会参与LSA的新旧比较,即当两条相同的LSA,它们的序列号也相同,则通过校验和来进行判断,校验和大的认为新。
一类LSA:Router
一类LSA是最重要的LSA,它携带着设备的直连接口的详细信息,网络内所有运行ospf的设备都需要发送并且只发送一条,它通过LINK描述接口,每一条LINK都是用来描述路由器的接口的连接情况,一个接口也可以使用多条LINK来进行描述。
[r1]display ospf lsdb router 1.1.1.1 --- 详细的查看某条LSA
OSPF Process 1 with Router ID 1.1.1.1
Area: 0.0.0.0
Link State Database
Type : Router
Ls id : 1.1.1.1
Adv rtr : 1.1.1.1
Ls age : 470
Len : 60
Options : E -- 注*
seq# : 80000005
chksum : 0xaef0 --- 以上都是LSA的头部信息
Link count: 3 --- LINK数,有3个描述接口的LINK
* Link ID: 1.1.1.1 -- 网络地址
Data : 255.255.255.255 -- 掩码
Link Type: StubNet -- 末梢网段
Metric : 0 -- 开销
Priority : Medium
* Link ID: 2.2.2.2 --- 邻居的RID
Data : 12.1.1.1 --- 和该邻居相连的接口IP地址
Link Type: P-2-P --- 点到点网络
Metric : 48
* Link ID: 12.1.1.0 -- 网路地址
Data : 255.255.255.0 -- 掩码
Link Type: StubNet -- 末梢网段
Metric : 48
Priority : Low
一类LSA中有三个比较重要的标记字段:
V(virtual):该位置1,代表通告者时Vlink(虚链路)的一个端点
E:该位置1,代表该路由器时ASBR
B:改为置1,代表该路由器是ABR,该位用来标记所有区域边界设备,不一定是合法的ABR。
每一个LINK主要有Type、Link ID、Data三个条目。
Type | Link ID | Data |
---|---|---|
p-2-p | 邻居的RID | 该网段上本地接口的IP地址 |
TransNet | DR的接口的IP地址 | 该网段上本地接口的IP地址 |
StubNet | 该Stub网段的IP网络地址 | 该网段的网路掩码 |
Virtual | 虚连接邻居的RID | 去往该虚连接的本地接口IP |
Type代表着接口所连网络的类型,p-2-p即点到点网络,TransNet即MA网络,StubNet即该接口没有邻居,也被称为末梢网段。
路由器再描述环回接口时,掩码都是32位,无论环回接口的掩码
由于点到点网络两端的网段可以不同,所以在Router还会对点到点网络接口的网段进行描述(使用stubnet的Link进行二次描述)
Virtual类型在使用虚链路的时候出现
通过展开1.1.1.1发布的Router信息,我们可以画出如下的图:
二类LSA:Network
从一类LSA可以看出,一类LSA都是描述本地接口的,对于点到点网络,一类LSA可以很好的描述,而对于MA网络,一类LSA只可以描述本地在MA网络中的接口,而没有描述MA网络中其他邻居,所以就有了二类LSA。二类LSA是专门对MA网络的描述,由MA网络中的DR进行通告(一个MA网络中只需要一条2类LSA即可描述,避免重复更新)。
<r1>display ospf lsdb network 23.1.1.2 --- 展开某条详细的二类LSA
OSPF Process 1 with Router ID 1.1.1.1
Area: 0.0.0.0
Link State Database
Type : Network
Ls id : 23.1.1.2 --- DR接口的IP
Adv rtr : 3.3.3.3 -- 通告着的RID
Ls age : 1161
Len : 32
Options : E
seq# : 80000003
chksum : 0x9686 -- 以上都为LSA头部信息
Net mask : 255.255.255.0 -- MA网段的掩码
Priority : Low
Attached Router 3.3.3.3 -- MA网路中设备的RID
Attached Router 2.2.2.2
一类和二类都是传播拓扑信息,依靠一类和二类就可以计算单区域的路由,其他类的LSA传播的都是路由信息,OSPF规定,所有传递路由的LSA信息必须经过拓扑信息(1类和2类LSA)的验算,通过拓扑信息找到路由信息的通告者,再通过通告者找到目标
三类LSA:Sum-net
区域之间传播的就是三类LSA,三类LSA携带的是路由信息,和RIP相同,传递路由信息只需网段、掩码和开销。ABR在传递三类LSA时,会将通告者修改为自己,这样区域内的路由器就可以通过一类和二类的验算找到通告者。
<r1>display ospf lsdb summary 4.4.4.4 --- 展开详细的三类LSA
OSPF Process 1 with Router ID 1.1.1.1
Area: 0.0.0.0
Link State Database
Type : Sum-Net
Ls id : 4.4.4.4 --- 路由网段
Adv rtr : 3.3.3.3 --- 通告者
Ls age : 1574
Len : 28
Options : E
seq# : 80000002
chksum : 0x60de --- 以上都为头部信息
Net mask : 255.255.255.255 --- 网络掩码
Tos 0 metric: 1 --- 开销,该开销为ABR到目标网段的开销,本地在加表时还需要增加到ABR的开销值
Priority : Medium
五类LSA:External
五类是用来传递域外路由信息的,将其他AS(区域自治系统)的路由信息导入到ospf域内,这些路由信息都由五类携带并进行传递,五类的通告者为ASBR(自治系统边界路由器),并在整个ospf域进行传播,经过ABR时不会修改通告者。域外导入的5类LSA生成的路由信息,在路由表中的类型为O_ASE,优先级默认为150。
[r4]display ospf lsdb ase 10.1.1.0 ---
OSPF Process 1 with Router ID 4.4.4.4
Link State Database
Type : External
Ls id : 10.1.1.0
Adv rtr : 4.4.4.4
Ls age : 235
Len : 36
Options : E
seq# : 80000001
chksum : 0xecc7
Net mask : 255.255.255.0
TOS 0 Metric: 1 --注*
E type : 2 -- 注*
Forwarding Address : 0.0.0.0 -- 注*
Tag : 1 -- 注*
Priority : Low
TOS 0 Metric:由于不同路由协议的开销值的度量标准不同,所以在进行重发布后,不能直接使用之前的开销值,故在进行重发布时会赋予所有导入路由信息一个初始的度量值,这个初始的度量值被称为seed-metric(种子度量)。华为设备为ospf网络设计的种子度量默认为1
[r4-ospf-1]import-route rip 1 cost 2 --- 在重发布时修改种子度量
E type:这个E位标记的是使用的度量值的类型
Type 1(当E位置为0时,使用类型1):如果使用类型1的度量值,则所有域内设备到达域外目标网段的开销值等于本地到达ASBR的开销值加种子度量值
Type 2(当E位置为1时,使用类型2):如果使用类型2的度量值,则所有域内设备达到域外目标网段的开销之等于种子度量值,默认使用的是类型2.
[r4-ospf-1]import-route rip 1 type 1 --- 在重发布是修改开销值的类型
Forwarding Address:转发地址,类似RIPv2的下一跳地址,5类LSA在不存在选路不佳情况下,会携带该值,这个转发地址默认为0.0.0.0.
TAG :路由标记 , 方便对流量进行标记,之后对标记的流量进行抓取和控制。默认值为1。
四类LSA:Sum-Asbr
由于五类ASBR在传递的时候不会修改通告者,但OSPF规定,所有传递路由的LSA信息必须经过拓扑信息(1类和2类LSA)的验算,而其他区域的设备无法通过拓扑信息验算到ASBR的位置,所以就有了四类LSA。四类LSA只携带通往ASBR的路由信息,LS ID为ASBR的RID,通告者为ABR,在通过下一个ABR设备时需要修改为新的ABR,这使得其他区域的设备可以西安通过拓扑信息验算到ABR的位置,将信息交由ABR转发给ASBR。
<r1>display ospf lsdb summary 4.4.4.4
OSPF Process 1 with Router ID 1.1.1.1
Area: 0.0.0.0
Link State Database
Type : Sum-Net
Ls id : 4.4.4.4 --- ASBR的RID,五类的通告者为ASBR的RID,通过RID定位四类
Adv rtr : 3.3.3.3 --- 本区域的ABR,将消息交由ABR转发
Ls age : 434
Len : 28
Options : E
seq# : 80000002
chksum : 0x60de
Net mask : 255.255.255.255
Tos 0 metric: 1
Priority : Medium