OSPF是一种链路状态协议,用于在自治内部的路由器之间交换路由信息,具有支持大型网络、占用资源少、路由收敛快等特点,采用Dijkstra的最短通路优待算法计算到达各个目标的最佳路由。
为适应大型网络配置的需要,OSPF协议引入“分层路由”的概念,将整体网络划分为较小的区域(Area),从而限制了路由信息传播的范围,每个区域都是一个独立的网络,区域内的路由器只保存该区域的链路状态信息,而OSPF主干网负责在各个区域之间传播路由信息。
1.OSPF区域
每个OSPF区域被指定了一个32位的区域标识符,用点分十进制表示,如主干区域的标识符为0.0.0.0。具体划分如下 :
- 标准区域:可以接收任何链路更新信息和路由汇总信息。
- 主干区域:连接各个区域的传输网络,其他区域都通过主干区域交换路由信息。主干区域具有标准区域的所有性质。
- 存根区域:不接收本地自治系统以外的路由信息,对自治系统以外的目标采用默认路由0.0.0.0。
- 完全存根区域:不接收自治系统以外的路由信息,也不接收自治系统内其他区域的路由汇总信息,发送到本地区域外的报文使用默认路由0.0.0.0。
- 不完全存根区域:类似于存根区域,但允许接收以类型7的链路状态公告发送的外部路由信息。
2.OSPF路由器
在多区域网络中,OSPF路由器可以按不同的功能划分为以下4种:
- 内部路由器:所有接口在同一区域内的路由器,只维护一个链路状态数据库。
- 主干路由器:具有连接主干区域接口的路由器。
- 区域边界路由器(ABR):连接多个区域的路由器,一般作为一个区域的出口。ABR为每一个连接的区域建立一个链路状态数据库,负责将所连接区域的路由摘要信息发送到主干区域,而主干区域上的ABR则负责将这些信息发送到各个区域。
自治系统边界路由器(ASBR):至少拥有一个连接外部自治系统接口的路由器,负责将外部非OSPF网络的路由信息传入OSPF网络。
3.OSPF报文
OSPF共5种报文,通过TCP连接传送。OSPF路由器启动后以固定时间间隔泛洪传播Hello报文,采用目标地址224.0.0.5代表所有的OSPF路由器。
表 1 OSPF报文类型
类型 | 报文类型 | 功能描述 |
1 | Hello | 用于发现相邻路由器 |
2 | 数据库描述DBD | 表示发送者的链路状态数据库内容 |
3 | 链路状态请求LSR | 向对方请求链路状态信息 |
4 | 链路状态更新LSU | 向邻居路由器发发送链路状态通告 |
5 | 链路状态应答LSAck | 对链路状态更新报文的应答 |
4.OSPF报文格式
OSPF报文格式如表 2表 3所示:
表 2 OSPF报文头
版本 | 类型 | 分组长度 |
路由器ID | ||
区域ID | ||
校验和 | 认证类型 | |
认证 | ||
认证 |
表 3 OSPF报文
OSPF报文头 | OSPF报文 |
- 版本:OSPF版本1已废弃,现在使用版本2。
- 类型:如表 1所示。
- 分组长度:整个OSPF报文的长度。
- 路由器ID:复用路由器环路接口的IP地址作为路由器标识,如果没有,则选择最大的接口IP地址作为标识。
- 区域ID:在多区域网络中,每个区域指定一个区域ID。
- 认证类型:OSPF支持不同的认证方法,对组播地址224.0.0.5发送的Hello发组要经过认证才能被接收。