更新时间:2024-01-10
1 配置OSPFv3
1.1 概述
这一章介绍OSPFv3的配置。为了更详细了解OSPFv3的全部命令,请参考网络协议配置参考中的有关OSPFv3命令的相关章节。
OSPFv3是IETF的OSPF工作组开发的IGP路由协议,为IPv6网络设计的OSPFv3支持IPv6子网和外部路由信息标记,也允许报文的认证。
OSPFv3 和OSPFv2 在很多方面是相同的:
• Router ID,Area ID 仍然是32 位的。
• 相同类型的报文:Hello 报文,DD报文,LSR报文,LSU报文和LSAck报文。
• 相同的邻居发现机制和邻接形成机制。
• 相同的LSA 扩散机制和老化机制。
OSPFv3 和OSPFv2 的不同主要有:
• OSPFv3 是基于链路(Link)运行,而OSPFv2 是基于网段(Network)运行。
• OSPFv3 在同一条链路上可以运行多个实例。
• OPSFv3 是通过Router ID 来标识邻接的邻居,而OSPFv2 则是通过IP 地址来标识邻接的邻居。
• OSPFv3定义了七类LSA。
本公司OSPFv3功能的实现遵守OSPF V3的要求(参见 RFC5340)。下面列出了实现中的一些关键特征:
关键特征
|
关键特征描述
|
Stub 域
|
支持stub域
|
路由转发
|
即被任何一种路由协议学习生成的路由都可以被转发到其他路由协议域。在自治域内,这表示OSPFv3能输入RIPng学习到的路由。OSPFv3学习到的路由也可以输出到RIPng。在自治域间,OSPFv3能输入 BGP学习到的路由; OSPFv3路由也能输出到BGP中去。
|
路由接口参数
|
可配置的接口参数有:输出花费、重传间隔、接口传输时延、路由器的优先级别、判定路由器的关机的时间间隔与hello包的时间间隔以及认证密钥。
|
虚链路
|
支持虚链路
|
1.2 OSPFv3配置任务列表
OSPFv3要求在全部域内路由器、ABR与ASBR之间进行交换路由数据。为了简化配置,可以让它们全部工作在默认参数,不需认证等;但如果要修改某些参数,则必须保证在所有路由器上的参数一致。
为了能配置OSPFv3,完成下面的任务。除了激活 OSPFv3是必须的外,其他配置都是可选配置。
• 启动OSPFv3;
• 配置OSPFv3 的接口参数;
• 在不同的物理网络上的OSPFv3配置;
• 配置OSPFv3 域参数;
• 配置OSPFv3的NSSA域
• 配置OSPFv3域内路由的汇总
• 配置转发路由的汇总
• 生成默认路由
• 在LOOPBACK接口上选择路由ID
• 配置OSPFv3 的管理距离
• 配置路由计算的计时器
• 监视和维护OSPFv3
另外,配置路由转发, 可以参见配置独立协议的IPv6路由协议的特性配置的转发路由信息的有关内容。
1.3 OSPFv3配置任务
1.3.1启动OSPFv3
在启动OSPFv3之前,需要先使能IPv6 报文转发功能。
激活OSPFv3要求创建OSPFv3路由进程、指定该进程的Router ID 以及在接口上使能
OSPFv3功能。在全局配置模式下,使用下面的命令:
命令
|
目的
|
router ospfv3 process-id
|
这个命令激活OSPFv3路由协议,并且进入路由配置模式。
|
router-id router-id
|
这个命令配置运行OSPFv3协议的路由器的Router ID。
|
在接口配置模式下,使用下面的命令:
命令
|
目的
|
ipv6 ospf process-id area area-id [instance instance-id]
|
这个命令在接口上使能OSPFv3协议。
|
注意:若在接口上使能OSPFv3协议前,还没有创建该OSPFv3进程,会自动创建该进程。
1.3.2配置OSPFv3的接口参数
在OSPFv3 实现中,允许按照需要修改接口有关的OSPFv3参数。并不需要改变任何一个参数,但必须保证某些参数在相连网络的所有路由器上保持一致。
在接口配置模式,使用下面的命令配置接口参数:
命令
|
目的
|
ipv6 ospf cost cost
|
配置OSPFv3 接口发送包的开销值。
|
ipv6 ospf retransmit-interval seconds
|
配置邻居之间重传LSA的时间值。
|
ipv6 ospf transmit-delay seconds
|
配置在一个OSPFv3接口传输LSA的延迟时间。
|
ipv6 ospf priority number
|
配置路由器成为OSPFv3 DR路由器的优先值。
|
ipv6 ospf hello-interval seconds
|
配置在OSPFv3接口发送hello 包的时间间隔。
|
ipv6 ospf dead-interval seconds
|
在这个规定的时间间隔内,未收到邻居的任何OSPFv3报文,则认为邻居路由器已关机。
|
1.3.3不同的物理网络上的OSPFv3配置
OSPFv3把网络的物理媒体,分成以下三类:
• 广播网络(Ethernet, Token Ring, FDDI)
• 非广播、多访问网络 (SMDS, Frame Relay, X.25)
• 点对点网络 (HDLC, PPP)
能配置你的网络或者广播网络或者是非广播、多访问网络。
X.25和帧中继网络提供了可选的广播能力,能通过map命令配置OSPF工作在广播网络。Map命令可以参见广域网命令参考中有关x.25与帧中继的map命令的描述。
1.3.4配置OSPF网络类型
不管网络的物理媒体类型,你都可以配置你的网络或者为广播网或者非广播、多访问网络。使用这个特性,你能灵活配置网络,可以将物理上的广播网络配置成非广播、多访问网络;也能配置非广播网络(X.25, Frame Relay, 与SMDS)配置成为广播网络。这个特征也减少对邻居的配置,具体参见为非广播网络配置OSPFv3相关内容。
配置非广播、多访问网络为广播网络或者非广播网络,即假设从每一个路由器到其他路由器都存在虚链路,或假设为一个全网状网络。由于花费的限制,这常常是不现实的;或者有一个部分网状网。这种情形下,你可以配置成点到多点网络。不相邻的路由器之间可以通过虚链路交换路由信息。
OSPFv3 点到多点接口可以定义成多个点到点网络接口,它建立多个主机路由。OSPFv3点到多点网络与非广播、多访问网络以及点到点网络相比,有以下优点:
• 点到多点网络容易配置,且不需产生DR。
• 因为它不要求全网状拓扑,所以它的开销更小。
• 它更加可靠。即使在虚连路失败的情形下,也能保持连接。
交换机的网络类型是广播类型。
1.3.5配置OSPFv3域参数
可以配置的区域参数有:认证、指定Stub区、为默认汇总路由指定权值。认证采用基于口令保护。
Stub 区域即不分发外部路由到该区的区域。取而代之的是,由ABR生成一条默认外部路由进入stub区域,使它能到达自治区域的外部网络。为了利用OSPF Stub支持的特性,在Stub区域必须使用默认路由,为了进一步减少发送进入Stub区域的LSA数,你能在ABR禁止汇总(No Summary)来减少发送汇总LSA(类型3)进入Stub区域。
在路由器的路由配置模式,使用下面的命令设定区域参数:
命令
|
目的
|
area area-id stub [no-summary]
|
定义一个stub区。
|
area area-id default-cost cost
|
为Stub区域的默认路由设定权值。
|
对于没有和骨干区域直接相连的非骨干区域,或者不连续的骨干区域,可以使用OSPFv3的虚链路建立逻辑上的连通性。为了建立一条虚链路, 必须在这个虚链路的两端都进行配置,如果只在一端配置,这个虚链路将无法工作。
在路由器的路由配置模式,使用下面的命令设定区域参数:
命令
|
目的
|
area area-id virtual-link neighbor-ID [dead-interval dead-value][ hello-interval hello-value][ retransmit-interval retrans-value][ transmit-delay dly-value]
|
建立虚链路。
|
1.3.6配置OSPFv3域内路由的汇总
这个特性使得ABR广播一条汇总路由到其他区域。在OSPFv3中,ABR将广播每一个网络到其他区域。如果网络号按照某种方式分配,使得它们连续,你能配置ABR广播一条汇总路由到其他区。汇总路由能覆盖一定范围的所有网络。
在路由器的路由配置模式,使用下面的命令设定地址范围:
命令
|
目的
|
area area-id range {ipv6-prefix /prefix-length} [advertise | not-advertise]
|
设定汇总路由的地址范围。
|
1.3.7配置转发路由的汇总
当从其他路由区域分发路由到OSPFv3路由区域时,每条路由以外部LSA的方式进行单独广播。然而你能配置路由器广播一条路由,它能覆盖一定的地址范围。这种方式可以减少OSPFv3链路状态数据库的大小。
在路由器的路由配置模式,使用下面的命令,配置汇总路由:
命令
|
目的
|
summary-prefix ipv6-prefix /prefix-length
|
描述覆盖分发路由的地址与掩码,仅仅一条汇总路由被广播。
|
1.3.8生成默认路由
能要求ASBR生成一条默认路由进入OSPFv3路由域。无论何时,你配置路由器分发路由进入OSPFv3路由域,该路由自动变成ASBR。然而,ASBR默认并不生成默认路由进入OSPFv3路由域。
1.3.9由LOOPBACK接口选择路由ID
OSPFv3使用配置在接口的最大IPv4地址作为它的路由器ID。如果与这个IPv4地址相连的接口变为DOWN状态,或者该IPv4地址被删除,OSPF进程将重新计算新的路由器ID并且重新从所有接口发送路由信息。
如果一个loopback 接口配置了IPv4地址,则路由器优先使用loopback 的IPv4地址作为它的路由器ID,由于loopback接口永远不会Down,所以使得路由表具有较大的稳定性。
路由器优先选用Loopback接口作为路由器ID,同时也选择所有Loopback接口中最大的IPv4地址作为路由器ID。如果没有Loopback接口,则使用路由器的最大IPv4地址。你不能指定OSPFv3使用任何特定的接口。
在全局模式下,使用下面的命令,配置IP Loopback接口。
命令
|
目的
|
interface loopback num
|
创建一个loopback接口且进入接口配置模式。
|
ip address ip-address mask
|
为接口分配一个IPv4 地址。
|
1.3.10配置OSPFv3的管理距离
管理距离是路由信息源的信任等级。一般来说,管理距离是0-255之间的整数,值越大,信任级别越低。如果管理距离为255,则路由信息源不被信任且应当被忽略。
OSPFv3使用三类不同的管理距离:域间、域内和外部。在一个区域内的路由是域内;到其他区域的路由是区域间;其他路由协议域分发来的路由为外部。每种类型路由的默认值为110。
1.3.11配置路由计算的计时器
你能配置OSPFv3收到拓扑变化消息与开始计算SPF之间的时延。也能配置连续两次SPF计算之间的间隔。在路由器的路由配置模式下,使用下面的命令进行配置:
命令
|
目的
|
timers delay delaytime
|
设定在一个域中路由计算的时间延迟。
|
timers hold holdtime
|
设定在一个域中路由计算的最小时间间隔。
|
1.3.12监视和维护OSPFv3
能显示网络的统计信息,如:IP路由表的内容、缓冲和数据库等数据。这些信息能帮助你判断网络资源的利用,解决网络问题。能了解网络节点的可达性,发现网络数据包经过网络的路由。
使用下面的命令,可以显示各种路由统计信息:
命令
|
目的
|
show ipv6 ospf [process-id]
|
显示OSPFv3 路由进程的一般信息。
|
show ipv6 ospf [process-id] database
show ipv6 ospf [process-id] database [router] [adv-router router-id]
show ipv6 ospf [process-id] database [network] [adv-router router-id]
show ipv6 ospf [process-id] database [inter-prefix] [adv-router router-id]
show ipv6 ospf [process-id] database [inter-router] [adv-router router-id]
show ipv6 ospf [process-id] database [external] [adv-router router-id]
show ipv6 ospf [process-id] database [link] [adv-router router-id]
show ipv6 ospf [process-id] database [intra-prefix] [adv-router router-id]
|
显示OSPFv3数据库的相关信息。
|
show ipv6 ospf interface
|
显示有关OSPFv3接口的信息。
|
show ipv6 ospf neighbor
|
显示OSPFv3的邻居信息。
|
show ipv6 ospf route
|
显示OSPFv3的路由信息。
|
show ipv6 ospf topology
|
显示OSPFv3的网络拓扑信息。
|
show ipv6 ospf virtual-links
|
显示OSPFv3的虚链路信息。
|
debug ipv6 ospf
|
监视OSPFv3的所有行为。
|
debug ipv6 ospf events
|
监视OSPFv3的事件。
|
debug ipv6 ospf ifsm
|
监视OSPFv3的接口状态机。
|
debug ipv6 ospf lsa
|
监视OSPFv3的LSA的相关行为。
|
debug ipv6 ospf nfsm
|
监视OSPFv3的邻居状态机。
|
debug ipv6 ospf nsm
|
监视路由管理模块通知OSPFv3的消息。
|
debug ipv6 ospf packet
|
监视OSPFv3的报文。
|
debug ipv6 ospf route
|
监视OSPFv3的路由信息。
|
1.4 OSPFv3配置举例
1.4.1OSPFv3路由学习配置举例
OSPFv3要求在众多内部路由器、ABR与ASBR间交换信息。在最小配置下,基于OSPFv3的路由器可以在默认参数下工作,没有认证要求。
下面是三个配置例子:
第一个例子演示基本的OSPFv3配置命令。
第二个例子演示在一台路由器上配置多个OSPFv3进程。
第三个例子演示一个比较复杂的利用OSPFv3学习路由的配置例子。
第四个例子演示OSPFv3虚链路的配置例子。
1.4.1.1基本OSPFv3 配置例子
下面的例子说明一个简单的OSPFv3配置。激活路由进程90,连接vlan 10到区域0.0.0.0。同时分发OSPFv3到RIPng。
ipv6 unicast-routing
!
interface vlan 10
ipv6 address 2001::1/64
ipv6 enable
ipv6 rip 1 enable
ipv6 ospf 90 area 0
ipv6 ospf cost 1
!
router ospfv3 90
router-id 1.1.1.1
redistribute rip 1
!
router ripng 1
redistribute ospf 90
1.4.1.2配置多个OSPFv3进程例子
下面的例子创建了两个OSPFv3进程。
ipv6 unicast-routing
!
interface vlan 10
ipv6 address 2001::1/64
ipv6 enable
ipv6 ospf 109 area 0 instance 1
ipv6 ospf 110 area 0 instance 2
!
!
interface vlan 11
ipv6 address 2002::1/64
ipv6 enable
ipv6 ospf 109 area 1 instance 1
ipv6 ospf 110 area 1 instance 2
!
!
router ospfv3 109
router-id 1.1.1.1
redistribute static
!
router ospfv3 110
router-id 2.2.2.2
!
每个接口可以属于多个OSPFv3进程,但是当一个接口属于多个OSPFv3进程时,每个OSPFv3进程对应的instance必须不同。
1.4.1.3比较复杂的配置例子
下面的例子演示了在单个OSPFv3自治系统内,多个路由器的配置。下图是配置例子的网络拓扑图。
按照上图配置路由器。
R1:
interface vlan 1
ipv6 enable
ipv6 ospf 1 area 1
!
interface vlan 2
ipv6 enable
ipv6 ospf 1 area 0
!
ipv6 route 2001::/64 6::2
!
router ospfv3 1
router-id 1.1.1.1
redistribute static
!
R2:
interface vlan 1
ipv6 enable
ipv6 ospf 1 area 1
!
!
router ospfv3 1
router-id 2.2.2.2
!
查看R2的路由表信息:
R2#show ipv6 route
O 6::/64[1]
[110,20] via fe80:4::2e0:fff:fe26:2d98(on VLAN1)
O 2001::/64[1] (转发路由)
[110,150] via fe80:4::2e0:fff:fe26:2d98(on VLAN1)
C fe80::/10[1]
is directly connected, L,Null0
C fe80::/64[1]
is directly connected, C, VLAN1
C fe80::2e0:fff:fe26:a8/128[1]
is directly connected, L, VLAN1
C ff00::/8[1]
is directly connected, L,Null0
可以看出路由器R2学习到了转发路由。
配置area 1为stub区域:
R1:
interface vlan 1
ipv6 enable
ipv6 ospf 1 area 1
!
interface vlan 2
ipv6 enable
ipv6 ospf 1 area 0
!
ipv6 route 2001::/64 6::2
!
router ospfv3 1
router-id 1.1.1.1
area 1 stub
redistribute static
!
R2:
interface vlan 1
ipv6 enable
ipv6 ospf 1 area 1
!
!
router ospfv3 1
router-id 2.2.2.2
area 1 stub
!
查看R2的路由表信息
R2#show ipv6 route
O ::/0[1]
[110,11] via fe80:4::2e0:fff:fe26:2d98(on VLAN1)
O 6::/64[1]
[110,20] via fe80:4::2e0:fff:fe26:2d98(on VLAN1)
C fe80::/10[1]
is directly connected, L,Null0
C fe80::/64[1]
is directly connected, C, VLAN1
C fe80::2e0:fff:fe26:a8/128[1]
is directly connected, L, VLAN1
C ff00::/8[1]
is directly connected, L,Null0
可以看出stub区中的abr能正常产生一个默认路由,并通知区中其它路由器,而且stub区域中没有引入ASE LSA。
1.4.1.4虚链路的配置例子
下面的例子演示了在单个OSPFv3自治系统内,虚链路的配置。下图是配置例子的网络拓扑图。
按照上图配置路由器。
R1:
interface vlan 1
ipv6 address 101::1/64
ipv6 enable
ipv6 ospf 1 area 1
!
interface vlan 2
ipv6 address 6::1/64
ipv6 enable
ipv6 ospf 1 area 0
!
ipv6 route 2001::/64 6::2
!
router ospfv3 1
router-id 200.200.200.1
area 1 virtual-link 200.200.200.2
redistribute static
!
R2:
interface vlan 1
ipv6 address 101::2/64
ipv6 enable
ipv6 ospf 1 area 1
!
interface vlan 2
ipv6 address 888::8/64
ipv6 enable
ipv6 ospf 1 area 2
!
!
router ospfv3 1
router-id 200.200.200.2
area 1 virtual-link 200.200.200.1
!
查看OSPFv3邻居状态:
R1#show ipv6 ospf neighbor
OSPFv3 Process (1)
Neighbor ID Pri State Dead Time Interface Instance ID
200.200.200.2 1 Full/DR 00:00:35 VLAN1 0
200.200.200.2 1 Full/ - 00:00:36 VLINK1 0
R2#show ipv6 ospf neighbor
OSPFv3 Process (1)
OSPFv3 Process (1)
Neighbor ID Pri State Dead Time Interface Instance ID
200.200.200.1 1 Full/Backup 00:00:36 VLAN1 0
200.200.200.1 1 Full/ - 00:00:37 VLINK1 0
查看路由表信息
R1#show ipv6 route
C 6::/64[1]
is directly connected, C,VLAN2
C 6::1/128[1]
is directly connected, L, VLAN2
C 101::/64[2]
is directly connected, C, VLAN1
C 101::1/128[2]
is directly connected, L, VLAN1
O 101::2/128[2]
[110,10] via fe80:4::2e0:fff:fe26:a8(on VLAN1)
O 888::/64[2]
[110,20] via fe80:4::2e0:fff:fe26:a8(on VLAN1)
S 2001::/64[1]
[1,0] via 6::2(on VLAN2)
C fe80::/10[2]
is directly connected, L,Null0
C fe80::/64[2]
is directly connected, C, VLAN1
C fe80::2e0:fff:fe26:2d98/128[2]
is directly connected, L, VLAN1
C fe80::/64[1]
is directly connected, C, VLAN2
C fe80::2e0:fff:fe26:2d99/128[1]
is directly connected, L, VLAN2
C ff00::/8[2]
is directly connected, L,Null0
R2#show ipv6 route
O 6::/64[1]
[110,20] via fe80:4::2e0:fff:fe26:2d98(on VLAN1)
C 101::/64[1]
is directly connected, C, VLAN1
O 101::1/128[1]
[110,10] via fe80:4::2e0:fff:fe26:2d98(on VLAN1)
C 101::2/128[1]
is directly connected, L, VLAN1
C 888::/64[1]
is directly connected, C, VLAN2
C 888::8/128[1]
is directly connected, L, VLAN2
O 2001::/64[1]
[110,150] via fe80:4::2e0:fff:fe26:2d98(on VLAN1)
C fe80::/10[1]
is directly connected, L,Null0
C fe80::/64[1]
is directly connected, C, VLAN1
C fe80::2e0:fff:fe26:a8/128[1]
is directly connected, L, VLAN1
C fe80::/64[1]
is directly connected, C, VLAN2
C fe80::2e0:fff:fe26:a9/128[1]
is directly connected, L, VLAN2
C ff00::/8[1]
is directly connected, L,Null0