RIPV1
零、距离矢量
以距离和方向两个参量去确定路径。
一、基本概念
RIP使用UDP 520端口,位于应用层
RIP的两种消息类型:请求消息(request)和响应消息(response)。

RIP的度量值是跳,16跳表示不可达。


二、RIP收敛过程
开始时,RIP从每个启用RIP协议的接口广播带有请求信息的数据包。RIP程序进入循环过程,侦听来自其他路由器的RIP请求和响应,接受到请求就会送他们的路由表的响应消息。
当收到响应消息时,如果响应是新的,那么将新的条目连同通告路由器一起加入到自己的路由表中,通告路由器的地址可以从响应信息的源地址中得到。
如果响应信息不是新的,那么只有在比目前的路由条目拥有更小的条数时才能替换原来存在的路由条目。如果比现在的路由条目的跳数更大,并且更新来自于本更新的下一跳的路由器(比如本条路由是2跳,本来应该是第3跳的那个路由器发来了另外一个大于2跳的更新),同时本路由器(该跳路由为2跳的路由器)收到上游路由器(该路由跳为1的路由器)发来不可达路由信息。那么路由将在一个抑制时间段内被标记为不可达的路由。

(抑制计时器在知识点四详细的解释一下)


三、四个重要的计时器

注意:计时器是是基于每条路由的,并不是基于路由器或者是路由表的。


1、更新计时器:30s。

平均每隔30s从每个启动rip协议的接口不断的发送响应消息。用来同步路由表。实际上并不一定是30s,一般是25.5--30s,有一个抖动值。为了网址每个路由器更新计时器同步,否则可能在每个30秒,所有路由器同时更新。造成网络的拥塞。


2、无效计时器:180s。六个更新计时器周期

无论什么时候,当一跳路由被建立,超时计时器就会被初始化为180s,而每当收到这条路由的更新消息时,超时计时器又将被重置成计时器的初始化值。如果在180s(超时计时)内,没有收到路由更新,那么将会将路由设置为16跳,即不可达。


3、刷新计时器:一般比无效计时器长60-240s。默认应该是240s

如果到达240s,没有收到更新,那么就会将该跳路由从路由表中删除。


4、抑制计时器:默认180s

个人的理解,抑制计时器是一个防止环路的机制,并且可以减少整个拓扑中路由的抖动。笼统的说,抑制计时器,是帮助路由表稳定的一个缓冲吧。现在来详细的说一下抑制计时器。


四、抑制计时器
距离矢量协议采用触发更新来加速收敛过程。请记住,除触发更新外,使用距离矢量路由协议的路由器还会发送定期更新。假设现在存在一个不稳定的网络。在很短的时间内,接口被重置为 up,然后是 down,接着再重置为 up。该路由将发生摆动。使用触发更新时,路由器可能会反应过快,从而在不知情的情况下造成路由环路。此外,路由器在不稳定期间发送的定期更新也可能导致路由环路。抑制计时器可以防止在上述情况中出现路由环路。抑制计时器还有助于防止计数至无穷大情况的出现。
抑制计时器可用来防止定期更新消息错误地恢复某条可能已经发生故障的路由。抑制计时器指示路由器将那些可能会影响路由的更改保持一段特定的时间。如果确定某条路由为 down(不可用)或 possibly down(可能不可用),则在规定的时间段内,任何包含相同状态或更差状态的有关该路由的信息都将被忽略。这表示路由器将在一段足够长的时间内将路由标记为 unreachable(不可达),以便路由更新能够传递带有最新信息的路由表。
抑制计时器通过以下方式工作:
1. 路由器从邻居处接收到更新,该更新表明以前可以访问的网络现在已不可访问。
2. 如果在抑制期间从任何相邻路由器接收到含有更小度量的有关该网络的更新,则恢复该网络并删除抑制计时器。
3. 如果在抑制期间从相邻路由器收到的更新包含的度量与之前相同或更大,则该更新将被忽略。如此一来,更改信息便可以继续在网络中传播一段时间。
现在举个例子说明一下抑制计时器的必要性。  
RIP 详解_request

现在R2到1.1.1.1走R1,2跳,R3走R4或者R2,3跳。这些都没问题。现在假设R1与1.1.1.1之间的链路断掉。这时候R1会给R2和R4发送一个路由更新,声明1.1.1.1不可达。如果没有抑制计时器,只有水平分割等策略,会出现问题。R1告诉R2和R4,到1.1.1.1为不可达。那么R2直接相信了。为不可达(直接相信不可达不是因为没有抑制计时器,而是因为这条路由是从R1传过来的,和1.1.1.1是本身的路由是从一个方向来的)。R4同样相信了。但是因为计时器的缘故,R3还不知道1.1.1.1 down了。这个时候R3会告诉R2,那边不能到,我这边能到啊,R2相信了,直接走R3,为3+1跳。再后来R1也从R2那来了路由,相信了1.1.1.1可以从R2走。为4+1跳。依次类推。造成了环路。


