17-动态路由协议,RIP
1.RIP:routing information protocol 路由信息协议
-
距离矢量路由协议,属于IGP协议
-
适合中小企业网络,有RIPv1和RIPv2、RIPv3版本
-
基于UDP,端口号520
-
周期性(25.5~30.0/次)更新
-
支持水平分割、毒性反转和触发更新等防环机制
0)工作原理
当路由器运行RIP后,首先会发送路由更新请求;
收到请求的路由器会发送自己的RIP路由进行响应;
请求只发送一次,然后路由器之间每30s左右互相发送一次响应;
可以抓包看到,request包只有开始时发一次,后面的都是response数据包;(抓包时,看UDP下的RIPv1或RIPv2数据包)
respons发送的数据包主要是路由器的路由表;
1)RIP度量
如图:
RIP度量值只看跳数;
直连网络路由默认是0,10.0.0.0和路由器B是直连的,跳数为0;
跳数在发送路由器响应时会加1:
路由器B给路由器A发送RIP响应时,跳数加1;因此从B到A走上面那条路RIP度量值为1跳;
路由器B给C发送RIP响应时跳数加1,C给A发送响应时,跳数再加1;因此从B到A走下面RI{度量值为2跳;
-
RIP把跳数作为度量值来衡量到达目的网络的距离
-
缺省情况下,直连网络的路由跳数为0,当路由器发送路由更新时,会将度量值加1
-
RIP规定超过15跳为网络不可达(导致RIP不适应于大型网络,每一跳耗时30s导致RIP慢)
2)RIPv1和RIPv2的区别
版本
|
区别
|
RIPv1
|
有类别路由协议(没有掩码)
不支持VLSM,CIDR
以广播的形式发送报文
不支持认证
|
RIPv2
|
无类别路由协议
支持VLSM,CIDR
支持以广播或者组播(224.0.0.9)方式发送报文
支持明文认证和MD5认证
|
如果要使用RIP,最好用RIPv2,不用RIPv1;
如图:
RIPv1的数据包发给255.255.255.255,是广播地址,给全广播域发,不安全;
RIPv2的数据包发给244.0.0.9,是组播地址;
3)RIPv1与RIPv2报文格式
Command命令:值为1表示请求,值为2表示回应
Version版本:表明使用的版本
协议簇:TCP/IP协议该字段为2
RIPv2的报文相对于v1,使用了v1中为空的字段,多了路由标签、掩码、下一跳;
4)路由认证
RIPv2支持路由认证,用来防止路由协议攻击;
5)RIP环路
典型的环路:两个路由器,A的下一跳指向B,B的下一跳指向A
例如:
如下图,10.0.0.0到B是直连,直连为0跳;
1.0.0.0从B到A是1跳;
B-A-B是2跳;
也就是说,路由器B的路由表中1.0.0.0为目标地址的路由可能有两条记录:
直连的0跳;
B-A-B的2跳;
正常情况下,RIP以跳数小的优先,不会将B-A-B的路由写在路由表中;
如果10.0.0.0和路由器之间挂掉了,路由器B的路由表中10.0.0.0的直连路由消失;
由于RIP发送消息有30s的间隔,有时间差,A并不知道10.0.0.0的网段挂掉了;
A继续发消息给B,也就是10.0.0.0的2跳的路由,此时B的路由表中没有10.0.0.0小于2跳的路由于是接收了这条信息;
然后B会在路由表里写去往10.0.0.0的下一跳是A,有3跳;
然后A收到消息后继续发给B这样形成环路;
这样的消息知道下一跳变成16时才终止,因为RIP跳数最大值是15;
6)RIP解决环路的方式:触发更新和水平分割、毒性反转
类型
|
含义
|
触发更新:
|
网络存在变化立即通知邻居
|
水平分割:
|
从邻居收到的路由信息不会在转发回去
|
毒性反转:
|
从邻居收到的路由信息会转发回去,但跳数置为16
|
1】触发更新
由于路由器的路由表发生变化时可能由于时间差造成环路;
采用触发更新机制来避免这一缺陷:一旦检测到路由信息变化时,会立即通知邻居路由器更新;
2】水平分割
水平分割默认是开启的;
意思是:我告诉你的事情,你不要再告诉我了;
开启命令:
rip sp
rip split-horizon
查看是否开启:
display rip 进程号 interface 接口
display rip 进程号 interface 接口 verboses
3】毒性反转
10.0.0.0网段正常时,B给A发送消息,A的路由表中到10.0.0.0网段为1跳;
当10.0.0.0网段挂掉后,B会立即向A发送10.0.0.0网段的跳数为16,表示不可达,此时A的路由表中到10.0.0.0的跳数从1变为16;
A也会继续发消息给B,但由于带的跳数为16,表示不可达,因此B不会相信并修改路由表,也就无法形成环s路;
毒性反转和水平分割机制矛盾(水平分割不会往回发);如果都开了,以毒性反转为主;
毒性反转默认是关闭的;
开启命令:
rip po
rip poison-reverse
查看是否开启:
dis rip 1 int g0/0/2
dis rip 1 int g0/0/2 ver //查看进程号为1的接口g0/0/2的详细信息
2.RIP配置
1)基本配置
例如:给下面的路由器RTA的三个接口开启RIP
rip
version 2
network 10.0.0.0
network 12.0.0.0
network 13.0.0.0
network命令后面只能带主网地址;
例如:
12.0.0.0为A类地址,默认掩码8,当输入命令network 12.0.0.0后12.0.0.0网段的所有地址都会开启RIP;
network命令后的地址不能带掩码来给特定的子网开启RIP;
如果想给12.0.0.0网段的某个子网单独开启RIP,可以使用Undo rip、slient-interface等命令来实现;
2)禁止接口发送RIP
例如:
从A到C有1跳;
A-B-D-C有3跳;
RIP协议以跳数为度量值,默认会走A-C;
但A-C的带宽远远小于跳数多的路时,根据现实情况,选A-B-D-C更合适;
可以通过禁止路由器A右下方的接口来实现:
int g0/0/0
undo rip out put
3)禁止接口接收RIP
例如:
从A到D有两条路线:A-B-D 和 A-C-D;
如果希望只走A-B-D;
可以将路由器D的下方接口禁止接收,导致C-D不通,从而达到目的;
命令:
int g0/0/1
undo rip input
4)抑制接口
抑制接口命令的作用是:让目标接口只收不发;
命令:silent-interface g0/0/1
抑制接口的优先级大于rip input和 rip output,同时配置时,以抑制接口命令为主;
也就是说:如果个接口g0/0/1同时配置了抑制接口和禁止接收时,该接口依然能接收;
5)命令解释
命令
|
备注
|
Rip 1
|
开启RIP进程,默认进程为1(可定制进程号,进程号从1到65535)
|
Version 2
|
开启RIPv2版本
|
Network 10.0.0.0
|
宣告网络,将该IP地址的接口开启RIP功能
|
Rip metricin 5
|
设置接口接收路由增加度量值(收的时候度量值加5)
|
Rip metricout 5
|
设置接口发送路由修改度量值(发的时候度量值变成5)
|
Rip split-horizon
|
开启水平分割,默认开启
|
Rip poison-reverse
|
开启毒性反转,默认关闭
|
Undo rip input
|
禁止接口接收RIP数据包
|
Undo rip output
|
禁止接口发送RIP数据包
|
slient-interface g0/0/0
|
配置被动接口,只收不发
|
Display rip
|
验证RIP信息
|
Display rip interface g0/0/0 verbose
|
验证接口RIP详细信息
|