OSPFv3概述
OSPFv3是OSPF(Open Shortest Path First,开放式最短路径优先)版本3的简称,主要提供对IPv6的支持,遵循的标准为RFC 2740(OSPF for IPv6)。
OSPFv3和OSPFv2在很多方面是相同的:
- Router ID,Area ID仍然是32位的。
- 相同类型的报文:Hello报文,DD(Database Description,数据库描述)报文,LSR(Link State Request,链路状态请求)报文,LSU(Link State Update,链路状态更新)报文和LSAck(Link State Acknowledgment,链路状态确认)报文。
- 相同的邻居发现机制和邻接形成机制。
- 相同的LSA扩散机制和老化机制。
OSPFv3和OSPFv2的不同主要有:
- OSPFv3是基于链路(Link)运行,OSPFv2是基于网段(Network)运行。
- OSPFv3在同一条链路上可以运行多个实例。
- OSPFv3是通过Router ID来标识邻接的邻居。OSPFv2则是通过IP地址来标识邻接的邻居。
OSPFv3的协议报文
和OSPFv2一样,OSPFv3也有五种报文类型,分别是Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
这五种报文有相同的报文头,但是它和OSPFv2的报文头有一些区别,其长度只有16字节,且没有认证字段。另外就是多了一个Instance ID字段,用来支持在同一条链路上运行多个实例。
OSPFv3的报文头如图1所示。
图1 OSPFv3报文头示意图
主要字段的解释如下:
- Version #:OSPF的版本号。对于OSPFv3来说,其值为3。
- Type:OSPF报文的类型。数值从1到5,分别对应Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
- Packet Length:OSPF报文的总长度,包括报文头在内,单位为字节。
- Instance ID:同一条链路上的实例标识。
- 0:保留位,必须为0。
OSPFv3的LSA类型
LSA(Link State Advertisement,链路状态通告)是OSPFv3协议计算和维护路由信息的主要来源。在RFC2740中定义了七类LSA,描述如下:
- Router-LSA:由每个路由器生成,描述本路由器的链路状态和开销,只在路由器所处区域内传播。
- Network-LSA:由广播网络和NBMA(Non-Broadcast Multi-Access)网络的DR(Designated Router,指定路由器)生成,描述本网段接口的链路状态,只在DR所处区域内传播。
- Inter-Area-Prefix-LSA:和OSPFv2中的Type-3 LSA类似,该LSA由ABR(Area Border Router,区域边界路由器)生成,在与该LSA相关的区域内传播。每一条Inter-Area-Prefix-LSA描述了一条到达本自治系统内其他区域的IPv6地址前缀(IPv6 Address Prefix)的路由。
- Inter-Area-Router-LSA:和OSPFv2中的Type-4 LSA类似,该LSA由ABR生成,在与该LSA相关的区域内传播。每一条Inter-Area-Router-LSA描述了一条到达本自治系统内的ASBR(Autonomous System Border Router,自治系统边界路由器)的路由。
- AS-external-LSA:由ASBR生成,描述到达其它AS(Autonomous System,自治系统)的路由,传播到整个AS(Stub区域除外)。缺省路由也可以用AS-external-LSA来描述。
- Link-LSA:路由器为每一条链路生成一个Link-LSA,在本地链路范围内传播。每一个Link-LSA描述了该链路上所连接的IPv6地址前缀及路由器的Link-local地址。
- Intra-Area-Prefix-LSA:每个Intra-Area-Prefix-LSA包含路由器上的IPv6前缀信息,Stub区域信息或穿越区域(Transit Area)的网段信息,该LSA在区域内传播。由于Router-LSA和Network-LSA不再包含地址信息,导致了Intra-Area-Prefix-LSA的引入。
在RFC 5187中定义了第十一类LSA,Grace-LSA。Grace-LSA由Restarter在重启时候生成的,在本地链路范围内传播。这个LSA描述了重启设备的重启原因和重启时间间隔,目的是通知邻居本设备将进入GR(Graceful Restart,平滑重启)。
OSPFv3的定时器
OSPFv3的定时器包括:
- OSPFv3的报文定时器
- LSA的延迟时间
- SPF定时器
- GR定时器
1. OSPFv3报文定时器
Hello报文周期性地被发送至邻居路由器,用于发现与维持邻居关系、选举DR与BDR。需要注意的是,网络邻居间的Hello时间间隔必须一致,并且Hello时钟的值与路由收敛速度、网络负荷大小成反比。
在一定时间间隔内,如果路由器未收到对方的Hello报文,则认为对端路由器失效,这个时间间隔被称为相邻路由器间的失效时间。
当一台路由器向它的邻接发送一条LSA后,需要等到对方的确认报文。若在设定的重传间隔时间内没有收到对方的确认报文,就会向邻接重传这条LSA。重传间隔的值必须大于一个报文在两台路由器之间传送一个来回的时间。
2. LSA的延迟时间
由于LSA在本路由器的LSDB(Link State Database,链路状态数据库)中会随时间老化(每秒加1),但在网络的传输过程中却不会随时间老化,所以有必要在发送之前就将LSA的老化时间增加上传送延迟时间。对于低速网络,该项配置尤为重要。
3. SPF定时器
当OSPFv3的LSDB发生改变时,需要重新计算最短路径,如果每次改变都立即计算最短路径,将占用大量资源,并会影响路由器的效率,通过调节SPF(Shortest Path First,最短路径优先)的计算延迟时间和间隔时间,可以避免在网络频繁变化时过多的占用资源。
4. GR定时器
在进行GR时,可能出现重建邻居失败的情况,这将导致设备长期处于GR过程中。GR定时器即GR的最长时间,当它超时时则退出GR,从而避免设备长期处于GR过程中。
原创文章,作者:中国IPv6网,如若转载,请注明出处:https://www.ipv6s.com/basis/routing/20100810502.html