OpenStack Networking - Netron

XLCloud-Networking_Needs_Quantum.pdf: continuar da página 9

Guias de Integração com Openflow:

Floodlight

Trema

Ryu

RestProxy Plugin

OpenVSwitch

Neutron

Serviço OpenStack que lida com rede (OpenStack Networking)

Implementação de referência


Retirada do OpenStack Admin Guide

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.

Compute host config (OVS)


Retirada do OpenStack Guide

Compute host config (OVS)


Retirada do OpenStack Guide

Networking API

Networking oferece uma API para definir interface entre os serviços OpenStack (e.g.: vNICs de máquinas virtuais com Nova). Os recursos alocados possuem dois modos: controle e operação

Abstrações que descrevem os recursos: Modo de operação:

Agentes

Agentes são softwares que devem rodar em cada nó que lida com pacotes de dados.

Neutron Manager

Camadas do Neutron

  1. presentation: configuration managers, operational APIs, ...
  2. virtual network application: L2 switch, firewall, load balancer, router, ...
  3. controller: floodlight, cisco overdrive, nicira OVP, ...
  4. management: VxLan, STT, OpenFlow, SNMP, nvGRE, GRE, VLANs, NetConf, ...
  5. devices: Nexus 5k, UCS, Open vSwitch, OF-enabled switches, Linux Bridge, ...

Neutron Plugin

Neutron Plugin são pedaços de código que implementam chamadas da API Neutron.

Componentes:

Um plugin geralmente é formado por códigos para:

Plugins disponíveis:

Observações

Esquemas e relações

Quantum Plugin BaseClass

Dúvidas ou perguntas para orientação

Definições

Referências

Visitadas

Não visitadas


Neutron e SDN (Em esboço ainda)


Neutron Server

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

Agentes

Agentes enviam mensagens para o Quantum-Server via RPC (rabbitmq ou qpid) ou Netron API padrão (REST).

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

Netron API

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

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

Netron Plugins

Projeto original assume um modelo muito básico para realizar isolamento através de Linux VLANs e tabelas IP. Netron 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

Netron Command Line Application

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

OpenStack Compute

Interagem com Netron através da API. Comunica com Netron 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 - Netron 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

Floodlight

Floodlight pode ser utilizado como o backend para o OpenStack Network utilizando um Plug-in para Neutron. O Neutron expõe um modelo de networking-as-a-service via API REST implementada no Floodlight. Dois componentes principais são utilizados para essa integração: um aplicativo Virtual Switch do Floodlight que implementa a Neutron API e o o RestProxy plugin que conecta o Neutron com o Floodlight.

Conexão entre FloodLight e Neutron em dois passos:

  1. Rodar o REST Proxy Plug-in no neutron-server. Esse plugin foi projetado para rodar como parte do Neutro service.
  2. Habilitar o Virtual Switch no Floodlight (antigo Virtual Network Filter). Esse é o módulo que implementa um isolamento de nível 2 (baseado em MAC) em redes openflow. Esse módulo vem com o Floodlight por padrão e não depende do Neutron ou do Openstack para ser executado.

Not to do