RIPng

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40478570/article/details/88991340

                                                                                                 RIPng                                                                                                

缩略语

英文全名

中文解释

CIDR

Classless Interdomain Routing

无类域间路由选择RIPng

IGP

Interior Gateway Protocol

内部网关协议

RIP

Routing Information Protocol

路由选择信息协议

RIPng

RIP next generation

下一代RIP协议

RTE

Route Table Entry

路由表项

VLSM

Variable Length Subnet Mask

可变长度子网掩码

(该表格来自华三技术文档

http://www.h3c.com/cn/d_200804/603580_30003_0.htm#_Toc195584826

先来看RIP的两代版本的工作机制与差异:

  1. RIP通过UDP报文进行路由信息的交换,使用的端口号是520
  2. RIP路由器使用跳数来衡量到达目标网段的距离,发出的路由条目每经过一台 路由器则跳数+1,以此类推,为了限制收敛时间,RIP规定最大跳数为16,如 果大于或等于16条会被认为是无穷大,则认为该路由不可达

RIP的启动与运行过程如下:

  1. 路由器启动RIP后,会向邻居路由器发送请求报文,随后,路由器将不断侦听 来自其他路由器的RIP请求信息或相应信息
  2. 当发出请求的路由器收到了来自其他路由器的更新报文之后,会对自身的路由 表进行更新并,发送向邻居路由器发送触发式更新
  3. 邻居路由器收到路由更新后,又向其他邻居路由器泛洪触发式更新报文,在一 连串的触发式更新后,全网路由器同步并保持最新的路由信息

 

以下是RIPv2启动与运行的图解:

 

1.在T1时刻,R4已经将RIP启动完成,并将Loopback口宣告至RIP,R5开启RIP进程并将两个直连网段宣告进RIP

图中可以看到,RIP使用UDP协议,且端口号为520,箭头所指出的地方,Request报文大多数只在进程刚启动时发送,以向邻居请求路由条目以填充自己的路由表,第一个发送的Request中,包含一条空的且开销为16的路由,这表示该路由器向邻居路由器请求所有路由条目,不是指定单独一条路由

2.在T2时刻R5发送出的Request报文被R4所接受,R4以response回应,数据包如下:

RIP的response包,会在收到Request请求后发送,也会周期性发送,时间为30s,但实际现象是25s-30s发出一个,并不是绝对的周期,会存在一个抖动值,RIP的response包的路由信息包含了,前缀,掩码,下一跳,路由标签,开销,其中address family表示地址类型,IP为2(基本上找不到其他的了),response包最多只能包含25条路由条目,如果你开启了认证,那么只能包含24条条目,还有一点需要注意的是,RIP的所有包,TTL只有一跳,路由器并不是将RIP数据包转发,而是重新生成一个再泛洪

如果你掌握了RIPv2那么RIPng并不难,因为原理都一样,接下来是RIPng的对比:

  1. 报文中的下一跳长度不同,因IPv4与IPv6地址长度不同所以RIPng是128位
  2. RIP对报文的长度有限制,最大只能携带25个路由条目,而RIPng的报文长度,携带路由条目数目不作规定,报文长度与发送接口设置IPv6的MTU值有关
  3. 报文格式不同,与RIPv2一样,报文由头部和多个路由表项组成

RIPv2报文(上),RIPng报文(下)

与RIPv2不同的是,RIPng有两种路由条目:

1.Nexthop RTE

位于具有同一组下一跳的路由条目之前

2.IPv6前缀RTE

位于某个“下一跳 RTE”之后,同一个“下一跳 RTE”后 面可以跟很多个不同的“IPv6前缀RTE”,它描述了RIPng表中的,IPv6 地址,前缀长度,Router-tag以及开销值

下图为Nexthop RTE的格式:

下图为IPv6前缀RTE的格式:

  • IPv6 prefix :目标IPv6地址的前缀
  • route tag : 路由标签
  • prefix len : 地址前缀长度
  • Metric : 路径开销

3.报文发送方式不同

RIPv2通过用户配置可以实现组播或广播的方式来周期性的发送路由信息,而RIPng只能使用组播的方式来发送路由更新,IPv4的组播地址为224.0.0.9,IPv6的组播地址为ff02::9/64

4.安全认证不同

RIPv1无法使用认证功能,RIPv2可以使用MD5或明文认证来确保路由条目的安全性,而RIPng则可以通过IPv6自身的安全性来确保路由条目的安全,所以认证功能在RIPng中被取消

5.与网络层协议的兼容性不同

RIP不仅能在IP网络中运行,还能在IPX网络中运行,而RIPng只能在IPv6网络中运行

以下是IPv6的实验,包含了配置,数据包分析,路由过滤,以及偏移列表,以下是实验拓扑:

RIPng的配置与RIP不一样,在v4的RIP中,是在进程中使用network命令宣告,但在RIPng中,是先创建一个RIPng的实例,然后进入端口,将端口划入实例

R1:

R1(config)#ipv6 router rip test ##现在全局下创建一个RIPng实例

R1(config-rtr)#exit

 

R1(config)#interface loopback1 ##进入接口

R1(config-if)#ipv6 rip test enable ##将接口划入RIPng实例

 

R1(config-if)#interface loopback2

R1(config-if)#ipv6 rip test enable

 

R1(config-if)#interface f0/0

R1(config-if)#ipv6 rip test enable

R2:

R2config)#ipv6 router rip test

