Общие сведения об интерфейсе поставщика NDIS PacketDirect
Интерфейс поставщика PacketDirect (PDPI) расширяет NDIS с помощью модели ускоренного ввода-вывода как для физических, так и для виртуальных сред, что может увеличить количество пакетов, обрабатываемых в секунду на порядок, и значительно уменьшить дрожание по сравнению с традиционным путем ввода-вывода NDIS.
История
Традиционная модель ввода-вывода в Windows была реализована как многоцелевая общая платформа ввода-вывода, предназначенная для работы с несколькими типами носителей с различными характеристиками и где сеть была лишь одним из аспектов общей системы. Сегодня, когда виртуализация сети стала распространенной технологией в центрах обработки данных, традиционная модель ввода-вывода NDIS в ОС Windows Server не только недостаточно для того, чтобы идти в ногу с интенсивными сетевыми рабочими нагрузками, которые, как мы ожидаем, становятся все более распространенными, но и неприемлемой моделью для использования ресурсов для обработки сетевых операций ввода-вывода. В средах центров обработки данных нередко реализуется одноцеловый компьютер, предназначенный для работы с сетями, выполняя функции, которые обычно зарезервированы для аппаратных устройств. Примерами таких сетевых устройств являются программные подсистемы балансировки нагрузки, устройства DDoS и шлюзы переадресации. Что еще хуже, существуют механизмы в других ОС для ускорения операций ввода-вывода, которые делают эти альтернативные ОС предпочтительными платформами для создания приложений с интенсивным использованием сети, таких как виртуальные устройства.
PacketDirect (PD) расширяет текущую модель NDIS с помощью ускоренного сетевого пути ввода-вывода, оптимизированного для пакетов в секунду (pps), что на порядок выше, чем в традиционной модели ввода-вывода NDIS. Это достигается с помощью:
- Уменьшение задержки
- Уменьшенные циклы/пакет
- Линейное ускорение с использованием дополнительных системных ресурсов
PacketDirect существует параллельно с традиционной моделью. Новый путь к PD можно использовать, если приложение предпочитает его, а для его размещения достаточно ресурсов оборудования. PD не предназначен для замены традиционной модели ввода-вывода и предполагает, что клиент, записывая в интерфейс PD, будет предъявлять строгие требования к секционированиям для базовых ресурсов на основе системной топологии. PD — это новый высокоскоростной путь передачи данных, который поможет системе Windows заменить рабочие нагрузки с высоким уровнем pps, которые традиционно выполнялись на оборудовании, что позволит владельцам центров обработки данных сэкономить миллионы затрат на инфраструктуру.
Основные понятия PacketDirect
Pd работает, позволяя клиенту PD явно управлять сетевым трафиком с сетевого адаптера (NIC). PD предоставляет клиенту PD управление высокопроизводительной функцией отправки и получения сетевой карты через клиентский интерфейс PacketDirect (PDCI). Внутри функции отправки и получения PDCI сопоставляются непосредственно с PDPI. Функции отправки и получения PD работают с очередями PD, созданными клиентом PD на сетевых картах с поддержкой PD. PD предоставляет клиентам PD возможность устанавливать настраиваемые фильтры для очень конкретных типов трафика или очень универсального трафика в зависимости от потребностей клиента PD. Это позволяет клиенту PD направлять определенные входящие пакеты в свои очереди PD. Обработка пакетов в модели PD всегда выполняется в контексте выполнения, который принадлежит клиенту PD (или управляется или координируется). Драйвер сетевого адаптера с поддержкой PD полностью пассивный, то есть он не перенаправлял входящие пакеты или признаки завершения для отправленных пакетов клиенту PD в контексте выполнения, принадлежащем драйвере, таком как DPC или рабочий поток.
Если клиент PD не понимает, как обработать пакет, или получает управляющий пакет в одной из своих очередей, таких как ARP, LLDP или другие пакеты протокола, клиент PD может перенаправить пакет обратно в текущий путь ввода-вывода для обработки. Это позволяет PD продолжать обрабатывать пакеты, для которых у него есть контекст, и не тратить циклы на контрольный трафик.
Важно На сетевой адаптер может быть один поставщик PD и один клиент PD. Таким образом, в одной системе может быть несколько клиентов и поставщиков PD.
Клиент PD контролирует ресурсы, выделенные для PD в системе. В случае большого сетевого трафика клиент PD отвечает за минимизацию рабочей нагрузки, чтобы ОПЕРАЦИОННая система реагировала на другие рабочие нагрузки.
Платформа PacketDirect, реализованная Windows, сопоставляет клиентский интерфейс с интерфейсом поставщика. Платформа управляет управлением буфером и возможностью повторной вставки пакетов, полученных через PD, в текущий путь получения NDIS. Он также обрабатывает взаимодействие с клиентами PD для удовлетворения требований к пути управления NDIS, таких как отключение сетевого адаптера, переход к низкому энергопотреблению, завершение работы системы и неожиданное удаление таким образом, чтобы не препятствовать производительности пути к данным PD.
Интерфейс поставщика PacketDirect (PDPI)
PDPI позволяет драйверам сетевого адаптера предоставлять высокопроизводительные функции отправки и получения в ОС Windows. Реализованные функции являются подмножеством полной функциональности MiniPort и являются универсальными для всех сетевых адаптеров, реализующих PD. Справочную документацию по PDPI см. в справочнике по интерфейсу поставщика PacketDirect (PDPI).
Клиентский интерфейс PacketDirect (PDCI)
PDCI позволяет сторонним службам и приложениям Windows (например, Load-Balancer, NAT, vm-switch и т. д.) ускорить путь к данным, используя модель ввода-вывода PacketDirect с помощью клиентов PD. Этот интерфейс является интерфейсом уровня 2 так же, как и текущий интерфейс отправки и получения NDIS. Функция MAIN, которую предоставляет PDCI (в дополнение к доступу к PDPI), — это выделение и управление буфером пакетов PD, обратный канал для внедрения пакетов обратно в обычный путь получения NDIS, обработка событий питания NDIS/PnP.