本文共 11409 字,大约阅读时间需要 38 分钟。
本节书摘来自异步社区《CCNP ROUTE 300-101学习指南》一书中的第1章,第1.5节实施RIPng,作者 【美】戴安娜 蒂尔(Diane Teare) , 鲍勃 瓦尚(Bob Vachon) , 瑞克 格拉齐亚尼(Rick Graziani),更多章节内容可以访问云栖社区“异步社区”公众号查看
1.5 实施RIPng
RIP是一种在小型网络中使用的IGP协议。它是一种以跳数作为路由度量的距离矢量路由协议。RIP有三个版本,即RIPv1、RIPv2和RIPng。RIPv1和RIPv2在IPv4网络中执行路由。而RIPng则用于在IPv6网络中进行路由。在完成本节内容的学习后,读者应该能够:
描述RIP的一般特征;
描述如何对RIPng进行基本的配置和验证;描述如何通过配置RIPng来共享默认路由;分析RIPng数据库。1.5.1 RIP概述
RIP是最老的路由协议之一,它是一种标准化的IGP路由协议,能够工作在混合供应商的路由器环境中。它是配置最简单的路由协议之一,因此适合应用于小型网络环境中。RIP是一种使用跳数(即路由器数量)作为度量的距离矢量协议。如果一台设备有两条到达目的网络的路径,那么跳数更少的路径将会被用来转发流量。如果一个网络距离16跳或更远,路由器则会认为该网络不可达。
RIP采用了水平分割这种路由环路避免技术。水平分割的作用是防止从一个接口收到的路由信息再从相同的接口通告出去。带有毒性反转的水平分割是一种类似的技术,但可以发送度量为16的更新,而RIP认为度量值为16的网络是不可达的。这种工作方式的理念是,最好明确告知邻居设备,一条路由是不可达的。当一台路由器上不再拥有去往某个特定网络的路由时,它就会使用路由毒化(将度量设置为16)来告知自己的邻居。
RIP也可以在等价链路上执行流量负载分担。默认值为4条等价路径之间可以执行负载分担。如果路径最大数量被设置为1,则设备会禁用负载分担功能。
在图1-24中,PC1正在向PC2发送流量。数据包会选择哪条路径呢?RIP会将选择直接的路径——即通过100Mbit/s链路的路径——因为通过这条路径到达目的只需跨越两跳,而通过三条1Gbit/s链路的跳数是4。所以此时,RIP会选择较差的路径。如OSPF或EIGRP这样更加先进的协议则不会选择通过100Mbit/s链路的那条较差路径。流量会通过1Gbit/s链路进行转发。
RIPv1是一种有类路由协议,它已经被无类路由协议RIPv2所取代了。无类路由协议被视为第二代协议,因为当初设计它们的目的就是解决早期有类路由协议的一些限制。有类网络环境中的一个严重的限制是,路由更新过程中不交换子网掩码,这就要求相同主网络中的所有子网络都要使用相同的子网掩码。RIPv1被视为是一款传统的、已经过时的协议。
RIPng的工作方式与RIPv2相似。两种协议都是用UDP作为传输层协议,都使用组播地址来交换路由更新(RIPv1使用广播)。因为两协议都是无类的,所以它们也都支持VLSM。两个协议都以跳数作为度量,且管理距离(路由源的可信度)都为120。对于这两种协议,每30秒以及当网络发生变化时,路由更新就会在网络中传播。这两个协议也都支持认证。
RIPv2和RIPng有两个主要的区别:
RIPv2通告IPv4的路由,并使用IPv4进行传送,而RIPng通告IPv6的路由并使用IPv6进行传送;
RIPng的配置与RIPv2的配置相比有很大不同。1.5.2 RIPv2概述
本节为不太熟悉RIP配置的读者展示了一个简单的RIPv2配置示例。配置RIPv2的方法与配置EIGRP相似。在图1-25中,所有路由器都配置了基本的管理特性,且参考拓扑中标记出的所有接口都已经进行了配置且已经启用。网络中没有配置静态路由,也没用启用路由协议;因此当前远程网络是无法访问的。在本网络中,需要以RIPv2作为动态路由协议使用。
要启用RIP协议,需要使用router rip命令进入路由器配置模式。要对某个网络执行RIP路由器,需要使用networknetwork-address路由器配置模式命令,并输入每个直连网络的有类网络地址。version 2命令的作用是启用RIPv2。
例1-4显示了路由器R1上的RIPv2配置。
例1-4 R1上的RIPv2配置
R1(config)# router ripR1(config-router)# network 192.168.1.0R1(config-router)# network 192.168.2.0R1(config-router)# version 2R1(config-router)#在默认情况下,RIPv2会自动在主类网络边界汇总网络,将路由汇总为有类网络地址。如果有断开或不连续的子网,则有必要禁用自动路由汇总,通告子网来确保所有网络的可达性。当路由汇总被禁用时,协议会在有类网络边界发送子网路由信息。如需修改RIPv2的默认自动汇总行为,可以使用路由器配置模式命令no auto-summary:Router(config-router)# no auto-summary
ip summary-address rip ip-address network-mask接口命令的作用是汇总特定接口下的地址或子网,这称为手工汇总。管理员只能给每个有类子网配置一个汇总地址。下面的示例指定了IP地址和网络掩码,标识了要被汇总的路由:
Router(config-if)# ip summary-address rip 10.2.0.0 255.255.0.0 管理员可以使用show ip protocols命令来验证目前使用的是自动汇总还是手工汇总。 > {注释}
RIP路由汇总不支持超网通告(通告小于有类主网的网络前缀),除非这个网络是通过路由表中学习到的超网。 ### 1.5.3 配置RIPng 下面,我们会首先介绍图1-26拓扑中,R2上的基本RIPng配置。R1上已经预配好了RIPng协议。此外,R1上也已配置了一条静态路由,用来将所有未知的流量路由到Internet中。在本节稍后,我们会通过配置R1,让它与R2通过RIPng共享这条默认路由。 图1-26 RIPng拓扑 #### 1.基本的RIPng配置 接下来,需要使用ipv6 unicast-routing命令来启用IPv6路由,如例1-5所示。IPv4路由在Cisco路由器上默认就会启用,但IPv6路由则并非如此。 例1-5 ipv6 unicast-routing命令
R2> enableR2# configure terminalEnter configuration commands, one per line. End with CNTL/Z.R2(config)# ipv6 unicast-routing 在R2上,使用ipv6 router ripname命令启用RIPng,将进程名称设置为CCNP_RIP。 邻居路由器之间的路由进程名称无须相同。R2(config)# ipv6 router rip CCNP_RIP 尝试配置RIPng路由进程时,如果未启用IPv6路由,ipv6 router ripname命令就无法使用。 在R2上,使用show ipv6 interface brief验证Ethernet0/1(连接R1)和Loopback0(模拟R2的LAN)配置了IPv6地址。 注意在例1-6中,两个接口上都各配置了两个IPv6地址。以“2001”开头的地址是全局IPv6地址,这个IPv6地址是使用ipv6 addressipv6_address/prefix命令配置的。“FE80”是链路本地地址,这个地址是在配置全局IPv6地址时自动获取的,如果刚刚在接口配置模式下通过命令ipv6 enable启用IPv6,接口也会自动获取链路本地地址。链路本地地址会在交换路由信息时使用。 例1-6 show ipv6 interface brief命令R2# show ipv6 interface briefEthernet0/0 [administratively down/down] unassignedEthernet0/1 [up/up] FE80::A8BB:CCFF:FE00:2010 2001:DB8:A01:1400::2Ethernet0/2 [administratively down/down] unassigned< Output omitted>Ethernet3/3 [administratively down/down] unassignedLoopback0 [up/up] FE80::A8BB:CCFF:FE00:2000 2001:DB8:A01:1E00::1 如例1-7所示,管理员在R2上使用ipv6 rip nameenable接口命令在接口Ethernet0/1和Loopback0上启用了RIPng。如果该接口没有启用IPv6,而管理员却尝试为其启用RIPng,那么ipv6 rip nameenable命令则会被拒绝。 例1-7 在接口上启用RIPngR2(config)# interface ethernet 0/1R2(config-if)# ipv6 rip CCNP_RIP enableR2(config-if)# interface loopback 0R2(config-if)# ipv6 rip CCNP_RIP enable 如果忘记使用ipv6 router ripname命令创建路由进程,而又在接口上启用了RIPng,设备会接受启用RIPng的命令。此时,Cisco IOS会自动创建RIPng进程。 假设用户在配置RIPng的第2步中,创建了名为CCNP_RIP的RIPng路由进程,但在第4步中却犯了一个错误:在接口上使用了CCNP_PIR进程名启用RIPng。这条命令并不会被拒绝。Cisco IOS会创建一个新的名为CCNP_PIR的RIPng进程。此时设备上就会出现两个路由进程,一个是用户直接创建的,另一个是Cisco IOS替用户创建的。因为RIPng进程名只在本地有意义,且两接口都会被包含在相同的路由进程中,所以RIPng的配置可以正常工作,即使管理员定义了两个名称不同的进程。 如例1-8所示,管理员在R2上输入了show ipv6 protocols命令。show ipv6 protocols命令可以显示出所有配置的IPv6协议信息。此时,因为设备上只配置了RIPng,因此这条命令的输出信息列出了启用RIPng的接口。 例1-8 show ipv6 protocols命令R2# show ipv6 protocolsIPv6 Routing Protocol is "connected"IPv6 Routing Protocol is "ND"IPv6 Routing Protocol is "rip CCNP_RIP" Interfaces: Loopback0 Ethernet0/1 Redistribution: None 如例1-9所示,管理员在R2上使用了show ipv6 route命来验证IPv6路由表。注意,R2从R1那里学习了两个LAN网络的信息。 例1-9 R2的IPv6路由表R2# show ipv6 routeIPv6 Routing Table - default - 7 entriesCodes: 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 2R 2001:DB8:A01:100::/64 [120/2] via FE80::A8BB:CCFF:FE00:130, Ethernet0/1R 2001:DB8:A01:A00::/64 [120/2] via FE80::A8BB:CCFF:FE00:130, Ethernet0/1C 2001:DB8:A01:1400::/64 [0/0] via Ethernet0/1, directly connectedL 2001:DB8:A01:1400::2/128 [0/0] via Ethernet0/1, receiveC 2001:DB8:A01:1E00::/64 [0/0] via Loopback0, directly connectedL 2001:DB8:A01:1E00::1/128 [0/0] via Loopback0, receiveL FF00::/8 [0/0] via Null0, receive
路由表中RIPng路由的度量显示为2。在RIPng中,发送方路由器认为自己已经有一跳远;因此,R1使用度量1通告其LAN。当R2收到更新时,会给度量值增加跳数1。因此,R2就会认为R1的LAN在两跳之外。
注释
RIPv2和RIPng在计算远程网络的跳数上存在显著的区别。在RIPng中,路由器在接收到RIPng更新时就会给度量值加1,然后在IPv6路由表中用该度量值标识对应的网络。在RIPv1和RIPv2中,路由器接收到RIP更新,在其IPv4路由表中使用该度量标识网络,然后在发送更新给其他路由器之前将度量值加1。这种操作方式的效果是,RIPng的跳数度量比RIPv1和RIPv2大1。
IPv6中没有有类网络的概念,所以在RIPng中没有任何自动路由汇总机制。要想使用手工汇总的方式,让RIPng在接口上通告汇总的IPv6地址,需要在接口配置模式下使用ipv6 rip summary-address命令来实现。在例1-10中,R1上的两个环回接口被RIPng进程CCNP_RIP从Ethernet 0/3接口汇总通告了出去。
例1-10 ipv6 rip summary-address命令
R1(config)# interface Ethernet 0/3R1(config-if)# ipv6 rip CCNP_RIP summary address 2001:db8:A01::/52
汇总IPv6前缀的过程与汇总IPv4网络的过程相同。2001:DB8:A01:100::/64和2001:DB8:A01:A00::/64前缀的前52位相同,因此可以表示为2001:DB8:A01::/52。
2.传播默认路由
在图1-27中,管理员给R1配置了一条静态默认路由,用来将所有未知流量发往Internet。如果希望R1与R2共享默认路由,需要使用下面的命令来实现:
R1(config-if)# ipv6 rip name default-information originate | only
管理员需要在接口配置模式中输入这条命令。在本例中,管理员需要进入Ethernet 0/3的接口配置模式,因为R1就是通过这个接口连接到R2的。 通过RIPng共享默认路由信息有两种方式。 - 第一种方式是通过originate关键字指定。此时,R1会共享默认路由信息以及所有其他路由的信息(例如,R1的LAN网络)。 - 第二种方式是通过only关键字来共享默认路由信息。使用only,R1就只会与R2共享默认路由。 注意default-information originate命令会向邻居路由器通告默认路由,即使路由器的路由表中并没有本地默认路由。 R1上有一条预配的IPv6路由。这条默认路由会将流量路由给Internet。管理员可以在R1上,使用ipv6 ripname default-information originate命令将默认路由共享给R2。RIPng进程的名称是CCNP_RIP。管理员应当在Ethernet 0/3接口的配置模式中输入这条命令。 在例1-11中,R1会将其默认路由以及所有其他的RIPng路由通过RIPng路由进程共享给R2。 例1-11 在R1上传播默认路由
R1(config)# interface Ethernet 0/3R1(config-if)# ipv6 rip CCNP_RIP default-information originate 在R2上,管理员可以使用show ipv6 route rip命令来验证R2是否已经共享了自己的默认IPv6路由。 注意在例1-12中,R2在IPv6路由表里已经有了默认路由。这条路由是通过RIPng学习过来的。此外,读者也可以看到,除了默认路由之外,R2也学习到了所有其他的RIPng路由。 例1-12 R2的IPv6路由表R2# show ipv6 route ripIPv6 Routing Table - default - 9 entriesCodes: 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 2R ::/0 [120/2] via FE80::A8BB:CCFF:FE00:130, Ethernet0/1R 2001:DB8:A01:100::/64 [120/2] via FE80::A8BB:CCFF:FE00:130, Ethernet0/1R 2001:DB8:A01:A00::/64 [120/2]via FE80::A8BB:CCFF:FE00:130, Ethernet0/1
如例1-13所示,管理员在R1的Ethernet 0/3接口上输入了ipv6 ripnamedefault-information only命令。使用这条命令之后,R1就只会通过RIPng路由进程与R2共享默认路由。
例1-13 在R1上使用only仅传播默认路由
R1(config)# interface Ethernet 0/3R1(config-if)# ipv6 rip CCNP_RIP default-information onlyipv6 ripnamedefault-information only命令会覆盖ipv6 ripname default-information originate命令。这两条命令一次只有一条能够生效。
在R2上,管理员可以使用show ipv6 route rip命令来验证RIPng仅从R1学习了默认路由。
请注意在例1-14中,路由器行为的变化。R1现在仅通过RIPng向R2通告默认路由。路由更新及R2的路由表中都不包含其他的RIPng路由。
例1-14 在R2上验证默认路由
R2# show ipv6 route ripIPv6 Routing Table - default - 6 entriesCodes: 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 2R ::/0 [120/2] via FE80::A8BB:CCFF:FE00:130, Ethernet0/1
行为的变化不是瞬间发生的。将默认路由共享方式从originate改为only后,R2不会继续共享非默认路由的信息。然而,R1仍会在自己的路由表中保留非默认路由,直到这些路由在180秒后过期并被路由表移除。管理员可以在R2上使用clear ipv6 rip命令清理RIPng进程,来加速上述过程。此时路由器会清除RIPng路由并重新学习。注意,在生产网络上不要执行这样的操作。
1.5.4 RIPng的数据库
show ipv6 protocols命令显示RIPng已经启用,同时显示了启用RIPng的接口。show ipv6 route rip命令显示了通过RIPng学到的路由。不过,还有一条命令在了解RIPng行为时非常有用:show ipv6 rip。例1-15中的show ipv6 rip命令显示了路由器上所有有关RIPng路由进程的信息。输出信息的最后一部分还显示了启用RIPng的接口——与show ipv6 protocols命令相似。
例1-15 在R2上验证RIPng进程
R2# show ipv6 ripRIP process " CCNP_RIP", port 521, multicast-group FF02::9, pid 138 Administrative distance is 120. Maximum paths is 16 Updates every 30 seconds, expire after 180 Holddown lasts 0 seconds, garbage collect after 120 Split horizon is on; poison reverse is off Default routes are not generated Periodic updates 308, trigger updates 1 Full Advertisement 0, Delayed Events 0 Interfaces: Loopback0 Ethernet0/1 Redistribution: NoneR2#
然而,与命令show ipv6 protocols相比,show ipv6 rip还会显示一些其他的信息,比如使用的接口号、Hello计时器以及Dead计时器。示例中显示的所有设置都是系统默认值。
例1-16中的show ipv6 rip database命令会输出下列信息。
RIP进程(一台路由器上可以有多个RIPng进程)。
路由前缀。路由度量:RIPng使用跳数作为度量。例中三条路由的度量都为2。这意味着算上自己的一跳,这台路由器距离目的网络2跳。installed和expired:关键字installed表示这条路由在路由表中。如果网络变为不可达状态,路由将在Dead计时器到期后变为expired。输出信息中也会列出已经过期的路由值(单位是秒)。expires in:如果这个数倒计时到0,这条路由就会从路由表中移除并被标识为过期。这个计时器为Dead计时器,默认值为Hello计时器值的3倍——180秒。例1-16 在R2上验证RIPng数据库R2# show ipv6 rip databaseRIP process "CCNP_RIP", local RIB 2001:DB8:A01:100::/64, metric 2, installed Ethernet0/1/FE80::A8BB:CCFF:FE00:7430, expires in 155 secs 2001:DB8:A01:A00::/64, metric 2, installed Ethernet0/1/FE80::A8BB:CCFF:FE00:7430, expires in 155 secs 2001:DB8:A01:1400::/64, metric 2 Ethernet0/1/FE80::A8BB:CCFF:FE00:7430, expires in 155 secsR2#
在例1-17 中,命令show ipv6 rip next-hops的输出信息中列出了RIPng进程以及每个进程下的所有下一跳地址。每个下一跳地址是通过哪个接口学到的也会列在输出信息之中。下一跳可能是这台路由器学习到这条路由的那个IPv6 RIP邻居的地址,或者是IPv6 RIP通告消息中明确列出的下一跳设备。IPv6 RIP邻居可以选择使用明确列出的下一跳通告其所有的路由。此时,邻居的地址就不会出现在下一跳的显示中。最后,括号中显示了IPv6 RIP路由表中使用这个下一跳的路由数量。
例1-17 在R2上验证RIPng下一跳地址
R2# show ipv6 rip next-hops RIP process "CCNP_RIP", Next Hops FE80::A8BB:CCFF:FE00:7430/Ethernet0/1 [3 paths]R2#
转载地址:http://jxybx.baihongyu.com/