Ryu » History » Version 5
Version 4 (Thiago Paiva, 23 Sep 2013 12:00) → Version 5/10 (Thiago Paiva, 09 Oct 2013 10:14)
h1. Ryu
h2. Sobre o código
h3. Linguagem
Linguagem utilizada para o desenvolvimento.
h3. 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.
h3. Suporte a versões do OpenFLOW
* Quais são as versões de OpenFlow suportadas pelo controlador / framework.
* Como isso é implementado
h3. Requisitos
* pacotes a serem instalados
* espaço de armazenamento exigido
* outros recursos necessários ao funcionamento do controlador.
h3. Independência de linguagem de programação
Quais linguagens são suportadas na implementação de aplicações e componentes.
h3. Modularidade
Quanto e que tipo de modularidade o controlador oferece.
h3. Repositório
Onde encontrar o código.
h3. Recursos básicos do controlador
Recursos oferecidos pelo controlador sem a necessidade de aplicações, como por exemplo:
* GRE tunneling
* VLAN support
h3. Aplicações
Componentes disponíveis que acrescentam ferramentas ao controlador, como por exemplo:
* topology discovery
* MAC based segregation
h3. 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.
h3. 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.
h2. Documentação
Nível de documentação do controlador, incluindo tutoriais e exemplos (tanto de estruturas quanto de aplicações).
h2. Suporte junto ao OpenStack
Como o ambiente estruturado se baseia no OpenStack, é interessante saber qual é o tipo de suporte oferecido a essa ferramenta.
h2. Quem usa
Público do controlador
h2. Quem está por trás
Empresas, consórcio, comunidade, universidade, ...
h2. ú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.
h2. Outras características
Características que não se adequam a nenhuma das anteriores.
h2. About
* Network opearting system
* OVS, openflow switch
* python
* www.osrg.net/ryu
h2. Network management applications on top of Ryu (inside a controller node)
* GRE tunneling
* VLAN support
* topology discovery
* MAC based segregation
'Only commodity hardware'
h2. 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
h2. 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
h2. 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
h2. 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
h2. 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. Component: separation unit
* interface for control and states and generates events
* communicate by message passing
* language independency
h2. OBS:
two ways oto isolate tenants: GRE tunnel and VLAN
h2. Sobre o código
h3. Linguagem
Linguagem utilizada para o desenvolvimento.
h3. 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.
h3. Suporte a versões do OpenFLOW
* Quais são as versões de OpenFlow suportadas pelo controlador / framework.
* Como isso é implementado
h3. Requisitos
* pacotes a serem instalados
* espaço de armazenamento exigido
* outros recursos necessários ao funcionamento do controlador.
h3. Independência de linguagem de programação
Quais linguagens são suportadas na implementação de aplicações e componentes.
h3. Modularidade
Quanto e que tipo de modularidade o controlador oferece.
h3. Repositório
Onde encontrar o código.
h3. Recursos básicos do controlador
Recursos oferecidos pelo controlador sem a necessidade de aplicações, como por exemplo:
* GRE tunneling
* VLAN support
h3. Aplicações
Componentes disponíveis que acrescentam ferramentas ao controlador, como por exemplo:
* topology discovery
* MAC based segregation
h3. 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.
h3. 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.
h2. Documentação
Nível de documentação do controlador, incluindo tutoriais e exemplos (tanto de estruturas quanto de aplicações).
h2. Suporte junto ao OpenStack
Como o ambiente estruturado se baseia no OpenStack, é interessante saber qual é o tipo de suporte oferecido a essa ferramenta.
h2. Quem usa
Público do controlador
h2. Quem está por trás
Empresas, consórcio, comunidade, universidade, ...
h2. ú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.
h2. Outras características
Características que não se adequam a nenhuma das anteriores.
h2. About
* Network opearting system
* OVS, openflow switch
* python
* www.osrg.net/ryu
h2. Network management applications on top of Ryu (inside a controller node)
* GRE tunneling
* VLAN support
* topology discovery
* MAC based segregation
'Only commodity hardware'
h2. 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
h2. 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
h2. 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
h2. 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
h2. 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. Component: separation unit
* interface for control and states and generates events
* communicate by message passing
* language independency
h2. OBS:
two ways oto isolate tenants: GRE tunnel and VLAN