一、OSPF路由协议
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
两个版本:
IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)
在这里估计你要打三个问号了???什么是基于链路状态的内部网关协议,什么又是开放式最短路径树,为什么会出现OSPF呢?接下来就让我娓娓道来!
首先来展开第一个疑问:为什么会出现OSPF呢?
肯定就有人说,出现任何❤️技术都是为了解决某个领域的难题,不错,OSPF的出现正是解决日益庞大的网络如何选路并到达目的地的难题,因特网最开始出现的时候是局限在某个区域中,而随着因特网的普及,越来越多的地区和区域都加入进来,到如今更是与我们生活融为一体,不可分割。早期的时候可能就是几个人互联的网络,或者是一个小型的区域网络,而随着组织和企业的加入,一个组织越来越多的人机开始交互,日益庞大,导致网络互联的成本和难度日益提高,一个数据包的选路越来越复杂,靠人手工维护陷入困境(静态路由),相应的出现了自动学习的方法(动态路由)。
最开始的RIP协议,在早期解决了部分问题,但随着时间的推移,RIP的短板也越来凸显:
RIP:RIP是一种基于距离矢量算法的路由协议
收敛慢;
易产生路由环路;
可扩展性差,只支持最大16跳,大规模网络不合适;
不支持VLSM
OSPF能更好的解决RIP无法解决的问题
历史就是如此相似,混乱的时代总能产生英雄;而在网络江湖中,OSPF也应运而生。
OSPF就是为RIP的短板而生,集大成者得天下,而现在网络江湖中,OSPF已霸占主流;RIP也就退出历史潮流,OSPF在IGP中如鱼得水,那到底是如何做到的呢?请继续动动手指
二、OSPF关键要素
OSPF是基于链路状态的路由协议,那什么是链路状态呢?
RIP是距离矢量路由协议,是跳跃点来作为路由选路,并不构建全局的面,简单理解可以说RIP是点,OSPF是以点构建成面,也就是每个OSPF上都有一套全局的地图可供选路。
每个运行OSPF的路由器都有一张全局的地图库进行查询,RIP没法做到,那具体都有哪些因素影响呢?
OSPF关键要素--五种报文
OSPF是运行在网络层协议,IP协议号 89,其实在我理解OSPF是跨层封装,OSPF将协议包封装在IP包中,可以看如下图所示:
如下图所示:
OSPF报文类型说明:
故OSPF是划分在IP层中,但是在整个TCP/IP协议簇中,很多协议其实并不能确定是属于那个协议,有些是跨协议,有些协议在灰色地带,最主要的还是看具体解决什么问题,我可以说OSPF是在传输层,BGP属于应用层,所以不能很粗略的定义在哪一层,OSPF是基于IP的,BGP基于TCP的,报文封装在下层,而解决的问题是网络层问题,看计算机网络自顶向下方法一书可以看出,故不要太局限严格定义在哪一层的协议。
OSPF数据包首部逻辑结构:
抓包结构:
OSPF关键要素--三张表
OSPF协议的运行需要三张表,邻居表、链路状态数据库、OSPF路由表。如下以华为示例:
邻居表:display ospf peer
通过Hello报文形成邻居
用邻居机制来维持路由
邻居表存储双向通信的OSPF路由器列表信息
链路状态数据库(LSDB):display ospf peer
通过LSU报文更新LSDB
描述拓扑信息的LSA存储在LSDB中
路由表:display ospf routing
OSPF计算出来的路由将会加载到路由表
路由优先级 域内>域间>域外 1/2 >NSS区域 1/2
三、OSPF协议原理
启动OSPF,发送hello包,建立邻居关系,泛洪LSA,每台路由器汇总LSA,形成LSDB,链路状态数据库生成带权有向图,每台运行OSPF路由器以自己为根节点计算最小路径树,最终形成每台路由器的路由表加载到路由器内存中。
LSA泛洪:
运行链路状态路由协议的路由器都会进行链路状态公告LSA (Link State Advertisement)泛洪,LSA中包含了路由器已知的接口状态、接口IP地址、掩码、开销、网络类型、宣告路由ID和等信息。
通俗点讲就是LSA把路由器邻居相互之间的路由信息和拓扑信息进行握手交换。
建立LSDB:
收到LSA的路由器都可以根据LSA提供的信息建立自己的链路状态数据库LSDB(Link State Database)。
通俗点讲就是每台路由器都会收到网络中其他的路由器发送过来的LSA信息,这些所有的LSA信息构成了LSDB。这里需要注意的是当网络稳定后,网络中的所有设备应该是有相同的LSDB的。
建立最短路径树:
运行OSPF协议的路由器在LSDB的基础上使用SPF算法进行运算,建立起到达每个网络的最短路径树。
路由计算:
通过最短路径树得出到达目的网络的最优路由,并将其加入到IP路由表中。
OSPF从最开始的邻居建立到最终路由表的加载是有一个过程的,整个过程分7个状态,分别都是不同的OSPF数据报文交互的结果。如下图:
关于OSPF协议状态机下文讲结合实际抓包和图文着重分解。
更多文章请关注网络小斐
,