「DHCP」- Relay,中继

  CREATED BY JENKINSBOT

问题描述

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 在大型园区网络中的典型应用