DHCPv6_Client测试实操(信而泰原创文章)
一、DHCPv6原理
DHCPv6简介
DHCPv6概述
(1)DHCPv6
Dynamic Host Configuration Protocol for IPv6
支持IPv6的动态主机配置协议
(2)RFC3315, 2003.7
(3)模式: Client/Server模式
(4)目标
自动协商网络参数, 不需要用户手工配置
DHCPv6基本架构
DHCPv6基本协议架构中,主要包括以下三种角色:
(1)DHCPv6 Client:
DHCPv6客户端,通过与DHCPv6服务器进行交互,获取IPv6地址/前缀和网络配置信息,完成自身的地址配置功能。
(2)DHCPv6 relay:
DHCPv6中继代理,负责转发来自客户端方向或者服务器方向的DHCPv6报文,协助客户端和服务器完成自身地址配置功能(不是必须存在的角色)v6里面中继出现的场景是客户端和服务器不在同一个共享的网络里面。
(3)DHCPv6 Server:
DHCPv6服务器,负责处理来自客户端或中继代理的地址分配、地址续租、地址释放等请求,为客户端分配IPv6地址/前缀和其他网络配置信息。
IPv6地址分配类型
(1)IPv6协议具有地址空间巨大的特点,但同时长达128比特的IPv6地址又要求高效合理的地址自动分配和管理策略
(2)目前IPv6地址的分配方法有以下几种:
手动配置 手动配置IPv6地址/前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)
无状态自动地址分配 由接口ID生成链路本地地址,再根据路由通告报文RA(Router Advertisement)包含的前缀信息自动配置本机地址
有状态自动地址分配 即DHCPv6方式。DHCPv6又分为如下两种:
·DHCPv6有状态自动分配。DHCPv6服务器自动分配IPv6地址/PD前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)
·DHCPv6无状态自动分配。主机IPv6地址仍然通过路由通告方式自动生成,DHCPv6服务器只分配除IPv6地址以外的配置参数,包括DNS、NIS、SNTP服务器等参数
DHCPv6优点
与其他IPv6地址分配方式(手工配置、通过路由器通告消息中的网络前缀无状态自动配置等)相比,DHCPv6具有以下优点:
·更好地控制IPv6地址的分配。DHCPv6方式不仅可以记录为IPv6主机分配的地址,还可以为特定的IPv6主机分配特定的地址,以便于网络管理。
·DHCPv6支持为网络设备分配IPv6前缀,便于全网络的自动配置和网络层次性管理。
·除了为IPv6主机分配IPv6地址/前缀外,还可以分配DNS服务器IPv6地址等网络配置参数。
DHCPv6基本概念-1
组播地址
·在DHCPv6协议中,客户端不用配置DHCPv6 Server的IPv6地址,而是发送目的地址为组播地址的Solicit报文来定位DHCPv6服务器
·在DHCPv4协议中,客户端发送广播报文来定位服务器。为避免广播风暴,在IPv6中,已经没有了广播类型的报文,而是采用组播报文。DHCPv6用到的组播地址有两个:
FF02::1:2(All DHCP Relay Agents and Servers):所有DHCPv6服务器和中继代理的组播地址,这个地址是链路范围的,用于客户端和相邻的服务器及中继代理之间通信。所有DHCPv6服务器和中继代理都是该组的成员
FF05::1:3(All DHCP Servers):所有DHCPv6服务器组播地址,这个地址是站点范围的,用于中继代理和服务器之间的通信,站点内的所有DHCPv6服务器都是此组的成员
DHCPv6基本概念-2
(1)UDP端口号
·DHCPv6报文承载在UDPv6上;
·客户端侦听的UDP目的端口号是546;
·服务器、中继代理侦听的UDP端口号是547。
(2)DHCP唯一标识符(DUID)
·DHCP设备唯一标识符DUID(DHCPv6 Unique Identifier),每个服务器或客户端有且只有一个唯一标识符,服务器使用DUID来识别不同的客户端,客户端则使用DUID来识别服务器;
·客户端和服务器DUID的内容分别通过DHCPv6报文中的Client Identifier和Server Identifier选项来携带。两种选项的格式一样,通过option-code字段的取值来区分是Client Identifier还是Server Identifier选项。
DHCPv6基本概念-3
身份联盟(IA) 身份联盟IA(Identity Association)是使得服务器和客户端能够识别、分组和管理一系列相关IPv6地址的结构。每个IA包括一个IAID和相关联的配置信息。
·客户端必须为它的每一个要通过服务器获取IPv6地址的接口关联至少一个IA。客户端用给接口关联的IA来从服务器获取配置信息。每个IA必须明确关联到一个接口;
·IA的身份由IAID唯一确定,同一个客户端的IAID不能出现重复。IAID不应因为设备的重启等因素发生丢失或改变;
·IA中的配置信息由一个或多个IPv6地址以及T1和T2生存期组成。IA中的每个地址都有首选生存期和有效生存期;
·一个接口至少关联一个IA,一个IA可以包含一个或多个地址信息。
DHCPv6协商流程
DHCPv6有状态自动分配
(1)IPv6主机通过有状态DHCPv6方式获取IPv6地址和其他配置参数(例如DNS服务器的IPv6地址等)
(2)DHCPv6服务器为客户端分配地址/前缀的过程分为两类
·DHCPv6四步交互分配过程
·DHCPv6两步交互快速分配过程
DHCPv6四步交互1
(1)四步交互常用于网络中有多个DHCPv6服务器的情况。DHCPv6客户端首先通过组播发送Solicit报文来定位可以为其提供服务的DHCPv6服务器,在收到多个DHCPv6服务器的Advertise报文后,根据DHCPv6服务器的优先级选择一个为其分配地址和配置信息的服务器,接着通过Request/Reply报文交互完成地址申请和分配过程
(2)DHCPv6服务器端如果没有配置使能两步交互,无论客户端报文中是否包含Rapid Commit选项,服务器都采用四步交互方式为客户端分配地址和配置信息
DHCPv6四步交互-2
DHCPv6四步交互地址分配过程如下:
·DHCPv6客户端发送Solicit报文,请求DHCPv6服务器为其分配IPv6地址和网络配置参数;
·如果Solicit报文中没有携带Rapid Commit选项,或Solicit报文中携带Rapid Commit选项,但服务器不支持快速分配过程,则DHCPv6服务器回复Advertise报文,通知客户端可以为其分配的地址和网络配置参数;
·如果DHCPv6客户端接收到多个服务器回复的Advertise报文,则根据Advertise报文中的服务器优先级等参数,选择优先级最高的一台服务器,并向所有的服务器发送Request组播报文,该报文中携带已选择的DHCPv6服务器的DUID;
·DHCPv6服务器回复Reply报文,确认将地址和网络配置参数分配给客户端使用。
DHCPv6两步交互-1
(1)两步交互常用于网络中只有一个DHCPv6服务器的情况。DHCPv6客户端首先通过组播发送Solicit报文来定位可以为其提供服务的DHCPv6服务器,DHCPv6服务器收到客户端的Solicit报文后,为其分配地址和配置信息,直接回应Reply报文,完成地址申请和分配过程
(2)两步交换可以提高DHCPv6过程的效率,但在有多个DHCPv6服务器的网络中,多个DHCPv6服务器都可以为DHCPv6客户端分配IPv6地址,回应Reply报文,但是客户端实际只可能使用其中一个服务器为其分配的IPv6地址和配置信息。为了防止这种情况的发生,管理员可以配置DHCPv6服务器是否支持两步交互地址分配方式
·DHCPv6服务器端如果配置使能了两步交互,并且客户端报文中也包含Rapid Commit选项,服务器采用两步交互方式为客户端分配地址和配置信息
·如果DHCPv6服务器不支持快速分配地址,则采用四步交互方式为客户端分配IPv6地址和其他网络配置参数
DHCPv6两步交互-2
DHCPv6两步交互地址分配过程如下:
·DHCPv6客户端在发送的Solicit报文中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址和网络配置参数
·DHCPv6服务器接收到Solicit报文后,将进行如下处理:
如果DHCPv6服务器支持快速分配地址,则直接返回Reply报文,为客户端分配IPv6地址和其他网络配置参数,Replay报文中也携带Rapid Commit选项;
如果DHCPv6服务器不支持快速分配过程,则采用四步交互方式为客户端分配IPv6地址/前缀和其他网络配置参数。
DHCPv6无状态自动分配
IPv6节点可以通过DHCPv6无状态方式获取配置参数(包括DNS、SIP、SNTP等服务器配置信息,不包括IPv6地址)
DHCPv6无状态工作过程如下:
·DHCPv6客户端以组播方式向DHCPv6服务器发送Information-Request报文,该报文中携带Option Request选项,指定DHCPv6客户端需要从DHCPv6服务器获取的配置参数
·DHCPv6服务器收到Information-Request报文后,为DHCPv6客户端分配网络配置参数,并单播发送Reply报文,将网络配置参数返回给DHCPv6客户端。DHCPv6客户端根据收到Reply报文提供的参数完成DHCPv6客户端无状态配置
DHCPv6报文格式
DHCPv6报文格式
DHCPv6的报文格式
DHCPv6报文中各个字段的含义
字段 |
长度 |
含义 |
msg-type |
1字节 |
表示报文的类型,取值为1~13,具体请参见DHCPv6报文类型。 |
transaction-ID |
3字节 |
DHCPv6交互ID,也叫事务ID,用来标识一个来回的DHCPv6报文交互。例如Solicit/Advertise报文为一个交互。Request/Reply报文为另外一个交互,两者有不同的事务ID。 交互ID特点如下: 交互ID是DHCPv6客户端生成的一个随机值,DHCPv6客户端应当保证交互ID具有一定的随机性。 对于DHCPv6服务器响应报文和相应的请求报文,两者交互ID保持一致。 如果是DHCPv6服务器主动发起的会话报文,则交互ID为0。 |
Options |
可变 |
表示DHCPv6的选项字段。此字段包含了DHCPv6服务器分配给IPv6主机的配置信息,如DNS服务器的IPv6地址等信息。 |
DHCPv6报文抓包-Solicit报文(类型1)
DHCPv6客户端使用Solicit报文来确定DHCPv6服务器的位置
DHCPv6报文抓包-Advertise报文(类型2)
DHCPv6服务器发送Advertise报文来对Solicit报文进行回应,宣告自己能够提供DHCPv6服务
DHCPv6报文抓包-Request报文(类型3)
DHCPv6客户端发送Request报文来向DHCPv6服务器请求IPv6地址和其它配置信息
DHCPv6报文抓包-Renew报文(类型5)
DHCPv6客户端向给其提供地址和配置信息的DHCPv6服务器发送Renew报文来延长地址的生存期并更新配置信息
DHCPv6报文抓包-Rebind报文(类型6)
如果Renew报文没有得到应答,DHCPv6客户端向任意可达的DHCPv6服务器发送Rebind报文来延长地址的生存期并更新配置信息
DHCPv6报文抓包-Reply报文(类型7)
DHCPv6服务器在以下场合发送Reply报文:DHCPv6服务器发送携带了地址和配置信息的Reply消息来回应从DHCPv6客户端收到的Solicit、Request、Renew、Rebind报文。DHCPv6服务器发送携带配置信息的Reply消息来回应收到的Information-Request报文。用来回应DHCPv6客户端发来的Confirm、Release、Decline报文
DHCPv6报文抓包-Release(类型8)
DHCPv6客户端向为其分配地址的DHCPv6服务器发送Release报文,表明自己不再使用一个或多个获取的地址
DHCPv6报文抓包-Reply-forw报文(类型12)
中继代理通过Relay-Forward报文来向DHCPv6服务器转发DHCPv6客户端请求报文
DHCPv6报文抓包-Relay-reply报文(类型13)
DHCPv6服务器向中继代理发送Relay-Reply报文,其中携带了转发给DHCPv6客户端的报文
DHCPv6报文类型
·目前DHCPv6定义了如下十三种类型报文,DHCPv6服务器和DHCPv6客户端之间通过这十三种类型的报文进行通信。
·下表是DHCPv6报文与DHCPv4报文比较
IPv6地址/前缀的分配与更新原则
IPv6地址分配的优先次序
DHCPv6地址租约更新
DHCPv6 relay
DHCPv6中继工作原理
DHCPv6中继工作过程如下图所示。DHCPv6客户端通过DHCPv6中继转发报文,获取IPv6地址/前缀和其他网络配置参数(例如DNS服务器的IPv6地址等)
测试用例
测试用例(测试仪作为客户端方式)
(1)测试需求
如上图所示,测试仪与交换机在同一条链路上。通过部署测试仪作为DHCPv6客户端、交换机作为DHCPv6服务器,实现测试仪动态获取IPv6地址的需求。
(2)配置思路
·在交换机上,配置DHCPv6服务器,实现为DHCPv6客户端动态分配IPv6地址。具体配置包括:配置接口的IPv6地址、配置IPv6地址池、使能接口的DHCPv6服务器功能;
·在测试仪上,配置DHCPv6客户端功能,实现通过DHCPv6服务器动态获取IPv6地址。具体配置包括:配置接口的IPv6功能、使能接口的DHCPv6客户端功能。
DUT配置
DHCPv6服务端配置
配置接口的IPv6地址
配置IPv6地址池
使能接口的DHCPv6服务器功能
测试仪配置
Step1: 添加interface
步骤1-1: 添加Interface
手工添加
还可以通过wizard方式创建Interface
步骤1-2:修改接口参数
1、修改地址数量为200
2、vlan 跳变步长填0(vlan不要跳变)
Step2: 配置DHCPv6
步骤2-1: 添加DHCPv6客户端
步骤2-2: 将Interface和协议关联
Interface和协议关联
·向导创建 默认关联
·手工创建DHCP, 需要手工关联
Step3: 开启DHCPv6
步骤3:开启DHCP客户端
DHCPv6块状态:Bound表示仿真客户端已获得分配的地址
Step4: 验证
步骤4-1:选择对应流模板
步骤4-2:测试仪查看分配的IP地址数
流统计查看,200个IP地址分配成功
步骤4-3:DUT查看分配的IP地址数
执行命令display dhcpv6 pool pool1可以查看IPv6地址池pool1的配置
执行命令display dhcpv6 pool pool1 allocated address可以看到服务器已经分配出去的IP地址