IPv6路由协议---IPv6动态路由(OSPFv3-3)
OSPFv3使用Link-local地址
该协议基于IPv6运行,在网络中同样采用链路本地地址来维护邻居关系并同步LSA数据库以实现网络信息同步。除了Vlink接口外的其他所有OSPFv3接口均采用链路本地地址作为源地址以及下一跳以发送OSPFv3数据包从而带来以下好处:无需配置IPv6全局地址即可构建完整的OSPFv3网络拓扑结构. 通过这种方式实现了网络拓扑结构与其IP地址的分离管理. 网络中的广播数据包不会传播至相邻链路中以避免不必要的数据扩散.
OSPFv3协议消息格式变化
1.协议包封装
OSPFv3直接运行于IPv6网络层之上。在OSFi包前可能附加一个或多个IPv6扩展头部,在此情况下Next Header字段配置为89以封装该特定的OSFi数据位图内容。
除了用于发现相邻路由器的Hello包之外,在该协议类别的数据包中仅发送给邻接路由器。
该协议类别的数据包仅发送给相邻路由器。
该协议类别的数据包仍分为原有五种类型,并且各类功能均未发生改变。
各类的数据位图功能依旧如常,并且所有这些信息仍然由该协议标准的数据位图头部中的type字段标识。
因此,在配置过程中需要注意遵循上述规定。

OSPFv3路由协议包的IPv6源地址和目的地址的选择逻辑与OSPFv2相同。特别是IPv6目标地址是AllSPFRouters、AllDRouters以及邻接路由器的IP地址三者之一。当然在IPv6中,除了virtual link之外,都使用link-local地址。
目标地址的选择方法为:在物理的点到点网络上,目标地址总是AllSPFRouters;在包括virtual link的所有其它类型的网络上,大多数OSPF包以单播发送,直接发送到邻接的另一端,也就是说目标地址是邻接路由器的IP地址。唯一的以单播发送包的情况发生在广播网络上,这时Hello包以组播目标地址AllSPFRouters发送,DR和BDR发送的LSU和LSAck的目标都是AllSPFRouters,而其它非DR和非BDR路由器发送的LSU和LSAck目标都是AllDRouters。
OSPFv3使用IPv6组播地址:
AllSPFRouters: 这个地址在IPv6中定义为FF02::5。所有运行OSPF的路由器都必须接收发送到这个组播地址的包。其中Hello包总是向这个地址发送的。其它的OSPF包需要根据目标地址选择逻辑来确定是否使用这个地址。
AllDRouters: 这个组播地址在IPv6中定义为FF02::6。链路上的DR和BDR必须接收发送到这个组播地址的包。OSPF包需要根据目标地址选择逻辑来确定是否使用这个地址。
注: 另外目标位组播地址的OSPFv3协议包不应该转发到其他链路上,因此其IPv6 Hop Limit值应该设置为1。

