OSPFv3基本原理
OSPFv3是运行于IPv6的OSPF路由协议(RFC2740),它在OSPFv2基础上进行了增强,是一个独立的路由协议。
OSPFv3在Hello报文、状态机、LSDB、洪泛机制和路由计算等方面的工作原理和OSPFv2保持一致。
OSPFv3协议把自治系统划分成逻辑意义上的一个或多个区域,通过LSA(Link State Advertisement)的形式发布路由。
OSPFv3依靠在OSPFv3区域内各设备间交互OSPFv3报文来达到路由信息的统一。
OSPFv3报文封装在IPv6报文内,可以采用单播和组播的形式发送。
OSPFv3报文类型
Hello报文
周期性发送,用来发现和维持OSPFv3邻居关系。
DD报文(Database Description packet)
描述了本地LSDB的摘要信息,用于两台设备进行数据库同步。
LSR报文(Link State Request packet)
用于向对方请求所需的LSA。
设备只有在OSPFv3邻居双方成功交换DD报文后才会向对方发出LSR报文。
LSU报文(Link State Update packet)
向对方发送其所需要的LSA。
LSAck报文(Link State Acknowledgment packet)
用来对收到的LSA进行确认。
LSA类型
Router-LSA(Type1)
设备会为每个运行OSPFv3接口所在的区域产生一个LSA,描述了设备的链路状态和开销,在所属的区域内传播。
Network-LSA(Type2)
由DR产生,描述本链路的链路状态,在所属的区域内传播。
Inter-Area-Prefix-LSA(Type3)
由ABR产生,描述区域内某个网段的路由,并通告给其他相关区域。
Inter-Area-Router-LSA(Type4)
由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
AS-external-LSA(Type5)
由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了Stub区域和NSSA区域)。
NSSA LSA(Type7)
由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
Link-LSA(Type8)
每个设备都会为每个链路产生一个Link-LSA,描述到此Link上的link-local地址、IPv6前缀地址,并提供将会在Network-LSA中设置的链路选项,它仅在此链路内传播。
Intra-Area-Prefix-LSA(Type9)
每个设备及DR都会产生一个或多个此类LSA,在所属的区域内传播。
- 设备产生的此类LSA,描述与Route-LSA相关联的IPv6前缀地址。
- DR产生的此类LSA,描述与Network-LSA相关联的IPv6前缀地址。
设备类型图6-1 设备类型
表6-1 设备的类型及含义
区域内设备(Internal Router)
该类设备的所有接口都属于同一个OSPFv3区域。
区域边界路由器ABR(Area Border Router)
该类设备可以同时属于两个以上的区域,但其中一个必须是骨干区域。
ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
骨干路由器(Backbone Router)
该类设备至少有一个接口属于骨干区域。
因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
自治系统边界路由器ASBR(AS Boundary Router)
与其他AS交换路由信息的路由器称为ASBR。
ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。
OSPFv3路由类型AS区域内和区域间路由描述的是AS内部的网络结构,AS外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPFv3将引入的AS外部路由分为Type1和Type2两类。
表6-2中按优先级从高到低顺序列出了路由类型。
表6-2 OSPFv3路由类型
Intra Area
区域内路由。
Inter Area
区域间路由。
第一类外部路由(Type1 External)
这类路由的可信程度高一些,所以计算出的外部路由的开销与自治系统内部的路由开销是相当的,并且和OSPFv3自身路由的开销具有可比性。
到第一类外部路由的开销=本路由器到相应的ASBR的开销+ASBR到该路由目的地址的开销。
第二类外部路由(Type2 External)
这类路由的可信度比较低,所以OSPFv3协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。
所以,OSPFv3计算路由开销时只考虑ASBR到自治系统之外的开销,即到第二类外部路由的开销=ASBR到该路由目的地址的开销。
区域类型表6-3 OSPFv3区域类型
Totally Stub Area
允许ABR发布的Type3缺省路由,不允许自治系统外部路由和区域间的路由。
Stub Area
和Totally Stub区域的不同在于,该区域允许区域间路由。
NSSA Area
和Stub区域的不同在于该区域允许自治系统外部路由的引入,由ASBR发布Type7 LSA通告给本区域,这些Type7 LSA在ABR上转换成Type5 LSA,并且泛洪到整个OSPFv3域中。
OSPFv3支持的网络类型OSPFv3根据链路层协议类型,将网络分为如表6-4所列四种类型。
表6-4 OSPFv3网络类型
广播类型(Broadcast)
当链路层协议是Ethernet、FDDI时,缺省情况下,OSPFv3认为网络类型是Broadcast。
在该类型的网络中:
NBMA类型(Non-broadcast multiple access)
当链路层协议是帧中继、ATM或X.25时,缺省情况下,OSPFv3认为网络类型是NBMA。
在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
点到多点P2M类型(Point-to-Multipoint)
没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。
在该类型的网络中:
点到点P2P类型(point-to-point)
当链路层协议是PPP和LAPB时,缺省情况下,OSPFv3认为网络类型是P2P。
在该类型的网络中,以组播形式(FF02::5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
Stub区域Stub区域是一些特定的区域,Stub区域的ABR不传播它们接收到的自治系统外部路由,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,Stub区域位于自治系统的边界,是那些只有一个ABR的非骨干区域。
为保证到自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给Stub区域中的其他非ABR路由器。
配置Stub区域时需要注意下列几点:
OSPFv3路由聚合通过路由聚合,可以减少路由信息,从而减小路由表的规模,提高设备的性能。
OSPFv3路由聚合过程如下:
ABR聚合
ABR路由聚合将具有相同前缀的路由信息聚合在一起,只发布一条路由到其它区域。
ABR在发送路由信息到别的区域的过程中,基于IPv6地址前缀生成type3 LSA。如果一些连续的IPv6地址前缀在某个区域内存在并且ABR聚合功能是使能的,这些IPv6地址前缀聚合成一个地址前缀。 对于前缀相同的多条LSA,区域边界路由器(ABR)只发送一条聚合的LSA。属于命令指定网段的LSA不单独传输。
ASBR聚合
ASBR路由聚合将具有相同前缀的引入路由聚合在一起,只发布一条路由到其它区域。
使能ASBR路由聚合功能后,自治系统边界路由器将处于聚合地址范围内的引入的type5 LSA进行聚合。聚合后,自治系统边界路由器不会为配置范围内所有的前缀生成单独的type5 LSA,相反,自治系统边界路由器只为聚合的前缀生成单一的type5 LSA。对于NSSA区域,自治系统边界路由器将处于聚合地址范围内的多条引入的type7 LSA聚合成一条type7 LSA。
OSPFv3虚连接虚连接(Virtual link)是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道。
在实际应用中,可能会因为各方面条件的限制,无法满足所有非骨干区域与骨干区域保持连通的要求。这时可以通过配置OSPFv3虚连接予以解决。
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,虚连接的两端和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。
图6-2 OSPFv3虚连接
如图6-2所示,通过虚连接,两台ABR之间直接传递OSPFv3报文信息,两台ABR之间的OSPFv3设备只是起到一个转发报文的作用。由于OSPFv3协议报文的目的地址不是这些设备,所以这些报文对于两台ABR而言是透明的,只是当作普通的IP报文来转发。
OSPFv3多进程OSPFv3支持多进程,在同一台设备上可以运行多个不同的OSPFv3进程,它们之间互不影响,彼此独立。不同OSPFv3进程之间的路由交互相当于不同路由协议之间的路由交互。
设备的一个接口只能属于某一个OSPFv3进程。
配置OSPFv3区域示例组网需求如图6-11所示,所有的路由器都运行OSPFv3,整个自治系统划分为3个区域。其中RouterB和RouterC作为ABR来转发区域之间的路由。
要求在不影响路由的可达性的前提下,减少Area2区域内的LSA数量。
图6-11 配置OSPFv3区域组网图
配置思路采用如下的思路配置OSPFv3区域:
操作步骤- 配置各接口的IPv6地址
# 在RouterA上配置IPv6地址。
<Huawei> system-view[Huawei] sysname RouterA[RouterA] ipv6[RouterA] interface gigabitethernet 1/0/0[RouterA-GigabitEthernet1/0/0] ipv6 enable[RouterA-GigabitEthernet1/0/0] ipv6 address 2000::1/64[RouterA-GigabitEthernet1/0/0] quit[RouterA] interface gigabitethernet 2/0/0[RouterA-GigabitEthernet2/0/0] ipv6 enable[RouterA-GigabitEthernet2/0/0] ipv6 address 1001::2/64RouterB、RouterC和RouterD的配置同RouterA此处略。
- 配置OSPFv3基本功能
# 配置RouterA。
[RouterA] ipv6[RouterA] ospfv3[RouterA-ospfv3-1] router-id 1.1.1.1[RouterA-ospfv3-1] quit[RouterA] interface gigabitethernet 1/0/0[RouterA-GigabitEthernet1/0/0] ospfv3 1 area 1[RouterA-GigabitEthernet1/0/0] quit[RouterA] interface gigabitethernet 2/0/0[RouterA-GigabitEthernet2/0/0] ospfv3 1 area 1[RouterA-GigabitEthernet2/0/0] quit# 配置RouterB。
[RouterB] ipv6[RouterB] ospfv3[RouterB-ospfv3-1] router-id 2.2.2.2[RouterB-ospfv3-1] quit[RouterB] interface gigabitethernet 1/0/0[RouterB-GigabitEthernet1/0/0] ospfv3 1 area 0[RouterB-GigabitEthernet1/0/0] quit[RouterB] interface gigabitethernet 2/0/0[RouterB-GigabitEthernet2/0/0] ospfv3 1 area 1[RouterB-GigabitEthernet2/0/0] quit# 配置RouterC。
[RouterC] ipv6[RouterC] ospfv3[RouterC-ospfv3-1] router-id 3.3.3.3[RouterC-ospfv3-1] quit[RouterC] interface gigabitethernet 1/0/0[RouterC-GigabitEthernet1/0/0] ospfv3 1 area 0[RouterC-GigabitEthernet1/0/0] quit[RouterC] interface gigabitethernet 2/0/0[RouterC-GigabitEthernet2/0/0] ospfv3 1 area 2[RouterC-GigabitEthernet2/0/0] quit# 配置RouterD。
[RouterD] ipv6[RouterD] ospfv3[RouterD-ospfv3-1] router-id 4.4.4.4[RouterD-ospfv3-1] quit[RouterD] interface gigabitethernet 1/0/0[RouterD-GigabitEthernet1/0/0] ospfv3 1 area 2[RouterD-GigabitEthernet1/0/0] quit# 查看RouterB的OSPFv3邻居状态。
[RouterB] display ospfv3 peerOSPFv3 Process (1)OSPFv3 Area (0.0.0.1)Neighbor ID Pri State Dead Time Interface Instance ID1.1.1.1 1 Full/ - 00:00:34 GE2/0/0 0OSPFv3 Area (0.0.0.0)Neighbor ID Pri State Dead Time Interface Instance ID3.3.3.3 1 Full/ - 00:00:32 GE1/0/0 0# 查看RouterC的OSPFv3邻居状态。
[RouterC] display ospfv3 peerOSPFv3 Process (1)OSPFv3 Area (0.0.0.0)Neighbor ID Pri State Dead Time Interface Instance ID2.2.2.2 1 Full/ - 00:00:37 GE1/0/0 0OSPFv3 Area (0.0.0.2)Neighbor ID Pri State Dead Time Interface Instance ID4.4.4.4 1 Full/ - 00:00:33 GE2/0/0 0# 查看RouterD的OSPFv3路由表信息。
[RouterD] display ospfv3 routingCodes : E2 - Type 2 External, E1 - Type 1 External, IA - Inter-Area,N - NSSA, U - UninstalledOSPFv3 Process (1) Destination Metric Next-hop IA 1000::/64 2 via FE80::1572:0:5EF4:1, GigabitEthernet1/0/0 IA 1001::/64 3 via FE80::1572:0:5EF4:1, GigabitEthernet1/0/0 1002::/64 1 directly-connected, GigabitEthernet1/0/0 IA 2000::/64 4 via FE80::1572:0:5EF4:1, GigabitEthernet1/0/0
- 配置Stub区域
# 配置RouterD的Stub区域。
[RouterD] ospfv3[RouterD-ospfv3-1] area 2[RouterD-ospfv3-1-area-0.0.0.2] stub[RouterD-ospfv3-1-area-0.0.0.2] quit# 配置RouterC的Stub区域,设置发送到Stub区域的缺省路由的开销为10。
[RouterC] ospfv3[RouterC-ospfv3-1] area 2[RouterC-ospfv3-1-area-0.0.0.2] stub[RouterC-ospfv3-1-area-0.0.0.2] default-cost 10[RouterC-ospfv3-1-area-0.0.0.2] quit# 查看RouterD的OSPFv3路由表信息,可以看到路由表中多了一条缺省路由,它的开销值为直连路由的开销和所配置的开销值之和。
[RouterD] display ospfv3 routingCodes : E2 - Type 2 External, E1 - Type 1 External, IA - Inter-Area,N - NSSA, U - UninstalledOSPFv3 Process (1)OSPFv3 Process (1) Destination Metric Next-hop IA ::/0 11 via FE80::1572:0:5EF4:1, GigabitEthernet1/0/0 IA 1000::/64 2 via FE80::1572:0:5EF4:1, GigabitEthernet1/0/0 IA 1001::/64 3 via FE80::1572:0:5EF4:1, GigabitEthernet1/0/0 1002::/64 1 directly-connected, GigabitEthernet1/0/0 IA 2000::/64 4 via FE80::1572:0:5EF4:1, GigabitEthernet1/0/0
- 配置Totally Stub区域
# 配置RouterC,设置Area2为Totally Stub区域。
[RouterC] ospfv3[RouterC-ospfv3-1] area 2[RouterC-ospfv3-1-area-0.0.0.2] stub no-summary[RouterC-ospfv3-1-area-0.0.0.2] quit
- 验证配置结果
# 查看RouterD的OSPFv3路由表,可以发现路由表项数目减少了,其他非直连路由都被抑制,只有缺省路由被保留。
[RouterD] display ospfv3 routingCodes : E2 - Type 2 External, E1 - Type 1 External, IA - Inter-Area,N - NSSA, U - UninstalledOSPFv3 Process (1)OSPFv3 Process (1) Destination Metric Next-hop IA ::/0 11 via FE80::1572:0:5EF4:1, GigabitEthernet1/0/0 1002::/64 1 directly-connected, GigabitEthernet1/0/0
配置文件RouterA的配置文件
# sysname RouterA#ipv6#interface GigabitEthernet1/0/0 ipv6 enable ipv6 address 2000::1/64 ospfv3 1 area 0.0.0.1#interface GigabitEthernet2/0/0 ipv6 enable ipv6 address 1001::2/64 ospfv3 1 area 0.0.0.1#ospfv3 1 router-id 1.1.1.1#returnRouterB的配置文件
# sysname RouterB#ipv6#interface GigabitEthernet1/0/0 ipv6 enable ipv6 address 1000::1/64 ospfv3 1 area 0.0.0.0#interface GigabitEthernet2/0/0 ipv6 enable ipv6 address 1001::1/64 ospfv3 1 area 0.0.0.1#ospfv3 1 router-id 2.2.2.2#returnRouterC的配置文件
# sysname RouterC#ipv6#interface GigabitEthernet1/0/0 ipv6 enable ipv6 address 1000::2/64 ospfv3 1 area 0.0.0.0#interface GigabitEthernet2/0/0 ipv6 enable ipv6 address 1002::1/64 ospfv3 1 area 0.0.0.2#ospfv3 1 router-id 3.3.3.3 area 0.0.0.2 stub no-summary default-cost 10#returnRouterD的配置文件
# sysname RouterD#ipv6#interface GigabitEthernet1/0/0 ipv6 enable ipv6 address 1002::2/64 ospfv3 1 area 0.0.0.2#ospfv3 1 router-id 4.4.4.4 area 0.0.0.2 stub#return