五、RIP的防环路策略
1、最大跳数:当一个路由条目作为副本发送出去的时候就会自加1跳,那么最大加到16跳,到16跳就已经被视为最大跳数不可达了。
水平分割:路由器不会把从某个接口学习到的路由在从该接口广播回去或者以组播的方式发送回去。
2、带毒性逆转的水平分割:路由器从某些接口学习到的路由有可能从该接口反发送出去,只是这些被路由已经具有毒性,即跳数都被加到了16
3、抑制定时器:当路由表中的某个条目所指网络消失时,路由器并不会立刻的删除该条目并学习新条目,而是严格按照我们前面所介绍的计时器时间现将条目设置为无效接着是挂起,在240秒时才删除该条目,这么做其实是为了尽可能的给于一个时间等待发生改变的网络恢复。
4触发更新:因网络拓扑发生变化导致路由表发生改变时,路由器立刻产生更新通告直连邻居,不在需要等待30秒的更新周期,这样做是为了尽可能的将网络拓扑的改变通告给其他人。
六、请求消息、响应消息
响应消息:每条消息最大可以包含25个路由条目。RIP 详解_时间段_02

命令:请求消息(1)还是响应消息(2)
版本号:RIPV1为1
地址族标识:对于IP,该项为2
IP地址:路由的条目
度量值:不说了

一个路由更新中最多可以包含25个路由条目。
所以路由更新的最大包应该是4+(25*20)=504  还有8位的UDP头部。  不带IP头部部分的话最大512字节

响应消息可以发单播,也可以发广播。当响应请求消息的时候,发的是单播30s更新计时器到时的时候,发的是广播

请求消息:
RIP的请求消息可以请求整个路由表信息,也可以请求某些具体路由的信息。
请求整个路由表,请求信息含有一个地址族表示字段为0,度量值为16的单条路由。回复以单播的方式回复。


七、负载均衡
如果到达同个目的网络有多条跳数相等的路由,那么RIP进行等价路径的负载均衡。

八、有类别路由
RIPV1不支持无类别路由,不支持VLSM,CIDR。


九、RIP的单播更新
假如RIP连接在一个广播型的网络中,但是只希望RIP去其中一台路由器建立邻居关系。这个时候可以将两台路由器的接口设置成为被动接口。不发送接受路由更新,同时用neighbor 指像对端的路由器。
这个在过程在两台机器都需要做
route rip
passive-interface eth0
neighbor 192.168.1.1

十、rip的偏置列表
先做一个ACL,然后路由配置下做offset-list
access-list 1 permit 1.1.0.0 0.0.255.255
route rip
offset-list 1 in 3 s0  //1.1.0.0/16的路由从s0口进来加3跳

十一、使用接口模式下的命令ip rip trigger配可以启动RIP协议的触发扩展特性。


RIPv2

一、RIPv2保留了绝大多数RIPv1的特性。只有一个例外,就是更新是以组播的方式进行更新的。组播地址为   224.0.0.9

二、更新消息
RIP 详解_时间段_03直接上图。

主要加入了两点。一个是子网掩码。也就是说RIPv2支持无类路由。第二个是下一跳,可以指出比通告路由更好的下一跳。如果是四个0的话,那么通告路由器就是下一跳。


三、RIP V1  V2的兼容性
RIP-1:只有RIPv1的消息被发送出去
RIP-1兼容:RIPv2使用广播方式替代多播来通告消息,以便RIPV1可以接收他们。
RIP-2:RIPv2使用多播的方式将消息通告到目的地址224.0.0.9
直接举例子来说明
RIP 详解_时间段_04左边运行的是ripv1默认的版本。右边是ripv2。
debug看一下左边路由器
RIP: received v2 update from 12.0.0.2 on Serial2/0
2.2.2.0/24 via 0.0.0.0 in 1 hops
RIP: sending  v1 update to 255.255.255.255 via Serial2/0 (12.0.0.1)
RIP: build update entries
network 1.0.0.0 metric 1
RIP: sending  v1 update to 255.255.255.255 via Loopback0 (1.1.1.1)
RIP: build update entries
network 2.0.0.0 metric 2
network 12.0.0.0 metric 1
右边
RIP: ignored v1 packet from 12.0.0.1 (illegal version)
RIP: sending  v2 update to 224.0.0.9 via Serial2/0 (12.0.0.2)
RIP: build update entries
2.2.2.0/24 via 0.0.0.0, metric 1, tag 0
RIP: sending  v2 update to 224.0.0.9 via Loopback0 (2.2.2.2)
RIP: build update entries
12.0.0.0/24 via 0.0.0.0, metric 1, tag 0
自己研究一下就能看出来了。
这个时候左边可以识别右边发来的组播包,同时有到2.2.2.2的路由。但是右边忽略了v1的包,没有到1.1.1.1的路由。
这个时候我们强制把左边改为v1
再来看看左边
RIP: ignored v2 packet from 12.0.0.2 (illegal version)
Router#RIP: sending  v1 update to 255.255.255.255 via Serial2/0 (12.0.0.1)
RIP: build update entries
network 1.0.0.0 metric 1
RIP: sending  v1 update to 255.255.255.255 via Loopback0 (1.1.1.1)
RIP: build update entries
network 2.0.0.0 metric 16
network 12.0.0.0 metric 1
这个时候左边这台路由器也不识别v2的版本了
同时2.2.2.2的路由也不可达了
四、支持无类别路由,VLSM
五、支持口令认证
支持明文、密文
key  chain aaa
key 1
key-string kachina
interface eth0
ip