Почему для получения IP-адреса через DHCP требуется несколько секунд?

24

Из любопытства, почему часто требуется несколько секунд для получения конфигурации сети через DHCP, когда ЦП способен обрабатывать миллионы операций в секунду, а проверка связи с маршрутизатором занимает пару миллисекунд?

В моем домашнем окружении с одним WiFi-роутером и примерно 5 устройствами нередко можно увидеть время, например, 5-10 секунд.

Борек Бернард
источник

Ответы:

22

В дополнение к фактическому получению аренды DHCP от сервера DHCP (который обычно не занимает много времени), некоторые серверы сначала проверяют IP-адрес, который он собирается выдать, прежде чем он фактически раздает его, чтобы убедиться, что он еще не используется в сети - время ожидания истекает через несколько секунд. Клиент иногда делает то же самое (опять же, чтобы предотвратить конфликты IP-адресов), что добавит еще немного времени. Кроме того, некоторые клиенты также регистрируют свои записи DNS и т. Д.

Дэн
источник
3
Сервер dhcp в моей работе использует запросы ARP для обнаружения конфликтов IP.
erichui
9

DHCP может занять немного больше времени, потому что он включает серию транзакций не с одним сервером, а со всеми устройствами в сети во время первоначального запроса, так как он отправляет широковещательное сообщение.

Если вы проверите RFC для DHCP,

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

Вы можете ясно видеть, что серия переговоров включает в себя. Сначала клиент отправляет DHCPDISCOVER на все устройства в локальной сети, затем серверы, на которых запущена служба dhcp, возвращают сообщение DHCPOFFER. Клиент может также подождать, чтобы получить ответы от всех доступных серверов DHCP, прежде чем он выберет один. Затем он отправляет DHCPREQUEST с идентификатором, который указывает, какой сервер он выбрал в качестве своего провайдера ip. Наконец он получает DHCPACK со всеми параметрами конфигурации. Это всего лишь краткое изложение «3.1 Клиент-серверное взаимодействие - выделение сетевого адреса» из RFC.

Исходя из моего опыта, dhcp занимает много времени в основном в больших локальных сетях с большим количеством подключенных узлов. В домашней сети только с одним dhcp-сервером (например, WIFI-маршрутизатором) и одним или двумя ПК это довольно быстро.

Даниил Т.
источник
В моей домашней сети с одним WiFi-роутером и примерно 5 устройствами это занимает около 5-10 секунд, что я считаю довольно медленным. Но спасибо за объяснение.
Борек Бернард
убедитесь, что у вас есть один сервер DHCP. Если это всего 5 устройств, вы можете зарезервировать IP-адреса для каждого устройства на сервере DHCP. Но если вам достаточно любопытно, вы можете использовать tcpdump, чтобы посмотреть на фактические переговоры и посмотреть, что является причиной задержки.
Даниил Т.
В зависимости от сервера DHCP, это может занять несколько секунд, независимо от сетевой активности или скорости процессора. Это связано с тем, что сервер сначала запрашивает сеть, чтобы узнать, используется ли адрес, прежде чем он предложит его клиенту, и ему нужно хотя бы немного подождать, пока придут ответы. Этот тайм-аут является частью задержки, которую вы заметили, и он будет существовать даже в самой тихой сети.
ʇsәɹoɈ
2

Две причины (и решения) я обнаружил, когда хотел получать быстрые ответы от моего DHCP-сервера.

1) Мой DHCP выполнил пинг адреса, который он хотел выделить. Это добавило 3 секунды задержки. Я удалил это, изменив конфигурацию DHCP, чтобы сопоставление MAC-адреса и IP-адреса. Это в основном использование DHCP для выделения статического адреса. Это убрало 3-секундную задержку для меня.

2) У меня есть изолированная сеть, однако вы можете получить это время от времени. Был проведен поиск DNS, что привело к задержке получения IP-адреса от DHCP на много секунд. В конфиге DHCP-сервера были опции для нашего домена и DNS-серверов. После удаления параметров DNS и изменения выше, я получил мгновенные ответы с сервера DHCP. (**)

Эти проблемы были тем, что я нашел в моей настройке. Ваш пробег может варьироваться.

ура

ФУНТ

(**) Если бы у меня была копейка за каждый раз, когда неудачный поиск DNS вызывал задержку, которая приводила к странному стуку в аффекте, который приводил к тому, что я почесал голову, у меня было бы много копеек.

LazyBrush
источник
1

Я не знаю, какой у вас сценарий, но в реальном мире вы получаете IP-адрес ... и т. Д. От старого сервера (сервер dhcp всегда тот, на котором установлено самое старое оборудование :)) с большим количеством запросов за брандмауэром , один или несколько маршрутизаторов / коммутаторов ... Latency, cpu power ... и в мире Windows реализация dhcp не так эффективна, как хотелось бы!

C_Sense
источник
1
«В мире Windows реализация dhcp не так эффективна, как хотелось бы!» У вас есть какая-либо документация или источники, подтверждающие сказанное здесь?
mfinni
Нет, но, например ... Linux предоставляет опции DHCP для переключения при сбое очень простым способом. Помимо встроенной функциональности Active Directory в Windows, есть и другие моменты, которые следует учитывать как потенциальные проблемы безопасности.
C_Sense
2
Мне кажется, что вы изрыгаете гиперболу, почерпнутую за годы чтения слишком большого количества сообщений в Интернете. «Microsoft плохая». "Зачем?" «Потому что все так говорят».
Joeqwerty
Вы можете сделать перекрывающиеся области DHCP на серверах DHCP Windows. В win2k8 R2, по-видимому, появилась и новая опция отработки отказа. Может быть, Linux лучше, чем это. Ничто из этого не имеет ничего общего с «эффективностью». А о каких "проблемах безопасности" в Windows DHCP вы говорите? Я попросил у вас источники, и вместо этого вы выдвигаете больше претензий.
mfinni
0

Если у вас проблемы с производительностью с dhcp;

  1. Проверьте задержку сети
  2. Посмотрите на согласование dhcp cap cap. Вы должны быть в состоянии увидеть, что действие занимает много времени. (проблема может быть не с сервером dhcp, кто кого ждет?)
  3. Изучите загрузку и журналы dhcp сервера.
Синий
источник
Это сценарий домашней сети, я обновил вопрос.
Борек Бернард
ಠ_ಠ ВЫ НЕТ ЗАПРОСИТЕ СУПЕРЮЗЕРА ТОГДА?
Абле
Может быть, потому что это связано с сетью и здесь лучшее место для этого?
Кедар