传统RIP协议
2、协议处理
RIP 协议的运行过程就是路由器软件对消息输入和输出处理过程,其输入和出处理大致如下所描述:
1、输入处理:主要是指路由器协议软件对在 520 号 UDP 端口收到的数据报进行的处理。 对于输入处理,首先必须先作一定格式检查,检查通过后,再分别对几种输入消息做相应的处理。
请求报文:路由器在开始运行时,为了从邻机处获取路由表的初始值,通常会发一个请求。报文的 Command 字段为 (request) 。对所有或部分路由表的请求,一般以广播
形式从 520号 UDP 端口发送。实际中,这种请求有两种格式:请求获取路由表的全部和请求获取路由表的某些特定路由项。
路由软件先逐个路由项地处理请求,如果没有任何路由项,也就没有响应;如果请求中恰好只有一个路由项,并且 address family identifier 为 0 , metric 为 16 ,则表示需要接收方发送所有路由表的请求;除此之外,则是要求部分路由,处理很简单,沿着请求路由项表一个一个看,对于每个路由项,在主机路由数据库中查找,如果找到,则将该路由的 metric 值填入数据报的 metric 字段,如果没有,则向其中填 16 。一旦所有路由项均已处理,将 command 字段设为响应 (response) ,并将该数据报发回其来自的端口。注意,根据请求是否关于指定的一批目的地,还是关于整个路由表,处理有所不同。如果关于整个路由表,输出作普通的处理即可,包括水平分割和子网隐藏,因此来自路由表的某些路由项将被隐藏;如果是指定路由项,则将查找结果返回,不作水平分割,如果需要还要返回子网信息。
2、响应报文 :因为指定查询、路由修改等原因而收到响应。
不论收到什么样的响应, RIP 处理程序就开始更新它的路由表。路由表的每一项至少都要包括如下内容:
目的站点的地址;
通往目的站点的量度值;
“下一个路由器”的地址;
“最近更新过”的标志;
几个定时器。
因为处理响应可能修改主机路由表,所以必须作严格的有效性检查。对于
RIP Veon1 数据报,对 must be zero 域必须进行查零处理,对 RIP Version2 数据报则可忽略。数据报验证有效后,还要对其路由项逐个进行验证。全部通过后,我们设置 metric = MIN ( metric + cost , 16 ) , 16 代表无限长,然后检查是否已有路由到达该地址,如果没有,则加入路由表,但是如果 metric 是无限长,则不要将其加入路由表;如果现有路由不比新加的路由差,我们也不将其加入路由表。对此,需要执行以下动作: