为什么通过DHCP获取IP地址需要几秒钟的时间?

出于好奇,为什么当CPU能够每秒处理数百万次操作并且ping到路由器需要几毫秒时,通常通过DHCP获取networkingconfiguration通常需要几秒钟

在我的家庭环境中有一个WiFi路由器和大约5个设备,看到5-10秒的时间并不罕见。

除了实际从DHCP服务器获取DHCP租约(通常不需要很长时间)之外,一些服务器将首先对它将要发布的IP地址进行ping处理,然后再实际发送,以validation它尚未在networking上使用 – 这需要几秒钟超时。 客户端有时也会这样做(同样,为了防止IP地址冲突),这将增加更多的时间。 然后,最重要的是,一些客户也将注册他们的DNS条目等。

DHCP可能需要更长的时间,因为它涉及一系列交易,而不是单个服务器,而是在初始请求期间与networking上的所有设备一起发送广播消息。

如果您检查DHCP的RFC,

http://www.faqs.org/rfcs/rfc2131.html

你可以清楚地看到涉及的一系列谈判。 客户端在开始时将DHCPDISCOVER发送给LAN上的所有设备,然后运行dhcp服务的服务器返回DHCPOFFER消息。 客户端也可能会等待从所有可用的DHCP服务器获取响应,然后再select一个。 然后它发送一个带有标识符的DHCPREQUEST,该标识符指示它select哪个服务器作为它的IP提供者。 最后它获得所有configuration参数的DHCPACK。 这只是RFC中“3.1客户端 – 服务器交互 – 分配networking地址”的总结。

从我的经验来看,dhcp主要在连接大量节点的大型局域网设置中花费很长时间。 在只有一个DHCP服务器(例如WIFI路由器)和一个或两个电脑的家庭networking中,速度非常快。

有两个原因(和解决scheme),当我想从我的DHCP服务器快速回复时发现。

1)我的DHCP做了想分配地址的ping。 这增加了3秒的延迟。 我通过更改DHCPconfiguration以将MAC地址映射到IP地址来删除此项。 这基本上是使用DHCP来分配一个静态地址。 这为我消除了3秒延迟。

2)我有一个孤立的networking,但是,你可能会得到这个时间。 有一个DNS查询正在完成,这对我来说,导致了从DHCP获取IP地址许多秒的延迟。 在DHCP服务器configuration中有我们的域和DNS服务器的选项。 删除DNS选项和上面的更改后,我得到了从DHCP服务器的即时答复。 (**)

这些问题是我在我的设置中find的。 你的milage可能会有所不同。

干杯

(**)如果每次DNS查询失败导致延迟,导致一个奇怪的敲打的影响,导致我挠头,我会有许多便士,如果我有一分钱。

我不知道你有什么风景,但在现实世界中,你从旧服务器(dhcp服务器始终是具有最旧硬件的服务器)获得IP地址…),并且有很多请求,一个或几个路由器/交换机…延迟,CPU功率…在Windows世界,DHCP的实施没有我们想要的那样高效!

如果您遇到dhcp的性能问题;

  1. 检查networking延迟
  2. 看看封包的DHCP协商。 你应该能够看到需要很长时间的操作。 (问题可能不在dhcp服务器上,谁在等谁?)
  3. 检查DHCP服务器负载和日志。