OpenStack Networking » History » Version 3

Thiago Paiva, 26 Jun 2013 11:29

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