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:
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:
- Set: Diz pro comutador alterar um campo do pacote
- Drop: Determina o descarte do pacote por parte do equipamento
- 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.
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.
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.