Что такое SR-IOV

SR-IOV (Single Root Input/Output Virtualization, виртуализация ввода-вывода с единым корнем) — это спецификация, которая позволяет устройству ввода-вывода PCIe выглядеть как несколько отдельных физических устройств PCIe. Спецификация SR-IOV была создана и поддерживается консорциумом PCI SIG[1] (PCI Special Interest Group), с целью обеспечения совместимости, с помощью стандартной спецификации.

В SR-IOV вводится идея физических функций PF (Physical Functions) и виртуальных функций VF (Virtual Functions). Физические функции (PF) — это полнофункциональные функции PCIe; виртуальные функции (VF) — это «облегченные» функции, с ограниченными ресурсами конфигурации (подробности — ниже).

SR-IOV требует поддержки в BIOS, а также в экземпляре операционной системы или гипервизоре, работающем на оборудовании (Bare Metal), при этом требуется программная поддержка в экземпляре операционной системы или гипервизоре.

PF — это полные функции PCIe, которые управляются и используются так же, как и любое другое устройство PCIe. У PF есть возможность конфигурации, то есть, настройки или управления устройством PCIe при помощи PF, поэтому PF имеет все возможности передавать данные в устройство и из него.

VF делают то же самое, но не имеют ресурсов конфигурации, и имеют возможность только вводить и выводить данные. При помощи VF нельзя сконфигрурировать устройство, потому что это изменит основную PF и, следовательно, все остальные VF. То есть, конфигурация может произведена только через PF. Поскольку VF нельзя рассматривать как полноценное устройство PCIe, то ОС или гипервизор должны знать, что VF не являются полноценными устройствами PCIe. Следовательно, для SR-IOV требуется поддержка ОС или гипервизора, чтобы экземпляр ОС или гипервизор могли правильно распознавать и использовать PF и VF.

Итак, если есть устройство PCIe с поддержкой SR-IOV в системе с соответствующей поддержкой BIOS и оборудования, а также в экземпляре ОС или гипервизор с с поддержкой SR-IOV, то имеется возможность для этого устройства PCIe представлять несколько экземпляров самого себя для ОС или гипервизора. Количество виртуальных экземпляров, которые могут быть представлены, зависит от конфигурации устройства.

В спецификации PCI SIG для SR-IOV указано, что каждое устройство может иметь до 256 VF. В зависимости от рассматриваемого устройства SR-IOV, оно может выглядеть по-разному.

Например, четырехпортовая сетевая интерфейсная карта SR-IOV (NIC) представляет собой четыре устройства, каждое с одним портом. Каждое из этих устройств может иметь до 256 VF (однопортовых сетевых карт), что теоретически составляет 1024 VF. В этом случае каждая VF, по существу, будет представлять один порт NIC.

Двухпортовый адаптер главной шины HBA(Host Bus Adapter) с поддержкой SR-IOV представляет собой одно устройство с двумя портами. С 256 VF это приведет к 512 портам HBA, распределенным по 256 двухпортовым виртуальным HBA.

Однако, это, конечно, теоретические максимумы. Поскольку каждая VF требует реальных аппаратных ресурсов, практические ограничения будут. В настоящее время для большинства устройств 64 VF является верхним пределом.

Точно так же поддержка SR-IOV может быть реализована в сетевых картах Gigabit Ethernet. Такая карта теоретически может (согласно спецификации PCI SIG на SR-IOV) представлять собой до 256 виртуальных сетевых карт vNIC. Каждая из этих виртуальных карт vNIC будет дискретной и отделенной от экземпляра ОС или гипервизора, но физический коммутатор Ethernet не будет знать об этих виртуальных функциях. Коммутаторы по умолчанию не будут отражать некоторые типы входящего трафика через порт (от одной VF) обратно на тот же порт (к другой VF). Это может привести к неожиданным результатам.

SR-IOV имеет свои ограничения. VF должны быть того же типа, что и PF. Например, невозможно иметь VF, которые представляли бы себя как устройство одного типа, когда PF представлял бы себя как устройство другого типа. Кроме того, виртуальные функции обычно нельзя использовать для настройки фактического физического устройства, хотя это зависит от реализации. Спецификация SR-IOV допускает, что некоторые сетевые карты с поддержкой SR-IOV могут иметь функцию переключения VF (где сетевая карта может коммутировать трафик между VF без помощи физического коммутатора), в то время как другие сетевые карты могут не иметь функции коммутации VF (в этом случае VF не смогли бы общаться друг с другом без наличия физического коммутатора).

SR-IOV позволяет обойти гипервизор, предоставляя виртуальным машинам возможность подключаться к VF и совместно использовать один физический сетевой адаптер. Однако использование SR-IOV не означает автоматически, что обход гипервизора также будет использован.

PCI SIG также разрабатывал отдельную спецификацию SR-IOV, которая позволяет нескольким системам совместно использовать устройства PCIe. Эта спецификация, известная как Multi-Root IOV (MR-IOV), позволит нескольким системам совместно использовать VF PCIe.  


[1] PCI Special Interest Group некоммерческая организация, основанная в 1992 году. Задача PCI SIG состоит в развитии и управлении основанными на шине PCI стандартами передачи данных. Совет директоров PCI SIG состоит из представителей компаний Intel, Microsoft, IBM, AMD, Sun Microsystems, HP, Broadcom, Agilent Technologies и NVIDIA.

Об авторе Алексей Шалагинов

Независимый эксперт
Запись опубликована в рубрике NFV с метками , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.