h1. OpenStack Networking - Netron h2. Netron Standard Architecture !http://docs.openstack.org/trunk/openstack-network/admin/content/figures/1/figures/Quantum-PhysNet-Diagram.png! Imagem retirada da Documentação Openstack Network Admin: http://docs.openstack.org/trunk/openstack-network/admin/ * cloud controller host (Cloud Controller Node): quantum-server, nova-api, nova-scheduler, keystone, RabbitMQ, MySQL. * network gateway host (Network Node): quantum-metadata-agent, quantum-dhcp-agent, quantum-l3-agent, quantum-*-plugin-agent * conjunto de hypervisors para rodar VMs. Compute node: nova-compute, quantum-*-plugin-agent > 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. * DataNetwork: comunicação de dados dentro da implementação de nuvem. * Management Network: comunicações entre componentes OS. * External Network: oferece acesso à internet à implementação OS. * API Network: expõe todas as APIs do OS, incluindo a Netron API para os tenants. Pode ser a própria rede externa utilizando o recurso de subredes para separação. h2. Neutron Server quantum-server: processo principal do Netron. Expõe Netron API e encaminha as requisições de usuário para o plugin. h2. Agentes Agentes enviam mensagens para o Quantum-Server via RPC (rabbitmq ou qpid) ou Netron API padrão (REST). * plugin agent (quantum-*-agent): roda em cada hypervisor para realizar configuração local do vswitch. Dependente do plugin escolhido. * dhcp agent (quantum-dhcp-agent). serviço de DHCP para redes dos tentents. Usado quando as VMs devem receber IP de forma automatizada. Endereços via DHCP. Requer no mínimo dnsmasq 2.59. Configurado especificamente para o plugin utilizado. * L3 agent (quantum-l3-agent). Encaminhamento L3/NAT para oferecer acessos as redes externas. Roteador que conecta as redes L2. Fica no Network Node. Usa: Linux IP Stack e IP tables. ** Deve-se garantir que existam rotas entre o serviço de metadata do host e cada rede privada. ** Nós que rodem quantum-l3-agent não devem ter endereços IP especificados manualmente para a NIC conectada a rede externa e sim uma faixa de IPs que poderá ser usada para roteamento.
$ sudo ovs-vsctrl add-br br-ext $ sudo ovs-vsctrl add-port br-ext eth1* não é possível executar ping para IPs fixos. Ao invés disso, usar: router network namespace (qrouter-
$ ip netns exec qrouter-h2. Netron API Serviço de redes virtual. Define conexões e endereços para os outros serviços. * Network: segmento L2 isolado (análogo a uma VLAN). * Subnet: bloco de endereços de IP (V4 ou V6) e estados de configuração associados. * Port: ponto para conexção de dispositivos.ping
network <-- port
| |
-------------- subnet
> fixed_ips é atributo do port
> port.fixed_ips = {$ sudo ovs-vsctrl add-br br-int* br-int: integration bridge, nome padrão e fixo. h2. Netron Command Line Application Requer: python-pyparsing, python-cliff, python-quantumclient h2. OpenStack Compute Interagem com Netron através da API. Comunica com Netron API para connectar cada vNIC da VM em uma rede em particular. h2. 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-* h2. Exemplos - Netron API
$ quantum net-create net1 $ quantum net-create net2 --provider:network_type local $ quantum net-create --tenant-id=* as redes já devem estar criadas para serem adicionadas na instanciação das VMsnet1 $ 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= $ quantum port-list --device-id=
$ nova boot --image=* para ip fixo (port deve ser criado antes da instanciação)--flavor=
--nic net_id=
$ nova boot --image=h2. 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 h2. Ryu--flavor=
--nic port_id=
$ sudo pip install ryu $ sudo apt-get install quantum-plugin-ryu-agent openvswitch-switch python-openvswitch openvswitch-datapath-dkms* ovs_ryu_plugin.ini e quantum.conf devem ser copiados em cada nó que tenha agente ryu h2. 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: # Rodar o REST Proxy Plug-in no neutron-server. Esse plugin foi projetado para rodar como parte do Neutro service. # 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. h2. Not to do * Proxies ainda não implementados então não se deve executar: ** nova-manage ** nova para administrar recursos de rede