IPV6的RIP

繁简对译:[]  字体设置:[] 2009-06-16  作者:夏丰  阅读  次

34.1 RIPng简介
34.1.1   RIPng的产生
众所周知,路由协议有基于距离矢量和链路状态两种。使用最广泛的一种基于距离矢量的路由协议
是选路信息协议RIP(Routing Information Protocol)。RIP产生较早,经过多年的应用,已经产生成熟的
标准和产品。RIP最大的优点是其比较简单,在规模不大、拓扑结构比较简单的网络上易于操作和维护。
但对于规模较大的网络,由于其存在选路环路及无限计数等问题,选路性能不如基于链路状态的协议,
因而较少采用。
RIP作为一种成熟的路由标准,在因特网中有着广泛的应用,特别是在一些中小型网络中。正是基
于这种现状,同时考虑到RIP与IPv6的兼容性问题,IETF对现有技术进行改造,制定了IPv6下的RIP标准,
即RIPng(RIP next generation)。
 
34.1.2    RIPng报文格式
RIPng是基于UDP的协议,并且使用端口号521发送和接收数据报。RIPng报文大致可分为两类:选路
信息报文和用于请求信息的报文。它们都使用相同的格式,由固定的首部和路由表项RTE(Route Table
Entry)组成,其中路由表项可以有多个。

 

 
首部包括命令字段和版本号字段。同RIP一样,命令字段用来区分报文要实现的各种操作。
其中命令号1表示请求部分或全部选路信息,
命令号2表示响应,其中包含一个或多个RTE。
路由器或主机可以通过发送请求命令向另一个路由器请求选路信息。路由器使用响应命令回答。版
本号字段包含了协议的版本号(目前的版本号值为1),接收方会检测该字段,以确定对方运行的RIPng
协议本地是否能进行正确的解释。
报文的剩余部分是一个RTE序列,其中每一个RTE由目的IPv6前缀、路由标记、前缀的有效长度以及
到目的网络的花费等4部分组成。IPv6的地址为128bit,因此在RTE中占用16字节。
路由标记字段是从RIP中保留下来的,其最主要的用途是用来对外部路由做标志,以区分内部路由
和外部路由,供外部网关路由协议(如EGP或BGP)使用。该字段也可用于其他目的,只要网络内所有运
行RIPng的路由器对其解释是一致的。

前缀长度字段指明了前缀中有效位的长度, IPv6中使用了前缀长度的概念代替了IPv4中的子网掩码。
由于IPv6地址的意义很明确,因此RIPng中不再区分网络路由、子网路由或主机路由
路由花费字段指明到目的网络的花费,由于RIPng的最大工作直径为15跳,因此该字段可以为1和15
之间的任意值,16即意味着目的地不可达。RIPng中仍然使用固定的度量方式,即该字段的含义只能是跳
数,路由器不能对其进行其他的解释。
RIPng并没有限制报文的大小,RIPng报文所能携带的最大RTE的数目是由物理介质的MTU所决定的,
计算公式如下:
报文长度  = RTE数目×20 + 4
其中RTE数目的计算公式如下:
RTE数目=INT[(MTU - IPv6首部长度  - UDP首部长度  - RIPng首部长度)/ RTE长度]
与RIPv2不同的是,RIPng的下一跳字段是由一个单独的RTE指定的。RIPng使用单独的RTE表示下一跳
的原因是IPv6的地址多达128bit,若将下一跳字段与目的网络地址放在同一个RTE中,则RTE的大小几乎将
会增加一倍,因此RIPng中采取目的网络地址和下一跳分开的方法来减小RTE的长度。在表示下一跳的RTE
中,路由标记和前缀长度字段必须为零,而度量字段为0xFF。
 

34.1.3    RIPng工作原理
路由器通常不会主动发出请求报文来进行路由请求,路由请求通常只是在路由器刚启动或是路由
正在寻找路由信息时才会发出请求报文以获得响应。
路由器在查询响应、周期更新、触发更新三种情况下会收到响应报文。路由器根据响应报文判断是
否对本地路由表进行更新。由于响应报文可能对本地路由表进行改动,因此对报文的来源必须进行严格
的检查,以确认报文的合法性。
众所周知,基于距离矢量算法的路由协议会产生慢收敛和无限计数问题,这样就引发了路由的不一
致。RIPng使用水平分割技术、毒性逆转技术、触发更新技术来解决这些问题,但是这些技术的引入,同
时又带来了另一些问题,如采用触发更新技术后,如果不对产生的报文进行合理的控制,很容易产生广
播风暴。
路由器周期性的报文广播和触发更新给网络造成很多额外的负载,为减少路由信息的数量,RIPng
可以采用多播技术发送更新报文,同时利用一个小的随机时延对触发更新报文进行抑制。
介绍RIPng的工作原理就不能不提到定时器,定时器在RIPng中起着非常重要的作用,RIPng使用定时
器来实现路由表的更新、报文的发送。周期性的报文广播是由定时器实现的,另外为防止路由表长时间
未更新而失效,每个路由表项有两个定时器与之相联系,超时的路由表项最终将会被删除,以防止路由
器广播和使用已经失效的路由。RIPng中使用的定时器主要有以下三个:

  启动周期性广播的定时器。此定时器被设置成25s到35s之间的任一随机数。这样设置的目的是
为了避免网络上所有路由器以相同的定时发送更新报文,利用随机间隔可以均衡通信量,从
而减少路由器之间发生冲突的可能性。
  期满定时器。路由器只要收到通往特定信宿路由,就对通往该信宿的期满定时器初始化。期
满定时器被设定为180s,如果一条路由在期满定时器超时前未得到相关报文的更新,则该条
路由不再有效,但仍保留在路由表中,以便通知其他路由器这条路由已经失效。
  垃圾收集定时器。路由器对无效路由打上尺度为无穷大的无效标记并将垃圾收集定时器初始
化。此时,定时器被设置为120s,在这段时间内这些路由仍然会被路由器周期性地广播,这
样相邻路由器就能迅速从路由表中删除该路由

34.1.3    RIPv1 RIPv2和RIPng的比较
根据上面的介绍,我们应该看到RIPng的目标并不是创造一个全新的协议,而是对RIP进行必要的改
造以使其适应IPv6下的选路要求,因此RIPng的基本工作原理同RIP是一样的,其主要的变化在地址和报文
格式方面。下面列举了一些RIPv1、RIPv2与RIPng之间的主要区别:
1.  地址版本。RIPv1、RIPv2是基于IPv4的,地址域只有32bit,而RIPng基于IPv6,使用的所有地址
均为128bit。
2.  子网掩码和前缀长度。RIPv1被设计成用于无子网的网络,因此没有子网掩码的概念,这就决
定了RIPv1不能用于传播变长的子网地址或用于CIDR的无类型地址。RIPv2增加了对子网选路的
支持,因此使用子网掩码区分网络路由和子网路由。IPv6的地址前缀有明确的含义,因此RIPng
中不再有子网掩码的概念,取而代之的是前缀长度。同样也是由于使用了IPv6地址,RIPng中
也没有必要再区分网络路由、子网路由和主机路由
3.  协议的使用范围。RIPv1、RIPv2的使用范围被设计成不只局限于TCP/IP协议簇,还能适应其他
网络协议簇的规定,因此报文的路由表项中包含有网络协议簇字段,但实际的实现程序很少
被用于其他非IP的网络,因此RIPng中去掉了对这一功能的支持。
4.  对下一跳的表示。RIPv1中没有下一跳的信息,接收端路由器把报文的源IP地址作为到目的网
路由的下一跳。RIPv2中明确包含了下一跳信息,便于选择最优路由和防止出现选路环路及
慢收敛。与RIPv2不同,为防止RTE过长,同时也是为了提高路由信息的传输效率,RIPng中的
下一跳字段是作为一个单独的RTE存在的。
5.  报文长度。RIPv1、RIPv2中对报文的长度均有限制,规定每个报文最多只能携带25个RTE。而
RIPng对报文长度、RTE的数目都不作规定,报文的长度是由介质的MTU决定的。RIPng对报文
长度的处理,提高了网络对路由信息的传输效率。
6.  RIPng使用FF02::9这个地址进行组播更新,  

