2.4 配置IPv6的EIGRP
EIGRP最初是为了对IPv4、IPX和AppleTalk的流量执行路由而诞生的,因此也可以轻松地扩展出路由IPv6流量的功能。虽然IPv6的EIGRP与IPv4的EIGRP大部分特性都相同,但前者也包含了一些特有的细节。
IPv4和IPv6版的EIGRP有一个主要区别,那就是后者必须在每个启用了IPv6的接口上手动启用EIGRP。
在完成本节内容的学习后,读者应该能够:
描述IPv4和IPv6的EIGRP的异同之处;
配置基本的IPv6 EIGRP参数;
配置并验证IPv6 EIGRP汇总;
验证基础的IPv6 EIGRP设置。
2.4.1 IPv6的EIGRP概述
IPv6版的EIGRP旨在发送IPv6前缀/长度而不是IPv4子网/掩码值。这个版本的EIGRP在有些Cisco文档中称为EIGRPv6,以此来强调这个协议是用来处理IPv6流量的。IPv6版的EIGRP与IPv4版的EIGRP有很多共同点,但两者之间还是存在以下区别。
IPv6的EIGRP使用IPv6的前缀和长度而不是IPv4的子网和掩码。
使用IPv6链路本地地址来建立IPv6 EIGRP的邻居关系,而IPv4没有链路本地地址的概念。
EIGRP针对IPv6协议采用了内置的认证特性来执行消息认证,而不是使用IPv4中的协议特定的认证方式。
在传输路由信息时,IPv6的EIGRP将IPv6前缀封装在IPv6消息而不是IPv4数据包中。
IPv6没有有类网络的概念;使用IPv6的EIGRP时,类边界没有自动汇总。汇总IPv6通告前缀的唯一方式是手工汇总。
如果路由器上没有配置IPv4地址,IPv6的EIGRP需要一个EIGRP router ID才能启动。在IPv4中,如果不配置EIGRP router ID,路由器会自动使用环回接口或者活跃物理接口中最高的IPv4地址作为路由器ID。
管理员需要在相关接口下配置IPv6的EIGRP来发送和接收路由协议消息。而在IPv4的EIGRP中,管理员则应在路由协议配置模式下配置接口。
IPv6的EIGRP使用的专用组播地址为FF02::A,而IPv4的EIGRP使用的专用组播地址则为224.0.0.10。
2.4.2 配置并验证IPv6的EIGRP
在本节中,我们会执行IPv6 EIGRP配置、建立及验证。图2-20的拓扑中包含了三台路由器:HQ、BR1和BR2。分支路由器通过Ethernet链路连接到中心路由器。HQ和BR1上已经预置了IPv6的EIGRP,但BR2尚未配置EIGRP。所有路由器上的IPv6地址都已配置完毕。
除了图2-20所示的IPv6全局单播地址,管理员还在每台路由器上配置了以下IPv6链路本地地址:
HQ - Ethernet 0/0: FE80:100::1
HQ - Ethernet 0/1: FE80:200::1
BR1 - Ethernet 0/0: FE80:100::2
BR2 - Ethernet 0/0: FE80:200::2
1.IPv6的EIGRP配置
在配置IPv6的EIGRP之前,必须在路由器上启用IPv6单播路由。例2-71所示为管理员使用全局配置命令ipv6 unicast-routing在BR2上启用IPv6路由。
例2-71 在BR2上启用IPv6路由
BR2# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
BR2(config)# ipv6 unicast-routing
对IPv6流量启用路由功能的必要命令是在全局配置模式中输入ipv6 unicast-routing。如果没有这条命令,管理员还是可以在路由器接口上配置IPv6地址,但这台路由器并不会成为IPv6路由器。
ipv6 unicast-routing命令可以让路由器:
能够配置静态或动态IPv6路由;
能够转发IPv6包;
能够发送ICMPv6路由器通告消息。
如果在路由器上配置了IPv6路由协议,noipv6 unicast-routing将从IPv6路由表中移除所有的IPv6路由协议条目。例2-72显示了BR2上的IPv6 EIGRP配置,使用自治系统100及router ID 192.168.2.1。
例2-72 在BR2上配置EIGRP router ID
BR2(config)# ipv6 router eigrp 100
BR2(config-rtr)# eigrp router-id 192.168.2.1
注释
IPv6 EIGRP有一个shutdown特性。路由进程必须在“noshutdown”模式中,IPv6 EIGRP才能进行处理操作。在新版IOS中,noshutdown是默认的。如有必要,管理员可以在IPv6 EIGRP配置模式中输入noshutdown命令。
配置 IPv6 的 EIGRP 包括两个步骤。第一步是使用 ipv6 router eigrp 命令配置 IPv6 EIGRP 路由进程。输入命令后,必须指定自治系统编号,这与 IPv4 EIGRP 中的含义相同。它定义了一个管理员控制下的自治系统,且所有邻居路由器的值必须相同才能建立EIGRP邻接关系。
另一个重要的参数是EIGRP router ID。同IPv4的EIGRP一样,IPv6的EIGRP也使用了32位的router ID。如果路由器上没有配置活跃的IPv4地址,路由器就不能选取EIGRP router ID。此时,必须在EIGRP路由进程下手动配置router ID。
每台参与IPv4及IPv6 EIGRP的路由器都有一个32位的路由器ID标识。路由器会以环回接口上配置的最高IPv4地址来作为路由器ID。如果没有配置环回接口,路由器就会以活跃物理接口上配置的最高IPv4地址来作为路由器ID。如果路由器上也没有配置IPv4接口,那么管理员就必须手工定义路由器ID才能让IPv6 EIGRP正常工作。
例2-73展示了BR2上Ethernet 0/0和Loopback0接口的IPv6 EIGRP配置。
例2-73 在BR2接口上配置IPv6的EIGRP
BR2(config)# interface ethernet 0/0
BR2(config-if)# ipv6 eigrp 100
*Oct 23 19:57:55.933: %DUAL-5-NBRCHANGE: EIGRP-IPv6 100: Neighbor
FE80:200::1 (Ethernet0/0) is up: new adjacency
BR2(config-if)# exit
BR2(config)# interface loopback 0
BR2(config-if)# ipv6 eigrp 100
IPv6 EIGRP配置过程的第二步是在接口上启用这个协议。在接口上启用IPv6的EIGRP之前,接口上必须拥有合法的IPv6链路本地地址。这是因为IPv6的EIGRP会使用链路本地地址来建立EIGRP邻居关系。
当接口通过手工配置或动态的方式获取到全局IPv6地址之后,这个接口上就会自动创建出链路本地地址。Cisco IOS会使用EUI-64来创建链路本地地址的接口ID。
在没有分配全局单播地址的接口上,管理员也可以使用接口模式命令ipv6 enable在接口上启用IPv6。此时,接口会自动分配到IPv6链路本地地址。重复一遍,接口ID会使用EUI-64格式生成。
不过,自动创建的EUI-64链路本地地址难于记忆和分辨,因为这样的64位接口ID没有提供任何描述性的信息。要想弥补这一点,通常的做法是在路由器上使用命令ipv6 address link-local-address link-local手工分配一个容易分辨的IPv6链路本地地址。管理员可以在一台路由器的所有链路上配置使用相同的链路本地地址,只要链路本地地址在每条链路上唯一即可。
例2-74查看了已经与路由器HQ建立的EIGRP IPv6邻居邻接关系。
例2-74 在BR2上验证IPv6 EIGRP的邻居邻接
BR2# show ipv6 eigrp neighbors
EIGRP-IPv6 Neighbors for AS(100)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 Link-local address: Et0/0 13 08:25:34 9 100 0 16
FE80:200::1
命令show ipv6 eigrp neighbors的输出消息与showip eigrp neighbors的输出信息类似。但读者可以观察到这两者的地址格式字段存在区别,这是因为前者是使用链路本地IPv6地址来建立EIGRP邻居关系的。其他字段的含义均与IPv4验证命令所显示的字段含义相同。
例2-75显示了BR2上的IPv6 EIGRP拓扑表。
例2-75 在BR2上验证IPv6 EIGRP的拓扑表
BR2# show ipv6 eigrp topology
EIGRP-IPv6 Topology Table for AS(100)/ID(192.168.2.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 2001:DB8:0:2::/64, 1 successors, FD is 435200
via FE80:200::1 (435200/409600), Ethernet0/0
P 2001:DB8:0:200::/64, 1 successors, FD is 281600
via Connected, Ethernet0/0
P 2001:DB8::/64, 1 successors, FD is 435200
via FE80:200::1 (435200/409600), Ethernet0/0
P 2001:DB8:0:1::/64, 1 successors, FD is 435200
via FE80:200::1 (435200/409600), Ethernet0/0
P 2001:DB8:0:3::/64, 1 successors, FD is 435200
via FE80:200::1 (435200/409600), Ethernet0/0
P 2001:DB8:0:100::/64, 1 successors, FD is 307200
via FE80:200::1 (307200/281600), Ethernet0/0
命令的输出消息再次显示了IPv4与IPv6 EIGRP之间的相似之处。两协议都使用了组合度量值,这是由默认接口带宽和延迟参数计算出来的一个整数值。为了把数据包发送给目的地址,路由器会选择度量值最小(最优)的路由。这条路由称为后继路由,它会被添加到路由表中。其他满足可行性条件的路由则会成为候选可行后继路由。
IPv6的EIGRP会使用链路本地地址来建立邻居关系,这些地址也会作为学习路由的源地址显示在拓扑表中。
例2-76 在BR2上显示IPv6路由表
BR2# show ipv6 route eigrp
IPv6 Routing Table - default - 10 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2
IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external
ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect
O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
D 2001:DB8::/64 [90/435200]
via FE80:200::1, Ethernet0/0
D 2001:DB8:0:1::/64 [90/435200]
via FE80:200::1, Ethernet0/0
D 2001:DB8:0:2::/64 [90/435200]
via FE80:200::1, Ethernet0/0
D 2001:DB8:0:3::/64 [90/435200]
via FE80:200::1, Ethernet0/0
D 2001:DB8:0:100::/64 [90/307200]
via FE80:200::1, Ethernet0/0
拓扑表中的后继路由是会被添加到路由表的候选路由。方括号中的第一个数为管理距离,默认与IPv4 EIGRP的管理距离相同。对于内部EIGRP路由,这个值会设置为90。方括号中的第二个数代表可行距离,是最优路径的EIGRP组合度量值。
例2-77显示了从BR2 LAN接口到BR1 LAN地址的ping测试结果。
例2-77 验证到BR1 LAN的连通性
BR2# ping 2001:DB8:0:1::1 source loopback 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:0:1::1, timeout is 2 seconds:
Packet sent with a source address of 2001:DB8:0:16::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
如果已经配置BR2路由器上的LAN和WAN接口使用IPv6的EIGRP进行通告,那么LAN接口间的ICMP echo和应答数据包也就可以成功地进行发送和接收。
2.计算IPv6汇总路由
要想计算IPv6汇总路由,需要首先分析希望进行汇总的子网。需要计算所有地址中相同的最高比特位。将IP地址转换为部分二进制格式就可以分辨出各个子网相同的比特。
在表 2-3 中,4 个子网的前 62 个比特位是相同的。因此,最佳的汇总路由是2001:DB8:0:0::/62。
例2-78显示了路由器BR1通过命令ipv6 summary-address eigrp汇总了所有本地前缀。
例2-78 配置IPv6 EIGRP汇总路由
BR1(config)# interface Ethernet0/0
BR1(config-if)# ipv6 summary-address eigrp 100 2001:DB8:0:0::/62
*Oct 24 18:14:31.222: %DUAL-5-NBRCHANGE: EIGRP-IPv6 100: Neighbor
FE80:100::1 (Ethernet0/0) is resync: summary configured
汇总技术可以用一条比较短的前缀来代替几条比较长的前缀。IPv6 EIGRP中汇总路由的唯一方式是手工汇总。IPv6的EIGRP不支持自动汇总。IPv6的EIGRP与IPv4的EIGRP相似,可以在接口配置模式使用ipv6 summary-address eigrp命令配置手工汇总。在给IPv6的EIGRP配置汇总路由之后,路由器会在配置了汇总的接口上重新同步其邻居关系。BR1此后只会向HR路由器发送汇总的路由条目,而不会再发送那些明细前缀。
汇总可以减少路由表中路由条目数量,并可以消除一部分网络出现故障后,路由条目进行不必要的路由更新,进而提升了网络稳定性。汇总也可以减少对处理器以及对内存资源的需求。
例2-79展示了BR2的IPv6路由表。
例2-79 验证BR2上收到的汇总路由
BR2# show ipv6 route eigrp
IPv6 Routing Table - default - 7 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2
IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external
ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect
O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
D 2001:DB8::/62 [90/435200]
via FE80:200::1, Ethernet0/0
D 2001:DB8:0:100::/64 [90/307200]
via FE80:200::1, Ethernet0/0
路由器BR2上IPv6路由表的内容显示,四个LAN前缀由一个长度更短的/62汇总前缀所取代。
另一个在验证IPv6 EIGRP时非常常用的命令是show ipv6 protocols,如例2-80所示。这条命令的输出信息中包含的是参与IPv6 EIGRP路由的接口、K值以及router ID。IPv6 EIGRP内部和外部路由的默认AD均与IPv4 EIGRP相同,即90和170。这条命令也可以看出IPv6 EIGRP是一款距离矢量型路由协议;它的最大跳数相对来说比较大,是100。
例2-80 在BR1上验证IPv6的EIGRP
BR2# show ipv6 protocols
IPv6 Routing Protocol is "connected"
IPv6 Routing Protocol is "ND"
IPv6 Routing Protocol is "eigrp 100"
EIGRP-IPv6 Protocol for AS(100)
Metric weight K1=1, K2=0, K3=1, K4=0, K5=0 K6=0
NSF-aware route hold timer is 240
Router-ID: 192.168.2.1
Topology : 0 (base)
Active Timer: 3 min
Distance: internal 90 external 170
Maximum path: 16
Maximum hopcount 100
Maximum metric variance 1
Total Prefix Count: 0
Total Redist Count: 0
Interfaces:
Ethernet0/0
Loopback0
Redistribution:
None