OSPFv3特性
1.OSPFv3基于链路运行
OSPFv3不需要考虑是否配置在同一网段,只要在同一链路,就可以不配置IPv6全局地址而直接建立邻接关系来计算和传递路由信息。
OSPFv2版本是基于IP子网运行
(1)同一链路上的所有节点都必须处于同一个IP子网或网络内。
(2)邻居关系建立的前提之一两个相连接的接口必须处于同一个IP子网内。
(3)每一条路由的下一跳地址都是和路由器接口处于同一网段的IP地址。
OSPFv3是基于链路运行
(1)同一链路上的两个节点不必具有相同的前缀
(2)独立于网络协议,容易扩展适应各种协议
2.OSPFv3编址性语义被取消
OSPFv2协议的数据格式定义的与IP协议密切相关,协议包括和LSA中的许多字段都是来自网络上的某个IP地址,或掩码,或某个IP子网号。
OSPFv3利用IPv6的链路本地地址来传递网络拓扑信息,但是拓扑信息里不包含IPv6的地址。
OSPFv3使用Router-LSA和Network-LSA反映网络拓扑信息,采用专门的LSA来传递IPv6的前缀信息。这样做的目的就是为了使“拓扑与地址分离”,OSPFv3可以不依赖IPv6全局地址的配置来计算出OSPFv3的拓扑结构。IPv6全局地址仅用于Vlink接口寄报文的转发。
3.OSPFv3链路本地地址的使用
OSPFv3协议使用链路本地地址作为路由的下一跳,拓扑与前缀信息的分离传递,OSPFv3可以不依赖IPv6全局地址配置而计算出OSPFv3的拓扑结构。
IPv6在RFC2373中定义了链路本地(Link-local)地址用于一个单一链路上,其目的是完成邻居发现(Neighbor Discovery)和自动配置(auto-configuration)等功能。IPv6路由器不转发源地址为link-local类型的包。Link-local单播地址范围为IPv6底地址范围FE80::/10。
OSPFv3假定,每个路由器的每个接口上都分配了link-local地址。除了在virtual link之外,在所有的OSPF接口上,发送的OSPF包都使用该接口的link-local单播地址作为源地址。一个路由器可以学习到在这个网段上相连的所有其它路由器的link-local地址,它使用这些link-local地址作为下一跳来转发包。
注: 在Virtual Link上,必须使用Global Scope或者site-local地址作为OSPF协议包的源地址。
由于链路本地地址只在本链路上有意义,因此它不应该泛洪(flood)到本链路之外的任何地方。因此OSPFv3规定,Link-local地址出只出现在Link-LSA中,而不允许出现在其它的LSA中。特别是不能在inter-area-prefix-LSA、AS-external-LSA或intra-area-prefix-LSA中公告。
4.OSPFv3使用专用LSA来发布前缀
在OSPFv2中,区域内部的IP子网和网络信息是由Router-LSA和Network-LSA来完成的。但是Router-LSA和Network-LSA也同时负责传递网络拓扑信息,所以整个OSPF拓扑结构的计算和IP子网信息是紧紧捆绑在一起的。可以说OSPFv2的拓扑就是IP子网和路由器形成的拓扑。所以说OSPFv2是“基于IP子网”来运行的。
为了克服前一版本的种种弊端,实现网络协议独立性,在OSPFv3中把Router-LSA和Network-LSA从IP前缀信息的发布功能解放出来,而只用它们来发布拓扑信息。发布IPv6前缀的职责交给了新的link-LSA和intra-area-prefix-LSA。
一个链路范围内的IPv6前缀信息由link-LSA负责通告。这样,整个链路内的路由器就可以了解本链路绑定的IPv6前缀。
而intra-area-prefix-LSA负责把IPv6前缀公告到本区域范围内。从而整个区域内的路由器就可以了解区域内的IPv6前缀,用于区域内路由计算。通过拓扑与前缀信息的分离传递,OSPFv3具备了独立于网络协议的特性。
OSPFv3的扩展
1.链路多实例支持
在一些特殊的情况下,我们可能需要在同一个链路上使用多个OSPF实例。例如,假设一个电信运营商为两个服务提供商提供同一条接入链路。这两个服务提供商都运行OSPF,但是都希望保持自己的路由域的独立性,这时候就遇到一个麻烦。
另一种情况下,我们可能希望两个OSPF区域依赖同一个链路运行。也就是说,两个OSPF区域在物理链路上有交集。
在OSPFv2中,如果我们希望实现上述需求,就要使用OSPFv2的验证功能。我们可以给不同的服务提供商,分配不同的验证口令,以便保持其路由的相互的独立。但是这种方式实现的并不优雅而完美。
而在OSPFv3中提供了对同一链路上运行多实例的明确支持。这是通过在OSPF包头中添加Instance ID字段,以及修改OSPF接口数据结构实现的。Instance ID值影响OSPF包的接收行为。如果接口的Instance ID与其所接收的OSPF包的Instance ID不匹配,则丢弃该包。
2.对未知类型LSA的处理
在IPv4的中,OSPF路由器的行为是丢弃任何未知类型的LSA。这就造成一个扩展性问题——无法支持在单一链路上混合具有多种能力的路由器。
在广播型链路和NBMA型链路上,所有的LSA都需要由DR来负责传递,这对于强制类型的LSA当然没有问题,但是对于可选的LSA来说就麻烦了。假如DR所支持的可选LSA少于某个非DR路由器,那么这个非DR路由器发出的一些LSA就会被DR丢弃,而无法传递到其它路由器上。
OSPFv3对未知LSA类型的处理被设计得更加具有适应性。路由器收到LSA时,需要根据LSA头中LS type 字段中的LSA Handling位来决定如何处理。根据这一位值的不同,对未知的LSA类型有两种处理方法:要么把它当作具有link-local 泛洪范围来对待,从而只能泛洪到本地链路上;要么把它当作类型已知的LSA来处理,也就是存储下来并泛洪出去。当然对于本路由器来说,因为这个LSA类型是未知的,所以无论如何,实际上并没有把这个LSA纳入计算过程中。
这种处理方式对于未来的扩展有诸多好处。尤其是对类似于External-Attributes-LSA之类的LSA来说非常合适。
3.使用Link-local地址
OSPFv3是运行在IPv6上的路由协议,同样使用链路本地地址来维持邻居,同步LSA数据库。除Vlink外的所有OSPFv3接口都使用链路本地地址作为源地址及下一跳来发送OSPFv3报文,带来的好处:
不需要配置IPv6全局地址,就可以得到OSPFv3拓扑,实现拓扑与地址分离。
通过在链路上泛洪的报文不会传到其他链路上,来减少报文不必要的泛洪来节省带宽。
OSPFv3多实例支持配置
1.设备及PC地址配置
路由器IPv6地址配置
<Huawei>system-view
[Huawei]sysname AR1
[AR1]ipv6
[AR1]interface GigabitEthernet 0/0/1
[AR1-GigabitEthernet0/0/1]ipv6 enable
[AR1-GigabitEthernet0/0/1]ipv6 address 2001:2::1 64
[AR1-GigabitEthernet0/0/1]quit
[AR1]interface GigabitEthernet 0/0/2
[AR1-GigabitEthernet0/0/2]ipv6 enable
[AR1-GigabitEthernet0/0/2]ipv6 address 2001:1::1 64
[AR1-GigabitEthernet0/0/2]quit
[AR1]interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0]ipv6 enable
[AR1-GigabitEthernet0/0/0]ipv6 address auto link-local
[AR1-GigabitEthernet0/0/0]quit
[AR1]<Huawei>system-view
[Huawei]sysname AR2
[AR2]ipv6
[AR2]interface GigabitEthernet 0/0/1
[AR2-GigabitEthernet0/0/1]ipv6 enable
[AR2-GigabitEthernet0/0/1]ipv6 address 2001:3::2 64
[AR2-GigabitEthernet0/0/1]quit
[AR2]interface GigabitEthernet 0/0/2
[AR2-GigabitEthernet0/0/2]ipv6 enable
[AR2-GigabitEthernet0/0/2]ipv6 address 2001:4::2 64
[AR2-GigabitEthernet0/0/2]quit
[AR2]interface GigabitEthernet 0/00
[AR2-GigabitEthernet0/0/0]ipv6 enable
[AR2-GigabitEthernet0/0/0]ipv6 address auto link-local
[AR2-GigabitEthernet0/0/0]quit
[AR2]<Huawei>system-view
[Huawei]sysname AR4
[AR4]ipv6
[AR4]interface GigabitEthernet 0/0/0
[AR4-GigabitEthernet0/0/0]ipv6 enable
[AR4-GigabitEthernet0/0/0]ipv6 address 2001:1::10 64
[AR4-GigabitEthernet0/0/0]quit
[AR4