[笔记]RIPv1案例研究--转载

[笔记]RIPv1案例研究
 
网友:SpookFox 发布于: 2007.10.22 20:34 现加入pkt文件
 


一、RIP协议的基本配置
router rip      启用RIP进程
version {1|2}   指定RIP版本(可选)
network network-number  for example: network 172.16.0.0  指定与该路由器相连的网络
show  ip route              查看路由表
debug ip rip[events]       调试动态RIP过程信息
debug ip rip database       调试更详细的过程信息
clear ip route              用于清除IP路由表的信息
show  ip protocols          显示当前运行的路由协议的详细参数
show  ip rip database       显示RIP的数据库信息,路由信息
   
ip rip send/receive version 1   指定只发送/接收RIP1的数据包
ip rip send/receive version 2   指定只发送/接收RIP2的数据包
ip rip send/receive version 1 2 指定只发送/接收RIP1和RIP2的数据包
注意:Network命令定义的关联网络有两层意思:(1)RIP只对外通告关联网络的路由信息;(2)、RIP只向关联网络所属接口通告路由信息。在串口配置时钟频率时,一定要在DCE端的路由器上配置,否则链路不通;定义关联网络时,命令network后面必须是与该路由器直连的主类网络地址。记得设置时钟频率!默认情况下运行的是RIP V1,发送RIP V1的信息,接收任何版本的信息。
实验总结:如A-B-C这样一网络,如果A上与B相连的口的网络没有宣告,那么A上的这个口会收到来自B发来的RIP更新消息,但是由于这个接口不在RIP域中,所以路由器A忽略这些消息。也就是说,这种情况下,路由器A只通过A左边的口向外发送路由更新信息,但A右边的口不发送,A-B之间互相学习不到对方的网络。
  
二、计时器操作
timers basic update invalid holddown flush sleep
该命令适用于RIP协议整个进程的运行处理,如果一台路由器的计时被改变了,那么这个RIP域中的所有路由器的计时都必须改变!
R2(config)#router rip
R2(config-router)#timers ?
  basic  Basic routing protocol update timers
R2(config-router)#timers basic ?
    Interval between updates
R2(config-router)#timers basic 30                  Update timer 30s
% Incomplete command.
R2(config-router)#timers basic 30 ?                Invalid timer 180s
    Invalid
R2(config-router)#timers basic 30 180 ?             Holddown timer 180s
    Holddown
R2(config-router)#timers basic 30 180 180 ?         Flush timer 240s
    Flush
R2(config-router)#timers basic 30 180 180 240 ?     Sleep timer 1-5s
    Sleep time, in milliseconds
  
R2(config-router)#timers basic 30 180 180 240 30 ?
  
完整命令:timers basic 30 180 180 240 30 ;共五个计时器!
   
更新时间作用于整个RIP进程,如果串行链路的更新时间变了,路由器其他链路的更新时间也要改变,在一台路由器上改变更新计时器的级联效应导致RIP域中每台路由器的计时器都要变化。在每台路由器上增加RIP更新周期至2min的命令为:
timers basic 120 360 360 480
因为更新计时器改变了,所以无效计时器、抑制计时器和刷新计时器也必须改变。如果像缺省的那样,把无效计时器和抑制计时器设为更新计时器的6倍,将使得这个网络的转换时间很长,所以,把无效计时器和抑制计时器的时间高为更新计时器的3倍,刷新计时器必须比抑制计时器长,所以这里把它设成长120s。

三、案例研究:自动路由汇总与水平分割
水平分割是默认启用的;自动汇总在边界路由器上发生。

四、案例研究:被动接口(Passive Interface)  
被动接口即相当于RIP的“静模式”,它只是在该特定的链路上侦听RIP广播,从而更新自己的路由表,如果希望避免路由器从一条链路上学到路由信息,就必须使用更复杂的路由更新控制才能实现,这种路由更新控制称为出站更新过滤(filtering out updates)。和静模式不同的是,路由器并不在被动接口上响应收到的请求信息。
如果一台路由器接口处于一个启动RIP协议的网络中,那么路由器会在接口上发出RIP广播;若不在RIP域中,则对RIP的信息不做任何处理。
命令(在RIP进程下):passive-interface port
例如:  router rip
       passive-interface Ethernet0   把E0口配置成被动接口
       network 172.16.0.0
注意:命令passive-interface不是RIP协议专有的命令,它可以在所有的IP路由选择协议中配置使用。
实验总结:Routing TCP/IP P148页图所示,这里有两种情况.假设Andy的E0口没有配置成passive模式,那么Floyd将会收到Andy从其E0口广播出去的路由更新信息,但是Floyd忽略此消息,因为它的E0口没有在RIP域中,在Floyd这个路由器上没有宣告192.168.12.0这个网段,而路由器Floyd只通过其E1口向外广播RIP的路由更新信息;若Andy的E0口配置成了passive模式,那么在它的E0口将不再广播RIP路由更新信息,同时在Floyd的E0口也不会广播RIP路由信息,那么这样一来在Floyd和Andy之间就没有了RIP信息的存在!

