HCIA-动态路由RIP

发布时间 2023-10-13 22:10:07作者: 犯愁の难瓜

前言

路由信息协议RPI(Routing Information Protocol) 是一种基于距离矢量算法的协议,以跳数作为度量来衡量到达目的网络的距离。RIP主要用于规模较小的网络中。

它配置简单、易于维护、适合小型网络

RIP简介

  • 距离矢量路由协议;属于IGP协议
  • 适用于小型网络;有RIPv1、RIPv2两个版本
  • 基于UDP;目标端口号520
  • 周期性发送数据以维持最新路由表状态
  • 支持水平分割、毒性逆转和触发更新等防环路特性

RIP工作原理

当路由器运行了RIP协议后,会首先发送路由更新请求,收到请求的路由器会发送自己的RIP路由进行响应(响应的前提是收到请求的路由器也开启了RIP协议)

当网络稳定后,路由器会周期性(默认30S)发送路由更新信息

RIP的度量值

RIP使用跳数作为度量值来衡量到达目的网络的距离,因此RIP不管链路带宽为多少

缺省情况下,直连路由的路由跳数为0;当路由器发送路由更新时,会把度量值加1

RIP规定超过15跳(16跳时)即网络不可达(也因此RIP协议只能用于小型规模的网络)

RIPv1与RIPv2

  •  RIPv1是有类(即:不会发送掩码)别路由协议,不支持VLSM和CIDR
  • 广播的像是发送报文
  • 不支持认证

 

  • RIPv2为无类别路由协议,支持VLSM,支持路由聚合与CIDR
  • 支持以广播或者组播(224.0.0.9)方式发送报文
  • 支持明文认证和MD5密文认证

RIPv1与RIPv2抓包对比

RIPv1报文格式

RIPv2报文格式

RIPv2的认证

RIPv2的认证功能使得此路由协议更加安全

RIPv2的认证方式有明文认证、MD5认证

RIP环路问题

当网络发生故障时,RIP网络有可能会产生路由环路

例如图中所描述:

对于RB来说,10.0.0.0/8网络是0跳,那么RB会将跳数加1后将信息发给RA

此时RA得知,到达10.0.0.0/8这个网络的跳数为1跳

过段时间,RA会将到达10.0.0.0/8网络的跳数加1后发给RB

正常情况下,RB不会接受这条信息,因为在RB的路由表里,到达10.0.0.0/8网络明明跳数是0跳 且是直连路由

但若10.0.0.0/8这条路不通的时候,RB将会接收来自RA的信息;于是RB的路由表就会变成:通往10.0.0.0/8网络是2跳

接下类:RB发给RA告诉RA3跳、RA又告诉RB4跳 以此循环,直到16跳为止双方才会发现10.0.0.0/8不可达

为解决上述问题,产生了水平分隔技术、触发更新技术

环路避免-水平分割

路由器从某个接口学到的路由,不会从该接口再发回给邻居路由器

例如:RB告诉RA:到达10.0.0.0/8网络需要1跳

这时候RA只能收来自RB的告知,但RA绝对不能再告诉RB:到达10.0.0.0/8网络需要2跳

环路避免-触发更新

触发更新是指 当路由信息发生变化时,立刻向邻居设备发送触发更新报文

例如:当RB发现10.0.0.0/8接口挂了,将立刻告知RA:到达10.0.0.0/8网络需要16跳

环路避免-毒性反转

毒性反转是指路由器从某个接口学到路由后,将该路由的跳数设置为16,并从原接受口发给邻居路由器

例如:RB告知RA10.0.0.0/8网络需要1跳,RA收到信息后,会将跳数加到16然后再发回给RB

此时,若网络无问题的情况下,RB不会接收此条信息

但网络一旦出现问题,RB会接收来自RA的信息,从而双方都得知10.0.0.0/8网络不可达

配置RIP

<>system-view
[]rip 1 #进入rip配置,进程号为1(不同进程能够路由的区域不同 例如:R1进程为1,R3进程为3,那么R1与R3是不通的)
[rip]version 2  #开启RIPv2
[rip]network xx.xx.xx.xx  #宣告地址(即指定运行RIP的接口,只需要输入接口的主类网络地址即可,只有处于此网络中的接口,才能进行RIP报文的收发)
例如:R1连接了3个接口,则需要宣告3个网络
[]display rip  #查看rip信息

RIP额外配置内容:

这两条命令会影响路由的选路

例如:

命令一:RB告知RA进入10.0.0.0/8网络是1跳,RA收到后私自加5,从而RA就会认为进入10.0.0.0/8网络为6跳

命令二:RB告知RA之前,先将跳数修改成5再告知RA,这时候RA得知进入10.0.0.0/8网络是5跳

[g0/0/0]rip metricin 5  #在接收路由时增加度量值
[g0/0/0]rip metricout 5   #在发送路由时修改度量值

禁止接口发送RIP包

例如:配置G0/0/0接口禁止发送RIP包(但能收到)

[g0/0/0]undo rip output

禁止接口接收RIP包

例如:配置G0/0/0接口禁止接收RIP包

[g0/0/0]undo rip input

抑制接口

让某个接口只收不发;例如:将G0/0/0接口抑制

这条命令的优先级大于上面两条 "rip input"、"rip output" 命令

[]rip
[rip]silent-interface G0/0/0

开启、关闭水平分割

水平分割默认在接口上开启

例如:开启G0/0/0接口的水平分割、关闭G0/0/0接口的水平分割

[g0/0/0]rip split-horizon    #开启水平分割
[g0/0/0]undo rip poison-reverse    #关闭水平分割

开启、关闭毒性逆转

例如:开启G0/0/0接口的毒性逆转、关闭G0/0/0接口的毒性逆转

[g0/0/0]rip poison-reverse    #开启毒性逆转
[g0/0/0]undo rip poison-reverse    #关闭毒性逆转

查看详细的RIP接口信息

例如:查看关于G0/0/0接口的rip信息

[]display rip int g0/0/0 verbose

? 记录时间:2023年10月13日 21点57分