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) |

相关推荐
Moniane13 小时前
C++深度解析:从核心特性到现代编程实践
java·开发语言·jvm
uxiang_blog13 小时前
C++进阶:重载类型转换
linux·开发语言·c++
爱编程的鱼13 小时前
C# 参数详解:从基础传参到高级应用
开发语言·microsoft·c#
Michael_lcf13 小时前
Java的UDP通信:DatagramSocket和DatagramPacket
java·开发语言·udp
道之极万物灭13 小时前
Python操作word实战
开发语言·python·word
moringlightyn14 小时前
c++11可变模版参数 emplace接口 新的类功能 lambda 包装器
开发语言·c++·笔记·其他·c++11·lambda·包装器
Laplaces Demon14 小时前
Spring 源码学习(十四)—— HandlerMethodArgumentResolver
java·开发语言·学习
郝学胜-神的一滴14 小时前
使用Linux系统函数递归遍历指定目录
linux·运维·服务器·开发语言·c++·软件工程
guygg8814 小时前
Java 无锁方式实现高性能线程
java·开发语言
青衫码上行14 小时前
【从0开始学习Java | 第22篇】反射
java·开发语言·学习