ToB企服应用市场:ToB评测及商务社交产业平台

标题: OSPF各类LSA介绍及分析 [打印本页]

作者: 九天猎人    时间: 2022-10-24 15:49
标题: OSPF各类LSA介绍及分析
ICT实战进阶课程01-OSPF各类LSA介绍及分析

课程目标

1 区域内路由计算

1.1 回顾

在同一个区域内所有路由器的LSDB(Link State DataBase,链路状态数据库)相同

不考虑区域间和不考虑引入的情况下, 每一台开启OSPF的设备设备会产生一个一类LSA, 一个广播网络会存在一个二类LSA, PtoP网络不需要LSA.(这里做简单了解, 下面会详细展开)
所以上图拓扑共有7(5+2)条LSA.
1.2 OSPF协议报文头部


1.2.1 ospf报文头部结构:

Version: 当前OSPF的版本号;
(message) Type: 报文类型: 1-hello, 2-dd(dbd), 3-lsr, 4-lsu, 5-lsack;
Packet Length: OSPF报文长度;
Router ID(source ospf router): 生成该报文设备(路由器、三层交换机或防火墙)的Router Id;
areaID: 表示该报文需要被通告到的区域;
Checksum: 校验字段, 对整个ospf报文进行校验, 确定报文完整性;
auth-type: 认证类型: 0-不认证, 1-简单明文认证(simple), 2-加密认证(md5);
authentication data: 具体认证信息;
具体的hello报文、dd报文内容;
在wireshark中查看:

这是一条支持ospfv2的hello报文, 长度为52byte, 源设备发出接口ip地址为10.0.3.3, 在区域0被通告, 校验码为0xec86, 认证方式为无认证, 具体认证信息为空.
1.2.2 hello报文:


注意: 根据ospf报文头部和hello报文里的内容, 判断一下ospf邻居建立过程中都对那些信息进行检查.
hello报文间隔10s发送一次, 存活时间为40s.
细说一下options字段:

功能: 用于表示ospf某些特征, 比如当前ospf设备是否为特殊区域设备, ospf的特殊防环机制
字段名称具体含义DN用于在MPLS VPN场景下的防环O当前ospf开启了不透明LSA(九类 十类 十一类LSA), 常见使用场景: 优雅重启、SR--SegmentRoutingDC表示按需链路特性(不再周期性发送hello报文, 邻居不老化)EA设备支持八类LSAN**只存在在hello报文中使用(DD报文也存在但没有), 1-支持七类LSA, 0-不支持七类LSA; **P只存在LSU报文中使用, 1-需要进行七类LSA转换成五类LSA, 0-不允许七类LSA转五类LSAMC表示是否支持组播数据转发E表示设备是否支持五类LSA功能, 1-所以五类LSA都会有该字段, 非末节区域会有该标识; 0-该设备的接口具有是被和收发五类LSA功能MT表示ospf的多拓扑特性是不是看的一头雾水? 这里可以先作简单理解, 之后结合之后的内容来记忆.
但是可以先看看几种类型的LSA.
1.2.3  DD报文

DD报文用于描述LSDB,该报文中携带的是LSDB中LSA的头部数据(也就是并非完整的LSA内容,仅仅是头部数据)

思考:
回顾Master/Slave(主从路由器)选举:
根据Router Id判断: Router ID越大越优先
为什么要决定主从: 是ospf的一种可靠性机制.
DD报文的作用: 用于选择主从路由器, 然后交互设备之间的LSA目录, 最后决定要更新那些LSA信息.
分析:
第一次交互(双方互发dd报文)之后, 则可以确定主从设备, 主从设备会对交互报文的序列号(Seq)进行确认, 序列号以主设备序列号为主, 从设备使用主设备的序列号进行报文发送(为了确保数据传输没有发生丢失, 保证可靠性, 丢失则进行重传).
注意: 这里最开始的两个dd报文是没有任何LSA信息的, 只是为了确认主从关系.
选出主从路由器之后, 则可以开始LSA头部信息交互:
问: 一次ospf邻居建立中最少会发送几次dd报文?
答: 6次.(如果你的回答是4, 那么你漏掉了最开始的用来确认主从关系的dd报文)
1.2.4 LSR报文

作用: 根据前面交互的DD报文, 决定需要请求那些LSA详情.

1.2.5 LSU报文

用于回复LSR请求,向对方发送详细的LSA信息.

1.2.6 LSAck报文

用于回复LSU报文更新, 每个LSA头部长度为20byte.

1.3 LSA头部信息

