什么是OSPF?
OSPF是我们平时使用最多的一种链路状态协议,其实OSPF协议可以视为是为了解决距离矢量协议所出现的一些系列问题而出现的(距离矢量协议RIP协议收敛慢、最大跳数为15跳、易产生环路)
1、区域划分
OSPF是可以支持单区域也可以支持多区域的,有一个非常好的功能就是它可以把一个网络划分为各个区域,多区域划分中就包括骨干区域area 0和其它普通区域。要注意的是,在OSPF的多区域网络中,所有的区域之间的通信都需要通过骨干区域。假设没有area 0,不同区域之间是不能够传递信息的,因为骨干区域就是用于汇总每个区域的路由信息然后再发送出去的,各区域只有得到了这些汇总信息才能进行通信。
(骨干区域就好像是军训时候的教官队,他们各自带的班就是一个区域,整个团里面有什么消息都要在教官队之中进行整合,然后再传给每个区域。例如,某个班的某某同学翻墙出去打游戏被发现,然后由教官上报,再进行通报批评)
可能有人会问,单个区域简单粗暴为什么要进行区域划分呢?
一是怕骨干区域太大,带给核心路由器太大的压力;二是可以缩小链路状态数据库(LSDB)的规模,每个区域内都有各自的LSDB,再由骨干区域来汇总;三是可以减少或避免某区域内的路由变化对整网带来路由震荡,在网络大的时候非常有用的。
ps:如果你需要以下或更多网工资料,可以私信找我要~
![](/qrcode.jpg)
2、路由器类型
由于OSPF可以进行区域划分,那么处于区域不同地方的路由器也有其各自的功能。区域或自治系统的划分边界并不是某一条链路,而是路由器。
内部路由器:主要是用于收集保存自己区域内的链路信息状态
区域边界路由器:用于连接自治系统内的各个区域
自治边界路由器:用于连接使用OSPF的自治系统和其它自治系统的路由器
基本原理
之前已经了解过了链路状态协议的基本工作原理,是通过路由器LSP的泛洪来实现的。当一个自治系统内的路由器都运行的是OSPF协议时,那么相互之间就可以交互信息。
首先发送的是HELLO报文,用来发现自己的邻居路由器,以及与其建立关系,如果一个路由器在收到的邻居hello报文中看到了自己的Router ID信息,就代表双方之间已经建立了联系。(这个时候就表示人家已经知道的你的存在了,不需要再打招呼了)
在与邻居路由器建立连接后,两者之间就要进行链路状态数据库(LSDB)的交互同步了。这个时候,路由器是使用DD报文来进行主从路由器的选取以及描述自己的LSDB。
在最后一个DD报文发送完毕之后,路由器A会将路由器B的状态设为Loading,然后再向邻居B发送另外一种报文LSR,用于询问上一步中DD报文发现的但是路由器B传过来的LSDB信息。路由器收到后,会返回给A一个LSU报文来回答A的问题。
最后,路由器A再给B发送一个确认信息LSACK,告诉B自己已经接受到了信息。这个时候,A与B之间的状态就变成了完全邻接(full)
OSPF的配置
对下图进行OSPF分区配置,实现区域之间的通信
以R2为例
1、进行IP地址的配置
interface GigabitEthernet0/0/0
ip address 192.168.3.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 192.168.1.1 255.255.255.0
2、OSPF分区域配置
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 192.168.1.0 0.0.0.255
area 0.0.0.1
network 192.168.3.0 0.0.0.255