Использование OpenvSwitch с DPDK в Ubuntu 16.04

Я пытаюсь настроить openvswitch с DPDK в Ubuntu 16.04 с помощью пакета openvswitch-switch-dpdk. Я использую сервер HP DL380 Gen-8 с картой Intel 82599ES Dual Port 10G.

Я могу связать порты на плате Intel с драйвером DPDK (пробовал и с vfio-pci, и с uio_pci_generic) успешно, но не могу добавить эти интерфейсы к мосту OVS, так как я продолжаю получать сообщение об ошибке could not open network device dpdk0 (No such device). Я следую процедуре из по этой ссылке .

Любая помощь в этом отношении будет принята с благодарностью.

Выход сервера

  • VT-d включен в BIOS, а iommu включен в grub

     root@kvmtwo:~# cat /proc/cmdline
    
     BOOT_IMAGE=/vmlinuz-4.4.0-22-generic root=/dev/mapper/kvmtwo--vg-root ro iommu=pt intel_iommu=on
    
  • Огромные страницы включены

    root@kvmtwo:~# cat /proc/meminfo |grep -i huge
    AnonHugePages:    135168 kB
    HugePages_Total:    1024
    HugePages_Free:      512
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    
  • Два порта 10G на сетевой карте Intel 82599 настроены для использования драйвера uio_pci_generic

    root@kvmtwo:~# dpdk_nic_bind -s
    Network devices using DPDK-compatible driver
    
    ============================================
    
    0000:07:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv=uio_pci_generic unused=ixgbe
    0000:07:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv=uio_pci_generic unused=ixgbe
    
    
    
    Network devices using kernel driver
    
    ===================================
    
    0000:03:00.0 'NetXtreme BCM5719 Gigabit Ethernet PCIe' if=eno1 drv=tg3 unused=uio_pci_generic
    0000:03:00.1 'NetXtreme BCM5719 Gigabit Ethernet PCIe' if=eno2 drv=tg3 unused=uio_pci_generic *Active*
    0000:03:00.2 'NetXtreme BCM5719 Gigabit Ethernet PCIe' if=eno3 drv=tg3 unused=uio_pci_generic
    0000:03:00.3 'NetXtreme BCM5719 Gigabit Ethernet PCIe' if=eno4 drv=tg3 unused=uio_pci_generic
    
    
    
    Other network devices
    
    =====================
    
    <none>
    
  • Содержимое /etc/default/openvswitch-switch и /etc/dpdk/dpdk.conf

    #/etc/default/openvswitch-switch
    
    DPDK_OPTS='--dpdk -c 0x1 -n 4 -m 4096,4096 --vhost-owner libvirt-qemu:kvm --vhost-perm 0664'
    
    
    
    /etc/dpdk/dpdk.conf
    
    NR_2M_PAGES=1024
    
    NR_1G_PAGES=4
    
  • Openvswitch работает и использует библиотеки DPDK

    root@kvmtwo:~# ovs-vsctl show
    44ea2456-b7dc-4b76-a7da-222483ea08af
    ovs_version: "2.5.0"
    
    
    
    root@kvmtwo:~# ps -ef|grep ovs|grep dpdk
    
    root      1629     1  0 14:47 ?        00:00:00 ovs-vswit... --dpdk -c 0x1 -n 4 -m 4096,4096 --vhost-owner libvirt-qemu:kvm --vhost-perm 0664 -- unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/var/log/openvswitch/ovs-vswitchd.log --pidfile=/var/run/openvswitch/ovs-vswitchd.pid --detach --monitor
    root      1630  1629  0 14:47 ?        00:00:03 ovs-vswitchd --dpdk -c 0x1 -n 4 -m 4096,4096 --vhost-owner libvirt-qemu:kvm --vhost-perm 0664 -- unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/var/log/openvswitch/ovs-vswitchd.log --pidfile=/var/run/openvswitch/ovs-vswitchd.pid --detach --monitor
    
  • Я могу добавить мост OVS:

    root@kvmtwo:~# ovs-vsctl show
    44ea2456-b7dc-4b76-a7da-222483ea08af
    Bridge "ovsbr0"
    Port "ovsbr0"
    
        Interface "ovsbr0"
    
            type: internal
    
    ovs_version: "2.5.0"
    
  • Я не могу добавить порты 10G с драйвером DPDK к мосту OVS.

    root@kvmtwo:~# ovs-vsctl add-port ovsbr0 dpdk0 -- set Interface dpdk0 type=dpdk
    ovs-vsctl: Error detected while setting up 'dpdk0'.  See ovs-vswitchd log for details.
    
    
    
    root@kvmtwo:~# ovs-vsctl show
    44ea2456-b7dc-4b76-a7da-222483ea08af
    Bridge "ovsbr0"
    Port "dpdk0"
        Interface "dpdk0"
            type: dpdk
            error: "could not open network device dpdk0 (No such device)"
    Port "ovsbr0"
        Interface "ovsbr0"
            type: internal
    ovs_version: "2.5.0"
    
    root@kvmtwo:~# tail /var/log/openvswitch/ovs-vswitchd.log
    2016-06-08T10:05:40.251Z|00054|bridge|WARN|could not open network device dpdk0 (No such device)
    
2
задан 14 June 2016 в 06:25

1 ответ

TL; DR:

взгляд на системный журнал и ovs-журнал при запуске OpenvSwitch с dpdk, что идет не так, как надо на dpdk & инициализация портов.

Деталь:

Ваша установка выглядит хорошей до сих пор по сравнению с тем, что я обычно вижу. Учитывая то, что Вы сообщили о наиболее вероятной проблеме, правильно, где последнее сообщение об ошибке указывает на Вас, чтобы "Видеть, что ovs-vswitchd регистрируется для деталей". или в Системном журнале, куда большинство сообщений EAL идет.

В то время, когда Вы добавляете порт, Вы, вероятно, просто видите, что он не может найти его. То, что будет более интересным для Вас, является журналом во время, когда Вы (пере-) запускаете openvswitch. Там необходимо видеть, что он обнаруживает и инициализирует порты dpdk0 и dpdk1 - или в противном случае какие ошибки связаны.

Как ссылка я загрузил мой журнал , разделенный на три столбца для команды, ovs-журнала и системного журнала. Я ожидал бы, что что-то вокруг моей строки 54 не работает правильно в Вашем случае.

должно быть что-то вроде этого:

ovs-ctl[3560]: EAL: PCI device 0000:04:00.1 on NUMA socket 0
ovs-ctl[3560]: EAL:   probe driver: 8086:1528 rte_ixgbe_pmd
ovs-ctl[3560]: EAL:   PCI memory mapped at 0x7f2140000000
ovs-ctl[3560]: EAL:   PCI memory mapped at 0x7f2140200000

Примечание: существует также это руководство Ubuntu для помощи Вам https://help.ubuntu.com/16.04/serverguide/DPDK.html .

2
ответ дан 14 June 2016 в 06:25

Другие вопросы по тегам:

Похожие вопросы: