以跳数为代价单位
每个路由器周期性的与相邻路由器交换若干<x,d>二元组组成的路由信息,x表示可到达的目的站(主机或网络),d代表到目的站的距离(跳数);
相邻路由器得到路由信息后,按照距离矢量算法(最短路径原则,实现最佳性),建立或更新路由表。
步骤1:初始化
路由器启动时,对每个直接相连的网络生成一个路由表项,跳数为0。
步骤2:路由信息交换
每个路由器周期性向相邻路由器报告自己的路由表,以二元组形式<x,d> 。
步骤3:路由表更新-依据距离矢量算法
步骤4:路由表稳定
经过一定时间,路由表达到稳定,称为算法达到收敛状态。
RIP基于距离矢量路由算法而开发的。RIP协议适用于中小型网络,有RIP-1和RIP-2。
(1) 优点: 实现比较简单,所需CPU和内存开销少
(2)缺点: 由于每个路由器要将自己整个路由表发送给所有相邻路由器,路由信息量大,占较大的网络开销; 好路由消息传播快,坏路由信息传播速度慢。网络出现故障,传播时间往往需要较长的时间(数分钟); 存在路由同步(我的计算结果依赖于你,你的计算结果依赖于我),算法收敛速度慢,容易引发更新不一致; 可扩展性不好,只能适用于小规模网络,一条路径上最多15个路由器; 可产生路由环路,为避免路由环路需要特殊处理;
(1)触发更新
一旦发现网络链路断掉,立即将该条路由项设置为不可达,并立即发送路由更新报文,而不需要等到正常的路由更新周期到来再发送. 常与带毒性逆转的水平分割技术结合使用. (2)、水平分割 路由向一个接口发送路由更新报文中不包含该接口获取的路由信息
(1)、源于一个linux下一个rounted应用程序
(2)、RIP协议最大有15跳,16跳为不可达(等价无穷大).
(3)、采用跨层设计思想:RIP协议工作在应用层,传输层调用UDP(UDP端口号为520)
(1)、请求(request):向相邻路由器请求路由信息; (2)、响应(response)更新:向相邻路由器通告本地路由信息;
1)路由器启动时,RIP协议在接口上发送request报文, 等待相邻路由器的request和response,并予以应答;当收到response时,利用距离矢量算法进行路由更新.
(2)路由器周期性发送response,定期通告本地路由信息给邻居路由器。
(3)一个路由器路由信息发生变化,会主动发送response给邻居路由器。
为了使路由器中路由信息反映当前网络实际连通状况,确保路由信息的时效性,使用了三个定时器:
(1)更新定时器
用于触发路由器周期性发送路由更新消息(response),基准时间为30秒;
为了防止所有路由器同时发送response,RIP规定在基准时间上随机加一个5秒的偏移.时间可在[25,35]之间随机选取
(2)过期定时器
每当增加或更新一条路由记录时,协议模块会自动启动一个过期定时器(生存期)。
如果超时(180秒),没有收到该路由记录的任何信息(更新或确认),该路由项标记为无效(将跳数设置16).
3)刷新定时器
一条路由记录失效后,为了向相邻路由器通告此消息,并不立即删除,而要保存一段时间.这个时间由刷新定时器控制(120秒)
1、仅和所有相邻的路由器交换信息。
2、交换的路由信息是当前本路由器所知道(除了从待交换方向的邻居路由器学习到的路由信息)的全部路由信息,即自己的路由表。
3、路由信息发送时机
请求交换:request, reponse;
周期交换:按固定的时间间隔周期交换路由信息,例如,每隔 30 秒;
触发交换:路由信息发送变化时自动告知邻居路由器。