Архитектура виртуального интерфейса
Архитектура виртуального интерфейса ( VIA ) представляет собой абстрактную модель с нулевым копированием сети на уровне пользователя и является основой для InfiniBand , iWARP и RoCE . Созданная Microsoft , Intel и Compaq , первоначальная версия VIA стремилась стандартизировать интерфейс для высокопроизводительных сетевых технологий, известных как сети системной области (SAN; не путать с сетями хранения данных ).
Сети — это общий ресурс. При использовании традиционных сетевых API, таких как API сокетов Беркли , ядро участвует в каждом сетевом взаимодействии. Это представляет собой огромное узкое место в производительности, когда задержка является проблемой.
Одной из классических разработок в вычислительных системах является виртуальная память — комбинация аппаратного и программного обеспечения, создающая иллюзию частной памяти для каждого процесса. В той же школе мысли к виртуальному сетевому интерфейсу, защищенному за пределами процесса, можно получить доступ на уровне пользователя. С помощью этой технологии «потребитель» управляет своими собственными буферами и расписанием связи, а «провайдер» занимается защитой.
Таким образом, сетевая карта (NIC) предоставляет процессу «частную сеть», и процессу обычно разрешается иметь несколько таких сетей. Виртуальный интерфейс (VI) VIA относится к этой сети и является просто местом назначения коммуникационных запросов пользователя. Связь осуществляется через пару VI, по одному на каждом из обрабатывающих узлов, участвующих в передаче. При обмене данными «обход ядра» пользователь управляет своими собственными буферами.
Еще одним аспектом традиционных сетей является то, что поступающие данные помещаются в заранее выделенный буфер, а затем копируются в указанный пользователем конечный пункт назначения. Копирование больших сообщений может занять много времени, поэтому полезно отказаться от этого шага. Еще одной классической разработкой в вычислительных системах является прямой доступ к памяти (DMA), при котором устройство может напрямую обращаться к основной памяти, в то время как ЦП свободен для выполнения других задач.
В сети с «удаленным прямым доступом к памяти» ( RDMA ) отправляющий сетевой адаптер использует DMA для чтения данных в указанном пользователем буфере и передачи их как автономное сообщение по сети. Затем принимающий сетевой адаптер использует DMA для помещения данных в указанный пользователем буфер. Промежуточное копирование отсутствует, и все эти действия выполняются без участия ЦП, что дает дополнительное преимущество в виде более низкой загрузки ЦП.
Чтобы сетевой адаптер действительно мог получить доступ к данным через DMA, страница пользователя должна находиться в памяти. В VIA пользователь должен «закрепить» свои буферы перед передачей, чтобы ОС не могла выгрузить страницу на диск. Это действие — одно из немногих, в которых задействовано ядро, — привязывает страницу к физической памяти. Чтобы гарантировать, что только процесс, владеющий зарегистрированной памятью, может получить к ней доступ, сетевым картам VIA во время связи требуются ключи разрешения, известные как «теги защиты».
Таким образом, по сути, VIA — это стандарт, определяющий обход ядра и RDMA в сети. Он также определяет библиотеку программирования под названием «VIPL». Это было реализовано, в частности, в cLAN от Giganet (теперь Emulex ). Однако основной вклад VIA заключался в создании основы для стандартов InfiniBand , iWARP и RoCE.
Внешние ссылки
[ редактировать ]- Заметки Usenix о VIA
- Распределенные корпоративные сети
- Архитектура виртуального интерфейса , книга от Intel