CCNP路由实验之三动态路由协议之RIP
动态路由协议可以自动的发现远程网络,只要网络拓扑结构发生了变化,路由器就会相互交换路由信息,不仅能够自动获知新增加的网络,还可以在当前网络连接失败时找出备用路径。根据是否在一个自治域内部使用,动态路由协议分为内部网关协议(IGP)和外部网关协议(EGP)。这里的自治域指一个具有统一管理机构、统一路由策略的网络。自治域内部采用的路由选择协议称为内部网关协议,常用的有RIP、EIGRP、OSPF;外部网关协议主要用于多个自治域之间的路由选择,常用的是BGP和BGP-4。在一个路由器中,可同时配置静态路由和一种或多种动态路由。它们各自维护的路由表都提供给转发程序,但这些路由表的表项间可能会发生冲突。这种冲突可通过配置各路由表的优先级来解决。通常静态路由具有默认的最高优先级,当其它路由表表项与它矛盾时,均按静态路由转发。
RIP介绍:
RIP(Routing Information Protocols,路由信息协议)是使用最广泛的距离向量协议,它是由施乐(Xerox)在70年代开发的。当时,RIP是XNS(Xerox Network Service,施乐网络服务)协议簇的一部分。RIP的缺省管理距离是120,采用距离向量算法,即路由器根据距离选择路由,所以也称为距离向量协议。路由器收集所有可到达目的地的不同路径,并且保存有关到达每个目的地的最少站点数的路径信息,除到达目的地的最佳路径外,任何其它信息均予以丢弃。同时路由器也把所收集的路由信息用RIP协议通知相邻的其它路由器。这样,正确的路由信息逐渐扩散到了全网。RIP使用非常广泛,它简单、可靠,便于配置。但是RIP只适用于小型的同构网络,因为它允许的最大站点数为15,任何超过15个站点的目的地均被标记为不可达,而且RIP每隔30s广播一次路由信息会造成网络的广播风暴的重要原因之一。
RIP的度量方法是基于跳数(hops count)的,每经过一台路由器,路径的跳数加一。如此一来,跳数越多,路径就越长,RIP算法会优先选择跳数少的路径。RIP支持的最大跳数是15,跳数为16的网络被认为不可达。
RIP中路由的更新是通过定时广播实现的。缺省情况下,路由器每隔30秒向与它相连的网络广播自己的路由表,接到广播的路由器将收到的信息添加至自身的路由表中。每个路由器都如此广播,最终网络上所有的路由器都会得知全部的路由信息。正常情况下,每30秒路由器就可以收到一次路由信息确认,如果经过180秒,即6个更新周期,一个路由项都没有得到确认,路由器就认为它已失效了。如果经过240秒,即8个更新周期,路由项仍没有得到确认,它就被从路由表中删除。上面的30秒,180秒和240秒的延时都是由计时器控制的,它们分别是更新计时器(Update Timer)、无效计时器(Invalid Timer)和刷新计时器(Flush Timer)。
距离向量类的算法容易产生路由循环,RIP是距离向量算法的一种,所以它也不例外。如果网络上有路由循环,信息就会循环传递,永远不能到达目的地。为了避免这个问题,RIP等距离向量算法实现了下面机制:
A、水平分割(split horizon)。水平分割保证路由器记住每一条路由信息的来源,并且不在收到这条信息的端口上再次发送它。这是保证不产生路由循环的最基本措施。
B、毒性逆转(poison reverse)。当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16,即不可达的度量值将它广播出去。这样虽然增加了路由表的大小,但对消除路由循环很有帮助,它可以立即清除相邻路由器之间的任何环路。
C、触发更新(trigger update)。当路由表发生变化时,更新报文立即广播给相邻的所有路由器,而不是等待30秒的更新周期。同样,当一个路由器刚启动RIP时,它广播请求报文。收到此广播的相邻路由器立即应答一个更新报文,而不必等到下一个更新周期。这样,网络拓扑的变化会最快地在网络上传播开,减少了路由循环产生的可能性。
D、抑制计时(holddown timer)。一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新。如果,路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效。这个有效的信息往往是不正确的,抑制计时避免了这个问题,而且,当一条链路频繁起停时,抑制计时减少了路由的浮动,增加了网络的稳定性。
E、4)计数到无穷大 产生环路的终止办法,无穷大即为不可达,不会再传播下去。这个在RIP中应用较多,16跳即为不可达。
邻居关系,有些网络是NBMA(Non-Broadcast MultiAccess,非广播型多路访问)的,即网络上不允许广播传送数据。对于这种网络,RIP就不能依赖广播传递路由表了。解决方法有很多,最简单的是指定邻居(neighbor),即指定将路由表发送给某一台特定的路由器。
计时器:Update Timer用于RIP路由器每30s周期性的发送自己所知道的路由(要通告的那一刻,路由表中有什么就说什么,Possible Down的除外);Invalid Timer用于自收到更新那刻起,6个更新周期,即180s之内都没有再次收到该条目的路由更新(计时器都是针对具体条目的),视为超时,进Holddown状态;Holddown Timer:Holddown状态在Invalid之后进入,本身计时器长为180s,Holddown状态下对于该条路由条目的态度是“不收也不发,等待状态”;Flush Timer: 与Invalid Timer同时开始计时,时间为240s,如果在该计时器超时前都没有收到路由更新,就会删除该条目,Holddown Timer由于在Invalid Timer超时后才开始计时,过60s之后Flush Timer超时该条目就没了,所以表现为Holddown Timer只有60s,而且基于Holddown状态下的特性,也就意味着,一个条目如果Invalid Timer超时,必然会被删除,因为随后的60s不收不发,对Flush Timer超时不会有任何阻碍,不知道思科是不是故意的
RIP最多可支持6条路径的等价负载均衡,默认为4条。
RIP的缺陷
过于简单,以跳数为依据计算度量值,经常得出非最优路由;
度量值以16为限,最多只能支持15台设备的网络,只适用于小型网络;
安全性差,接受来自任何设备的路由更新;
不支持无类IP地址和VLSM(Variable Length Subnet Mask,变长子网掩码)
RIPv1支持FLSM,但是发送的路由更新不带子网掩码。如果没有强制性的自动汇总的机制,那么接收方将感到无所适从,比如收到一条去往158.16.0.0的路由,没有掩码,那么这究竟是/16的主类网络,还是/17的子网,还是...有很多可能,也就没法放进路由表进行正常转发,所以强制性的自动汇总就RIPv1而言是必要的。
RIPv1在主类网络边界会强制性的自动汇总。不连续子网本身就是由被其他主网络分割开来的同一个主网络组成的。在这种情况下,自动汇总必然会发生,当汇总后的路由到达接收方那里的时候,接收方会发现自己已经从其他接口学到更为明细的子网信息,就会将这个汇总路由丢弃,从此不连续子网之间不能互通。
收敛缓慢,时间经常大于5分钟;
消耗带宽很大。
RIPv2较 RIPv1的改进
RIPv2为无类路由协议,支持VLSM和CIDR,路由更新中携带子网掩码
支持手动汇总,可关闭自动汇总
使用组播地址(224.0.0.9)定期发送更新
支持明文认证和MD5地址,默认为明文认证
支持路由标记,可以用来控制路由重发布
增加了“下一跳”字段可以避免路由转发时不必要的跳步,即凭借自己的一步路由能力,来防止走冤枉路
拓扑图:
测试一:RIP路由协议基本配置(启动R1、R2、R3路由器)
配置R1:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#int e0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(conf1ig-if)#no sh
R1(config-if)#exit
R1(config)#route rip
R1(config)#version 1
R1(config)#no auto sum
R1(config)#network 192.168.1.0
配置R2
Router>en
Router#conf t
Router(config)#host R2
R2(config)#int e0/0
R2(config-if)#ip add 192.168.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)# int e0/1
R2(config-if)#ip add 172.168.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#route rip
R2(config-route)#version 1
R2(config-route)#no auto sum
R2(config-route)#network 192.168.1.0
R2(config-route)#network 172.168.1.0
R2(config-route)#exit
配置R3
Router>en
Router#conf t
Router(config)#host R3
R3(c1onfig)#int e0/0
R3(config-if)#ip add 172.168.1.1 255.255.255.0
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#route rip
R3(config-route)#version 1
R3(config-route)#no auto sum
R3(config-route)#network 172.168.1.0
R3(config-route)#exit
测试全网连通、查看路由,调试路由更新包
R2#debug ip rip
RIP protocol debugging is on
R2#
*Mar 100:15:48.947: RIP: sending v1 update to 255.255.255.255 via Ethernet0/0(192.168.1.2)
*Mar 100:15:48.947: RIP: build update entries
*Mar 100:15:48.947: network 172.168.0.0metric 1
*Mar 100:15:50.527: RIP: sending v1 update to 255.255.255.255 via Ethernet0/1(172.168.1.2)
*Mar 100:15:50.527: RIP: build update entries
*Mar 100:15:50.527: network 192.168.1.0metric 1
RIP协议没30s发送一次更新信息。水平分割保证路由器记住每一条路由信息的来源,并且不在收到这条信息的端口上再次发送它。这是保证不产生路由循环的最基本措施
测试二:RIP对无类网络的支持(启动R1、R2、R3路由器)
配置R1:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#int e0/0
R1(config-if)#ip add 172.168.10.1 255.255.255.0
R1(conf1ig-if)#no sh
R1(config)#int l0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(conf1ig-if)#no sh
R1(config-if)#exit
R1(config)#route rip
R1(config)#version 1
R1(config)#no auto sum
R1(config)#network 172.168.1.0
R1(config)#network 192.168.1.0
配置R2
Router>en
Router#conf t
Router(config)#host R2
R2(config)#int e0/0
R2(config-if)#ip add 172.168.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)# int e0/1
R2(config-if)#ip add 172.168.2.65 255.255.255.192
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#route rip
R2(config-route)#version 1
R2(config-route)#no auto sum
R2(config-route)#network 172.168.1.0
R2(config-route)#network 172.168.2.64
R2(config-route)#exit
配置R3
Router>en
Router#conf t
Router(config)#host R3
R3(c1onfig)#int e0/0
R3(config-if)#ip add 172.168.2.66 255.255.255.192
R3(config-if)#no sh
R3(c1onfig)#int l0
R3(config-if)#ip add 4.4.4.4 255.255.255.0
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#route rip
R3(config-route)#version 1
R3(config-route)#no auto sum
R3(config-route)#network 172.168.2.64
R3(config-route)#network 4.4.4.0
R3(config-route)#exit
查看sh iprou路由表,测试全网连通性,调试debbug ip rip路由更新信息:RIPv1不支持无类协议导致路由表不正确,全网不能联通,如果要解决这个问题必须在各个路由器上启用RIP v2 协议并禁止自动汇总,因为RIP V2 支持无类路由协议并在路由更新信息中发送子网掩码。
Router(config)#routerip
Router(config-route)#version2
Router(config-route)#noauto sum
测试三:RIP对不连续子网的支持(启动R1、R2、R3路由器)
配置R1:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#int e0/0
R1(config-if)#ip add 10.11.0.1 255.255.0.0
R1(conf1ig-if)#no sh
R1(config)#int l0
R1(config-if)#ip add 172.168.11.1 255.255.255.0
R1(conf1ig-if)#no sh
R1(config-if)#exit
R1(config)#route rip
R1(config)#version 1
R1(config)#no auto sum
R1(config)#network 172.168.11.0
R1(config)#network 10.11.0.0
配置R2
Router>en
Router#conf t
Router(config)#host R2
R2(config)#int e0/0
R2(config-if)#ip add 10.11.0.2 255.255.0.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)# int e0/1
R2(config-if)#ip add 10.12.0.2.2 255.255.0.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#route rip
R2(config-route)#version 1
R2(config-route)#no auto sum
R2(config-route)#network 10.11.0.0
R2(config-route)#network 10.12.0.0
R2(config-route)#exit
配置R3
Router>en
Router#conf t
Router(config)#host R3
R3(c1onfig)#int e0/0
R3(config-if)#ip add 10.12.0.1 255.255.0.0
R3(config-if)#no sh
R3(c1onfig)#int l0
R3(config-if)#ip add 172.168.12.0 255.255.255.0
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#route rip
R3(config-route)#version 1
R3(config-route)#no auto sum
R3(config-route)#network 172.168.12.0
R3(config-route)#network 10.12.0.0
R3(config-route)#exit
查看sh ip rou路由表,测试全网连通性,调试debbug ip rip路由更新信息:路由器R1和R3都向路由器R2通告可以到达网络172.16.0.0,到172.16.0.0网络的条目有两个并且形成了负载均衡,这样路由器R2可能作出不正确的转发。原因很简单。因为它认为去172.16.1 1.1 从e0/0口出去可以到达从e0/1口出去也可以到达。但是实际上是不可以的。路由协议的更新信息是不携带子网掩码的这个就是导致不连续子网的原因。
如果要解决这个问题必须在各个路由器上启用RIP v2协议并禁止自动汇总。
Router(config)#routerip
Router(config-route)#version2
Router(config-route)#noauto sum
测试四:RIP的被动接口和单播更新(启动R1、R2、R3路由器)
配置R1:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#int e0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(conf1ig-if)#no sh
R1(config)#int l0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(conf1ig-1if)#no sh
R1(config-if)#exit
R1(config)#route rip
R1(config)#version 2
R1(config)#no auto sum
R1(config)#network 1.1.1.0
R1(config)#network 192.168.1.0
配置R2
Router>en
Router#conf t
Router(config)#host R2
R2(config)#int e0/0
R2(config-if)#ip add 192.168.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)# int e0/1
R2(config-if)#ip add 192.168.2.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#route rip
R2(config-route)#version 2
R2(config-route)#no auto sum
R2(config-route)#network 192.168.1.0
R2(config-route)#network 192.168.2.0
R2(config-route)#exit
配置R3
Router>en
Router#conf t
Router(config)#host R3
R3(c1onfig)#int e0/0
R3(config-if)#ip add 192.168.2.1 255.255.255.0
R3(config-if)#no sh
R3(c1onfig)#int l0
R3(config-if)#ip add 3.3.3.3 255.255.255.0
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#route rip
R3(config-route)#version 2
R3(config-route)#no auto sum
R3(config-route)#network 3.3.3.0
R3(config-route)#network 192.168.2.0
R3(config-route)#exit
完成配置后,网络是全部连通的。所有路由的路由表信息是一致的。然后在R2上配置E0/1接口为被动接口.(然后再次查看全网连通性,和路由表,调试路由信息,发现R1不能与R3通信,而且R1收到了到达R3的路由更新,但是R3却没有收到R1路由的更新信息,只在发送路由信息。说明RIP的被动接口只能接受更新,不能发送更新)
R2(config)#routerip
R2(config-route)#passive-interfacee0/1
为了实现全网互通,我们可以采用在各个路由器上配置单播更新模式,指定更新邻居。然后再次查看全网连通性,和路由表,调试路由信息
R1(config)#route rip
R1(config-route)#neighbor 192.168.1.2
R2(config)#route rip
R2(config-route)#neighbor 192.168.1.2
R2(config-route)#neighbor 192.168.2.1
R3(config)#route rip
R3(config-route)#neighbor 192.168.2.2
测试五:RIP路由的自动汇总和手动汇总(启动R1、R2、R3路由器)
R1配置:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#int e0/0
R1(config-if)#ip address 12.12.12.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int lo0
R1(config-if)#ip add 172.16.0.1255.255.255.0
R1(config-if)#int lo1
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1(config-if)#int lo2
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#int lo3
R1(config-if)#ip add 172.16.3.1 255.255.255.0
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#network 172.16.0.0
R1(config-router)#network 172.16.1.0
R1(config-router)#network 172.16.2.0
R1(config-router)#network 172.16.3.0
R1(config-router)#network 12.12.12.0
R1(config-router)#end
R2配置:
Router>en
Router#conf t
Router(config)#host R2
R2(config)#int e0/0
R2(config-if)#ip address 12.12.12.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int e0/1
R2(config-if)#ip add 23.23.23.2 255.255.255.0
R2(config-if)#no sh
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#network 23.23.23.0
R2(config-router)#network 12.12.12.0
R2(config-router)#exit
配置R3
Router>en
Router#conf t
Router(config)#host R3
R3(config)#int e0/0
R3(config-if)#ip add 23.23.23.1 255.255.255.0
R3(config-if)#int lo0
R3(config-if)#ip add 192.168.0.1 255.255.255.0
R3(config-if)#int lo1
R3(config-if)#ip add 192.168.1.1 255.255.255.0
R3(config-if)#int lo2
R3(config-if)#ip add 192.168.2.1 255.255.255.0
R3(config-if)#int lo3
R3(config-if)#ip add 192.168.3.1 255.255.255.0
R3(config)#router rip
R3(config-router)#version 2
R3(config-router)#network 192.168.1.0
R3(config-router)#network 192.168.2.0
R3(config-router)#network 192.168.3.0
R3(config-router)#network 23.23.23.0
R3(config-router)#end
默认情况下自动汇总的配置完成,检查全网互通,并检查各个路由器中的路由表。注意自动汇总会自动汇总成主类网络但不支持CIDR,本例中的R3的192.168.0.0的网络就是如此,但是R1的172.168.0.0网络却自动汇总了。
关闭自动汇总路由,在R1和 R3上手工汇总,由于不支持 CIDR汇总,所以R3要使用静态引入的方法
R1(config)#router rip
R1(config-router)# no auto-summary
R1(config-router)# exit
R1(config)#int e0/0
R1(config-if)#ip summary-address rip 172.16.0.0255.255.252.0 //在R2上学习到的是汇总后的路由
R2(config)#router rip
R2(config-router)# no auto-summary
R2(config-router)# exit
R3(config)#router rip
R3(config-router)# no auto-summary
R3(config-router)# exit
R3(config)# int e0/0
R3(config-if)# ip summary-address rip 192.168.0.0255.255.252.0 //Summary mask must be greater or equal to major net即RIP不支持 CIDR 的汇总,使用下面方法解决
R3(config-if)#exit
R3(config)#ip route 192.168.0.0 255.255.252.0Null0
R3(config)#router rip
R3(config-router)#no network 192.168.0.0
R3(config-router)#no network 192.168.1.0
R3(config-router)#no network 192.168.2.0
R3(config-router)#no network 192.168.3.0
R3(config-router)#redistribute static //将静态重分发入 RIP中
查看各路由的路由表,并测试全网连通性。各个路由表此时也已经得到精简,路由R1和R3发送的都是汇总后的路由更新条目。并且全网互通
测试六:RIPv2路由协议的明文和密文认证(启动R1、R2、R3路由器)
R1配置:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#key chain test1 //创建密钥链test1
R1(config-keychain)#key 1 //在test1密钥链下定义一个ID为1的密钥号码
R1(config-keychain-key)#key-string 13579 //定义密钥号码为1的密码是13579
R1(config-keychain-key)#exit
R1(config-keychain)#key 2 //在test1密钥链下定义一个ID为2的密钥号码
R1(config-keychain-key)#key-string 02468 ////定义密钥号码为2的密码是02468
R1(config-keychain-key)#end
R1(config)#int e0/0
R1(config-if)#ip address 12.12.12.1 255.255.255.0
R1(config-if)#ip rip authentication mode text //在接口模式下配置RIP的验证方式是明文的
R1(config-if)#ip rip authentication key-chain test1 //在接口模式下,为RIP路由协议调用密钥链test1作为验证
R1(config-if)#no sh
R1(config-if)#int lo0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#exit
R1(config)#router rip
R1(config-router)#version2
R1(config-router)#no auto-summary
R1(config-router)#network 192.168.1.0
R1(config-router)#network 12.12.12.0
R1(config-router)#end
配置R2
Router>en
Router#conf t
Router(config)#host R2
R2(config)#key chain test1 //创建密钥链test2
R2(config-keychain)#key 1 //在test1密钥链下定义一个ID为1的密钥号码
R2(config-keychain-key)#key-string 02468 //定义ID号码为1的密码是02468
R2(config-keychain-key)#exit
R2(config-keychain)#key 2 //在test1密钥链下定义一个ID为2的密钥号码
R2(config-keychain-key)#key-string 13579 ////定义ID号码为2的密码是13579
R2(config-keychain-key)#end
R2(config)#key chain test2 //创建密钥链test2
R2(config-keychain)#key 1 //在test2密钥链下定义一个ID为1的密钥号码
R2(config-keychain-key)#key-string right1 //定义ID号码为1的密码是right1
R2(config-keychain-key)#exit
R2(config-keychain)#key 2 //在test2密钥链下定义一个ID为2的密钥号码
R2(config-keychain-key)#key-string right2 ////定义ID号码为2的密码是right2
R2(config-keychain-key)#end
R2(config)#int e0/0
R2(config-if)#ip address 12.12.12.2 255.255.255.0
R2(config-if)#ip rip authentication mode text //在接口e0/0模式下配置RIP的验证方式是明文的
R2(config-if)#ip rip authentication key-chain test1 //在接口e0/0模式下,为RIP路由协议调用密钥链test1作为验证
R2(config-if)#no sh
R2(config-if)#int e0/1
R2(config-if)#ip add 23.23.23.1 255.255.255.0
R2(config-if)#ip rip authentication mode md5 //在接口e0/1模式下配置RIP的验证方式是密文
R2(config-if)#ip rip authentication key-chain test2 //在接口e0/1模式下,为RIP路由协议调用密钥链test2作为验证
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#network 23.23.23.0
R2(config-router)#network 12.12.12.0
R2(config-router)#exit
配置R3
Router>en
Router#conf t
Router(config)#host R3
R3(config)#key chain test3 //创建密钥链test3
R3(config-keychain)#key 1 //在test3密钥链下定义一个ID为1的密钥号码
R3(config-keychain-key)#key-string right2 //定义密钥号码为1的密码是right2
R3(config-keychain-key)exit
R3(config-keychain)#key 2 //在test3密钥链下定义一个ID为2的密钥号码
R3(config-keychain-key)#key-string right1 ////定义密钥号码为2的密码是right1
R3(config-keychain-key)#end
R3(config)#int e0/0
R3(config-if)#ip add 23.23.23.2 255.255.255.0
R3(config-if)#ip rip authentication mode md5 //在接口模式下配置RIP的验证方式是密文
R3(config-if)#ip rip authentication key-chain test3 //在接口模式下,为RIP路由协议调用密钥链test3作为验证
R3(config-if)#no sh
R3(config-if)#int lo0
R3(config-if)#ip add 192.168.0.1 255.255.255.0
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#router rip
R3(config-router)#ver 2
R3(config-router)#no au
R3(config-router)#net 192.168.0.0
R3(config-router)#net 23.23.23.0
R3(config-router)#end
查看路由器的路由表是否正常,全网的互通性注意如果一个路由器连接两个路由器,其两个接口的密钥、密钥链等可以不一样,只要每一个端口相连的路由器对应即可。
明文认证:被认证方发送key chian时,发送最低ID值的key,并且不携带ID;认证方接收到key后,和自己key chain的全部key进行比较,只要有一个key匹配就通过对被认证方的认证。所以R1与R2彼此接受对方的路由更新信息。
密文认证:被认证方发送key时,发送最低ID值的key,并且携带了ID;认证方接收到key后,首先在自己key chain中查找是否具有相同ID的key,如果有相同ID的key并且key相同就通过认证,key值不同就不通过认证。如果没有相同ID的key,就查找该ID往后的最近ID的key;如果没有往后的ID,认证失败。即密文验证是先匹配KEY-ID,再匹配KEY-ID的内容。所以R2不会接受R3的认证,R3也不会接受R2的认证,双方路由更新信息是不会被信任的。如果需要全网互通此时R3的配置就要改变
Router(config)#host R3
R3(config)#key chain test3 //创建密钥链test3
R3(config-keychain)#key 1 //在test3密钥链下定义一个ID为1的密钥号码
R3(config-keychain-key)#no key-string right2 //去掉原定义密钥ID为1的密码
R3(config-keychain-key)#key-string right1 //重新定义密钥ID为1的密码是right1
R3(config-keychain)#key 2 //在test3密钥链下定义一个ID为2的密钥号码
R3(config-keychain-key)#no key-string right1 //去掉原定义密钥ID为2的密码
R3(config-keychain-key)# key-string right2 //重新定义密钥ID为2的密码是right2
测试七:RIP等价负载均衡(启动R1、R2、R3、R4路由器)
配置R1:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#int e0/0
R1(config-if)#ip add 172.168.1.1 255.255.255.0
R1(conf1ig-if)#no sh
R1(config)#int e0/1
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(conf1ig-if)#no sh
R1(config)#int l0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(conf1ig-if)#no sh
R1(config-if)#exit
R1(config)#route rip
R1(config)#network 172.168.1.0
R1(config)#network 192.168.1.0
R1(config)#network 1.1.1.0
配置R2
Router>en
Router#conf t
Router(config)#host R2
R2(config)#int e0/0
R2(config-if)#ip add 172.168.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)# int e0/1
R2(config-if)#ip add 172.168.2.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#route rip
R2(config-route)#network 172.168.1.0
R2(config-route)#network 172.168.2.0
R2(config-route)#exit
配置R3
Router>en
Router#conf t
Router(config)#host R3
R3(c1onfig)#int e0/0
R3(config-if)#ip add 172.168.2.1 255.255.255.0
R3(config-if)#no sh
R3(c1onfig)#int e0/1
R3(config-if)#ip add 192.168.2.1 255.255.255.0
R3(config-if)#no sh
R3(c1onfig)#int l0
R3(config-if)#ip add 3.3.3.3 255.255.255.0
R3(config-if)#exit
R3(config)#route rip
R3(config-route)#no auto
R3(config-route)#network 172.168.2.0
R3(config-route)#network 192.168.2.0
R3(config-route)#network 3.3.3.0
R3(config-route)#exit
配置R4
Router>en
Router#conf t
Router(config)#host R3
R4(c1onfig)#int e0/0
R4(config-if)#ip add 192.168.1.2 255.255.255.0
R4(config-if)#no sh
R4(c1onfig)#int e0/1
R4(config-if)#ip add 192.168.2.2 255.255.255.0
R4(config-if)#no sh
R4(config-if)#exit
R4(config)#route rip
R4(config-route)#network 192.168.1.0
R4(config-route)#network 192.168.2.0
R4(config-route)#exit
按照此时配置全网是互通的,而且我们查看R1与R3的路由表会发现,在各自的路由表中会有两条到达对方lookback口的路由条目,但是此时我们发现转发到目标的数据包只使用了其中一条路由路径,如果此时我们要实现等价开销负载均衡即同时调用两条链路转发数据,就要进行修改,分别在两个路由器中学习到等价路由的接口上关闭快速交换方式,即禁止路由器将查找到的第一个路由条目存于高速缓存中,避免之后的数据包都按照这条缓存信息进行转发。当接口上禁止了快速转发后,接口就会自动启用进程交换方式,强制路由器为每一个要进行转发的数据包都在路由表中查找目的网络的路由条目,这样在转发数据包时就会同时使用两条路由进行转发
R1配置:
R1(config)#int e0/0
R1(config-if)#no ip route-cache //e0/0接口关闭快熟交换方式,使用进程交换方式
R1(config)#int e0/1
R1(config-if)# no ip route-cache //e0/1接口关闭快熟交换方式,使用进程交换方式
R1(config-if)#exit
R1(config)#access-list 101 permit icmp any 3.3.3.3255.255.255.255 //定义一条允许任何ICMP流量到达3.3.3.3地址,用于测试负载均衡流量
R1(config)#end
R1#debug ip packet 101 //调试基于到达3.3.3.3地址的ICMP流量IP包,这样有利于我们观察负载均衡流量所走的路由
R1#ping 3.3.3.3 //测试Ping流量
R3配置:
R3(config)#int e0/0
R3(config-if)#no ip route-cache //e0/0接口关闭快熟交换方式,使用进程交换方式
R3(config)#int e0/1
R3(config-if)# no ip route-cache //e0/1接口关闭快熟交换方式,使用进程交换方式
R3(config-if)#exit
R3(config)#access-list 101 permit icmp any 1.1.1.1 255.255.255.0//定义一条允许任何ICMP流量到达1.1.1.1地址,用于测试负载均衡流量
R3(config)#debug ip packet 101 //调试基于到达1.1.1.1地址的ICMP流量IP包,这样有利于我们观察负载均衡流量所走的路由
R3(config)#ping 1.1.1.1 //测试Ping流量
实验使用的禁止快速交换功能测试负载均衡失败,应该是IOS在GNS3虚拟环境中的问题。但是我们使用traceroute命令依然能够清楚看到可以实现等价负载均衡。
实验过程视频分享: http://pan.baidu.com/share/link?shareid=2236427126&uk=1025659618