Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Instalação

Instalar OS: Ubuntu 16.10

Configuração

DPDK:

instalar dpdk:

Code Block
languagebash
sudo apt update

sudo apt install -y dpdk dpdk-dev

Edite o arquivo /etc/dpdk/dpdk.conf e adicione a variável:

Code Block
languagebash
NR_2M_PAGES=2048

Depois aloque a memória via kernel e isole os CPUs que serão alocados pelo DPDK, edite o arquivo /etc/default/grub e adicione:

Code Block
languagebash
GRUB_CMDLINE_LINE_DEFAULT="isolcpus=0-5 hugepages=2048"

O parâmetro anterior (isolcpus) afeta apenas processos do userspace, para evitar que processos do kernel utilizem os CPUs dedicados ao DPDK, instale o pacote sysfsutils:

Code Block
languagebash
sudo apt-get install sysfsutils

 Para restringir os processos do kernel aos cores 6 e 7, adicione a linha abaixo no arquivo /etc/sysfs.conf

Code Block
languagebash
devices/virtual/workqueue/cpumask = c0
devices/virtual/workqueue/writeback/cpumask = c0
Note
Limitando os núcleos utilizados por processos do kernel

Core:

7 6 5 4 3 2 1 0
1 1 0 0 0 0 0 0 = 0xc0 (apenas core6 e core7 serão utilizados)

1 = core habilitado 
0 = core desabilitado

 

Defina as interfaces que usarão o driver dpdk, editando o arquivo /etc/dpdk/interfaces, insira as interface compatíveis com dpdk:

Code Block
languagebash
<bus>      <id>           <driver> (uio_pci_generic ou vfio_pci)

pci 	0000:00:14.0      uio_pci_generic   
pci 	0000:00:14.1      uio_pci_generic    
pci 	0000:00:14.2      uio_pci_generic	
pci 	0000:00:14.3      uio_pci_generic	
pci 	0000:05:00.0      uio_pci_generic   
pci 	0000:05:00.1      uio_pci_generic

Habilite o inicialização das interfaces dpdpks:

Code Block
languagebash
systemctl enable dpdk
Atualize o grub:
Code Block
languagebash
update-grub
Reboot o whitebox:
Code Block
languagebash
reboot

OpenvSwitch:

Instalar pacotes

Code Block
languagebash
sudo apt install -y openvswitch-switch-dpdk

Alterar o deamon do openvswitch padrão para o deamon do openvswitch com suporte a dpdk:

Code Block
languagebash
sudo update-alternatives --set ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk

Reinicie o deamon do openvswitch:

Code Block
languagebash
sudo systemctl restart openvswitch-switch.service
Note

linux_interface_name = ethX, emX, etc ...

Inicializando modulo dpdk do openvswitch:

Code Block
languagebash
# ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true

# ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-socket-mem="4096,0"

# ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=3F

 
# systemctl restart openvswitch-switch
Note
Habilitando os núcleos para dpdk

Core:

7 6 5 4 3 2 1 0
0 0 1 1 1 1 1 1 = 0x3f (core0 a core5 reservados)

1 = core habilitado 
0 = core desabilitado

 

Topologia Física

Para o setup dos Supermicro, sugerimos essa topologia física como padrão.

Image Added


Referência das portas físicas do Supermicro:

Image Added

Tabela DE/PARA:

Equipamento (DE)Porta (DE)Equipamento (PARA)Porta (PARA)Observação
Supermicro #1Porta de Controle (P5)ToRPorta eth 1/4Ligação para plano de Controle
Supermicro #1Porta de Dados 0 (P2)SuperMicro #2Porta de Dados 0 (P2) 
Supermicro #1Porta de Dados 2 (P4)ToRPorta eth 1/3Ligação para plano de Experimentação
Supermicro #1Porta de Dados 4 (P7)dom0eth(X)Bridge br_exp(Y) com dom0
Supermicro #1Porta de Dados 1 (P1)SuperMicro #2Porta de Dados 1 (P1) 
Supermicro #1Porta de Dados 3 (P1)SuperMicro #2Porta de Dados 2 (P4) 
Supermicro #1Porta de Dados 5 (P6)dom0eth(X+1)Bridge br_exp(Y+1) com dom0
Supermicro #2Porta de Dados 4 (P7)dom0eth(X+2)Bridge br_exp(Y+2) com dom0
Supermicro #2Porta de Dados 5 (P6)dom0eth(X+3)Bridge br_exp(Y+3) com dom0
Supermicro #2Porta de Controle (P5)ToRPorta eth 1/5Ligação para plano de Controle
Info

ethX, significa que é a primeira porta disponível no dom0. ethX+1 é a próxima porta disponível.

Info

Bridge é uma interface virtual que é criada no dom0 para viabilizar a experimentação através do framework OCF.
Brige(Y) é a primeira bridge criada (exemplo: br_exp1), enquanto que Bridge br_exp(Y+1) são as bridges seguintes.

Pré-requisitos para configuração do Supermicro

Para configurar o Supermicro é necessário:

  • VGA
  • Teclado USB

O login padrão para essa máquina é:

  • User: whitebox
  • Pass: fibre42

Configurando o Supermicro para plano de controle

A configuração do plano de controle do switch Supermicro, é similar a configuração de interfaces em servidores Debian/Ubuntu.

A interface que deve ser configurada é: enp4s0

O endereçamento esperado para este equipamento é: 10.X.0.10/16 ou 10.X.0.11/16

Info

Para informações de qual endereçamento utilizar acesse esse endereço: 2. FIBRENet's Control Plane - Network addressing for Islands

 

Configurando o openvswitch para inserir controladores, bridge, filas e interface

...

Segue abaixo dois modelos de configuração. Um para criar um switch virtual de 6 portas e outro para criar dois switches virtuais com 4 portas (3 portas físicas e 1 lógica)

...

Code Block
languagebash
sudo ovs-vsctl set-controller br-dpdk0 tcp:<ip controller>:6653

Outros:

Foi detectado um conflito entre a alocação das interfaces pelo DPDK e pelo OVS durante a inicialização. Os passos abaixo devem ser utilizados para mitigar o problema até que uma solução definitiva seja encontrada:

Code Block
languagebash
cat << EOF > /etc/rc.local
#!/bin/bash
 
systemctl restart openvswitch-switch
exit 0
EOF
 
chmod 755 /etc/rc.local
systemctl enable rc-local

ToDo

  •  Adicionar passos para configuração persistente das interfaces do DPDK
  •  Revisar passos para versão 2.6.0
  •  Verificar configuração usando multiplas filas (n-dpdk-rxqs): 
  •  Verificar driver vfio-pci (Não suportado pelo CPU)
  •  Verificar suporte a Jumbo Frame na próxima release (OVS 2.6.0 e DPDK 16.10): https://github.com/openvswitch/ovs/blob/master/INSTALL.DPDK-ADVANCED.md#jumbo

...

Referências

...

 

n-dpdk-rxqs

 

 

controller FlowVisor>:6633