OpenStack Networking » History » Version 33

Raphael Cóbe, 22 Jan 2014 00:08

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