DHCPv6中继
DHCPv6中继概述
DHCPv6中继,负责转发来自客户端方向或服务器方向的DHCPv6报文,协助DHCPv6客户端和DHCPv6服务器完成地址配置功能。如果DHCPv6服务器和DHCPv6客户端不在同一个网段范围内,则需要通过DHCPv6中继来转发报文,这样可以避免在每个网段范围内都部署DHCPv6服务器,既节省了成本,又便于进行集中管理。
- 中继客户端消息或者Relay-Forward消息:中继代理既中继来自客户端的消息,也中继来自其他中继代理的Relay-Forward消息。如果收到被中继的合法消息,则构建新的Relay-Forward消息,并且将收到的DHCP消息(不包括任何IP首部和UDP首部)复制到新消息中的Relay
message选项。如果配置了其他选项,中继代理还将添加配置选项到Relay-Forward消息中。消息主要封装内容如表5-6所示:
表5-6 DHCPv6中继Relay-Forward消息封装说明
字段
封装说明
IP首部源地址
消息出接口的IPv6全球单播地址。
IP首部目的地址
- 如果消息入接口上配置了服务器或其他中继代理的单播地址,则使用该地址发送单播报文。
- 否则向All_DHCP_Servers组播地址(FF05::1:3)发送组播报文。
IP首部hop limit
- 如果目的地址是All_DHCP_Servers组播地址(FF05::1:3),设置hop limit为32。
- 如果目的地址为单播地址,设置为255。
UDP首部源端口
设置为547。
UDP首部目的端口
设置为547。
DHCPv6 Relay-Forward消息hop-count
- 如果从客户端收到的报文,设置为零。
- 如果从其他中继代理收到的Relay-Forward报文,消息中的hop-count超过了最大跳数,则抛弃该消息;否则设置为收到消息中的hop-count字段值加1。
DHCPv6 Relay-Forward消息link-address
- 如果从客户端收到的报文,设置为报文入接口的全球单播地址或者链路本地地址。服务器将根据该地址确定应当从哪条链路分配地址和其他配置信息给客户端。
- 如果从其他中继代理收到的Relay-Forward报文,设置为零。
DHCPv6 Relay-Forward消息peer-address
设置为收到报文的IP首部源地址。
- 中继Relay-Reply消息:中继代理从Relay-Reply消息中提取Relay message选项,并将该选项作为DHCPv6报文中继到Relay-Reply消息的peer-address中指定的地址。消息主要封装内容如表5-7所示:
服务器通过Relay-Forward消息中的Relay message选项收到来自客户端的原始消息,会将响应消息作为Relay message选项封装到Relay-Reply消息中,通过中继代理返回给客户端。
当服务器需要发送Reconfigure消息给客户端,却无法直接与客户端交换消息时,会将Reconfigure消息作为Relay message选项封装到Relay-Reply消息中,通过中继代理发送给客户端。
Relay-Reply消息必须经由中继客户端原始消息的中继代理返回到客户端,所以服务器必须通过预先与客户端互动或者通过某些外部机制,获得客户端地址和中继代理地址,以便能够构建正确的Relay-Reply消息。
客户端通过DHCPv6中继首次申请地址示例
客户端通过中继代理首次申请地址的过程如图5-5所示。
DHCPv6客户端发送SOLICIT报文请求服务器的位置。DHCPv6中继将SOLICIT报文封装在新构造的Relay-Forward报文的Relay message选项中,并将Relay-Forward报文发送给DHCPv6服务器。
DHCPv6服务器从Relay-Forward报文中解析出DHCPv6客户端的SOLICIT报文,将ADVERTISE响应报文封装在Relay-Reply报文的Relay message选项中,发送给DHCPv6中继。中继接收到Relay-Reply报文后,解析Relay message选项,将ADVERTISE报文发送到客户端。
DHCPv6客户端发送REQUEST报文请求地址和其他参数。DHCPv6中继将REQUEST报文封装在新构造的Relay-Forward报文的Relay message选项中,并将Relay-Forward报文发送给DHCPv6服务器。
DHCPv6服务器从Relay-Forward报文中解析出DHCPv6客户端的REQUEST报文,分配IPv6地址和其他参数后,将REPLY响应报文封装在Relay-Reply报文的Relay message选项中,发送给DHCPv6中继。中继接收到Relay-Reply报文后,解析Relay message选项,将REPLY报文发送到客户端。
DHCPv6中继支持选项功能
- Interface-ID选项:
DHCPv6中继代理可以发送Interface-ID(option18)选项,以便标识收到客户端消息的接口。服务器会根据Interface-ID选项内容,进行参数配置决策,并且把Interface-ID选项拷贝到回应中继代理的Relay-Reply消息中,中继代理收到Relay-Reply报文,则必须将报文从Interface-ID选项标识的接口转发出去。Interface-ID选项只存在于Relay-Forward和Relay-Reply报文中。
- Remote-ID选项:
DHCPv6中继代理可以发送Remote-iD(Option37)选项,携带DUID、端口、VLAN等信息。服务器可以根据Remote-ID选项内容,进行地址分配、参数配置、前缀代理的决策。
- Subscriber-ID选项:
DHCPv6中继代理可以发送Subscriber-ID(Option38)选项,携带客户端的MAC等物理信息。服务器可以根据Subscriber-ID选项内容,进行地址分配、参数配置、前缀代理的决策。
DHCPv6中继支持前缀分配机制
在一个层次化的网络拓扑结构中,不同层次的IPv6地址分配一般是手工指定的。手工配置IPv6地址扩展性不好,不利于IPv6地址的统一规划管理。在标准协议中提出了DHCPv6 PD(Prefix Delegation)前缀代理分配机制。
如图5-6所示,通过DHCPv6前缀代理机制,CPE不需要再手工指定用户侧链路的IPv6地址前缀,它只需要向DHCPv6 Server发送携带IA_PD选项的DHCPv6报文提出前缀分配申请,DHCPv6 Server便可以分配合适的地址前缀给CPE,CPE把获得的前缀(一般前缀长度小于64)进一步自动细分成64位前缀长度的子网网段,把细分的地址前缀再通过路由通告(RA)至用户网络,实现IPv6主机的地址自动配置,完成整个系统层次的地址布局。
如果CPE与DHCPv6 Server之间部署有DHCPv6 Relay,那么Relay不仅要在Client和Server间转发报文,而且还要在DHCPv6 Server为Client分配PD前缀时,建立到达Client的网段路由,并将网段路由发布出去,使得位于核心网的外部设备可以学习到达CPE的路由,从而用户设备能正常访问网络。另外,当Client发送Release报文释放PD前缀或PD前缀到期未续租时还要删除到达Client的网段路由。