Ryu¶
Página do projeto¶
www.osrg.net/ryu
Sobre o código¶
Linguagem¶
Python 2.7
Licença¶
Apache 2.0 license
Suporte a versões do OpenFLOW¶
- 1.0 with Nicira Extensions
- 1.2
- 1.3
Requisitos¶
Independência de linguagem de programação¶
Somente Python 2.7
Modularidade¶
???
Repositório¶
git://github.com/osrg/ryu.git
Recursos básicos do controlador¶
- GRE tunneling
- VLAN support
- IPv6
- topology discovery
- MAC based segregation
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
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
Disponibilidade nas distribuições GNU/Linux¶
Pode ser instalado com o gerenciador 'pip'.
Último release / commit¶
- Aplicações: "a month ago"
- Testes: "a day ago"
- Core: "a day ago"
Documentação¶
Documentação oficial¶
http://ryu.readthedocs.org/en/latest/index.html
Tutoriais¶
https://github.com/osrg/ryu/wiki/OpenFlow_Tutorial
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)
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
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
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
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)
Quem usa¶
Quem está por trás¶
Outras características¶