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 , # quantum server --> nova network: # 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 h3. Component: separation unit * interface for control and states and generates events * communicate by message passing * language independency h3. OBS: two ways oto isolate tenants: GRE tunnel and VLAN