Ryu » History » Version 9

Version 8 (Thiago Paiva, 09 Oct 2013 11:06) → Version 9/10 (Thiago Paiva, 10 Oct 2013 00:56)

h1. Ryu

h2. Página do projeto

www.osrg.net/ryu

* Network opearting system
* OVS, openflow switch

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

Comunicação por mensagens, então, pode conversar com qualquer aplicativo que implemente essas mensagens. 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.py: cbench: specify OF1.0
* client.py client.py: app/client: update for quantum->neutron change
* conf_switch_key.py conf_switch_key.py: ryu/app/conf_switch_key: fix a comment
* gre_tunnel.py gre_tunnel.py: appease pep8
* ofctl_rest.py ofctl_rest.py: ryu/app/ofctl_rest: add of1.3 support
* quantum_adapter.py quantum_adapter.py: app/quantum_adapter: Lazily initialize neutron client
* rest.py: app/rest app/rest: add requirements to path component
* rest_conf_switch.py rest_conf_switch.py: log-cleanup: remove an unused logger instance
* rest_firewall.py rest_firewall.py: rest_firewall: improve REST response
* rest_nw_id.py rest_nw_id.py: app/rest_nw_id: add port type for reserved port and vport-gre
* rest_quantum.py rest_quantum.py: fix typos in comments
* rest_router.py rest_router.py: rest_router: make pep8 comfortable
* rest_topology.py rest_topology.py: topology: Add REST API
* rest_tunnel.py rest_tunnel.py: rest_tunnel: fix comment typos
* simple_isolation.py simple_isolation.py: use ofproto.OFP_NO_BUFFER in some places
* simple_switch.py simple_switch.py: simple_switch: simplify
* simple_switch_12.py simple_switch_12.py: simple_switch_12: reduce difference from simple_switch_13
* simple_switch_13.py simple_switch_13.py: add simple learning switch app for OF1.3
* simple_switch_lacp.py simple_switch_lacp.py: add LACP application
* simple_vlan.py simple_vlan.py: simple_vlan.py: race condition
* tunnel_port_updater.py tunnel_port_updater.py: sweep the tree to change from gevent to ryu.lib.hub
* wsgi.py 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 app: To specify a context of a controller from WSGIApplication#register()
* lib lib: test_addrconv: add more test
* ofproto ofproto: ofproto: remove unused definitions
* packe packet: packet.bgp: parse/serialize FOUR OCTET AS NUMBER capability
* sample 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

NTT Lab



h2. Outras características