2.用Router-ID来标识邻居
在IPv6的OSPF中,在指定链路上,在每一个相邻路由器都会使用其Router ID来进行标识。与此相对而言,在IPv4的OSPF中:
- 在点对点网络以及虚拟连接上(virtual link),相邻路由器会以Router ID来进行标识;
- 而在广播(broadcast)、NBMA(Neighbor Broadcast MultiAddress)以及点对多点网络(point-to-multipoint)上,则会以对应的IPv4接口地址来进行标识。
OSPFv3之所以能实现这一改进是因为它成功地将协议包信息、网络拓扑结构以及具体的IPv6前导路由信息分离开来。这样一来,
相邻路由器就不再需要维护或配置与IPv6前导相关的信息,
它们仅仅扮演着网络中的节点角色,
因此无法依靠IP地址来进行描述。
这种设计模式类似于IS-IS协议:
节点就是节点,
只需要一个唯一的ID来进行识别即可;
而ID与该节点所具有的接口并没有直接关联。
这种变化带来的主要好处之一是:
OSPF的各种协议包及其附带的信息功能更加明确,
定位更加清晰,
理解更加直观,
扩展变得更加便捷。
此外,
这种变化还直接影响到OSPF包(包括Hello包)的接收过程以及相邻节点查找功能
3.泛洪范围的增加
在OSPFv3协议中,LSA的传播范围被整合为三种类型:
本地链路范围内使用的LSA类型:这种类型的LSA仅限于本地链路范围内进行广播。它是一种新引入的功能特性,并且所有新增的Link-LSAs都会采用这一类型。
区域内的LSA类型:该类LSA仅能在特定OSPF区域内传播。其中包括Router-LSAs、Network-LSAs、Inter-Area-Prefix-LSAs、Inter-Area-Routers-LSAs以及Intra-Area-Prefix-LSAs等。
AS类型的LSA用于全网传播:这类具有广泛传播能力的外部AS-external-LSAs可以在整个路由域内自由传播。
这些不同类型的LSD值已经被明确记录到每个LSD字段中,并且网络设备在处理这些数据包时会根据其指定的LSD值来执行相应的操作逻辑
4.用Router-ID来表示邻居
在IPv6的OSPF中,在一个给定链路上(一般而言),邻居路由器通常会使用其Router ID来进行标识。
5.验证的变化
OSPV3直接位于IPv6的网络层之上,并且其数据包头部紧随IPv6数据包头部之后排放。除此之外,所有带有地址信息的数据都被移除了.这样一来,.OSPV3实际上并不依赖于传统的网络协议架构.因此,在OSPVC中,所有的地址信息都以不同的标签形式被组织起来.

6.OSPF包格式变化
1.OSFP版本号将从OSFPv2升级至OSFPv3
2.在OSFPv3中的Hello包内,
实际上已经不再包含地址信息,
仅携带一个Interface ID。
该ID由构建该Hello包的源路由器分配,
用于标识其在此网络上的具体接口。
每个接口对应的Interface ID在其所属路由器上是唯一确定的。
如果该路由器在这条链路上被选作Designated Router(DR),
那么其所在的Interface ID将被定义为这条链路Network-LSA中的Link State Identifier(LSI)。

7.24位选项字段
Hello 包和Database description 包中的Options字段扩展成24位。

24位中的后6位已设置:
v6: 该参数用于指示该路由器或链路是否参与IPv6路由计算。当其值设为0时,则该路由器或链路将被排除在IPv6路由计算之外。
E位: 该字段描述了AS-external-LSA的泛洪方式及发送条件。具体而言,在Hello包中仅当目标区域能接收AS-external-LSA时(如非stub区域),则会设置为1;否则设为0。这一配置对建立邻接关系至关重要:在DD包中若目标区域属于非stub类型则设为1;若是stub类型则设为0;而在LSA头中则根据类型(骨干型、非stub型及AS-external型)统一设为1;而针对stub型LSA则设为0。此字段仅用于信息传播而不影响路由表的构建过程。
MC位: 此一bit字段主要用于标识该路由器是否运行Multipath OSPF(MOSPF)。
N位: 该字段控制对Type-7 LSAs的处理逻辑:仅当接口所属区域被标记为NSSA区域时才设为1以触发相关处理操作。
R位: 此bit字段指示当前公告者是否具备路由器身份特征。“若清零则表示此公告者不具备转发数据的能力;因此包含其 routes 的路径将无法参与全局路由计算。”然而对于多宿主机场景下希望共享OSPF routes却不进行数据转发的情况,则可通过此字段进行配置以实现特定功能需求。
DC位: 该字段用于控制对按需电路(Demand Circuits)的支持情况。“若将其设置为1,则表示相关接口上的Hello包及Database Description包均会携带DC标记以便于后续设备感知。”这一机制有助于节省带宽资源并确保点对点电路能够正常运作。
Options 字段允许OSPF 路由器声明自身的能力并与其他路由器交互告知这些能力。
