RIP是距离矢量路由协议。它有两个版本:
RIPv1 是有类路由选择协议
RIPv2 是无类路由选择协议
RIP是基于UDP 520端口来操作的。所有的RIP消息都被封装在UDP用户数据报中,源端口和目的值被设置为520。
RIP定义了两种消息类型:
1.请求消息(Request messages)
2.响应消息(Response messages)
请求消息用来向邻居路由器发送一个更新(Update)
响应消息用来传送路由更新。
RIP的度量是基于“跳”数(Hop count)的,1跳表示是与发出通告的路由器相直连的网络,16跳表示网络不可达。
RIP信息更新的过程:
1.RIP从每个启用RIP协议的接口广播出带有请请求消息的数据包。
2.RIP程序进入一个循环状态,不断的侦听来自其他路由器的RIP请求或响应消息,而接受请求的邻居路由器则回送包含它们的路由表的响应消息。
3.当发出请求的路由器收到响应消息的时候,它将开始处理附加在响应消息中的路由更新信息。如果路由更新中的路由条目是新的。路由器则将新的路由连同通告路由器的地址一起加入到自己的路由表中。这里通告路由器的地址可以从更新数据包的的源地址字段读取。如果网络中的RIP路由已经存在路由表中。那么只有在新的路由拥有更小的跳数的时候才能替换原来存在的路由条目。如果更新通告的跳数大于路由表已经记录的跳数,并且更新来自于已记录条目的下一跳路由器,那么该路由器将在一个指定的抑制时间段(Holddown period)内被标记为不可达。如果在抑制时间段超时后,同一邻居路由器仍然通告这个有较大跳数的路由,路由器则接受改路由新的度量值。
RIPv1的消息格式
Command:取值1或2,1表示该消息是请求消息,2表示该消息是响应消息。其他的取值都不被使用或保留用作私有用途。
Version : 对于RIPv1,该字段的值设置为1。
Address Family Identifier,AFI:对于IP该项设置为2.只有一个另外情况,该消息是路由器(或主机)整个路由表的请求。
IP Address:路由的目的地址。这一项可以是主网络地址、子网地址或主机路由地址。
Metric:在RIP中指跳数,该字段的取值范围在1-16之间。
RIPV1的报文
从上面的图中能看出RIPv1使用广播(255.255.255.255)发送路由更新,RIPv1更新不带掩码
RIP的请求消息:(Request Message)RIP的请求消息可以请求整个路由表,也可以仅请求某些具体路由的信息。
RIPv1的特点:
1. 以广播255.255.255.255发送更新
2.不支持VLSM,更新的时候不带掩码信息
3.在主类网络边界自动汇总,无法避免
解决DV路由环路办法:
1.水平分隔
2.最大跳数
3.毒性逆转
4.保持失效定时器
5.触发更新
RIP单个的更新时25.5-30s
默认的值Invalid after 180 seconds, hold down 180,flushed after 240
Timers basic {update invalid holddownflush} 修改四个计时器
Passive-interface 配置被动接口
解决不连续子网的办法:
interface fastEthernet 0/1
ip address 192.168.1.1 255.255.255.0 secondary 配置辅助地方,一个接口可以配置多个辅助地主。
降低RIP的路由选择流量:
1.调整路由选择的计时器以便降低更新的频率,但是这在主要链路发生故障的时候会引起较长的收敛时间。
2.配置触发扩展特性来消除周期性的RIP更新。
interface fastEthernet 0/1
iprip triggered
使用偏移列表(Offset-list)控制RIP的度量
offset-list {access-list-number | name } { in | out } offset {typenumber} (偏移列表)
Example:
access-list1 permit 10.33.0.0 0.0.0.0
router rip
network192.168.12.0
offset-list1 in 2 Serial0
访问控制列表的配置确定了关于子网10.33.0.0 的路由,偏移列表的语法含义是“"先检查从S0接口接收进来的RIP通告,如果存在和访问列表1指定的地址相匹配的路由条目,那么就把该路由条目的度量值加大2跳。"
R1:
access-list 1 permit 10.33.32.0 0.0.0.0
router rip
network192.168.83.0
network10.0.0.0
offset-list 1 in 2 serial 0/0
R3:
access-list1 permit 10.33.0.0 0.0.0.0
network192.168.12.0
network10.0.0.0
offset-list1 in 2 serial 0/0
路由器也可以通过修改想歪通告的出站(Outgoing)路由更新的度量。替代上面两台路由器对从链路接收的入展(Incoming)路由更新的度量的修改。
R1:
access-list7 permit 10.33.0.0 0.0.0
router rip
network10.0.0.0
network192.168.83.0
offset-list7 out 2 serial 0/0
R3:
access-list3 permit 10.33.32.0 0.0.0.0
router rip
network192.168.12.0
network10.0.0.0
offset-list3 out 2 serial 0/0
注意:
偏移列表的其他几个选择在配置的时候也是有用的。如果不指定使用偏移列表的接口,那么偏移列表将在所有与访问列表匹配的接口上修改所有的入站更新或出站更新。如果不调用访问列表来进行匹配,偏移列表将修改所有的入展更新或出站更新。
当在入站或者出站更新的通告上选择是否使用偏移列表的时候,有些需要注意的地方。例如:在一个多于两台路由器的广播网络上面,到底是需要某台单独的路由器向所有的邻居路由器广播偏移修改后的通告,还是需要某台单独的路由器接受偏移修改后的通告,这一点必须要考虑清楚。
在运行的路由上面实施偏移列表的时候需要特别注意。当一个偏移列表引起下一跳路由通告的度量值比它在通告的路由更新的度量值更高的时候,直到抑制计时器(holdown timer)超时前,这条路由都会被标记不可达。
RIPv2
RIPv2的消息格式
Command:取值1和2,1表示为请求消息,2表示响应消息。
Version:对于RIPv2,该字段为2.
Address Family Identifier:对于IPv4,该项总是设置为2。
Route tag:提供这个字段用来标记外部路由或重新分配到RIPv2协议中的路由。默认情况是使用这个16位的字段来携带外部路由选择协议注入到RIP中的路由的自主系统号。
IP Address:路由条目的IPv4地主,它可以是主网络地址、子网地址或主机路由。
Subnet Mask:是一个32位的掩码,用来表示IPv4地址的网络和子网部分。
Next Hop:如果存在的话。它表示一个比通告路由器的地址更好的下一跳地址。
Metric:是一个在1-16之间的跳数
RIPv2 报文
RIPv2使用组播(224.0.0.9)发送路由更新,RIPv2更新带掩码。
超时计时器(Timeout timer):当有一跳路由被建立,超时计时器会被初始化为180S,而每当接受这条路由的更新消息的时候,超时计时器就会被重置。如果一跳路由在180S内还没收到更新,那么这条路由的跳数将会变为16,标记为路由不可达。
RIPv2的特点:
1.使用组播224.0.0.9 发送更新。更新中携带子网掩码
2.支持VLSM。
3.默认情况下面在跨主类网络边界汇总,可以使用no auto-summary 关闭自动汇总。
RIPv2与v1的兼容:
RIPv1如果更新消息的版本字段指出RIP版本1,但是所有未使用的字段的所有位都被设置为1,那么这个更新消息将会被丢弃;如果版本字段设置大于1,在版本1中定义为未使用的字段将被忽略,但会处理这个消息。
RIPv2可以向后兼容RIPv1
RIPv1:只有RIPv1的消息被传送。
RIPv1兼容性:RIPv2使用广播方式代替多播方式来通告消息。以便RIPv1可以接受它们。
RIP2:RIP2使用多播方式消息通告到目的地址224.0.0.9.
None: 不发送更新。
在Cisco IOS中可以通过命令ip rip send version ,ip rip receive version 来实现。
RIP 认证(Authentication)
Authentication 报文