Ryu » History » Version 8

Version 7 (Thiago Paiva, 09 Oct 2013 11:05) → Version 8/10 (Thiago Paiva, 09 Oct 2013 11:06)

h1. Ryu

h2. Página do projeto

www.osrg.net/ryu

* Network opearting system
* OVS, openflow switch
* python
* www.osrg.net/ryu


h2. Sobre o código

h3. Linguagem

Python 2.7

h3. Licença

Apache 2.0 license

h3. Suporte a versões do OpenFLOW

* 1.0 with Nicira Extensions
* 1.2
* 1.3

h3. Requisitos

* ambiente Python 2.7

h3. Independência de linguagem de programação

Somente Python 2.7

h3. Modularidade

???

h3. Repositório

git://github.com/osrg/ryu.git

h3. Recursos básicos do controlador

* GRE tunneling
* VLAN support
* IPv6
* topology discovery
* MAC based segregation

h3. Aplicações

https://github.com/osrg/ryu/tree/master/ryu/app

* cbench.py: cbench: specify OF1.0
* client.py: app/client: update for quantum->neutron change
* conf_switch_key.py: ryu/app/conf_switch_key: fix a comment
* gre_tunnel.py: appease pep8
* ofctl_rest.py: ryu/app/ofctl_rest: add of1.3 support
* quantum_adapter.py: app/quantum_adapter: Lazily initialize neutron client
* rest.py: app/rest: add requirements to path component
* rest_conf_switch.py: log-cleanup: remove an unused logger instance
* rest_firewall.py: rest_firewall: improve REST response
* rest_nw_id.py: app/rest_nw_id: add port type for reserved port and vport-gre
* rest_quantum.py: fix typos in comments
* rest_router.py: rest_router: make pep8 comfortable
* rest_topology.py: topology: Add REST API
* rest_tunnel.py: rest_tunnel: fix comment typos
* simple_isolation.py: use ofproto.OFP_NO_BUFFER in some places
* simple_switch.py: simple_switch: simplify
* simple_switch_12.py: simple_switch_12: reduce difference from simple_switch_13
* simple_switch_13.py: add simple learning switch app for OF1.3
* simple_switch_lacp.py: add LACP application
* simple_vlan.py: simple_vlan.py: race condition
* tunnel_port_updater.py: sweep the tree to change from gevent to ryu.lib.hub
* wsgi.py: Switch how to call the API of Routes for every version

h3. Testes

https://github.com/osrg/ryu/tree/master/ryu/tests

* app: To specify a context of a controller from WSGIApplication#register()
* lib: test_addrconv: add more test
* ofproto: ofproto: remove unused definitions
* packet: packet.bgp: parse/serialize FOUR OCTET AS NUMBER capability
* sample: discard sample/test_simple_switch because of unittest fail

h3. Disponibilidade nas distribuições GNU/Linux

Pode ser instalado com o gerenciador 'pip'.

h3. Último release / commit

* Aplicações: "a month ago"
* Testes: "a day ago"
* Core: "a day ago"

h2. Documentação

h3. Documentação oficial

http://ryu.readthedocs.org/en/latest/index.html

h3. Tutoriais

https://github.com/osrg/ryu/wiki/OpenFlow_Tutorial

h2. Suporte junto ao OpenStack

Quantum Ryu plugin. VM pré-configurada para testar OpenStack + Ryu.

https://github.com/osrg/ryu/wiki/OpenStack

* Flat networks regardless of the underlying physical network
* Scalable multi-tenant isolations
** tunneling based isolations
** VLAN does not scale larger than 4096
** do not need high-end switches
* Future items:
** integration with quantum IPAM and L3 API
** firewall
** virtual network <--> physical network
** distributed controllers (redundancy)

h3. Communication

'nova requests quantum-server for network configuragion'

OVS <--> Ryu: openflow

Ryu agent <--> Ryu: REST API

Quantum server <--> Ryu: REST API

Ryu agent <--> Quantum db: db access

VIF driver <--> quantum: Quantum API
linux_net driver <--> server: Quantum API

h3. Network Creation (network-node = nova-network + linux_net driver + OVS)

# to nova-network: create netork
# nova network --> quantum server: create net
# quantum server --> Ryu: network <uuid>, <tunnel key>
# quantum server --> nova network: <uuid>
# nova network --> linux_net driver: plug
# linux_net driver --> OVS: create gw-xxx
# linux_net driver --> quantum server: tentant id, network id, dp id, port, mac
# quantum server --> Ryu: network id, dp id, port, mac
# ryu --> OVS: set flow entryies

h3. Instance creation (compute-node = nova compute + VIF driver + OVS)

# to nova compute: create instance
# nova compute --> quantum server: create port
# quantum server --> nova compute: uuid
# nova compute --> VIF driver: plug
# VIF driver --> OVS: create tap-xxx
# VIF driver --> quantum server: (tenant_id, dp_id, port, mac)
# quantum server --> Ryu: (network_id, dp_id, port, mac)
# Ryu --> OVS: set flow entryies

h3. Node boot up (compute/network-node = OVS + Ryu agent + ryu_v2.ini)

# ryu_v2.ini --> Ryu agent: get ip address
# Ryu agent --> quantum db: register (dp_id, ip_address)
# quantum db --> Ryu agent: get list of (dp_id, ip_address, and polling)
# Ryu agent --> OVS: create vport_grc to ip address
# Ryu agent --> Ryu: register (dp_id, port_id, remote dp_id)

h2. Quem usa

h2. Quem está por trás

h2. Outras características