Нет трафика на ВМ
TL; DR
(1) Только первые 2 VF передаются на виртуальную машину
а также
(2) Нет трафика на ВМ.
Настроить
- Хост Ubuntu 16.04
- Intel 82599 (поддерживает SR-IOV), подключенный через PCIe
- Водитель
ixgbe
- Гостевая ВМ - Ubuntu 16.10
- Использование Libvirt на KVM в качестве гипервизора
Процесс
Попытка использовать функциональность SR-IOV. обновление sriov_numvfs
4 в обеих сетевых картах - 4 VF на сетевую карту. Запуск виртуальной машины и подключение ее к обеим сетевым платам на Intel 82599.
Использование генератора трафика для проверки настроек.
вопрос
До запуска ВМ, ixgbe
Драйвер создает еще 8 ссылок (по одной на VF) на хосте, все они видны в ip link
и в состоянии вниз. После активации виртуальной машины только 2 VF (первая VF в каждом NIC, что означает функцию 0) передается в VM.
Перед активацией ВМ
- проверка
lspci
на хосте отображаются как сетевые карты, так и все VF на шине PCI. - проверка
ip link
на хосте показаны все 8 ссылок, созданных драйвером (состояние не соответствует назначенным MAC-адресам), и обе карты NIC.
После активации ВМ
- проверка
lspci
на хосте отображаются как сетевые карты, так и все VF на шине PCI. - проверка
lspci
в гостевой показывает только 2 переданных VF. - проверка
ip link
на хосте после активации виртуальной машины отображаются оставшиеся 6 каналов, созданные драйвером (с назначенными MAC-адресами), отображаются как сетевые карты, так и все VF (с назначенными MAC-адресами). - проверка
ip link
в гостевой системе показаны 2 NIC, которые подключены к VF (с MAC-адресами - правильный и соответствующий HW). - Проверка libvirt в хосте (
virsh net-dumpxml
на обеих сетевых картах) показывает все 8 VF, отсортированных и подключенных к виртуальной машине.
но...
Нет трафика на ВМ.
Есть трафик от виртуальной машины наружу.
Есть идеи?
Работаю над этим
1
Пытаясь обойти процесс автоматизации драйвера, перейдя по этой ссылке, виртуальная машина запускается с двумя мостовыми сетями к сетевым картам с двумя картами. ВМ работает нормально, и трафик идет от обеих сетевых плат. Затем новое устройство добавляется с помощью virsh attach-device
Команда и команда выполняется успешно. Во-первых, файл XML содержит только адрес PCI VF. Никаких видимых изменений не видно в ВМ, а не в ip link
, не в lspci
... ничего такого. --config
флаг был поднят, поэтому состояние проверяется снова после перезагрузки, и снова ничего. Затем PCI-адрес NIC (PF) добавляется явно, а также явно указывается MAC-адрес VF. После virsh attach-device
с явными параметрами - все равно ничего.
2
Если перейти по базовому принципу, перейдя по этой ссылке, устройство PCI отсоединяется от хоста вручную и вводится в виртуальную машину. Конечным результатом является то, что карта PCIe не является vHBA и, следовательно, не совместима с NPIV (см. Здесь), и сообщение об ошибке уведомляет об этом соответственно.
3
Другой подход заключается в использовании passthrough
режим пересылки, как описано здесь. Это не желательный режим работы, поскольку он намеренно разрешает доступ только одному vNIC к одному NIC за раз (и вся цель заключается в использовании функциональности SR-IOV), и поведение аналогично hostdev
режим пересылки: если имя сетевого адаптера указано в pf
Директива работает как основной мост, и если имя VF указано в pf
Директива нет ничего.
4
Подобно подходу Passthrough, есть подход MACvTap, описанный здесь, здесь и здесь. Это не применимо. ixgbe
Драйвер устанавливает имена ссылок VF, поэтому они обрабатываются по-разному. Нет возможности указать имена VF в качестве интерфейсов, а указание имени интерфейса приводит к передаче интерфейса, аналогичного passthrough
режим пересылки. Это может быть связано с версией драйвера, версией ядра, версией libvirt или их комбинацией.
5
Смена SFP, похоже, тоже не помогает. Изменен на несколько разных моделей, ни одна из которых не работала с картой Intel, кроме той, которая действительно получала питание, и связь была установлена (была видна на шине PCIe), но не была обнаружена ixgbe
Драйвер, ни какие-либо другие модули ядра и интерфейсы не были созданы.
1 ответ
Параметры ядра, используемые для использования процессора, немного отличались от параметров других процессоров.
Игра с параметрами решила обе проблемы.
Основная идея по-прежнему заключается в активации функции SR-IOV в ядре (Intel или AMD) и передаче параметров ядра, чтобы установить его в режиме "сквозной передачи".
Используйте эту ссылку для дополнительных опций параметров ядра.