五、案例研究:配置单播更新(Unicast Update)
单播更新的配置很简单,在路由器上宣告网络的时候加一条要单播更新的目的路由器的命令就可以了,比如RA要单播更新到RB(192.168.0.1),那在RA上配置如下:
    router rip
    passive-interface E0
    network 172.16.0.0
    netowrk 192.168.12.0
    neighbor 192.168.0.1
neighbor的另外应用是:在像FR这样的非广播介质型网络上发送单播更新。
   
应该注意的是:网络的宣告还要正常宣告,然后在其后加一条netghbor x.x.x.x(对端接收更新的接口)就可以了!在哪个路由器上配置邻居信息,它就往邻居单播其路由信息!比如A-B之间配置单播更新,A和B都必须宣告它们之间的网络,不然之间根本就没有RIP的运行,就更无所谓单播更新了!

六、案例研究:不连续的子网
如果子网不连续,就会造成路由器以为自己是两个网络的边界路由器,然后进行自动汇总,在同时连接到这网络的路由器就会认为有等价的路径到目的网络,进行负载均衡,这样一来到达这个网络的包就会有50%不能到达正确的子网。
通过在路由器接口上配置辅助IP地址(secondary IP address)来解决!如:
   
    interface e0
    ip address 10.33.55.1 255.255.240.0 secondary(不要忘了关键字)
实验总结:P151页拓扑,在没有配置辅助IP前,由于在办界路由器上自动汇总的原因,Barney和Ernest_T将互相学不到对方的网络,而在路由器Andy上,只能学到10.0.0.0这条路由通过192.168.83.224和192.168.12.196负载均衡;在Andy上能Ping通Barney上的10.33.5.1但是Ping不通在Ernets_T上的10.33.35.1,traceroute结果如下:
Router#traceroute 10.33.5.1
Type escape sequence to abort.
Tracing the route to 10.33.5.1
  1 192.168.83.244 76 msec
    192.168.12.196 60 msec
    192.168.83.244 12 msec
Router#traceroute 10.33.35.1
Type escape sequence to abort.
Tracing the route to 10.33.35.1
  1 192.168.12.196 28 msec
    192.168.83.244 36 msec
    192.168.12.196 56 msec
Andy#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
     192.168.12.0/27 is subnetted, 2 subnets
C       192.168.12.64 is directly connected, Ethernet0/0
C       192.168.12.192 is directly connected, Serial1/0
C    192.168.83.0/24 is directly connected, Ethernet0/1
R    10.0.0.0/8 [120/1] via 192.168.83.244, 00:00:05, Ethernet0/1
                [120/1] via 192.168.12.196, 00:00:02, Serial1/0
疑问:负载均衡的话应该会丢包50%,但是为什么会出现现在能Ping通一边却Ping不通另一边的情况?这是模拟器的BUG,实际中会有50%的丢包!
值得我们注意的是:在中间添加了辅助IP的路由器别忘了宣告辅助IP的网络,不然是不会通的(理解错误!!!)
实验证明:不同于直正接口的IP地址,对于辅助IP来说,路由选择协议进程是不需要宣告这个辅助IP所在的网络的,除非该路由器上连接有这个网络!也就是说,比如一路由器A它上面没有连接5.0这个网络,但其一接口配置了5.0的辅助IP,那么该路由器无需宣告5.0网络!
宣告-只是宣告路由器的直连网络,而不是其接口,重点针对的是直连网络!一定要搞清楚!!!如果一个物理接口所在的网络没有被宣告,那么RIP将不会宣告和接收关于这个网络的RIP通告消息!但是辅助IP不会,一旦辅助IP被配置,那么就相当于它们已经在网络中宣告了这个网络!所以,对于辅助IP所在的网络除非路由器直连,不然是不需要宣告的~!
对于路由器非直连的网络,路由选择进程都会接收和传播相关的通告消息!
   

七、案例研究:控制RIP的度量
通过命令offset-list来改变路由的度量值,该命令指定一个数值来加大路由的度量值,并且参照一个访问列表(access-list)来决定哪些路由条目需要修改:
偏移列表命令格式:offset-list {access-list-number|name} {in|out} offset [type number]
            
例如:offset-list  1 in 2 Serial0;
访问列表命令格式:access-list {access-list-number|name} {permit|deny} ip mask
               
