本文转载自微信公众号「思科CCIE俱乐部」,作者老杨。转载本文请联系思科CCIE俱乐部公众号。
IPv6在互联网络中的运行方式
现在该探讨IPv6的细节了。首先,介绍如何给主机分配地址以及主机如何找到网络中的其他主机和资源。
我们还会演示设备的自动编址功能(无状态自动配置)以及另一种类型的自动配置(有状态自动配置)。请记住,有状态自动配置使用DHCP服务器,与IPv4中极其类似。
自动配置
自动配置是一种很有用的解决方案,让网络中的设备能够给自身分配链路本地单播地址和全局单播地址。它是这样完成的:首先从路由器那里获悉前级信息,再将设备自己的接口地址用作接口ID。
但接口ID是如何获得的呢?大家都知道,以太网中的每台设备都有-个 MAC地址,该地址会被用作接口ID。然而,IPv6 地址中的接口ID长64位,而MAC地址只有48位,多出来的16位是如何来的呢?在MAC地址中间插人额外的位,即FFFE。
例如,假设设备的MAC地址为0060:d673:1987,插人FFFE后,结果为0260:d6FF:FE73:1987。为何开头的00变成了02呢?向得好。插人时将采用改进的eui-64 (扩展唯一标识符)格式,它使用第7位来标识地址是本地唯一的还是全局唯一的。如果这一位为1,则表示地址是全局唯一的,如果为0,则表示地址是本地唯一的。在这个例子中,最终的地址是全局唯一的还是本地唯一的呢?
正确的答案是全局唯一的。自动配置可节省编址时间,因为主机只需与路由器交流就可完成这项工作。
为完成自动配置,主机执行两个步骤。
(1)首先,为配置接口,主机需要前缀信息(类似于IPv4地址的网络部分),因此它会发送一条路由器请求( Router Solicitation, RS )消息。该消息以组播方式发送给所有路由器。这实际上是一种ICMP消息,并用编号进行标识。RS消息的ICMP类型为133。
(2)路由器使用一条路由器通告(RA)进行应答,其中包含请求的前级信息。RA消息也是组播分组,被发送到表示所有节点的组播地址,其ICMP类型为134。RA消息是定期发送的,但主机发送RS消息后,可立即得到响应,因此无需等待下一条定期发送的RA消息,就能获得所需的信息。
图15-2说明了这两个步骤。
顺便说一句,这种类型的自动配置称为无状态自动配置,因为无需进一步与其他设备联系以获悉额外的信息。稍后讨论DHCPv6时,将介绍有状态自动配置。
路由器配置IPv6
下面来看看如何给路由器配置IPv6。
要在路由器上启用IPv6,必须使用全局配置命令ipv6 uni cast-routing:
- Corp( config)#ipv6 unicast-routing
默认情况下,转发IPv6数据流的功能被禁用,因此需要使用上述命令启用它。另外,你可能猜到了,默认不会在任何接口上启用IPv6,因此必须进入每个接口并启用这项功能。
为此,可使用多种方式,但最简单的方式是,使用命令1pv6 address
下面是一个例子:
- Corp(config-if)#ipv6 address 2001 :db8: 3c4d:1:0260:d6FF .FE73:1987/64
可指定一个完整的128位IPv6全局地址(就像前面的例子那样),也可使用eui-64 选项。eui-64格式允许设备对其MAC地址进行转换,以生成接口ID,如下所示:
- Corp(config-if)#ipv6 address 2001:db8:3c4d:1::/64 eui-64
为在路由器接口上启用IPv6,也可不输人IPv6地址,而让其自动使用链路本地地址。
注意:如果只有链路本地地址,则只能在本地子网中通信。
要配置路由器接口,使其只使用链路本地地址,可使用接口配置命令ipv6 enable:
- Corp(config-if)#ipv6 enable
下面配置DHCPv6服务器,以探讨有状态自动配置。
DHCPv6
DHCPv6的工作原理与DHCPv4极其相似,但有一个明显 的差别,那就是支持IPv6新增的编址方案。DHCP提供了一些自动配置没有的选项,这可能令你感到惊讶。在自动配置中,根本没有涉及DNS服务器、域名以及DHCP提供的众多其他选项。这是在大多数IPv6网络中使用DHCP的重要原因。
在IPv4网络中,客户端启动时将发送一条DHCP发现消息,以查找可给它提供所需信息的服务器。但在IPv6中,首先发生的是RS和RA过程。如果网络中有DHCPv6服务器,返回给客户端的RA将指出DHCP是否可用。如果没有找到路由器,客户端将发送一条DHCP请求消息,这是一条组播消息,其目标地址为f02:1:2,表示所有DHCP代理,包括服务器和中继。
IOS提供了一定的DHCPv6支持,但仅限于无状态DHCP服务器,这意味着它没有提供地址池管理功能,且可配置的选项仅限于DNS、域名、默认网关和SIP服务器。
这意味着必要时需要提供其他服务器,以提供所有必要的信息并管理地址分配。
ICMPv6
IPv4使用ICMP做很多事情,诸如目的地不可达等错误消息以及ping和traceroute等诊断功能。
ICMPv6也提供了这些功能,但不同的是,它不是独立的第3层协议。ICMPv6是IPv6不可分割的部分,其信息包含在基本IPv6报头后面的扩展报头中。ICMPv6新增了一项功能:默认情况下,可通过ICMPv6过程“路径MTU发现”来避免IPv6对分组进行分段。
路径MTU发现过程的工作原理如下:源节点发送一个分组,其长度为本地链路的MTU。在该分组前往目的地的过程中,如果链路的MTU小于该分组的长度,中间路由器就会向源节点发送消息“分组太大”。这条消息向源节点指出了当前链路支持的最大分组长度,并要求源节点发送可穿越该链路的小分组。这个过程不断持续下去,直到到达目的地,此时源节点便知道了该传输路径的MTU。接下来,传输其他数据分组时,源节点将确保分组不会被分段。
ICMPv6接管了发现本地链路上其他设备的地址的任务;在IPv4中,这项任务由地址解析协议负责,但ICMPv6将这种协议重命名为邻居发现。这个过程是使用被称为请求节点地址( solicited nodeaddress )的组播地址完成的,每台主机连接到网络时都会加入这个组播组。为生成请求节点地址,在FF02:0:0:0:0:1:FF/104末尾加上目标主机的IPv6地址的最后24位。查询请求节点地址时,相应的主机将返回其第2层地址。网络设备也以类似的方式发现和跟踪相邻设备。前面介绍RA和RS消息时说过,它们使用组播来请求和发送地址信息,这也是ICMPv6的邻居发现功能。
在IPv4中,主机使用IGMP协议来告诉本地路由器,它要加入特定的组播组并接收发送给该组播组的数据流。这种IGMP功能已被ICMPv6 取代,并被重命名为组播侦听者发现( multicast listenerdiscovery )。