OpenStack Networking » History » Version 22

Thiago Paiva, 21 Jan 2014 17:14

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