OpenStack Networking

QUANTUM SERVER

quantum-server: processo principal do OpenStack Networking. Expõe OSN API e
encaminha as requisições de usuário para o plugin.

AGENTES

Agentes falam RPC (rabbitmq ou qpid) ou Standard Networking API.

$ sudo ovs-vsctrl add-br br-ex
$ sudo ovs-vsctrl add-port br-ext eth1

OSN API

Serviço de redes virtual. Define conexões e endereços para os outros serviços.

OBS: fixed_ips é atributo do port
port.fixed_ips = {<IP1>:<subnet1>, <IP2>:<subnet2>, ...}

OSN PLUGINS

Projeto original assume um modelo muito básico para realizar isolamento através
de Linux VLANs e tabelas IP. OSN introduz o conceito de plugin, que é a
implementação de requisições lógicas de API em forma de um back-end acoplável.
Padrão: Open vSwitch e Linux Bridge. Plugin deve estar em cada nó que usa
pacotes de dados.

Os plugins devem processar chamadas de API e gerenciar vSwitches.

OpenVSwitch: open vswitch, quantum-plugin-openvswitch-agent

$ sudo ovs-vsctrl add-br br-int

OSN Standard Architecture

OBS: cloud controller host e network gateway host podem ser combinados em uma
máquina, porém é recomendado que exista um network gateway host separado para
evitar restrições de CPU entre os encaminhamentos realizados pelo
quantum-l3-agent e outros serviços OS.

OSN CLIENT

Requer: python-pyparsing, python-cliff, python-quantumclient

OSC (OS Compute)

Interagem com OSN através da API. Comunica com OSN API para connectar cada vNIC
da VM em uma rede em particular.

Neutron Client

agent-*

dhcp-agent-*

ext-* (extensões)

floatingip-*

l3-agent-*

lb-* (loading balance)
lb-pool-*
lb-healthmonitor-*
lb-member-*
lb-vip-*

net-*

queue-*

router-*

security-*

subnet-*

quota-*

security-group-*

EXEMPLOS - OSN API

$ quantum net-create net1
$ quantum net-create net2 --provider:network_type local
$ quantum net-create --tenant-id=<id> net1

$ quantum subnet-create net1 192.168.0.2/22 --name subnet1

$ quantum port-create net1 --fixed-ip ip_addr=192.168.2.40
$ quantum port-create net1
$ quantum port-list --fixed-ips
$ quantum port-list --tenant-id=<tenant id>
$ quantum port-list --device-id=<vm id>

FÍSICO -> VIRTUAL

1) eth0 (VM)
2) TAP VNET0 (hypervisor network interface card, VIF, vNIC)
3) LINUX BRIDGE qbrXXX (hub, multi NIC, virtual ou físico)
4) veth pair {qcbXXX, qvoXXX} (entra de um lado e sai do outro)
5) open switch bridge br-int (virtual switch, integration bridge,todos as VM estão
conectadas a ele)
6) veth pair (int-br-eth1, phy-br-eth1)
7) physical network interface card eth1

RYU

$ sudo pip install ryu
$ sudo apt-get install quantum-plugin-ryu-agent openvswitch-switch
python-openvswitch openvswitch-datapath-dkms

NOT TO DO

*Proxies ainda não implementados então não se deve executar: