Ryu » History » Version 5

« Previous - Version 5/10 (diff) - Next » - Current version
Thiago Paiva, 09 Oct 2013 10:14


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)

  1. to nova-network: create netork
  2. nova network --> quantum server: create net
  3. quantum server --> Ryu: network <uuid>, <tunnel key>
  4. quantum server --> nova network: <uuid>
  5. nova network --> linux_net driver: plug
  6. linux_net driver --> OVS: create gw-xxx
  7. linux_net driver --> quantum server: tentant id, network id, dp id, port, mac
  8. quantum server --> Ryu: network id, dp id, port, mac
  9. ryu --> OVS: set flow entryies

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

  1. to nova compute: create instance
  2. nova compute --> quantum server: create port
  3. quantum server --> nova compute: uuid
  4. nova compute --> VIF driver: plug
  5. VIF driver --> OVS: create tap-xxx
  6. VIF driver --> quantum server: (tenant_id, dp_id, port, mac)
  7. quantum server --> Ryu: (network_id, dp_id, port, mac)
  8. Ryu --> OVS: set flow entryies

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

  1. ryu_v2.ini --> Ryu agent: get ip address
  2. Ryu agent --> quantum db: register (dp_id, ip_address)
  3. quantum db --> Ryu agent: get list of (dp_id, ip_address, and polling)
  4. Ryu agent --> OVS: create vport_grc to ip address
  5. 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

Also available in: PDF HTML TXT