В этой короткой, но информативной статье расскажем, что такое SR-IOV (Single Root I/O Virtualization) и как эта технология позволяет снизить задержки при доставке пакета на сетевой порт виртуальной машины.

Производительность виртуальных сетевых функций является одним из стоп-факторов широкого распространения концепции виртуализации сетевых сервисов или NFV (см. 10 причин медленной адаптации технологий NFV). Под производительностью понимается скорость обработки трафика в виртуальных сетевых средах, которая в основном упирается в пропускную способность сетевого стека Linux и дополнительные задержки, вызванные использованием виртуального коммутатора в гипервизоре. Первая задача может быть частично решена с использованием библиотек Intel DPDK, а о решении вопросов «обхода» гипервизора поговорим в этой статье.

Бесспорно, самый короткий путь для трафика самый быстрый. При виртуализации сетевых функций вопрос скорости стоит особенно остро.  Самым производительным вариантом было бы пробросить порт напрямую виртуальной машине, но данный способ очень затратен и не обеспечивает высокую плотность. В этом случае на помощь приходит технология SR-IOV (Single Root I/O Virtualization). Сама по себе технология не новая, но в свете повышения интереса к NFV крайне актуальная.

SR-IOV позволяет напрямую использовать сетевую карту нескольким виртуальным машинам, минуя гипервизор, а также предоставляя независимые прерывания и прямой доступ к памяти (DMA) каждой машины с помощью технологии VT-d (Virtualization Technology for directed I/O). SR-IOV_descriptionПри использовании SR-IOV чипсет делится на так называемые «виртуальные функции» (Virtual Function или VF). Не путать с VNF (Virtual Network Function), это два абсолютно разных понятия. Каждая VF имеет ограниченный доступ к ресурсам PCIe, достаточным для приема и передачи данных. Входящий трафик распределяется сортировщиком по VF на основании VLAN-тега и MAC-адреса. Помимо VF существует физические функции PF (Physical Function) с полноценным доступом к ресурсам PCIe шины, которую гипервизор видит как классическую сетевую карту.

SR-IOV физические и виртуальные функцииVF работают под PF на том же интерфейсе. В случае необходимости обращения VF к глобальным ресурсам карты (например, чтобы прописать VLAN на сортировщике), это делается через PF c помощью выделенного буфера в памяти “Mailbox”. Также стоит упомянуть о возможности создания моста между VF, что позволяет им общаться напрямую без гипервизора.

Принцип работы SR-IOV

Для лучшего понимания работы SR-IOV, давайте рассмотрим процесс обработки пакета.

SR-IOV принцип доставки пакета1, 2. Пакет приходит и попадает в сортировщик;

  1. На основании VLAN и MAC, пакет отправляется в соответствующую VF;
  2. NIC инициирует DMA операцию для пересылки пакета в виртуальную машину;
  3. Пакет достигает чипсета, где с помощью VT-d происходит трансляция и пакет оказывается в буфере VF драйвера;
  4. Гипервизору сообщается, что Rx транзакция завершена;
  5. Гипервизор генерирует прерывание в виртуальную машину, которое показывает, что Rx транзакция завершена, после чего VF драйвер обрабатывает пакет.

Теперь об ограничениях. SR-IOV имеет ограничение — максимум 64 MAC и VLAN. Ограничение действует на все VF и PF. Это означает, что нельзя создать больше 63 VF (один MAC пойдет на PF). Или, если создать две VF, то на каждую можно пропустить не более 32 разных VLAN.

SDNBLOGGER
SDNBLOGGER - команда SDNBLOG, которая занимается поиском наиболее интересных новостей из мира SDN и NFV, а также публикует статьи по тематике. В команду входят ведущие российские специалисты в области технологий SDN и NFV.

НЕТ КОММЕНТАРИЕВ

ОСТАВЬТЕ КОММЕНТАРИЙ