Ryu » History » Version 8

Thiago Paiva, 09 Oct 2013 11:06

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 6 Thiago Paiva
Somente Python 2.7
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 6 Thiago Paiva
* cbench.py: cbench: specify OF1.0
65 6 Thiago Paiva
* client.py: app/client: update for quantum->neutron change
66 6 Thiago Paiva
* conf_switch_key.py: ryu/app/conf_switch_key: fix a comment
67 6 Thiago Paiva
* gre_tunnel.py: appease pep8
68 6 Thiago Paiva
* ofctl_rest.py: ryu/app/ofctl_rest: add of1.3 support
69 6 Thiago Paiva
* quantum_adapter.py: app/quantum_adapter: Lazily initialize neutron client
70 6 Thiago Paiva
* rest.py: app/rest: add requirements to path component
71 6 Thiago Paiva
* rest_conf_switch.py: log-cleanup: remove an unused logger instance
72 6 Thiago Paiva
* rest_firewall.py: rest_firewall: improve REST response
73 6 Thiago Paiva
* rest_nw_id.py: app/rest_nw_id: add port type for reserved port and vport-gre
74 6 Thiago Paiva
* rest_quantum.py: fix typos in comments
75 6 Thiago Paiva
* rest_router.py: rest_router: make pep8 comfortable
76 6 Thiago Paiva
* rest_topology.py: topology: Add REST API
77 6 Thiago Paiva
* rest_tunnel.py: rest_tunnel: fix comment typos
78 6 Thiago Paiva
* simple_isolation.py: use ofproto.OFP_NO_BUFFER in some places
79 6 Thiago Paiva
* simple_switch.py: simple_switch: simplify
80 6 Thiago Paiva
* simple_switch_12.py: simple_switch_12: reduce difference from simple_switch_13
81 6 Thiago Paiva
* simple_switch_13.py: add simple learning switch app for OF1.3
82 6 Thiago Paiva
* simple_switch_lacp.py: add LACP application
83 6 Thiago Paiva
* simple_vlan.py: simple_vlan.py: race condition
84 6 Thiago Paiva
* tunnel_port_updater.py: sweep the tree to change from gevent to ryu.lib.hub
85 6 Thiago Paiva
* wsgi.py: Switch how to call the API of Routes for every version
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 6 Thiago Paiva
* app: To specify a context of a controller from WSGIApplication#register()
93 6 Thiago Paiva
* lib: test_addrconv: add more test
94 6 Thiago Paiva
* ofproto: ofproto: remove unused definitions
95 6 Thiago Paiva
* packet: packet.bgp: parse/serialize FOUR OCTET AS NUMBER capability
96 6 Thiago Paiva
* sample: discard sample/test_simple_switch because of unittest fail
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 2 Thiago Paiva
# quantum server --> Ryu: network id, dp id, port, mac
169 1 Thiago Paiva
# ryu --> OVS:  set flow entryies
170 1 Thiago Paiva
171 1 Thiago Paiva
172 6 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 1 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 2 Thiago Paiva
# Ryu --> OVS: set flow entryies
182 1 Thiago Paiva
183 1 Thiago Paiva
184 6 Thiago Paiva
h3. Node boot up (compute/network-node = OVS + Ryu agent + ryu_v2.ini)
185 1 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 1 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 3 Thiago Paiva
# Ryu agent --> Ryu: register (dp_id, port_id, remote dp_id)
191 3 Thiago Paiva
192 3 Thiago Paiva
193 6 Thiago Paiva
h2. Quem usa
194 3 Thiago Paiva
195 6 Thiago Paiva
196 6 Thiago Paiva
h2. Quem está por trás 
197 6 Thiago Paiva
198 6 Thiago Paiva
199 6 Thiago Paiva
h2. Outras características