OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),其核心思想是SPF,使用著名的迪克斯彻(Dijkstra)算法来计算最短路径树。OSPF支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等。
在OSI模型中工作于网络层,在TCP/IP层中工作于应用层。IP协议89。
工作过程
- 每台路由器向邻居发送Hello包形成邻居关系,邻居之间还会定时发送Hello数据包来维护邻居关系,当没有再收到邻居的响应包,就认为关系破裂。
- 每个路由器都会创建一个链路状态数据包 LSP,数据包中包含该路由器直连的每条链路的状态,并只向已经建立邻居关系的路由器发送LSP。
- 每台路由器将LSP泛洪到所有邻居,路由器会立即将这个LSP从除接收该LSP的接口以外的所有接口发出,邻居会将LSP存储到数据库中。
- 在使用链路状态泛洪过程将自身的LSP传播出去后,每台路由器都将拥有来自整个路由区域内所有链路状态路由器的LSP,都可以使用SPF算法来构建SPF树。这些LSP存储在链路状态数据库LSDB中。有了完整的链路状态数据库,即可使用该数据库和最短路径优先(SPF)算法来计算通向每个网络的首选(即最短)路径。
工作原理
组播
OSPF是以组播方式发送LSA包,IANA(Internet Assigned Number Authority)规定将D类地址从224.0.0.0到239.255.255.255分配给IP组播。其中224.0.0.5、224.0.0.6分别分配给OSPF路由器(运行OSPF进程的接口)和OSPF DR(Designated Router)。只要在OSPF区域内的接口都会接收和发送OSPF数据。
三张表
邻居表(Peer table):
OSPF是一种可靠的路由协议,要求在路由器之间传递链路状态通告之前,需先建立OSPF邻居关系,hello报文用于发现直连链路上的其他OSPF路由器,再经过一系列的OSPF消息交互最终建立起全毗邻的邻居关系,其中两者之间需要经历几个邻居关系状态,这也是一个重要的知识点。路由器在各个激活的OSPF的接口上维护的邻居都列在邻居表中