OpenStack Networking » History » Version 36
Thiago Paiva, 22 Jan 2014 08:33
| 1 | 12 | Raphael Cóbe | h1. OpenStack Networking - Netron |
|---|---|---|---|
| 2 | 1 | Thiago Paiva | |
| 3 | 1 | Thiago Paiva | XLCloud-Networking_Needs_Quantum.pdf: continuar da página 9 |
| 4 | 21 | Thiago Paiva | |
| 5 | 34 | Thiago Paiva | |
| 6 | 33 | Raphael Cóbe | h2. Guias de Integração com Openflow: |
| 7 | 33 | Raphael Cóbe | |
| 8 | 33 | Raphael Cóbe | "Floodlight":https://wiki.openstack.org/wiki/Neutron/FloodlightPluginSetup |
| 9 | 33 | Raphael Cóbe | |
| 10 | 33 | Raphael Cóbe | "Trema":https://wiki.openstack.org/wiki/Neutron/NEC_OpenFlow_Plugin |
| 11 | 33 | Raphael Cóbe | |
| 12 | 33 | Raphael Cóbe | "Ryu":https://github.com/osrg/ryu/wiki/OpenStack |
| 13 | 33 | Raphael Cóbe | |
| 14 | 33 | Raphael Cóbe | "RestProxy Plugin":https://wiki.openstack.org/wiki/Neutron/RestProxyPlugin |
| 15 | 33 | Raphael Cóbe | |
| 16 | 33 | Raphael Cóbe | "OpenVSwitch":http://openvswitch.org/openstack/2011/08/01/openstack-quantum-and-open-vswitch-part-ii/ |
| 17 | 33 | Raphael Cóbe | |
| 18 | 33 | Raphael Cóbe | |
| 19 | 1 | Thiago Paiva | h2. Neutron |
| 20 | 1 | Thiago Paiva | |
| 21 | 34 | Thiago Paiva | Serviço OpenStack que lida com rede (OpenStack Networking) |
| 22 | 34 | Thiago Paiva | |
| 23 | 34 | Thiago Paiva | * é uma API para conversar com os tentents |
| 24 | 34 | Thiago Paiva | * oferece recursos dinamicamente |
| 25 | 34 | Thiago Paiva | * criar e configurar redes virtuais |
| 26 | 34 | Thiago Paiva | |
| 27 | 34 | Thiago Paiva | * Neutron é apenas uma camada de abstração que unifica as chamadas de configuração. Quem realmente faz o trabalho é o Neutron Plugin. |
| 28 | 34 | Thiago Paiva | * Neutron controla a virtualização de rede (network services) da mesma forma que Nova controla a virtualização de servidores e instâncias. |
| 29 | 34 | Thiago Paiva | * Neutron fornece uma API para gerenciamento de rede pelos projetos (tenants) |
| 30 | 34 | Thiago Paiva | * Neutron pode definir topologias de rede complexas |
| 31 | 34 | Thiago Paiva | * Neutron consegue lidar com diferentes tecnologias de virtualização de rede. |
| 32 | 34 | Thiago Paiva | |
| 33 | 1 | Thiago Paiva | * Oferece uma API para definir a conexão de rede entre dispositivos de outros serviços OpenStack (e.g.: vNICs de máquinas virtuais com Nova) |
| 34 | 21 | Thiago Paiva | * Periféricos tem dois modos: controle e operação |
| 35 | 1 | Thiago Paiva | * Rede, portas e periféricos |
| 36 | 34 | Thiago Paiva | ** Modo de operação: |
| 37 | 34 | Thiago Paiva | *** Rede: List, get, add, update, remove |
| 38 | 34 | Thiago Paiva | *** Porta: List, get, add, update, remove |
| 39 | 34 | Thiago Paiva | *** Periférico: Get, plug, unplug |
| 40 | 1 | Thiago Paiva | |
| 41 | 1 | Thiago Paiva | |
| 42 | 36 | Thiago Paiva | h2. Implementação de referência |
| 43 | 1 | Thiago Paiva | |
| 44 | 36 | Thiago Paiva | !{width:70%;}Neutron-PhysNet-Diagram.png! |
| 45 | 1 | Thiago Paiva | |
| 46 | 36 | Thiago Paiva | |
| 47 | 36 | Thiago Paiva | h2. Networking API |
| 48 | 36 | Thiago Paiva | |
| 49 | 36 | Thiago Paiva | Abstrações que descrevem os recursos: |
| 50 | 36 | Thiago Paiva | |
| 51 | 36 | Thiago Paiva | * Network: segmento L2 isolado (análogo a VLAN) |
| 52 | 36 | Thiago Paiva | * Subnet: faixa de endereços IP (v4 ou v6) e estado de configuração associado. |
| 53 | 36 | Thiago Paiva | * Port: ponto de conexão para um dispositivo. Também descreve configurações associadas da rede (como MAC e endereço IP usado na porta em questão). |
| 54 | 36 | Thiago Paiva | |
| 55 | 36 | Thiago Paiva | |
| 56 | 34 | Thiago Paiva | h2. Agentes |
| 57 | 1 | Thiago Paiva | |
| 58 | 34 | Thiago Paiva | Agentes são softwares que devem rodar em cada nó que lida com pacotes de dados. |
| 59 | 1 | Thiago Paiva | |
| 60 | 36 | Thiago Paiva | * plug-in agent (neutron-*-agent): roda em cada hypervisor para configuração local do vswitch. |
| 61 | 36 | Thiago Paiva | * dhcp agent (neutron-dhcp-agent): provê serviço DHCP para as redes dos tenants. |
| 62 | 36 | Thiago Paiva | * l3 agent (neutron-l3-agent): provê acesso externo a VMs de dentro das redes dos tentants. Porém, alguns plugins tem sua própria implementação desse recurso. |
| 63 | 36 | Thiago Paiva | * l3 metering agent (neutron-metering-agent): provê medidas de tráfico das redes dos tenants. |
| 64 | 1 | Thiago Paiva | |
| 65 | 1 | Thiago Paiva | |
| 66 | 1 | Thiago Paiva | h2. Neutron Manager |
| 67 | 1 | Thiago Paiva | |
| 68 | 1 | Thiago Paiva | * Gerenciador do Nova para o Neutron. Redireciona requisições relacionadas. |
| 69 | 34 | Thiago Paiva | * Oferece outros serviços de rede (gerenciamento de IP, DHCP, NAT, ...) |
| 70 | 34 | Thiago Paiva | |
| 71 | 34 | Thiago Paiva | |
| 72 | 36 | Thiago Paiva | h2. Camadas: |
| 73 | 36 | Thiago Paiva | |
| 74 | 36 | Thiago Paiva | *# presentation: configuration managers, operational APIs, ... |
| 75 | 36 | Thiago Paiva | *# virtual network application: L2 switch, firewall, load balancer, router, ... |
| 76 | 36 | Thiago Paiva | *# controller: floodlight, cisco overdrive, nicira OVP, ... |
| 77 | 36 | Thiago Paiva | *# management: VxLan, STT, OpenFlow, SNMP, nvGRE, GRE, VLANs, NetConf, ... |
| 78 | 36 | Thiago Paiva | *# devices: Nexus 5k, UCS, Open vSwitch, OF-enabled switches, Linux Bridge, ... |
| 79 | 36 | Thiago Paiva | |
| 80 | 36 | Thiago Paiva | |
| 81 | 34 | Thiago Paiva | h2. Neutron Plugin |
| 82 | 34 | Thiago Paiva | |
| 83 | 34 | Thiago Paiva | Neutron Plugin são pedaços de código que implementam chamadas da API Neutron. |
| 84 | 34 | Thiago Paiva | |
| 85 | 34 | Thiago Paiva | * composto por um controle centralizado e data model. |
| 86 | 34 | Thiago Paiva | * Implementa todas as operações inclusas na "Network API v2.0". |
| 87 | 34 | Thiago Paiva | * Traduz as operações da "Network API v2.0" em chamadas de reconfiguração de switches reais e virtuais. |
| 88 | 34 | Thiago Paiva | * Pode ser compatível com mais de um tipo de switch (um plugin pode ter múltiplos drivers). |
| 89 | 34 | Thiago Paiva | * Define se as mensagens devem ser síncronas ou assíncronas |
| 90 | 34 | Thiago Paiva | * implementa ou faz interface com qualquer tipo de SDN (OpenFlow, Orchestration, Tunneling, Network Interface, virtualization, ‘legacy’, ...) |
| 91 | 34 | Thiago Paiva | |
| 92 | 34 | Thiago Paiva | * Apenas um plugin pode rodar de cada vez. |
| 93 | 34 | Thiago Paiva | * não existe uma interface padrão para os drivers. |
| 94 | 34 | Thiago Paiva | * "meta-plugin' que chama código de dois diferentes plugins. (proposto -- ver l2 modular plugin) |
| 95 | 34 | Thiago Paiva | * plugins e drivers devem ser escritos como biblioteca para permitir o reuso. |
| 96 | 34 | Thiago Paiva | |
| 97 | 26 | Thiago Paiva | |
| 98 | 34 | Thiago Paiva | h3. Componentes: |
| 99 | 1 | Thiago Paiva | |
| 100 | 34 | Thiago Paiva | Um plugin geralmente é formado por códigos para: |
| 101 | 34 | Thiago Paiva | |
| 102 | 34 | Thiago Paiva | * armazenar informação sobre a configução lógica atual da rede (e.g., SQL database) |
| 103 | 34 | Thiago Paiva | * determina e armazena informações sobre o 'mapeamento' entre modelo lógico e rede física (e.g. escolhendo uma VLAN para representar uma rede virtual).. |
| 104 | 34 | Thiago Paiva | * comunica com um ou mais tipos de switches para configurá-los de acordo com o mapeamento. Isso pode ser na forma de um agente rodando no _hypervisor_ ou de código que remotamente se conecta a um switch e o reconfigura. |
| 105 | 34 | Thiago Paiva | |
| 106 | 34 | Thiago Paiva | |
| 107 | 34 | Thiago Paiva | h3. Plugins disponíveis: |
| 108 | 34 | Thiago Paiva | |
| 109 | 35 | Thiago Paiva | * "Big Switch Plug-in (Floodlight REST Proxy)":http://www.openflowhub.org/display/floodlightcontroller/Neutron+REST+Proxy+Plugin |
| 110 | 34 | Thiago Paiva | * "Brocade Plug-in":http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#brocade_plugin |
| 111 | 34 | Thiago Paiva | * "Cisco":http://wiki.openstack.org/cisco-neutron |
| 112 | 34 | Thiago Paiva | * "Cloudbase Hyper-V Plug-in":http://www.cloudbase.it/quantum-hyper-v-plugin/ |
| 113 | 26 | Thiago Paiva | * "Linux Bridge Plug-in":http://wiki.openstack.org/Neutron-Linux-Bridge-Plugin |
| 114 | 21 | Thiago Paiva | * "Mellanox Plug-in":https://wiki.openstack.org/wiki/Mellanox-Neutron/ |
| 115 | 34 | Thiago Paiva | * "Midonet Plug-in":http://www.midokura.com/ |
| 116 | 26 | Thiago Paiva | * "ML2 (Modular Layer 2) Plug-in":https://wiki.openstack.org/wiki/Neutron/ML2 |
| 117 | 34 | Thiago Paiva | * "NEC OpenFlow Plug-in":http://wiki.openstack.org/Quantum-NEC-OpenFlow-Plugin |
| 118 | 26 | Thiago Paiva | * "Nicira NVP Plug-in":http://www.nicira.com/support |
| 119 | 34 | Thiago Paiva | * "Open vSwitch Plug-in":http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#openvswitch_plugin |
| 120 | 34 | Thiago Paiva | * "PLUMgrid":https://https://wiki.openstack.org/wiki/PLUMgrid-Neutron |
| 121 | 34 | Thiago Paiva | * "Ryu Plug-in":https://github.com/osrg/ryu/wiki/OpenStack |
| 122 | 1 | Thiago Paiva | |
| 123 | 1 | Thiago Paiva | |
| 124 | 34 | Thiago Paiva | h2. Observações |
| 125 | 1 | Thiago Paiva | |
| 126 | 34 | Thiago Paiva | * Cria-se 'netork' e a associa auma 'sub-net' |
| 127 | 34 | Thiago Paiva | * vif-plugging + switch |
| 128 | 34 | Thiago Paiva | * vif-plugging deve ser mantido tão simples quanto o possível para evitar complicações do nova com detalhes da rede. (e.g., não se deve passar VLAN ID para o nova; deve-se apenas deixar que o nova crie o dispositivo básico e fazer com que o agente do plugin do neutron cuide de configurar a conexão para aquela vlan. |
| 129 | 34 | Thiago Paiva | * data-forward node tipicamente tem uma interface de rede com um endereço IP para "management network" e outro para "data network”. |
| 130 | 1 | Thiago Paiva | |
| 131 | 1 | Thiago Paiva | |
| 132 | 34 | Thiago Paiva | h2. Esquemas e relações |
| 133 | 1 | Thiago Paiva | |
| 134 | 1 | Thiago Paiva | * nova-compute <> VIF driver <> AMPQ <> nova-network <> Neutron manager <> API client <> Neutron API <> Neutron plugin |
| 135 | 1 | Thiago Paiva | * Neutron common: |
| 136 | 1 | Thiago Paiva | *# API e API Extension |
| 137 | 32 | Thiago Paiva | *# AuthN e AuthZ |
| 138 | 32 | Thiago Paiva | *# Backend |
| 139 | 32 | Thiago Paiva | *# Hypervisor(n) |
| 140 | 32 | Thiago Paiva | *#* VM (n) + eth(n) <> hypervisor's Network stack |
| 141 | 32 | Thiago Paiva | *#* Quantum plugin agent <> hypervisor's Network stack |
| 142 | 32 | Thiago Paiva | * Neutron Plugin <> Neutron common |
| 143 | 1 | Thiago Paiva | * Neutron Plugin <> Hypervisor(n) (quantum plugin agent) |
| 144 | 32 | Thiago Paiva | * Neutron Plugin <> Network switch (quantum plugin agent) |
| 145 | 32 | Thiago Paiva | |
| 146 | 32 | Thiago Paiva | |
| 147 | 32 | Thiago Paiva | h2. Quantum Plugin BaseClass |
| 148 | 32 | Thiago Paiva | |
| 149 | 32 | Thiago Paiva | * get_all_networks(self, tenant_id, **kwargs): returns a dictionary containing all <network_uuid, network_name> for the specified tenant. |
| 150 | 1 | Thiago Paiva | * create_network(self, tenant_id, net_name, **kwargs): creates a new Virtual Network, and assigns it a symbolic name. |
| 151 | 21 | Thiago Paiva | * delete_network(self, tenant_id, net_id): deletes the network with the specified network identifier belonging to the specified tenant. |
| 152 | 21 | Thiago Paiva | * get_network_details(self, tenant_id, net_id): retrieves a list of all the remote vifs that are attached to the network. |
| 153 | 27 | Thiago Paiva | * update_network(self, tenant_id, net_id, **kwargs): updates the attributes of a particular Virtual Network. |
| 154 | 1 | Thiago Paiva | * get_all_ports(self, tenant_id, net_id, **kwargs): retrieves all port identifiers belonging to the specified Virtual Network. |
| 155 | 1 | Thiago Paiva | * create_port(self, tenant_id, net_id, port_state=None, **kwargs): creates a port on the specified Virtual Network. |
| 156 | 1 | Thiago Paiva | * update_port(self, tenant_id, net_id, port_id, **kwargs): updates the attributes of a specific port on the specified Virtual Network. |
| 157 | 1 | Thiago Paiva | * delete_port(self, tenant_id, net_id, port_id): deletes a port on a specified Virtual Network, if the port contains a remote interface attachment, the remote interface is first un-plugged and then the port is deleted |
| 158 | 1 | Thiago Paiva | * get_port_details(self, tenant_id, net_id, port_id): this method allows the user to retrieve a remote interface that is attached to this particular port |
| 159 | 1 | Thiago Paiva | * plug_interface(self, tenant_id, net_id, port_id, remote_interface_id): attaches a remote interface to the specified port on the specified Virtual Network. |
| 160 | 1 | Thiago Paiva | * unplug_interface(self, tenant_id, net_id, port_id): detaches a remote interface from the specified port on the specified Virtual Network. |
| 161 | 1 | Thiago Paiva | * __subclasshook__(cls, klass): the __subclasshook__ method is a class method that will be called (Already Implemented) everytime a class is tested using issubclass(klass, Plugin). In that case, it will check that every method marked with the abstractmethod decorator is provided by the plugin class |
| 162 | 1 | Thiago Paiva | |
| 163 | 27 | Thiago Paiva | |
| 164 | 31 | Thiago Paiva | h2. Dúvidas ou perguntas para orientação |
| 165 | 31 | Thiago Paiva | |
| 166 | 21 | Thiago Paiva | * O que é e o que faz o Neutron Backend? |
| 167 | 21 | Thiago Paiva | * Como é feita a autenticação? |
| 168 | 27 | Thiago Paiva | * Quais são as funções da API? |
| 169 | 1 | Thiago Paiva | * Como definir quais máquinas físicas fazem parte da núvem? |
| 170 | 21 | Thiago Paiva | |
| 171 | 21 | Thiago Paiva | |
| 172 | 34 | Thiago Paiva | h2. Definições |
| 173 | 21 | Thiago Paiva | |
| 174 | 34 | Thiago Paiva | * AuthN: authentication |
| 175 | 34 | Thiago Paiva | * AuthZ: authorization |
| 176 | 34 | Thiago Paiva | * Backend: tecnologia que está por trás do plugin. |
| 177 | 34 | Thiago Paiva | * Quantum API core: conjunto mínimo de operações |
| 178 | 34 | Thiago Paiva | * driver: código que é capaz de conversar com um modelo particular ou uma família de switches. |
| 179 | 27 | Thiago Paiva | |
| 180 | 21 | Thiago Paiva | |
| 181 | 27 | Thiago Paiva | h2. Referências |
| 182 | 32 | Thiago Paiva | |
| 183 | 27 | Thiago Paiva | h3. Visitadas |
| 184 | 27 | Thiago Paiva | |
| 185 | 32 | Thiago Paiva | # http://docs.openstack.org/api/openstack-network/2.0/ |
| 186 | 21 | Thiago Paiva | # http://www.slideshare.net/danwent/openstack-quantum-intro-os-meetup-32612 |
| 187 | 27 | Thiago Paiva | # "OpenStack Quantum Networking update":https://www.youtube.com/watch?v=_I1SrO2QBpg |
| 188 | 21 | Thiago Paiva | # https://wiki.openstack.org/wiki/NeutronDevelopment |
| 189 | 27 | Thiago Paiva | # http://docs.openstack.org/havana/config-reference/content/ |
| 190 | 27 | Thiago Paiva | # "Networking plug-ins":http://docs.openstack.org/havana/config-reference/content/networking-options-plugins.html |
| 191 | 34 | Thiago Paiva | # "OpenStack Admin Guide - Networking":http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html |
| 192 | 27 | Thiago Paiva | |
| 193 | 27 | Thiago Paiva | h3. Não visitadas |
| 194 | 27 | Thiago Paiva | |
| 195 | 21 | Thiago Paiva | # http://www.ovirt.org/images/b/b3/Quantum_Ovirt_discussion-20111103.pdf |
| 196 | 21 | Thiago Paiva | # http://events.csdn.net/OpenStack/Takashi Torii-OpenStack and OpenFlowSDN.pdf |
| 197 | 21 | Thiago Paiva | # http://www.openstack.org/assets/presentation-media/HK-Openstack-Namespaces1-.pdf |
| 198 | 21 | Thiago Paiva | # http://www.iaas.uni-stuttgart.de/lehre/vorlesung/aktuell/vorlesungen/smcc/materialien/SoftwareDefinedNetwork_20131024_v04.pdf |
| 199 | 21 | Thiago Paiva | # http://www.cisco.com/en/US/prod/collateral/switches/ps9441/ps11541/data_sheet_c78-727737.pdf |
| 200 | 21 | Thiago Paiva | # http://www.linux-kvm.org/wiki/images/7/7b/Kvm-forum-2013-openstack.pdf |
| 201 | 21 | Thiago Paiva | |
| 202 | 34 | Thiago Paiva | |
| 203 | 34 | Thiago Paiva | h2. Neutron e SDN (Em esboço ainda) |
| 204 | 34 | Thiago Paiva | |
| 205 | 34 | Thiago Paiva | * Neutron: |
| 206 | 34 | Thiago Paiva | *# presentation: operational APIs |
| 207 | 34 | Thiago Paiva | *# virtual network application: L2 switch |
| 208 | 34 | Thiago Paiva | *# controller; Neutron pode fazer interface ou implementar essa camada. |
| 209 | 34 | Thiago Paiva | *# management: Neutron pode fazer interface ou implementar essa camada. |
| 210 | 34 | Thiago Paiva | *# devices: Neutron pode fazer interface ou implementar essa camada. |
| 211 | 20 | Thiago Paiva | |
| 212 | 20 | Thiago Paiva | |
| 213 | 20 | Thiago Paiva | |
| 214 | 20 | Thiago Paiva | |
| 215 | 20 | Thiago Paiva | |
| 216 | 20 | Thiago Paiva | |
| 217 | 20 | Thiago Paiva | |
| 218 | 20 | Thiago Paiva | |
| 219 | 20 | Thiago Paiva | |
| 220 | 20 | Thiago Paiva | |
| 221 | 20 | Thiago Paiva | |
| 222 | 20 | Thiago Paiva | |
| 223 | 20 | Thiago Paiva | |
| 224 | 20 | Thiago Paiva | |
| 225 | 20 | Thiago Paiva | |
| 226 | 20 | Thiago Paiva | |
| 227 | 20 | Thiago Paiva | |
| 228 | 20 | Thiago Paiva | |
| 229 | 20 | Thiago Paiva | |
| 230 | 20 | Thiago Paiva | |
| 231 | 20 | Thiago Paiva | |
| 232 | 20 | Thiago Paiva | |
| 233 | 13 | Raphael Cóbe | |
| 234 | 13 | Raphael Cóbe | |
| 235 | 14 | Raphael Cóbe | |
| 236 | 14 | Raphael Cóbe | |
| 237 | 14 | Raphael Cóbe | |
| 238 | 14 | Raphael Cóbe | |
| 239 | 13 | Raphael Cóbe | |
| 240 | 13 | Raphael Cóbe | |
| 241 | 13 | Raphael Cóbe | |
| 242 | 13 | Raphael Cóbe | |
| 243 | 13 | Raphael Cóbe | |
| 244 | 13 | Raphael Cóbe | |
| 245 | 13 | Raphael Cóbe | |
| 246 | 13 | Raphael Cóbe | |
| 247 | 13 | Raphael Cóbe | |
| 248 | 13 | Raphael Cóbe | h2. Netron Standard Architecture |
| 249 | 13 | Raphael Cóbe | |
| 250 | 13 | Raphael Cóbe | |
| 251 | 13 | Raphael Cóbe | !http://docs.openstack.org/trunk/openstack-network/admin/content/figures/1/figures/Quantum-PhysNet-Diagram.png! |
| 252 | 13 | Raphael Cóbe | Imagem retirada da Documentação Openstack Network Admin: http://docs.openstack.org/trunk/openstack-network/admin/ |
| 253 | 13 | Raphael Cóbe | |
| 254 | 12 | Raphael Cóbe | * cloud controller host (Cloud Controller Node): quantum-server, nova-api, nova-scheduler, keystone, RabbitMQ, MySQL. |
| 255 | 1 | Thiago Paiva | * network gateway host (Network Node): quantum-metadata-agent, quantum-dhcp-agent, quantum-l3-agent, quantum-*-plugin-agent |
| 256 | 12 | Raphael Cóbe | * conjunto de hypervisors para rodar VMs. Compute node: nova-compute, quantum-*-plugin-agent |
| 257 | 1 | Thiago Paiva | |
| 258 | 1 | Thiago Paiva | > 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. |
| 259 | 12 | Raphael Cóbe | |
| 260 | 1 | Thiago Paiva | * DataNetwork: comunicação de dados dentro da implementação de nuvem. |
| 261 | 12 | Raphael Cóbe | * Management Network: comunicações entre componentes OS. |
| 262 | 1 | Thiago Paiva | * External Network: oferece acesso à internet à implementação OS. |
| 263 | 7 | Thiago Paiva | * 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. |
| 264 | 7 | Thiago Paiva | |
| 265 | 7 | Thiago Paiva | |
| 266 | 11 | Raphael Cóbe | |
| 267 | 11 | Raphael Cóbe | |
| 268 | 11 | Raphael Cóbe | |
| 269 | 10 | Raphael Cóbe | h2. Neutron Server |
| 270 | 10 | Raphael Cóbe | |
| 271 | 10 | Raphael Cóbe | quantum-server: processo principal do Netron. Expõe Netron API e encaminha as requisições de usuário para o plugin. |
| 272 | 10 | Raphael Cóbe | |
| 273 | 1 | Thiago Paiva | |
| 274 | 7 | Thiago Paiva | h2. Agentes |
| 275 | 10 | Raphael Cóbe | |
| 276 | 1 | Thiago Paiva | Agentes enviam mensagens para o Quantum-Server via RPC (rabbitmq ou qpid) ou Netron API padrão (REST). |
| 277 | 1 | Thiago Paiva | |
| 278 | 12 | Raphael Cóbe | * plugin agent (quantum-*-agent): roda em cada hypervisor para realizar configuração local do vswitch. Dependente do plugin escolhido. |
| 279 | 1 | Thiago Paiva | * 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. |
| 280 | 1 | Thiago Paiva | * 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. |
| 281 | 1 | Thiago Paiva | ** Deve-se garantir que existam rotas entre o serviço de metadata do host e cada rede privada. |
| 282 | 2 | Thiago Paiva | ** 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. |
| 283 | 7 | Thiago Paiva | |
| 284 | 1 | Thiago Paiva | <pre> |
| 285 | 1 | Thiago Paiva | $ sudo ovs-vsctrl add-br br-ext |
| 286 | 1 | Thiago Paiva | $ sudo ovs-vsctrl add-port br-ext eth1 |
| 287 | 3 | Thiago Paiva | </pre> |
| 288 | 3 | Thiago Paiva | |
| 289 | 1 | Thiago Paiva | * não é possível executar ping para IPs fixos. Ao invés disso, usar: router network namespace (qrouter-<UUID>) |
| 290 | 1 | Thiago Paiva | <pre> $ ip netns exec qrouter-<UUID> ping <fixed ip> </pre> |
| 291 | 1 | Thiago Paiva | |
| 292 | 1 | Thiago Paiva | |
| 293 | 1 | Thiago Paiva | h2. Netron API |
| 294 | 1 | Thiago Paiva | |
| 295 | 1 | Thiago Paiva | Serviço de redes virtual. Define conexões e endereços para os outros serviços. |
| 296 | 12 | Raphael Cóbe | |
| 297 | 1 | Thiago Paiva | * Network: segmento L2 isolado (análogo a uma VLAN). |
| 298 | 7 | Thiago Paiva | * Subnet: bloco de endereços de IP (V4 ou V6) e estados de configuração associados. |
| 299 | 7 | Thiago Paiva | * Port: ponto para conexção de dispositivos. |
| 300 | 1 | Thiago Paiva | <pre> |
| 301 | 1 | Thiago Paiva | network <-- port |
| 302 | 8 | Thiago Paiva | | | |
| 303 | 1 | Thiago Paiva | -------------- subnet |
| 304 | 1 | Thiago Paiva | </pre> |
| 305 | 15 | Raphael Cóbe | |
| 306 | 1 | Thiago Paiva | > fixed_ips é atributo do port |
| 307 | 15 | Raphael Cóbe | > port.fixed_ips = {<IP1>:<subnet1>, <IP2>:<subnet2>, ...} |
| 308 | 1 | Thiago Paiva | |
| 309 | 12 | Raphael Cóbe | |
| 310 | 1 | Thiago Paiva | h2. Netron Plugins |
| 311 | 1 | Thiago Paiva | |
| 312 | 12 | Raphael Cóbe | 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 |
| 313 | 1 | Thiago Paiva | 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 |
| 314 | 1 | Thiago Paiva | pacotes de dados. |
| 315 | 1 | Thiago Paiva | |
| 316 | 1 | Thiago Paiva | Os plugins devem processar chamadas de API e gerenciar vSwitches. |
| 317 | 15 | Raphael Cóbe | |
| 318 | 1 | Thiago Paiva | OpenVSwitch: open vswitch, quantum-plugin-openvswitch-agent |
| 319 | 12 | Raphael Cóbe | |
| 320 | 1 | Thiago Paiva | <pre> |
| 321 | 1 | Thiago Paiva | $ sudo ovs-vsctrl add-br br-int |
| 322 | 1 | Thiago Paiva | </pre> |
| 323 | 1 | Thiago Paiva | |
| 324 | 1 | Thiago Paiva | * br-int: integration bridge, nome padrão e fixo. |
| 325 | 1 | Thiago Paiva | |
| 326 | 1 | Thiago Paiva | |
| 327 | 1 | Thiago Paiva | h2. Netron Command Line Application |
| 328 | 1 | Thiago Paiva | |
| 329 | 1 | Thiago Paiva | Requer: python-pyparsing, python-cliff, python-quantumclient |
| 330 | 1 | Thiago Paiva | |
| 331 | 1 | Thiago Paiva | |
| 332 | 1 | Thiago Paiva | h2. OpenStack Compute |
| 333 | 1 | Thiago Paiva | |
| 334 | 1 | Thiago Paiva | Interagem com Netron através da API. Comunica com Netron API para connectar cada vNIC da VM em uma rede em particular. |
| 335 | 1 | Thiago Paiva | |
| 336 | 1 | Thiago Paiva | h2. Neutron Client |
| 337 | 1 | Thiago Paiva | |
| 338 | 1 | Thiago Paiva | agent-* |
| 339 | 1 | Thiago Paiva | |
| 340 | 1 | Thiago Paiva | dhcp-agent-* |
| 341 | 1 | Thiago Paiva | |
| 342 | 1 | Thiago Paiva | ext-* (extensões) |
| 343 | 1 | Thiago Paiva | |
| 344 | 1 | Thiago Paiva | floatingip-* |
| 345 | 1 | Thiago Paiva | |
| 346 | 1 | Thiago Paiva | l3-agent-* |
| 347 | 1 | Thiago Paiva | |
| 348 | 1 | Thiago Paiva | lb-* (loading balance) |
| 349 | 1 | Thiago Paiva | lb-pool-* |
| 350 | 1 | Thiago Paiva | lb-healthmonitor-* |
| 351 | 1 | Thiago Paiva | lb-member-* |
| 352 | 1 | Thiago Paiva | lb-vip-* |
| 353 | 12 | Raphael Cóbe | |
| 354 | 16 | Raphael Cóbe | net-* |
| 355 | 15 | Raphael Cóbe | |
| 356 | 1 | Thiago Paiva | queue-* |
| 357 | 1 | Thiago Paiva | |
| 358 | 1 | Thiago Paiva | router-* |
| 359 | 1 | Thiago Paiva | |
| 360 | 1 | Thiago Paiva | security-* |
| 361 | 1 | Thiago Paiva | |
| 362 | 1 | Thiago Paiva | subnet-* |
| 363 | 1 | Thiago Paiva | |
| 364 | 1 | Thiago Paiva | quota-* |
| 365 | 1 | Thiago Paiva | |
| 366 | 1 | Thiago Paiva | security-group-* |
| 367 | 1 | Thiago Paiva | |
| 368 | 15 | Raphael Cóbe | h2. Exemplos - Netron API |
| 369 | 15 | Raphael Cóbe | |
| 370 | 1 | Thiago Paiva | <pre> |
| 371 | 15 | Raphael Cóbe | $ quantum net-create net1 |
| 372 | 1 | Thiago Paiva | $ quantum net-create net2 --provider:network_type local |
| 373 | 15 | Raphael Cóbe | $ quantum net-create --tenant-id=<id> net1 |
| 374 | 1 | Thiago Paiva | |
| 375 | 15 | Raphael Cóbe | $ quantum subnet-create net1 192.168.0.2/22 --name subnet1 |
| 376 | 1 | Thiago Paiva | |
| 377 | 15 | Raphael Cóbe | $ quantum port-create net1 --fixed-ip ip_addr=192.168.2.40 |
| 378 | 1 | Thiago Paiva | $ quantum port-create net1 |
| 379 | 12 | Raphael Cóbe | $ quantum port-list --fixed-ips |
| 380 | 1 | Thiago Paiva | $ quantum port-list --tenant-id=<tenant id> |
| 381 | 1 | Thiago Paiva | $ quantum port-list --device-id=<vm id> |
| 382 | 1 | Thiago Paiva | |
| 383 | 7 | Thiago Paiva | </pre> |
| 384 | 1 | Thiago Paiva | |
| 385 | 1 | Thiago Paiva | * as redes já devem estar criadas para serem adicionadas na instanciação das VMs |
| 386 | 1 | Thiago Paiva | <pre> |
| 387 | 1 | Thiago Paiva | $ nova boot --image=<img id> --flavor=<fl id> --nic net_id=<net id> <vm name> |
| 388 | 1 | Thiago Paiva | </pre> |
| 389 | 12 | Raphael Cóbe | * para ip fixo (port deve ser criado antes da instanciação) |
| 390 | 16 | Raphael Cóbe | <pre> |
| 391 | 15 | Raphael Cóbe | $ nova boot --image=<img id> --flavor=<fl id> --nic port_id=<net id> <vm name> |
| 392 | 1 | Thiago Paiva | </pre> |
| 393 | 7 | Thiago Paiva | |
| 394 | 15 | Raphael Cóbe | h2. Físico -> Virtual |
| 395 | 19 | Raphael Cóbe | |
| 396 | 7 | Thiago Paiva | 1) eth0 (VM) |
| 397 | 1 | Thiago Paiva | 2) TAP VNET0 (hypervisor network interface card, VIF, vNIC) |
| 398 | 1 | Thiago Paiva | 3) LINUX BRIDGE qbrXXX (hub, multi NIC, virtual ou físico) |
| 399 | 17 | Raphael Cóbe | 4) veth pair {qcbXXX, qvoXXX} (entra de um lado e sai do outro) |
| 400 | 19 | Raphael Cóbe | 5) open switch bridge br-int (virtual switch, integration bridge,todos as VM estão conectadas a ele) |
| 401 | 17 | Raphael Cóbe | 6) veth pair (int-br-eth1, phy-br-eth1) |
| 402 | 17 | Raphael Cóbe | 7) physical network interface card eth1 |
| 403 | 17 | Raphael Cóbe | |
| 404 | 17 | Raphael Cóbe | h2. Ryu |
| 405 | 17 | Raphael Cóbe | |
| 406 | 17 | Raphael Cóbe | <pre> |
| 407 | 17 | Raphael Cóbe | $ sudo pip install ryu |
| 408 | 17 | Raphael Cóbe | $ sudo apt-get install quantum-plugin-ryu-agent openvswitch-switch python-openvswitch openvswitch-datapath-dkms |
| 409 | 17 | Raphael Cóbe | </pre> |
| 410 | 12 | Raphael Cóbe | |
| 411 | 1 | Thiago Paiva | * ovs_ryu_plugin.ini e quantum.conf devem ser copiados em cada nó que tenha agente ryu |
| 412 | 7 | Thiago Paiva | |
| 413 | 1 | Thiago Paiva | |
| 414 | 1 | Thiago Paiva | h2. Floodlight |
| 415 | 1 | Thiago Paiva | |
| 416 | 1 | Thiago Paiva | |
| 417 | 1 | Thiago Paiva | 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. |
| 418 | 1 | Thiago Paiva | |
| 419 | 1 | Thiago Paiva | Conexão entre FloodLight e Neutron em dois passos: |
| 420 | 1 | Thiago Paiva | |
| 421 | 1 | Thiago Paiva | # Rodar o REST Proxy Plug-in no neutron-server. Esse plugin foi projetado para rodar como parte do Neutro service. |
| 422 | 1 | Thiago Paiva | # 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. |
| 423 | 1 | Thiago Paiva | |
| 424 | 1 | Thiago Paiva | |
| 425 | 1 | Thiago Paiva | h2. Not to do |
| 426 | 1 | Thiago Paiva | |
| 427 | 1 | Thiago Paiva | * Proxies ainda não implementados então não se deve executar: |
| 428 | 1 | Thiago Paiva | ** nova-manage |
| 429 | 1 | Thiago Paiva | ** nova para administrar recursos de rede |