动态路由协议的分类
距离矢量路由选择协议
- 使用距离矢量路由协议的路由器并不了解网络的拓扑。该路由器只知道:
- 自身与目的网络之间的距离。
- 应该往哪个方向或使用哪个接口转发数据包
距离矢量路由选择协议的特点
- 周期性地更新(广播)整张路由表。
- 距离:到达目标网络的度量值
- 方向:去往目标网络的下一跳路由器
距离矢量路由选择协议
- 路由器初始启动
- 最初的网络发现:直连路由写入路由表。
- 处理路由信息交换
- 路由收敛完成
RIP
基本原理
- RIP是Routing Information Protocol(路由信息协议)的简称。
- RIP是一种基于距离矢量(Distance-Vector)算法的路由协议 。
- RIP协议适用于中小型网络,分为RIPv1和RIPv2。
- RIP支持水平分割、毒性逆转和触发更新等工作机制防止路由环路。
- RIP协议基于UDP传输,端口号520。
RIP路由的度量值
- RIP以跳数作为度量值,所谓的条数指的是去往目标网络所需要经过的路由器个数。
- RIP以跳数作为度量值,虽然简单,但是实际上是不科学的。
- 如何查看RIP路由的度量值:
[R1]display ip routing-table
Route Preference
- 路由器通过多种不同的路由协议法相去往同一个目的网络的路由时,会选择路由优先级值最小的路由;如果这些路由学习自相同的路由协议,则优选度量值最优的
路由协议与缺省的优先级值的对应关系
RIP依据“传闻”的路由更新
RIP的工作过程可分为一下五个阶段
RIP工作第一阶段:会从每个参与工作的接口上发送请求数据包。该请求数据包会向所有的RIP路由器请求一份完整的路由表。
广播链路为广播形式请求, P2P 链路为下一跳地址形式请求。
RIPv1发送数据包为广播形式: 255.255.255.255
RIPv2发送数据包为组播形式: 224.0.0.9
RIP工作第二阶段: RIP有两种类型的消息,响应和接收消息。请求数据包中的每个路由条目都会被处理,从而为路由建立度量以及路径。
RIP工作第三阶段:路由器接收并处理响应,它会通过对路由表项进行添加,删除或者修改作出更新。
RIP工作第四阶段:路由器以30秒一次地将整个路由表以应答消息地形式发送到邻居路由器。
RIP工作第五阶段:当某个路由条目度量发生改变时,路由器只发送与改变有关的路由,并不发送完整的路由表。
RIP的四个计时器
1、更新计时器(Updata Timer):
RIP协议平均每隔30s(默认值)从每个启动RIP协议的接口不断地发送出响应消息。这个周期性的更新由更新计时器进行初始化,并且包含一个随机变化量用来防止表的同步。
2、无效计时器(Invalidation Timer)/ 超时计时器(Timeout Timer):
无效计时器用来限制停留在路由选择表中的路由未被更新的时间。无论什么时候,当有一条新的路由建立成功后,超时计时器就会被初始化为180s(默认值), 而每当接收到这条路由的更新报文时,超时计时器又将被重置成计时器的初始化值。如果一条路由的更新在180s(6个更新周期)内还没有收到,那么这条路由 的跳数将变成16,也就是标记为不可达路由。
3、垃圾收集(Garbage Collection)/ 刷新计时器(Flush Timer):
这个计时器所设置的时间长度一般比无效计时器/限时计时器的时间长240~60s。如果垃圾收集计时器也超时了,则该路由将被通告为一条度量值为不可到达的路由,同时从路由选择表中删除该路由。
4、抑制计时器(Holddown Timer):
用于抑制更新机制。如果一条路由更新的跳数大于路由选择表已记录的该路由的跳数,那么将会引起该路由进入长达180s(即6个路由更新周期)的抑制状态阶段。
RIP防环机制
环路的产生
距离矢量路由选择协议的防环机制
- 定义最大度量以防止计数至无穷大
- 为了防止RIP路由在网络中被无线泛洪从而跳数累加到无穷大,RIP规定:路由的最大跳数为15跳,也就是如果度量值大于等于16跳则被视为不可达;
- 最大跳数的设定虽然解决了度量值技术到无穷大的问题,但是却也极大地限制了RIP所能支持的网络的规模。
- 水平分割
- 水平分割Split Horizon及带毒性逆转的水平分割
-
- 水平分割的原理是,RIP从某个接口学到的路由,不会从该接口在发给邻居路由器。这样不但减少了带宽消耗,还可以防止路由环路。
- 路由中毒【route poisoning】
- 当R3感知到 3.0.0.0/8 网段发生故障的时候,会把这条路由的度量值设置为16,通知给全网,当其他路由器收到这条路由更新的时候,会认为这条路由不可达,经过超时计时器和刷新计时器后,会从路由表删除这条失效的路由。
- 毒性逆转
- 原理是,RIP从某个接口学到路由后,从原接口发回邻居路由器,并将该路由器的开销设置为16(即知名该路由不可达)。利用这种方式,可以清除对方路由表中的无用路由
- 抑制计时器
- 触发更新
- 触发更新是指当路由信息发生变化时,立即向邻居设备发送出发更新报文,而不用等待更新定时器超时,从而避免产生路由环路。
RIPv2相比v1的改进
- 支持外部路由标记(Route Tag),可以在路由策略中根据Tag对路由进行灵活的控制。
- 报文中携带掩码信息,支持路由聚合和CIDR(Classless Inter-Domain Routing)。
- 支持指定下一跳,在广播网上可以选择到目的网段最优下一跳地址。
- 支持以组播方式发送更新报文,只有支持RIP-2的设备才能接收协议报文,减少资源消耗。
- 支持对协议报文进行验证,增强安全性。
下一跳
下一跳特性使得RIP在多路访问网络中能够选择最优的下一跳。在上图中,R1将2.0.0.0/8路由引入RIP,通过RIP通告给R3,在其发送RIP路由时,将下一跳字段设置为192.168.123.2,如此一来,R3收到路由后,将2.0.0.0/8安装进路由表时,将下一跳设置为R2(而不是R1)。
报文认证
Silent-Interface
- R1连接着192.168.1.0/24网段,该网段中都是终端设备,并无其他RIP路由器,通过执行silent-interface命令,将GE0/0/1接口配置为静默接口,从而抑制RIP接口向外发送报文,如此一来,主机不会再收到RIP报文,减少了资源及网络带宽损耗。
- 如果一个接口被抑制,该接口所在网段的直连路由仍然可以发布给其它接口。
相关指令
启动RIP进程,并进入RIP配置视图: [Router] rip 1
指定RIP的版本(默认为版本1): [Router-rip-1] version 2
在指定网段使能RIP(RIP只支持classful网络宣告): [Router-rip-1] network 192.168.12.0
实验1:
实验要求:在AR1、AR2、AR3上运行RIPv2,并宣告各自直连接口,使得全网互通
拓扑图
为两台主机配置ip地址,子网掩码,默认网关
为路由器的接口配置ip地址,并进行设置RIP
查看各个路由器上的RIP配置
测试:用PC1去pingPC2
设置静默端口
在AR1的G0/0/0接口上进行抓包,不会抓到任何数据
在AR3的G0/0/1接口上抓包会抓到数据,如下图【AR3的G0/0/1接口没有设置静默接口】
实验2
实验要求:在AR1、AR2、AR3上运行RIPv2,并宣告各自直连接口,使得全网互通
拓扑图
为主机配置ip地址,子网掩码,默认网关
为路由器的接口配置ip地址,并配置RIP
在各路由器上查看RIP信息
测试:在pc1上去pingPC3