一、距离矢量路由算法 DVR( Distance Vector Routing )
1、基本思想:
(1)、以跳数为代价单位;
(2)、每个路由器周期性的与相邻路由器交换若干<x,d>二元组组成的路由信息,x表示可到达的目的站(主机或网络),d代表到目的站的距离(跳数);
(3)相邻路由器得到路由信息后,按照距离矢量算法(最短路径原则,实现最佳性),建立或更新路由表。
2、实现步骤(四步)
步骤1:初始化
路由器启动时,对每个直接相连的网络生成一个路由表项,跳数为0。
步骤2:路由信息交换
每个路由器周期性向相邻路由器报告自己的路由表,以二元组形式<x,d> 。
步骤3:路由表更新-依据距离矢量算法
步骤4:路由表稳定
经过一定时间,路由表达到稳定,称为算法达到收敛状态。
二、路由协议RIP(Routing Information Protocol )概览
1、RIP特点
RIP基于距离矢量路由算法而开发的。RIP协议适用于中小型网络,有RIP-1和RIP-2。
(1)、 优点: 实现比较简单,所需CPU和内存开销少
(2)、缺点:
由于每个路由器要将自己整个路由表发送给所有相邻路由器,路由信息量大,占较大的网络开销;
好路由消息传播快,坏路由信息传播速度慢。网络出现故障,传播时间往往需要较长的时间(数分钟);
存在路由同步(我的计算结果依赖于你,你的计算结果依赖于我),算法收敛速度慢,容易引发更新不一致;
可扩展性不好,只能适用于小规模网络,一条路径上最多15个路由器;
可产生路由环路,为避免路由环路需要特殊处理;
2、环路解决办法
(1)触发更新
一旦发现网络链路断掉,立即将该条路由项设置为不可达,并立即发送路由更新报文,而不需要等到正常的路由更新周期到来再发送.
常与带毒性逆转的水平分割技术结合使用.
(2)、水平分割
路由向一个接口发送路由更新报文中不包含该接口获取的路由信息。
3、工程实际使用
(1)、源于一个linux下一个rounted应用程序
(2)、RIP协议最大有15跳,16跳为不可达(等价无穷大).
(3)、采用跨层设计思想:RIP协议工作在应用层,传输层调用UDP(UDP端口号为520)
三、RIP协议工作原理
1、 采用两种报文类型:
(1)、请求(request):向相邻路由器请求路由信息;
(2)、响应(response)更新:向相邻路由器通告本地路由信息;
2、工作原理
(1)路由器启动时,RIP协议在接口上发送request报文, 等待相邻路由器的request和response,并予以应答;当收到response时,利用距离矢量算法进行路由更新.
(2)路由器周期性发送response,定期通告本地路由信息给邻居路由器。
(3)一个路由器路由信息发生变化,会主动发送response给邻居路由器。
3、三个定时器
为了使路由器中路由信息反映当前网络实际连通状况,确保路由信息的时效性,使用了三个定时器:
(1)、更新定时器
* 用于触发路由器周期性发送路由更新消息(response),基准时间为30秒;
* 为了防止所有路由器同时发送response,RIP规定在基准时间上随机加一个5秒的偏移.时间可在[25,35]之间随机选取
(2)、过期定时器
* 每当增加或更新一条路由记录时,协议模块会自动启动一个过期定时器(生存期)。
* 如果超时(180秒),没有收到该路由记录的任何信息(更新或确认),该路由项标记为无效(将跳数设置为16).
(3)、刷新定时器
* 一条路由记录失效后,为了向相邻路由器通告此消息,并不立即删除,而要保存一段时间.这个时间由刷新定时器控制(120秒).
* 又称为垃圾回收定时器(garbage collection timer)
四、RIP协议的说明
1、仅和所有相邻的路由器交换信息。
2、交换的路由信息是当前本路由器所知道(除了从待交换方向的邻居路由器学习到的路由信息)的全部路由信息,即自己的路由表。
3、路由信息发送时机
* 请求交换:request, reponse;
* 周期交换:按固定的时间间隔周期交换路由信息,例如,每隔 30 秒;
*触发交换:路由信息发送变化时自动告知邻居路由器。
RIP协议的特点:
1.度量值: 以跳数作为唯一的度量值,在复杂的环境中可能会选择次佳路径,最大支持15跳。
2.路由表的建立:简单照抄,把自己没有的路由信息简单抄进路由表。(距离矢量协议,道听途说,听到的路由可能不是最优的,甚至是错的。对整个网络没有完整的认识)
3.信息的更新:每30秒周期性地通告自己的路由表。收敛慢,且占用带宽。无效时间180秒,抑制时间180秒,清除时间240秒。
4.适用环境;小型简单的网络环境。
V1与V2的区别:
1.V1版本:更新信息不带子网掩码,有类路由协议。不适用于子网不连续的网络环境。
. V2版本:更新信息携带子网掩码,无类路由协议。适用于子网不连续的网络环境。
2. V1广播更新,V2使用组播(224.0.0.9)更新,防止对局域网PC的影响.
3. V1不支持身份验证,V2 支持.
有类与无类协议
有类协议 (分类协议,区分A、 B 、C类 )
早期路由器配置(CPU/内存)较低,为节省资源,早期的路由协议,如RIP V1和IGRP,在发送路由更新时,不携带掩码。
但路由表中,必须存在掩码,则接收方根据类别进行假设:
1. 同一主网,采用自己掩码
2. 不同主网,归到主类 ( 自动汇总 )
例一:
10.1.0.0/16 10.2.0.0/16 172.16.1.0/24 172.16.2.0/24
―――――――― R1 ---------------------- R2 -------------------------- R3 --------------------
F0/0 F0/1
R 10.1.0.0/16 F0/0
10.2.0.0/16
172.16.1.0/24
R 172.16.2.0/24 F0/1
例二: 子网不连续
172.16.1.0/24 12.0.0.0 23.0.0.0 172.16.2.0/24
―――――――― R1 ---------------------- R2 -------------------------- R3 --------------------
F0/0 F0/1
172.16.0.0→ ←172.16.0.0
R 172.16.0.0/16 F0/0
F0/1
同时,在R1上既没有172.16.2.0/24的路由,也没有172.16.0.0/16的路由,网络不通。
说明:事实上,当R向邻居发送更新时,若发现更新条目和自已接口(发送)不在同一网段,则进行自动汇总。
解决办法:
采用无类协议,如RIPV2 / OSPF / EIGRP 等,路由更新中携带子网掩码,可以构建精确的路由表。
包括:RIPV2 OSPF EIGRP IS-IS BGPV4