定义:

IPv6动态主机配置协议DHCPv6(Dynamic Host Configuration Protocol for IPv6)是针对IPv6编址方案设计,为主机分配IPv6地址/前缀和其他网络配置参数。

DHCPv6是一种运行在客户端和服务器之间的协议,与IPv4中的DHCP一样,所有的协议报文都是基于UDP的。但是由于在IPv6中没有广播报文,因此DHCPv6使用组播报文,客户端也无需配置服务器的IPv6地址。

IPV6地址分配类型:

IPv6协议具有地址空间巨大的特点,但同时长达128比特的IPv6地址又要求高效合理的地址自动分配和管理策略。

目前IPv6地址的分配方法有以下几种:
• 手动配置。手动配置IPv6地址/前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。
• 无状态自动地址分配。由接口ID生成链路本地地址,再根据路由通告报文RA(Router Advertisement)包含的前缀信息自动配置本机地址。
• 有状态自动地址分配,即DHCPv6方式。DHCPv6又分为如下两种:

  1. DHCPv6有状态自动分配。DHCPv6服务器自动分配IPv6地址/PD前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。
  2. DHCPv6无状态自动分配。主机IPv6地址仍然通过路由通告方式自动生成,DHCPv6服务器只分配除IPv6地址以外的配置参数,包括DNS、NIS、SNTP服务器等参数。

DHCPv6基本架构:

DHCPv6基本协议架构中,主要包括以下三种角色:

  1. DHCPv6 Client:
    DHCPv6客户端,通过与DHCPv6服务器进行交互,获取IPv6地址/前缀和网络配置信息,完成自身的地址配置功能。
  2. DHCPv6 Relay:
    DHCPv6中继代理,负责转发来自客户端方向或服务器方向的DHCPv6报文,协助DHCPv6客户端和DHCPv6服务器完成地址配置功能。一般情况下,DHCPv6客户端通过本地链路范围的组播地址与DHCPv6服务器通信,以获取IPv6地址/前缀和其他网络配置参数。如果服务器和客户端不在同一个链路范围内,则需要通过DHCPv6中继代理来转发报文,这样可以避免在每个链路范围内都部署DHCPv6服务器,既节省了成本,又便于进行集中管理。
    只有当DHCPv6客户端和DHCPv6服务器不在同一链路范围内,或DHCPv6客户端和DHCPv6服务器无法单播交互的情况下,才需要DHCPv6中继代理的参与。
  3. DHCPv6 Server:
    DHCPv6服务器,负责处理来自客户端或中继代理的地址分配、地址续租、地址释放等请求,为客户端分配IPv6地址/前缀和其他网络配置信息。

DHCPv6基本概念:

一、组播地址
• 在DHCPv6协议中,客户端不用配置DHCPv6 Server的IPv6地址,而是发送目的地址为组播地址的Solicit报文来定位DHCPv6服务器。
• 在DHCPv4协议中,客户端发送广播报文来定位服务器。为避免广播风暴,在IPv6中,已经没有了广播类型的报文,而是采用组播报文。DHCPv6用到的组播地址有两个:

  1. FF02::1:2(All DHCP Relay Agents and Servers):所有DHCPv6服务器和中继代理的组播地址,这个地址是链路范围的,用于客户端和相邻的服务器及中继代理之间通信。所有DHCPv6服务器和中继代理都是该组的成员。
  2. FF05::1:3(All DHCP Servers):所有DHCPv6服务器组播地址,这个地址是站点范围的,用于中继代理和服务器之间的通信,站点内的所有DHCPv6服务器都是此组的成员。

二、UDP端口号
• DHCPv6报文承载在UDPv6上。
• 客户端侦听的UDP目的端口号是546。
• 服务器、中继代理侦听的UDP端口号是547。

三、DHCP唯一标识符(DUID)
• DHCP设备唯一标识符DUID(DHCPv6 Unique Identifier),每个服务器或客户端有且只有一个唯一标识符,服务器使用DUID来识别不同的客户端,客户端则使用DUID来识别服务器。
• 客户端和服务器DUID的内容分别通过DHCPv6报文中的Client Identifier和Server Identifier选项来携带。两种选项的格式一样,通过option-code字段的取值来区分是Client Identifier还是Server Identifier选项。

四、身份联盟(IA)
• 身份联盟IA(Identity Association)是使得服务器和客户端能够识别、分组和管理一系列相关IPv6地址的结构。每个IA包括一个IAID和相关联的配置信息。
• 客户端必须为它的每一个要通过服务器获取IPv6地址的接口关联至少一个IA。客户端用给接口关联的IA来从服务器获取配置信息。每个IA必须明确关联到一个接口。
• IA的身份由IAID唯一确定,同一个客户端的IAID不能出现重复。IAID不应因为设备的重启等因素发生丢失或改变。
• IA中的配置信息由一个或多个IPv6地址以及T1和T2生存期组成。IA中的每个地址都有首选生存期和有效生存期。
• 一个接口至少关联一个IA,一个IA可以包含一个或多个地址信息。

