Conceitos
O termo SDN ( Software Definied Networking ) foi originalmente cunhado para representar as ideias e o trabalho relacionado ao OpenFlow em Stanford.
[1] propõe uma caracterização das SDN baseada em quatro pilares:
- Os planos de dados e de controle são desacoplados. Dispositivos de rede passam a ter o papel de apenas encaminhar pacotes;
- Decisões de encaminhamento são baseadas no fluxo (fluxo é uma sequência de pacotes entre a fonte e o destino) e não no destino. Todos os pacotes de um fluxo recebem a mesma política nos dispositivos de encaminhamento;
- A lógica de controle é movida para uma entidade externa, o controlador da SDN ou NOS (Network Operating System) que roda em um servidor e fornece as abstrações e recursos necessários para programar os dispositivos de encaminhamento com base em uma visão centralizada e abstrata da rede;
- A rede é programável através de aplicações rodando no NOS que interagem com os dispositivos do plano de dados.
Para cumprir seu objetivo, a SDN trabalha com três abstrações principais [1], sendo elas: encaminhamento, distribuição e especificação.
- Encaminhamento: Deve permitir qualquer comportamento de encaminhamento à rede sem que seja necessário expor os detalhes do hardware envolvido no processo;
- Distribuição: Tem como objetivo tornar o problema do controle distribuído em um problema logicamente centralizado. Isso é feito por meio de de uma camada de distribuição comum, que reside no NOS. Essa camada instala os comandos de controle nos dispositivos de encaminhamento e coleta informações do estado da rede;
- Especificação: Deve possibilitar que uma aplicação de rede expresse o comportamento desejado para a rede sem que seja responsável por implementar esse comportamento, mapeando configurações abstratas especificadas pelas aplicações em uma configuração física na rede global.
Ferramentas
Floodlight:
- Controlador SDN fornecido sob licensa Apache e baseado em Java;
- Trabalha com comutadores físicos e virtuais através do protocolo OpenFlow;
- Permite a especificação do protocolo a ser utilizado para o controle remoto de dispositivos de rede;
- É facilmente extensível e faćil de configurar com poucas dependências;
- Pode administrar redes mistas OpenFlow e não-OpenFlow.
Indigo:
- Projeto OpenSource focado em fornecer suporte ao OpenFlow em comutadores físicos e em hipervisores;
- É a base do projeto Switch Light da Big Switch Networks.
Neutron (OpenStack)
- Parte do projeto OpenStack, fornece a “rede como serviço” (tradução livre de networking as a service) entre dispositivos como controladores de interface de rede (NICs) administrados por serviços do OpenStack como o Nova;
- Permite a criação de topologias de rede complexas na nuvem;
- Incluir funcionalidades de rede - como Qualidade de Serviço ou Firewalls, por exemplo - através de plugins;
- Permitir a criação serviços de redes avançados acopláveis à redes OpenStack;
- Interface gráfica para algumas operações.
Open vSwitch
- Open vSwitch funciona é um comutador virtual distribuído de múltiplas camadas fornecido sob a licensa Apache 2.0.