例如:access-list 1 permit 10.33.0.0 0.0.0.0
    RA上的配置:
  
    access-list 1 permit 10.33.0.0 0.0.0.0  注意这里是反掩码
    router rip
    network 192.168.12.0
    network 10.0.0.0
    offset-list 1 in 2 Serial0
特别注意:
   
1、如果不指定使用偏移列表的接口,那么偏移列表将在所有与访问列表匹配的接口上修改所有的入站或出站更新;如果不调用访问列表(使用0作为访问列表的序列号)来进行匹配,偏移表将修改所有的入站或出站更新;

2、当一个偏移列表引起下一跳路由器通告的度量值比它正在通告的路由更新的度量值更高时,直到抑制计时器(holddown timer)超时前,这条路由都会被标记为不可到
3、分清楚IN和OUT的方向!

问题:配置如下,为什么这里的反掩码为0.0.0.0,不应该是0.0.12.255吗?
access-list 1 permit 10.33.0.0 0.0.0.0  注意这里是反掩码,这里是正确的!
     router rip
     network 192.168.12.0
     network 10.0.0.0
     offset-list 1 in 2 Serial0
答:0.0.0.0这里是精确匹配10.33.0.0这条路由,也就是说只要是10.33.0这个网段的路由就+2,其它的不管,这是偏移列表的标准写法,只能匹配路由,而不是地址;0.0.15.255这里匹配的是地址,10.33.0.0/20这个网络的流量都+2(其实,这是不正确的,没有这种写法,理论上造成的结果跟0.0.0.0是一样的!如下:
    *Mar  1 00:21:49.871: RIP: received v1 update from 10.33.25.1 on Serial1/1
    *Mar  1 00:21:49.875:      10.0.0.0 in 2 hops
    *Mar  1 00:21:49.875:      10.33.0.0 in 3 hops
    *Mar  1 00:21:49.875:      10.33.32.0 in 3 hops
    *Mar  1 00:21:49.879:      10.33.48.0 in 1 hops
    *Mar  1 00:21:49.879:      192.168.83.0 in 1 hops
这样来看,它有了10.33.32.0这条路由,但它是从s1/1发过来的,这样不是环路了?不是!这是因为这条路由它不是从s1/1学过来的,而是从别的地方学过来,这样水平分割起不到作用,三节点的不稳定性!
   
八、安全研究:最小化更新信息的影响
为了使路由协议产生的流量最小化,我们有两种办法:
1)、调整路由选择协议的计时器以便降低更新的频率,但是这在主要链路发生故障时会引起较长的收敛时间;
2)、配置触发扩展特性(RFC 2091)来消除周期性的RIP更新。
   
使用接口模式下的命令ip rip triggerd可以启动RIP协议的触发扩展特性。在一条串行链路上的两台路由器都必须确定配置了具有触发扩展特性的RIP协议后,路由表的更新将会变得最少,仅仅包括路由表最初的交换信息和路由表发生变化时的更新信息。这条命令仅在串行链路上有效,并且必须在链路的两端同时配置才会产生效果!
如:
    interface serial 0
    ip rip trigered
当一台路由器配置了触发扩展特性,那么它就会与链路的另一端建立一个触发关系。路由器发出轮询(Poll)并等待确认,如果对端路由器也配置了触发扩展特性,那么就会给这台路由器进行确认,然后进入协商阶段,最终建立一个触发的RIP关联关系;若对端路由器没有配置触发扩展特性,那么该路由器发出的轮询请求就不会得到回复,它每发送一个触发请求都会设置一个轮询计时器,每个周期为5s,如果在5s内还没有收到确认消息, 就会发送另一个触发请求。如果在发送完了6个触发请求后(30S)还没有收到确认消息,那么这个轮询就被认为超时了,路由器将等待下一个普通的更新时间,并广播一个RIP更新。通过debug ip rip 和debug ip rip trigger命令进行调试,我们能观察到建立一个触发的RIP关联关系的详细过程!在建立的过程中,触发状态从DOWN状态开始,经过INIT和LOADING状态,最后为FULL状态,而后进行路由信息的交换和更新的确认。我们还可以观察到RIP更新计时器在超时但是没有新的更新发送出去,也没有收到更新!
注意:启用了触发扩展特性之后Holddown timer会被修改成0,这是因为触发更新的特性是除了初始化的路由更新,在RIP收敛后,只要拓扑发生变化就立即发送路由更新,而不像传统的那样再等Holddown timer计时器超时后,再发送!

