OSPF路由协议重点总结

【单区域】

一.RIP的缺点

{1}以跳数评估的路径并非最优路径、限制网络直径不能超过16跳;

{2}收敛速度慢;

{3}更新发送全部路由表浪费网络资源。

二.OSPF

OSPF是开放式最短路径优先,是IETF开发的一种链路状态路由协议,使用基于带宽的度量值;

采用SPF算法计算路由,从算法上保证无路由环路;

通过邻居关系维护路由,避免定期更新对带宽的消耗;

路由更新效率高,网络收敛快,适用于大中型网络;

报文封装于IP,协议号89,组播地址224.0.0.5和224.0.0.6

三.OSPF基本概念

OSPF基本协议模型:计算路由------传播路由------发起路由------建立邻居

Router ID:

运行OSFP协议必须要有router ID,RID是32比特无符号整数,可以唯一的标识一台路由器;

可以手工配置也可自动生成;

如果没有命令,当配置了lookback接口,则选其接口上数值最大的IP地址作为RID;如果没有这个接口,则选它已经配置的IP地址且链路开启的接口上数值最大的IP地址作为RID。

LS:

直连网段状态:接口的网段和状态 描述:网段、掩码、接口开销

直连拓扑状态:0SPF邻居和邻居状态 描述:邻居RID、连接接口、

接口开销

接口开销:OSPF参考带宽和接口带宽 描述:OSPF参考带宽默认100M、lookback接口开销默认1

LSA:

LSA是链路状态通告,是按一定格式封装后的链路状态信息,LSA1是路由器链路状态通告(每台路由器都会发LSA1),LSA2是传送网络链路状态通告。LSA封装在LSU报文中,在洪泛时内容不变。

LSDB:

LSDB是链路状态数据库,每台OSPF路由器都有一个LSDB,用于存储LSA。

同一个区域中的OSPF路由器的LSDB一致。

LSA封装在LSU报文中,在区域内洪泛,最终达到区域内LSDB一致。

LSA在洪泛过程中内容保持不变。

SPF计算:以自己LSA 1为根,进行SPF计算。各OSPF路由器单独进行SPF计算,互不影响。

OSPF的度量值为cost,也叫开销,是以链路的接口带宽为依据。

OSPF网络类型:

Broadcast广播多路访问:以太网接口

NBMA(Non-Broadcast Multi-Access,非广播多点访问网络):帧中继接口

P2MP(Point-to-MultiPoint,点到多点)

P2P(Point-to-Point,点到点):PPP HDLC接口

注:NBMA、P2MP已被淘汰。

OSPF报文类型与封装:

四.OSPF工作原理

1.建立邻居关系(点对点):
邻居之间通过交换Hello报文,确认邻居是否工作正常;如果在一定的时间间隔内,收不到邻居发来的Hello报文,就认为邻居已经失效,从邻居表中删除。

DR/BDR的选举(广播多路访问):

采用DR/BDR建立邻接关系,可以降低需要维护的邻接关系数量。

选举规则:

{1}首先比较Hello报文中携带的优先级:

优先级最高的被选举为DR,优先级次高的被选举为BDR;优先级为0的不参与选举。

{2}优先级一致的情况下,比较Router ID;Router ID越大越优先

{3}保持稳定原则:当DR/BDR已经选举完毕,就算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经选举的DR/BDR成为新的DR/BDR。

例:RTE后来加入网络,虽然它的Router ID比原有的DR和BDR都高,但是出于稳定性的考虑,只能成为DRother路由器。当DR失效时,BDR立刻成为新的DR,DRother路由器进行竞争,Router ID高的成为新的BDR。

邻居关系无法建立原因总结:

2.状态转换:Down------Init------2-Way ; ExStart------Exchange------Loading------Full。

**Down:**初始状态。表示没有从邻居收到任何信息(Hello报文)。

动作:路由器会定期向外发送Hello报文,尝试发现邻居。

Init(初始):路由器收到了一个Hello报文,但这个Hello报文的"邻居列表"里还没有自己的Router ID。

动作:意味着对方已经看到了我,但我还没有和对方完成一次完整的握手。我会在下一个Hello报文中将对方的Router ID加入我的"邻居列表"。

