# OpenFlow

OpenFlow é um protocolo de comunicação que dá acesso ao plano de encaminhamento de um switch de rede ou roteador pela rede de computadores.

## Descrição

OpenFlow permite que os controladores de rede determinem o caminho dos pacotes de rede em uma rede de switchs. Os controladores são diferentes dos switchs. Essa separação permite um gerenciamento de tráfego mais sofisticado do que é viável usando listas de controle de acesso (ACLs) e protocolos de roteamento. Além disso, o OpenFlow permite que switchs de diferentes fornecedores (geralmente cada um com suas próprias interfaces proprietárias e linguagens de script) sejam gerenciados remotamente usando um único protocolo aberto. Os inventores do protocolo consideram o OpenFlow um facilitador de SDN.
OpenFlow permite a administração remota das tabelas de encaminhamento de pacotes de um switch de camada 3, adicionando, modificando e removendo regras e ações de correspondência de pacotes. Dessa forma, as decisões de roteamento podem ser feitas periodicamente ou ocasionalmente pelo controlador e transformadas em regras e ações com uma vida útil configurável, que são então implantadas em uma tabela de fluxo do switch, deixando o encaminhamento real de pacotes para o switch. Os pacotes que não são correspondentes ao switch podem ser encaminhados ao controlador. O controlador pode então decidir modificar as regras da tabela de fluxo existentes em um ou mais switches ou implantar novas regras, para evitar um fluxo estrutural de tráfego entre o switch e o controlador. Ele pode até decidir encaminhar o próprio tráfego, desde que instrua o switch a encaminhar pacotes inteiros em vez de apenas seu cabeçalho.
O protocolo OpenFlow é sobreposto ao TCP/IP e prescreve o uso de TLS. Os controladores devem escutar na porta TCP 6653 os switches que desejam configurar uma conexão. Versões anteriores do protocolo OpenFlow usavam não oficialmente a porta 6633. Algumas implementações de plano de controle de rede usam o protocolo para gerenciar os elementos de encaminhamento de rede. OpenFlow é usado principalmente entre o switch e o controlador em um canal seguro.

## História

A ONF, uma organização liderada por usuários dedicados à promoção e adoção de SDN, gerencia o padrão OpenFlow. A ONF define o OpenFlow como o protocolo com a primeira interface de comunicação padrão definida entre as camadas de controle e encaminhamento de uma arquitetura SDN. O OpenFlow permite acesso direto e manipulação do plano de encaminhamento de dispositivos de rede, como switches e roteadores, físicos e virtuais (baseados em Hipervisor). É a ausência de uma interface aberta para o plano de encaminhamento que levou à caracterização dos dispositivos de rede atuais como monolíticos, fechados e semelhantes a mainframes. Um protocolo como o OpenFlow é necessário para mover o controle dos switches proprietários para um software de controle de código aberto e gerenciado localmente.
Vários fornecedores de switches e roteadores de rede anunciaram a intenção de oferecer suporte ou estão anunciando switches com suporte para OpenFlow, incluindo Alcatel-Lucent, Big Switch Networks, entre outros.

## Desenvolvimento

A versão 1.1 do protocolo OpenFlow foi lançada em 28 de fevereiro de 2011, e o desenvolvimento do novo padrão foi gerenciado pela ONF. Em dezembro de 2011, a diretoria da ONF aprovou o OpenFlow versão 1.2 e publicou-o em fevereiro de 2012. A versão atual do OpenFlow é 1.5.1. No entanto, a versão 1.6 está disponível desde setembro de 2016, mas acessível apenas para membros da ONF.
Em maio de 2011, a Marvell e a Larch Networks anunciaram a disponibilidade de uma solução de comutação totalmente habilitada para OpenFlow, baseada na pilha de controle de rede da Marvell e na família Prestera de processadores de pacotes.
A Universidade de Indiana, em maio de 2011, lançou um Laboratório de Interoperabilidade SDN em conjunto com o ONF para testar o quão bem as redes definidas por software de diferentes fornecedores e produtos OpenFlow funcionam juntos.
Em fevereiro de 2012, a Big Switch Networks lançou o Project Floodlight, um OpenFlow Controller de software de código aberto licenciado pela Apache e anunciou seu SDN Suite baseado em OpenFlow em novembro daquele ano, que contém um controlador comercial e comutação virtual e torneira aplicativos de monitoramento.
Em abril de 2012, Urs Hölzle do Google descreveu como a rede interna da empresa foi completamente redesenhada nos dois anos anteriores para funcionar com OpenFlow com melhoria substancial de eficiência.

## Preocupações com segurança

* Comunicações secretas;
* Negação de serviço
* Ataque man-in-the-middle;
* Ponto único potencial de ataque e falha;
* Problemas de programação e canal de comunicação (segurança w.r.t.) - Experiência de implantação OpenFlow.