DHCP报文结构:

  1. msg-type:1字节,表示报文的类型,取值为1~13。
  2. transaction-ID:3字节,DHCPv6交互ID,也叫事务ID,用来标识一个来回的DHCPv6报文交互。例如Solicit/Advertise报文为一个交互。Request/Reply报文为另外一个交互,两者有不同的事务ID。 交互ID特点如下:
    • 交互ID是DHCPv6客户端生成的一个随机值,DHCPv6客户端应当保证交互ID具有一定的随机性。
    • 对于DHCPv6服务器响应报文和相应的请求报文,两者交互ID保持一致。
    • 如果是DHCPv6服务器主动发起的会话报文,则交互ID为0。
  3. Options:可变长度,表示DHCPv6的选项字段。此字段包含了DHCPv6服务器分配给IPv6主机的配置信息,如DNS服务器的IPv6地址等信息。

报文类型:

DHCPv6工作流程:

DHCPv6服务器为客户端分配地址/前缀的过程分为两类:

  1. 交互两个消息的快速分配过程
  2. 交互四个消息的分配过程

交互2个消息快速分配过程:DHCP上的改进,提高效率。

  1. DHCPv6客户端在发送的Solicit消息中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址/前缀和网络配置参数;(组播)
  2. 如果DHCPv6服务器支持快速分配过程,则直接返回Reply消息,为客户端分配IPv6地址/前缀和其他网络配置参数。如果DHCPv6服务器不支持快速分配过程,则采用交互四个消息的分配过程为客户端分配IPv6地址/前缀和其他网络配置参数。(单播)

交互四个消息的分配过程(和普通DHCP相似,,这里就不重复描述了):

Solicit 报文中没有携带 Rapid Commit 选项,或 Solicit 报文中携带 Rapid Commit 选项,但服务器不支持快速分配过程,则 DHCPv6 服务器回复 Advertise 报文,进行4个消息交互。

租约更新:
通过Renew更新地址/前缀租约,DHCP中使用的是request报文,这里单独分出来Renew报文进行更新。

如果在T1时(0.5倍生命值)发送的Renew请求更新租约,但是没有收到DHCPv6服务器的回应报文,则DHCPv6客户端会在T2(推荐值为首选生命期的0.875倍)时,向所有DHCPv6服务器组播发送Rebind报文请求更新租约。如果客户端可以继续使用该地址/前缀,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址/前缀租约;如果该地址/前缀不可以再分配给该客户端,则DHCPv6服务器回应续约失败的Reply报文,通知客户端不能获得新的租约;如果DHCPv6客户端没有收到服务器的应答报文,则到达有效生命期后,客户端停止使用该地址/前缀。

快速分配实验:

Sever:
全局配置:
ipv6 //开启IPv6
dhcp enable //配置DHCP
interface GigabitEthernet0/0/0 //进入接口
ipv6 enable
ipv6 address 2002::1/64
dhcpv6 server client rapid-commit //开启快速分配

dhcpv6 pool client //配置地址池
address prefix 2002::/64
excluded-address 2002::1
dns-server 3000::1
Client:(只有路由器能够模拟,PC不能模拟)
ipv6 //开启IPv6
dhcp enable //配置DHCP
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto link-local //先必须配置本地链路地址才能让接口打开
ipv6 address auto dhcp rapid-commit //开启快速分配接收

抓包:单播地址为链路本地地址

Solicit报文:

我们可以看到Rapid Commit字段存在,表示快速获取。Transaction ID和Reply报文的相同。

Reply报文:

Transaction报文 ID和Solicit报文的相同,然后有分配的IPv6地址,Rapid Commit字段依然存在。

DHCPv6有/无状态配置过程:

原理:

这是在IPv6中IPv4中DHCP很大的差别,主要是因为IPv6中不仅仅是可以通过DHCPv6或者IP地址,还可以通过RA/RD报文从自己最近的路由器获取IP地址。 DHCPv6可以向IPv6主机提供有状态的地址配置或无状态的配置设置:

无状态地址自动配置用于对链接本地地址和其他非链接本地地址两者进行配置,方法是与相邻路由器交换路由器请求和路由器公告消息。

有状态地址自动配置通过使用如DHCP的配置协议,用来配置非链接本地地址。

IPv6主机自动执行无状态地址自动配置,并在相邻路由器发送的路由器公告消息中使用基于以下标记的配置协议(如DHCPv6):

