OSPF路由协议概述:
![](https://i-blog.csdnimg.cn/blog_migrate/ad7930148f055c544bfdfffca386fb79.png)
OSPF——开放式最短路径优先选择协议
OSPF是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。它是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。
自治系统(AS)
AS指的是处于一个管理机构控制之下的路由器和网络群组。它可以是一个路由器直接连接到一个LAN上,同时也连到Internet上;它可以是一个由企业骨干网互连的多个局域网。在一个自治系统中的所有路由器必须相互连接,运行相同的路由协议,同时分配同一个自治系统编号。一个AS只能运行一种路由协议。
内部网关协议(IGP)
IGP是在一个自治网络内网关(主机和路由器)间交换路由信息的协议。路由信息能用于网间协议(IP)或者其它网络协议来说明路由传送是如何进行的。Internet网被分成多个域或多个自治系统。一个域是一组主机和使用相同路由选择协议的路由器集合,并由单一机构管理。IGP协议例如:RIP、OSPF、IS-IS等。
外部网关协议(EGP)
EGP是一个在自治系统网络中两个邻近的网关主机(每个都有它们自己的路由)间交换路由信息的协议。EGP常常被用来在英特网的两个主机间交换路由表信息。路由表包括已知的路由器清单、它们能到达的地址以及与每个路由的路径相关的成本度量,以便选出最好的可用路径。每个路由器按照一定的时间间隔,通常在120秒到480秒之间,就给它的邻近路由发送信息,然后邻近路由就会将自己的完整路由表发回给它。EGP协议例如:BGP等。
OSPF的工作过程
![](https://i-blog.csdnimg.cn/blog_migrate/a5c79c420e67b433d25936570d92f522.png)
建立邻接关系→→ 链路状态数据库→→最短路径数→→路由表
学习链路状态信息 Dijkstra算法
OSPF的特点
可适应大规模网络
路由变化收敛速度快
无路由环
支持变长子网掩码VLSM
支持区域划分
支持以组播地址发送协议报
OSPF区域
OSPF在AS内划分多个区域。
每个OSPF路由器只维护所在区域的完整链路状态信息。
Area0——骨干区域(核心)(默认唯一)
所有其他的Area仅连接Area0
![](https://i-blog.csdnimg.cn/blog_migrate/dc018cba5e06a7c6799a1cf0802a4bfd.png)
区域ID
区域ID可以表示成一个十进制的数字
也可以表示成一份IP
Router ID
OSPF区域内唯一标识路由器的IP地址
Router ID选取规则
选取路由器lookback接口上数值最高的IP地址
如果没有lookback接口,在物理端口中选择最高IP地址(不推荐,无法保证端口不出现故障)
也可以使用router-id命令指定Router ID
路由器角色
指定路由器DR(老大):负责更新其他所有OSPF路由器的信息。
备份指定路由器BDR(老二):负责监控备份DR的状态,并在当前DR发生故障时接替其角色。
其他路由器DRothers:只和DR及BDR形成邻接关系。
![](https://i-blog.csdnimg.cn/blog_migrate/9e62f928a6774a7e41de75bac56f49d6.png)
DR和BDR选举方法
自动选举
网段上Router ID最大的路由器将选为DR,第二大的为BDR
手工选择DR和BDR
优先级范围0-255,数值越大,优先级越高,默认为1
若优先级相同,则需要对比Router ID大小
若路由器的优先级被设置为0,它将不参与DR和BDR的选举
DR和BDR的选举过程
路由器的优先级别可以直接影响选举过程,但是不能强制更换已经存在的DR和BDR路由器的身份。
![](https://i-blog.csdnimg.cn/blog_migrate/f3407d0646c1370fc2695244f42ffe12.png)
OSPF的组播地址
224.0.0.5——分发信息给其他的路由器
224.0.0.6——接收其他路由器反馈信息
OSPF的度量值为COST
COST=108/BW(带宽),带宽越大,成本越低
最短路径是基于接口指定的代价(cost)计算的
![](https://i-blog.csdnimg.cn/blog_migrate/dc7741a8e0f12eaf47c47aea4d68afbb.png)
OSPF数据包
OSPF数据包承载在IP数据包内,使用的协议号为89
OSPF的包类型
Hello包:用于发现和维持邻居关系,选举DR和BDR。
数据库描述包(DBD):用于向邻居发送摘要信息以同步链路状态数据库。
链路状态请求包(LSR):在路由器收到包含新信息的DBD后发送,用于请求更详细的信息。
链路状态更新包(LSU):收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含多个LSA。
链路状态确认包(LSAck):确认已经收到LSU,每个LSA协议被分别确认。
OSPF的七个状态
![](https://i-blog.csdnimg.cn/blog_migrate/6673cb5fe03de879f1c6b352760341f9.png)
Down状态:未收到Hello报文
Init状态:收到Hello报文激活启动路由器
2-Way状态:选举两个最大的RouterID,但未确认DR和BDR身份
![](https://i-blog.csdnimg.cn/blog_migrate/c598ad59f27a89861cec28b746bf813a.png)
ExStart状态(准启动状态):确认主从路由器(确认DR和BDR身份)
Exchange状态:路由器间交换报文(DBD报文和LSAck报文)
Loading状态:路由器间除了Hello报文和DBD报文,跑其他的报文(最丰盈状态),如LSR报文、LSU报文
Full状态:路由表生成
OSPF的四种类型
点到点网络
广播多路访问网络
非广播多路访问网络
点到多点网络
生成OSPF多区域的原因
1、改善网络的可扩展性
2、快速收敛
OSPF的三种通信量
1、域内通信量
单个区域内的路由器之间交换数据包构成的通讯量
2、域间通信量
不同的区域的路由器之间交换数据包构成的通讯量
3、外部通信量
OSPF域内的路由器与OSPF区域外或另一个自治系统内的路由器之间交换数据包构成的通讯量
OSPF的区域类型
1、骨干区域Area0
负责区域间路由信息的传播
2、非骨干区域—根据能够学习的路由器种类来区分
标准区域
末梢区域(stub)
完全末梢区域(Totally stubby)
非纯末梢区域(NSSA)
(三末梢区域内跑不同的LSA)
链路状态数据库的组成
1、每个路由器都创建了由每个接口、对应的相邻节点
和接口速度组成的数据库
2、链路状态数据库中每一个条目称为LSA(链路状态通告)
常见的有六种LSA类型
链路状态通告(LSA)类型
Type 1——路由器LSA:由区域内所有的路由器发出
![](https://i-blog.csdnimg.cn/blog_migrate/28e71283a144b6b879d101e2a8026649.png)
Type 2——网络LSA:由区域内的DR发出的
![](https://i-blog.csdnimg.cn/blog_migrate/69d8466125734d2ac930d5d140469426.png)
Type 3——网络汇总LSA:由ABR发出的,其他区域的汇总链路通告(汇总并交换信息)
![](https://i-blog.csdnimg.cn/blog_migrate/de90fce5a7cf52f6abbb24af7b1c9ee7.png)
Type 4——ASBR汇总LSA:由ABR发出的,用于通ASBR信息,(ASBR相当于外交官)
![](https://i-blog.csdnimg.cn/blog_migrate/35651acad11998f42a2a0bc54a0aa385.png)
Type 5——AS外部LSA:由ASBR发出的,用于通告外部路由(4、5是捆绑的,有则全有,无则全无)
![](https://i-blog.csdnimg.cn/blog_migrate/7680baf7b4933456d2711c0c6f6c0b93.png)
Type 7——NSSA外部LSA:由NSSA区域内的ASBR发出的,用于通告本区域连接的外部路由。仅NSSA有Type 7,其他区域都没有Type 7(5、7本质一样,只是存在区域不同)
![](https://i-blog.csdnimg.cn/blog_migrate/9faf74cae8485383846ca55c88ad5126.png)
路由器对路由条目的选择
1、路由器只把最优的路由条目添加到到路由表
2、选择路由条目的依据
(1)管理距离
(2)度量值
负载均衡的路由条目
![](https://i-blog.csdnimg.cn/blog_migrate/10a8843c57ec93d23eb042bedcb475ae.png)
末梢区域和完全末梢区域
满足以下条件的区域
1、只有一个没人路由作为其他区域的出口
2、区域不能作为虚链路的穿越区域
3、Stub区域里无自治系统边界路由器ASBR
4、表示骨干区域Area0
末梢区域
没有LSA4、5、7通告
完全末梢区域
除了一条LSA3的没人路由通告外,没有LSA3、4、5、7通告
路由重分发
1、一个单IP路由协议是管理网络中IP路由的首选方案
2、CiscoIOS能执行多个路由协议,每一个路由协议和该路由协议所服务的网络属于同一个自治系统
3、CiscoIOS使用路由重发分发特性以交换不同协议创建的路由信息(交换不同协议进程号不同)
重分发到OSPF域中路由的路径类型
类型1的外部路径(Type1 externalpath,E1)
类型2的外部路径(Type2 externalpath,E2)
路由器A有两条到达外部目的网落10.1.2.0的路径
E1类型
路径A-B-D的代价是25(20+5)(优先)
路径A-C-D的代价为48(18+30)
E2类型
路径A-B-D的代价是20
路径A-C-D的代价为18(优先)
![](https://i-blog.csdnimg.cn/blog_migrate/c18414fb9f938d1f19f0ae01a652dc69.png)
NSSA区域是OSPF RFC的补遗
定义了特殊的LSA类型7
提供类似stub area 和totally stubby area的特点
可以提供包含ASBR
OSPF链路状态通告
LSA 7(NSSA External LSA,NSSA外部LSA)
NSSA区域重分发路由类型
N1、N2
经过NSSA区域ABR后转换为E1、E2
小结
每一种区域中允许泛洪的LSA
![](https://i-blog.csdnimg.cn/blog_migrate/188968b3128b82206b23c03632702cc3.png)
OSPF的路径类型的优先级
区域内路径:优先级1
区域间路径:优先级2
E1外部路径:优先级3
E2外部路径:优先级4
(1表示最高优先级,4表示最低优先级)
OSPF地址汇总的作用
地址汇总也是通过减少泛洪的LSA数量节省资源
可以通过屏蔽一些网络不稳定的细节来节省资源
减少路由表中的条目
虚链路
指一条通过非骨干区域连接到骨干区域的链路
虚链路的目的
通过一个非骨干区域连接一个区域到骨干区域
通过一个非骨干区域连接一个分段的骨干区域
![](https://i-blog.csdnimg.cn/blog_migrate/b03bb18c040fed6d156bedb99c126568.png)
配置虚链路的规则及特点
虚链路编写配置在两个ABR路由器之间
传送区域不能是一个末梢区域
虚链路的稳定性取决于其经过的区域的稳定性
虚链路有助于提供逻辑冗余
地址汇总也是通过减少泛洪的LSA数量节省资源
可以通过屏蔽一些网络不稳定的细节来节省资源
减少路由表中的条目