1      基本介绍

RIP(routing Information Protocol,路由信息协议),基于距离矢量(Distance-Vector)的内部网关协议(IGP,Interior Gateway Protocol),以跳数(Hop)为度量单位。距离矢量算法也称为Ford-Fulkerson或Bellman-Ford算法。

RIPv1为RFC1058,RIPv2为RFC2453.

RIP的特点:

周期更新30S,

Metric(度量值)最大15跳,16跳为不可达

V1广播更新,V2组播更新(224.0.0.9)

泛洪路由表,即从邻居学习到的路由放进自己的路由表,然后再通告给其他路由器;

UDP 端口520。

2      定时器

RFC2453定义了3种定时器

l  更新定时器(Updata Timer),定期更新路由,发送response报文,30s;

l  老化定时器(Age Timer),如果在老化时间内没有收到邻居的更新报文(response),则认为该路由不可达,时间6倍更新定时器,180S,并启动垃圾收集定时器;老化后该路由不会出现在路由表,但还在RIP路由表中;

l  垃圾收集定时器(Garbage-collect Timer),120s,在路由老化定时器超时后启用垃圾收集定时器,如果在垃圾收集定时器内仍然没有收到该路由的更新,则从RIP路由表中删除该路由。

3      报文类型

RIP只有两种报文,请求报文和响应报文

请求报文(request):RIP启动(1RIP进程初次启动,2接口初次加入RIP,3RIP接口重置)后向对方请求自身没有的路由,对方以相应报文(response)包含整个路由表进行回复;

响应报文(response):RIP定期发送该报文(30S,包含所有路由信息,每报文最多包含25条),或收到请求报文后立即回应。

4      报文格式

4.1    RIPv1报文格式

RIPv1报文由报文头(Header)和路由表项(Route Entries)组成

RIP学习笔记_第1张图片

RIP头部

Command:8bit,报文类型,1表示request报文,2表示response报文;

Version:8bit,版本,1表示RIP1,2表示RIP2;

Must be zero:16bit,必须为0字段,同时出现在头部和路由表项中;

路由表项

Must be zero:32bit,必须为0字段,同时出现在头部和路由表项中;

AFI:16bit,地址簇标识,IPv4的AFI为2,对于request报文该字段为0;

IP address:32bit,网络前缀,可以是子网或者主机地址;

Metric:32bit,路由开销,对应request报文,该值为16。

4.2    RIPv2报文格式

RIP学习笔记_第2张图片

RIP头部

Command:8bit,报文类型,1表示request报文,2表示response报文;

Version:8bit,版本,1表示RIP1,2表示RIP2;

Must be zero:16bit,必须为0字段,只出现在头部;

路由表项

AFI:16bit,地址簇标识,IPv4的AFI为2,对于request报文该字段为0;

Route Tag:16bit,外部路由标记。

IP address:32bit,目的网络前缀,可以是子网或者主机地址;

Subnet Mask:32bit,目的掩码;

Next Hop:32bit,下一跳

Metric:32bit,路由开销,对应request报文,该值为16。

4.3    RIPv1和RIPv2报文的不同

Route Tag:用于引入外部路由时进行标记,默认为0;

Subnet Mask:RIPv2为无类路由协议,可以携带子网掩码;

Next Hop:目的下一跳,如果为0.0.0.0,表示发布该路由的路由器地址为最优下一跳。

RIPv2的验证功能

RIP-2为了支持报文验证,使用第一个路由表项(Route Entry)作为验证项,并将AFI字段的值设为0xFFFF作为标识;

RIP学习笔记_第3张图片

0xFFFF:16bit验证项标识,表示整个路由报文需要验证;

Authentication Type:16bit,验证类型,2表示明文,3表示MD5;

Authentication:16bit,验证口令。

5      RIPv1和RIPv2的比较

共同点:

1.        报文格式一致,都采用UDP封装端口为520(源目的端口都是520);

2.        报文类型一致,都采用request和response;

3.        度量一样,都是以跳数为度量,最大15,16代表不可达;

4.        定时器一致。

不同点:

1.        RIPv1广播更新,RIPv2默认组播更新(可以更改为广播);

2.        RIPv1为有类路由协议,RIPv2为无类路由协议;

3.        RIPv1不支持VLSM、CIDR,RIPv2支持;

4.        RIPv1无法关闭自动汇总,不支持手动汇总,因此会存在不连续子网问题,RIPv2支持自动汇总汇总与手动汇总;

5.        RIPv1不支持路由标记(tag),RIPv2支持,可以针对引入外部路由设置标记做路由策略;

6.        RIPv1不支持next hop属性,RIPv2支持,该属性可以解决路由次优问题,下一跳全0代表路由下一跳为更新报文的发送源IP地址,下一跳非0表示路由直接发送给这个非0地址,一般出现在广播网络中;

7.        RIPv1不支持认证,RIPv2支持。

6      RIP报文有效性检查

RIP报文有效性检查一般分为两种:

1.        RIPv1零域检查,RIPv1进程下运行check zero,如果零域的字段不为0,丢弃报文;

2.        更新源地址检查,RIP进程下verify-source,如果发送报文的接口IP和接受报文的接口IP不在同一网段,则丢弃报文。

7      RIP的防环机制

1.        水平分割:路由从一个接口收到,不会再从该接口发出,华为VRP在广播型网络默认开通水平分割,非广播型(比如FR/X2.5)默认关闭;

2.        毒性逆转:与水平分割刚好相反,路由仍然会从接受到的端口发出,但是会“毒化”该路由,将该路由设置为16(不可达),缺省禁用,与水平分割互斥;

3.        最大计数器:RIP路由跳数最大为15,16为不可达,设备收到跳数为16的路由(也成毒化路由),会立即清除路由表中的该路由;

4.        触发更新:当路由表有路由变化时立即发送更新报文。

8      为什么RIP报文携带最多路由条目为25?

因为RIP使用UDP协议,UDP报文最大传输512Byte,RIP报文由头部(4Byte)和路由表项组成,一个路由表项有20Byte,因此最多25条路由条目,如果配置了明文认证,认证占用一个路由条目位置,最多携带24条路由条目,如果配置了MD5认证,最多23条路由条目。

9      报文抓包分析

9.1    RIPv1 request

RIP学习笔记_第4张图片

9.2    RIPv1 response

RIP学习笔记_第5张图片

9.3    RIPv2 request

RIP学习笔记_第6张图片

9.4    RIPv2 response

RIP学习笔记_第7张图片

9.5    RIPv2 明文加密request

RIP学习笔记_第8张图片

9.6    RIPv2明文加密response

RIP学习笔记_第9张图片

9.7    RIPv2 MD5(IETF)加密request

RIP学习笔记_第10张图片

9.8    RIPv2 MD5(IETF)加密response

RIP学习笔记_第11张图片

9.9    RIPv2 MD5(华为私有)加密request

RIP学习笔记_第12张图片

9.10       RIPv2 MD5(华为私有)加密response

RIP学习笔记_第13张图片

10     RIP RFC


RFC 1058

Routing Information Protocol

RFC 1723

RIP Version 2 Carrying Additional Information

RFC 1721

RIP Version 2 Protocol Analysis

RFC 1722

RIP Version 2 Protocol Applicability Statement

RFC 1724

RIP Version 2 MIB Extension

RFC 2082

RIP-2 MD5 Authentication

RFC 2453

RIP Version 2