34.2 RIPng配置
34.2.1   RIPng的基本配置
首先配置RIPng和RIP有很多不同,RIPng主要配置从路由配置模式转换到了接口模式,对于如下拓扑:

 

首先需要启动路由器进程
ipv6 router rip bigMountain
但是如果该命令没有执行,也没有太大的关系,当接口上启用RIPng进程的时候,该命令也会
自动加入

然后需要在接口下配置,使得这些接口加入到RIPng进程中,例如Taos路由
ipv6 unicast-routing
interface Ethernet0
  ipv6 address 2001:db8:0:6::1/64
  ipv6 rip bigMountain enable
 
interface Ethernet1
  ipv6 address 2001:db8:0:4::1/64
  ipv6 rip bigMountain enable
 
interface Ethernet2
  ipv6 address 2001:db8:0:5::1/64
  ipv6 rip bigMountain enable
 

Sandia#show ipv6 route
IPv6 Routing Table - 16 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B   BGP
        U - Per-user Static route
        I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
        O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
        ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
C      2001:DB8:0:4::/64 [0/0]
      via ::, Ethernet0
L      2001:DB8:0:4::2/128 [0/0]
      via ::, Ethernet0
R      2001:DB8:0:5::/64 [120/2]
      via FE80::205:5EFF:FE6B:50A1, Ethernet0
R      2001:DB8:0:6::/64 [120/2]
      via FE80::205:5EFF:FE6B:50A1, Ethernet0
C      2001:DB8:0:10::/64 [0/0]
      via ::, Ethernet1
L      2001:DB8:0:10:2B0:64FF:FE30:1DE0/128 [0/0]
      via ::, Ethernet1
C      2001:DB8:0:11::/64 [0/0]
      via ::, Ethernet2
L      2001:DB8:0:11:2B0:64FF:FE30:1DE0/128 [0/0]
      via ::, Ethernet2
C      2001:DB8:0:12::/64 [0/0]
       via ::, Ethernet3
L      2001:DB8:0:12:2B0:64FF:FE30:1DE0/128 [0/0]
      via ::, Ethernet3
C      2001:DB8:0:13::/64 [0/0]
      via ::, Ethernet4
L      2001:DB8:0:13:2B0:64FF:FE30:1DE0/128 [0/0]
      via ::, Ethernet4
R      2001:DB8:0:18::/64 [120/3]
      via FE80::205:5EFF:FE6B:50A1, Ethernet0
L      FE80::/10 [0/0]
      via ::, Null0
L      FF00::/8 [0/0]
      via ::, Null0

34.2.2   多进程RIPng配置
一个路由器上可以同时运行多个RIPng的进程,例如Taos路由器,需要将多个以太网段隔离开,每个网
段一个RIPng进程,配置方式如下
Interface Ethernet0
  ipv6 rip bigMountain enable

Interface Ethernet1
  no ipv6 rip bigMountain enable
  ipv6 rip smallMountain enable
interface Ethernet2
  ipv6 rip bigMountain enable
  ipv6 rip smallMountain enable
34.2.3   修改RIPng更新消息方式
RIPng默认采用FF02::9这个地址进行组播更新,更新报文使用UDP 520端口,下面我可以修改这个更新
地址,但必须保证在同一个组播域中,相互间地址相同
ipv6 router rip smallMountain
   port 527 multicast-group FF02::9