托管地址配置标记,也称为M标记。设置为1时,此标记指示主机使用配置协议来获取有状态地址。其他有状态配置标记,也称为O标记。设置为1时,此标记指示主机使用配置协议来获取其他配置设置。结合M和O标记的值可以产生以下组合:

  1. MO=00(无DHCPv6)
    此组合对应不具有DHCPv6基础结构的网络。主机使用非链接本地地址的路由器公告以及其他方法(如手动配置)来配置其他设置。
  2. MO=11
    DHCPv6用于这两种地址(链接本地地址和其他非链接本地地址)和其他配置设置。该组合称为DHCPv6有状态,其中DHCPv6将有状态地址分配给IPv6主机。
  3. MO=01
    DHCPv6不用于分配地址,仅用来分配其他配置设置。相邻路由器配置为通告非链接本地地址前缀,IPv6主机从中派生出无状态地址。此组合称为DHCPv6无状态:DHCPv6不为IPv6主机分配有状态地址,但分配无状态配置设置。
  4. MO=10(X,没有这样使用)
    在此组合中,DHCPv6用于地址配置,但不用于其他设置。因为IPv6主机通常需要使用其他设置(如域名系统(DNS)服务器的IPv6地址)进行配置,所以这是一种不太可能的组合。

DHCPv6无状态过程如下:

  1. 客户端以组播的方式向DHCPv6服务器发送information-request报文,该报文中携带Option request选项,指定客户端要从服务器获取的配置参数。
  2. 服务器收到information-Request报文后,为客户端分配网络配置参数,并单播发送Reply报文将网络配置参数返回给客户端。
  3. 客户端检查Reply报文中提供的信息,如果与information-Request报文中请求的配置参数相符,则按照Reply报文中提供的参数进行网络配置;否则,忽略该参数。如果接收到多个Reply报文,客户端将选择最先收到的Reply报文,并根据该报文中提供的参数完成客户端无状态配置。

DHCPv6中继工作原理:

  1. DHCPv6客户端向所有DHCPv6服务器和中继的组播地址FF02::1:2发送请求;
  2. DHCPv6中继接收到请求后,将其封装在Reply-forward报文的中继消息选项(Relay Message Option)中,并将Relay-forward报文发送给DHCPv6服务器;
  3. DHCPv6服务器从Relay-forward报文中解析出客户端的请求,为客户端选取IPv6地址和其他参数,构造应答消息,将应答消息封装在Relay-reply报文的中继消息选项中,并将Relay-reply报文发送给DHCPv6中继;
  4. DHCPv6中继从Relay-Reply报文中解析出服务器的应答,转发给DHCPv6客户端;
    DHCPv6客户端根据DHCPv6服务器分配的IPv6地址/前缀和其他参数进行网络配置。

中继+有状态地址配置实验:


前提:
保证Relay与用户相连网段能和Sever互通,因为他们是用这两个IP地址进行通信的,所以需要配置对应的全球单播地址和动态路由,这里省略。

Sever上主要配置:
dhcpv6 pool guest //配置地址池,与中继g0/0/1接口在同一网段
address prefix 2001::/64
excluded-address 2001::1
dns-server 3000::1
interface GigabitEthernet0/0/0 //进入接口下使用地址池
ipv6 enable
ipv6 address 2002::1/64
dhcpv6 server guest

中继上主要配置:
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2002::2/64
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 2001::1/64
ipv6 nd autoconfig managed-address-flag //设置M位,表示地址和前缀由DHCP服务器分配
ipv6 nd autoconfig other-flag //设置O位,表示DNS等参数由自己分配
dhcpv6 relay destination 2002::1 //设置服务器地址

最后在服务器上查看是否得到了相应的IP地址:成功获取。

因为模拟器原因DNS服务器的地址没有显示,可以成功ping通服务器:

这里需要注意的是,DHCPv6不能配置网关,因为网关会根据中继发送的报文的本地链路地址作为自己的网关。

报文抓包:

客户与中继之间:使用的单播地址都是链路本地地址,因为中继和客户端必须在同一网段。

中继与服务器之间:因为在不同的网段所以使用全球单播地址通信。

参考资料:华为hedex文档

