问题描述
DHCP 广泛应用于各种园区网络,实现有线或无线终端的 IP 地址自动配置;
随着网络规模的不断扩大,网络设备不断增多,企业内不同的用户可能分布在不同的网段(而 DHCP 要求 Client、Server 处于同个二层网络)。在正常情况下单台 DHCP Server 无法满足多个网段的地址分配需求。如果还需要通过 DHCP Server 分配 IP 地址,则需要跨网段(二层网络)发送 DHCP 报文;
解决方案
DHCP Relay(DHCP 中继),它是为解决 DHCP Client 和 DHCP Server 不在同个广播域而提出的,提供对 DHCP 广播报文的中继转发功能;
原理简述
DHCP Relay 负责转发 DHCP Server 和 DHCP Client 间的 DHCP 报文,协助 DHCP Server 向 DHCP Client 动态分配网络参数的设备;
DHCP Relay 能够把 DHCP Client 的广播报文“透明地”传送到其它广播域的 DHCP Server 上,同样也能够把 DHCP Server 端的应答报文“透明地”传送到其它广播域的 DHCP Client;
客户端首次接入网络
有中继场景时 DHCP Client 首次接入网络的工作原理:
发现阶段
当 DHCP Relay 接收到 DHCP Client 广播发送的 DHCP DISCOVER 报文后,通过路由转发将 DHCP 报文单播发送到 DHCP Server 或下一跳 DHCP Relay;
当 DHCP Relay 收到 DHCP DISCOVER 报文后,处理规则为:
1)检查 DHCP 报文中的 Hops 字段,如果大于 16,则丢弃 DHCP 报文;否则,将 Hops=Hops+1(表明经过一次 DHCP Relay),并继续下面的操作;
2)检查 DHCP 报文中的 Giaddr 字段。如果是 0,将 Giaddr 字段设置为接收 DHCP DISCOVER 报文的接口 IP 地址。如果不是 0,则不修改该字段,继续下面的操作;
3)将 DHCP 报文的目的 IP 地址改为 DHCP Server 或下一跳 DHCP Relay 的 IP 地址,源地址改为中继连接客户端的接口地址(及 DHCP Relay 的接口地址),通过路由转发将 DHCP 报文单播发送到 DHCP Server 或下一跳中继;
提供阶段
当 DHCP Server 接收到 DHCP DISCOVER 报文后,根据其中的 Giaddr 字段,来选择地址池为 DHCP Client 分配相关网络参数:
1)选择与报文中 Giaddr 字段为同一网段的地址池,并为客户端分配 IP 地址等参数;
2)然后向 Giaddr 字段标识的 DHCP Relay 单播发送 DHCP OFFER 报文;
DHCP Relay 收到 DHCP OFFER 报文后:
1)检查报文中的 Giaddr 字段,如果不是接口的地址,则丢弃该报文;否则,继续下面的操作;
2)DHCP Relay 检查报文的广播标志位:==1,则将 DHCP OFFER 报文广播发送给 DHCP Client;否则将 DHCP OFFER 报文单播发送给 DHCP Client;
选择阶段
中继接收到来自客户端的 DHCP REQUEST 报文的处理过程同“发现阶段”;
确认阶段
中继接收到来自服务器的 DHCP ACK 报文的处理过程同“提供阶段”;
特性说明
WIP
应用场景
DHCP 在大型园区网络中的典型应用
配置案例
Huawei DHCP Relay
设备作为 DHCP 中继时,需要把接收到的 DHCP Client 的 DHCP 请求报文转发给 DHCP Server,以实现 DHCP Server 通过 DHCP 中继为 DHCP Client 分配 IP 地址等网络参数。通过配置此任务,为 DHCP Client 指定 DHCP Server 的 IP 地址,以实现向 DHCP Server 上申请 IP 地址;
设备支持两种配置方法: