路由器重温——RIP路由

RIP(Routing Information Protocol,路由信息协议)路由是最简单的动态路由协议。基本配置仅需在各路由器上创建所需的RIP进程,然后宣告各RIP路由器接口直接连接的网段所对应的自然网段就可以把各接口上连接的网段路由向邻居路由器进行通告。还可配置RIP路由优先级、开销、3个定时器参数、水平分隔、毒性反转、RIPv2的路由聚合、RIPv2报文验证及RIP路由信息发布和接收控制、RIP与静态BFD/动态BFD联动。

RIP基础

RIP是一种较为简单的内部网关协议(IGP,包括RIPv1和RIPv2两个版本。RIPv2对RIPv1进行了扩充,支持CIDRVLSM技术,支持安全验证。

一、RIP的度量机制

RIP是一种基于距离矢量(Distance-Vector算法的协议,使用跳数(Hop Count作为度量来衡量到达目的网络的距离。设备到与它直接相连网络的跳数为0,然后每经过一个三层设备跳数增加1度量值等于从本网络到达目的网络间的三层设备数量,但并不是等于所经过的网段数

上图拓扑,4个路由器都运行RIP,现在配置从PC1所在网络到达PC2网络的RIP路由,则跳数是3(PC1直接连接的R1不算在内,其他每个路由器算一跳)。4个路由器连接网络数为5个,所以跳数并不等于所经过的网段数。另外,在同一个路由器上直接连接的多个网络,彼此间的度量值为0,因为是直连路由

RIP通过UDP报文进行路由信息的交换,使用端口号为520,是一个不可靠的路由协议。RIP规定度量值取值0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。

在定期自动更新过程中,RIP路由器采用完整路由表更新方式,即每个RIP路由器会把自己的完整路由表发给相邻的RIP路由器。遵循几个基本原则:

①路由表项每经过一次邻居路由器之间的传递,其度量值加1

如11-1图,R1把它所连接的1.1.1.0/24网络向R2通告,在R2上到达1.1.1.0/24网络的度量为1,当到达R4时,到达1.1.1.0/24网络的度量就变为3。

②路由器在收到新的路由更新表项时,会在其路由表中添加新的路由表项,其度量值是在接收到的路由表项度量基础上加1,同时在新添加的路由表项中标注其下一跳地址就是发送路由器更新的邻居路由器的接口

③收到原有路由表项的路由更新时,先对有更新的路由表项的度量加1,然后与对应的路由表项中原度量值进行比较,仅接收度量值更小或相等的更新,忽略度量值比原来的值更大的路由更新。

对上图,R2中原来的路由表项如11-2,现在又收到来自R3的如11-3路由更新

对R2来说,他在收到R3的路由更新后,首先对11-3所示的各路由表项的度量加1,同时路由表项中标注其下一跳地址就是发送路由器更新的邻居路由器的接口(这里是R3的3.1.1.2),结果如下图:

与11-2对比可以看到到达2.1.1.0和3.1.1.0网络的度量值比原来还大,忽略更新。而到达4.1.1.0和5.1.1.0网络的度量值相等,进行路由表项更新,最终R2上的路由表还是如11-2图所示。

    如果一个接口连接的网络没有指定(也就是没有宣告所有直接连接的网络),则它不会在任何RIP更新中被通告。如11-1图中,R1的配置中没有宣告它所连接的1.1.1.0/24网络,则其他路由器上也就没有到达这个网络的RIP路由表项。

二、RIP协议定时器

RIP在路由更新和维护路由信息时主要使用以下4个定时器。

更新定时器(Update timer:当此定时器超时时,立即发送路由更新报文,缺省为30s发送一次。

老化定时器(Age timer:RIP设备如果在老化时间内没有收到邻居发来的路由更新报文,则认为该路由器不可达。当学到一条路由并添加到RIP路由表中时,老化定时器启动。如老化定时器超时,设备仍没有收到邻居发来的更新报文,则把该路由的度量值置为16(表示路由不可达),并启动“垃圾收集定时器”。

③垃圾收集定时器(Garbage-collect timer:如果在垃圾收集时间内没有收到原来某条不可达路由的更新,则该路由将被从RIP路由表中彻底删除。

抑制定时器(Suppress timer:当RIP设备收到对端的路由更新,其度量值为16,则对应路由进入抑制状态,并启动抑制定时器,缺省值为180s。这时为了防止路由震荡,在抑制定时器超时之前,即使再收到对端路由度量值小于16的更新,也不接受。当抑制定时器超时后,就重新允许接受对端发送的路由更新报文。

三、RIP路由更新机制

RIP有两种更新机制:一是定期更新,二是触发更新。“定期更新”是根据设置的更新定时器定期发送RIP路由通告。该通告报文中携带了水平分割机制抑制的RIP路由之外的本地路由器中的所有RIP路由信息。“触发更新”则是RIP路由器仅在有路由表项发生变化时发送RIP路由通告,并仅携带本地路由表中有变化的路由信息。

无论哪种更新,RIP路由的更新规则如下:

①如果更新的某路由表项在路由表中没有,则直接在路由表中添加该路由表项。
②如果路由表中已有相同目的网络的路由表项,且来源端口相同,那么无条件根据最新的路由信息更新其路由表
③如果路由表中已有相同目的网络的路由表项,但来源端口不同,则要比较它们的度量值,将度量值较小的一个作为自己的路由表项
④如果路由表中已有相同目的网络的路由表项,且度量值相同,则保留原来的路由表项。

(来源端口根据什么判断?下一跳地址???)

1、RIP路由定期更新机制

RIP路由器总是会每隔30s(缺省值,可修改)通过UDP 520端口以RIP广播应答方式向邻居路由器发送一个路由更新包,包中包括了本地路由器上的完整的路由表(除被“水平分割”机制抑制的路由表项),用来向邻居路由器提供路由更新,同时用来向邻居路由器证明自己的存在。RIP的路由表中主要包括目的网络下一跳地址距离3个字段

如果一个路由器在180s内没有收到某个邻居路由器发来的路由更新,则这个路由器就会标记该邻居路由器为不可达路由器使这个邻居路由器进入抑制周期。当路由器处于抑制周期内,它仍然可向前转发报文,但网络中的其他路由器不学习到达该路由器所连网络的路由信息,除非是一条更好的到达该路由器所连网络的路由信息,如本来是3跳,在抑制周期内学到了一条2跳的路由信息。但抑制周期过后,即使是差的路由信息也接受。(对于这一段,不是很理解,根据其叙述,个人理解是当前路由器因为在180s没有收到邻居路由器的跟新报文,当前路由器中对邻居路由器的路由条目设置了抑制周期,而邻居路由器是不知道其处于抑制周期的,那么,当路由器处于抑制周期内,它仍然可向前转发报文这句话怎么理解??这里的路由器是指哪一个路由器?是当前的路由器吗?还是那个邻居路由器?是当前路由器的话,他向前转发报文,即更新报文,其到邻居路由的跳数是16,其他路由器就不学习这条路由,也就是后面说的网络中的其他路由器不学习到达该路由器所连网络的路由信息,这里的该路由器又是指哪个?该路由器就是那个邻居路由器。?)

如果300s还没有收到这个路由器的路由更新,则本地路由器会在路由表中删除与该邻居路由器相关的路由表项。

可见,路由更新不仅影响着整个RIP网络中的路由器上路由表的更新和所有需要到达或经过该路由器的报文路由,还影响着其他邻居路由器对他存在的判定。

 

2、RIP路由定期更新机制解析示例

①开始,所有路由器中的路由表只有自己直连的网络的路由表项信息。不是RIP路由表项,是直连路由表项,无需下一跳(用“--”表示),度量“距离”均是0。

②接着,各路由器就会按设置的周期(缺省30s)向邻居路由器发送路由更新。具体哪个路由器先发送,取决于哪个路由器先开。假设R2先收到来自R1和R3的路由更新,并更新了自己的路由表,如图11-7,它新添加了分别通过R1和R3到达10.0.0.0和40.0.0.0网络的路由表项,度量值为1。

③R2更新自己的路由表后,会把完整的路由表发给邻居路由器R1和R3。路由器R1和R3分别再进行更新。R1首先把从R2上接收到的如图11-7路由表每项度量加1,得到路由表如11-8.

④然后R1把图11-8路由表与自己原来的路由表11-6左图进行比较,凡是新添加的和度量值小于等于原来的路由表项均将更新,度量值更大的路由表项忽略。经过行比较发现两条新的路由表项,30.0.0.0和40.0.0.0直接在路由表中添加。已有的两条10和20忽略更新。同样R3在收到R2路由更新后更新自己的路由表。

RIP路由协议存在一个问题,就是网络收敛比较慢,以11-5为例,三个路由器建立了稳定的路由表后,假设R1路由器和网10.0.0.0的连线断开了。R1更新自己的路由表,将10.0.0.0的路由表项距离改为16(即不可达),30s后发给R2,但是,R2从R3得到的路由更新是“经过R2到达10.0.0.0网络的距离是2”,明显度量值更小,于是R2将此路由表项更新为“经过R3到达10.0.0.0的距离为3”(这里先经过了RIP路由更新机制中的②,即R1发来的更新路由被无条件更新,即到10.0.0.0的度量值为16了,然后又收到R3的更新值,此时经过RIP路由更新机制中的③,来源端口不同,比较度量值后更新),然后通过路由更新发给R3,此时R3的路由表中更新为经过R2到达10.0.0.0网络的距离为4”这里体现的就是前面RIP路由更新机制中的②如果路由表中已有相同目的网络的路由表项,且来源端口相同,那么无条件根据最新的路由信息更新其路由表。R3中有10.0.0.0目的网络,且下一跳是30.0.0.2,即来源端口相同,所以不比较度量值,直接更新。),R3再通过路由更新发给R2,如此反复,直到该路由表项的距离达到16(这时的反复就是②的体现,),R2和R3才知道10.0.0.0网络不可达。(这个过程是记数到无穷大机制)为解决这一不足,出现了水平分割技术就是同一路由表项更新不再从接收该路由表项的接口发送出去

四、RIP路由收敛机制

任何距离矢量类路由选择协议都有一个问题,路由器不知道网络的全局情况,必须依靠相邻路由器来获取网络的可达信息。由于采用UDP协议协议进行的路由更新信息在网络上传播慢,所以所有距离矢量路由算法都有一个收敛慢的问题。这将导致网络中各路由器路由信息不一致现象。RIP可以使用以下机制减少因网络上的不一致带来的路由选择环路的可能性:

1、记数到无穷大机制

RIP允许最大跳数值为15,大于15的目的地址被认为是不可达的。这个数字在限制了网络大小的同时也防止了一个叫做“记数到无穷大”的问题。

①假设路由器1断开与网络A的连接,路由器1立即产生一个路由更新向其邻居路由器2和3通告,假设更新信息传输到路由器2被推迟了(CPU忙、链路拥塞等),但到达了路由器3,所以路由器3会立即从路由表中去掉到网络A的路径。

②因为路由器2没有收到路由器1的路由更新信息,它定期向邻居(路由器1和3)发送路由更新信息,通告网络A是以2跳的距离可达。路由器3收到更新后,认为出现了一条通过路由器2到达网络A的新路径,于是路由器3告诉路由器1,它能以3跳到达网络A。

③路由器1在收到路由器3的路由更新后,把这个信息加上一跳后向路由器2和路由器3同时发出更新信息,告知路由器1可以以3跳的距离到达网络A。

④路由器2在收到路由器1的消息后,比较发现与原来到达网络A的路径不符,于是更新成可以以4跳到达网络A。这个消息会再次发往路由器3,以此循环,直到跳数达到RIP允许的最大值16。

2、水平分割法

“水平分割”(Split Horizon)就是使路由器不向对应路由更新表项输入的方向回传此条路由表信息使它只沿一个方向通告。即如果一条路由信息是从某个端口学习到的,那么从该端口发出的路由更新中将不再包含该条路由信息,其目的就是为了避免出现路由更新环路。

水平分割在不同网络中的实现有所区别。在广播网、P2P和P2MP网络中是按照接口进行水平分割的,如图11-12.

RouterA会向RouterB发送到网络10.0.0.0/8的路由信息,如果没有配置水平分割,RouterB会将从RouterA学习到的这条路由再发送回给RouterA。这样,RouterA可以学习到两条到达10.0.0.0/9网络的路由:一条为跳数为0的直连路由;另一条为下一跳指向RouterB,跳数为2的路由。当RouterA到网络10.0.0.0的路由变成不可达,并且RouterB还没有收到路由不可达的信息时,RouterB会继续向RouterA发送10.0.0.0可达的路由信息。即RouterA会接收到错误的路由信息,认为可以通过RouterB到达10.0.0.0网络;而RouterB仍旧认为可以通过RouterA到达10.0.0.0网络,从而形成环路。配置水平分割后,RouterB将不会再把到网络10.0.0.0的路由发回给RouterA,由此避免了路由环路的产生

对于NBMANon-Broadcast Multiple Access)网络,由于一个接口上连接多个邻居,所以是按照邻居进行水平分割的。从某一接口的对端邻居处学习到路由,不会再通过该接口发送回去

在NBMA网络配置了水平分隔后,RouterA会将从RouterB学习到的2.0.0.0/8路由发送给RouterC,但不会再发送回给RouterB。

3、毒性反转

“水平分割”功能是路由器用来防止把一个接口得来的路由又从此接口回传,导致路由更新环路出现。“毒性反转”(Poison Reverse)方法是在更新信息中包括这些回传路由,但会把这些回传路由的跳数直接设为16(无穷),直接使该路由变为不可达路由。即如果一条路由信息是从某个端口学习到的,那么从该端口发出的路由更新分组中将继续包含该条路由信息,但将这条信息的metric置为16,这能够更快的消除路由信息的环路。但增加了路由更新的负担

4、保持定时器法

“保持定时器法”是设置路由信息被抑制的时间缺省为180s。当路由器接收到一个不可达的路由更新时,路由器会把这条路由更新置于无效抑制状态,不再接收对应路由的更新信息,也不向外发送这条路由更新信息,一直持续到接收到一个带有更好度量的对应路由更新分组,或者这个保持计时器到期为止

 

上图,由于线路原因,从路由器1发往路由器2的路由更新被延迟到达,致使路由器2不能及时更新,所以路由器2仍会以更新后的错误路由信息向路由器3发送。使用“保持定时器法”后,不会发生这种情况,因为路由器3在收到来自路由器1的网络A不可达的路由更新后,将在180s内不接受通向网络A的新的路由信息,而经过这段时间后,路由器2也正确进行了更新,不会再发送错误路由信息给路由器3。

五、RIP报文格式

RIP有两种版本:RIPv1和RIPv2。RIPv1是有类别路由协议(ClassfulRouting Protocol,只支持以广播方式发布协议报文。RIPv1的协议报文中没有携带掩码信息,只能识别A、B、C类这样的自然网段的路由(如果连接的是子网,则在进行路由更新通告只能聚合成自然网段的聚合路由向外通告),不支持任意掩码长度的子路由聚合,也不支持不连续子网(Discontiguous Subnet)。RIPv2是一种无分类路由协议(Classless Routing Protocol。RIPv2比RIPv1具有的优势:

支持外部路由标记,可以在路由策略中根据Tag对路由进行灵活的控制。
报文中携带掩码信息,支持任意掩码长度的路由聚合和CIDRClassless Inter-Domain Routing,无类别域间路由),即能识别子网路由
③支持指定下一跳,在广播网上可以选择到目的网段的最佳下一跳IP地址。
④支持以组播方式发送更新报文,减少资源消耗,但只有支持RIPv2的设备才能接收这种更新报文。
⑤支持对协议报文进行验证,增强安全性。

不连续子网”是指在网络中,某几个连续子网在中间被另一个其他网段的子网或网络隔开了。

如上图11-14,由172.16.0.0/16划分的子网172.16.1.0/24、172.16.2.0/24被中间的192.168.0.0/24和192.168.1.0/24分隔开了,这就是一个不连续子网。

11-15图是一个连续子网,因为在R3的左边和右边所连接的子网都不是由一个网络划分的子网,也就是完全不同的子网。

为什么RIPv1不支持不连续子网呢?原因就是RIPv1路由器接口在收到不是与接收接口IP地址处于同一自然网段的路由更新时会自动进行路由聚合(如果是处于同一自然网段下,则不会聚合,是以具体子网路由显示的),而且该自动聚合功能是不可关闭的。如11-14所示不连续子网中,R3左边接口在收到R1和R2连接网段172.16.1.0/24的RIP路由通告后,由于它与该接口IP地址所在网段192.168.0.0/24不在同一自然网段下,所以会在R3上自动聚合成为172.16.0.0/16自然网段的聚合路由,其下一跳是R3左边接口;同理R3右边接口也会对所收到的R4和R5所连接的172.16.2.0/24子网进行自动聚合,且聚合路由也是172.16.0.0/16自然网段路由,其下一跳是R3右边接口,这时R3就不能识别了,因为两边的聚合路由是一样的,但下一跳不一样,这时在R3的RIP路由表中会存在两个不同的下一跳,但目的网络均为172.16.0.0/16的路由,就会被认为网络中出现了环路。

如果在11-14中R2和R3之间连接的是172.16.3.0/24网段,则R3在收到R1和R2之间连接网段172.16.1.0/24的路由时,在R3上就不会被聚合成172.16.0.0/16,而是以172.16.1.0/24的子网路由显示。也就不会出现环路,网络也不能说成是不连续子网了。

RIP使用UDP报文在邻居路由器间交换路由表,使用UDP端口号为520.通常情况下RIPv1报文为广播报文;RIPv2报文为组播报文,组播地址为224.0.0.9,缺省每隔30s向邻居路由器发送一次路由更新报文。如果设备经过180s没有收到来自对端的路由更新报文则将所有来自此设备的路由信息标志为不可达,若300s内仍为收到更新报文就将这些路由从路由表中删除。

(1)Command
命令字段,占1个字节,用来指定数据报分组是请求分组,还是响应分组。在RIPv1中主要有以下4种分组类型:Request(请求,对应值为1)、Response(响应,对应值为2)、Traceon(启用跟踪标记,对应值为3,自RIPv2版本后已淘汰)、Traceoff(关闭跟踪标记,对应值为4,自RIPv2后已淘汰)。请求分组是请求邻居路由器发送全部或部分路由表信息的分组,响应分组可以是路由器主动提供的周期性路由更新分组或者是对请求分组的响应。
(2)Version
版本字段,占1个字节,RIPv1版本值为1,RIPv2版本值为2。
(3)Unused
未使用字段,2字节,值固定为0。
(4)Address Family Identifier(AFI)
地址族标识字段,2字节,指出所使用的地址族。RIP设计用于携带多种不同协议的路由信息,每个项都有地址族标志来表明使用的地址类型,IP地址的AFI2
(5)Route Tag
路由标记字段,2字节,仅适用于RIPv2,RIPv1不适用(值固定为0)。它提供区分内部路由(由RIP学得)和外部路由(由其他协议学得)的方法。它携带着一个EGP和BGP的自治系统号。因为RIPv1中不支持该字段,所以RIPv1不支持由其他类型路由重发布为RIP路由。
(6)IP Address
IP地址字段,4字节,用于指定路由的目的网络地址,可以是标准网段地址、子网地址。
(7)Subnet Mask
子网掩码字段,4字节,用于指定目的网络的子网掩码,仅适用于RIPv2,RIPv1中该字段值固定为0。因为RIPv1不支持无类别网络,也就是不支持子网路由(但可以连接子网,只是在生成RIP路由表项会以有类网络路由显示),仅支持标准的有类网络,所以具体网段的子网掩码是固定的。
(8)Next Hop
下一跳字段,4字节,仅适用于RIPv2,RIPv1中该字段值固定为0。因为RIPv1版本采用的是广播方式发送,无具体的下一跳。它指出RIP路由的下一跳的IP地址如果为0.0.0.0,则表示发布此条路由信息的路由器地址就是最佳下一跳地址
(9)Metric
RIP路由的Metric(度量)值字段,也就是“跳数”值,4字节,最大有效值为15。值为16时表示该路由不可达。

整个RIP报文的各字段可分为头部Header)和路由表项Route Entries)两大部分。“头部”包括Command、Version和Unused这3个字段,其余字段都属于“路由表项”。在一个RIP报文中,最多可以有25个路由表项,也就是在一个RIP分组中最多可含有25个地址项,即一个分组中最多可一次性通告25条RIP路由表项。

RIP路由表项部分包括目的IP地址/掩码、下一跳IP地址、度量,对比静态路由的组成可以看出前三项是一样的,不同的只是在静态路由中还可以配置出接口,另外在静态路由中的“优先级”其实与RIP路由中的“度量”作用差不多,都可体现对应路由的优先级。

RIP配置与管理

RIP的配置任务主要体现在路由器对RIP特性的支持。AR G3系列路由器支持的RIP特性主要包括RIP的基本功能、RIPv2增强特性、水平分割、毒性反转、控制RIP路由的选路、控制RIP路由信息的发布和接收、调整RIP网络性能参数和RIPBFD联动

一、配置RIP基本功能

RIP基本功能主要包括以下几方面:

1、启动RIP进程

全局启动RIP进程是进行所有RIP配置的前提。如果在全局启动RIP前,在接口视图下配置了RIP相关命令,这些配置只有在全局RIP启动后才会生效。

2、在指定网段使能RIP

也就是通常所说的网络宣告RIP只在进行网络宣告时所指定网段上的接口才能运行对于不在指定网段上的接口,RIP既不在通过它接收和发送路由,也不将它的接口路由转发出去。因此,RIP启动后必须指定其工作网段

3、(可选)配置NBMA网络的RIP邻居

通常情况下,RIP使用广播或组播IP地址发送报文如果在不支持广播或组播报文的NBMA网络(如X.25、ATM和FR等网络)链路上运行RIP,则必须在链路两端手动互相指定RIP的邻居,这样报文就会以单播形式发送到对端。

4、(可选)配置RIP的版本号

一般情况下,只需配置全局RIP版本号即可。如果需要在指定接口配置与全局不同的RIP版本号,则在指定接口下配置接口的RIP版本号。

system-view
rip [process-id][vpn-instancec vpn-instance-name
      使能指定的RIP进程,进入RIP视图(在一个RIP路由器上可以运行多个RIP进程)
description text
undo verify-source
       禁止对RIP报文的源地址检查,缺省使能,即检查发送报文的接口IP地址与接收报文接口的IP地址是否在同一网段。如果不同,则该RIP报文将不被处理。当P2P网络中链路两端的IP地址属于不同网络时,只有取消报文源地址检查,链路两端才能建立起正常的邻居关系。
network network-address      对指定网段接口使能RIP路由,即宣告网络。network-address不带子网掩码,因为改地址必须是自然网段地址,不能是子网地址。
peer ip-address  指定RIP邻居的IP地址,仅用于NBMA网络。
version {1 | 2}  指定一个全局RIP版本
quit
interface
interface-type interface-number
  进入要配置RIP版本的RIP路由器接口。
rip version {1 | 2 [broadcast | multicast]}      配置接口的RIP版本。

当接口中配置的RIP版本与全局配置的RIP版本不同时,则该接口以本地接口配置的RIP版本为准。在接口上配置不同的RIP版本,接口允许发送的请求报文和允许接收的响应报文的版本可能会有所不同。

①如果不配置RIP版本,则以广播方式发送RIPv1报文,接收广播的RIPv1和RIPv2报文

②如果配置为RIPv1,则只以广播方式发送v1报文,接收广播的v1报文。

③如配置为RIPv2,则只以组播方式发送v2报文,接收组播或广播的v2报文

④如配置为组播的RIPv2(multicast),则以组播方式发送,接收组播v2报文

⑤如配置为广播的RIPv2(broadcast),则以广播方式发送v2报文,接收v1和v2的报文

二、配置RIPv2特性

RIPv2与RIPv1的不同在于,RIPv2支持VLSM(可变长子网掩码)和CIDR(无类别域间路由),并支持验证功能,从而功能更加完善,安全性更高。

在RIPv2特性配置中主要包括两方面任务,均是可选配置:

1、配置RIPv2的路由聚合

使用路由聚合可以大大减小路由表的规模。通过对路由进行聚合,隐藏一些具体的路由,可以减少路由震荡对网络带来的影响。

RIP支持两种聚合方式:自动路由聚合和手动路由聚合自动路由聚合只能聚合成对应的自然网段,是在系统视图下全局使能的;而手动路由聚合可以是超网路由,是在具体RIP路由器接口下配置的。RIPv1仅支持自动路由聚合,但自动路由聚合功能不可关闭,也就是不可配置;RIPv2同时支持自动和手动路由聚合,且可关闭自动路由聚合功能,以便将子网路由向外发布。自动聚合的路由优先级低于手动指定聚合的路由优先级。

缺省情况下,如配置了水平分割或毒性反转,有类的自动路由聚合功能将失效。因此在向自然网段边界外发送聚合路由时,相关视图下的水平分割和毒性反转功能都应该关闭。

RIPv2的自动路由聚合和手动路由聚合配置

system-view
rip
[process-id
  进入指定的RIP视图,不指定,直接进入进程1视图。
version 2     设置RIP为版本2,只有2版本的自动路由聚合是可配置的。
summary [always]     使能RIP有类的自动路由聚合,聚合后的路由以使用自然掩码的路由形式发布。
interface interface-type interface-number   进入要配置手动路由聚合的RIP路由器接口。
rip summary-address ip-address mask [avoid-feedback]     配置在以上接口下发布一条RIP聚合路由。

2、配置RIPv2报文的认证方式

可通过配置RIPv2报文的认证来提高RIP网络的安全性。RIPv2支持对协议报文进行认证,并提供简单认证和MD5认证两种方式。简单认证使用未加密的认证字段随报文一同传送,其安全性比MD5要低。

RIPv2报文认证需要在具体的RIP路由器接口上配置。

system-view
interface
interface-type interface-number
rip authentication-mode simple {plain plain-text | [cipher] password-key}
    三选一,配置RIPv2报文为简单认证方式
rip authentication-mode md5 usual {plain plain-text | [cipher] password-key}
rip authentication-mode md5 nonstandard {keychain keychain-name | {plain plain-text | [cipher] password-key} key-id
   三选一,配置RIPv2报文为MD5密文认证方式。
rip authentication-mode hmac-sha256 {plain plain-text | [cipher] password-key} key-id   三选一,配置RIPv2报文为HMAC-SHA256密文认证方式

三、配置防止路由环路

通过配置RIP的水平分割和毒性反转,可以有效防止路由环路。水平分割和毒性反转也是在具体的RIP路由器接口上配置的,在配置水平分割和毒性反转前,需要完成RIP基本功能的配置。

system-view
interface
interface-type interface-number  
进入要配置水平分割或毒性反转的RIP路由器接口
rip split-horizon     使能RIP的水平分割功能
rip poison-reverse      使能RIP的毒性反转功能

四、控制RIP的路由选路

通过控制RIP的路由选路,使得网络满足复杂环境中的需要。可选配置任务:

1、配置RIP协议优先级

当多个路由协议发现目的地相同的路由时,通过配置RIP的协议优先级来改变路由协议的优先顺序。

2、配置接口的附加度量值

对于RIP接收和发布路由,可通过调整RIP接口的附加度量值来影响路由的选择(度量值越小越优先)。附加路由度量值是指在RIP路由原来度量值的基础上所增加的度量值(跳数)。

3、配置最大等价路由条数

通过配置RIP最大等价路由条数,可以调整进行负载分担的路由数目。

system-view
rip
[process-id]
preference {preference | route-policy route-policy-name} * 
配置RIP路由的优先级
maximum load-balancing number   配置进行负载分担的最大等价路由条数
quit
interface interface-type interface-number   要附加度量值的RIP路由器接口
rip metricin {value | {acl-number | acl-name acl-name | ip-prefix ip-prefix-name} value}    配置接口接收RIP路由更新报文时要给对应路由增加的度量值。当该接口接收到一条路由时,RIP将接口接收权值附加到该路由上,再加入路由表中。
rip metricout {value | {acl-number | acl-name acl-name | ip-prefix ip-prefix-name} value}  配置接口发送RIP路由更新报文时要给对应路由增加的度量值。当发布一条路由时,发送度量值会在发布该路由之前附加在这条路由上。但本地路由表中的度量值不会发生改变。

五、控制RIP路由信息的发布

对RIP路由信息的发布进行精确控制,可以满足复杂网络环境中的需要。

1、配置RIP发布缺省路由

在路由表中,缺省路由以到网络0.0.0.0(掩码为0.0.0.0,代表任意网络)的路由形式出现。当报文的目的地址不能与路由表的任何目的地址匹配时,设备将选取缺省路由转发该报文。

2、配置RIP引入外部路由信息

RIP可以引入其他进程或其他协议学习到的路由信息,从而实现与其他协议的网络互通。

3、禁止接口发送更新报文

通过配置禁止接口发送更新报文,可以防止路由环路。禁止接口发送更新报文有两种方式:一是在RIP进程下全局配置接口为抑制状态;二是在接口视图下禁止具体接口发送RIP报文。全局配置的优先级要高于在接口视图下的配置。

system-view
rip
[process-id]
default-route originate [cost cost | {{match default | route-policy route-policy-name} [avoid-learning]}] * 
配置当前设备生成一条缺省路由或者将路由表中存在的缺省路由发送给邻居路由器。cost指定生成的缺省路由的度量值,match default指定当前路由表中存在其他路由协议或其他RIP进程生成的缺省路由时,则向邻居发布该缺省路由(二选一);route-policy指定生成缺省路由策略名称(二选一);avoid-learning指定当路由表中已有活跃的缺省路由时,则不引入其他缺省路由。
default-cost cost    配置引入路由的缺省开销值,引入后,最终的开销值还将增加1。
import-route bgp [permit-ibgp] [cost {cost | transparent} | route-policy route-policy-name]*     或
import-route {{static | direct | unr} | {{rip | ospf | isis} [process-id]}} [cost cost | route-policy route-policy-name ]*    引入外部路由信息,包括静态路由、直连路由、BGP/OSPF/IS-IS路由,以及其他进程的RIP路由。
filter-policy {acl-number | acl-name acl-name | ip-prefix ip-prefix-name} export [protocol [process-id] | interface-type interface-number     在向外发布路由更新时对引入的路由信息进行过滤。
silent-interfacce {all | interface-type interface-number    抑制所有(all)或指定(interface参数)RIP路由接口,使其只接收报文,用来更新自己的路由表,而不发送RIP报文。
quit
interface
interface-type interface-number
   进入要禁止发送RIP报文的RIP路由器接口
undo rip output       禁止以上接口发送RIP报文。

六、控制RIP路由信息的接收

对RIP路由信息的接收进行精确的控制,可以满足复杂网络环境中的需要。

1、禁止RIP接收主机路由

在某些特殊情况下,路由器会收到大量来自同一网段的RIP的32位主机路由,这些路由对于路由寻址没有多少作用,却占用大量网络资源。

2、配置RIP对接收的路由进行过滤

通过指定访问控制列表和地址前缀列表,可以配置入口过滤策略,对接收的路由进行过滤,使只有通过过滤的路由才能被加入本地路由表中。

3、禁止接口接收更新报文

通过配置禁止接口接收更新报文,可以防止路由环路。

system-view
rip
[process-id]
undo host-route    
禁止32位主机路由加入RIP路由表
filter-policy {acl-number | acl-name acl-name} import [interface-type interface-number]    (三选一)配置基于ACL过滤学到的路由信息。
filter-policy gateway ip-prefix-name import (三选一)配置基于发布网关(也就是发布对应流入路由的网关)过滤邻居发布的路由信息。
filter-policy ip-prefix ip-prefix-name [gateway ip-prefix-name import [interface-type interface-number (三选一)配置对指定接口学到的路由进行基于目的地址前缀和基于邻居的过滤。
quit
interface
interface-type interface-number
    进入要禁止接收RIP报文的路由器接口
undo rip input      禁止以上接口接收RIP报文

七、调整RIP网络性能参数

1、配置RIP定时器

RIP有3个定时器:UpdateAgeGarbage-collect。改变这几个定时器的值,可以影响RIP的收敛速度。

2、配置RIP对更新报文进行有效性检查

通过RIP对更新报文进行有效性检查,可提高网络安全。该有效性检查包括RIPv1报文的零域检查和RIP更新报文的源地址检查两种。

(1)RIPv1报文中的有些字段必须为零,称为零域。RIPv1在接收报文时将对零域进行检查,若RIPv1报文中零域的值不为零,该报文将不被处理。

(2)RIP在接收报文时将对源IP地址进行检查,即检查发送报文的接口IP地址与接收报文接口的IP地址是否在同一网段。如果没有通过检查,则该RIP报文将不被路由器处理。

3、配置报文的发送间隔和发送报文的最大数量

通过设置RIP发送更新报文的时间间隔和每次发送报文的最大数量,可以很好的控制路由器用于处理RIP更新报文的内存资源。

4、使能Replay-protect功能

通过使能Replay-protect(重放保护)功能,可以得到接口Down之前所发送RIP报文的Identification(标识符),避免双方的RIP路由信息不同步、丢失。

假设运行RIP的接口状态变为Down之前发送的最后的RIP报文的Identification为x,该接口状态变为Up后,再次发送RIP报文的Identification会变为0.如对方没有收到这个Identification为0的RIP报文,那么后续的RIP报文都将被丢弃,直到收到Identification为x+1的RIP报文。这将导致双方的RIP路由信息不同步、丢失。通过使能Replay-protect功能,当接口从Down变为Up后,再次发送RIP报文的Identification会顺次加1,从而避免上述情况发生。

system-view
rip
[process-id]
timers rip update age garbage-collect   
调整RIP定时器,update指定路由更新报文的发送间隔,age指定RIP路由的老化时间,garbage-collect指定路由被从路由表中删除的时间。
checkzero  (三选一)使能对RIPv1报文中的零域进行检查
verify-source   使能对收到的RIP路由更新报文进行源IP地址检查。
quit
interface
interface-type interface-number
  进入要配置RIP报文的发送时间间隔和发送报文的最大数量,或者配置重放保护功能的RIP路由器接口。
rip pkt-transmit {interval interval | number pkt-count} *   在以上接口上设置RIP发送更新报文的时间间隔和每次发送报文的数量。
rip authentication-mode md5 nonstandard password-key key-id    配置RIP-2使用MD5密文的验证方式,验证报文使用非标准报文格式。
rip replay-protect    在以上接口上使能replay-protect功能。

timers rip update  rip pkt-transmit interval interval有什么区别???

八、配置RIP与BFD联动

RIP通过定时接收和发送路由更新报文来保持邻居关系,若在老化定时器设定的时间内没有收到邻居发送的更新报文,则宣告邻居状态为Down。老化定时器的缺省值缺省为180s,所以链路出现故障时,RIP至少要经过180s才会检测到。可通过配置BFD与RIP联动实现RIP对网络中的故障快速做出响应。

RouterA、B、C、D建立RIP邻接,A到达D的路由下一跳为B。在A及B上使能RIP与动态BFD联动检测机制。当A和B之间的链路出现故障时,BFD快速感知并通知给A,A删除下一跳为B的路由,然后A重新进行路由计算并选取新的路径,新的路由经过C、B到达D。

1、配置RIP与动态BFD联动

配置RIP与动态BFD联动有两种方式。

①RIP进程下全局使能BFD。当网络中大部分RIP接口需要使能RIP与动态BFD联动时,选择此方式。

②RIP接口下使能BFD。当网络中只有小部分RIP接口需要使能RIP与动态BFD联动时,选择此方式。

system-view
bfd
    使能全局BFD功能
quit
rip
[process-id]
bfd all-interfaces enable
    在RIP进程下使能所有接口的BFD特性。当配置了全局BFD特性,且邻居状态为Up时,RIP为该进程下所有在对应进程下的接口使用缺省的BFD参数值建立BFD会话。
bfd all-interfaces {min-rx-interval min-receive-value | min-tx-interval min-transmi-valuet | detect-multiplier detect-multiplier-value}    配置BFD会话参数值。
quit
interface
interface-type interface-number
   进入要阻塞创建BFD会话的RIP路由器接口
rip bfd block     阻塞以上接口创建BFD特性。
在RIP接口下使能BFD
interface interface-type interface-number   进入要使能BFD会话的RIP路由器接口
rip bfd enable   使能指定接口的BFD特性
rip bfd  {min-rx-interval min-receive-value | min-tx-interval min-transmi-valuet | detect-multiplier detect-multiplier-value}   在以上接口配置动态BFD会话的参数值。

2、配置RIP与静态BFD联动

配置RIP与静态BFD联动是实现BFD检测功能的一种方式,有两种配置方式:

①单臂回声BFD:当支持BFD的设备与不支持BFD的设备对接时,可以在单端RIP路由器上通过配置静态BFD来实现单臂回声BFD检测功能。

②普通单跳BFD:在某些对故障响应速度要求高且两端设备都支持BFD的链路上,可以在两端RIP路由器上通过配置静态BFD来实现普通BFD检测功能。

system-view
bfd
    使能全局BFD功能
quit
配置单臂回声BFD或普通单跳BFD
interface interface-type interface-number   进入要使能BFD会话功能的RIP路由器接口
rip bfd static   在使能RIP的特定接口下使能静态BFD特性

九、RIP路由管理

①display rip [process-id| vpn-instance vpn-instance-name]:查看所有或指定RIP进程,或者公网或指定VPN实例下的当前运行状态及配置信息。
②display rip process-id route:查看指定RIP进程下所有从其他设备学习到的RIP路由。
③display default-parameter rip:查看RIP的缺省配置信息。
④display rip process-id statistics interface {all | interface-type interface-number [verbose | neighborneighbor-ip-address]}:查看指定RIP进程下指定或者所有RIP路由器接口的统计信息。
⑤display rip process-id database [verbose]:查看指定RIP进程下RIP数据库中的所有激活路由。
⑥display rip process-id interface [interface-typeinterface-number][verbose]:查看所有或指定RIP进程下的接口信息。
⑦display rip process-id neighbor [verbose]:查看指定RIP进程下的邻居信息。
⑧reset rip process-idconfiguration:复位指定RIP进程的系统配置参数,这样当RIP进程启动时,所有配置参数将采用缺省值。
⑨reset rip process-id statistics interface {all | interface-type interface-number [neighborneighbor-ip-address]}:清除所有或者指定RIP进程维护的计数器的统计数据。

十、RIP基本功能配置示例

拓扑结构如下,要求在A、B、C、D路由器上通过RIP实现网络互连:

1、基本配置思路

(1)配置各路由器接口IP地址,使网络可达。

(2)在各路由器上创建RIP进程(各路由器的RIP进程号可以不一样,因为路由进程号仅在本地有意义,其他路由协议的进程号也一样),并宣告要使能RIP的接口所对应的自然网段

(3)在各路由器上配置RIP版本,以提升RIP路由扩展性能。

模拟实验:

1、配置各接口IP地址




2、配置RIP基本功能,创建RIP进程号,宣告各RIP路由器接口对应的自然网段




上面的配置重点,它们都是自然网段ABC网段,而不是实际的子网段。

抓包:

默认是RIPv1版本

对于v1版本只有command、version、address family、IP address、Metric有意义,其他都是0。

RIPv1的数据包:RIP使用UDP,端口520,对于RIPv1,报头部分有command字段,响应报文为2,也是定期发送的报,版本号1,后面是路由表项部分,地址族标识符AFI字段,IP地址为2,子网掩码和下一跳都是0,Metric为1。

3、在各RIP路由器上配置RIPv2版本

其他配置相同

对比上面的查询命令,可以看出,在RIPv2版本下,同第二步配置后的查询相比,这里的目的地址/掩码发生了改变,目的地址是子网地址了,而不是自然网段地址。

下面是报文的变化

请求报文:

应答报文

同RIPv1相比,目的地址由广播地址改为组播地址,路由表项部分改变了,增加了掩码和下一跳地址,还有route tag标记。

RIP引入外部路由实例

RouterB上运行两个RIP进程:RIP100和RIP200.要求通过两个RIP进程的路由相互引入实现RouterA与192.168.3.0/24网段互通,但不要与192.168.4.0/24互通。

1、基本配置思路

采用两个不同进程的RIP路由互相引入来实现不同进程中的网络互通。要特别注意,外部路由的引入仅需在同时属于内、外部网络的路由器上进行配置,基本思路如下:

(1)在各路由器上使能RIP,实现各进程内的网络互联。

(2)在RouterB上配置RIP100和RIP200之间的路由互相引入,将引入的RIP200路由的缺省权值设为3,实现两进程路由互通。

(3)在RouterB上配置ACL,对引入的RIP200的192.168.4.0/24网络路由进行过滤,使RouterA仅与网段192.168.3.0/24互通。

1、配置接口IP



2、路由器上配置基本RIP功能



查看路由:

 


通过RB上的IP路由表可以看出,最终的路由表是汇总了所有的RIP进程的路由项的总表。

3、在RB上设置引入路由的缺省路由值为3(以便从RIP200进程中引入的路由优先于其他协议的路由在RIP100中进行发布),并将两个不同RIP进程的路由相互引入到对方的路由表中。

针对上图,可以看出,在RB上,IP路由和RIP路由都没变,在RA上,增加了到网络2、3、4的cost为4的路由项,RIP路由中也增加了相应的三条路由项,而RC中增加了到网络0、1的两个路由项,cost为1,这是因为在RB中RIP100中default-cost设置为3,即引入的外部路由,即RIP200中的路由cost为3,在加入到RIP100中后要加1,变为4,而RIP200中没有设置default-cost项,即采用默认值0,在加入RIP200后在加上1,结果为1。在RB上RIP路由,进程100和200中并没有显示对方进程的网络项。

上图是RB中两个RIP进程的database信息,其到相同目的地址的cost不同,在IP路由表中,选用的是哪个项呢?cost值小的吗?看其中的192.168.0.0,在200进程中cost是0,在100进程中是1,最终选择的是100中的1,200进程中的是引入的项。

所以最终IP路由表的选择要注意其逻辑。

上图是RB没有引入路由时RA的查询结果,从结果上看,display rip rip# route查看的是除去本rip宣告的网络以外的网络,这里因为没有引入宣告以外的网络,所以没有显示任何信息,而display rip rip# database显示的是rip协议在本进程的数据库信息,这里显示所有本进程宣告的网络和通过路由更新报文(response报文)获得的网络信息。

4、RB上配置ACL,并增加一条规则,拒绝原地址为192.168.4.0的报文。应用规则,在rip100进程中应用规则,控制在向RA发布路由信息更新时,过滤引入的RIP 200进程的路由192.168.4.0/24.

这时查看rip100中的rip路由信息

过滤的条目在database中cost变为16,查看RA中接收的更新信息

4.0的cost也变为16,经过一段时间后,即经过垃圾回收时间后,在RB中的此条目被删除:

RA接收到的信息

所以设置过滤条件后,对本地数据库中的信息是有影响的。

这跟我的考虑有一点不一样,在测试前我的理解是,既然acl是应用在rip200export方向上,那么其database中应该有4.0网络,只是不对外发布。但结果显示database中也没有4.0网络, database中存放的是对外发布路由信息的数据库。抓包时可以看到只发送了一部分

0.0和1.0IP地址没有发送,这时因为在接口上,默认是启动水平分割功能的,就是从此接口接收到的地址不在从此接口发出,0.0和1.0都是从RB的g0/0/0接口收到的。将此接口水平分割去使能:

在抓包:

看到0.0和1.0地址都出现了,但是在RA上

接收的信息依然只有2.0和3.0,这就是说,这里的命令只是显示RA确定更新的内容,对于不更新的1.0和0.0,其直接丢弃。

RIP与单壁回声静态BFD联动

4台路由器通过RIP实现网络互通,业务流量经过主链路A——B——D进行传输。当主链路发生故障时,业务流量快速切换到经由C的另一条路径进行传输。假设B不支持BFD。

1、基本配置思路

RouterB不支持BFD,只能采用与单臂回声静态BFD联动方式。

(1)在各接口上配置IP地址,使网络可达。

(2)在各路由器上使能RIP,基本实现网络互通。

(3)在RouterA上配置RIP与单臂回声静态BFD联动,通过BFD快速检测RouterA到RouterB之间的主链路状态, RIP收敛速度,实现快速切换。




上面的配置中,第一点,对于version2版本,在宣告网络时,也是使用自然网段宣告的,但是在抓包中发现其IP是按照子网来的;第二是关于邻居,对于RB,邻居为什么没有RD的172.16.1.2?。

去往172.16.1.0的路由下一跳是2.2.2.2,即RB

RA上配置以RB的g0/0/0接口为对端的单臂回声静态BFD会话,要求同时绑定对端IP和本地出接口。

RIP与动态BFD联动

第一步第二步是接口IP配置与RIP基本功能配置,与上例相同

当宣告网络时,如果不是自然网段,会出错,如上:

第三步,配置RA上所有接口的BFD特性,RB类同

可见,有两个BFD会话建立了,一个是UP状态,一个是Down状态,模拟RBg0/0/0故障

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值