<RIP(Routing Information Protocol)>
·RIP属于IGP,是Distance-Vector协议。
·RIP协议的特点:
 1)RIP是基于UDP的,端口号520
  2)周期性以广(组)播向邻居发送更新。
 3)做完整更新,将整个路由表的信息传递给邻居。
 4)Metric(度量值)只跟跳数有关。
  5)只支持等价的负载均衡
·解决DV环路问题:
 1)Defining a Maximum:16跳。
 2)Split Horizon:从一个接口收到的信息不再从此接口发出。
 3)Route Poisoning:将不可达路由直接设成Infinity(16跳)。
 4)Holddown Timers:所有邻居都将此路由“冻结”,
   如在“冻结”期内该路由恢复,继续采纳该路由
   如在“冻结”期收到更好的路由,将采纳更好的路由
   如在“冻结”期收到更差的路由,不采纳该路由
 5)Triggered Updates:
  避免周期性更新占用带宽,只有当拓扑变化时才发送更新。
<RIP v1>
RIP-v1的特点:
·以广播255.255.255.255发送更新。
·在跨越主类网络边界时,会自动汇总成主类网络。
·不支持VLSM,更新时不携带掩码信息,只以主类方式通告。
Classful Rouing:(落后的)
   RIPv1 / IGRP
R2(config)#router rip
R2(config-router)#network 10.0.0.0(只能以主类的方式宣告)
R2#show ip protocols
    Interface             Send  Recv 
    Serial0/0             1     1 2  (默认)                             
R2(config-router)#version 1
  Interface             Send  Recv
    Serial0/0             1     1   (指定v1)
R2#deb ip rip
<RIP v2>
RIP-v2的特点:
·以组播地址224.0.0.9发送更新。
·默认情况下在跨越主类网络边界时,会自动汇总,但是也可以关闭自动汇总,进行手动汇总
·RIPv2支持VLSM,更新发送时携带掩码信息。也只能以主类方式通告。
正常情况下,RIP-V2是发送组播更新,下面这条命令强制让RIP使用广播更新
R1(config-if)#ip rip v2-broadcast 
虽然v2携带了掩码信息,但跨越不同网络边界时,默认还是会自动汇总成主类。
R1(config-router)#no auto-summary    通过这一命令可关闭自动汇总
·RIP在auto-summary时,会将本地及收到的路由都汇总成主类然后发出。
R2(config)#router rip
R2(config-router)#version 2  启用V2版
    Interface             Send  Recv
    Serial0               2     2   (指定v2)
<实现V1和V2版的兼容性>
R1(config-if)#ip rip send version 1       设定接口只发送出V1版的更新
R1(config-if)#ip rip receive version 1    设定接口只接收V2版的更新
R1(config-if)#ip rip send version 1 2     设定接口同时发送V1和V2版的更新
<RIP Timer>
1)Update (30S)
 随机变量是更新周期的15%,即4.5S (25.5S-30S)
2)Invalid (180S)
 180S后置为Possible Down,之后立即启动hold Down计时器。
3)Hold Down(180S)
 实际只用到60S
 
4)Flush(240S)
 240S还没收到路由更新,才将此路由删除。
测试Possible Down:
 1)设置Passive-interface
 2)中间接SW
 3)中间是FR
 4)认证不匹配
R2(config-router)#timers basic 10 20 20 40
 
<被动接口>
在RIP协议中,如果一个接口被设定为被动接口,这个接口将不能向外发送路由更新,不过还可以接收对端发送过来的路由更新。
R2(config-router)#passive-interface loopback 0
 将接口设为被动接口,只收不发。
R2#show ip protocols
R2(config-router)#passive-interface default
R2(config-router)#no passive-interface loopback 0
<单播更新>
默认RIP只发送广播或组播更新包,下面的命令让RIP发出单播包
R1(config)#router rip
R1(config-router)#neighbor 10.0.0.2
<路由汇总>
在RIP中关闭自动汇总后,可以在某一个接口去做手动的汇总。但要注意,汇总出的网络号不能越过主类网络。
R2(config-if)#ip summary-address rip 172.16.0.0 255.255.0.0
 (在路由流向的出接口作)
RIP中汇总的特点:
·本地存在有明细路由,才能从做汇总的接口发出汇总路由。
·直到明细的最后一条路由消失,汇总才会消失。
·取明细路由的最小metric值
<水平分割>
在绝大多数的接口运行RIP,水平分割默认都有是开启的
Enable : Ethernet / Serial / BRI / FR子接口(p2p/mp)
Disable : FR物理接口  这个接口比较特殊,默认是关闭的
R1(config-if)#no ip split-horizon    本命令在接口下关闭水平分割
<偏移列表>
可以用来增加路由的metric值,需要先用ACL抓出路由
R2(config)#access-list 1 permit 2.2.2.0 0.0.0.255
R2(config-router)#offset-list 1 out 3 ethernet 0/0
              (原有Metric + 3)