DHCPv6原理与实验(华为设备)相关推荐

  1. 华为设备路由策略原理与实验

    概述: 路由策略可以在路由协议发布.接收和引入路由时配置使用,也可用于过滤路由和改变路由属性. 路由策略各工具之间的调用关系: 条件工具:用于把需要的路由"抓取"出来. 策略工具: ...

  2. BGP选路实验(华为设备)

    文章目录 BGP选路大杂烩 一.实验拓扑 二.分析 三.部署 1.对不同AS的路由进行团体值的设定 2.传递团体值 3.抓取团体值 4.选路 4.1 AS1去AS2走R2 4.2 AS2去AS1走R4 ...

  3. 微波消解仪使用原理和功能特性TFN FG30L 微波消解仪 智能密闭式 6罐扫描控温控压 高端高压微波消解 实验前处理设备

    1.微波 微波是一种电磁波,是频率在300MHz-300GHz的,即波长在100cm至1mm范围内的电磁波,也就是说波长在远红外线与无线电波之间.微波波段中,波长在1-25cm 的波段专门用于雷达,其 ...

  4. 华为设备ENSP静态路由的配置实战

    华为设备ENSP静态路由的配置 1.    实验网络拓扑 2.      实验需求: 1)      使用华为模拟器ENSP 2)     将两台PC机ping通 3.    实验步骤: 1)     ...

  5. 华为交换机默认vlan都是通的吗_华为设备二层交换技术——Hybrid接口详解

    Hybrid接口的特点 按照VLAN接口封装类型,华为交换机的接口主要有三种模式:Access.Trunk和Hybrid.其中Access.Trunk接口和Cisco技术并无差异,Hybrid接口是华 ...

  6. 解读模拟摇杆原理及实验

    解读模拟摇杆原理及实验 Interpreting Analog Sticks 当游戏支持控制器时,玩家可能会一直使用模拟摇杆.在整个体验过程中,钉住输入处理可能会对质量产生重大影响.让来看一些核心概念 ...

  7. 基于Matlab的模拟通信实验平台设计,【通信原理仿真实验】通信原理虚拟实验仿真平台的设计和实现_玛雅作文网...

    作文「通信原理虚拟实验仿真平台的设计和实现」共有 4564 个字,其中有 2704 个汉字,1316 个英文,162 个数字,382 个标点符号.作者佚名,请您欣赏.玛雅作文网荟萃众多优秀学生作文,如 ...

  8. 华为设备接口视图_华为设备的交换机接口类型介绍及配置

    博文大纲: vlan是什么? 华为交换机的三种接口模式: 1.access模式. 2.trunk模式. 3.hybrid模式. hybrid接口的工作原理. 华为设备的各种接口模式应用场景及配置. 一 ...

  9. IPv6基础介绍--IPv6路由基础--DHCPv6原理与配置——总结

    一.IPv6基础介绍 1.IPv6是Internet工程任务组(IETF)设计的一套规范,它是网络层协议的第二代标准协议,也是IPv4(Internet Protocol Version 4)的升级版 ...

  10. IS-IS LSDB详解(华为设备)

    概述: IS-IS协议主要有两大功能:子网依赖功能和子网无关功能.子网依赖功能就是建立和维护邻接关系的功能,而子网无关功能则主要用于执行和管理和管理链路状态信息的交换和路由计算,具体可以分为四个过程. ...

最新文章

  1. 【干货】你如何寻找APP?发现优秀 APP 的一些途径
  2. Qt for QNX
  3. JFinal开发环境搭建,JFinal开发案例
  4. C++智能指针的几种用法
  5. Android插件实战总结之TwsPluginFramework
  6. 帆软动态显示参数据控件(invisible,visible)
  7. 软件测试用例的书写方式以及测试模板
  8. GB2312编码理解
  9. 工厂选择设备问题matlab,dsp实验一 常见问题教程
  10. 使用Go语言实现单词翻译功能/simpledict 命令行词典
  11. python 城市地图_Python查询一个城市的谷歌地图的经度和纬度
  12. 大厂技术博客学习(2)​——5G时代下淘宝直播高清低延时技术jie秘
  13. 数据库插入数据报错Unknown error finalizing or resetting statement (19: UNIQUE constraint failed:xxx.xxx)
  14. hp 打印机更改 wifi direct 的密码
  15. Simulink代码生成: Relay模块及其代码
  16. Google Firebase ANE 使用教程
  17. 学习记录:UnityHDRP高清渲染管线学习 day1
  18. 新浪码农因加班错失年会77万特等奖,当事人称:心态崩了,想离职
  19. 钢铁电商平台的Docker容器云平台建设实践
  20. Android 入门指引 从零基础学安卓怎么开始

热门文章

  1. android扫描局域网中的所有ip,NMAP扫描局域网内在线IP
  2. 股票补仓计算机在线计算,补仓股价计算器,股票补仓:计算器
  3. 数值计算软件有哪些?一款国产软件非常亮眼。
  4. 《C专家编程》读书笔记(1)
  5. 中国全国行政区代码表
  6. lede usb启动_OpenWrt LEDE 自动挂载USB U盘的方法
  7. java版本导致ASDM连不上ASA
  8. easyswoole的安装
  9. 离散数学 --- 特殊图 --- 欧拉图,哈密顿图
  10. 智慧城市大数据运营中心,发挥大数据价值