简介
OSPF(Open Shortest Path First,开放最短路径优先)是一种广泛应用的链路状态内部网关协议,在计算机网络中扮演着关键角色,是重要的动态路由协议。
形成路由的算法是通过Dijkstra algorithm(迪杰斯特拉最短路径算法)
其运行流程可概括为“三张表”
一、领居表
顾名思义,领居表类似生活中的领居,就好比一本通讯录,上面记载着你和哪些人认识,对方的名字,联系方式等等,也就是建立了通信关系,这张表记录了与本路由器建立邻接关系的所有OSPF邻居路由器的信息。每台运行OSPF协议的路由器都会维护这张表,内容通常包括邻居路由器的Router ID、接口IP地址、邻居状态等
二、拓扑表,也叫链路状态数据库(LSDB)
拓扑表包含了整个OSPF域内所有路由器生成并广播的链路状态公告(LSAS) 。LSDB中的信息反映了整个OSPF网络的拓扑结构,每台路由器都有相同的LSDB。路由器通过LSA中的信息计算最短路径树(SPT),用于确定到达各个目的网络的最优路径。
这张表就像一张地图,标注了每个领居的的连接状态以及他们连接的网络路段情况,比如能到哪里,走哪条路最快,道路的情况如何,每一个OSPF域的路由器都有这么一套拓扑表(地图)并且是统一的。
三、路由表
路由表是路由器实际用来指导数据包转发的表项,存储了到达特定目的网络或主机的下一跳信息以及相关的度量值。在OSPF协议中,路由器根据链路状态数据库生成的最短路径树计算出最优路径后,将其转换为路由表项。路由表中的每一条路由都是通过执行(Dijkstra)SPF算法得到的结果。
就好像导航,能指引你下一步该走哪条道,左转还是右转,去不同的目的地最佳的路线是什么等等。
路由器的种类
IR | 内部区域(完全在区域内的路由器) |
ABR | 跨区域的路由器 |
BR | 骨干区域的路由器(area 0) |
ASBR | 跨协议的路由器(RIP-OSPF) |
结合图片一目了然
区域的类型
标准区域
末梢区域(STUB)
非完全末梢区域not so stubby
末节区域NSSA
类似于末梢区域,不接受自治系统外部路由(Type-5 LSA)。
但是,NSSA区域允许ASBR存在,ASBR可以通过发布Type-7 LSA来通告引入的外部路由信息。NSSA区域内的ABR将Type7 LSA转换为Type5 LSA,并将它们传播到其他区域。
NSSA区域不接受Type4 LSA即它不会从其他区域接收关于ASBR存在的汇总信息
完全NSSA区域
继承了NSSA的基本特性,在此基础上进一步过滤掉了Type3LSA
报文类型
hello报文
发现邻居
DBDs(database descriptor packets)
选举MASTER和SLAVE交换LSDB的摘要
LSRs(link state request)
向对方申请缺失的记录(LSA)
LSU(link state update)
更新信息
LSACKs(link state ack)
响应
通信过程
1.发现彼此-建立邻居关系
DOWN:刚刚启动
INIT:有了邻居
2-WAY:知道了彼此的存在,我知道你知道了我(很绕)
2.了解彼此
3.修复更新彼此的缺少的部分
LSA的类型
OSPF拓扑表(lsdb)的里的每条记录是LSA,LSA有多种类型
Type1:由每个路由器为其所在区域生成,描述了路由器本身所有接口的链路状态和成本
Type2: 在多路访问网络(如以太网)中,由被选举出的指定路由器DR生成,表示与DR相连的所有路由器及其接口状态
Type3:由ABR,生成,用于向其他区域通告本区域内部网络的汇总路由信息
Type4:也是由ABR生成,用于通告ASBR 的存在位置,不包含具体的外部路由信息
Type5:由ASBR生成,用于通告自治系统外部路由信息
还有一些6、7、9、10、11类型就不一一列举了
OSPF的 DR 和 BDR 选举
1、选举的目的
在一个区域内,路由器通过组播方式向相邻路由器发送链路状态信息,这样会造成整个网络流量过大,通过选举DR和BDR方式,从而区域内的其他路由器只向DR或BDR发送链路状态信息,减少网络中的组播流量,更节省带宽使网络更加稳定
2、选举的方式
区域内通过Router ID来进行选举DR和BDR
Router ID: OSPF区域内唯一标识路由器的IP地址
Router ID选取规则
选取路由器loopback接口上数值最高的IP地址 (loopback 路由器虚拟接口,可以进行收发路由协议报文,可以配置IP地址)
如果没有loopback接口,在物理端口中选取IP地址最高的
DR和BDR的选举方法
1.自动选举DR和BDR
网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR
2.手工选择DR和BDR
优先级范围是0~255,数值越大,优先级越高,默认为1
如果优先级相同,则需要比较Router ID,如果路由器的优先级被设置为0,它将不参与DR和 DBR的选举
路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的DR或BDR路由器(简单的说,如果一个区域内
已经存在DR和BDR,那么将无法通过修改路由器的优先级来强制更换
OSPF有两个组播地址:
224.0.0.5 代表所有ospf路由器 (DR和BDR使用此地址来发送更新到所有其他路由器)
224.0.0.6 代表DR(指定路由器),BDR (备份路中器) (其他路中器都向此地址来发送链路状态信息更新。
RIP协议和OSPF协议的对比
RIP和OSPF是完全不同的两种协议,基于最典型的不同算法拿来做对比可以很清楚的看到优缺点
RIP有两个版本一个是RIP V1 还有一个RIP V2基于V1改进
OSPF | RIP V1 | RIP V2 |
链路状态路由协议 | 距离矢量路由协议 | |
没有跳数限制 | RIP的15跳限制,超过15跳的路由被认为不可达 | |
可变长子网掩码 | 不支持可变长子网掩码 | 支持可变长子网掩码 |
收敛速度快 | 收敛速度慢 | |
组播发送链路状态更新 | 周期性广播更新整个路由表 | 周期性组播更新整个路由表 |