11-IPv6基础配置
本章节下载: 11-IPv6基础配置 (860.01 KB)
目 录
1.3.5 引用前缀生成接口上的IPv6地址,并将此前缀分配给终端设备
1.7.3 配置发送ICMPv6差错报文对应的令牌桶容量和令牌刷新周期
1.7.4 配置允许回复组播形式的Echo request报文
1.7.9 配置ICMPv6 Echo回复报文的硬件转发优先级
IPv6(Internet Protocol Version 6,互联网协议版本6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation,下一代互联网协议),它是IETF(Internet Engineering Task Force,互联网工程任务组)设计的一套规范,是IPv4的升级版本。IPv6和IPv4之间最显著的区别为:IP地址的长度从32比特增加到128比特。
通过将IPv4报文头中的某些字段裁减或移入到扩展报文头,减小了IPv6基本报文头的长度。IPv6使用固定长度的基本报文头,从而简化了转发设备对IPv6报文的处理,提高了转发效率。尽管IPv6地址长度是IPv4地址长度的四倍,但IPv6基本报文头的长度只有40字节,为IPv4报文头长度(不包括选项字段)的两倍。
图1-1 IPv4报文头和IPv6基本报文头格式比较
IPv6的源地址与目的地址长度都是128比特(16字节)。它可以提供超过3.4×1038种可能的地址空间,完全可以满足多层次的地址划分需要,以及公有网络和机构内部私有网络的地址分配。
IPv6的地址空间采用了层次化的地址结构,有利于路由快速查找,同时可以借助路由聚合,有效减少IPv6路由表占用的系统资源。
为了简化主机配置,IPv6支持有状态地址配置和无状态地址配置:
· 有状态地址配置是指从服务器(如DHCPv6服务器)获取IPv6地址及相关信息,详细介绍请参见“BRAS业务配置指导”中的“DHCPv6”;
· 无状态地址配置是指主机根据自己的链路层地址及路由器发布的前缀信息自动配置IPv6地址及相关信息。
同时,主机也可根据自己的链路层地址及默认前缀(FE80::/10)形成链路本地地址,实现与本链路上其他主机的通信。
IPv6将IPsec作为它的标准扩展头,可以提供端到端的安全特性。这一特性也为解决网络安全问题提供了标准,并提高了不同IPv6应用之间的互操作性。
IPv6报文头的流标签(Flow Label)字段实现流量的标识,允许设备对某一流中的报文进行识别并提供特殊处理。
IPv6的邻居发现协议是通过一组ICMPv6(Internet Control Message Protocol for IPv6,IPv6互联网控制消息协议)消息实现的,管理着邻居节点间(即同一链路上的节点)信息的交互。它代替了ARP(Address Resolution Protocol,地址解析协议)、ICMPv4路由器发现和ICMPv4重定向消息,并提供了一系列其他功能。
IPv6取消了IPv4报文头中的选项字段,并引入了多种扩展报文头,在提高处理效率的同时还大大增强了IPv6的灵活性,为IP协议提供了良好的扩展能力。IPv4报文头中的选项字段最多只有40字节,而IPv6扩展报文头的大小只受到IPv6报文大小的限制。
IPv6地址被表示为以冒号(:)分隔的一连串16比特的十六进制数。每个IPv6地址被分为8组,每组的16比特用4个十六进制数来表示,组和组之间用冒号隔开,比如:2001:0000:130F:0000:0000:09C0:876A:130B。
为了简化IPv6地址的表示,对于IPv6地址中的“0”可以有下面的处理方式:
· 每组中的前导“0”可以省略,即上述地址可写为2001:0:130F:0:0:9C0:876A:130B。
· 如果地址中包含一组或连续多组均为0的组,则可以用双冒号“::”来代替,即上述地址可写为2001:0:130F::9C0:876A:130B。
在一个IPv6地址中只能使用一次双冒号“::”,否则当设备将“::”转变为0以恢复128位地址时,将无法确定“::”所代表的0的个数。
IPv6地址由两部分组成:地址前缀与接口标识。其中,地址前缀相当于IPv4地址中的网络号码字段部分,接口标识相当于IPv4地址中的主机号码部分。
地址前缀的表示方式为:IPv6地址/前缀长度。其中,前缀长度是一个十进制数,表示IPv6地址最左边多少位为地址前缀。
IPv6主要有三种类型的地址:单播地址、组播地址和任播地址。
· 单播地址:用来唯一标识一个接口,类似于IPv4的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的接口。
· 组播地址:用来标识一组接口(通常这组接口属于不同的节点),类似于IPv4的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。
· 任播地址:用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。
IPv6中没有广播地址,广播地址的功能通过组播地址来实现。
IPv6地址类型是由地址前面几位(称为格式前缀)来指定的,主要地址类型与格式前缀的对应关系如表1-1所示。
地址类型 |
格式前缀(二进制) |
IPv6前缀标识 |
|
单播地址 |
未指定地址 |
00...0 (128 bits) |
::/128 |
环回地址 |
00...1 (128 bits) |
::1/128 |
|
链路本地地址 |
1111111010 |
FE80::/10 |
|
全球单播地址 |
其他形式 |
- |
|
组播地址 |
11111111 |
FF00::/8 |
|
任播地址 |
从单播地址空间中进行分配,使用单播地址的格式 |
IPv6单播地址的类型可有多种,包括全球单播地址、链路本地地址等。
· 全球单播地址等同于IPv4公网地址,提供给网络服务提供商。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。
· 链路本地地址用于邻居发现协议和无状态自动配置中链路本地上节点之间的通信。使用链路本地地址作为源或目的地址的数据报文不会被转发到其他链路上。
· 环回地址:单播地址0:0:0:0:0:0:0:1(简化表示为::1)称为环回地址,不能分配给任何物理接口。它的作用与在IPv4中的环回地址相同,即节点用来给自己发送IPv6报文。
· 未指定地址:地址“::”称为未指定地址,不能分配给任何节点。在节点获得有效的IPv6地址之前,可在发送的IPv6报文的源地址字段填入该地址,但不能作为IPv6报文中的目的地址。
表1-2所示的组播地址,是预留的特殊用途的组播地址。
表1-2 预留的IPv6组播地址列表
地址 |
应用 |
FF01::1 |
表示节点本地范围所有节点的组播地址 |
FF02::1 |
表示链路本地范围所有节点的组播地址 |
FF01::2 |
表示节点本地范围所有路由器的组播地址 |
FF02::2 |
表示链路本地范围所有路由器的组播地址 |
另外,还有一类组播地址:被请求节点(Solicited-Node)地址。该地址主要用于获取同一链路上邻居节点的链路层地址及实现重复地址检测。每一个单播或任播IPv6地址都有一个对应的被请求节点地址。其格式为:
FF02:0:0:0:0:1:FFXX:XXXX
其中,FF02:0:0:0:0:1:FF为104位固定格式;XX:XXXX为单播或任播IPv6地址的后24位。
IPv6单播地址中的接口标识符用来唯一标识链路上的一个接口。目前IPv6单播地址基本上都要求接口标识符为64位。
不同接口的IEEE EUI-64格式的接口标识符的生成方法不同,分别介绍如下:
· 所有IEEE 802接口类型(例如,以太网接口、VLAN接口):IEEE EUI-64格式的接口标识符是从接口的链路层地址(MAC地址)变化而来的。IPv6地址中的接口标识符是64位,而MAC地址是48位,因此需要在MAC地址的中间位置(从高位开始的第24位后)插入十六进制数FFFE(1111111111111110)。为了使接口标识符的作用范围与原MAC地址一致,还要将Universal/Local (U/L)位(从高位开始的第7位)进行取反操作。最后得到的这组数就作为EUI-64格式的接口标识符。
图1-2 MAC地址到EUI-64格式接口标识符的转换过程
· Tunnel接口:IEEE EUI-64格式的接口标识符的低32位为Tunnel接口的源IPv4地址,ISATAP隧道的接口标识符的高32位为0000:5EFE,其他隧道的接口标识符的高32位为全0。关于各种隧道的介绍,请参见“三层技术-IP业务配置指导”中的“隧道”。
· 其他接口类型(例如,Serial接口):IEEE EUI-64格式的接口标识符由设备随机生成。
报文从源端到目的端的传输路径中所经过的链路可能具有不同的MTU。在IPv6中,当报文的长度大于链路的MTU时,报文的分片将在源端进行,从而减轻中间转发设备的处理压力,合理利用网络资源。
PMTU(Path MTU,路径MTU)发现机制的目的就是要找到从源端到目的端的路径上最小的MTU。如图1-3所示,PMTU的工作过程为:
(1) 源端主机按照自己的MTU对报文进行分片,之后向目的主机发送报文。
(2) 中间转发设备接收到该报文进行转发时,如果发现转发报文的接口支持的MTU值小于报文长度,则会丢弃报文,并给源端返回一个ICMPv6差错报文,其中包含了转发失败的接口的MTU。
(3) 源主机收到该差错报文后,将按照报文中所携带的MTU重新对报文进行分片并发送。
如此反复,直到目的端主机收到这个报文,从而确定报文从源端到目的端路径中的最小MTU。
图1-3 PMTU发现工作过程
在IPv6成为主流协议之前,首先使用IPv6协议栈的网络希望能与当前仍被IPv4支撑着的互联网进行正常通信,因此必须开发出IPv4和IPv6互通技术以保证IPv4能够平稳过渡到IPv6。互通技术应该对信息传递做到高效无缝。目前已经出现了多种过渡技术,这些技术各有特点,用于解决不同过渡时期、不同环境的通信问题。
目前解决过渡问题的基本技术主要有4种:双协议栈(RFC 2893)、隧道技术(RFC 2893)、AFT、6PE。
双协议栈是一种最简单直接的过渡机制。同时支持IPv4协议和IPv6协议的网络节点称为双协议栈节点。当双协议栈节点配置IPv4地址和IPv6地址后,就可以在相应接口上转发IPv4和IPv6报文。当一个上层应用同时支持IPv4和IPv6协议时,根据协议要求可以选用TCP或UDP作为传输层的协议,但在选择网络层协议时,它会优先选择IPv6协议栈。双协议栈技术适合IPv4网络节点之间或者IPv6网络节点之间通信,是所有过渡技术的基础。但是,这种技术要求运行双协议栈的节点有一个全球唯一的地址,实际上没有解决IPv4地址资源匮乏的问题。
隧道是一种封装技术,它利用一种网络协议来传输另一种网络协议,即利用一种网络传输协议,将其他协议产生的数据报文封装在它自己的报文中,然后在网络中传输。关于隧道技术的详细介绍,请参见“三层技术-IP业务配置指导”中的“隧道”。
AFT(Address Family Translation,地址族转换)提供了IPv4和IPv6地址之间的相互转换功能,使IPv4网络和IPv6网络可以直接通信。AFT作用于IPv4和IPv6网络边缘设备上,所有的地址转换过程都在该设备上实现,对IPv4和IPv6网络内的用户来说是透明的,即用户不必改变目前网络中主机的配置就可实现IPv6网络与IPv4网络的通信。有关AFT的详细介绍,请参见“三层技术-IP业务配置指导”中的“AFT”。
6PE是一种过渡技术,ISP可以利用已有的IPv4骨干网为分散用户的IPv6网络提供接入能力。
6PE的主要思想是:6PE(IPv6 Provider Edge,IPv6供应商边缘)路由器将用户的IPv6路由信息转换为带有标签的IPv6路由信息,并且通过IBGP(Internal Border Gateway Protocol,内部边界网关协议)会话扩散到ISP的IPv4骨干网中。6PE路由器转发IPv6报文时,首先会将进入骨干网隧道的数据流打上标签。隧道可以是GRE隧道或者MPLS LSP等。有关6PE的详细介绍及配置请参见“三层技术-IP路由配置指导”中的“BGP”。
图1-4 6PE组网图
当ISP想利用自己原有的IPv4/MPLS网络,使其通过MPLS具有IPv6流量交换能力时,只需要升级PE路由器就可以了。所以对于运营商来说,使用6PE技术作为IPv6过渡机制无疑是一个高效的解决方案,其操作风险也会小得多。
相关的协议规范有:
· RFC 1881:IPv6 Address Allocation Management
· RFC 1887:An Architecture for IPv6 Unicast Address Allocation
· RFC 1981:Path MTU Discovery for IP version 6
· RFC 2375:IPv6 Multicast Address Assignments
· RFC 2460:Internet Protocol, Version 6 (IPv6) Specification
· RFC 2464:Transmission of IPv6 Packets over Ethernet Networks
· RFC 2526:Reserved IPv6 Subnet Anycast Addresses
· RFC 3307:Allocation Guidelines for IPv6 Multicast Addresses
· RFC 4191:Default Router Preferences and More-Specific Routes
· RFC 4291:IP Version 6 Addressing Architecture
· RFC 4443:Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification
· RFC 4862:IPv6 Stateless Address Autoconfiguration
IPv6基础配置任务如下:
(1) 配置IPv6地址
请选择以下至少一项任务进行配置:
(2) (可选)配置PMTU发现
¡ 配置接口MTU
(3) (可选)配置ICMPv6报文发送/接收功能
(4) (可选)配置路由器重编号功能
(5) (可选)开启IPv6分片报文本地重组功能
(6) (可选)配置IPv6基于带宽的负载分担
(7) (可选)关闭设备处理携带源路由选项的IPv6报文的功能
(8) (可选)开启三层报文统计功能
(9) (可选)配置接口板IPv6 FIB表项最大数目
IPv6全球单播地址可以通过下面几种方式配置:
· 采用EUI-64格式形成:当配置采用EUI-64格式形成IPv6地址时,接口的IPv6地址的前缀需要手工配置,而接口ID则由接口自动生成。
· 手工配置:用户手工配置IPv6全球单播地址。
· 引用前缀生成IPv6地址:引用前缀生成IPv6地址时,接口的IPv6地址的前缀可以通过手工配置或DHCPv6动态获取,同时该前缀还会分配给终端设备。
· 无状态自动配置:根据接收到的RA报文中携带的地址前缀信息,自动生成IPv6全球单播地址。
每个接口可以有多个全球单播地址。
手工配置的全球单播地址(包括采用EUI-64格式形成的全球单播地址)的优先级高于自动生成的全球单播地址。如果在接口已经自动生成全球单播地址的情况下,手工配置前缀相同的全球单播地址,不会覆盖之前自动生成的全球单播地址。如果删除手工配置的全球单播地址,设备还可以使用自动生成的全球单播地址进行通信。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 采用EUI-64格式形成IPv6地址。
ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } eui-64
缺省情况下,接口上未配置IPv6全球单播地址。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 手工指定IPv6地址。
ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length }
缺省情况下,接口上未配置IPv6全球单播地址。
在配置了无状态自动配置IPv6地址功能后,接口会根据接收到的RA报文中携带的地址前缀信息和接口ID,自动生成IPv6全球单播地址。如果接口是IEEE 802类型的接口(例如,以太网接口、VLAN接口),其接口ID是由MAC地址根据一定的规则生成,此接口ID具有全球唯一性。对于不同的前缀,接口ID部分始终不变,攻击者通过接口ID可以很方便的识别出通信流量是由哪台设备产生的,并分析其规律,会造成一定的安全隐患。
如果在地址无状态自动配置时,自动生成接口ID不断变化的IPv6地址,就可以加大攻击的难度,从而保护网络。为此,设备提供了临时地址功能,使得系统可以生成临时地址。配置该功能后,通过地址无状态自动配置,IEEE 802类型的接口可以同时生成两类地址:
· 公共地址:地址前缀采用RA报文携带的前缀,接口ID由MAC地址产生。接口ID始终不变。
· 临时地址:地址前缀采用RA报文携带的前缀,接口ID由系统根据MD5算法计算产生。接口ID不断变化。
在配置了优先选择临时地址功能前提下发送报文,系统将优先选择临时地址作为报文的源地址。当临时地址的有效生命期过期后,这个临时地址将被删除,同时,系统会通过MD5算法重新生成一个接口ID不同的临时地址。所以,该接口发送报文的源地址的接口ID总是在不停变化。如果生成的临时地址因为DAD冲突不可用,就采用公共地址作为报文的源地址。
临时地址的首选生命期和有效生命期的确定原则如下:
· 首选生命期是如下两个值之中的较小者:“RA前缀中的首选生命期”和“配置的临时地址首选生命期减去DESYNC_FACTOR”。DESYNC_FACTOR是一个0~600秒的随机值。
· 有效生命期是如下两个值之中的较小者:“RA前缀中的有效生命期”和“配置的临时地址有效生命期”。
如果RA报文携带的前缀长度不是64位,则该接口自动生成IPv6全球单播地址失败。
设备的接口必须启用地址无状态自动配置功能才能生成临时地址,而且临时地址不会覆盖公共地址,因此会出现一个接口下有多个前缀相同但是接口ID不同的地址。
如果公共地址生成失败,例如前缀冲突,则不会生成临时地址。
在接口上开启无状态地址自动配置功能后,接口通过无状态自动配置方式生成全球单播地址。如果通过undo ipv6 address auto命令关闭该功能,将删除该接口上所有自动生成的全球单播地址和链路本地地址。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启无状态地址自动配置功能,使接口通过无状态自动配置方式生成全球单播地址。
ipv6 address auto
缺省情况下,接口上无状态地址自动配置功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 配置系统生成临时地址。
ipv6 temporary-address [ valid-lifetime preferred-lifetime ]
缺省情况下,系统不生成临时地址。
(3) 优先选择临时地址作为报文的源地址。
ipv6 prefer temporary-address
缺省情况下,不会用临时地址作为接口发送报文的源地址。
(1) 进入系统视图。
system-view
(2) 配置IPv6前缀。请选择其中一项进行配置。
¡ 手工配置静态的IPv6前缀。
ipv6 prefix prefix-number ipv6-prefix/prefix-length
缺省情况下,未配置静态IPv6前缀。
¡ 配置设备作为DHCPv6客户端动态获取IPv6前缀,并生成指定编号的IPv6前缀。
配置方法请参见“三层技术-IP业务配置指导”中的“DHCPv6客户端”。
(3) 进入接口视图。
interface interface-type interface-number
(4) 引用前缀生成接口上的IPv6地址,并将此前缀分配给终端设备。
ipv6 address prefix-number sub-prefix/prefix-length
缺省情况下,接口上未引用前缀,也不会向终端设备分配该前缀。
IPv6的链路本地地址可以通过两种方式获得:
· 自动生成:设备根据链路本地地址前缀(FE80::/10)及接口的链路层地址,自动为接口生成链路本地地址;
· 手工指定:用户手工配置IPv6链路本地地址。
当接口配置了IPv6全球单播地址后,同时会自动生成链路本地地址。且与采用ipv6 address auto link-local命令生成的链路本地地址相同。此时如果手工指定接口的链路本地地址,则手工指定的有效。如果删除手工指定的链路本地地址,则接口的链路本地地址恢复为系统自动生成的地址。
undo ipv6 address auto link-local命令只能删除使用ipv6 address auto link-local命令生成的链路本地地址。即如果此时已经配置了IPv6全球单播地址,由于系统会自动生成链路本地地址,则接口仍有链路本地地址;如果此时没有配置IPv6全球单播地址,则接口没有链路本地地址。
每个接口只能有一个链路本地地址,为了避免链路本地地址冲突,推荐使用链路本地地址的自动生成方式。
配置链路本地地址时,手工指定方式的优先级高于自动生成方式。即如果先采用自动生成方式,之后手工指定,则手工指定的地址会覆盖自动生成的地址;如果先手工指定,之后采用自动生成的方式,则自动配置不生效,接口的链路本地地址仍是手工指定的。此时,如果删除手工指定的地址,则自动生成的链路本地地址会生效。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置自动生成链路本地地址。
ipv6 address auto link-local
缺省情况下,接口上没有链路本地地址。当接口配置了IPv6全球单播地址后,会自动生成链路本地地址。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 手工指定接口的链路本地地址。
ipv6 address ipv6-address link-local
缺省情况下,未指定接口的链路本地地址。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置IPv6任播地址。
ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length } anycast
缺省情况下,接口上未配置任播地址。
由于IPv6路由器不支持对报文进行分片,当路由器接口收到一个报文后,如果发现报文长度比转发接口的MTU值大,则会将其丢弃;同时将转发接口的MTU值通过ICMPv6报文的“Packet Too Big”消息发给源端主机,源端主机以该值重新发送IPv6报文。为减少报文被丢弃带来的额外流量开销,需要根据实际组网环境设置合适的接口MTU值。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置接口MTU。
ipv6 mtu size
缺省情况下,未配置接口上发送IPv6报文的MTU。
用户可以为指定的目的IPv6地址配置静态的PMTU值。当设备作为源端从接口发送报文时,将比较该接口的MTU与指定目的IPv6地址的静态PMTU,如果报文长度大于二者中的最小值,则采用此最小值对报文进行分片发送。发送过程中再通过“1.1.3 IPv6 PMTU发现”中的方法动态确定设备作为源端到目的端主机的PMTU值。
(1) 进入系统视图。
system-view
(2) 配置指定IPv6地址对应的静态PMTU值。
ipv6 pathmtu [ vpn-instance vpn-instance-name ] ipv6-address value
缺省情况下,未配置静态PMTU值。
通过“1.1.3 IPv6 PMTU发现”中的方法动态确定设备作为源端到目的端主机的PMTU后,设备将使用这个MTU值发送后续报文到目的端主机。当PMTU老化时间超时后,源端主机会通过PMTU机制重新确定发送报文的MTU值。
该配置对静态PMTU不起作用。
(1) 进入系统视图。
system-view
(2) 配置PMTU老化时间。
ipv6 pathmtu age age-time
缺省情况下,PMTU的老化时间是10分钟。
缺省情况下,设备接收所有类型的ICMPv6报文的功能处于开启状态,这样可能会存在安全风险。例如设备短时间内可能会收到大量的回送请求报文,影响设备性能,致使设备无法正常运行。为了提高设备的安全性,可以使用本功能,关闭设备对指定类型的ICMPv6报文的接收功能。
请用户根据实际需求使用本功能,随意关闭某类型ICMPv6报文的接收功能,可能会影响网络的正常运行。
(1) 进入系统视图。
system-view
(2) 开启接收指定类型的ICMPv6报文功能。
ipv6 icmpv6 { name name | type type code code } receive enable
缺省情况下,接收所有类型的ICMPv6报文的功能处于开启状态。
缺省情况下,设备发送多数ICMPv6报文的功能处于开启状态,这样可能会存在安全风险。例如设备发出的时间戳请求应答、掩码请求应答、网络重定向和网络不可达等报文,其携带的设备相关信息可能给设备带来安全隐患。为了提高设备的安全性,可以使用本功能,关闭设备对指定类型的ICMPv6报文的发送功能。
请用户根据实际需求使用本功能,随意关闭某类型ICMPv6报文的发送功能,可能会影响网络的正常运行。
ICMPv6目的不可达报文发送功能同时受本功能和ipv6 unreachables enable命令的控制。只要一方开启,ICMPv6目的不可达报文发送功能就处于开启状态。
ICMPv6超时报文发送功能同时受本功能和ipv6 hoplimit-expires enable命令的控制。只要一方开启,ICMPv6超时报文发送功能就处于开启状态。
ICMPv6重定向报文发送功能同时受本功能和ipv6 redirects enable命令的控制。只要一方开启,ICMPv6重定向报文发送功能就处于开启状态。
(1) 进入系统视图。
system-view
(2) 开启发送指定类型的ICMPv6报文功能。
ipv6 icmpv6 { name name | type type code code } send enable
缺省情况下,发送ICMPv6目的不可达报文、ICMPv6超时报文和ICMPv6重定向报文功能处于关闭状态,发送其它ICMPv6报文功能处于开启状态。
如果网络中短时间内发送的ICMPv6差错报文过多,将可能导致网络拥塞。为了避免这种情况,用户可以控制在指定时间内发送ICMPv6差错报文的最大个数,目前采用令牌桶算法来实现。
用户可以设置令牌桶的容量,即令牌桶中可以同时容纳的令牌数;同时可以设置令牌桶的刷新周期,即每隔多长时间发放一个令牌到令牌桶中,直到令牌桶中的令牌数达到配置的容量。一个令牌表示允许发送一个ICMPv6差错报文,每当发送一个ICMPv6差错报文,则令牌桶中减少一个令牌。如果连续发送的ICMPv6差错报文超过了令牌桶的容量,则后续的ICMPv6差错报文将不能被发送出去,直到按照所设置的刷新频率将新的令牌放入令牌桶中。
(1) 进入系统视图。
system-view
(2) 配置发送ICMPv6差错报文对应的令牌桶容量和令牌刷新周期。
ipv6 icmpv6 error-interval interval [ bucketsize ]
缺省情况下,令牌桶容量为200,令牌刷新周期为100毫秒。
刷新周期为0时,表示不限制ICMPv6差错报文的发送。
(1) 进入系统视图。
system-view
(2) 配置设备允许回复组播形式的Echo request报文。
ipv6 icmpv6 multicast-echo-reply enable
缺省情况下,不允许设备回复组播形式的Echo request报文。
ICMPv6目的不可达报文发送功能是在设备收到IPv6数据报文后,如果发生目的不可达的差错,则将报文丢弃并给源端发送ICMPv6目的不可达差错报文。
设备在满足下列任一条件时会发送目的不可达报文:
· 设备在转发报文时,如果在路由表中没有找到对应的转发路由,且路由表中没有缺省路由,则给源端发送“没有到达目的地址的路由”ICMPv6差错报文;
· 设备在转发报文时,如果是因为管理策略(例如防火墙过滤、ACL等)导致无法发送报文时,则给源端发送“与目的地址的通信被管理策略禁止”ICMPv6差错报文;
· 设备在转发报文时,如果报文的目的IPv6地址超出源IPv6地址的范围(例如,报文的源IPv6地址为链路本地地址,报文的目的IPv6地址为全球单播地址),会导致报文无法到达目的端,此时要给源端发送“超出源地址范围”ICMPv6差错报文;
· 设备在转发报文时,如果不能解析目的IPv6地址对应的链路层地址,则给源端发送“地址不可达”ICMPv6差错报文;
· 设备收到目的地址为本地、传输层协议为UDP的数据报文时,如果报文的目的端口号与正在使用的进程不匹配,则给源端发送“端口不可达”ICMPv6差错报文。
由于ICMPv6目的不可达报文传递给用户进程的信息为不可达信息,如果有用户恶意攻击,可能会影响终端用户的正常使用。为了避免上述现象发生,可以关闭设备的ICMPv6目的不可达报文发送功能,从而减少网络流量、防止遭到恶意攻击。
(1) 进入系统视图。
system-view
(2) 开启设备的ICMPv6目的不可达报文的发送功能。
ipv6 unreachables enable
缺省情况下,ICMPv6目的不可达报文发送功能处于关闭状态。
ICMPv6超时报文发送功能是在设备收到IPv6数据报文后,如果发生超时差错,则将报文丢弃并给源端发送ICMPv6超时差错报文。
设备在满足下列任一条件时会发送ICMPv6超时报文:
· 设备收到IPv6数据报文后,如果报文的目的地不是本地且报文的Hop limit字段是1,则发送“Hop limit超时”ICMPv6差错报文;
· 设备收到目的地址为本地的IPv6数据报文的第一个分片后,启动定时器,如果所有分片报文到达之前定时器超时,则会发送“重组超时”ICMPv6差错报文。
如果接收到大量需要发送ICMPv6差错报文的恶意攻击报文,设备会因为处理大量该类报文而导致性能降低。
为了避免上述现象发生,可以关闭设备的ICMPv6超时报文发送功能,从而减少网络流量、防止遭到恶意攻击。
(1) 进入系统视图。
system-view
(2) 开启设备的ICMPv6超时报文的发送功能。
ipv6 hoplimit-expires enable
缺省情况下,ICMPv6超时报文发送功能处于开启状态。
当主机启动时,它的路由表中可能只有一条到缺省网关的缺省路由。当满足一定的条件时,缺省网关会向源主机发送ICMPv6重定向报文,通知主机重新选择更好的下一跳进行后续报文的发送。
同时满足下列条件时,设备会发送ICMPv6重定向报文:
· 接收和转发数据报文的接口是同一接口;
· 被选择的路由本身没有被ICMPv6重定向报文创建或修改过;
· 被选择的路由不是设备的缺省路由;
· 被转发的IPv6数据报文中不包含路由扩展头。
ICMPv6重定向报文发送功能可以简化主机的管理,使具有很少选路信息的主机逐渐建立较完善的路由表,从而找到最佳路由。但是由于重定向功能会在主机的路由表中增加主机路由,当增加的主机路由很多时,会降低主机性能。因此缺省情况下设备的ICMPv6重定向报文发送功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 开启设备的ICMPv6重定向报文发送功能。
ipv6 redirects enable
缺省情况下,ICMPv6重定向报文发送功能处于关闭状态。
通过本命令为设备发送的ICMPv6报文指定特定的源地址(例如环回口地址),可以帮助网络管理员通过ICMPv6报文的源地址快速识别设备。
设备发送ICMPv6差错报文(TTL超时、报文过大、端口不可达和参数错误等)和ping echo request报文时,都可以通过上述命令指定报文的源地址。
用户发送ping echo request报文时,如果ping命令中已经指定源地址,则使用该源地址,否则使用ipv6 icmpv6 source配置的源地址。
(1) 进入系统视图。
system-view
(2) 开启ICMPv6报文指定源地址功能。
ipv6 icmpv6 source [ vpn-instance vpn-instance-name ] ipv6-address
缺省情况下,ICMPv6报文指定源地址功能处于关闭状态。
在IPv6网络的NQA ICMP-echo测试场景下,NQA客户端会向NQA服务器发送ICMPv6 Echo报文进行可达性测试,NQA服务器的硬件会以最低优先级回复ICMPv6 Echo报文。当NQA服务器需要转发大量高优先级报文时,硬件会因为来不及调度低优先级的ICMPv6 Echo回复报文,导致发送超时丢弃,最终使得NQA ICMP-echo测试失败。在NQA服务器上使能本功能,调高硬件转发回复的ICMPv6 Echo报文的优先级,在NQA服务器需要转发大量高优先级报文时,可以使回复的ICMPv6 Echo报文正常发送。
关于NQA ICMP-echo测试的详细信息请参见“网络管理和监控配置指导”中的“NQA”。
(1) 进入系统视图。
system-view
(2) 配置ICMPv6 Echo回复报文的硬件转发优先级。
ipv6 icmpv6 echo-reply traffic-priority priority-value
缺省情况下,硬件使用收到的ICMPv6 Echo报文中的优先级进行回复。
网络管理员可以通过一台路由器修改整个网络的前缀信息,路由器之间通过RR(Router Renumber,路由器重编号)报文的交互来控制实现。
如图1-5所示,位于上行链路的Router A可以和下行链路的Router B、Router C和Router D进行RR报文的交互,指导下行链路的路由器对本设备上配置的前缀、地址进行修改,进而修改了下行链路的路由器在自动配置过程中发送RA消息中携带的前缀信息,最后达到修改整个网络地址前缀的目的。
下行链路的路由器在接收处理RR报文前,必须在RR报文的入接口上使能路由器重编号功能。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启路由器重编号功能。
ipv6 router-renumber enable
缺省情况下,路由器重编号功能处于关闭状态。
当设备的某块单板收到目的为本设备的IPv6分片报文时,需要把分片报文送到主用主控板进行重组,这样会导致报文重组性能较低的问题。
当开启IPv6分片报文本地重组功能后,分片报文会在该单板上直接进行报文重组,这样就能提高分片报文的重组性能。
开启IPv6分片报文本地重组功能后,如果分片报文是从设备上不同的单板进入的,会导致IPv6分片报文本地无法重组成功。
(1) 进入系统视图。
system-view
(2) 开启设备的IPv6分片报文本地重组功能。
ipv6 reassemble local enable
缺省情况下,IPv6分片报文本地重组功能处于关闭状态。
在设备上配置了IPv6基于带宽的负载分担后,如果IPv6报文转发时查到多个出接口/下一跳,则按照接口的带宽值计算出各个接口应该分配的报文比例,然后按照带宽比例对报文进行转发。
支持负载分担协议(如LISP)的设备,无论是否配置了负载分担命令,负载分担比例都以协议定义的负载分担比例为准。
仅下表所列单板进入的流量支持基于带宽的负载分担功能。
表1-3 单板信息一览表
单板类型 |
单板丝印 |
CEPC单板 |
CEPC-XP4LX、CEPC-XP24LX、CEPC-XP48RX、CEPC-CP4RX、CEPC-CP4RX-L、CEPC-CQ8L、CEPC-CQ16L1 |
CSPEX单板 |
CSPEX-1304X、CSPEX-1304S、CSPEX-1404X、CSPEX-1404S、CSPEX-1502X、CSPEX-1504X、CSPEX-1504S、CSPEX-1602X、CSPEX-1804X、CSPEX-1512X、CSPEX-1612X、CSPEX-1812X、CSPEX-1802XB、CSPEX-1802X、CSPEX-1812X-E、CSPEX-2304X-G、CSPEX-2612X-E |
SPE单板 |
RX-SPE200、RX-SPE200-E |
(1) 进入系统视图。
system-view
(2) 开启IPv6基于带宽的负载分担功能。
ipv6 bandwidth-based-sharing
缺省情况下,IPv6基于带宽的负载分担功能处于关闭状态。
(3) 进入接口视图。
interface interface-type interface-number
(4) 配置接口的期望带宽值。
bandwidth bandwidth
缺省情况下,接口负载带宽为接口的物理带宽。
路由报头是IPv6扩展报文头的一种,其中可以携带源路由选项。在网络故障诊断和特定业务传输环境中,设备可能会收到携带源路由选项的IPv6报文,缺省情况下,设备会处理对应的路由选项信息。如果有网络攻击者发送携带伪造源路由选项的IPv6报文,设备收到这些IPv6报文后,会获取错误的源路由信息,将影响网络故障诊断和特定业务传输。此时,可以执行undo ipv6 option source-route enable命令关闭设备处理携带源路由选项的IPv6报文的功能。关闭本功能后,如果设备收到携带源路由选项的IPv6报文,将会直接丢弃该报文。
请在正确评估网络中存在的源路由选项攻击风险之后,再选择开启或关闭本功能。
(1) 进入系统视图。
system-view
(2) 关闭设备处理携带源路由选项的IPv6报文的功能。
undo ipv6 option source-route enable
缺省情况下,设备处理携带源路由选项的IPv6报文的功能处于开启状态。
开启本功能后,设备会对接口发送和接收的IPv4和IPv6报文进行统计,统计信息可通过display ip interface、display ip statistics、display ipv6 interface和display ipv6 statistics等命令显示。
关于display ip interface和display ip statistics命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IP地址”和“IP性能优化”。
当开启本功能,且接口下流量较大时,对大量的IPv4和IPv6报文进行统计可能会影响设备的转发性能。如果关闭本功能,则会影响相关命令显示信息的准确性。请根据需要选择开启或关闭本功能。
(1) 进入系统视图。
system-view
(2) 接入接口视图。
interface interface-type interface-number
(3) 开启三层报文统计功能。
statistics l3-packet enable
缺省情况下,三层报文统计功能处于关闭状态。
缺省情况下,接口板上的IPv6 FIB表项最大数目为整机FIB表项最大数目,通过本功能可以降低接口板IPv6 FIB表项的最大数目,以节约接口板的内存资源。
如果配置接口板上的IPv6 FIB表项最大数目大于整机FIB表项最大数目,则该配置无意义,接口板上的IPv6 FIB表项最大数目依然为整机FIB表项最大数目。
如果接口板当前IPv6 FIB表项数目已经达到本功能配置的最大数目,接口板将不再接受主控板新下发的IPv6 FIB表项,接口板原有的业务不受影响,但无法接收新的路由表项。如果主控板删除了旧FIB表项,并通知接口板也删除相应的FIB表项,使得接口板上的表项数目低于配置值后,接口板将接受主控板新下发的IPv6 FIB表项,直到表项数目达到配置值。
(1) 进入系统视图。
system-view
(2) 配置接口板IPv6 FIB表项最大数目。
ipv6 fib max-number max-number slot slot-number
缺省情况下,接口板IPv6 FIB表项最大数目与整机IPv6 FIB表项最大数目相同。
在完成上述配置后,在任意视图下执行display命令可以显示IPv6配置后的运行情况,用户可以通过查看显示信息验证配置的效果。
在用户视图下,执行reset命令可以清除相应的统计信息。
display tcp statistics、display udp statistics、reset tcp statistics和reset udp statistics命令的详细介绍请参见“三层技术-IP业务命令参考”中的“IP性能优化”。
表1-4 IPv6基础显示和维护
操作 |
命令 |
显示IPv6 FIB信息 |
(独立运行模式) display ipv6 fib [ srv6 [ end | end-dt2m | end-dt2u | end-dt2ul | end-dt4 | end-dt46 | end-dt6 | end-dx2 | end-dx2l | end-dx4 | end-dx6 | end-op | end-otp | end-t | end-x ] | [ vpn-instance vpn-instance-name ] [ ipv6-address [ prefix-length ] ] [ slot slot-number ] (IRF模式) display ipv6 fib [ srv6 [ end | end-dt2m | end-dt2u | end-dt2ul | end-dt4 | end-dt46 | end-dt6 | end-dx2 | end-dx2l | end-dx4 | end-dx6 | end-op | end-otp | end-t | end-x ] | [ vpn-instance vpn-instance-name ] [ ipv6-address [ prefix-length ] ] [ chassis chassis-number slot slot-number ] |
显示IPv6 FIB的表项计数 |
(独立运行模式) display ipv6 fib count [ all | vpn-instance vpn-instance-name ] slot slot-number (IRF模式) display ipv6 fib count [ all | vpn-instance vpn-instance-name ] chassis chassis-number slot slot-number |
显示ICMPv6流量统计信息 |
(独立运行模式) display ipv6 icmp statistics [ slot slot-number [ cpu cpu-number ] ] (IRF模式) display ipv6 icmp statistics [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示接口的IPv6信息 |
display ipv6 interface [ interface-type [ interface-number ] ] [ brief ] |
显示接口的IPv6前缀信息 |
display ipv6 interface interface-type interface-number prefix |
显示设备丢弃的携带源路由选项的IPv6报文统计信息 |
(独立运行模式) display ipv6 option source-route statistics [ slot slot-number [ cpu cpu-number ] ] (IRF模式) display ipv6 option source-route statistics [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示IPv6的PMTU信息 |
display ipv6 pathmtu [ vpn-instance vpn-instance-name ] { ipv6-address | { all | dynamic | static } [ count ] } |
显示IPv6前缀信息 |
display ipv6 prefix [ prefix-number ] |
显示IPv6 RawIP连接摘要信息 |
(独立运行模式) display ipv6 rawip [ slot slot-number [ cpu cpu-number ] ] (IRF模式) display ipv6 rawip [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示IPv6 RawIP连接详细信息 |
(独立运行模式) display ipv6 rawip verbose [ slot slot-number [ cpu cpu-number ] [ pcb pcb-index ] ] (IRF模式) display ipv6 rawip verbose [ chassis chassis-number slot slot-number [ cpu cpu-number ] [ pcb pcb-index ] ] |
显示路由器重编号的统计信息 |
display ipv6 router-renumber statistics |
显示IPv6报文及ICMPv6报文的统计信息 |
(独立运行模式) display ipv6 statistics [ slot slot-number [ cpu cpu-number ] ] (IRF模式) display ipv6 statistics [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示IPv6 TCP连接摘要信息 |
(独立运行模式) display ipv6 tcp [ slot slot-number [ cpu cpu-number ] ] (IRF模式) display ipv6 tcp [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示IPv6 TCP连接详细信息 |
(独立运行模式) display ipv6 tcp verbose [ slot slot-number [ cpu cpu-number ] [ pcb pcb-index ] ] (IRF模式) display ipv6 tcp verbose [ chassis chassis-number slot slot-number [ cpu cpu-number ] [ pcb pcb-index ] ] |
显示IPv6 TCP代理连接的简要信息 |
(独立运行模式) display ipv6 tcp-proxy slot slot-number [ cpu cpu-number ] (IRF模式) display ipv6 tcp-proxy chassis chassis-number slot slot-number [ cpu cpu-number ] |
显示IPv6 TCP代理非保留端口的使用信息 |
(独立运行模式) display ipv6 tcp-proxy port-info slot slot-number [ cpu cpu-number ] (IRF模式) display ipv6 tcp-proxy port-info chassis chassis-number slot slot-number [ cpu cpu-number ] |
显示IPv6 UDP连接摘要信息 |
(独立运行模式) display ipv6 udp [ slot slot-number [ cpu cpu-number ] ] (IRF模式) display ipv6 udp [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示IPv6 UDP连接详细信息 |
(独立运行模式) display ipv6 udp verbose [ slot slot-number [ cpu cpu-number ] [ pcb pcb-index ] ] (IRF模式) display ipv6 udp verbose [ chassis chassis-number slot slot-number [ cpu cpu-number ] [ pcb pcb-index ] ] |
显示IPv6 TCP连接的流量统计信息 |
(独立运行模式) display tcp statistics [ slot slot-number [ cpu cpu-number ] ] (IRF模式) display tcp statistics [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示IPv6 UDP流量统计信息 |
(独立运行模式) display udp statistics [ slot slot-number [ cpu cpu-number ] ] (IRF模式) display udp statistics [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
清除设备丢弃的携带源路由选项的IPv6报文统计信息 |
reset ipv6 option source-route statistics |
清除PMTU值 |
reset ipv6 pathmtu { all | dynamic | static } |
清除路由器重编号的统计信息 |
reset ipv6 router-renumber statistics |
清除IPv6报文及ICMPv6报文的统计信息 |
(独立运行模式) reset ipv6 statistics [ slot slot-number [ cpu cpu-number ] ] (IRF模式) reset ipv6 statistics [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
清除IPv6 TCP连接的流量统计信息 |
reset tcp statistics |
清除IPv6 UDP流量统计信息 |
reset udp statistics |
如需统计display ipv6 interface命令显示信息中“IPv6 Packet statistics”相关字段的值或display ipv6 statistics命令显示信息中所有字段的值,请配置statistics l3-packet enable命令;如果不需要统计,则不需要配置,以免影响设备性能。
· 如图1-6所示,Host、Router A和Router B之间通过以太网接口相连,在接口上配置IPv6地址,验证它们之间的互通性。
· Router B有可以到Host的路由。
· 在Host上安装IPv6,根据IPv6邻居发现协议自动配置IPv6地址,有可以到Router B的路由。
(1) 配置Router A
# 手工指定接口Ten-GigabitEthernet3/1/1的全球单播地址。
<RouterA> system-view
[RouterA] interface ten-gigabitethernet 3/1/1
[RouterA-Ten-GigabitEthernet3/1/1] ipv6 address 3001::1/64
[RouterA-Ten-GigabitEthernet3/1/1] quit
# 手工指定接口Ten-GigabitEthernet3/1/2的全球单播地址,并允许其发布RA消息。(缺省情况下,所有的接口不会发布RA消息)
[RouterA] interface ten-gigabitethernet 3/1/2
[RouterA-Ten-GigabitEthernet3/1/2] ipv6 address 2001::1/64
[RouterA-Ten-GigabitEthernet3/1/2] undo ipv6 nd ra halt
[RouterA-Ten-GigabitEthernet3/1/2] quit
(2) 配置Router B
# 手工指定接口Ten-GigabitEthernet3/1/1的全球单播地址。
<RouterB> system-view
[RouterB] interface ten-gigabitethernet 3/1/1
[RouterB-Ten-GigabitEthernet3/1/1] ipv6 address 3001::2/64
[RouterB-Ten-GigabitEthernet3/1/1] quit
# 配置IPv6静态路由,该路由的目的地址为2001::/64,下一跳地址为3001::1。
[RouterB] ipv6 route-static 2001:: 64 3001::1
(3) 配置Host
在Host上安装IPv6,根据IPv6邻居发现协议自动配置IPv6地址。
# 从Router A上查看接口Ten-GigabitEthernet3/1/2的邻居信息。
[RouterA] display ipv6 neighbors interface ten-gigabitethernet 3/1/2
Type: S-Static D-Dynamic O-Openflow R-Rule IS-Invalid static
IPv6 address MAC address VLAN/VSI Interface State T Aging
FE80::215:E9FF:FEA6:7D14 0015-e9a6-7d14 -- XGE3/1/2 STALE D 1238
2001::15B:E0EA:3524:E791 0015-e9a6-7d14 -- XGE3/1/2 STALE D 1248
通过上面的信息可以知道Host上获得的IPv6全球单播地址为2001::15B:E0EA:3524:E791。
# 显示Router A的接口信息,可以看到各接口配置的IPv6全球单播地址。
[RouterA] display ipv6 interface ten-gigabitethernet 3/1/1
Ten-GigabitEthernet3/1/1 current state: UP
Line protocol current state: UP
IPv6 is enabled, link-local address is FE80::20F:E2FF:FE00:2
Global unicast address(es):
3001::1, subnet is 3001::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:FF00:1
FF02::1:FF00:2
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 1200000 milliseconds
ND retransmit interval is 1000 milliseconds
Hosts use stateless autoconfig for addresses
IPv6 Packet statistics:
InReceives: 25829
InTooShorts: 0
InTruncatedPkts: 0
InHopLimitExceeds: 0
InBadHeaders: 0
InBadOptions: 0
ReasmReqds: 0
ReasmOKs: 0
InFragDrops: 0
InFragTimeouts: 0
OutFragFails: 0
InUnknownProtos: 0
InDelivers: 47
OutRequests: 89
OutForwDatagrams: 48
InNoRoutes: 0
InTooBigErrors: 0
OutFragOKs: 0
OutFragCreates: 0
InMcastPkts: 6
InMcastNotMembers: 25747
OutMcastPkts: 48
InAddrErrors: 0
InDiscards: 0
OutDiscards: 0
[RouterA] display ipv6 interface ten-gigabitethernet 3/1/2
Ten-GigabitEthernet3/1/2 current state: UP
Line protocol current state: UP
IPv6 is enabled, link-local address is FE80::20F:E2FF:FE00:1C0
Global unicast address(es):
2001::1, subnet is 2001::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:FF00:1
FF02::1:FF00:1C0
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 1200000 milliseconds
ND retransmit interval is 1000 milliseconds
ND advertised reachable time is 0 milliseconds
ND advertised retransmit interval is 0 milliseconds
ND router advertisements are sent every 600 seconds
ND router advertisements live for 1800 seconds
Hosts use stateless autoconfig for addresses
IPv6 Packet statistics:
InReceives: 272
InTooShorts: 0
InTruncatedPkts: 0
InHopLimitExceeds: 0
InBadHeaders: 0
InBadOptions: 0
ReasmReqds: 0
ReasmOKs: 0
InFragDrops: 0
InFragTimeouts: 0
OutFragFails: 0
InUnknownProtos: 0
InDelivers: 159
OutRequests: 1012
OutForwDatagrams: 35
InNoRoutes: 0
InTooBigErrors: 0
OutFragOKs: 0
OutFragCreates: 0
InMcastPkts: 79
InMcastNotMembers: 65
OutMcastPkts: 938
InAddrErrors: 0
InDiscards: 0
OutDiscards: 0
# 显示Router B的接口信息,可以看到接口配置的IPv6全球单播地址。
[RouterB] display ipv6 interface ten-gigabitethernet 3/1/1
Ten-GigabitEthernet3/1/1 current state: UP
Line protocol current state: UP
IPv6 is enabled, link-local address is FE80::20F:E2FF:FE00:1234
Global unicast address(es):
3001::2, subnet is 3001::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:FF00:2
FF02::1:FF00:1234
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 1200000 milliseconds
ND retransmit interval is 1000 milliseconds
Hosts use stateless autoconfig for addresses
IPv6 Packet statistics:
InReceives: 117
InTooShorts: 0
InTruncatedPkts: 0
InHopLimitExceeds: 0
InBadHeaders: 0
InBadOptions: 0
ReasmReqds: 0
ReasmOKs: 0
InFragDrops: 0
InFragTimeouts: 0
OutFragFails: 0
InUnknownProtos: 0
InDelivers: 117
OutRequests: 83
OutForwDatagrams: 0
InNoRoutes: 0
InTooBigErrors: 0
OutFragOKs: 0
OutFragCreates: 0
InMcastPkts: 28
InMcastNotMembers: 0
OutMcastPkts: 7
InAddrErrors: 0
InDiscards: 0
OutDiscards: 0
# 在Host上使用Ping测试和Router A及Router B的互通性;在Router B上使用Ping测试和Router A及Host的互通性。
在Ping链路本地地址时,需要使用-i参数,来指定链路本地地址的接口。
[RouterB] ping ipv6 -c 1 3001::1
Ping6(56 data bytes) 3001::2 --> 3001::1, press CTRL+C to break
56 bytes from 3001::1, icmp_seq=0 hlim=64 time=4.404 ms
--- Ping6 statistics for 3001::1 ---
1 packet(s) transmitted, 1 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 4.404/4.404/4.404/0.000 ms
[RouterB] ping ipv6 -c 1 2001::15B:E0EA:3524:E791
Ping6(56 data bytes) 3001::2 --> 2001::15B:E0EA:3524:E791, press CTRL+C to break
56 bytes from 2001::15B:E0EA:3524:E791, icmp_seq=0 hlim=64 time=5.404 ms
--- Ping6 statistics for 2001::15B:E0EA:3524:E791 ---
1 packet(s) transmitted, 1 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 5.404/5.404/5.404/0.000 ms
从Host上也可以ping通Router B和Router A,证明它们是互通的。
IPv6 ND(IPv6 Neighbor Discovery,IPv6邻居发现)协议使用五种类型的ICMPv6消息,实现下面一些功能:地址解析、验证邻居是否可达、重复地址检测、路由器发现/前缀发现、地址自动配置和重定向等。
邻居发现协议使用的ICMPv6消息的类型及作用如表2-1所示。
表2-1 邻居发现协议使用的ICMPv6消息类型及作用
ICMPv6消息 |
类型号 |
作用 |
邻居请求消息NS(Neighbor Solicitation) |
135 |
获取邻居的链路层地址 |
验证邻居是否可达 |
||
进行重复地址检测 |
||
邻居通告消息NA(Neighbor Advertisement) |
136 |
对NS消息进行响应 |
节点在链路层变化时主动发送NA消息,向邻居节点通告本节点的变化信息 |
||
路由器请求消息RS(Router Solicitation) |
133 |
节点启动后,通过RS消息向路由器发出请求,请求前缀和其他配置信息,用于节点的自动配置 |
路由器通告消息RA(Router Advertisement) |
134 |
对RS消息进行响应 |
在没有抑制RA消息发布的条件下,路由器会周期性地发布RA消息,其中包括前缀信息选项和一些标志位的信息 |
||
重定向消息(Redirect) |
137 |
当满足一定的条件时,缺省网关通过向源主机发送重定向消息,使主机重新选择正确的下一跳地址进行后续报文的发送 |
设备会丢弃收到的TTL值不为255的NS/NA/RS/RA报文。
获取同一链路上邻居节点的链路层地址(与IPv4的ARP功能相同),通过邻居请求消息NS和邻居通告消息NA实现。如图2-1所示,节点A要获取节点B的链路层地址的过程为:
(1) 节点A以组播方式发送NS消息。NS消息的源地址是节点A的接口IPv6地址,目的地址是节点B的被请求节点组播地址,消息内容中包含了节点A的链路层地址和请求的目标地址。
(2) 节点B收到NS消息后,判断报文的目标地址是否为自己的IPv6地址。如果是,则节点B可以学习到节点A的链路层地址,并以单播方式返回NA消息,其中包含了自己的链路层地址。
(3) 节点A从收到的NA消息中就可获取到节点B的链路层地址。
在获取到邻居节点的链路层地址后,通过邻居请求消息NS和邻居通告消息NA可以验证邻居节点是否可达。
(1) 节点发送NS消息,其中目的地址是邻居节点的IPv6地址。
(2) 如果收到邻居节点的确认报文,则认为邻居可达;否则,认为邻居不可达。
当节点获取到一个IPv6地址后,需要使用重复地址检测功能确定该地址是否已被其他节点使用(与IPv4的免费ARP功能相似)。如图2-2所示,通过NS和NA实现重复地址检测的过程为:
(1) 节点A发送NS消息,NS消息的源地址是未指定地址::,目的地址是待检测的IPv6地址对应的被请求节点组播地址,消息内容中包含了待检测的IPv6地址。
(2) 如果节点B已经使用这个IPv6地址,则会返回NA消息。其中包含了自己的IPv6地址。
(3) 节点A收到节点B发来的NA消息,就知道该IPv6地址已被使用。反之,则说明该地址未被使用,节点A就可使用此IPv6地址。
路由器发现/前缀发现是指节点从收到的RA消息中获取邻居路由器及所在网络的前缀,以及其他配置参数。
地址无状态自动配置是指节点根据路由器发现/前缀发现所获取的信息,自动配置IPv6地址。
路由器发现/前缀发现通过路由器请求消息RS和路由器通告消息RA来实现,具体过程如下:
(1) 节点启动时,通过RS消息向路由器发出请求,请求前缀和其他配置信息,以便用于节点的配置。
(2) 路由器返回RA消息,其中包括前缀信息选项(路由器也会周期性地发布RA消息)。
(3) 节点利用路由器返回的RA消息中的地址前缀及其他配置参数,自动配置接口的IPv6地址及其他信息。
前缀信息选项中不仅包括地址前缀的信息,还包括该地址前缀的首选生命期(preferred lifetime)和有效生命期(valid lifetime)。节点收到周期性发送的RA消息后,会根据该消息更新前缀的首选生命期和有效生命期。
· 有效生命期:表示前缀有效期。在有效生命期内,通过该前缀自动生成的地址可以正常使用;有效生命期过期后,通过该前缀自动生成的地址变为无效,将被删除。
· 首选生命期:表示首选通过该前缀无状态自动配置地址的时间。首选生命期过期后,节点通过该前缀自动配置的地址将被废止。节点不能使用被废止的地址建立新的连接,但是仍可以接收目的地址为被废止地址的报文。首选生命期必须小于或等于有效生命期。
当主机启动时,它的路由表中可能只有一条到缺省网关的缺省路由。当满足一定的条件时,缺省网关会向源主机发送ICMPv6重定向消息,通知主机选择更好的下一跳进行后续报文的发送(与IPv4的ICMP重定向消息的功能相同)。
同时满足下列条件时,设备会发送ICMPv6重定向报文:
· 接收和转发数据报文的接口是同一接口;
· 被选择的路由本身没有被ICMPv6重定向报文创建或修改过;
· 被选择的路由不是设备的缺省路由;
· 被转发的IPv6数据报文中不包含路由扩展头。
相关的协议规范有:
· RFC 4861:Neighbor Discovery for IP Version 6 (IPv6)
· RFC 8106:IPv6 Router Advertisement Options for DNS Configuration
本节中的所有配置均为可选,请根据实际情况选择配置。
· 配置静态邻居表项
邻居表项保存的是设备在链路范围内的邻居信息,设备邻居表项可以通过邻居请求消息NS及邻居通告消息NA来动态创建,也可以通过手工配置来静态创建。
设备根据邻居节点的IPv6地址和与此邻居节点相连的三层接口号来唯一标识一个静态邻居表项。目前,静态邻居表项有如下几种配置方式:
· 配置本节点的三层接口相连的邻居节点的IPv6地址和链路层地址;
· 配置本节点VLAN中的二层端口相连的邻居节点的IPv6地址和链路层地址。
· 配置本节点相连的邻居节点的IPv6地址、对应的MAC地址、入接口(VSI虚接口)、出接口(Tunnel口)以及VSI的名称。
· 配置本节点相连的邻居节点的IPv6地址、对应的MAC地址、入接口(VSI虚接口)、出接口(由二层接口结合对应二层接口上的以太网服务实例确定)以及VSI的名称。
对于VLAN接口,可以采用前两种方式来配置静态邻居表项:
· 采用第一种方式配置静态邻居表项后,设备还需要解析该VLAN下的二层端口信息。
· 采用第二种方式配置静态邻居表项后,需要保证port-type port-number指定的二层端口属于vlan-id指定的VLAN,且该VLAN已经创建了VLAN接口。在配置后,设备会将VLAN所对应的VLAN接口与IPv6地址相对应来唯一标识一个静态邻居表项。
对于邻居节点相连的三层接口为VSI虚接口时,可以采用后两种方式来配置静态邻居表项:
· 采用第三种方式配置静态邻居表项后,该邻居表项处于REACH状态。用于VXLAN网关通过Tunnel口相连的组网中,VSI和VSI虚接口共同确定一个VXLAN网关,且一个VSI虚接口会对应多个Tunnel接口。所以,配置静态邻居表项时,需要指定VSI虚接口、VSI和Tunnel口之间的对应关系。
· 采用第四种方式配置静态邻居表项后,该邻居表项处于REACH状态。用于VXLAN网关关联的本地站点,VSI和VSI虚接口共同确定一个VXLAN网关,一个VXLAN网关下可能存在多个本地站点,本地站点通过以太网服务实例和VSI相关联。所以,配置静态邻居表项时,需要指定VSI虚接口、连接本地站点的二层以太网接口、以太网服务实例和VSI之间的对应关系。
有关VSI、VSI虚接口和以太网服务实例的详细介绍,请参见“VXLAN配置指导”中的“VXLAN概述”。
有关Tunnel口的详细介绍,请参见“三层技术-IP业务配置指导”中的“隧道”。
在删除VSI虚接口对应的静态邻居表项时,只需要指定VSI对应的VSI虚接口即可。
在删除VLAN接口对应的静态邻居表项时,只需要指定VLAN对应的VLAN接口即可。
执行undo ipv6 neighbor命令既可以删除静态邻居表项,也可以删除动态邻居表项。
(1) 进入系统视图。
system-view
(2) 配置静态邻居表项。
ipv6 neighbor ipv6-address mac-address { vlan-id port-type port-number | interface interface-type interface-number | vsi-interface vsi-interface-id tunnel number vsi vsi-name | vsi-interface vsi-interface-id interface-type interface-number service-instance instance-id vsi vsi-name } [ vpn-instance vpn-instance-name ]
缺省情况下,未配置静态邻居表项。
设备可以通过NS消息和NA消息来动态获取邻居节点的链路层地址,并将其加入到邻居表中。为了防止部分接口下的用户占用过多的资源,可以配置允许动态学习的邻居的最大个数。动态学习的邻居的个数的限制方式分为两种:
· 接口上允许动态学习的邻居的最大个数,当接口学习到的动态邻居表项的个数达到所设置的最大值时,该接口将不再学习动态邻居表项。
· 设备上允许动态学习的邻居的最大个数,当设备学习到的动态邻居表项的个数达到所设置的最大值时,该设备将不再学习动态邻居表项。
设备各接口学习的动态邻居表项之和不会超过该设备学习动态邻居表项的最大数目,如果超过了则以设备学习动态邻居表项的最大数目为准。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置接口上允许学习的动态邻居表项的最大个数。
ipv6 neighbors max-learning-num max-number
缺省情况下,接口上允许学习的动态邻居表项的最大个数为524288。
(1) 进入系统视图。
system-view
(2) 配置设备上允许动态学习的邻居的最大个数。
(独立运行模式)
ipv6 neighbors max-learning-number max-number slot slot-number [ cpu cpu-number ]
(IRF模式)
ipv6 neighbors max-learning-number max-number chassis chassis-number slot slot-number [ cpu cpu-number ]
缺省情况下,设备允许学习的动态邻居表项的最大个数为524288。
当配置设备允许学习动态邻居表项的最大数目为0时,表示禁止本设备学习动态邻居表项。
在一些组网中,为了保证网络的冗余链路备份,服务器会发送NA报文给两台对端设备,此时因为不关注对端的地址,所以发送的是组播NA,设备无法从组播NA中学习ND表项。所以在没有服务器对端到服务器的IPv6流量,且服务器没有逐个发送单播给对端设备的情况下,对端设备无法学习到服务器的ND表项。
配置本功能后,接口可以从未经请求而收到的NA报文中学习邻居信息,学习到的表项状态为STALE,因此建议本功能仅在信任网络内开启。
为防止设备上学习过多的ND表项,占用系统资源,建议开启本功能前,通过ipv6 neighbor stale-aging命令配置较小的STALE老化时间,加速老化无效的ND表项。
本功能仅支持在三层接口视图下开启。
(1) 进入系统视图。
system-view
(2) 进入三层接口视图。
interface interface-type interface-number
(3) 开启接口从未经请求的NA报文中学习邻居信息的功能。
ipv6 nd unsolicited-na-learning enable
缺省情况下,接口不学习未经请求的NA报文中的邻居信息到ND表项中。
开启ND跨网段学习功能后,当接口收到与自己不在同一网段其他节点的NS报文时,系统会返回NA报文并在转发表中生成一条前缀长度为128位的主机路由。如果接口上同时开启了uRPF检查,则该节点向接口发送报文时,会因为报文的源IP地址在转发表中不存在匹配的单播路由而导致报文无法通过松散型uRPF检查。因此,为了避免跨网段节点的报文被uRPF检查丢弃,建议关闭ND跨网段学习功能。关于uRPF的详细介绍请参见“安全配置指导”中的“uRPF”。
用户可在系统视图下开启或关闭设备所有接口的ND跨网段学习功能,或在接口视图下开启或关闭对应接口的ND跨网段学习功能。全局ND跨网段学习功能处于关闭状态的情况下,无法单独开启某接口上的ND跨网段学习功能。
关闭ND跨网段学习功能后,接口只能够学习同网段的ND表项。
(1) 进入系统视图。
system-view
(2) 开启ND跨网段学习功能。
ipv6 nd span-segment-learning enable
缺省情况下,全局上的ND跨网段学习功能处于关闭状态。
关闭ND跨网段学习功能会删除已学习的跨网段ND表项,导致已有的跨网段流量断开。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启ND跨网段学习功能。
ipv6 nd span-segment-learning enable
缺省情况下,接口上的ND跨网段学习功能处于关闭状态。
关闭ND跨网段学习功能会删除已学习的跨网段ND表项,导致已有的跨网段流量断开。
为适应网络的变化,ND表需要不断更新。在ND表中,处于STALE状态的ND表项并非永远有效,而是有一个老化时间。到达老化时间的STALE状态ND表项将迁移到DELAY状态。5秒钟后DELAY状态超时,ND表项将迁移到PROBE状态,并且设备会发送3次NS报文进行可达性探测。若邻居已经下线,则收不到回应的NA报文,此时设备会将该ND表项删除。用户可以根据网络实际情况调整老化时间。
(1) 进入系统视图。
system-view
(2) 配置STALE状态ND表项的老化时间。
ipv6 neighbor stale-aging aging-time
缺省情况下,STALE状态ND表项的老化时间为240分钟。
本功能可以对链路本地ND表项(该ND表项的IPv6地址为链路本地地址)占用的资源进行优化。
缺省情况下,所有ND表项均会下发硬件表项。配置本功能后,新学习的、未被引用的链路本地ND表项(该ND表项的链路本地地址不是某条路由的下一跳)不下发硬件表项,以节省资源。
本功能只对后续新学习的ND表项生效,已经存在的ND表项不受影响。
(1) 进入系统视图。
system-view
(2) 配置链路本地ND表项资源占用最小化。
ipv6 neighbor link-local minimize
缺省情况下,所有ND表项均会下发硬件表项。
本功能可以对设备发送的IPv6数据报文的跳数(即IPv6数据报文的Hop Limit字段的值)进行配置。
(1) 进入系统视图。
system-view
(2) 配置设备的跳数限制。
ipv6 hop-limit value
缺省情况下,设备的跳数限制为64跳。
用户可以根据实际情况,配置接口是否发送RA消息及发送RA消息的时间间隔,同时可以配置RA消息中的相关参数以通告给主机。当主机接收到RA消息后,就可以采用这些参数进行相应操作。可以配置的RA消息中的参数及含义如表2-2所示。
表2-2 RA消息中的参数及描述
参数 |
描述 |
跳数限制(Hop Limit) |
在RA消息中发布本设备的跳数限制,收到该RA消息之后,主机在发送IPv6报文时,将使用该跳数值填充IPv6报文头中的Hop Limit字段。 |
前缀信息(Prefix Information) |
在同一链路上的主机收到设备发布的前缀信息后,可以进行无状态自动配置等操作。 |
MTU |
发布链路的MTU,可以用于确保同一链路上的所有节点采用相同的MTU值。 |
被管理地址配置标志位(M flag) |
用于确定主机是否采用有状态自动配置获取IPv6地址。 如果设置该标志位为1,主机将通过有状态自动配置(例如DHCPv6服务器)来获取IPv6地址;否则,主机可以通过无状态自动配置获取IPv6地址。 |
其他信息配置标志位(O flag) |
用于确定主机是否采用有状态自动配置获取除IPv6地址外的其他信息。 如果设置其他信息配置标志位为1,主机将通过有状态自动配置(例如DHCPv6服务器)来获取除IPv6地址外的其他信息;否则,主机可以通过无状态自动配置获取其他信息。 |
路由器生存时间(Router Lifetime) |
用于设置发布RA消息的路由器作为主机的默认路由器的时间。主机根据接收到的RA消息中的路由器生存时间参数值,就可以确定是否将发布该RA消息的路由器作为默认路由器。发布RA消息中路由器生存时间为0的路由器不能作为默认路由器。 |
邻居请求消息重传时间间隔(Retrans Timer) |
设备发送NS消息后,如果未在指定的时间间隔内收到响应,则会重新发送NS消息。 |
保持邻居可达状态的时间(Reachable Time) |
当通过邻居可达性检测确认邻居可达后,在所设置的可达时间内,设备认为邻居可达;超过设置的时间后,如果需要向邻居发送报文,会重新确认邻居是否可达。 |
配置路由优先级(Router Preference) |
用于设置发布RA消息的路由器的路由器优先级,主机根据接收到的RA消息中的路由器优先级,可以选择优先级最高的路由器作为默认网关。在路由器的优先级相同的情况下,遵循“先来先用”的原则,优先选择先接收到的RA消息对应的发送路由器作为默认网关。 |
DNS服务器信息(DNS Server) |
用于设置RA消息中的DNS服务器信息。主机通过接收到的RA消息便能够获取DNS服务器信息,不需再通过DHCPv6方式获取 |
DNS域名后缀信息(DNS Search List) |
用于设置RA消息中的DNS域名后缀信息。主机通过接收到的RA消息便能够获取DNS域名后缀信息,不需再通过DHCPv6方式获取 |
RA消息发布的最大间隔时间应该小于或等于RA消息中路由器的生存时间,以保证在路由器失效之前得到更新的RA消息。
在接口上配置的邻居请求消息重传时间间隔及保持邻居可达状态的时间,既可作为RA消息中的信息发布给主机,也可作为本接口发送邻居请求消息的时间间隔及保持邻居可达状态的时间。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 取消对RA消息发布的抑制。
undo ipv6 nd ra halt
缺省情况下,抑制发布RA消息。
(4) 配置RA消息发布的最大时间间隔和最小时间间隔。
ipv6 nd ra interval max-interval-value min-interval-value
缺省情况下,RA消息发布的最大间隔时间为600秒,最小时间间隔为200秒。
接口将在最大时间间隔与最小时间间隔之间随机选取一个值来发布RA消息。
配置的最小时间间隔应该小于等于最大时间间隔的0.75倍。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置RA消息中的前缀信息。
ipv6 nd ra prefix { ipv6-prefix prefix-length | ipv6-prefix/prefix-length } [ valid-lifetime preferred-lifetime [ no-autoconfig | off-link ] * | no-advertise ]
缺省情况下,未配置RA消息中的前缀信息,此时将使用发送RA消息的接口IPv6地址作为RA消息中的前缀信息,其手工配置地址的有效生命期是2592000秒(30天),首选生命期是604800(7天);其他自动分配地址(如DHCPv6分配地址)的有效生命期和首选生命期与地址本身的生命期相同。
(4) 配置通过RA消息发布的前缀使用的缺省参数。
ipv6 nd ra prefix default [ valid-lifetime preferred-lifetime [ no-autoconfig | off-link ] * | no-advertise ]
缺省情况下,未配置通过RA消息发布的前缀使用的缺省参数。
(5) 配置RA消息中不携带MTU选项。
ipv6 nd ra no-advlinkmtu
缺省情况下,RA消息中携带MTU选项。
(6) 配置RA消息中不指定跳数限制。
ipv6 nd ra hop-limit unspecified
缺省情况下,RA消息中发布本设备的跳数限制。
(7) 设置被管理地址配置标志位为1。
ipv6 nd autoconfig managed-address-flag
缺省情况下,被管理地址标志位为0,即主机可以通过无状态自动配置获取IPv6地址。
(8) 设置其他配置标志位为1。
ipv6 nd autoconfig other-flag
缺省情况下,其他配置标志位为0,即主机可以通过无状态自动配置获取其他信息。
(9) 配置RA消息中路由器的生存时间。
ipv6 nd ra router-lifetime time
缺省情况下,RA消息中路由器的生存时间为RA消息发布的最大时间间隔的3倍。
(10) 配置邻居请求消息重传时间间隔。
ipv6 nd ns retrans-timer value
缺省情况下,接口发送NS消息的时间间隔为1000毫秒;接口发布的RA消息中Retrans Timer字段的值为0,即不对主机进行指定。
(11) 配置RA消息中路由器的优先级。
ipv6 nd router-preference { high | low | medium }
缺省情况下,RA消息中路由器的优先级为medium。
(12) 配置保持邻居可达状态的时间。
ipv6 nd nud reachable-time time
缺省情况下,接口保持邻居可达状态的时间为1200000毫秒;接口发布的RA消息中Reachable Timer字段的值为0,即不对主机进行指定。
RA消息中携带DNS服务器选项,可为主机提供DNS服务器信息。当主机通过无状态地址自动配置获取IPv6地址的同时,能够获取DNS服务器信息,不需再通过DHCPv6方式获取。
一条DNS服务器信息对应RA消息中的一个DNS服务器选项。选项按照配置序列号进行排列,序列号小的排在前面。
执行ipv6 nd ra dns server命令后,立即发送RA报文,报文中携带新配置的以及之前配置的DNS服务器信息。执行undo ipv6 nd ra dns server命令后,立即发送两个RA报文,第一个报文携带所有DNS服务器信息,包括被删除的DNS服务器,其生存时间为0;第二个报文携带剩余的DNS服务器信息。发送RA报文后,会立即刷新接口下RA消息发布的时间间隔。
转发与控制分离场景下,本功能不生效。
同一个接口下最多可配置8条DNS服务器信息。
如果没有配置DNS服务器的生存时间,也未指定DNS服务器的生存时间为无限期,则DNS服务器的生存时间为3*RA消息发布的最大时间间隔,RA消息发布的最大时间间隔可以通过ipv6 nd ra interval命令配置。
对于PPP ND RA应用场景以及IPoE中的IPv6 ND RS接入用户,DNS服务器地址可以通过AAA授权获取,此时,也是通过RA报文将IPv6 DNS服务器地址分配给终端用户。若AAA为终端用户授权了IPv6 DNS服务器地址,也使用本命令配置了DNS服务器地址,则在RA报文中AAA授权的IPv6 DNS服务器选项排在最前面,和本命令配置的DNS服务器选项一起通过RA报文发送出去;如果AAA授权的DNS服务器地址和本命令配置的DNS服务器地址冲突,则以AAA授权为准。
关于PPP支持IPv6的详细介绍请参见“二层技术-广域网接入配置指导”中的“PPP”。
关于IPoE中的IPv6 ND RS接入用户的详细介绍请参见“BRAS业务配置指导”中的“IPoE”。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置RA消息中的DNS服务器信息。
ipv6 nd ra dns server ipv6-address [ seconds | infinite ] sequence seqno
缺省情况下,未配置RA消息中的DNS服务器信息,RA消息中不带DNS服务器信息。
RA消息中携带DNSSL(DNS Search List,DNS查询列表)选项,可为主机提供域名后缀信息。当主机通过无状态地址自动配置获取IPv6地址的同时,能够获取域名后缀信息,不需再通过DHCPv6方式获取。
一条DNS域名后缀信息对应RA消息中的一个DNSSL选项。选项按照配置序列号进行排列,序列号小的排在前面。
执行ipv6 nd ra dns search-list命令后,立即发送RA报文,报文中携带新配置的以及之前配置的DNS域名后缀信息。执行undo ipv6 nd ra dns search-list命令后,立即发送两个RA报文,第一个报文携带所有域名后缀信息,包括被删除的DNS域名后缀,其生存时间为0;第二个报文携带剩余的域名后缀信息。发送RA报文后,会立即刷新接口下RA消息发布的时间间隔。
同一个接口下最多可配置8条DNS域名后缀信息。
如果没有配置DNS域名后缀的生存时间,也未指定DNS域名后缀的生存时间为无限期,则DNS域名后缀的生存时间为3*RA消息发布的最大时间间隔,RA消息发布的最大时间间隔可以通过ipv6 nd ra interval命令配置。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置RA消息中的DNS域名后缀信息。
ipv6 nd ra dns search-list domain-name [ seconds | infinite ] sequence seqno
缺省情况下,未配置RA消息中的DNS域名后缀信息,RA消息中不带DNS域名后缀信息。
配置RA消息中的DNS信息(包括DNS服务器信息和DNS域名后缀信息)后,如果希望RA消息不发布DNS信息,可以开启相应的抑制功能。
开启RA消息中的DNS服务器信息抑制功能后:
· 若接口下已经配置了DNS服务器信息或者已经通过AAA授权了DNS服务器地址,则立即发送两个RA报文,第一个报文携带DNS服务器的生存时间为0,第二个报文不携带DNS服务器信息。
· 若接口下未配置DNS服务器信息且未通过AAA授权DNS服务器地址,则不发送RA报文。
· 若接口下配置了新的DNS服务器信息或者删除了一条DNS服务器信息,则立即发送RA报文,但是不携带任何DNS服务器信息。
关闭RA消息中的DNS服务器信息抑制功能后:
· 若接口下已经配置了DNS服务器信息或者已经通过AAA授权了DNS服务器地址,则立即发送RA报文,携带DNS服务器信息。
· 若接口下未配置DNS服务器信息且未通过AAA授权DNS服务器地址,则不发送RA报文。
发送RA报文后,会立即刷新接口下RA消息发布的时间间隔。
开启、关闭RA消息中的DNS域名后缀信息抑制功能后,RA报文的发送逻辑和上述开启、关闭RA消息中的DNS服务器信息抑制功能后的RA报文发送逻辑相同,此处不再赘述。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启RA消息中的DNS服务器信息抑制功能。
ipv6 nd ra dns server suppress
缺省情况下,RA消息中的DNS服务器信息抑制功能处于关闭状态。
(4) 开启RA消息中的DNS域名后缀信息抑制功能。
ipv6 nd ra dns search-list suppress
缺省情况下,RA消息中的DNS域名后缀信息抑制功能处于关闭状态。
接口获得IPv6地址后,将发送邻居请求消息进行重复地址检测。如果在指定的时间内(通过ipv6 nd ns retrans-timer命令配置)没有收到响应,则继续发送邻居请求消息,当发送的次数达到所设置的次数后,仍未收到响应,则认为该地址可用。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置重复地址检测时发送邻居请求消息的次数。
ipv6 nd dad attempts times
缺省情况下,重复地址检测时发送邻居请求报文的次数为1,当times值为0时,表示禁止重复地址检测。
当接口获取到一个IPv6地址后,需要使用重复地址检测功能确定该地址是否已被其他节点使用。此接口会通过ND协议向被检测节点发送NS消息,地址冲突的节点会向此接口返回NA消息,接口收到NA消息后认为此IPv6地址是重复的。此IPv6地址在这个接口上被标识为duplicate状态,无法被用于通信。
接口不会自动为被标识为duplicate状态的IPv6地址使用重复地址检测功能,因此即便地址不再冲突,被标识为duplicate状态的IPv6地址也不会自动恢复到正常状态。若开启地址冲突自恢复功能,接口在收到被检测节点的NA消息后,每隔一段时间会恢复重复地址检测功能,继续向被检测节点发送NS消息,直到不再收到NA消息或地址冲突自恢复功能被关闭。有关具体探测过程的详细介绍,请参见“2.1.5 重复地址检测”。
若开启了地址冲突自恢复功能且配置地址冲突自恢复的最大时间间隔为interval,在接口收到被检测节点的NA消息后系统会等待1~interval秒之间的一个随机时间间隔,然后恢复重复地址检测功能。每次接口收到NA消息系统生成的随机时间间隔都可能不同,这样可以降低因同时发送NS消息而造成报文拥塞的几率。
(1) 进入系统视图。
system-view
(2) 开启IPv6地址冲突自恢复功能。
ipv6 address duplicate-detect enable
缺省情况下,IPv6地址冲突自恢复功能处于关闭状态。
(3) (可选)配置IPv6地址冲突自恢复的最大时间间隔。
ipv6 address duplicate-detect interval interval
缺省情况下,IPv6地址冲突自恢复的最大时间间隔为5秒。
如果NS请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理功能的设备就可以代答该请求,回应NA报文,这个过程称作ND代理(ND Proxy)。
ND Proxy功能屏蔽了分离的物理网络这一事实,使用户使用起来,好像在同一个物理网络上。
ND Proxy功能根据应用场景不同分为普通ND Proxy、本地ND Proxy和VLAN间ND Proxy。
普通ND Proxy的典型应用环境如图2-3所示。设备Device通过两个三层接口Interface A和Interface B连接两个网络,两个三层接口的IPv6地址不在同一个网段,接口地址分别为4:1::99/64、4:2::99/64。但是两个网络内的主机Host A和Host B的地址通过掩码的控制,既与相连设备的接口地址在同一网段,同时二者也处于同一个网段。
图2-3 普通ND Proxy的应用环境
在这种组网环境下,当Host A需要与Host B通信时,由于目的IPv6地址与本机的IPv6地址为同一网段,因此Host A会直接发出请求Host B的MAC地址的NS请求。但是,此时的两台主机处于不同的广播域中,Host B无法收到Host A的NS请求报文,当然也就无法应答。
通过在Device上开启普通ND Proxy功能,可以解决此问题。在接口Interface A上开启普通ND Proxy后,Device可以应答Host A的NS请求。这时,Host A会将发送给Host B的报文发送给Device,如果Device上已经有了Host B的ND表项,则直接按照ND表项转发报文;如果Device上没有Host B的ND表项,则Device会对Host B进行地址解析,解析成功后,再转发报文。同理,在接口Interface B上开启普通ND Proxy功能后,Device作为Host B的代理,可以转发Host B发送给Host A的报文。这样,实现Host A与Host B之间的通信。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启普通ND Proxy功能。
proxy-nd enable
缺省情况下,ND Proxy功能处于关闭状态。
本地ND Proxy的应用场景如图2-4所示。Host A、Host B与Device B属于相同VLAN。Host A和Host B分别连接到端口Port B1和 Port B3上,Port B1和 Port B3是同一个隔离组内的二层隔离端口。
图2-4 本地ND Proxy的应用环境
在这种组网情况下,当Host A需要与Host B通信时,由于目的IPv6地址与本机的IPv6地址为同一网段,因此Host A会直接发出请求Host B的MAC地址的NS请求。由于两台主机接到同一个隔离组内的不同二层隔离端口下,Host B无法收到Host A的NS请求报文。
通过在Device A上开启本地ND Proxy功能,可以解决此问题。在接口Interface A上开启本地ND Proxy后,Device A会代替Host B回应NA,Host A发给Host B的报文就会通过Device A进行转发,从而实现Host A与Host B之间的通信。
本地ND Proxy可以在下列四种情况下实现主机之间的三层互通:
· 想要互通的主机分别连接到同一台设备的不同VLAN中的端口下。
· 想要互通的主机分别连接到同一个VLAN中的同一个隔离组内的不同二层隔离端口下。
· 开启Super VLAN功能后,想要互通的主机属于不同的Sub VLAN。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启本地ND Proxy功能。
local-proxy-nd enable
缺省情况下,本地ND Proxy功能处于关闭状态。
VLAN间ND Proxy的应用场景如图2-5所示。Host A属于VLAN 2,Host B属于VLAN 3。但它们分别连接到端口Port B1和Port B3上,Device B连接到Device A的三层子接口Interface A.1上,子接口Interface A.1开启VLAN终结功能。
图2-5 VLAN间ND Proxy的应用环境
在这种组网情况下,当Host A需要与Host B通信时,由于目的IPv6地址与本机的IPv6地址为同一网段,因此Host A会直接发出解析Host B的MAC地址的NS请求报文。因为两台主机属于不同的VLAN,Host B无法收到Host A的NS请求报文。
通过在Device A的三层子接口Interface A.1上开启VLAN间ND Proxy功能,可以解决此问题。当Device A收到Host A请求Host B的MAC地址的NS请求后,先检查是否已经学到了Host B的ND表项。如果Device A上不存在Host B的ND表项,则先在所有终结VLAN内对Host B进行地址解析。如果Device A已经有了Host B的ND表项,则进行如下操作:
· 如果发现Host B和Host A在同一个VLAN内,则Device A不应答NS请求。
· 如果Host B和Host A不在同一个VLAN内,Device A应答NS请求。DeviceA收到Host A发送给Host B的报文后,转发给Host B。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 开启VLAN间ND Proxy功能。
proxy-nd inter-vlan enable
缺省情况下,VLAN间ND Proxy功能处于关闭状态。
ND直连路由通告功能用于使设备通过ND表项生成直连路由信息,以便其他路由协议发布该直连路由或指导报文转发。
如图2-6所示,Server A和Server B通过三层接口接入到Device A与Device B。在Device A的Interface A和Device B的Interface B下开启ND直连路由通告功能后,Device A可以通过ND表项生成到Server A的主机路由,Device B可以通过ND表项生成到Server B的主机路由。其他路由协议可以仅发布该主机路由,减少由于发布网段路由而引入的无效流量,节约带宽。
如图2-7所示,基站、PE分别与PE-agg1、PE-agg2建立L2VPN连接。在PE-agg1和PE-agg2上配置ND直连路由通告功能,这两台设备才能将基站的主机路由对L3VPN侧的PE设备发布。这时,该PE设备到基站上会生成经过PE-agg1和PE-agg2的两条等价路由,PE发往基站的流量同时经过PE-agg1和PE-agg2。如果PE-agg1设备发生故障,从PE发往基站的流量能快速地完全切换到由PE-agg2转发。
图2-7 ND直连路由通告组网图
在系统视图下执行本命令可开启公网内所有接口的ND直连路由通告功能;在VPN实例视图下执行本命令可开启指定VPN内所有接口的ND直连路由通告功能。
只要在接口下或接口所在的VPN实例内/公网内开启ND直连路由通告功能,接口下的ND直连路由通告功能就会开启;当接口下和接口所在的VPN实例/公网内都开启了ND直连路由通告功能时,只有同时关闭接口下和接口所在VPN实例/公网上的ND直连路由通告功能,接口下的ND直连路由通告功能才能关闭。
(1) 进入系统视图。
system-view
(2) 开启ND直连路由通告功能。
¡ 在系统视图下开启ND直连路由通告功能。
ipv6 nd route-direct advertise
¡ 请依次执行以下命令在接口视图下开启ND直连路由通告功能。
interface interface-type interface-number
ipv6 nd route-direct advertise
¡ 请依次执行以下命令在VPN实例视图下开启ND直连路由通告功能。
ip vpn-instance vpn-instance-name
ipv6 nd route-direct advertise
缺省情况下,ND直连路由通告功能处于关闭状态。
开启本功能后,当设备收到NA报文时,会根据NA报文中的源IPv6地址查询ND表项,如果发现源IPv6地址和某条ND表项中的IPv6地址相同,但MAC地址不同,则认为网络中的终端用户间存在IPv6地址冲突。此时,设备会记录冲突信息,同时生成对应的IPv6地址冲突日志。生成的IPv6地址冲突日志将被发送给信息中心模块处理,信息中心模块的配置将决定日志信息的发送规则和发送方向。有关信息中心的详细描述请参见“网络管理和监控配置指导”中的“信息中心”。
开启了ND模块终端用户间IPv6地址冲突的告警功能后,设备会将冲突报文的发送端IPv6地址和MAC地址、发生冲突的本地表项的MAC地址等信息作为告警信息发送到设备的SNMP模块。用户可通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关特性。有关告警信息的详细描述,请参见“网络管理和监控配置指导”中的“SNMP”。关于开启ND模块的告警功能的详细描述,请参见“安全命令参考”中的“ND攻击防御”。
(1) 进入系统视图。
system-view
(2) (可选)开启ND模块的告警功能。
snmp-agent trap enable nd [ user-ip-conflict ]
缺省情况下,ND模块的告警功能处于关闭状态。
(3) 开启ND记录终端用户间IPv6地址冲突功能。
ipv6 nd user-ip-conflict record enable
缺省情况下,ND记录终端用户间IPv6地址冲突功能处于关闭状态。
开启邻居表项阈值告警和恢复记录功能后,当单板或单板上的接口到达允许学习动态邻居表项的告警阈值或者恢复到安全阈值时,ND模块会生成单板或单板上的接口对应的日志。生成的日志将被发送给信息中心模块处理,信息中心模块的配置将决定日志信息的发送规则和发送方向。信息中心的详细描述请参见“网络管理和监控配置指导”中的“信息中心”。(IRF模式)(独立运行模式)
开启了ND表项达到最大个数的告警功能后,如果当前ND表项的数量超过了告警阈值,设备会将当前ND表项的数目作为告警信息发送到设备的SNMP模块。可以通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关特性。有关告警信息的详细描述,请参见“网络管理和监控配置指导”中的“SNMP”。关于开启ND模块的告警功能的详细描述,请参见“安全命令参考”中的“ND攻击防御”。
(1) 进入系统视图。
system-view
(2) (可选)开启ND模块的告警功能。
snmp-agent trap enable nd [ entry-limit ]
缺省情况下,ND模块的告警功能处于关闭状态。
如果不指定任何参数,则表示打开ND模块的所有告警功能;若仅指定entry-limit参数,则表示仅开启了ND表项达到最大个数的告警功能。
(3) 开启邻居表项阈值告警和恢复记录功能。
ipv6 nd entry-limit record enable
缺省情况下,邻居表项阈值告警和恢复记录功能处于关闭状态。
开启本功能后,ND模块收到ND报文时,会将ND报文中的发送端IP地址和本机的IP地址进行比较。如果发现发送端IP地址本机相同,则认为网络中存在终端与本机的IP地址冲突。此时,ND模块会生成终端与本机冲突表项,同时生成对应的冲突日志。生成的冲突日志将被发送给信息中心模块处理,信息中心模块的配置将决定日志信息的发送规则和发送方向。信息中心的详细描述请参见“网络管理和监控配置指导”中的“信息中心”。
终端与本机冲突表项建立后,如果三分钟内没有再次发生冲突,则删除冲突表项。
开启了ND模块终端与本机冲突的告警功能后,设备会将冲突报文的发送端IPv6地址和MAC地址、目标IPv6地址和MAC地址等信息作为告警信息发送设备的SNMP模块。可以通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关特性。有关告警信息的详细描述,请参见“网络管理和监控配置指导”中的“SNMP”。关于开启ND模块的告警功能的详细描述,请参见“安全命令参考”中的“ND攻击防御”。
对于单个接口,一分钟只向信息中心模块发送一次终端和本机冲突的日志。设备最多支持128个接口同时上送冲突日志。当同时上冲突日志的接口数目大于128时,设备会停止对其它接口上新增的冲突日志进行上送,需要等之前的冲突接口解除冲突后,后续接口冲突日志才能上送。
(1) 进入系统视图。
system-view
(2) (可选)开启ND模块的告警功能。
snmp-agent trap enable nd [ local-conflict ]
缺省情况下,ND模块的告警功能处于关闭状态。
如果不指定任何参数,则表示打开ND模块的所有告警功能;若仅指定local-conflict参数,则表示仅开启了ND记录终端与本机冲突功能。
(3) 开启ND记录终端与本机冲突功能。
ipv6 nd local-conflict record enable
缺省情况下,ND记录终端与本机冲突功能处于关闭状态。
设备收到IPv6三层报文时匹配不到主机路由,但匹配到网段路由时,会上送ND Miss消息到CPU,然后设备会根据ND Miss消息发送NS报文。当设备存在大量ND Miss消息说明设备存在大量转发不通的报文。
开启本功能后,当设备产生ND Miss消息的速率或发送ND报文的速率超过阈值时,ND模块会生成对应的日志。生成的日志将被发送给信息中心模块处理,信息中心模块的配置将决定日志信息的发送规则和发送方向。信息中心的详细描述请参见“网络管理和监控配置指导”中的“信息中心”。ND Miss消息的告警阈值由产品定制,取值以设备的实际情况为准。ND报文发送速率目前是固定的。
为避免速率不稳定设备频繁输出告警和告警恢复,当告警恢复后的一分钟内,系统不会再次出发告警。
开启了ND Miss消息和ND报文发送限速的告警功能后,如果设备每秒发送的ND Miss消息或ND报文的个数超过了设备定制的阈值,设备会将超速峰值作为告警信息发送到设备的SNMP模块。可以通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关特性。有关告警信息的详细描述,请参见“网络管理和监控配置指导”中的“SNMP”。关于开启ND模块的告警功能的详细描述,请参见“安全命令参考”中的“ND攻击防御”。
(1) 进入系统视图。
system-view
(2) (可选)开启ND模块的告警功能。
snmp-agent trap enable nd [ nd-miss ]
缺省情况下,ND模块的告警功能处于关闭状态。
如果不指定任何参数,则表示打开ND模块的所有告警功能;若仅指定nd-miss参数,则表示仅开启了ND Miss消息和ND报文发送限速的告警功能。
(3) 开启ND记录ND Miss消息和报文发送限速功能。
ipv6 nd nd-miss record enable
缺省情况下,ND记录ND Miss消息和报文发送限速功能处于关闭状态。
在完成上述配置后,在任意视图下执行display命令可以显示配置后的运行情况,用户可以通过查看显示信息验证配置的效果。
在用户视图下,执行reset命令可以清除相应的统计信息。
表2-3 IPv6邻居发现显示和维护
操作 |
命令 |
显示ND记录的终端用户间IPv6地址冲突表项信息 |
(独立运行模式) display ipv6 nd user-ip-conflict record [slot slot-number [ cpu cpu-number ] ] (IRF模式) display ipv6 nd user-ip-conflict record [chassis chassis-number slot slot-number [ cpu cpu-number ] ] |
显示邻居信息 |
(独立运行模式) display ipv6 neighbors { { ipv6-address | all | dynamic | static } [ slot slot-number [ cpu cpu-number ] ] | interface interface-type interface-number | vlan vlan-id } [ verbose ] (IRF模式) display ipv6 neighbors { { ipv6-address | all | dynamic | static } [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] | interface interface-type interface-number | vlan vlan-id } [ verbose ] |
显示邻居表项的个数 |
(独立运行模式) display ipv6 neighbors { { all | dynamic | static } [ slot slot-number [ cpu cpu-number ] ] | interface interface-type interface-number | vlan vlan-id } count (IRF模式) display ipv6 neighbors { { all | dynamic | static } [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] | interface interface-type interface-number | vlan vlan-id } count |
显示设备支持的ND表项的最大数目 |
display ipv6 neighbors entry-limit |
显示指定VPN实例的邻居信息 |
display ipv6 neighbors vpn-instance vpn-instance-name [ count ] |
清除IPv6邻居信息 |
(独立运行模式) reset ipv6 neighbors { all | dynamic | interface interface-type interface-number | slot slot-number [ cpu cpu-number ] | static } (IRF模式) reset ipv6 neighbors { all | dynamic | interface interface-type interface-number | chassis chassis-number slot slot-number [ cpu cpu-number ] | static } |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!