R2(config-router)#offset-list 0 out 3 ethernet 0/0
             (0代表所有网络)

<RIP v2 Authentication>
认证技术可以提高网络的安全性,只有互相认证成功的两台合法路由器之间才能传递路由信息。
RIP支持两种认证方式:
1、明文认证
2、md5认证
第一步:定义密码库
R2(config)#key chain R2   (本地有效)
R2(config-keychain)#key 1  (建议两端一致)(可以定义多个KEY值,按从小到大的顺序进行匹配,发送KEY值时也是发送最小的一个,还可以设定KEY值的有效时间。)
R2(config-keychain-key)#key-string cisco
第二步:在接口下应用密码库
R2(config-if)#ip rip authentication key-chain R2
第三步:在接口下指定认证模式
R2(config-if)#ip rip authentication mode [md5|text]
R1#show key chain     
R1#debug ip rip
小知识:RIP中每一个路由更新报文最大可包含25条路由,做了明文认证后只能包含24条,做了MD5认证后只能包含23条。
R2(config-keychain-key)#Accept-lifetime 04:00:00 jan 2006 infinite 定时接收
R2(config-keychain-key)#Send-lifetime 04:00:00 jan 2006 04:01:00 jan 2006 定时发送
R2(config-keychain-key)#Send-lifetime 04:00:00 jan 2006 duration 300  有效期300S
注意:密码库中可以同时定义多个密码,在匹配时要按规则来匹配,明文认证和md5认证的匹配规则各不一样,下面分别说明。
明文认证匹配规则:
 
明文认证总结:只发送KEY ID最小的KEY,并不携带KEY ID,接收方与KEY列表中所有的KEY匹配,只要有一个能匹配上则通过认证。

md5认证匹配规则:

 
密文认证总结:只发送最小的KEY ID,并且携带KEY ID。当接收到时,先只匹配相同KEY ID密钥,如果不匹配,则通不过认证。但如果没有相同KEY ID,只向下查找一次大的KEY ID密钥,如果有相同的KEY ID,但不匹配也不通过认证,如果仍然没有不是相同的KEY ID则也不通过认证。

<Triggered>
周期更新:路由器周期性的向外发送出自已的路由更新
触发更新:路由器平时不会周期性的发送路由更新,只会在拓朴改变的情况下(也就是路由变化了),才会向外发送出路由更新。
RIP默认只做周期更新,通过使用命令,可以实现触发更新。
使用触发更新后:
·路由器不再周期发更新,只触发更新。
·会自动生成Timers basic 30 180 0 240
·只能打在低速点对点链路上,E0口是不能打的
R1(config-if)#ip rip triggered (E0/Lo0不支持)
       (两端都配)
debug ip rip
*Mar   RIP: send v2 triggered update to 12.1.1.2

<RIP区域生成默认路由>
为了让一个网络中的路由器都能自动获得默认路由,从而可以访问外部网络,我们可以利用路由协议来自动下发默认路由。
1)Redistribute Static:
R1(config)#ip route 0.0.0.0 0.0.0.0 serial 0
R1(config)#router rip
R1(config-router)#redistribute static
2)Network 0.0.0.0:
R1(config)#ip route 0.0.0.0 0.0.0.0 serial 0(写下一跳不行)
R1(config)#router rip
R1(config-router)#network 0.0.0.0
3)default-information originate:
R1(config)#router rip
R1(config-router)#default-information originate
4)default-network:
R1(config)#ip default-network 12.0.0.0(写成主类)
如写成ip default-network 12.1.1.0
<负载均衡>
负载均衡指的是将去往一个特定目的地的多条路由同时放进路由表,用来做流量的转发。
负载均衡有两种:
1、等价负载均衡--将metric值相等的路由同时放入路由表用来做流量转发。
2、不等价负载均衡--将metric值不相等的路由也同时放入路由表用来做流量转发。

·RIP只支持等价的负载均衡。也就是说用来做负载均衡的路由metric必须一致。
·默认RIP只支持四条路径的负载均衡,在新的IOS中可以通过命令修改为最多16条
R1#show ip protocols
R1(config)#router rip
R1(config-router)#maximum-paths 6(最多16条)