Ryu » History » Version 7

Thiago Paiva, 09 Oct 2013 11:05

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
* python
10 6 Thiago Paiva
* www.osrg.net/ryu
11 6 Thiago Paiva
12 6 Thiago Paiva
13 5 Thiago Paiva
h2. Sobre o código
14 5 Thiago Paiva
15 5 Thiago Paiva
16 5 Thiago Paiva
h3. Linguagem
17 1 Thiago Paiva
18 6 Thiago Paiva
Python 2.7
19 5 Thiago Paiva
20 5 Thiago Paiva
21 1 Thiago Paiva
h3. Licença
22 5 Thiago Paiva
23 6 Thiago Paiva
Apache 2.0 license
24 1 Thiago Paiva
25 1 Thiago Paiva
26 1 Thiago Paiva
h3. Suporte a versões do OpenFLOW
27 5 Thiago Paiva
28 6 Thiago Paiva
* 1.0 with Nicira Extensions
29 6 Thiago Paiva
* 1.2
30 6 Thiago Paiva
* 1.3
31 5 Thiago Paiva
32 1 Thiago Paiva
33 5 Thiago Paiva
h3. Requisitos
34 5 Thiago Paiva
35 6 Thiago Paiva
* ambiente Python 2.7
36 1 Thiago Paiva
37 5 Thiago Paiva
38 5 Thiago Paiva
h3. Independência de linguagem de programação 
39 5 Thiago Paiva
40 6 Thiago Paiva
Somente Python 2.7
41 1 Thiago Paiva
42 5 Thiago Paiva
43 5 Thiago Paiva
h3. Modularidade
44 5 Thiago Paiva
45 6 Thiago Paiva
???
46 1 Thiago Paiva
47 5 Thiago Paiva
48 1 Thiago Paiva
h3. Repositório
49 1 Thiago Paiva
50 6 Thiago Paiva
git://github.com/osrg/ryu.git
51 1 Thiago Paiva
52 1 Thiago Paiva
53 1 Thiago Paiva
h3. Recursos básicos do controlador
54 1 Thiago Paiva
55 1 Thiago Paiva
* GRE tunneling
56 1 Thiago Paiva
* VLAN support
57 6 Thiago Paiva
* IPv6
58 1 Thiago Paiva
* topology discovery
59 1 Thiago Paiva
* MAC based segregation
60 1 Thiago Paiva
61 1 Thiago Paiva
62 6 Thiago Paiva
h3. Aplicações
63 1 Thiago Paiva
64 6 Thiago Paiva
https://github.com/osrg/ryu/tree/master/ryu/app
65 1 Thiago Paiva
66 6 Thiago Paiva
* cbench.py: cbench: specify OF1.0
67 6 Thiago Paiva
* client.py: app/client: update for quantum->neutron change
68 6 Thiago Paiva
* conf_switch_key.py: ryu/app/conf_switch_key: fix a comment
69 6 Thiago Paiva
* gre_tunnel.py: appease pep8
70 6 Thiago Paiva
* ofctl_rest.py: ryu/app/ofctl_rest: add of1.3 support
71 6 Thiago Paiva
* quantum_adapter.py: app/quantum_adapter: Lazily initialize neutron client
72 6 Thiago Paiva
* rest.py: app/rest: add requirements to path component
73 6 Thiago Paiva
* rest_conf_switch.py: log-cleanup: remove an unused logger instance
74 6 Thiago Paiva
* rest_firewall.py: rest_firewall: improve REST response
75 6 Thiago Paiva
* rest_nw_id.py: app/rest_nw_id: add port type for reserved port and vport-gre
76 6 Thiago Paiva
* rest_quantum.py: fix typos in comments
77 6 Thiago Paiva
* rest_router.py: rest_router: make pep8 comfortable
78 6 Thiago Paiva
* rest_topology.py: topology: Add REST API
79 6 Thiago Paiva
* rest_tunnel.py: rest_tunnel: fix comment typos
80 6 Thiago Paiva
* simple_isolation.py: use ofproto.OFP_NO_BUFFER in some places
81 6 Thiago Paiva
* simple_switch.py: simple_switch: simplify
82 6 Thiago Paiva
* simple_switch_12.py: simple_switch_12: reduce difference from simple_switch_13
83 6 Thiago Paiva
* simple_switch_13.py: add simple learning switch app for OF1.3
84 6 Thiago Paiva
* simple_switch_lacp.py: add LACP application
85 6 Thiago Paiva
* simple_vlan.py: simple_vlan.py: race condition
86 6 Thiago Paiva
* tunnel_port_updater.py: sweep the tree to change from gevent to ryu.lib.hub
87 6 Thiago Paiva
* wsgi.py: Switch how to call the API of Routes for every version
88 1 Thiago Paiva
89 1 Thiago Paiva
90 6 Thiago Paiva
h3. Testes
91 1 Thiago Paiva
92 6 Thiago Paiva
https://github.com/osrg/ryu/tree/master/ryu/tests
93 5 Thiago Paiva
94 6 Thiago Paiva
* app: To specify a context of a controller from WSGIApplication#register()
95 6 Thiago Paiva
* lib: test_addrconv: add more test
96 6 Thiago Paiva
* ofproto: ofproto: remove unused definitions
97 6 Thiago Paiva
* packet: packet.bgp: parse/serialize FOUR OCTET AS NUMBER capability
98 6 Thiago Paiva
* sample: discard sample/test_simple_switch because of unittest fail
99 5 Thiago Paiva
100 5 Thiago Paiva
101 6 Thiago Paiva
h3. Disponibilidade nas distribuições GNU/Linux 
102 5 Thiago Paiva
103 6 Thiago Paiva
Pode ser instalado com o gerenciador 'pip'.
104 5 Thiago Paiva
105 5 Thiago Paiva
106 6 Thiago Paiva
h3. Último release / commit
107 5 Thiago Paiva
108 6 Thiago Paiva
* Aplicações: "a month ago"
109 6 Thiago Paiva
* Testes: "a day ago"
110 6 Thiago Paiva
* Core: "a day ago"
111 1 Thiago Paiva
112 1 Thiago Paiva
113 1 Thiago Paiva
114 6 Thiago Paiva
h2. Documentação
115 1 Thiago Paiva
116 1 Thiago Paiva
117 6 Thiago Paiva
h3. Documentação oficial
118 1 Thiago Paiva
119 6 Thiago Paiva
http://ryu.readthedocs.org/en/latest/index.html
120 1 Thiago Paiva
121 1 Thiago Paiva
122 6 Thiago Paiva
h3. Tutoriais
123 1 Thiago Paiva
124 6 Thiago Paiva
https://github.com/osrg/ryu/wiki/OpenFlow_Tutorial
125 1 Thiago Paiva
126 1 Thiago Paiva
127 6 Thiago Paiva
h2. Suporte junto ao OpenStack
128 1 Thiago Paiva
129 6 Thiago Paiva
Quantum Ryu plugin. VM pré-configurada para testar OpenStack + Ryu.
130 1 Thiago Paiva
131 6 Thiago Paiva
https://github.com/osrg/ryu/wiki/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 1 Thiago Paiva
145 6 Thiago Paiva
h3. Communication
146 1 Thiago Paiva
147 1 Thiago Paiva
'nova requests quantum-server for network configuragion'
148 1 Thiago Paiva
149 1 Thiago Paiva
OVS <--> Ryu: openflow
150 3 Thiago Paiva
151 1 Thiago Paiva
Ryu agent <--> Ryu: REST API
152 1 Thiago Paiva
153 1 Thiago Paiva
Quantum server <--> Ryu: REST API
154 1 Thiago Paiva
155 1 Thiago Paiva
Ryu agent <--> Quantum db: db access
156 1 Thiago Paiva
157 1 Thiago Paiva
VIF driver <--> quantum: Quantum API
158 1 Thiago Paiva
linux_net driver <--> server: Quantum API
159 1 Thiago Paiva
160 1 Thiago Paiva
161 6 Thiago Paiva
h3. Network Creation (network-node = nova-network + linux_net driver + OVS)
162 1 Thiago Paiva
163 1 Thiago Paiva
# to nova-network: create netork
164 1 Thiago Paiva
# nova network --> quantum server: create net
165 1 Thiago Paiva
# quantum server --> Ryu: network <uuid>, <tunnel key>
166 1 Thiago Paiva
# quantum server --> nova network: <uuid>
167 1 Thiago Paiva
# nova network --> linux_net driver: plug
168 1 Thiago Paiva
# linux_net driver --> OVS: create gw-xxx
169 1 Thiago Paiva
# linux_net driver --> quantum server: tentant id, network id, dp id, port, mac
170 2 Thiago Paiva
# quantum server --> Ryu: network id, dp id, port, mac
171 1 Thiago Paiva
# ryu --> OVS:  set flow entryies
172 1 Thiago Paiva
173 1 Thiago Paiva
174 6 Thiago Paiva
h3. Instance creation (compute-node = nova compute + VIF driver + OVS)
175 1 Thiago Paiva
176 1 Thiago Paiva
# to nova compute: create instance
177 1 Thiago Paiva
# nova compute --> quantum server: create port
178 1 Thiago Paiva
# quantum server --> nova compute: uuid
179 1 Thiago Paiva
# nova compute --> VIF driver: plug
180 1 Thiago Paiva
# VIF driver --> OVS: create tap-xxx
181 1 Thiago Paiva
# VIF driver --> quantum server: (tenant_id, dp_id, port, mac)
182 1 Thiago Paiva
# quantum server --> Ryu: (network_id, dp_id, port, mac)
183 2 Thiago Paiva
# Ryu --> OVS: set flow entryies
184 1 Thiago Paiva
185 1 Thiago Paiva
186 6 Thiago Paiva
h3. Node boot up (compute/network-node = OVS + Ryu agent + ryu_v2.ini)
187 1 Thiago Paiva
188 1 Thiago Paiva
# ryu_v2.ini --> Ryu agent: get ip address
189 1 Thiago Paiva
# Ryu agent -->  quantum db: register (dp_id, ip_address)
190 1 Thiago Paiva
# quantum db --> Ryu agent: get list of (dp_id, ip_address, and polling)
191 1 Thiago Paiva
# Ryu agent --> OVS: create vport_grc to ip address
192 3 Thiago Paiva
# Ryu agent --> Ryu: register (dp_id, port_id, remote dp_id)
193 3 Thiago Paiva
194 3 Thiago Paiva
195 6 Thiago Paiva
h2. Quem usa
196 3 Thiago Paiva
197 6 Thiago Paiva
198 6 Thiago Paiva
h2. Quem está por trás 
199 6 Thiago Paiva
200 6 Thiago Paiva
201 6 Thiago Paiva
h2. Outras características