开放式最短路径优先(Open Shortest Path First,OSPF)是目前广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。
适用于IPv4的OSPFv2协议定义于RFC 2328,RFC 5340定义了适用于IPv6的OSPFv3。
多个路由跑相同路由进程协议的区域称为AS区域系统,能自我管理。
在区域内部跑的进程协议,如:RIP,OSPF,ISIS等
在区域外跑的进程协议,如BGP
路由器向自己的直连网段发送信息库,由此让别的路由器学习到自己的直连网段和自己学习到别的路由器的直连网段,这样就能进行收敛。
第一步,建立邻接关系:A通过建立邻接关系,学习到所有的链路状态信息,即所有的网段信息。
第二步,A将学习到的链路状态信息更新到链路状态数据库
第三步,A将链路状态数据库通过 Dijkstra(迪杰斯特拉)算法,算出A到达每一个地点的最短路径,形成最短路径树。
第四步,A根据最短路径树生成路由表。
为了适应大型网络,ospf在AS内划分多个区域
每个ospf路由器只维护所在区域的完整链路状态信息
区域id:区域id可以表示成一个十进制的数字,也可以表示成一个IP
骨干区域(area0):只有一个,负责区域间路由信息传播
非骨干区域必须经过骨干区域转发,所有区域必须和骨干区域直接连接。
ospf区域内唯一标识路由器的IP地址
Router ID选取规则
选取路由器loopback接口上数值最高的IP地址
如果没有loopback接口,在物理端口中选取IP地址最高的
也可以使用router-id命令指定Router ID(32位公网IP地址)–常用
指定路由器 (DR):DR 负责使用该变化信息更新其它所有 OSPF 路由器(DRother)。
备用指定路由器 (BDR):BDR 会监控 DR 的状态,并在当前 DR 发生故障时接替其角色。
其他路由器(DRothers)只和DR及BDR形成邻接关系
其他路由器发送信息只能到达DR 和BDR(一个组播) ,DR再发送通告信息(第二个组播)。其中存在两个组播信息。
DR 和 BDR 负责监控其他路由发来的信息。
路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的DR或BDR路由器
Drother会通过224.0.0.6向DR和BDR通告网络状态信息,DR会通过224.0.0.5向所有邻居通告信息
COST=10^8/BW BW(带宽) ,COST数制越小越好,说明带宽越高
COST越低,带宽越高,路径越短。
最短路径是基于接口指定的代价cost计算的
承载在IP数据包内,使用协议号89
1、Hello 发现邻居并建立和维护邻居关系(Hello报文)
2、DataBase Description 检查所有路由器的链路状态数据库(LSDB)是否同步(数据库描述报文DBD)
3、Link-State Request 向另外一台路由器请求特定的链路状态记录 (链路请求报文LSR)
4、Link-State Update 发送被请求的链路状态记录 (链路回应报文LSU)
5、Link-State Acknowledgment 对其他类型的分组进行确认 (链路确认报文LSAck)
改善网络的可扩展性
快速收敛
内部路由器:只保存本区域内的链路状态信息
区域边界路由器(ABR):用来连接区域0(骨干区域)和其他区域
自治系统边界路由器(ASBR):用来连接ospf的AS与外部其他的路由
骨干区域area 0
非骨干区域–根据能够学习的路由种类来区分
标准区域
末梢区域(stub)
完全末梢区域(totally stubby)
非纯末梢区域(NSSA)
每个路由器都创建了由每个接口、对应的相邻节点和接口速度组成的数据库
链路状态数据库中每个条目称为LSA(链路状态通告),常见的有六种LSA类型(注意是没有type 6的)