R2(config-rtr)#exit

 

R2(config)#interface f0/0

R2(config-if)#ipv6 rip test enable

 

R2(config-if)#interfacef1/0

R2(config-if)#ipv6 rip test enable

R3:

R3(config)#ipv6 router rip test

R3(config-rtr)#exit

 

R3(config)#interface loopback1

R3(config-if)#ipv6 rip test enable

 

R3(config-if)#interface loopback2

R3(config-if)#ipv6 rip test enable

 

R3(config-if)#interface f0/0

R3(config-if)#ipv6 rip test enable

配置完成之后在R1上查看路由表,show ipv6 route

可以看到已经学到了R3的两个Loopback口路由,使用ping命令测试,ping命令没有变化:

那么完成了最基本的配置在开看看偏移列表的配置,RIPng的偏移列表与RIPv2中的完全不一样,来看一下对比:

  1. RIPv2可以匹配感兴趣条目,RIPng不行
  2. 在RIPv2中,如果你想将一个条目从2跳变为5跳,那么你只需要+3跳就 可以了,而在RIPng中,你需要加4跳,也就是说5-2+1跳,这一点将在 之后的实验中看到
  3. RIPv2中的偏移列表可以指定入方向或出方向,但RIPng只能是出方向, 因为不能匹配感兴趣条目,所以,你如果在一个接口上设置偏移,那么所 有从这个接口出去的条目,都会发生跳数偏移

拓扑图依然如下:

从上图R1的路由表可以看到,去往2013::/64的开销是3跳,那么如果你要将他变为5跳或10跳,那么你只能在R2的F0/0口上做偏移,因为只能是出方向,那么先来看看,偏移至5跳的配置方法,根据上面给出的方法,你设置的偏移值应该为,5-3+1:

R2

R2(config)#interface FastEthernet0/0

R2(config-if)#ipv6 rip test metric-offset 3

配置完成之后去R1上看效果,发现变成了5跳,至于为什么我也不知道,这个是算法的问题了,同样的如果你想改变至10跳,那么你就应该10-3+1=8,也就是将偏移值设为8:

那么解决了偏移列表的问题,接下来就是路由操纵了,在上图可以看到R1中有两个R3的Loopback口路由,分别是2012::/64,2013::/64,那么如果你只希望R1收到R3的2012::/64路由,不希望收到2013::/64的路由条目,那么就可以在R2上配置分发列表,但是这里需要注意的是,当你在RIPng配置分发列表时,一定要指定出接口,否则是不生效了,而且,你只能放行条目,不能拒绝某条条目,也就是说,如果你有10条路由,需要放行9条,那么你就需要用前缀列表去匹配9条路由,而不是匹配1条路由然后做拒绝

以下是配置:

R2:

R2(config)#ipv6 prefix-list a seq 5 permit 2012::/64 ##用的是ipv6的前缀列表

R2(config)#ipv6 router rip test   ##在进程中配置

R2(config-rtr)#distribute-list prefix-list a out f0/0 ##配置f0/0口出方向过滤

配置完成后在R1查看路由表,发现2013::/64被过滤

最后再来看一下RIPng的两中数据包,Request与response

(上图为Request包,下图为Response包,两个数据包格式一样,所以放在一起解释了)

进行逐一解释:

Command(命令字):如果为1则代表Request,2则为Response,1字节长

version(版本号):目前只有1,1字节长

Reserved(保留字段):必须为全0,2字节长

Route Table Entry(路由条目):不论RIPng或RIPv1,v2,在启动完成后,都会先发送一个全0的路由条目,这表示了向邻居请求所有的路由条目,该条目包含了,路由前缀,前缀长度,开销,路由标记,全长20字节,其中IPv6 Prefix长度为16字节,因为ipv6地址是128位,Route tag长度为2字节,Prefix Length长度为1字节,Metric长度为1字节

猜你喜欢

转载自blog.csdn.net/qq_40478570/article/details/88991340