九、CISCO路由器的计时器、默认汇总、默认负载均衡、管理距离
R2#sh ip pro
Routing Protocol is "rip"
  Sending updates every 30 seconds, next due in 24 seconds
  Invalid after 180 seconds, hold down 180, flushed after 240
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Redistributing: rip
  Default version control: send version 1, receive any version
    Interface             Send  Recv  Triggered RIP  Key-chain
    Ethernet0/1           1     1 2                                 
    Ethernet0/2           1     1 2                                 
    Ethernet0/3           1     1 2                                 
    Serial1/0             1     1 2                                 
    Serial1/1             1     1 2                                 
  Automatic network summarization is in effect  默认自动汇总
  Maximum path: 4                               默认四条线路负载均衡
  Routing for Networks:
    172.17.0.0
    192.168.12.0
    192.168.83.0
  Routing Information Sources:
    Gateway         Distance      Last Update
    172.17.1.2           120      00:00:13
    192.168.83.244       120      00:00:18
  Distance: (default is 120)                    管理距离120

十、抓包观察RIP的消息格式

十一、Output-delay命令
      
在RIP的处理进程中使用Output-delay命令以设置一个8~50ms的发包之间的延迟间隙(缺省为0ms)来解决一台高速路由器向一台低速路由器发送大量RIP消息时低速路由器来得及接收但来不及处理而导致路由信息丢失的情况!
命令:output-delay delay
例如:
      Router(config)#router rip
         Router(config-router)#output-delay ?
              Delay in milliseconds

十二、实验总结:


1、 BOSON在做RIP的时候有一个BUG,在RIP V2中更新路由信息应该是组播地址224.0.0.9,而在BOSON中是255.255.255.0,这是RIP V1用的全网广播地址。
   
2、 路由器直连网络的通告
    通告网络段,即A类的就通告A类的网络段,比如:R1的E0口IP是10.1.1.1,S0口IP是172.16.10.1,那么在RIP情况下,通告网络的时候标准应该是:
    network 10.0.0.0
    network 172.16.0.0
    但在实际使用的时候我们也可以:
    network 10.1.1.0
    network 172.16.10.0
    因为此时,IOS会自动按照"类"分,但是最好是按"类"通告。
3、不要忘记设置串口的时钟频率!!!

4、例题分析:
依照"有类别路由选择:直连的子网络"一节所述,在一个主类别分类网络中的所有子网掩码必须是一致的.但那一节中却没有强调一个主类别分类网络中的子网掩码必须是相同的.如下拓扑所示(卷一之160页):
RTA#sh ip route
Gateway of last resort is not set
     192.168.20.0/24 is variably subnetted, 5 subnets, 2 masks
C       192.168.20.64/27 is directly connected, Ethernet0/1
R       192.168.20.48/32 [120/1] via 192.168.20.34, 00:00:17, Serial1/1
R       192.168.20.40/32 [120/1] via 192.168.20.34, 00:00:17, Serial1/1
C       192.168.20.32/27 is directly connected, Serial1/1
C       192.168.20.128/27 is directly connected, Ethernet0/0
RTA#

RTB#sh ip route
     192.168.20.0/29 is subnetted, 5 subnets
R       192.168.20.64 [120/1] via 192.168.20.33, 00:00:22, Serial1/1
C       192.168.20.48 is directly connected, Ethernet0/0
C       192.168.20.40 is directly connected, Ethernet0/1
C       192.168.20.32 is directly connected, Serial1/1
R       192.168.20.128 [120/1] via 192.168.20.33, 00:00:22, Serial1/1
RTB#
分析:
RTB有更长一点的掩码,能正确解释所有子网。问题在RTA上,RTA有27位掩码,它把RTB的子网192.168.20.40/29和192.168.20.48/29解释为192.168.20.32/27-与它直连链路相同的子网,因此,RTA没有整个网络的正确拓扑;
但是,如果代理ARP启用了,数据包仍然能被路由。例如,假设RTA要路由一个目的地址是192.168.20.50的数据包,RTA错误地把这个地址当作是它的子网192.168.20.33/27的成员,并且在该子网上发出ARP请求,要求得到192.168.20.50的MAC地址。RTA听到ARP请求,它正确地解释这个地址为它的子网192.168.20.48/29的一个成员,并且回应它在192.168.20.32/29上接口的MAC地址。RTA然后向RTB转发数据包,RTB再将这个数据包转发至正确的目的地。如果代理ARP没有启用,数据包将不会被正确地从RTA转发至RTB!
关于/32掩码的问题:RTB当整个网络是/29的5个子网,因此向RTA发送关于40和48的子网络信息,从RTA的角度来看:如果第27位是1,后面都是主机位,那么这个子网就是192.168.20.32/27,但是通告的192.168.20.40和192.168.20.48的第29和第28位是1,在RTA看来,这是属于主机ID的一部分,所以就当他们是一条主机路由!!!
 

你可能感兴趣的:(职场,TCP/IP,休闲,路由技术)