是一种基于UDP封装的距离矢量型协议,路由器采用周期性发送消息数据包来传递路由信息,使用“跳数”(即metric)来衡量到达目标地址的路由距离
RIP使用UDP的520端口来发送和接收RIP分组。
跳数的取值范围为0~16,16表示路径无限长,也就是16跳表示不可达,最大调试只能取到15,这就使得该协议不能应用于小型的网络
一条RIP更新报文最多包含25条路由信息,若启用路由认证,则最多传递24条路由信息。
RIP分组分为两种:请求分组和响应分组。
更新计时器(Updata Timer):
每隔30s广播发送一次更新报文,其实是在为25.5~30秒间的随机数时间内发送,叫做异步周期更新,异步更新为了防止同步更新带来的网络拥塞,周期更新是为了解决RIP没有确认机制,来保活,保证可靠传输。
无效计时器(Invalidation Timer)/ 超时计时器(Timeout Timer):
每当一条路由180s后没有收到更新消息,也就是6个更新时间,就会将该路由的度量值改为16跳,不可达。
垃圾收集(Garbage Collection)/ 刷新计时器(Flush Timer):
该条路由停留至240s,会被作为垃圾路由从路由表删除,一般比超时计时器长40s~60s后就会被通告不可达且删除
抑制计时器(Holddown Timer):
用于抑制更新机制,保证网络稳定且不出环,在一条路由不可达之后,为了让所有路由器在一定时间内知道该路由不可达,该路由应在180s内被抑制。
RIP是为了共享路由信息,每间隔30s给直连广播发送路由更新信息,包括局域网内能到达的网段与路由距离,比如下图中R3告知R2我所在网络c,你到142.10.0.0网段需要跳数是1跳,R2告诉R1到达142.10.0.0网段跳数是你到我1跳加上我到目标网段1跳,一共是2跳。
实际上如果网络带宽足够快的前提下,路由选路不仅只关注跳数小的路径,还会综合链路特征选择,比如下图R1到达R3走直连跳数为1,但是R1会选择R1-R2-R3的路径,因为这条路径2Mbps2跳比56Kbps1跳快得多。
RIPV1和RIPV2的区别:
参考RIP协议百度百科
水平分割机制:
此接口接受路由不能转发回去,适用于直连拓扑,MA网络中可以减少重复更新,目的是防环,Cisco中可以用no ip split-horizon关闭水平分割
毒性逆转水平分割:
当一条路由不可达时,改条路由不会立即被删除,直接将度量值设置为16跳不可达带毒性路由,发送出去,当其他路由器收到该毒性路由,因为RIP协议不存在ACK确认包,防止毒性路由一直广播发送,会给发出毒性路由的接口回复一条我已收到该毒性信息来确认,该毒性路由就不在广播发送,在路由表中驻留到超被删除为止,这就打破了水平分割机制,加快路由收敛,同时保证了网络的稳定性。
触发更新:
大型网络难有了毒性逆转水平分割因为延时问题也难免会出现环路,为了加速收敛速度,每当路由跳数有变化,就会立即发出更新信息,不受常规更新时间的限制。
抑制计时器:
定时机制中有讲到,这里不做过多解释,但确实是一个防环机制。
1、实验要求
2、实验分析
(1)配置IP地址,环回,配置完成之后按要求起协议。
(2)要使R3访问R1的环回走R2,我们可以考虑修改优先级与开销值,因为华为中修改优先级不能确定接口,所以只能修改开销值metic(Cisco中可以),在R4上增加开销值,影响别人做metic out,也可以在R3上做metic in,讲环回接口手工汇总,减少路由条目,增加网络稳定性。
(3)telnet,看成时外网互相访问,实则telnet到内网上,做NAT
(4)不能学习R1环回就要ACL控制。
(5)全网可达就是环回之间访问需要在R5上向邻居发送缺省,毕竟R5环回是一个模拟运营商,没有被通告。
3、配置及测试
第一步:IP地址配置,这里就不展示了,说明一下,R1与R2直连网段,R1这边,12.1.1.1/24,环回1.1.1.1/24,R2这边12.1.1.2/24,环回2.2.2.2/24类似直连都是同理,再照实验要求R1再配三个环回
第二步:R1-5起RIPV2,R6-7起RIPV1,除了5的环回不通告之外通告其所有网段
R2-5与R1配置相同,R7与R6配置一致
[r1]rip 100 //起rip,进程号给100
[r1-rip-100]version 2 //版本号2
[r1-rip-100]network 1.0.0.0 //宣告环回
[r1-rip-100]network 12.0.0.0 //宣告直连网段
[r1-rip-100]network 14.0.0.0
[r1-rip-100]network 172.16.0.0
[r6]rip 100
[r6-rip-100]version 1 //版本号为1
[r6-rip-100]network 6.0.0.0
[r6-rip-100]network 46.0.0.0
[r6-rip-100]network 67.0.0.0
这样配置之后R4可以学习到RIPV2的所有路由,且携带网络掩码的无类路由,但是没有RIPV1的路由,R6可以学到R7的环回但是不携带网络掩码有类路由
第三步:手工汇总R1环回,两个路由出接口都要汇总,修改R3的metic in
[r1-GigabitEthernet0/0/0]rip summary-address 172.16.0.0 255.255.252.0 //汇总环回
[r1-GigabitEthernet0/0/1]rip summary-address 172.16.0.0 255.255.252.0
[r3]acl 2000 //ACL控制列表汇总路由
[r3-acl-basic-2000]rule permit source 1.1.1.0 0.0.0.0
[r3-acl-basic-2000]rule permit source 172.16.0.0 0
[r3-GigabitEthernet0/0/0]rip metricin 2000 3 //在经过R4的入接口处用ACL 2000控制将开销值增加3
查看R3的路由表,R3到达R1的下一跳就是R2了
第四步:加快收敛速度,修改计时器的周期时间,增加安全性就是做认证,这里只在R1和R2上做示范,其他也可以做,不做演示
[r1-rip-100]timer rip ?
INTEGER<1-86400> Periodic update time (seconds)
[r1-rip-100]timer rip 15 ? //修改更新时间15s
INTEGER<1-86400> Age time (seconds)
[r1-rip-100]timer rip 15 60 ? //修改老化计时器为60s
INTEGER<1-86400> Garbage collection time (seconds)
[r1-rip-100]timer rip 15 60 100 //修改垃圾回收时间为100s
[r1-GigabitEthernet0/0/0]rip authentication-mode md5 nonstandard plain 123 100 //做MD5认证,标准的明文认证,密码为123,key id 为100
[r2-GigabitEthernet0/0/1]rip authentication-mode md5 nonstandard plain 123 100 //双方的密码和key id要一致
查看修改后的计时器
第五步:RIP1与RIPV2互通,在R6上做,让R6给R4发送RIPV2路由
[r6]inter g0/0/0
[r6-GigabitEthernet0/0/0]rip version 2
在R4上查看是否学到R6给的RIPV2的路由,在R6学到的RIPV1的路由已经是RIPV2,有携带网络掩码,虽然7.0.0.0网段是/8,但是这个是R6汇总过的路由
第六步:配置NAT,将R1和R2相连看成是外网,要telnet到R7的环回看成内网上,但是还要注意的是路由选路,来回走的路径都是R123467这一条路径,还需要做选路干涉
[r2-GigabitEthernet0/0/1]nat server protocol tcp global interface loopback 0 telnet inside 7.7.7.7 telnet //NAT-server基于tcp,在R2的环回0接口上访问时,telnet到内网7.7.7.7
Warning:The port 23 is well-known port. If you continue it may cause function fa
ilure.
Are you sure to continue?[Y/N]:y
[r7]user-interface vty 0 4 //R7上开启NAT虚拟终端,可同时打开5个会话
[r7-ui-vty0-4]set authentication password cipher 123 //设置认证密码暗号为123
//干涉R2去7.7.7.7出接口走R3而不是走R1(干涉in方向)
[r2]acl 2000
[r2-acl-basic-2000]rule permit source 7.0.0.0 0
[r2-acl-basic-2000]q
[r2]inter g0/0/1
[r2-GigabitEthernet0/0/1]rip metricin 2000 3
//干涉回来到R4不走R1要走R3(干涉out方向)
[r1]acl 2000
[r1-acl-basic-2000]rule permit source 12.1.1.0 0
[r1-acl-basic-2000]q
[r1]inte g0/0/1
[r1-GigabitEthernet0/0/1]rip metricout 2000 3
测试登录:
第七步:R6.7拒绝学习R1的环回,acl控制,再RIP调用
[r6]acl 2000
[r6-acl-basic-2000]rule deny source 1.1.1.0 0 //定义R6拒绝R1环回0
[r6-acl-basic-2000]rule deny source 172.16.0.0 0 //定义拒绝R1的环回123
[r6-acl-basic-2000]rule permit source any //该拒绝的拒绝,剩余都要允许
[r6-acl-basic-2000]q
[r6]rip 100
[r6-rip-100]filter-policy 2000 import GigabitEthernet 0/0/0 //RIP在R6去往R4的接口上调用这个列表
查看R6路由表,果然没有了R1的环回,当然R7也访问不到R1的环回,因为他本身就是在R6上学到的R1的环回:
第八步:全网可达,只需要在R5上做缺省,
[r5]rip 100
[r5-rip-100]default-route originate
//路由器给邻居发送一条缺省路由,让所有邻居也都可以学的到。
//此条命令配置时也可以修改cost值