LSA: 链路状态信息, 用来描述网络拓扑情况.
2 常见LSA的类型



几种常见类型的LSA
类型名称描述1路由器LSA(Router LSA)每个设备都会产生, 描述链路设备的状态和开销, 该LSA只能在接口所属的区域内泛洪.2网络LSA(Network LSA)由DR产生, 描述该DR接入的MA网络中所有与之形成邻接关系的路由器, 以及DR自己, 该LSA只能在接口所属区域内泛洪.3网络汇总LSA(Network Summary LSA)又ABR产生, 用于描述某个网段内的路由, 该类LSA主要用于区域间路由的传递.4ASBR汇总LSA(ASBR Summary LSA)由ABR产生, 描述到ASBR的路由, 通告给除ASBR所在区域的其他相关区域.5AS外部LSA(AS External LSA)由ASBR产生, 用于描述到达ospf域外的路由.7非完全末梢区LSA(NSSA LSA)由ASBR产生, 用于描述到达OSPF域外的路由, NSSA LSA与外部LSA功能类似, 但是泛洪范围不同, NSSA LSA只能在始发的NSSA内泛洪, 并且不能直接进入Area0, NSSA的ASBR会将7类LSA转换为5类LSA进入Area0.2.1 一类LSA(LSA-type 1)

一个一类LSA可以携带多个链路信息, 一台ospf设备通过一个LSA描述自己的链路.

P2P网络: 表示串行链路;
Transit(transnet)广播网络: 表示至少两台设备连接在一起的广播网络;
Stubent末梢网络: 表示至少两台设备连接在一起的广播网络, 该链路不存在邻居信息,比如环回口. 就算配置环回接口按照24位掩码配置的,但是OSPF仍然会把环回接口按照32位主机路由进行通告更新,除非把环回接口的链路类型改成点对点;
虚链路(virtual): 当出现非骨干区域无法直接连接到骨干区域时, 可以在某个非骨干区域设置虚链路, 形成跨非骨干区域连接;
注意: P2P网络中,接口IP信息通过type 1来表述, 网络掩码信息会通过type 3表述, 需要将两部分结合才能推断出那部分网络的具体拓扑图.
2.1.1 Router LSA描述P2P网络


tpye为1(PTP), 这是一个p2p网络中的LSA, 邻居路由器的Router ID为10.0.3.3, 宣告该LSA设备的接口IP为10.0.35.5, TOS不管他, 链路开销值为48.
2.1.2 Router LSA描述Transit网络


tpye为2(transit), 这是一个广播网络中的LSA, DR接口IP为10.1.234.3, 宣告该LSA设备的接口IP为为10.0.234.3, TOS不管他, 链路开销值为1.
2.1.3 Router LSA描述Stubnet网络


tpye为3(Stubnet), 这是一个末梢网络中的LSA, 网段IP为10.1.234.0, 该网段子网掩码为255.255.255.0, TOS不管他, 链路开销值为1.
2.2 二类LSA(LSA-type 2)

一个二类LSA能携带一个网段的掩码信息多个邻居信息.
P2P网络中根据一类LSA可以判断整个网络结构. 但广播网络中只能简单判断结构, 需要二类LSA协助.
结合到二类LSA, 可以判断完全的广播网络结构
思考: 在抓包过程中, 会发现某些LSU报文中并不是自己的内容, 为什么?
解答: 所有设备将LSA泛洪给DR, 之后由DR进行广播网络的LSDB同步, 所以DR会发送不属于自己的LSU.
2.3 SPF算法


SPF计算完成后, 会把计算过程中的路由信息计入到OSPF路由表
题解示例:







注意: ospf路由表的最优路由, 并不一定加入到全局路由表
3 区域间路由计算

3.1 大型网络中, 单区域ospf存在的问题

3.2 区域划分

一类二类LSA只会在区域内泛洪, 通过区域内划分在一定程度上降低网络设备内存和cpu损耗.
划分区域后, 路由器可以分为两种角色:
注: 官方定义的ABR: 该设备至少有一个接口连接着骨干区域, 有其他接口连接着其他常规区域., 但平时口述通常会将连接不同区域的区域间设备称为ABR.
到这里可能你会有一个疑问, 多区域ospf的非骨干区域不是只能和骨干区域连接吗? 这就涉及到上面小小提过一嘴的虚链路,这个会在下面详细展开聊.
3.3 三类LSA(LSA-type 3)

一条三类LSA只能描述一条网段路由信息, 一个区域内有多个网段就需要发送多个三类LSA.
3.4 区域间路由信息传递


R4设备在Area1里如何向Area2传递路由信息?

3.5 区域间环路问题

假设非骨干区域之间可以互相传递信息

ospf防环机制:
3.6 虚连接VLink(虚链路)

ospf要求骨干区域与非骨干区域必须是连续的, 但是不要求物理上连续 ,可以使用虚连接使骨干区域和非骨干区域在逻辑上连续. 虚连接可以在任意两个ABR上建立, 但是要求这两个ABR都有端口连接到相同的非骨干区域.

虚连接可以在osfp骨干区域断开的情况下, 进行骨干区域虚拟连接, 但是这种方式会打破了ospf的一些防环机制, 会产生环路, 只能作为临时解决方案.
如果建立虚连接的两台设备有多个物理接口可以进行vlink建立, 则此时会选择IP地址较大的端口进行数据传输, 因为link-peer命令是指定RID, 没有指定IP地址, 因此设备需要自行选择IP地址较大的端口进行两端的通信.
3.6.1 虚连接环路

这里Area 2要和Area 1通信

过程:
至此, area1学习到了area2里面的路由信息, 实现了两个非骨干区域通过虚链路(area2-->R4-->R2-(R3)->R1-->area1)进行数据通信.
虚链路带来的环路: R1访问R5的时候: R1-R2-R3, 抓包会看到大量ICMP报文, TTL值会一直减少至0后被丢弃
有时间去看看虚链路环路实验
最后再强调一遍, 虚链路是对于问题网络规划的一种临时解决方案, 现实出现这种情况还是要对网络进行重新规划部署, 使非骨干区域都与骨干区域物理上相连.
4 外部路由计算

网络中存在部分链路未开启ospf协议如:

4.1 基本概念

将其他路由协议的路由信息转换成当前路由协议可以识别的信息(五类LSA)然后进行传递.

进行了引入操作的设备, 在ospf里面称之为ASBR(AS Boundary Router, 自治系统边界路由器), ASBR将外部路由信息以AS-external LSA(五类LSA)的形式再ospf网络内泛洪.
4.2 五类LSA

一个五类LSA只能携带一个路由信息
五类LSA的含义: 大部分情况下, 表示有设备希望去往该外部路由的网段, 则将设备信息发送给ASBR.
存在问题:
因此ospf在五类LSA之上, 增加了一个四类LSA, 用于辅助计算去往ASBR的路径. ABR在传递五类LSA的同时会生成一个四类LSA.
4.3 四类LSA

ABR在传递五类LSA的同时会生成一个四类LSA.
包含信息:
4.4 外部路由计算方法

在五类LSA中E-type为1时, 进行路由计算. (type 2时不用计算, 开销固定为外部开销值)
根据以上信息, 就可以知道当前设备学到的路由信息总开销值(内部开销值+外部开销值).

细说: 收到五类LSA的设备, 首先计算当前网络内去往ASBR的内部开销值, 然后看一下五类LSA的信息(开销值, 开销值类型), 如果开销类型为2(固定开销值)直接以五类LSA的metric值进行计算, 如果开销类型为1(累加), 则内部开销+五类开销;
4.5 避免次优路径


当ospf进行外部路由引入时, 发现邻居的IP地址和当前收到的外部路由下一跳地址是同一个网段.如上图所示, RTB引入外部路由192.168.3.0/24, 通过五类LSA发送给RTA学习, 但RTA、RTB、RTC相连的端口处于同一个网段(中间存在二层设备, 图里没画), RTB去往RTC的下一跳是10.1.123.3, 此时如果没有设置FA地址, 则RTB发送给RTA的五类LSA会告知RTA要前往192.168.3.0/24的下一跳是RTB, 但是从拓扑结构上来看(不考虑开销差异)RTA->RTB->RTC是次优路径.
此时RTB设备为了避免次优路径, 于是在五类LSA的FA地址(Forwarding Address)字段写入了RTC的IP地址, 告诉RTA可以直接将数据转发给RTC来前往外部路由.
注: 路由传递才需要考虑协议, 数据转发是根据已经生成好的路由信息转发, 无需考虑协议类别问题.
FA被写入的基本条件:
4.6 ospf路由优先级

一类二类生成的ospf路由称为区域内路由
三类生成的ospf路由称为区域间路由
五类(五类+四类)生成的路由称为外部路由(根据开销值类型(type)可以细分为两类: 一类外部路由、二类外部路由)
优先级: 区域内>区域间>一类外部>二类外部
5 总结


个人学习随笔, 如有纰漏, 欢迎指正.

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4