OSPF

一、什么是OSPF

1、OSPF简介

OSPF,即开放式最短路径优先,是IETF组织开发得一个基于链路状态得内部网关协议。
目前针对IPv4协议使用的是OSPF Version2;针对IPv6协议使用OSPF Version3。

2、OSPF的基本特点

OSPF,作为基于链路状态的协议,能够解决RIP所面临的诸多问题。此外,OSPF还有以下有点:
1、OSPF采用组播形式收发协议报文,这样可以减少对其他不运行OSPF路由器的影响。
2、OSPF支持无类型域间选路。
3、OSPF支持对等价路由进行负载分担。
4、OSPF支持报文认证。

3、Router-ID

OSPF Router-ID用于在OSPF domain中唯一地表示一台OSPF路由去,从OSPF网络设计的角度我们要求全OSPF域内,禁止出现两台路由器拥有相同的Router-ID。

OSPF Router-ID的设定可以通过手工配置的方式,或者通过协议自动选取的方式。在实际网络部署中,强烈建议手工配置OSPF的Router-ID,关系到协议的稳定。

ospf区域md5加密 ospf domain_OSPF

4、OSPF Cost

OSPF使用cost“开销”作为路由度量值。

OSPF接口cost=100M/接口带宽,其中100M作为OSPF的参考带宽,可以修改。

每一个激活的OSPF接口都有一个cost值。

一条OSPF路由的cost由该路由从起源一路到达本地的所有入接口cost值的总和。

ospf区域md5加密 ospf domain_链路_02


ospf区域md5加密 ospf domain_OSPF_03


图示可以看出,OSPF会自动选择cost低的那条路进行传输。如果cost相同,那么同时传输,负载分担。

5、OSPF的三张表

邻居表
OSPF是一种可靠的路由协议,要求在路由器之间传递链路状态通告之前,需要先建立OSPF邻居关系。hello报文用于发现直连链路上的其他OSPF路由器,再经过一系列的OSPF消息交互最终建立起全毗邻的邻居关系,OSPF路由器的邻居信息显示再邻居表中。
链路状态数据库(LSDB)
OSPF用LSA来描述网络拓扑信息,然后OSPF路由器用LSDB来储存这些LSA。OSPF将自己产生的以及邻居通告的LSA收集并储存再LSDB中。
OSPF路由表
基于LSDB进行SPF计算,而得出的OSPF路由表。

6、OSPF报文类型

ospf区域md5加密 ospf domain_OSPF_04


图示为OSPF得五种报文类型。

HELLO报文:周期性,发现维持邻居关系。

DD(DBD):描述LSDB的摘要信息,用于两台设备数据库同步。

LSR:向对方请求所需的LSA。成功交换DD之后才会向对方发送。

LSU:向对方发送其所需的LSA(LSA承载在LSU里)

LSAck:对收到的LSA确认。

二、OSPF邻居关系建立

宏观

宏观邻居关系的建立过程有以下四部:
建立双向关系 HELLO
协商主从关系(master/slave)(邻居之间)DD
同步LSA(双方)LSR,LSU,LSAck
完成同步(全毗邻)full
过程都是双向的。

细节

OSPF建立邻居关系的细节上分为七种状态。

ospf区域md5加密 ospf domain_OSPF_05


ospf区域md5加密 ospf domain_ospf区域md5加密_06


ospf区域md5加密 ospf domain_OSPF_07


图示为邻居关系建立的细节。

其中

I=1 表示正在协商主从

I=0 表示已经确定主从

M=1 表示后面还有DD报文

M=0 表示这是最后一个报文

MS=1 表示是master发的

MS=0 表示是slave发的

DOWN状态:启动,没发HELLO包

INIT状态:R2收到R1hello,还没建立双向时,对于R2,R1就置为init状态(单向)。

TWO-WAY:R1将R2置为two-way,R2将R1置为two-way,邻居建立。选举DR,BDR。

EX-START:就绪。开始交换DD(不带LSA)。产生序列号用于互相交互信息。 I=1协商主从,=0选完 M=1还有DD报文没发完 =0发送完DD MS=1是主发还是备发=0(选主从)