2-Way(双向通信):路由器收到了一个Hello报文,并且这个报文的"邻居列表"中包含了自己的Router ID。

动作:双向通信已建立。

注意:

在广播网络中,此时会进行DR/BDR的选举。

选举完成后,DR/BDR会与所有邻居继续下一步,而DRother之间将停留在此状态,它们之间不需要建立完全的邻接关系。

在点对点网络中,没有DR/BDR选举,所有邻居直接进入下一步。

ExStart(预启动):双方准备开始同步数据库摘要,但需要先确定一个"主"路由器和一个"从"路由器,由"主"来控制同步过程。

动作:通过交换空的DBD报文(其中包含初始序列号)来进行选举。Router ID大的成为主路由器。

Exchange(交换):主从关系确立后,开始正式交换数据库的"目录"。

动作:双方相互发送DBD报文,报文中包含自己LSDB中所有LSA的头部信息(目录)。对方收到后,对比自己的目录,就能知道自己缺了哪些(LSA),或者谁的版本更新。

Loading(加载):根据交换来的"目录",请求自己需要或更新的详细信息。

动作:

路由器查看对方发来的目录,发现自己没有或版本较旧的LSA,就发送 LSR报文 去请求。

对方收到LSR后,用 LSU报文 回应,里面包含了完整的LSA内容。

收到LSU后,回复 LSAck报文 进行确认。

Full(完全邻接):双方路由器的LSDB已完全同步。

动作:时,双方数据库的内容一模一样。路由器会立即以自己的LSA为根,进行SPF算法计算,得出最优路由路径,并将其加入路由表。

补:OSPF协议包具备超时重传机制;OSPF协议包具备序列号,对重复包不做处理

3.洪泛新LSA:

当有新的LSA生成或收到时,这条新的LSA应当被泛洪。泛洪新的LSA时,只需要使用LS Update报文和LS Ack报文。

  1. 当RTA有新的LSA要泛洪时,RTA向RTB发送一个LS Update报文,在这个报文里包含这条LSA

  2. 收到新的LSA以后,RTB向RTA泛洪一个LS Ack报文进行确认。当在两个处于完全邻接状态(邻居状态为Full)的路由器之间泛洪新的LSA时,邻居状态不受影响。

广播网络中LSDB更新:在广播和NBMA网络中,链路状态发生变化时,主要是通过DR路由器发送更新报文。

OSPF LSA洪泛与老化:

OSPF LSA老化:LSA不老化的缺点:当网络长时间中断,故障网络中的设备发起的LSA长时间无效,但仍然存储在LSDB中,浪费设备内存。

OSPF LSA采用递增老化:LSA自发起时开始计时,到达最大老化时间后,从LSDB中清除。

OSPF最大老化时间3600秒,LSA头部的老化时间字段用于计时。

OSPF LSA老化与全网刷新:

正常OSPF网络的路由维护:LSA老化时间到达最大老化时间的一半(30分钟),发起路由器随机等待一段时间后重新发起该LSA,然后洪泛,刷新所有路由器LSDB。

新发起的LSA序列号加1,老化时间为0。LSA在整个洪泛过程中,除老化时间外,其余各字段都保持不变。

报文:

Hello报文:建立并维护邻居关系 (间隔10s,失效40s)

Database description(DD):数据库内容汇总(LSA头部)

Link state request(LSR):请求自己没有或更新的链路状态信息

Link state update(LSU):链路状态更新信息(LSA头部+内容)

Link state acknowledge(LSAck):对LSU的确认

OSPF区域号:

OSPF路由域:运行OSPF路由协议的网络。OSPF区域:OSPF是一种支持划分多区域的协议。

Area ID:32位,用数字或IP地址表示。

【多区域】

五.单区域存在的问题

{1}LSDB 庞大,占用内存大,SPF计算开销大。

{2}LSA洪泛范围大,拓扑变化影响范围大。

{3}路由不能被汇总,路由表庞大,查找路由开销大。

划分区域的好处:

{1}每个区域独立存储LSDB,划分区域减小了LSDB。

{2}LSA洪泛被限制在区域内,有效控制了拓扑变化的影响范围。

{3}区域边界可以做路由汇总,减小了路由表。

