OSPFv3基本原理
OSPFv3是运行于IPv6的OSPF路由协议(RFC2740),它在OSPFv2基础上进行了增强,是一个独立的路由协议。
- OSPFv3在Hello报文、状态机、LSDB、洪泛机制和路由计算等方面的工作原理和OSPFv2保持一致。
- OSPFv3协议把自治系统划分成逻辑意义上的一个或多个区域,通过LSA(Link State Advertisement)的形式发布路由。
- OSPFv3依靠在OSPFv3区域内各设备间交互OSPFv3报文来达到路由信息的统一。
- OSPFv3报文封装在IPv6报文内,可以采用单播和组播的形式发送。
OSPFv3和OSPFv2的相同点。
基本概念: 区域划分及路由器类型
- 路由计算影响参数:优先级、度量值
- 支持的网络类型: Broadcast(广播类型)、NBMA、P2P(点到点类型)、P2MP(点到多点类型)。
- 报文类型: Hello报文、DD报文、LSR报文、LSU报文和LSAck.报文。
工作原理:
- 邻居关系的建立及邻居状态的转换
- DR 与 BDR的选举
- LSA泛洪机制
- 路由计算过程
OSPFv3与OSPFv2的不同点
OSPFv3基于链路运行以及拓扑计算,而不再是网段。
OSPFv3支持一个链路上多个实例。
OSPFv3报文和LSA中去掉了IP地址的意义,且重构了报文格式和LSA格式。
- OSPFv3报文和Router LSA/Network LSA中不包含IP地址。
- OSPFv3的LSA中定义了LSA的泛洪范围。
- OSPFv3中创建了新的LSA承载IPv6地址和前缀。
- OSPFv3邻居不再由IP地址标识,只由Router ID标识
- 新增两种LSA
- Link LSA:用于路由器宣告各个链路上对应的链路本地地址及其所配置的IPv6全局地址,仅在链路内洪泛。
- Intra Area Prefix LSA:用于向其他路由器宣告本路由器或本网络(广播网及NBMA)的IPv6全局地址信息,在区域内洪泛。
- OSPFv3只通过Router ID来标识邻居
OSPFv2在BMA、NBMA、P2P和P2MP网络中是通过IPv4接口地址来标识,而在Vlink网络中是通过Router ID来标识。
OSPFv3只通过Router ID来标识邻居,这样即使没有配置IPv6全局地址,或是IPv6全局地址配置都不在同一网段,OSPFv3的邻居还是可以建立并维护的,以达到“拓扑与地址分离”的目的。 - OSPFv3支持一个链路上多个进程
一个OSPFv2物理接口,只能和一个多实例绑定。但一个OSPFv3物理接口,可以和多个多实例绑定,并用不同的Instance ID区分。这些运行在同一条物理链路上的多个OSPFv3实例,分别与链路对端设备建立邻居及发送报文,且互不干扰。这样可以充分共享同一链路资源。
[R1-GigabitEthernet0/0/0] ospfv3 1 area 0.0.0.0 instance 1
[R1-GigabitEthernet0/0/0] ospfv3 2 area 0.0.0.0 instance 2
- OSPFv3利用IPv6链路本地地址
IPv6使用链路本地(Link-local)地址在同一链路上发现邻居及自动配置等。运行IPv6的路由器不转发目的地址为链路本地地址的IPv6报文,此类报文只在同一链路有效。链路本地单播地址从FE80/10开始。
OSPFv3是运行在IPv6上的路由协议,同样使用链路本地地址来维持邻居,同步LSA数据库。除Vlink外的所有OSPFv3接口都使用链路本地地址作为源地址及下一跳来发送OSPFv3报文。
OSPFv3报文
OSPFv3与OSPFv2使用相同的协议号89。
OSPFv2: IPv4报文头部中的协议号(Protocol)为89
OSPFv3: IPv6报文头部中的下一报头号(Next Header)为89
OSPFv3与OSPFv2类似,使用组播地址作为OSPF报文目的地址。
OSPFv2使用IPv4组播地址:
OSPF IGP Routers: 224.0.0.5;OSPF IGP DR : 224.0.0.6
OSPFv3使用IPv6组播地址:
OSPF IGP Routers: FFO2::5;OSPF IGP DR: FF02::6
OSPFv3和OSPFv2头部内容不同:
取消了认证字段,新增instance lD字段
变化点:
lnterface ID: 4 Byte,唯一标识了建立连接的(发送Hello报文的)接口。
Options:扩展到3 Byte,可选项。与OSPFv2相比,增加了AT位、R位和v6位。
- AT:表示是否支持OSPFv3认证。
- R:指明始发路由器是否具备转发能力
- V6:表示是否参与IPv6路由计算。
OSPFv3和OSPFv2LSA的头部内容不同:
OSPFv2取消了LSA头部中的Option字段,扩展了LS type字段,增加U bit和S bit;
U位标识了对未知LSA的处理方法,即标识了不识别LSA功能代码的路由器应如何处理LSA。
- U=0:把此LSA当作具有链路本地泛洪范围来对待,从而只能泛洪到本地链路上
- U=1:把此LSA当作类型已知的LSA来处理,也就是存储下来并泛洪出去。
S2 S1位标识了LSA的泛洪范围。
- S2 S1=00:链路本地范围内,即只在始发链路上泛洪。
- S2 S1=01:区域范围内,即泛洪到始发区域内的所有路由器。
- S2 S1=10:AS范围内,即泛洪到本AS的所有路由器。
- S2 S1=11:预留。
LSA类型
Type3: Inter-Area-Prefix-LSA
与OSPFv2类似,由ABR产生,描述区域内某个IPv6地址前缀的路由,并通告给其他相关区域。每个IPv6地址前缀,ABR都会单独发送一个Type3的LSA。
重要字段介绍(描述前缀的三元组)︰
- PrefixLength: 1 Byte,前缀的比特数。
- PrefixOptions: 1 Byte,表示这个前缀的一些特性,以便在各种不同的路由计算时做相应的判断和处理。PrefixOptions字段格式如下:
- P:传播位。如果一个NSSA区域的前缀需要被ABR传播出去,就需要设置这一位。
- MC:组播位。如果设置为1,则这个前缀应该纳入组播计算中,否则不纳入组播计算。
- LA:本地地址位。如果设置为1,则这个前缀是路由器的一个接口地址。
- MU:非单播位。如果设置为1,则这个前缀不会纳入IPv6单播路由计算中。
- a Address Prefix:变长,lPv6地址前缀。
8类LSA:Link-LSA
每个设备都会为每个链路产生一个Link-LSAI仅在始发链路内泛法。
Link-LSA 作用:
- 向该链路上其他路由器通告本接口的链路本地地址。
- 向该链路上其他路由器通告本接口的IPv6前缀列表。
- 向该链路上其他路由器通告本链路始发的Network-LSA中设置的可选项。
Type9: Intra-Area-Prefix-LSA
在OSPFv2中,可以通过Type1和Type2的LSA来描述拓扑信息和网段信息;而OSPFv3的此两类LSA仅包含拓扑信息
Type9 LSA描述的是网段信息,只在所属的区域内传播,它需要依赖于拓扑信息,才能实现OSPFv3的路由计算。其类型可以分为两种:
- 每台设备均产生描述与Router-LSA相关联的IPv6前缀地址的Type9 LSA。
- DR会产生描述与Network-LSA相关联的IPv6前缀地址的Type9 LSA。