EXCHANGE:链路状态数据库的汇总信息 主先产生序号,备用主的序列号 交互DD报文(有LSA)

LOADING:LSR,LSU,LSAck。(双方)

ospf区域md5加密 ospf domain_链路_08


输入命令可以看出:

R1邻居的router id是2.2.2.2,端口IP地址为192.168.12.2

三、OSPF网络类型

OSPF支持的网络类型:

点到点网络

广播型多路访问网络

非广播型多路访问网络

P2MP网络

ospf区域md5加密 ospf domain_OSPF_09

四、DR、BDR

ospf区域md5加密 ospf domain_ospf区域md5加密_10


ospf区域md5加密 ospf domain_OSPF_11

在广播多路访问网络中,所有的路由器的接口都是相同网段,这些接口将两两建立OSPF邻居关系,这就意味着,网络中共有:n(n-1)/2这么多个OSPF邻居关系,维护将消耗相当的设备资源,也增加了LSA的泛洪数量。

ospf区域md5加密 ospf domain_泛洪_12


为了减少OSPF流量,OSPF会在每一个MA网络中选举一个指定路由器DR和一个备用指定路由器BDR。

DR选举规则:最高OSPF接口优先级(0-255)拥有者选作DR,如果优先级相等(默认为1),具有最高的OSPF router-id的路由器被选作DR,具有非抢占性。

DR:DR负责使用该变化信息更新其他所有OSPF路由器。

BDR:监控DR状态,发生故障时接替。

注意:OSPF为“接口敏感型协议”,DR及BDR的身份状态是基于OSPF接口的。
MA网络中,所有的DRother路由器均只与DR和BDR建立邻接关系,DRother间不建立全毗
邻邻接关系。
如此一来,该多路访问网络中设备需要维护的OSPF邻居关系大幅减小:M=(n-2)×2+1,
LSA的泛洪问题也可以得到一定的缓解。

五、LSA的泛洪

ospf区域md5加密 ospf domain_链路_13


ospf区域md5加密 ospf domain_网络_14


路由器R3用224.0.0.6通知DR及BDR。DR、BDR监听224.0.0.6这一组播地址。

DR向组播地址224.0.0.5发送更新以通知其它路由器。·所有的OSPF路由器监听224.0.0.5这一组播地址。

路由器收到包含变化后的LSA的LSU后,更新自己的LSDB,过一段时间(SPF延迟),对更新的链路状态数据库执行SPF算法,必要时更新路由表。

六、OSPF area

1、OSPF area产生背景

单区域存在的问题

LSA泛洪严重,OSPF路由器的负担很大。

区域内部动荡会引起全网路由器的SPF计算。

LSDB庞大,资源消耗过多,设备性能下降,影响数据转发。

每台路由器都需要维护的路由表越来越大,单区域内路由无法汇总。

ospf区域md5加密 ospf domain_OSPF_15

OSPF多区域

减少了LSA洪泛的范围,有效地把拓扑变化控制在区域内,达到网络优化的目的。在区域边界可以做路由汇总,减小了路由表。

充分利用OSPF特殊区域的特性,进一步减少LSA泛洪,从而优化路由。

多区域提高了网络的扩展性,有利于组建大规模的网络。

ospf区域md5加密 ospf domain_链路_16


ospf区域md5加密 ospf domain_OSPF_17


Area 0作为骨干区域,负责在非骨干区域之间中转由区域边界路由器归纳的链路状态通告信息。为了防止出现环路,OSPF要求所有的非骨干区域之间不能进行LSA的交互,二必须通过Area 0骨干区域进行中转,因此所有非骨干区域必须都与AREA 0直接相连。

2、OSPF路由器的角色

ospf区域md5加密 ospf domain_ospf区域md5加密_18


区域内路由器 lnternal Router

区域边界路由器 ABRArea Border Router

骨干路由器 Backbone Router

AS边界路由器 ASBRAS Boundary Router