六.多区域基本概念

OSPF多区域基本结构:

骨干区域:Area 0,OSPF的Area 0必须是连续的,不能被分割。

非骨干区域:必须和Area 0直接相连,非骨干区域之间不能直接交换路由信息,必须通过Area 0。

特殊区域:具有某些特殊性质的区域,如Stub、NSSA区域。

OSPF多区域链路状态数据库:

每个区域都有自己独立的LSDB,SPF计算独立运行。

LSA洪泛和LSDB同步只在区域内进行。

OSPF对区域间路由信息的描述:

OSPF只知道本区域的拓扑结构,并不知道其他区域的拓扑结构,其他区域的路由信息,依靠本 区域的ABR来描述。

OSPF对区域间路由的描述与计算:

ABR先计算区域内的LSA 1、2,并为计算出来的路由向其他区域发起LSA 3,而且为Area 0中的 LSA 3向其他区域重新发起LSA 3。

OSPF对外部路由信息的描述:OSPF通过ASBR来描述外部路由的可达性。
OSPF对外部路由的描述与计算:ASBR为外部路由发起LSA5,在整个OSPF路由域中洪泛。

七.0SPF的LSA分类

八.OSPF的LSA传播过程

LSA报文头格式:

OSPF外部路由开销类型:

开销类型1:开销 = LSA携带开销 + 到始发ASBR的开销

开销类型2:开销 = LSA携带开销

先比较LSA携带开销,再比较到始发ASBR的开销,两者都相等才负载。

OSPF外部路由开销类型:

先进行SPF计算,把外部路由LSA挂到SPF树上去,能挂上去的进行开销比较,挂不上去的直接忽略。

类型1优于类型2,相对于类型1,类型2相当于加了无穷远。重发布外部路由时,默认开销类型2。

到始发ASBR的开销计算:

转发地址为0.0.0.0 区域内通过ASBR的LSA 1计算得到。区域间通过ASBR的LSA 4计算得到。

普通区域重发布的外部路由,转发地址默认为0.0.0.0。

转发地址为某IP地址:在OSPF路由表中查询得到;若查询不到,则忽略该LSA。

OSPF选路原则:

按照路由类型的优先级选择:

{1}区域内路由(Intra Area){2}区域间路由(Inter Area)

{3}第一类外部路由(Type1 External){4}第二类外部路由(Type2 External)

在类型相同的情况下,选择路由开销(Cost)较小的路由。

OSPF协议的路由聚合/汇总:ABR或ASBR将具有相同前缀的路由信息聚合后发布到其它区域

优点:减少LSA3类、LSA5类的数目,减少路由信息;减小路由表的规模;提高路由器的运算速度

九.OSPF特殊区域

特殊区域是指人为定义的一些区域,它们在逻辑中一般位于OSPF区域的边缘,只与骨干区域相连。

常见的特殊区域有以下几类:

{1}Stub区域(末梢区域)

{2}Totally Stub区域(完全末梢区域)

{3}NSSA区域(非纯末梢区域)

{4}完全NSSA区域(完全非纯末梢区域)

|--------|-------------------|------------------------|---------------------------|------------------------|
| 特性 | Stub | Totally Stub | NSSA | 完全NSSA |
| 内容 | 不知外部,只知内外 | 只知内部 | 不知外部,但自己可引入 | 极度精简,但自己可引入 |
| 阻断的LSA | Type 4, Type 5 | Type 3, Type 4, Type 5 | Type 4, Type 5 | Type 3, Type 4, Type 5 |
| 允许的LSA | 1、2、3 | 1、2 | 1、2、3、7 | 1、2、7 |
| 默认路由 | ABR下发的 Type 3 LSA | ABR下发的 Type 3 LSA | ABR下发的 Type 7 LSA (需手动触发) | ABR下发的 Type 3 LSA |
| ASBR | 不允许 | 不允许 | 允许(产生Type 7) | 允许(产生Type 7) |

相关推荐
BingoGo5 小时前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack5 小时前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack1 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo1 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack2 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理3 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1233 天前
matlab画图工具
开发语言·matlab
dustcell.3 天前
haproxy七层代理
java·开发语言·前端
norlan_jame3 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone3 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc