Поделиться через


Обзор объединения пакетов

Некоторые сетевые протоколы IP версии 4 (IPv4) и IP версии 6 (IPv6) включают передачу пакетов в широковещательные или многоадресные адреса. Эти пакеты принимаются множеством узлов в подсети IPv4/IPv6. В большинстве случаев сервер, получающий эти пакеты, ничего с ними не делает. Таким образом, прием этих нежелательных многоадресных или широковещательных пакетов приводит к ненужным обработке и потреблению энергии в принимающем узле.

Например, узел A отправляет запрос LLMNR (разрешение имен с использованием многоадресной рассылки в пределах одного сегмента сети) в подсети IPv6, чтобы разрешить имя узла B. За исключением узла A, этот запрос LLMNR получается всеми узлами в подсети. За исключением узла B, стек протокола TCP/IP, который выполняется на других узлах, проверяет пакет и определяет, что пакет не предназначен для него. Поэтому стек протоколов отклоняет пакет и вызывает NdisReturnNetBufferLists, чтобы вернуть пакет драйверу мини-порта.

Начиная с NDIS 6.30 сетевые адаптеры могут поддерживать объединение пакетов NDIS. Уменьшая количество прерываний приема путем объединения случайных широковещательных или многоадресных пакетов, затраты на обработку и потребление электроэнергии значительно сокращаются в системе.

Объединение пакетов включает в себя следующие действия:

  1. Вышележащие драйверы, такие как стек протоколов TCP/IP, определяют фильтры получения NDIS, используемые для фильтрации широковещательных и многоадресных пакетов. Верхние драйверы загружают эти фильтры в базовый минипорт-драйвер, поддерживающий объединение пакетов. После скачивания минипорт-драйвер настраивает сетевой адаптер с фильтрами приема пакетов.

    Для получения дополнительной информации об этих фильтрах см. фильтры приема пакетов объединения.

  2. Полученные пакеты, соответствующие фильтрам приема, кэшируются или сформированына сетевом адаптере. Адаптер не создает прерывание приема для объединенных пакетов. Вместо этого адаптер прерывает хост при возникновении другого аппаратного события.

    При формировании прерывания адаптер должен сигнализировать о событии приёма посредством прерывания. Это позволяет сетевому адаптеру обрабатывать объединенные пакеты, полученные сетевым адаптером.

    Например, сетевой адаптер, который поддерживает объединение пакетов, может создать прерывание приёма, когда происходит одно из следующих событий:

    • Срок действия аппаратного таймера, чей период истечения соответствует максимальному значению задержки объединения подходящего фильтра приема.

    • Доступное пространство в аппаратном буфере объединения достигает минимального уровня, заданного адаптером.

    • Получен пакет, который не соответствует фильтру объединения.

    • Произошло другое событие прерывания, например событие завершения отправки.

    Дополнительные сведения об этом процессе см. в разделе Обработка фильтров приема пакетов.

Следующие моменты относятся к поддержке объединения пакетов с помощью NDIS:

  • NDIS поддерживает объединение пакетов для пакетов, полученных через порт NDIS по умолчанию (порт 0), назначенный физическому сетевому адаптеру. NDIS не поддерживает объединение пакетов на портах NDIS, назначенных виртуальным сетевым адаптерам. Дополнительные сведения см. в разделе Обзор портов NDIS.

  • NDIS поддерживает объединение пакетов для пакетов, полученных в очереди получения по умолчанию сетевого адаптера. Эта очередь получения имеет идентификатор NDIS_DEFAULT_RECEIVE_QUEUE_ID.