Controladores SDN
O intuito dessa aula é apresentar alguns dos Controladores SDN existentes.
Serão apresentados alguns Controladores, demonstrando suas peculiaridades.
Após a análise teórica, iremos testar 2 controladores escritos em Python:
Antes de começarmos, baixem em suas máquinas os projetos do POX e do Ryu.
Esta apresentação tem como base o artigo
“A comparison between several Software Defined Networking controllers” e a dissertação Estudo comparativo de controladores SDN: avaliando a utilização de recursos no hospedeiro.
Referêncial Teórico
As Redes Definidas por Software se baseam em 4 pilares:
- A separação do Plano de Dados e Plano de Controle
- A utilização de fluxos ao invés de endereço de destino para decisão de encaminhamento
- O controle lógico se estabelece em uma entidade externa: o Controlador SDN
- A programação da rede por softwares
![Visão simplificada da arquitetura SDN](/uff-sdn/images/sdn1.png)
Controladores
The first SDN controller that supported OpenFlow was NOX written in C++
Alguns dos controladores mais utilizados do mercado são: Beacon, Floodlight, NOX, POX, Opendaylight e Ryu.
POX
- Código aberto
- Variação do antigo controlador NOX
- Escrito em Python
- Sua utilização permite um rápido desenvolvimento do plano de controle, principalmente por usar uma linguagem de alto nível para configuração, ou seja, é mais adequado para casos em que se deseja uma rápida prototipagem do que para usos empresariais
- Consegue operar em todos os tipos de máquinas e provê uma forma de migração das aplicações baseadas em NOX
- Enfoque primário na área de pesquisa
- Suporta diversos sistemas operacionais
- Suporta a versão 1.0 do OpenFlow
Ryu
- Código aberto
- Escrito em Python
- Possui suporte de um grupo de pesquisa denominado NTT Labs
- Com uma API bem definida, torna fácil o desenvolvimento de novas aplicações de gerenciamento e controle
- Cada aplicação Ryu tem uma pilha para receber os eventos, que são processados na ordem em que são recebidos
- Assim como o POX, não apresenta escalabilidade no uso da CPU
- Suporta as versões 1.0, 1.2, 1.3, 1.4 e 1.5 do OpenFlow
ONOS (Open Network Operating System)
- Código aberto
- Escrito em Java, logo necessita de um tempo maior para aprender a utilizar este controlador
- Pronto para ser utilizado em produção
- Boa performance
- Suporta as versões 1.0 e 1.3 do OpenFlow
OpenDaylight
- Código aberto
- Escrito em Java, logo necessita de um tempo maior para aprender a utilizar este controlador
- Bastante apoiado pela industria de redes
- Bom para ser utilizado em produção
- Boa performance e suporte
- Suporta as versões 1.0 e 1.3 do OpenFlow
Comparação
Artigo
Teste de Ping
Controlador |
RTT Min [ms] |
RTT Max [ms] |
RTT Med [ms] |
POX |
0.29 |
103.23 |
20.76 |
Ryu |
0.11 |
61.05 |
11.86 |
ONOS |
0.14 |
177.92 |
21.71 |
Odl |
0.17 |
156.24- |
22.65- |
Teste de banda
Controlador |
Banda (h1 -> h16) |
Banda (h16 -> h1) |
POX |
3.93 Gbps |
3.93 Gbps |
Ryu |
8.39 Gbps |
8.40 Gbps |
ONOS |
9.23 Gbps |
9.23 Gbps |
Odl |
8.64 Gbps |
8.64 Gbps |
Dissertação
Controlador |
Openflow |
Fluxos / s |
POX |
1.0 |
6.675,51 |
Ryu |
1.0 |
10.636,40 |
![Comparação do uso de Memória entre POX e Ryu](/uff-sdn/images/mem_pox-ryu.png)
![Comparação do uso da CPU entre POX e Ryu](/uff-sdn/images/cpu_pox-ryu.png)
Controlador |
Memória |
CPU |
POX |
Médio |
Alto |
Ryu |
Alto |
Alto |
Trabalho Prático
Tutorial POX 1, T POX 2
e Tutorial Ryu
Comandos importantes:
sudo mn -c
dpctl dump-flows
Primeiro Cenário:
Segundo Cenário:
- POX
- single, 3
- l2_learning
Terceiro Cenário:
- Ryu
- single, 3
- simple_switch
Quarto Cenário:
- Ryu
- linear, 4
- simple_switch