Редактирование:
VYOS-VPP
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Подготовка сервера с VYOS для работы с VPP == === 1. Настройки BIOS === В BIOS включить настройку Intel VT-d (или как там она называется) '''Примечание:''' на всякий случай можно еще включить X2APIC = Enable (непонятно, влияет или нет - но лучше включить) === 2. Настройки ядра VYOS === В файле '''/boot/grub/grub.cfg.d/vyos-versions''' найти следующую строчку: set boot_opts="boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/VYOS-1.5-Rolling" и добавить в конец: " intel_iommu=on iommu=pt" т.е. полная строка должна быть: set boot_opts="boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/VYOS-1.5-Rolling intel_iommu=on iommu=pt" Далее выполнить перезагрузку. '''Примечание:''' после перезагрузки файл '''/boot/grub/grub.cfg.d/vyos-versions''' перезаписывается, так что придется потом снова строку "set boot_opts = ..." перезаписывать, пока не придумается как ее там зафиксировать. В противном случае после следующей перезагрузки поддержка IOMMU опять слетит. После перезагрузки нужно убедиться, что режим IOMMU включен, для этого выполнить команду:<syntaxhighlight lang="sh"> dmesg | grep IOMMU </syntaxhighlight>Вывод должен быть примерно таким:<blockquote>'''[ 0.046990] DMAR: IOMMU enabled''' [ 0.109294] DMAR-IR: IOAPIC id 1 under DRHD base 0xfbffc000 IOMMU 1 [ 0.109297] DMAR-IR: IOAPIC id 2 under DRHD base 0xfbffc000 IOMMU 1 [ 0.372778] DMAR: IOMMU feature sc_support inconsistent [ 0.372779] DMAR: IOMMU feature dev_iotlb_support inconsistent [ 0.386236] AMD-Vi: AMD IOMMUv2 functionality not available on this system - This is not a bug.</blockquote> === 3. Настройка работы сетевых карт в режиме VFIO === Проверка сетевых карт через ip link (обращаем внимание на eth0 и eth1):<blockquote>1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 22:41:4d:03:1d:70 brd ff:ff:ff:ff:ff:ff altname enp6s0 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 40:a6:b7:93:42:44 brd ff:ff:ff:ff:ff:ff altname enp3s0f0 altname ens4f0 4: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 link/ether 40:a6:b7:93:42:45 brd ff:ff:ff:ff:ff:ff altname enp3s0f1 altname ens4f1 5: pim6reg@NONE: <NOARP,UP,LOWER_UP> mtu 1452 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000</blockquote>Убеждаемся, что загружены модули ядра для VFIO:<syntaxhighlight lang="sh"> sudo modprobe vfio sudo modprobe vfio-pci sudo modprobe vfio_iommu_type1 </syntaxhighlight>Проверяем, что PCI-код соответствует устройству (eth0 = 0000:03:00.0, eth1 = 0000:03:00.1):<syntaxhighlight lang="sh"> lspci -k -v -s 0000:03:00.0 lspci -k -v -s 0000:03:00.1 </syntaxhighlight>Вывод должен быть примерно таким (обращаем внимание на текущий Kernel driver in use):<blockquote>03:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02) Subsystem: Intel Corporation Ethernet Converged Network Adapter X710-2 Physical Slot: 4 Flags: bus master, fast devsel, latency 0, IRQ 27, NUMA node 0, IOMMU group 28 Memory at 383ffe800000 (64-bit, prefetchable) [size=8M] Memory at 383fff808000 (64-bit, prefetchable) [size=32K] Expansion ROM at fbd80000 [disabled] [size=512K] Capabilities: <access denied> '''Kernel driver in use: i40e''' Kernel modules: i40e</blockquote>Для обеих сетевух отвязываем их от текущего драйвера и привязываем к VFIO:<syntaxhighlight lang="sh"> echo 0000:03:00.0 | sudo tee /sys/bus/pci/devices/0000:03:00.0/driver/unbind # 2. Привязываем к vfio-pci echo vfio-pci | sudo tee /sys/bus/pci/devices/0000:03:00.0/driver_override echo 0000:03:00.0 | sudo tee /sys/bus/pci/drivers/vfio-pci/bind # 3. Проверяем lspci -k -s 03:00.0 </syntaxhighlight> Те же манипуляции делаем для 0000:03:00.1 (не забываем в путях к файлам настроек корректно прописать каталог устройства '''0000:03:00.1'''). Убеждаемся, что для обеих сетевух теперь используется драйвер VFIO:<blockquote>03:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02) Subsystem: Intel Corporation Ethernet Converged Network Adapter X710-2 Physical Slot: 4 Flags: fast devsel, IRQ 27, NUMA node 0, IOMMU group 28 Memory at 383ffe800000 (64-bit, prefetchable) [size=8M] Memory at 383fff808000 (64-bit, prefetchable) [size=32K] Expansion ROM at fbd80000 [disabled] [size=512K] Capabilities: <access denied> '''Kernel driver in use: vfio-pci''' Kernel modules: i40e</blockquote> '''Примечание:''' Также в выводе команды ip link интерфейсов eth0 и eth1 теперь не будет, так как они перешли под управление VFIO. === 4. Запуск контейнера для VPP === Создаем сетевое пространство имен NGFW (нужно для корректного запуска контейнера): <syntaxhighlight lang="sh"> sudo ip netns add ngfw </syntaxhighlight>Выполняем запуск контейнера с VPP:<syntaxhighlight lang="sh"> sudo podman run -d --name vpp --network host --privileged --restart always --ulimit core=0:0 --shm-size 4g --volume /var/run/netns:/var/run/netns --volume /var/vpp/netplan:/etc/vpp/netplan --volume /var/log:/var/log --volume /var:/config/shared --env-file /config/vpp/env docker-archive:/home/vyos/vpp-image.tar </syntaxhighlight>'''Примечания:''' # Необходимо убедиться, что все монтируемые каталоги, а также образ и файл env, указанные в команде, лежат на своих местах. # В случае ошибки запуска (может ругаться на то, что контейнер VPP уже существует) следует добавить в команду параметр '''--replace''' Проверяем состояние контейнера:<syntaxhighlight lang="sh"> sudo podman ps </syntaxhighlight> Настраиваем контейнер:<syntaxhighlight lang="sh"> sudo podman cp /home/vyos/vpp.conf vpp:/config/vpp.conf sudo podman restart vpp </syntaxhighlight> === 5. Настройка интерфейсов внутри контейнера VPP: === Заходим внутрь запущенного контейнера:<syntaxhighlight lang="sh"> sudo podman exec -it vpp vppctl </syntaxhighlight>Проверяем состояние интерфейсов:<syntaxhighlight lang="sh"> show interface </syntaxhighlight>Вывод должен быть примерно таким:<blockquote>vpp# show interface Name Idx State MTU (L3/IP4/IP6/MPLS) Counter Count data1 1 down 2026/0/0/0 data2 2 down 2026/0/0/0 local0 0 down 0/0/0/0</blockquote>Включаем интерфейс data1 (ранее в ip link отображался как eth0, подключен к серверу Proxmox #20) и настраиваем IP:<syntaxhighlight lang="sh"> vpp# set interface state data1 up vpp# set interface ip address data1 10.1.100.130/24 show interface address </syntaxhighlight>Выполняем пинг до сетевухи на сервере Proxmox #20 и убеждаемся, что все работает:<blockquote>vpp# ping 10.1.100.25 116 bytes from 10.1.100.25: icmp_seq=1 ttl=64 time=4.1699 ms 116 bytes from 10.1.100.25: icmp_seq=2 ttl=64 time=7.1989 ms 116 bytes from 10.1.100.25: icmp_seq=3 ttl=64 time=1.2026 ms 116 bytes from 10.1.100.25: icmp_seq=4 ttl=64 time=4.1920 ms 116 bytes from 10.1.100.25: icmp_seq=5 ttl=64 time=8.2405 ms Statistics: 5 sent, 5 received, 0% packet loss</blockquote>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «EWiki» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
EWiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
Править код
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Служебные страницы
Инструменты
Ссылки сюда
Связанные правки
Сведения о странице