IPv6 RIPng 路由协议

IPv6 RIPng 路由协议
 

2.1      IPv6 RIPng

下一代路由选择信息协议( RIPng ,应用于 IPv6 )是一种基于 IPv6 网络协议和算法的协议。在国际性网络中,如因特网,拥有很多应用于整个网络的路由选择协议。形成网络的每一个自治系统( AS ),都有属于自己的路由选择技术,不同的自治系统,路由选择技术也不同。自治系统内部的路由选择协议称为内部网关协议( IGP )。外部网关协议( EGP )是一种用于在自治系统之间传输路由选择信息的协议。 RIPng 在中等规模的 AS 中被用作 IGP 协议。对于较复杂的网络环境, RIPng 不适用。
   RIPng 是一种距离向量( Distance Vector )算法。此协议所用的算法早在 1969 年, ARPANET 就用其来计算路由。然而该协议最初属于 XEROX 网络协议。 PUP 协议通过网关信息协议交换路由选择信息,而 XNS 则采用该协议的更新版本,命名为路由选择信息协议( RIP )实现路由选择信息交换。 Berkeley 的路由协议很大程度上与 RIP 相同,即能够处理 IPV4 及其它地址类型的通用地址格式取代了 XNS 地址, 同时路由选择每隔 30 秒更新一次。正是因为这种相似性, RIP 既适用于 XNS 协议,也适用于路由类协议。
 

2.1.1 RIPng报文格式

RIPng 是基于 UDP 的协议,并且使用端口号 521 发送和接收数据报。其更新组播地址为 FF02::9 RIPng 报文大致可分为两类:选路信息报文和用于请求信息的报文。它们都使用相同的格式,由固定的首部和路由表项 RTE Route Table Entry )组成,其中路由表项可以有多个。
首部包括命令字段和版本号字段。同 RIP 一样,命令字段用来区分报文要实现的各种操作。其中命令号 1 表示请求部分或全部选路信息,命令号 2 表示响应,其中包含一个或多个 RTE 。如下图所示,报文的具体格式。
 
其各个字段的含义:
Ø  Command :定义报文的类型。 0x01 表示 Request 报文, 0x02 表示 Response 报文。
Ø  Version RIPng 的版本,目前其值只能为 0x01
Ø  RTE Route Table Entry ):路由表项,每项的长度为 20 字节。
路由器或主机可以通过发送请求命令向另一个路由器请求选路信息。路由器使用响应命令回答。版本号字段包含了协议的版本号(目前的版本号值为 1 ),接收方会检测该字段,以确定对方运行的 RIPng 协议本地是否能进行正确的解释。
报文的剩余部分是一个 RTE 序列,在 RIPng 里有两类 RTE ,分别是
Ø  下一跳 RTE :位于一组具有相同下一跳的“ IPv6 前缀 RTE” 的前面,它定义了下一跳的 IPv6 地址。
Ø  IPv6 前缀 RTE :位于某个“下一跳 RTE” 的后面。同一个“下一跳 RTE” 的后面可以有多个不同的“ IPv6 前缀 RTE” 。它描述了 RIPng 路由表中的目的 IPv6 地址、路由标记、前缀长度以及度量值。
IPv6 前缀 RTE 如下图所示。
Ø  IPv6 prefix :目的 IPv6 地址的前缀。
Ø  route tag :路由标记。
Ø  prefix len IPv6 地址的前缀长度。
Ø  metric :路由的度量值。
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 长度 ]
下一跳 RTE 格式,如下图所示其格式。
IPv6 next hop address 表示下一跳的 IPv6 地址
RIPv2 不同的是, RIPng 的下一跳字段是由一个单独的 RTE 指定的。 RIPng 使用单独的 RTE 表示下一跳的原因是 IPv6 的地址多达 128bit ,若将下一跳字段与目的网络地址放在同一个 RTE 中,则 RTE 的大小几乎将会增加一倍,因此 RIPng 中采取目的网络地址和下一跳分开的方法来减小 RTE 的长度。在表示下一跳的 RTE 中,路由标记和前缀长度字段必须为零,而度量字段为 0xFF
Request报文
RIPng 路由器启动后或者需要更新部分路由表项时,便会发出 Request 报文,向邻居请求需要的路由信息。通常情况下以组播方式发送 Request 报文。
收到 Request 报文的 RIPng 路由器会对其中的 RTE 进行处理。如果 Request 报文中只有一项 RTE ,且 IPv6 前缀和前缀长度都为 0 ,度量值为 16 ,则表示请求邻居发送全部路由信息,被请求路由器收到后会把当前路由表中的全部路由信息,以 Response 报文形式发回给请求路由器。如果 Request 报文中有多项 RTE ,被请求路由器将对 RTE 逐项处理,更新每条路由的度量值,最后以 Response 报文形式返回给请求路由器。下图为采集到的报文。
如下图所示:
 
Response报文
Response 报文包含本地路由表的信息,一般在下列情况下产生:
Ø  对某个 Request 报文进行响应
Ø  作为更新报文周期性地发出
Ø  在路由发生变化时触发更新
收到 Response 报文的路由器会更新自己的 RIPng 路由表。为了保证路由的准确性, RIPng 路由器会对收到的 Response 报文进行有效性检查,比如源 IPv6 地址是否是链路本地地址,端口号是否正确等,没有通过检查的报文会被忽略。下图为采集到的报文。
如下图所示:
 

你可能感兴趣的:(职场,ipv6,路由,休闲)