34.2.4    查看RIPng路由进程
Taos#show ipv6 rip
RIP process "bigMountain", port 521, multicast-group FF02::9, pid 104
      Administrative distance is 120. Maximum paths is 16
      Updates every 30 seconds, expire after 180
      Holddown lasts 0 seconds, garbage collect after 120
      Split horizon is on; poison reverse is off
      Default routes are not generated
      Periodic updates 1078, trigger updates 5
   Interfaces:
     Ethernet2
     Ethernet0
   Redistribution:
     None
RIP process "smallMountain", port 527, multicast-group FF02::9, pid 117
      Administrative distance is 120. Maximum paths is 16
      Updates every 30 seconds, expire after 180
      Holddown lasts 0 seconds, garbage collect after 120
      Split horizon is on; poison reverse is off
      Default routes are not generated
      Periodic updates 1080, trigger updates 5
   Interfaces:
     Ethernet1
     Ethernet2
   Redistribution:
     None

34.2.5    修改RIPng更新计时器及AD
  RIPng同样也有4个计时器可以通过如下方式更改,管理距离也可以按如下方式更改
ipv6 router rip bigMountain
   timers 10 30 30 60
   maximum-paths 8
   distance 200
 
Taos#show ipv6 rip
RIP process "bigMountain", port 521, multicast-group FF02::9, pid 104
      Administrative distance is 200. Maximum paths is 8
      Updates every 10 seconds, expire after 30
      Holddown lasts 30 seconds, garbage collect after 60
      Split horizon is on; poison reverse is off
      Default routes are not generated
      Periodic updates 2513, trigger updates 7
   Interfaces:
     Ethernet2
     Ethernet0

   Redistribution:
     None
RIP process "smallMountain", port 527, multicast-group FF02::9, pid 122
      Administrative distance is 120. Maximum paths is 16
      Updates every 30 seconds, expire after 180
      Holddown lasts 0 seconds, garbage collect after 120
      Split horizon is on; poison reverse is off
      Default routes are not generated
      Periodic updates 2511, trigger updates 0
   Interfaces:
     Ethernet2
     Ethernet1
   Redistribution:
     None
Taos#
34.2.6    RIPng路由汇总
    RIPng的路由汇总在接口上配置,配置方法如下:
interface Ethernet0
  ipv6 address 2001:DB8:0:4::2/64
  ipv6 rip bigMountain enable
  ipv6 rip bigMountain summary-address 2001:DB8:0:10::/62
 
Taos#show ipv6 route rip
IPv6 Routing Table - 12 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B    BGP
        U - Per-user Static route
        I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
        O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
        ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
R      2001:DB8:0:10::/62 [120/4]
      via FE80::2B0:64FF:FE30:1DE0, Ethernet1
R      2001:DB8:0:18::/64 [120/2]
      via FE80::204:C1FF:FE50:F1C0, Ethernet0
R      2001:DB8:0:20::/64 [120/2]
      via FE80::204:C1FF:FE50:E700, Ethernet2
R      2001:DB8:0:21::/64 [120/2]
      via FE80::204:C1FF:FE50:E700, Ethernet2
34.2.7    RIPng默认路由
RIPng的默认路由在接口上配置,配置方法如下:
interface Ethernet0
  ipv6 address 2001:DB8:0:4::2/64
  ipv6 rip bigMountain enable
  ipv6 rip bigMountain default-information originate
同时也可以配置only模式,仅在接口上发送默认路由
ipv6 rip bigMountain default-information only

34.2.8    RIPng路由过滤
RIPng的路由过滤在接口上配置,配置方法如下:
ipv6 rip bigMountain input-filter/output-filter name
 
34.2.9    RIPng路由Metric
RIPng的路由Metric更改在接口上配置,配置方法如下:
ipv6 rip bigMountain metric-offset number
 

 

打印 收藏 关闭