OpenStack Networking » History » Version 5
Raphael Cóbe, 26 Jun 2013 11:38
| 1 | 1 | Thiago Paiva | h1. OpenStack Networking |
|---|---|---|---|
| 2 | 1 | Thiago Paiva | |
| 3 | 1 | Thiago Paiva | |
| 4 | 1 | Thiago Paiva | h2. QUANTUM SERVER |
| 5 | 1 | Thiago Paiva | |
| 6 | 4 | Raphael Cóbe | quantum-server: processo principal do OpenStack Networking - OSN. Expõe OSN API e |
| 7 | 1 | Thiago Paiva | encaminha as requisições de usuário para o plugin. |
| 8 | 1 | Thiago Paiva | |
| 9 | 1 | Thiago Paiva | |
| 10 | 1 | Thiago Paiva | h2. AGENTES |
| 11 | 1 | Thiago Paiva | |
| 12 | 5 | Raphael Cóbe | Agentes falam RPC (rabbitmq ou qpid) ou OSN API padrão. |
| 13 | 1 | Thiago Paiva | |
| 14 | 1 | Thiago Paiva | * plugin agent (quantum-*-agent): roda em cada hypervisor para realizar |
| 15 | 1 | Thiago Paiva | configuração local do vswitch. Dependente do plugin escolhido. |
| 16 | 1 | Thiago Paiva | * dhcp agent (quantum-dhcp-agent). serviço de DHCP para redes dos tentents. |
| 17 | 1 | Thiago Paiva | Usado quando as VMs devem receber IP de forma automatizada. Endereços via |
| 18 | 1 | Thiago Paiva | DHCP. Requer no mínimo dnsmasq 2.59. Configurado especificamente para o plugin |
| 19 | 1 | Thiago Paiva | utilizado. |
| 20 | 1 | Thiago Paiva | * L3 agent (quantum-l3-agent). Encaminhamento L3/NAT para oferecer acessos as |
| 21 | 1 | Thiago Paiva | redes externas. Roteador que conecta as redes L2. Fica no Network Node. Usa: |
| 22 | 1 | Thiago Paiva | Linux IP Stack e IP tables. |
| 23 | 1 | Thiago Paiva | |
| 24 | 1 | Thiago Paiva | |
| 25 | 5 | Raphael Cóbe | $ sudo ovs-vsctrl add-br br-ext |
| 26 | 1 | Thiago Paiva | $ sudo ovs-vsctrl add-port br-ext eth1 |
| 27 | 1 | Thiago Paiva | * não gerenciado pelo OpenStack. Deve-se garantir que existam rotas entre o |
| 28 | 1 | Thiago Paiva | serviço de metadata do host e cada rede privada. |
| 29 | 1 | Thiago Paiva | * nós que rodem quantum-l3-agent não devem ter endereços IP especificados |
| 30 | 1 | Thiago Paiva | manualmente para a NIC conectada a rede externa e sim uma faixa de IPs que |
| 31 | 1 | Thiago Paiva | poderá ser usada para roteamento. |
| 32 | 1 | Thiago Paiva | |
| 33 | 1 | Thiago Paiva | * não é possível executar ping para IPs fixos. Ao invés disso, usar: router |
| 34 | 1 | Thiago Paiva | network namespace (qrouter-<UUID>) |
| 35 | 1 | Thiago Paiva | $ ip netns exec qrouter-<UUID> ping <fixed ip> |
| 36 | 1 | Thiago Paiva | |
| 37 | 1 | Thiago Paiva | |
| 38 | 1 | Thiago Paiva | h2. OSN API |
| 39 | 1 | Thiago Paiva | |
| 40 | 2 | Thiago Paiva | Serviço de redes virtual. Define conexões e endereços para os outros serviços. |
| 41 | 1 | Thiago Paiva | |
| 42 | 1 | Thiago Paiva | * Network: segmento L2 isolado (análogo a uma VLAN). |
| 43 | 1 | Thiago Paiva | * Subnet: bloco de endereços de IP (V4 ou V6) e estados de configuração |
| 44 | 1 | Thiago Paiva | associados. |
| 45 | 1 | Thiago Paiva | * Port: ponto para conexção de dispositivos. |
| 46 | 3 | Thiago Paiva | <pre> |
| 47 | 3 | Thiago Paiva | network <-- port |
| 48 | 3 | Thiago Paiva | | | |
| 49 | 3 | Thiago Paiva | -------------- subnet |
| 50 | 3 | Thiago Paiva | </pre> |
| 51 | 1 | Thiago Paiva | |
| 52 | 3 | Thiago Paiva | > OBS: fixed_ips é atributo do port |
| 53 | 3 | Thiago Paiva | > port.fixed_ips = {<IP1>:<subnet1>, <IP2>:<subnet2>, ...} |
| 54 | 1 | Thiago Paiva | |
| 55 | 1 | Thiago Paiva | |
| 56 | 1 | Thiago Paiva | h2. OSN PLUGINS |
| 57 | 1 | Thiago Paiva | |
| 58 | 1 | Thiago Paiva | Projeto original assume um modelo muito básico para realizar isolamento através |
| 59 | 1 | Thiago Paiva | de Linux VLANs e tabelas IP. OSN introduz o conceito de plugin, que é a |
| 60 | 1 | Thiago Paiva | implementação de requisições lógicas de API em forma de um back-end acoplável. |
| 61 | 1 | Thiago Paiva | Padrão: Open vSwitch e Linux Bridge. Plugin deve estar em cada nó que usa |
| 62 | 1 | Thiago Paiva | pacotes de dados. |
| 63 | 1 | Thiago Paiva | |
| 64 | 1 | Thiago Paiva | Os plugins devem processar chamadas de API e gerenciar vSwitches. |
| 65 | 1 | Thiago Paiva | |
| 66 | 1 | Thiago Paiva | OpenVSwitch: open vswitch, quantum-plugin-openvswitch-agent |
| 67 | 1 | Thiago Paiva | |
| 68 | 1 | Thiago Paiva | $ sudo ovs-vsctrl add-br br-int |
| 69 | 1 | Thiago Paiva | |
| 70 | 1 | Thiago Paiva | * br-int: integration bridge, nome padrão e fixo. |
| 71 | 1 | Thiago Paiva | |
| 72 | 1 | Thiago Paiva | |
| 73 | 1 | Thiago Paiva | h2. OSN Standard Architecture |
| 74 | 1 | Thiago Paiva | |
| 75 | 1 | Thiago Paiva | * cloud controller host (Cloud Controller Node): quantum-server, nova-api, |
| 76 | 1 | Thiago Paiva | nova-scheduler, keystone, RabbitMQ, MySQL. |
| 77 | 1 | Thiago Paiva | * network gateway host (Network Node): quantum-metadata-agent, |
| 78 | 1 | Thiago Paiva | quantum-dhcp-agent, quantum-l3-agent, quantum-*-plugin-agent |
| 79 | 1 | Thiago Paiva | * conjunto de hypervisors para rodar VMs. Compute node: nova-compute, quantum-*-plugin-agent |
| 80 | 1 | Thiago Paiva | |
| 81 | 1 | Thiago Paiva | OBS: cloud controller host e network gateway host podem ser combinados em uma |
| 82 | 1 | Thiago Paiva | máquina, porém é recomendado que exista um network gateway host separado para |
| 83 | 1 | Thiago Paiva | evitar restrições de CPU entre os encaminhamentos realizados pelo |
| 84 | 1 | Thiago Paiva | quantum-l3-agent e outros serviços OS. |
| 85 | 1 | Thiago Paiva | |
| 86 | 1 | Thiago Paiva | * DataNetwork: comunicação de dados dentro da implementação de nuvem. |
| 87 | 1 | Thiago Paiva | * Management Network: comunicações entre componentes OS. |
| 88 | 1 | Thiago Paiva | * External Network: oferece acesso à internet à implementação OS. |
| 89 | 1 | Thiago Paiva | * API Network: expõe todas as APIs do OS, incluindo a OSN API para os tenants. |
| 90 | 1 | Thiago Paiva | Pode ser a própria rede externa utilizando o recurso de subredes para separação. |
| 91 | 1 | Thiago Paiva | |
| 92 | 1 | Thiago Paiva | |
| 93 | 1 | Thiago Paiva | h2. OSN CLIENT |
| 94 | 1 | Thiago Paiva | |
| 95 | 1 | Thiago Paiva | Requer: python-pyparsing, python-cliff, python-quantumclient |
| 96 | 1 | Thiago Paiva | |
| 97 | 1 | Thiago Paiva | |
| 98 | 1 | Thiago Paiva | h2. OSC (OS Compute) |
| 99 | 1 | Thiago Paiva | |
| 100 | 1 | Thiago Paiva | Interagem com OSN através da API. Comunica com OSN API para connectar cada vNIC |
| 101 | 1 | Thiago Paiva | da VM em uma rede em particular. |
| 102 | 1 | Thiago Paiva | |
| 103 | 1 | Thiago Paiva | h2. Neutron Client |
| 104 | 1 | Thiago Paiva | |
| 105 | 1 | Thiago Paiva | agent-* |
| 106 | 1 | Thiago Paiva | |
| 107 | 1 | Thiago Paiva | dhcp-agent-* |
| 108 | 1 | Thiago Paiva | |
| 109 | 1 | Thiago Paiva | ext-* (extensões) |
| 110 | 1 | Thiago Paiva | |
| 111 | 1 | Thiago Paiva | floatingip-* |
| 112 | 1 | Thiago Paiva | |
| 113 | 1 | Thiago Paiva | l3-agent-* |
| 114 | 1 | Thiago Paiva | |
| 115 | 1 | Thiago Paiva | lb-* (loading balance) |
| 116 | 1 | Thiago Paiva | lb-pool-* |
| 117 | 1 | Thiago Paiva | lb-healthmonitor-* |
| 118 | 1 | Thiago Paiva | lb-member-* |
| 119 | 1 | Thiago Paiva | lb-vip-* |
| 120 | 1 | Thiago Paiva | |
| 121 | 1 | Thiago Paiva | net-* |
| 122 | 1 | Thiago Paiva | |
| 123 | 1 | Thiago Paiva | queue-* |
| 124 | 1 | Thiago Paiva | |
| 125 | 1 | Thiago Paiva | router-* |
| 126 | 1 | Thiago Paiva | |
| 127 | 1 | Thiago Paiva | security-* |
| 128 | 1 | Thiago Paiva | |
| 129 | 1 | Thiago Paiva | subnet-* |
| 130 | 1 | Thiago Paiva | |
| 131 | 1 | Thiago Paiva | quota-* |
| 132 | 1 | Thiago Paiva | |
| 133 | 1 | Thiago Paiva | security-group-* |
| 134 | 1 | Thiago Paiva | |
| 135 | 1 | Thiago Paiva | h2. EXEMPLOS - OSN API |
| 136 | 1 | Thiago Paiva | |
| 137 | 1 | Thiago Paiva | $ quantum net-create net1 |
| 138 | 1 | Thiago Paiva | $ quantum net-create net2 --provider:network_type local |
| 139 | 1 | Thiago Paiva | $ quantum net-create --tenant-id=<id> net1 |
| 140 | 1 | Thiago Paiva | |
| 141 | 1 | Thiago Paiva | $ quantum subnet-create net1 192.168.0.2/22 --name subnet1 |
| 142 | 1 | Thiago Paiva | |
| 143 | 1 | Thiago Paiva | $ quantum port-create net1 --fixed-ip ip_addr=192.168.2.40 |
| 144 | 1 | Thiago Paiva | $ quantum port-create net1 |
| 145 | 1 | Thiago Paiva | $ quantum port-list --fixed-ips |
| 146 | 1 | Thiago Paiva | $ quantum port-list --tenant-id=<tenant id> |
| 147 | 1 | Thiago Paiva | $ quantum port-list --device-id=<vm id> |
| 148 | 1 | Thiago Paiva | |
| 149 | 1 | Thiago Paiva | * as redes já devem estar criadas para serem adicionadas na instanciação das VMs |
| 150 | 1 | Thiago Paiva | $ nova boot --image=<img id> --flavor=<fl id> --nic net_id=<net id> <vm name> |
| 151 | 1 | Thiago Paiva | |
| 152 | 1 | Thiago Paiva | * para ip fixo (port deve ser criado antes da instanciação) |
| 153 | 1 | Thiago Paiva | $ nova boot --image=<img id> --flavor=<fl id> --nic port_id=<net id> <vm name> |
| 154 | 1 | Thiago Paiva | |
| 155 | 1 | Thiago Paiva | |
| 156 | 1 | Thiago Paiva | h2. FÍSICO -> VIRTUAL |
| 157 | 1 | Thiago Paiva | |
| 158 | 1 | Thiago Paiva | 1) eth0 (VM) |
| 159 | 1 | Thiago Paiva | 2) TAP VNET0 (hypervisor network interface card, VIF, vNIC) |
| 160 | 1 | Thiago Paiva | 3) LINUX BRIDGE qbrXXX (hub, multi NIC, virtual ou físico) |
| 161 | 1 | Thiago Paiva | 4) veth pair {qcbXXX, qvoXXX} (entra de um lado e sai do outro) |
| 162 | 1 | Thiago Paiva | 5) open switch bridge br-int (virtual switch, integration bridge,todos as VM estão |
| 163 | 1 | Thiago Paiva | conectadas a ele) |
| 164 | 1 | Thiago Paiva | 6) veth pair (int-br-eth1, phy-br-eth1) |
| 165 | 1 | Thiago Paiva | 7) physical network interface card eth1 |
| 166 | 1 | Thiago Paiva | |
| 167 | 1 | Thiago Paiva | h2. RYU |
| 168 | 1 | Thiago Paiva | |
| 169 | 1 | Thiago Paiva | $ sudo pip install ryu |
| 170 | 1 | Thiago Paiva | $ sudo apt-get install quantum-plugin-ryu-agent openvswitch-switch |
| 171 | 1 | Thiago Paiva | python-openvswitch openvswitch-datapath-dkms |
| 172 | 1 | Thiago Paiva | |
| 173 | 1 | Thiago Paiva | * ovs_ryu_plugin.ini e quantum.conf devem ser copiados em cada nó que tenha |
| 174 | 1 | Thiago Paiva | agente ryu |
| 175 | 1 | Thiago Paiva | |
| 176 | 1 | Thiago Paiva | |
| 177 | 1 | Thiago Paiva | h2. NOT TO DO |
| 178 | 1 | Thiago Paiva | |
| 179 | 1 | Thiago Paiva | *Proxies ainda não implementados então não se deve executar: |
| 180 | 1 | Thiago Paiva | ** nova-manage |
| 181 | 1 | Thiago Paiva | ** nova para administrar recursos de rede |