OpenStack Networking » History » Version 35

Thiago Paiva, 22 Jan 2014 08:27

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