Conceitos

A melhor forma de entender e descrever o protocolo Openflow é partir dos conceitos que o mesmo define ou utiliza.


Flow

O flow, ou fluxo, é um dado que visa descrever um padrão comum entre pacotes. Essa unidade básica de redes costuma possuir características bem particulares e fortemente associadas às estações envolvidas na comunicação e o protocolo em que estão falando. No entanto existem algumas informações específicas e comuns entre os pacotes que são suficientes para tomar as decisões de roteamento. O flow permite a descrição dessas características comuns.

Um exemplo de fluxo pode ser visto na estrutura chamada de Header Fields na imagem abaixo:

Exemplo deFlow Um fluxo onde o campo IP|DA = 186.192.90.5 com os outros campos deixados em aberto (”*“) definem todos os pacotes que vão para esse IP de Destino.

Action

As Actions são as operações básicas de encaminhamento que precisam ser implementadas pelo fabricante e realizadas em cada pacote que será comutado. Alguns tipos de ações estabelecidos pelo Openflow são:

  1. Set: Diz pro comutador alterar um campo do pacote
  2. Drop: Determina o descarte do pacote por parte do equipamento
  3. Forward: Define o encaminhamento propriamento dito do pacote

Controlador

Como citado anteriormente, o Controlador é o agente em que toda inteligência da solução é inserida. É implementado por Software e pode estar rodando em qualquer máquina - essa é mais uma vantagem da divisão entre os planos.

Sendo software, é um entidade que pode ser replicada e descentralizada utilizando técnicas de Sistemas Distribuídos, é importante notar que há o ônus de se ter que lidar com todas as complexidades que surgem com essas técnicas.

Por ser a inteligência do sistema, uma nova feature surge em administração de redes, fica mais fácil realizar atividades como monitoração.

Switch Openflow

O Swicth Openflow é um agente primordial no protocolo, para tal existem 2 atribuições básicas que ele precisa implementar, estabelecimento de conexão segura com o Controlador e encaminhmamento baseado em Flows e Actions.

Sobre o primeiro ponto, é válido ressaltar que quando as duas camadas estavam juntas, não havia caminho intermediário. Com a separação introduz-se diversos pontos de vulnerabilidade, se tratando de infraestrutura, isso não pode ocorrer. Por isso estabeleceu-se que o Switch conversaria com o Controlador usando um canal seguro através de TLS.

As Flow Tables são explicadas no próximo tópico.

Um ponto digno de nota é que qualquer equipamento que seja capaz de encaminhar pacotes e implemente essas atribuições pode ser utilizado como Switch Openflow, então comutadores fĩsicos adequados satisfazem, mas soluções virtuais como o Open vSwitch instaladas em um container, VM ou bare metal também o fazem.

Exemplo Switch

Flow Table

Falamos sobre Flows e Actions, uma Flow Table é basicamente uma tabela onde cada entrada associa um fluxo a uma ação. Ou seja, o controlador define pro comutador o que ele deve fazer ao receber pacotes com determinadas características. Um exemplo de Flow Table pode ser visto abaixo.

Exemplo de Flow
Table

Novas possibilidades

É possível observar que a partir dessa Flow Table passa a ser possível tomar decisões baseadas em dados da Camada de Transporte (L4), então um equipamento que originalmente apenas comutava, agora também pode realizar atividades como firewalling.

Exemplos de
Operação