一 OSPF协议介绍

一、基本概念和术语
1. 链路状态
OSPF路由器收集其所在网络区域上各路由器的连接状态信息,即链路状态信息(Link-State),生成链路状态数据库(Link-State Database) 。路由器把握了该区域上所有路由器的链路状态信息,也就等于了解了整个网络的拓扑状况 。OSPF路由器利用“最短路径优先算法(Shortest Path First, SPF)”,独立地计算出到达任意目的地的路由 。
2. 区域
OSPF协议引入“分层路由”的概念,将网络分割成一个“主干”连接的一组相互独立的部分,这些相互独立的部分被称为“区域”(Area),“主干”的部分称为“主干区域” 。每个区域就如同一个独立的网络,该区域的OSPF路由器只保存该区域的链路状态 。每个路由器的链路状态数据库都可以保持合理的大小,路由计算的时间、报文数量都不会过大 。
3. OSPF网络类型
根据路由器所连接的物理网络不同,OSPF将网络划分为四种类型:广播多路访问型(Broadcast multiAccess)、非广播多路访问型(None Broadcast MultiAccess,NBMA)、点到点型(Point-to-Point)、点到多点型(Point-to-MultiPoint) 。
广播多路访问型网络如:Ethernet、Token Ring、FDDI 。NBMA型网络如:Frame Relay、X.25、SMDS 。Point-to-Point型网络如:PPP、HDLC 。
4. 指派路由器(DR)和备份指派路由器(BDR)
在多路访问网络上可能存在多个路由器,为了避免路由器之间建立完全相邻关系而引起的大量开销,OSPF要求在区域中选举一个DR 。每个路由器都与之建立完全相邻关系 。DR负责收集所有的链路状态信息,并发布给其他路由器 。选举DR的同时也选举出一个BDR,在DR失效的时候,BDR担负起DR的职责 。
点对点型网络不需要DR,因为只存在两个节点,彼此间完全相邻 。协议组成OSPF协议由Hello协议、交换协议、扩散协议组成 。本文仅介绍Hello协议,其他两个协议可参考RFC2328中的具体描述 。
当路由器开启一个端口的OSPF路由时,将会从这个端口发出一个Hello报文,以后它也将以一定的间隔周期性地发送Hello报文 。OSPF路由器用Hello报文来初始化新的相邻关系以及确认相邻的路由器邻居之间的通信状态 。
对广播型网络和非广播型多路访问网络,路由器使用Hello协议选举出一个DR 。在广播型网络里,Hello报文使用多播地址224.0.0.5周期性广播,并通过这个过程自动发现路由器邻居 。在NBMA网络中,DR负责向其他路由器逐一发送Hello报文 。
二、协议操作
【一 OSPF协议介绍】第一步:建立路由器的邻接关系
所谓“邻接关系”(Adjacency)是指OSPF路由器以交换路由信息为目的,在所选择的相邻路由器之间建立的一种关系 。
路由器首先发送拥有自身ID信息(Loopback端口或最大的IP地址)的Hello报文 。与之相邻的路由器假如收到这个Hello报文,就将这个报文内的ID信息加入到自己的Hello报文内 。
假如路由器的某端口收到从其他路由器发送的含有自身ID信息的Hello报文,则它根据该端口所在网络类型确定是否可以建立邻接关系 。
在点对点网络中,路由器将直接和对端路由器建立起邻接关系,并且该路由器将直接进入到第三步操作:发现其他路由器 。若为MultiAccess 网络, 该路由器将进入选举步骤 。
第二步:选举DR/BDR
不同类型的网络选举DR和BDR的方式不同 。
MultiAccess网络支持多个路由器,在这种状况下, OSPF需要建立起作为链路状态和LSA更新的中心节点 。选举利用Hello报文内的ID和优先权(Priority)字段值来确定 。优先权字段值大小从0到255,优先权值最高的路由器成为DR 。假如优先权值大小一样,则ID值最高的路由器选举为DR,优先权值次高的路由器选举为BDR 。优先权值和ID值都可以直接设置 。

推荐阅读