Ryu¶
Sobre o código¶
Linguagem¶
Linguagem utilizada para o desenvolvimento.
Licença¶
Licença em que o código foi liberado. A preferência é por licenças livres, facilitando assim o estudo e desenvolvimento de aplicações ou até mesmo de correções de problemas.
Suporte a versões do OpenFLOW¶
- Quais são as versões de OpenFlow suportadas pelo controlador / framework.
- Como isso é implementado
Requisitos¶
- pacotes a serem instalados
- espaço de armazenamento exigido
- outros recursos necessários ao funcionamento do controlador.
Independência de linguagem de programação¶
Quais linguagens são suportadas na implementação de aplicações e componentes.
Modularidade¶
Quanto e que tipo de modularidade o controlador oferece.
Repositório¶
Onde encontrar o código.
Recursos básicos do controlador¶
Recursos oferecidos pelo controlador sem a necessidade de aplicações, como por exemplo:
- GRE tunneling
- VLAN support
Aplicações¶
Componentes disponíveis que acrescentam ferramentas ao controlador, como por exemplo:
- topology discovery
- MAC based segregation
Testes¶
Existência de testes de unidades no codigo (scripts ou códigos), geralmente em uma pasta em separado, que validam e testam o código desenvolvido.
Disponibilidade nas distribuições GNU/Linux¶
Disponibilidade e facilidade de instação nas distribuição GNU/Linux relevantes atuais.
- disponível nos repositórios da distribuição?
- versão dos pacotes disponíveis
- ênfase nas distros Debian e Ubuntu.
Documentação¶
Nível de documentação do controlador, incluindo tutoriais e exemplos (tanto de estruturas quanto de aplicações).
Suporte junto ao OpenStack¶
Como o ambiente estruturado se baseia no OpenStack, é interessante saber qual é o tipo de suporte oferecido a essa ferramenta.
Quem usa¶
Público do controlador
Quem está por trás¶
Empresas, consórcio, comunidade, universidade, ...
último release / commit¶
Uma das formas de se ter noção de quanto o desenvolvimento ainda está ativo é procurar pela data da última atualização de código no repositório.
Outras características¶
Características que não se adequam a nenhuma das anteriores.
About¶
Network management applications on top of Ryu (inside a controller node)¶
- GRE tunneling
- VLAN support
- topology discovery
- MAC based segregation
'Only commodity hardware'
Ryu <--> 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)
Quantum plugin for each network technology
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)
Component: separation unit¶
- interface for control and states and generates events
- communicate by message passing
- language independency
OBS:¶
two ways oto isolate tenants: GRE tunnel and VLAN