Ryu » History » Version 5

Thiago Paiva, 09 Oct 2013 10:14

1 1 Thiago Paiva
h1. Ryu
2 1 Thiago Paiva
3 1 Thiago Paiva
4 5 Thiago Paiva
h2. Sobre o código
5 5 Thiago Paiva
6 5 Thiago Paiva
7 5 Thiago Paiva
h3. Linguagem
8 5 Thiago Paiva
9 5 Thiago Paiva
Linguagem utilizada para o desenvolvimento.
10 5 Thiago Paiva
11 5 Thiago Paiva
12 5 Thiago Paiva
h3. Licença
13 5 Thiago Paiva
14 5 Thiago Paiva
Licença em que o código foi liberado. A preferência é por licenças livres, facilitando assim o estudo e desenvolvimento de aplicações ou até mesmo de correções de problemas.
15 5 Thiago Paiva
16 5 Thiago Paiva
17 5 Thiago Paiva
h3. Suporte a versões do OpenFLOW
18 5 Thiago Paiva
19 5 Thiago Paiva
* Quais são as versões de OpenFlow suportadas pelo controlador / framework. 
20 5 Thiago Paiva
* Como isso é implementado
21 5 Thiago Paiva
22 5 Thiago Paiva
23 5 Thiago Paiva
h3. Requisitos
24 5 Thiago Paiva
25 5 Thiago Paiva
* pacotes a serem instalados
26 5 Thiago Paiva
* espaço de armazenamento exigido
27 5 Thiago Paiva
* outros recursos necessários ao funcionamento do controlador.
28 5 Thiago Paiva
29 5 Thiago Paiva
30 5 Thiago Paiva
h3. Independência de linguagem de programação 
31 5 Thiago Paiva
32 5 Thiago Paiva
Quais linguagens são suportadas na implementação de aplicações e componentes.
33 5 Thiago Paiva
34 5 Thiago Paiva
35 5 Thiago Paiva
h3. Modularidade
36 5 Thiago Paiva
37 5 Thiago Paiva
Quanto e que tipo de modularidade o controlador oferece.
38 5 Thiago Paiva
39 5 Thiago Paiva
40 5 Thiago Paiva
h3. Repositório
41 5 Thiago Paiva
42 5 Thiago Paiva
Onde encontrar o código.
43 5 Thiago Paiva
44 5 Thiago Paiva
45 5 Thiago Paiva
h3. Recursos básicos do controlador
46 5 Thiago Paiva
47 5 Thiago Paiva
Recursos oferecidos pelo controlador sem a necessidade de aplicações, como por exemplo:
48 5 Thiago Paiva
* GRE tunneling
49 5 Thiago Paiva
* VLAN support
50 5 Thiago Paiva
51 5 Thiago Paiva
52 5 Thiago Paiva
h3. Aplicações
53 5 Thiago Paiva
54 5 Thiago Paiva
Componentes disponíveis que acrescentam ferramentas ao controlador, como por exemplo:
55 5 Thiago Paiva
* topology discovery
56 5 Thiago Paiva
* MAC based segregation
57 5 Thiago Paiva
58 5 Thiago Paiva
59 5 Thiago Paiva
h3. Testes
60 5 Thiago Paiva
61 5 Thiago Paiva
Existência de testes de unidades no codigo (scripts ou códigos), geralmente em uma pasta em separado, que validam e testam o código desenvolvido. 
62 5 Thiago Paiva
63 5 Thiago Paiva
64 5 Thiago Paiva
h3. Disponibilidade nas distribuições GNU/Linux 
65 5 Thiago Paiva
66 5 Thiago Paiva
Disponibilidade e facilidade de instação nas distribuição GNU/Linux relevantes atuais. 
67 5 Thiago Paiva
68 5 Thiago Paiva
* disponível nos repositórios da distribuição?
69 5 Thiago Paiva
* versão dos pacotes disponíveis
70 5 Thiago Paiva
* ênfase nas distros Debian e Ubuntu.
71 5 Thiago Paiva
72 5 Thiago Paiva
73 5 Thiago Paiva
h2. Documentação
74 5 Thiago Paiva
75 5 Thiago Paiva
Nível de documentação do controlador, incluindo tutoriais e exemplos (tanto de estruturas quanto de aplicações).
76 5 Thiago Paiva
77 5 Thiago Paiva
78 5 Thiago Paiva
h2. Suporte junto ao OpenStack
79 5 Thiago Paiva
80 5 Thiago Paiva
Como o ambiente estruturado se baseia no OpenStack, é interessante saber qual é o tipo de suporte oferecido a essa ferramenta.
81 5 Thiago Paiva
82 5 Thiago Paiva
83 5 Thiago Paiva
h2. Quem usa
84 5 Thiago Paiva
85 5 Thiago Paiva
Público do controlador
86 5 Thiago Paiva
87 5 Thiago Paiva
88 5 Thiago Paiva
h2. Quem está por trás 
89 5 Thiago Paiva
90 5 Thiago Paiva
Empresas, consórcio, comunidade, universidade, ...
91 5 Thiago Paiva
92 5 Thiago Paiva
93 5 Thiago Paiva
h2. último release / commit
94 5 Thiago Paiva
95 5 Thiago Paiva
Uma das formas de se ter noção de quanto o desenvolvimento ainda está ativo é procurar pela data da última atualização de código no repositório.
96 5 Thiago Paiva
97 5 Thiago Paiva
98 5 Thiago Paiva
h2. Outras características
99 5 Thiago Paiva
100 5 Thiago Paiva
Características que não se adequam a nenhuma das anteriores.
101 5 Thiago Paiva
102 5 Thiago Paiva
103 5 Thiago Paiva
104 5 Thiago Paiva
105 5 Thiago Paiva
106 5 Thiago Paiva
107 5 Thiago Paiva
108 5 Thiago Paiva
109 5 Thiago Paiva
110 5 Thiago Paiva
111 5 Thiago Paiva
112 5 Thiago Paiva
113 1 Thiago Paiva
h2. About
114 4 Thiago Paiva
115 1 Thiago Paiva
* Network opearting system
116 1 Thiago Paiva
* OVS, openflow switch
117 1 Thiago Paiva
* python
118 1 Thiago Paiva
* www.osrg.net/ryu
119 1 Thiago Paiva
120 1 Thiago Paiva
121 1 Thiago Paiva
h2. Network management applications on top of Ryu (inside a controller node)
122 1 Thiago Paiva
123 1 Thiago Paiva
* GRE tunneling
124 1 Thiago Paiva
* VLAN support
125 1 Thiago Paiva
* topology discovery
126 1 Thiago Paiva
* MAC based segregation
127 1 Thiago Paiva
128 1 Thiago Paiva
'Only commodity hardware'
129 1 Thiago Paiva
130 1 Thiago Paiva
131 1 Thiago Paiva
h2. Ryu <--> OpenStack
132 1 Thiago Paiva
133 1 Thiago Paiva
* Flat networks regardless of the underlying physical network
134 1 Thiago Paiva
* Scalable multi-tenant isolations
135 1 Thiago Paiva
** tunneling based isolations
136 1 Thiago Paiva
** VLAN does not scale larger than 4096
137 1 Thiago Paiva
** do not need high-end switches
138 1 Thiago Paiva
* Future items:
139 1 Thiago Paiva
** integration with quantum IPAM and L3 API
140 1 Thiago Paiva
** firewall
141 1 Thiago Paiva
** virtual network <--> physical network
142 1 Thiago Paiva
** distributed controllers (redundancy)
143 1 Thiago Paiva
144 3 Thiago Paiva
Quantum plugin for each network technology
145 1 Thiago Paiva
146 1 Thiago Paiva
147 1 Thiago Paiva
h2. Communication
148 1 Thiago Paiva
149 1 Thiago Paiva
'nova requests quantum-server for network configuragion'
150 1 Thiago Paiva
151 1 Thiago Paiva
OVS <--> Ryu: openflow
152 1 Thiago Paiva
153 1 Thiago Paiva
Ryu agent <--> Ryu: REST API
154 1 Thiago Paiva
155 1 Thiago Paiva
Quantum server <--> Ryu: REST API
156 1 Thiago Paiva
157 1 Thiago Paiva
Ryu agent <--> Quantum db: db access
158 1 Thiago Paiva
159 1 Thiago Paiva
VIF driver <--> quantum: Quantum API
160 1 Thiago Paiva
linux_net driver <--> server: Quantum API
161 1 Thiago Paiva
162 1 Thiago Paiva
163 1 Thiago Paiva
h2. Network Creation (network-node = nova-network + linux_net driver + OVS)
164 2 Thiago Paiva
165 1 Thiago Paiva
# to nova-network: create netork
166 1 Thiago Paiva
# nova network --> quantum server: create net
167 1 Thiago Paiva
# quantum server --> Ryu: network <uuid>, <tunnel key>
168 1 Thiago Paiva
# quantum server --> nova network: <uuid>
169 1 Thiago Paiva
# nova network --> linux_net driver: plug
170 1 Thiago Paiva
# linux_net driver --> OVS: create gw-xxx
171 1 Thiago Paiva
# linux_net driver --> quantum server: tentant id, network id, dp id, port, mac
172 1 Thiago Paiva
# quantum server --> Ryu: network id, dp id, port, mac
173 1 Thiago Paiva
# ryu --> OVS:  set flow entryies
174 1 Thiago Paiva
175 1 Thiago Paiva
176 1 Thiago Paiva
h2. Instance creation (compute-node = nova compute + VIF driver + OVS)
177 2 Thiago Paiva
178 1 Thiago Paiva
# to nova compute: create instance
179 1 Thiago Paiva
# nova compute --> quantum server: create port
180 1 Thiago Paiva
# quantum server --> nova compute: uuid
181 1 Thiago Paiva
# nova compute --> VIF driver: plug
182 1 Thiago Paiva
# VIF driver --> OVS: create tap-xxx
183 1 Thiago Paiva
# VIF driver --> quantum server: (tenant_id, dp_id, port, mac)
184 1 Thiago Paiva
# quantum server --> Ryu: (network_id, dp_id, port, mac)
185 1 Thiago Paiva
# Ryu --> OVS: set flow entryies
186 3 Thiago Paiva
187 3 Thiago Paiva
188 3 Thiago Paiva
h2. Node boot up (compute/network-node = OVS + Ryu agent + ryu_v2.ini)
189 3 Thiago Paiva
190 3 Thiago Paiva
# ryu_v2.ini --> Ryu agent: get ip address
191 3 Thiago Paiva
# Ryu agent -->  quantum db: register (dp_id, ip_address)
192 3 Thiago Paiva
# quantum db --> Ryu agent: get list of (dp_id, ip_address, and polling)
193 3 Thiago Paiva
# Ryu agent --> OVS: create vport_grc to ip address
194 3 Thiago Paiva
# Ryu agent --> Ryu: register (dp_id, port_id, remote dp_id)
195 3 Thiago Paiva
196 3 Thiago Paiva
197 3 Thiago Paiva
h2. Component: separation unit
198 3 Thiago Paiva
199 3 Thiago Paiva
*  interface for control and states and generates events
200 3 Thiago Paiva
*  communicate by message passing
201 3 Thiago Paiva
*  language independency
202 3 Thiago Paiva
203 3 Thiago Paiva
h2. OBS:
204 3 Thiago Paiva
205 3 Thiago Paiva
two ways oto isolate tenants: GRE tunnel and VLAN