Usando o OpenvSwitch com DPDK no Ubuntu 16.04

2

Estou tentando configurar o openvswitch com o DPDK no Ubuntu 16.04 usando o pacote openvswitch-switch-dpdk. Estou usando um servidor HP DL380 Gen-8 com uma placa Intel 82599ES Dual Port 10G.

Eu posso vincular as portas na placa Intel ao driver DPDK (tentei com o vfio-pci e uio_pci_generic) com êxito, mas não posso adicionar essas interfaces à ponte OVS, pois continuo recebendo o erro could not open network device dpdk0 (No such device) . Estou seguindo o procedimento de este link .

Qualquer ajuda nesse sentido seria apreciada.

Saída do servidor

  • O VT-d está habilitado no BIOS e o iommu habilitado no 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
    
  • Hugepages está ativado

    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
    
  • Duas portas 10G em uma Intel 82599 NIC estão configuradas para usar o driver 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>
    
  • Conteúdo de /etc/default/openvswitch-switch e /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
    
  • O openvswitch está rodando e usando as bibliotecas 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
    
  • Eu posso adicionar a ponte OVS:

    root@kvmtwo:~# ovs-vsctl show
    44ea2456-b7dc-4b76-a7da-222483ea08af
    Bridge "ovsbr0"
    Port "ovsbr0"
    
        Interface "ovsbr0"
    
            type: internal
    
    ovs_version: "2.5.0"
    
  • Não consigo adicionar as portas 10G com o driver DPDK à ponte 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)
    
por Roy_R 13.06.2016 / 18:43

1 resposta

2

TL; DR:

veja o syslog e o ovs-log ao iniciar o OpenvSwitch com o dpdk, o que está errado no dpdk & amp; inicialização de porta.

Detalhe:

sua configuração parece ser boa até agora, em comparação com o que geralmente vejo. Dado o que você relatou, o problema mais provável está exatamente onde a última mensagem de erro aponta para "Ver log ovs-vswitchd para obter detalhes". ou no Syslog onde a maioria das mensagens EAL vai.

No momento em que você adiciona a porta, provavelmente só vê que não é possível encontrá-la. O que será mais interessante para você é o log no momento em que você (re) inicia o openvswitch. Lá você deve ver descobrindo e inicializando as portas dpdk0 e dpdk1 - ou se não, quais erros estão associados.

Como referência, eu fiz o upload do meu log , dividido em três colunas para comando, ovs-log e syslog. Eu esperaria que algo em torno da minha linha 54 não esteja funcionando corretamente no seu caso.

deve ser algo assim:

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

Observação: há também este guia do Ubuntu para ajudá-lo link .

    
por Christian Ehrhardt 20.06.2016 / 08:04