Ryu » History » Version 9

Thiago Paiva, 10 Oct 2013 00:56

1 1 Thiago Paiva
h1. Ryu
2 1 Thiago Paiva
3 6 Thiago Paiva
h2. Página do projeto
4 1 Thiago Paiva
5 6 Thiago Paiva
www.osrg.net/ryu
6 6 Thiago Paiva
7 6 Thiago Paiva
* Network opearting system
8 6 Thiago Paiva
* OVS, openflow switch
9 6 Thiago Paiva
10 6 Thiago Paiva
11 5 Thiago Paiva
h2. Sobre o código
12 5 Thiago Paiva
13 5 Thiago Paiva
14 5 Thiago Paiva
h3. Linguagem
15 1 Thiago Paiva
16 6 Thiago Paiva
Python 2.7
17 5 Thiago Paiva
18 5 Thiago Paiva
19 1 Thiago Paiva
h3. Licença
20 5 Thiago Paiva
21 6 Thiago Paiva
Apache 2.0 license
22 1 Thiago Paiva
23 1 Thiago Paiva
24 1 Thiago Paiva
h3. Suporte a versões do OpenFLOW
25 5 Thiago Paiva
26 6 Thiago Paiva
* 1.0 with Nicira Extensions
27 6 Thiago Paiva
* 1.2
28 6 Thiago Paiva
* 1.3
29 5 Thiago Paiva
30 1 Thiago Paiva
31 5 Thiago Paiva
h3. Requisitos
32 5 Thiago Paiva
33 6 Thiago Paiva
* ambiente Python 2.7
34 1 Thiago Paiva
35 5 Thiago Paiva
36 5 Thiago Paiva
h3. Independência de linguagem de programação 
37 5 Thiago Paiva
38 9 Thiago Paiva
Comunicação por mensagens, então, pode conversar com qualquer aplicativo que implemente essas mensagens.
39 1 Thiago Paiva
40 5 Thiago Paiva
41 5 Thiago Paiva
h3. Modularidade
42 5 Thiago Paiva
43 6 Thiago Paiva
???
44 1 Thiago Paiva
45 5 Thiago Paiva
46 1 Thiago Paiva
h3. Repositório
47 1 Thiago Paiva
48 6 Thiago Paiva
git://github.com/osrg/ryu.git
49 1 Thiago Paiva
50 1 Thiago Paiva
51 1 Thiago Paiva
h3. Recursos básicos do controlador
52 1 Thiago Paiva
53 1 Thiago Paiva
* GRE tunneling
54 1 Thiago Paiva
* VLAN support
55 6 Thiago Paiva
* IPv6
56 1 Thiago Paiva
* topology discovery
57 1 Thiago Paiva
* MAC based segregation
58 1 Thiago Paiva
59 1 Thiago Paiva
60 6 Thiago Paiva
h3. Aplicações
61 1 Thiago Paiva
62 6 Thiago Paiva
https://github.com/osrg/ryu/tree/master/ryu/app
63 1 Thiago Paiva
64 9 Thiago Paiva
* cbench.py
65 9 Thiago Paiva
* client.py
66 9 Thiago Paiva
* conf_switch_key.py
67 9 Thiago Paiva
* gre_tunnel.py
68 9 Thiago Paiva
* ofctl_rest.py
69 9 Thiago Paiva
* quantum_adapter.py
70 9 Thiago Paiva
* rest.py: app/rest
71 9 Thiago Paiva
* rest_conf_switch.py
72 9 Thiago Paiva
* rest_firewall.py
73 9 Thiago Paiva
* rest_nw_id.py
74 9 Thiago Paiva
* rest_quantum.py
75 9 Thiago Paiva
* rest_router.py
76 9 Thiago Paiva
* rest_topology.py
77 9 Thiago Paiva
* rest_tunnel.py
78 9 Thiago Paiva
* simple_isolation.py
79 9 Thiago Paiva
* simple_switch.py
80 9 Thiago Paiva
* simple_switch_12.py
81 9 Thiago Paiva
* simple_switch_13.py
82 9 Thiago Paiva
* simple_switch_lacp.py
83 9 Thiago Paiva
* simple_vlan.py
84 9 Thiago Paiva
* tunnel_port_updater.py
85 9 Thiago Paiva
* wsgi.py
86 1 Thiago Paiva
87 1 Thiago Paiva
88 6 Thiago Paiva
h3. Testes
89 1 Thiago Paiva
90 6 Thiago Paiva
https://github.com/osrg/ryu/tree/master/ryu/tests
91 5 Thiago Paiva
92 9 Thiago Paiva
* app
93 9 Thiago Paiva
* lib
94 9 Thiago Paiva
* ofproto
95 9 Thiago Paiva
* packe
96 9 Thiago Paiva
* sample
97 5 Thiago Paiva
98 5 Thiago Paiva
99 6 Thiago Paiva
h3. Disponibilidade nas distribuições GNU/Linux 
100 5 Thiago Paiva
101 6 Thiago Paiva
Pode ser instalado com o gerenciador 'pip'.
102 5 Thiago Paiva
103 5 Thiago Paiva
104 6 Thiago Paiva
h3. Último release / commit
105 5 Thiago Paiva
106 6 Thiago Paiva
* Aplicações: "a month ago"
107 6 Thiago Paiva
* Testes: "a day ago"
108 6 Thiago Paiva
* Core: "a day ago"
109 1 Thiago Paiva
110 1 Thiago Paiva
111 1 Thiago Paiva
112 6 Thiago Paiva
h2. Documentação
113 1 Thiago Paiva
114 1 Thiago Paiva
115 6 Thiago Paiva
h3. Documentação oficial
116 1 Thiago Paiva
117 6 Thiago Paiva
http://ryu.readthedocs.org/en/latest/index.html
118 1 Thiago Paiva
119 1 Thiago Paiva
120 6 Thiago Paiva
h3. Tutoriais
121 1 Thiago Paiva
122 6 Thiago Paiva
https://github.com/osrg/ryu/wiki/OpenFlow_Tutorial
123 1 Thiago Paiva
124 1 Thiago Paiva
125 6 Thiago Paiva
h2. Suporte junto ao OpenStack
126 1 Thiago Paiva
127 6 Thiago Paiva
Quantum Ryu plugin. VM pré-configurada para testar OpenStack + Ryu.
128 1 Thiago Paiva
129 6 Thiago Paiva
https://github.com/osrg/ryu/wiki/OpenStack
130 1 Thiago Paiva
131 1 Thiago Paiva
* Flat networks regardless of the underlying physical network
132 1 Thiago Paiva
* Scalable multi-tenant isolations
133 1 Thiago Paiva
** tunneling based isolations
134 1 Thiago Paiva
** VLAN does not scale larger than 4096
135 1 Thiago Paiva
** do not need high-end switches
136 1 Thiago Paiva
* Future items:
137 1 Thiago Paiva
** integration with quantum IPAM and L3 API
138 1 Thiago Paiva
** firewall
139 1 Thiago Paiva
** virtual network <--> physical network
140 1 Thiago Paiva
** distributed controllers (redundancy)
141 1 Thiago Paiva
142 1 Thiago Paiva
143 6 Thiago Paiva
h3. Communication
144 1 Thiago Paiva
145 1 Thiago Paiva
'nova requests quantum-server for network configuragion'
146 1 Thiago Paiva
147 1 Thiago Paiva
OVS <--> Ryu: openflow
148 3 Thiago Paiva
149 1 Thiago Paiva
Ryu agent <--> Ryu: REST API
150 1 Thiago Paiva
151 1 Thiago Paiva
Quantum server <--> Ryu: REST API
152 1 Thiago Paiva
153 1 Thiago Paiva
Ryu agent <--> Quantum db: db access
154 1 Thiago Paiva
155 1 Thiago Paiva
VIF driver <--> quantum: Quantum API
156 1 Thiago Paiva
linux_net driver <--> server: Quantum API
157 1 Thiago Paiva
158 1 Thiago Paiva
159 6 Thiago Paiva
h3. Network Creation (network-node = nova-network + linux_net driver + OVS)
160 1 Thiago Paiva
161 1 Thiago Paiva
# to nova-network: create netork
162 1 Thiago Paiva
# nova network --> quantum server: create net
163 1 Thiago Paiva
# quantum server --> Ryu: network <uuid>, <tunnel key>
164 1 Thiago Paiva
# quantum server --> nova network: <uuid>
165 1 Thiago Paiva
# nova network --> linux_net driver: plug
166 1 Thiago Paiva
# linux_net driver --> OVS: create gw-xxx
167 1 Thiago Paiva
# linux_net driver --> quantum server: tentant id, network id, dp id, port, mac
168 1 Thiago Paiva
# quantum server --> Ryu: network id, dp id, port, mac
169 1 Thiago Paiva
# ryu --> OVS:  set flow entryies
170 2 Thiago Paiva
171 1 Thiago Paiva
172 1 Thiago Paiva
h3. Instance creation (compute-node = nova compute + VIF driver + OVS)
173 1 Thiago Paiva
174 1 Thiago Paiva
# to nova compute: create instance
175 1 Thiago Paiva
# nova compute --> quantum server: create port
176 6 Thiago Paiva
# quantum server --> nova compute: uuid
177 1 Thiago Paiva
# nova compute --> VIF driver: plug
178 1 Thiago Paiva
# VIF driver --> OVS: create tap-xxx
179 1 Thiago Paiva
# VIF driver --> quantum server: (tenant_id, dp_id, port, mac)
180 1 Thiago Paiva
# quantum server --> Ryu: (network_id, dp_id, port, mac)
181 1 Thiago Paiva
# Ryu --> OVS: set flow entryies
182 1 Thiago Paiva
183 1 Thiago Paiva
184 1 Thiago Paiva
h3. Node boot up (compute/network-node = OVS + Ryu agent + ryu_v2.ini)
185 2 Thiago Paiva
186 1 Thiago Paiva
# ryu_v2.ini --> Ryu agent: get ip address
187 1 Thiago Paiva
# Ryu agent -->  quantum db: register (dp_id, ip_address)
188 6 Thiago Paiva
# quantum db --> Ryu agent: get list of (dp_id, ip_address, and polling)
189 1 Thiago Paiva
# Ryu agent --> OVS: create vport_grc to ip address
190 1 Thiago Paiva
# Ryu agent --> Ryu: register (dp_id, port_id, remote dp_id)
191 1 Thiago Paiva
192 1 Thiago Paiva
193 1 Thiago Paiva
h2. Quem usa
194 3 Thiago Paiva
195 9 Thiago Paiva
???
196 3 Thiago Paiva
197 9 Thiago Paiva
198 3 Thiago Paiva
h2. Quem está por trás 
199 9 Thiago Paiva
200 9 Thiago Paiva
NTT Lab
201 6 Thiago Paiva
202 6 Thiago Paiva
203 6 Thiago Paiva
h2. Outras características