OSPF(Open Shortest Path First)
OSPF(Open Shortest Path First)是一个内部网关协议(Interior Gateway Protocol,简称IGP)。与RIP相对,OSPF是链路状态路有协议,而RIP是距离向量路由协议。 链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。
基本概念和术语
链路状态
OSPF路由器收集其所在网络区域上各路由器的连接状态信息,即链路状态信息(Link-State),生成链路状态数据库(Link-State Database)。路由器掌握了该区域上所有路由器的链路状态信息,也就等于了解了整个网络的拓扑状况。OSPF路由器利用“最短路径优先算法(Shortest Path First, SPF)”,独立地计算出到达任意目的地的路由。
区域
OSPF协议引入“分层路由”的概念,将网络分割成一个“主干”连接的一组相互独立的部分,这些相互独立的部分被称为“区域”(Area),“主干”的部分称为“主干区域”。每个区域就如同一个独立的网络,该区域的OSPF路由器只保存该区域的链路状态。每个路由器的链路状态数据库都可以保持合理的大小,路由计算的时间、报文数量都不会过大。
共有五种区域的主要区别在于它们和外部路由器间的关系:
标准区域: 一个标准区域可以接收链路更新信息和路由总结。
主干区域(传递区域):主干区域是连接各个区域的中心实体。主干区域始终是“区域0”,所有其他的区域都要连接到这个区域上交换路由信息。主干区域拥有标准区域的所有性质。
存根区域(stub Area):存根区域是不接受自治系统以外的路由信息的区域。如果需要自治系统以外的路由,它使用默认路由0.0.0.0。
完全存根区域:它不接受外部自治系统的路由以及自治系统内其他区域的路由总结。需要发送到区域外的报文则使用默认路由:0.0.0.0。完全存根区域是Cisco自己定义的。
不完全存根区域(NSAA): 它类似于存根区域,但是允许接收以LSA Type 7发送的外部路由信息,并且要把LSA Type 7转换成LSA Type 5。
OSPF中的四种路由器
在OSPF多区域网络中,路由器可以按不同的需要同时成为以下四种路由器中的几种:
1. 内部路由器:所有端口在同一区域的路由器,维护一个链路状态数据库。
2. 主干路由器:具有连接主干区域端口的路由器。
3. 区域边界路由器(ABR):具有连接多区域端口的路由器,一般作为一个区域的出口。ABR为每一个所连接的区域建立链路状态数据库,负责将所连接区域的路由摘要信息发送到主干区域,而主干区域上的ABR则负责将这些信息发送到各个区域。
4. 自治域系统边界路由器(ASBR):至少拥有一个连接外部自治域网络(如非OSPF的网络)端口的路由器,负责将非OSPF网络信息传入OSPF网络。
OSPF链路状态公告类型
OSPF路由器之间交换链路状态公告(LSA)信息。OSPF的LSA中包含连接的接口、使用的Metric及其他变量信息。OSPF路由器收集链接状态信息并使用SPF算法来计算到各节点的最短路径。LSA也有几种不同功能的报文,在这里简单地介绍一下:
LSA TYPE 1:router LSA由每台路由器为所属的区域产生的LSA,描述本区域路由器链路到该区域的状态和代价。一个边界路由器可能产生多个LSA TYPE1。
LSA TYPE 2:network LSA由DR产生,含有连接某个区域路由器的所有链路状态和代价信息。只有DR可以监测该信息。
LSA TYPE 3:summary LSA由ABR产生,含有ABR与本地内部路由器连接信息,可以描述本区域到主干区域的链路信息。它通常汇总缺省路由而不是传送汇总的OSPF信息给其他网络。
LSA TYPE 4:Summary LSA由ABR产生,由主干区域发送到其他ABR, 含有ASBR的链路信息,与LSA TYPE 3的区别在于TYPE 4描述到OSPF网络的外部路由,而TYPE 3则描述区域内路由。
LSA TYPE 5:AS External LSA由ASBR产生,含有关于自治域外的链路信息。除了存根区域和完全存根区域,LSA TYPE 5在整个网络中发送。
LSA TYPE 6:multicast OSPF LSA,MOSF可以让路由器利用链路状态数据库的信息构造用于多播报文的多播发布树。
LSA TYPE 7:Not-So-Stubby LSA由ASBR产生的关于NSSA的信息。LSA TYPE 7可以转换为LSA TYPE 5。
协议类型
Hello报文,通过周期性地发送来发现和维护邻接关系;
DD(链路状态数据库描述)报文,描述本地路由器保存的LSDB(链路状态数据库);
LSR(LS Request)报文,向邻居请求本地没有的LSA;
LSU(LS Update)报文,向邻居发送其请求或更新的LSA;
LSAck(LS ACK)报文,收到邻居发送的LSA后发送的确认报文。
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。
指派路由器(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的配置
OSPF Config/Process
Process ID:即 OSPF路由进程ProcessID必须指定范围在1-65535,多个OSPF进程可以在同一个路由器上配置,但最好不这样做。多个OSPF进程需要多个OSPF数据库的副本,必须运行多个最短路径算法的副本。ProcessID只在路由器内部起作用,不同路由器的ProcessID可以不同。
OSPF Config/General
Router ID:即该router的IP地址
ASBR::Autonomous System Border Router 至少拥有一个连接外部自治域网络(如非OSPF的网络)端口的路由器,负责将非OSPF网络信息传入OSPF网络。
ExtLsaCount:在连接状态数据库(LSDB)中,外部连接状态通告(LSA)的数量。
ExtLsaCksumSum:外部连接状态通告的校验和,决定在路由器的连接状态数据库中是否有个连接变化。
TOSRouteSupport:路由器是否支持TOS
OrgnNewLsa:新产生的LSA的数量,Router每产生一个该数量增加。
RxNewLsa:接受到的LSA
ExtLsaDbLimit:在连接状态数据库中存储的自治系统外部LSA的最大数量。
MulticastExt:该router是否转发多播报文,基于OSPF多播扩张中定义的算法。Bit 0表示转发多播报给router直接连接的区域;bit 1表示在OSPF区域间转发;bit 2表示在自治系统之间转发。
ExitOverflowIntrvl:在路由器进入Overflow状态时,试图离开Overflow状态的时间间隔。
DemandExt:
OSPF Config/Area
将该router加入到某个区域
Area:网络区域ID area-id在0-4294967295内的十进制数,也可以是带有IP地址格式的x.x.x.x。当网络区域ID为0或0.0.0.0时为主干区域。还有标准区域、存根区域(StubArea)、不完全存根区域(NSSA)之分。不同网络区域的路由器通过主干域学习路由信息。
AuthType:可以在相同OSPF区域的路由器上启用身份验证的功能,只有经过身份验证的同一区域的路由器才能互相通告路由信息。在默认情况下OSPF不使用区域验证。通过两种方法可启用身份验证功能,纯文本身份验证和消息摘要(md5)身份验证。纯文本身份验证传送的身份验证口令为纯文本,它会被网络探测器确定,所以不安全,不建议使用。而消息摘要(md5)身份验证在传输身份验证口令前,要对口令进行加密,所以一般使用此种方法进行身份验证。 使用身份验证时,区域内所有的路由器接口必须使用相同的身份验证方法。为起用身份验证,必须在路由器接口配置模式下,为区域的每个路由器接口配置口令。
ImportAsExt:区域对自治系统外部LSA的输入。
SPFRuns:内部区域路由表已经通过区域的LSDB计算的次数
AbrCount:该区域内区域边界路由器的数量
AsbrCount:该区域内自治系统边界路由器的数量
AreaLsaCount:在链路状态数据库中链路状态通告的数量
AreaLsaChsumSum:在链路状态数据库中链路状态通告的校验和的和,不包括外部链路状态通告。
AreaSummary:该变量控制进入存根区域的summary LSA的输入;noAreaSummary表示路由器既不产生也不传播summary LSA进入存根区域;sendAreaSummary表示路由器既要汇总也要传播LSA
OSPF Config/StubArea
存根区域:存根区域是不接受自治系统以外的路由信息的区域。如果需要自治系统以外的路由,它使用默认路由0.0.0.0。
Metric:Metric值。
MetricType:用默认路由进行通告时使用的Metric类型。
OSPF Config/LinkStateDb
OSPF路由器收集其所在网络区域上各路由器的连接状态信息,即链路状态信息(Link-State),生成链路状态数据库(Link-State Database)。路由器掌握了该区域上所有路由器的链路状态信息,也就等于了解了整个网络的拓扑状况。OSPF路由器利用“最短路径优先算法(Shortest Path First, SPF)”,独立地计算出到达任意目的地的路由。OSPF的LSA中包含连接的接口、使用的Metric、序列号(seq)、报文号(I)、结尾标识(M)及主从标志(MS)。OSPF路由器收集链接状态信息并使用SPF算法来计算到各节点的最短路径。
LSAType:连接状态通告的类型,有各自的通告格式
LSID:是LSA的特定域包含一个router ID或IP Address,指定这个通告描述的一片路由域
RtrID:标示源路由器
Seq:用于检测旧的或重复的LSA,该值线性增加
Age:该LSA的生存了时间
Chsum:通告内容中出了age域的所有内容的校验和
LsdbAdv:整个链路状态通告,包括它的头部。
OSPF Config/AreaRange
IP Address和IP Mask确定的一段IP地址
Address:子网地址
Mask:是子网掩码
Effect:触发指示的summary的通告或使子网不被通告到外部区域
OSPF Config/Host
区域内该router可达到的主机路由表。
OSPF Config/Interface
配置OSPF接口参数
Type:该连接的网络类型。
Priority:接口优先级,用于多播网络的指定路由器的选择计算。
TransitDelay:传输时延,指在OSPF链路接口之间传输一个链路状态更新包需要的时间。
ReTransitIntvl:重传间隔是指链路状态的重传间隔时间。如果一个路由器向相邻路由器发送一个新的链路状态包,在没有收到对端的确认包时,将发生重传。
HelloIntvl::Hollo间隔,OSPF路由器定期向邻接路由器发送HELLO数据包,以探寻相邻路由器的状态。其探寻间隔可以进行设置。
DeadIntvl:在该路由器的邻居在该时间内看到其hello报文,就认为该路由器处于非活动状态。
PollingIntvl:Hello报文发送给处于非活动状态的邻居。
DR:Designated Router指定路由器
BDR:备份指定路由器
Authkey:认证密码
MulticastFwding:多播转发类型
AuthType:认证类型
OSPF Config/Metric
设置被Interface Index指示的非虚拟接口的具体TOS Metric
OSPF Config/VirtualInterface
关于路由器的虚拟接口表
OSPF Config/Neighbor
关于某个接口连接的邻居的信心
OSPF Config/VirtualNeighbor
由process ID、area ID、router ID确定的虚拟邻接点信息
OSPF Config/ExLinkStateDb
某个外部连接状态通告
OSPF Config/RouteGroup
OSPF的路由组
OSPF Config/AreaAggregate
由IP Address和IP Mask及LSDB类型确定的一组地址范围。