文章目录
前言
OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。适用于IPv4的OSPFv2协议定义于RFC 2328,RFC 5340定义了适用于IPv6的OSPFv3。
开放式最短路径优先(Open Shortest Path First,OSPF)是目前广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。但如果使用时不结合具体网络应用环境,不做好细致的规划,OSPF协议的使用效果会大打折扣,甚至引发故障。
OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。
OSPF路由协议基本原理
解决RIP的瓶颈——15跳数
OSPF路由协议总述(知识点纲要)
四种路由类型:DR、BDR、ABR、ASBR
五大区域:骨干区域、标准区域、末梢区域、纯末梢区域、非纯末梢区域
五大数据包类型:Hello、DBD、LSR、LSU(包含多个LSA)、LSACK
六种LSA:Type1、Type2、Type3、Type4、Type5、Type7
七个状态:Down、Init、2-Way、Exstart、Exchange、Loading、Full
一、网关协议
1.内部网关协议(IGP):RIP、OSPF(端口划分)、ISIS(路由器划分)等 ; 在区域内部跑的进程协议
2.外部网关协议(EGP):BGP ; 在区域外跑的进程协议
3:自治系统(AS)多个路由跑相同路由进程协议的区域 成为AS区域系统。
二、OSPF是链路状态路由协议
(开放式最短路径优先选择协议)——转发自己的链路状态的信息库
- 建立邻居列表: 学习到所有的链路状态信息,即所有的网段信息。
- 链路状态数据库:将学习到的链路状态信息存储在自己的链路状态数据库中。
- 形成路由表:链路状态数据库通过 Dijkstra算法 算出到达每一个地点的最短路径,形成最短路径树。最终生成路由表。
过程:建立邻接关系——链路状态数据库——算法(Dijkstra算法)计算最短路径数——生成路由表
自治系统(AS):相同路由进程协议的区域 例:区域中都用OSPF 1
三、OSPF区域之骨干区域和标准区域
OSPF在AS内划分多个区域,其中必须有个骨干区域,且骨干区域有且仅有一个。骨干区域负责区域间路由信息传播。
另,其他区域必须经过骨干区域转发,所有区域必须和骨干区域直接连接!
其他称作标准区域或非主干区域。
区域ID可以表示层一个十进制的数字。即area 0(0-9)
每个OSPF路由器只维护所在区域的完整链路状态信息
3.1区域ID
区域ID可以表示成一个十进制的数字(一般在思科上用十进制数字进行模拟配置)
也可以表示成一个IP
下图就是在一个自治系统(AS)中的不同区域的ospf协议,且在该系统下的ospf协议的进程相同其中AREA0为骨干区域
其他的为非骨干区域
3.2Router ID(重要)
OSPF区域内唯一标识路由器的IP地址
Router-id选取规则(注意选取时根据实际情况进行选择)
- 选取路由器loopback接口(虚拟接口)上数值最高的IP地址(路由器比较多的情况);
- 如果没有loopback接口,在物理端口中选取IP地址最高的(不推荐,万一挂的就是它就完了);
- 也可以使用router-id命令指定(推荐,路由器不多的情况)
*只要路由器没有宕机且有一个接口没有挂掉loopback就生效*
四、DR和BDR
DR是主路由,BDR是备路由,剩下的都是其它路由
-
指定路由器DR(老大):负责更新其他所有OSPF路由器的信息。
-
备份指定路由器BDR(老二):负责监控备份DR的状态,并在当前DR发生故障时接替其角色。
-
其它路由器:只和DR及BDR形成邻接关系
-
DR: 区域当中的主路由,有且仅有一个
-
BDR:区域当中的备份路由,有且仅有一个
-
除了DR 和 BDR 都是其他路由
其他路由器只和 DR 和 BDR 形成邻接关系。主路由负责通告信息,备份路由负责准备顶替 DR
其他路由器发送信息只能到达DR 和BDR(一个组播) ,DR再发送通告信息(第二个组播)。其中存在两个组播信息。
DR 和 BDR 负责监控其他路由发来的信息。
4.1DR和BDR的选举方法
1.自动选举DR和BDR
网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR
2.手工选择DR和BDR
- 优先级范围是0~255,数值越大,优先级越高,默认为1;
- 如果优先级相同,则需要比较Router ID;
- 如果路由器的优先级被设置为0,将不参与DR和BDR的选举
注意!*路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的DR或者BDR路由器*
其实这也就是说其实是人为已经先行定下了DR和BDR因为在配置时有先后顺序,除非路由器宕机或者出现其他问题才会进行真正的选举
4.2 OSPF的组播地址
224.0.0.5(DR和BDR负责监听224.0.0.6的信息)和224.0.0.6(other监听自己的网络信息查看自己有没有什么改动)
4.3 OSPF的度量值为COST(开销)
COST=10^8/BW BW(带宽)的值越大越好,开销越低
五、OSPF数据包(5个包)
ospf数据包是承载在IP数据包内的,使用协议号为89,其类型如下表所示:
OSPF的包类型 | 描述 |
---|---|
Hello | 用于发现和维持邻居关系,选举DR和BDR |
数据库描述包 | 用于向邻居发送摘要信息以同步链路状态数据库 |
链路状态请求包 | 在路由器收到包含新信息的DBD后发送,用于请求更详细的信息 |
链路状态更新包 | 收到LSR后发送链路状态通告(LSA),一个LSU数据包可以有多个LSA |
链路状态确认包 | 确认已经收到LSU,每个LSA需要被分确认 |
六、OSPF邻接关系的建立(7个状态重点)
-
OSPF启动的第一个阶段是使用Hello报文建立双向通信的过程
-
OSPF启动的第二个阶段是建立完全邻接关系的过程
1)下面是完整的过程阐述:
down状态的接口接收到Hello信息包后——激活init状态( 只能接收hello包,不能发送hello包)——route系统加载完成后从init状态进入2-way状态(该状态既可以接收hello包也可以发送hello包,即完成选举出两个最大的router ID但并不会确定主从路由,即DR和BDR);
exstart状态确定DR和BDR的身份——exchange状态交互DBD包同时接收到后也会有LSACK包——loading状态(最繁忙LSR,LSU(多个LSA),LSACK),形成路由表——FULl状态 稳定状态开始转发数据包——类似于RIP的收敛
2)状态 描述
Down状态 只知道自己的ID,不知道其他任何路由器
Init状态(初始化状态) Down状态的端口接收到Hello信息后,自动激活init状态,此时,只能接收Hello包,不能发送Hello包
2-Way状态 route系统加载完成后从Init状态进入2-Way状态。2-Way状态中既可以接收Hello包也可以发送Hello包(选举出两个最大的Router ID,但是并不会确定主从路由身份)
ExStart状态(准启动状态) 确定主从路由身份。即确定DR和BDR身份。
Exchange状态 交换DBD信息库,同时接收到后也会有LSACK包。
Loading状态 最繁忙状态,包的种类最多,有LSR,LSU(包含多个LSA),LSACK,形成的路由表
Full 状态 稳定状态开始转发数据包
七、OSPF的网络类型
划分为四种类型:点到点、 点到多点、广播多路访问、非广播多路访问
八、OSPF的特点
- 可适应大规模网络
- 路由变化收敛速度快
- 无路由环
- 支持变长子网掩码VLSM
- 支持区域划分
- 支持以组播地址发送协议报
九、OSPF与RIP的比较
OSPF | RIP v1 | RIP v2 |
---|---|---|
链路状态路由协议 | 距离矢量路由协议 | 距离矢量路由协议 |
无跳数限制 | 限制不超过15 | 限制不超过15 |
支持VLSM(可变长子网掩码) | 不支持VLSM | 支持VLSM(可变长子网掩码) |
收敛速度快 | 收敛速度慢 | 收敛速度慢 |
使用组播发送链路状态更新 | 周期性广播更新这个路由表 | 周期性组播更新路由表 |
十.实验
10.1 配置R1
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 13.0.0.1 24
[R1-GigabitEthernet0/0/0]un sh
[R1]int loo0
[R1-LoopBack0]ip add 1.1.1.1 32
[R1-LoopBack0]un sh
[R1]ospf 1 router-id 1.1.1.1
[R1]ospf 1
[R1-ospf-1]area 0.0.0.0
[R1-ospf-1-area-0.0.0.0]network 13.0.0.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
10.2配置R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 13.0.0.2 24
[R2-GigabitEthernet0/0/0]un sh
[R2]int loo0
[R2-LoopBack0]ip add 2.2.2.2 32
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]a 0
[R2-ospf-1-area-0.0.0.0]network 13.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
10.3配置R3
[R3]int g0/0/3
[R3-GigabitEthernet0/0/3]ip add 13.0.0.3 24
[R3-GigabitEthernet0/0/3]un sh
[R3]int loo0
[R3-LoopBack0]ip add 3.3.3.3 32
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]a 0
[R3-ospf-1-area-0.0.0.0]network 13.0.0.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
10.4 查看DR BDR Neighbor
10.5关闭R1的主,查看主备情况
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]sh
10.6开启R1的主,关闭R3的带头大哥查看主备情况
图片转存中…(img-fKuolHc4-1591112839728)]
[外链图片转存中…(img-8lKxpBZZ-1591112839733)]10.5关闭R1的主,查看主备情况
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]sh
[外链图片转存中…(img-pMoxtRLu-1591112839736)]
[外链图片转存中…(img-AhbrujYu-1591112839739)]
10.6开启R1的主,关闭R3的带头大哥查看主备情况