RIP协议,使用跳数(hop)作为度量标准,是一个典型的距离矢量型路由协议 Distance Vector Routing Protocols
距离矢量型路由协议的特点:
1.古老,上世纪八十年代,就已经存在,也就是RIP 的前身
2.维护的主要两个数据:距离和矢量
距离=跳数 从目标到源,中间经过几台三层设备
矢量=出接口(方向)
路由器会周期性的从接口向外发送本机的完整路由表: 使用RIP 协议的路由,每30s向外发送一次自己的路由表信息
过程如下: 刚连接的时候,路由器只知道自己端口直连的路由条目信息,且跳数(距离)都为0
第一个30s,网络上的各个路由器开始向外返送自己的路由条目,接收直连路由器发过来的路由条目并检查自己是否有该条目,如果没有,则添加该条目,并在该条目中跳数上加1:
第二个 30s:
收敛完成状态:网络中所有的路由器的路由表达到一致
每个学习来的路由信息,即跳数不为0,都会被标记一个失效计时器,180s计时。
失效路由的时间:
180s ---> 还没收到,则更改状态为possible down
240s ---> 还没有收到,则会删除该路由条目(即possible down 状态后又过了60s)
距离矢量型的缺点:
以RIP为例,使用跳数作为度量标准,很不精确。由于收敛速度的快慢,导致路由不一致 如上图,假如C刚更新完的时候,E0口/10.4.0.0突然Down掉,在30S内(即未向外发送E0口Down掉的路由信息),B这时更新路由条目向外发送信息,说它可以到达10.4.0.0,则C会更新该路由条目,10.4.0.0 S0 2,由于此时C的s0,指向B的s1,所以,加入有数据要传给10.4.0.0,则会在这两个机器内来回发送,Distance 的数据也会逐步增加,或者直到TTL值减到0,路由器环路会严重影响网络性能,甚至导致路由器死机。(windows TTL=128,Linux TTL=64,网络设备 TTL=255)
RIP防止路由器环路的方法:
一、定义最大跳数:15 跳数超过15就认为目标不可达。类似于TTL每跳一次就减1,减到0也认为目标不可达。 对跳数设置最大值的缺点:限制能够支持的网络直径(路由器超过15台,不能使用RIP)
二、水平分割Split Horizon: 永远不会将一条路由信息从接收这个信息的接口发送出去
三、路由毒化 Route Poisoning and Poison Reverse 当一个口Down 掉,或者删除某条路由条目的时候,同时将其的度量metric标记为infinity,即跳数为16(超过15为目标不可达) Poison reverse overrides split horizon 毒化机制覆盖水平分割机制
四、抑制计时器 Hold-Down Timers 作用:为了防由于止收敛时间或更新周期不同步,导致数据不同步的情况 当收到一个次优条目(比当前路由表里的度量值更大比如Distance为3(当前路由条目Distance为1),或者状态是不可达(当前路由条目可达)),不即时更新该条目,而使启用一个抑制计时器(180s),如果抑制计时器超时(180s用完),这次次优条目仍在接收,且内容相同,则更新该条目,当然如果收到优于当前条目的路由信息,则立即更新(不启动抑制计时器)
五、触发更新 Triggered Updates 当发现网络拓扑变化时,立即向外发送网络更新 作用:①防止网络线路环路②加快路由收敛速度
不一致的路由信息会导致路由环路,各种路由协议都应尽力避免路由环路的出现
RIP Overview
1.距离矢量型路由协议 如何判断一个协议是否时距离矢量型路由协议?最根本特点:是否直接发送路由信息(EIGRP就算已经克服了RIP所有的缺点,但仍是距离矢量型路由协议);
2.RIP v1是有类别的, RIP v2 是无类别的(支持VLSM(IP划分方式),路由选择是CIDR-Classless Inter-Domain Routing的路由选择,无类别域间路由(路由方式,前提是IP地址设计是使用VLSM)), RIPng 是IPv6 版本;
3.RIP使用跳数(hop)作为度量标准,最大15,16为不可达;
4.上层使用UDP协议,端口520;
5.周期性发送更新(默认是30s),周期性也是使用UDP,不使用TCP的协议的原因;
6.RIP v1使用广播更新(255.255.255.255),容易造成广播风暴;
7.RIP v2 使用组播更新(224.0.0.9),监听这个 才会收到更新消息;比RIP v1广播更新的好处:①减少广播风暴的可能性 ②减少对不相关设备的影响
8.RIP计时器:更新update-30s,失效invalid-180s,抑制holddown-180s,刷新flush-240s;
RIP 基本配置命令
全局配置的模式下(config terminal)
Route1 # config terminal
Route1(config)#router rip (路由协议配置模式)
Route1(config-router)#version [1|2] 如果不指定,则是版本1和版本2 的杂糅版本,版本1发送,接收版本1和版本2
Route1(config-router)#no auto-summary version2 的版本默认时开启自动汇总的,需要使用此命令关闭自动汇总,版本1此命令无效
Route1(config-router)#network xxx.xxx.xxx.xxx (只能通告主类网)
Route1(config-router)#timers basic 30 180 180 240 maximum-paths (非全局配置下使用show ip protocol 查看,一般为4,指有达到有相同网络的多条路径时度量值metric,在rip中这个度量值就是hop,必须一样,最多使用4条进行负载均衡,可以调为6/16最大)
非全局配置的模式下
Route1 #clear ip route * 手工清除完整的路由表
Route1 #show ip protocol 查看ip 协议
Route1 #show ip rip database 查看rip的数据库,所有的路由条目都在里面
Route1 #show run 查看正在运行的信息
Route1 #debug ip rip 调试模式查看rip 的更新过程
Route1 #debug ip udp 调试模式查看udp 的更新过程
Route1 #u all (目前只知道)退出debug 模式
扩展:
1.抖动计时器:防止所有的路由器都在第30s 的时候发送数据,造成网络突然流量过大,而设置的一个±5s的都动计时器
2.一个rip的更新最多携带25个路由,如果路由条目超过25,则会分为多个更新向外发送
RIP 高级配置
1.修改计时器 timers basic 30(update) 180(invalid) 180(holddown) 240(flush) 修改计时器的目的一般是为了加快收敛速度,但是要保证所有的路由器计时器一定要一致。 一般情况下不建议修改默认计时器,否则可能导致由于更新时间导致路由器不一致的情况,即引起网路回环。
2.RIP 认证
只有RIP v2支持认证(text|md5) 标准的RIP v2(公有协议)只支持text的明文认证,而思科(Cisco)即可以支持Text也可以支持MD5加密, 未使用认证的的RIP 更新时最多携带25条路由条目信息,使用text 认证则最多携带24条路由条目信息,使用MD5加密认证的RIP更新时最多携带23条路由条目信息 步骤:
①.创建密钥数据库(全局配置下)
Route1(config)#key chain iteredu
Route1(config-keychain )#key 1
Route1(config-keychain-key)#key-string iteredu.com
Route1(config-keychain-key)#key 2
Route1(config-keychain-key)#key-string xxxxx
...
②.启用RIP 认证,并指定认证模式(先指定端口)
Route1(config-if)#ip rip authentication mode [text | md5]
③.挂在之前所定义的密钥
Route1(config-if)#ip rip authentication key-chain iteredu
注意,key chain是跟据端口绑定信息的(第二步的时候先选中端口),相连的两个路由器的端口,黄色背景的部分可以不一样,但是红色字体的内容必须一样,即key 1的key-string 对应key 1的key-string 部分。认证检查的就是红色的部分
在非全局配置(config terminal)下 可以查看密钥库
Route1 #show key chain
3.RIP v2 手工汇总 manual summary
RIP 只支持子网汇总,不支持超网汇总,
超网汇总:192.168.1.0 /24 和192.168.2.0/24 汇总成192.168.0.0/16(C类地址汇总成了B类地址,就是超网汇总)
汇总的优点:①减少路由表条目②隐藏网络拓扑变动,使网络更加稳定 大型网络一般都需要汇总,但不能使用自动汇总,因为不满足我们的需求,所以一般都是使用手工汇总 注意,汇总也是绑定端口的汇总!!即选择端口后再进行手动汇总
Route1(config-if)#ip summary-address rip xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
4.关闭水平分隔 跟据端口关闭的,在全局配置模式下,进入对应的端口,然后执行命令:
Route1(config-if)#no ip split-horizon
RIP 被动接口及单播更新
被动接口:只接收信息,不发送信息
设置被动接口:在route rip 模式下
Route1(config-router)#passive-interface fastethernet0/0
单播更新:
Route1(config-router)#neighbor xxx.xxx.xxx.xxx
特别注意(实验部分失误的地方):
静态路由设置:
Route1(config)#ip route xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx 出接口 下一跳IP
缺省路由设置:
Route1(config)#ip route 0.0.0.0 0.0.0.0 fastethernet0/0 192.168.1.3
RIP v1 和 RIP v2 并存
需要先选中端口,在对应的端口里输入以下命令:
Route1(config-if)#ip rip send version 1 2 (可以同时指定版本1和版本2) Route1(config-if)#ip rip recevie version 1 2
退出后,通过show ip protocol 可以看到是否设置成功