DHCP relay的工作过程以及DHCP option82的作用

时间:2024-02-20 06:58:31

       DHCP一家子(不包括DHCPv6)包括DHCP Client、DHCP Server、DHCP Relay以及DHCP Snooping,之后我会一个个详细学习之后发出来。今天讲述一下DHCP relay,之前先学习的DHCP Sever,还没来得及整理,之后会发出来,今天先说说DHCP Relay。

      DHCP Relay(DHCP中继),也叫作DHCP Agent,主要用于DHCP Client和DHCP Server不在一个网段时,DHCP Client又有自动地址分配的请求。下面说一下工作过程:

      DHCP Client广播发送请求报文,如果同一存在DHCP Server,则Server给客户端提供地址分配。如果本网络不存在DHCP Server,那么就需要DHCP Realy充当代理,来代替DHCP Client寻找DHCP Server,同时也把Server发送给客户端的响应报文转发给客户端。

具体流程如下:假设本网络内没有DHCP Server    

 Dhcp relay会根据接收到的报文的op字段判断是请求报文还是响应报文:

1)如果收到请求报文的话(可能来自dhcp cllient也可能是dhcp relay),检查如果带有option82字段,则丢弃(来自client,单层relay)或者用自己的option82替换(来自dhcp relay,多层relay)。如果没有携带option82,则DHCP Relay需要添加这个选项,并修改giaddr字段为自己的ip地址,hops字段加1,如果DHCP Relay知道DHCP Server的地址那么就单播出去,否则就广播出去(看如何配置)。Dhcp server收到请求报文后,解析option82字段得到dhcp relay的信息,同时发送响应报文,响应报文带有给DHCP Client的配置信息以及option82字段。

2)如果收到的是响应报文(可能来自DHCP Relay也可能是DHCP Server),那么dhcp relay会剥离option82字段,然后一层层下发到HDCP Client

交互过程如此下图:

dhcp relay process

说明:

请求报文包括:Discover、Request、Inform、Decline、Release

响应报文包括:Offer、ACK、NAK

DHCP Client正常请求报文是广播报文,如果是DHCP Server直接发送给DHCP Server的那就需要看Client是否设置广播标志位。如果设置则是广播,未设置就是单播。DHCP server若发送给DHCP Relay则是单播。DHCP Relay 发送给DHCP Client要检查是否设置广播标志位(响应报文的这个位的设置和请求报文设置的是相同值),DHCP Relay到DHCP Relay是单播。

Option82:

Option82选项是dhcp报文options中对dhcp relay应用设置的选项。在RFC3046中讲述了option82的作用

格式为:

dhcp option82

Code:82(option的code号)

Len:N(为sub-options的长度。设置了option82后,至少设置一个sub-option)

Sub-options:

sub-options的格式为:

dhcp option82

现在有三种sub-opt:

Sub-opt:1(circuit id表示代理电路id)一般配合sub-opt2一起使用

Len:n(sub-option value的长度)

Sub-option value:

不同的模式有不同的规定值:

在标准模式下通常是接收报文的二层端口号(port)和vlan号

另外还有华为固网模式的格式为:

AccessNodeIdentifier eth frame/slot/subslot/port/:vlan

AccessNodeIdentifier:接入点标识

eth :以太网的类型

Frame:框号

Slot:槽号

Subslot:子槽号

Port:端口号

Vlan:vlan id

Sub-opt:2(remote id表示代理远程id)

Len:n(sub-option value的长度)

Sub-option value:

接收报文的设备mac地址

Sub-opt:5(link selection 表示链路选择)

Len:n(sub-option value的长度)

Sub-option value:

一般不设置

参考RFC 3046,这篇讲述的是DHCP Option82