概述:
RIPng是一种较为简单的内部网关协议,是RIP在IPv6网络中的应用。RIPng主要用于规模较小的网络中,比如校园网以及结构较简单的地区性网络。由于RIPng的实现较为简单,在配置和维护管理方面也远比OSPFv3和IS-IS for IPv6容易,因此在实际组网中仍有广泛的应用。
由于RIPng没有安全认证机制,存在安全隐患。建议选择OSPFv3、IS-IS(IPv6)或BGP4+代替。
RIPng与RIP的差异:
为了实现在IPv6网络中应用,RIPng对原有的RIP协议进行了修改:
• RIPng使用UDP的521端口(RIP使用520端口)发送和接收路由信息。
• RIPng的目的地址使用128比特的前缀长度(掩码长度)。
• RIPng使用128比特的IPv6地址作为下一跳地址。
• RIPng使用链路本地地址FE80::/10作为源地址发送RIPng路由信息更新报文。(路由协议都是通过链路本地地址作为源地址更新报文,不需要配置全局单播地址)
• RIPng使用组播方式周期性地发送路由信息,并使用FF02::9作为链路本地范围内的路由器组播地址。
• RIPng报文由头部(Header)和多个路由表项RTEs(Route Table Entry)组成。在同一个RIPng报文中,RTE的最大数目根据接口的MTU值来确定。
其他部分基本保存不变:
• RIPng使用和RIP一样的报文类型,包含request和response。
• RIPng使用和RIP一样的计时器。
• RIPng和RIP一样有水平分割和毒性反转机制。
• RIPng和PIP一样有filter-policy、metricin及metricout、import-route等路由控制命令。
• RIGng使用和RIP一样的算法及防环方法。
报文格式:
Requst报文:
抓包报文中的数据链路层,源MAC地址为自己的地址,目的MAC地址为RIPng对应组播MAC地址。IPv6的报头是自己的链路本地地址,目的地址是RIPng的对应永久组播地址(ff02::9)。
RIPng是应用层协议,其封装在UDP报文中,端口号为521,里面的信息command为1,表示request报文,其中的信息为一个metric值为16的默认路由(0不可用)表示向对方请求对方的所有ripng路由。
Response报文:
RIPng报文里面的信息command为2,表示reponse报文,reponse报文包含相应的路由条目,例如其中的信息2001::/64,med值为1。
具体格式:
RIPng报文各字段解释如下表:
RIPng有两类RTE,分别如下:
- 下一跳RTE:位于一组具有相同下一跳的“IPv6前缀RTE”的最前面,它定义了下一跳的IPv6地址。其目的和RIPv2中下一跳字段一样,可使路由下一跳不同于通告路由器。
- IPv6前缀RTE:位于某个“下一跳RTE”的后面,同一个“下一跳RTE”的后面可以有多个不同的“IPv6前缀RTE”。它描述了RIPng路由表中的目的IPv6地址及开销。如果IPv6前缀RTE前方没有下一跳RTE字段,表示下一跳就是报文的源地址。
这样设计的好处:节约报文开销。主要是因为如下两个方面:
- 同一个下一跳对应了多个IPv6前缀,不用每一个路由条目中都单独写出来;
- 如果IPv6前缀RTE前方没有下一跳RTE字段,表示下一跳就是报文的源地址,同样不用再路由条目中单独添加下一跳字段。
相关配置命令:华为设备
基本配置:
- 执行命令ripng [ process-id ] [ vpn-instance vpn-instance-name ],启动RIPng进程,进入RIPng视图。
- 执行命令interface interface-type interface-number,进入接口视图。
- 执行命令ripng process-id enable,在指定接口下使能RIPng。
配置协议优先级:
- 执行命令ripng [ process-id ] [ vpn-instance vpn-instance-name ],进入RIPng视图。
- 执行命令preference { preference | route-policy route-policy-name } *,设置RIPng优先级。 缺省情况下,RIPng路由优先级的缺省值是100。
配置接口附加度量值:
- 执行命令interface interface-type interface-number,进入接口视图。
- 执行命令ripng metricin value,设置接口在接收路由时增加的度量值。缺省情况下,RIPng接口接收路由时不附加度量值。执行命令ripng metricout { value | { acl6-number | acl6-name acl6-name | ipv6-prefix ipv6-prefix-name } value1 },设置接口在发布路由时增加的度量值。缺省情况下,接口发送RIPng路由增加的度量值为1。
配置水平分割和路由反转:
- 执行命令interface interface-type interface-number,进入接口视图。
- 执行命令ripng split-horizon,启动水平分割。
- 执行命令ripng poison-reverse,启动毒性反转。
除了NBMA网络,在其他网络中缺省使能水平分割功能。
同时配置水平分割和毒性反转,只有毒性反转生效。
设置路由聚合:
- 执行命令interface interface-type interface-number,进入接口视图。
- 执行命令ripng summary-address ipv6-address prefix-length [ avoid-feedback ],配置RIPng路由聚合。 缺省情况下,没有配置RIPng路由器发布聚合的IPv6地址。
配置RIPng发布缺省路由:
- 执行命令interface interface-type interface-number,进入接口视图。
- 执行命令ripng default-route { only | originate } [ cost cost | tag tag ]*,配置RIPng发布缺省路由。 缺省情况下,RIPng路由域中没有缺省路由。请根据组网的实际情况配置发布缺省路由。
a) only:只发布IPv6缺省路由(::/0),抑制其它路由的发布。如果本设备处于网络边缘,希望隐藏本地网络细节,使其他网络的设备只通过本设备访问本地网络,可以配置该参数。
b) originate:发布IPv6缺省路由(::/0),但不影响其它路由的发布。如果本设备处于网络边缘,希望隐藏本地网络部分细节,使其他网络的设备在访问本地网络某些设备时使用缺省路由时,可以配置该参数。
实验:
首先在R1和R2每个接口上配置3个全球单播地址,R3上配置6个全球单播地址,其中2018网段的地址用来汇总测试,并且各个接口都开启RIPng。
步骤一:做路由汇总
在R1上查看RIPng路由:
可以查看到,Ripng的路由条目的下一跳都是对方链路本地地址,优先级为100。
然后将2018:1:: /64, 2018:2:: /64,2018:3:: /64的条目进行汇总,可以手工汇总成2018:: /16的条目,所以我们在R3上进行相应的配置:
interface GigabitEthernet0/0/0
ripng summary-address 2018:: 16
最后R1上查看对应的路由:汇总成功
步骤二:默认路由下放
在R2的g0/0/0接口上配置下放默认路由,并且模式为only,表示不会发送其他路由了: [R2-GigabitEthernet0/0/0]ripng default-route only
在R1上检测结果是否成功:可以看到只有一条默认路由了,其他路由都消失了,说明实验成功。
参考资料:华为HCIE学习指南、华为hedex文档