OpenFlow

Giovanni Maffeo | Guilherme Santiago | Leandro Marinho

Introdução ao OpenFlow

Por muitos anos, as redes foram compostas unicamente por implementações em hardwares dedicados, proprietários e custosos. Portanto, a dificuldade de inovação de tecnologias e arquiteturas era muito limitada aos fabricantes, gerando uma defasagem na área que era desproporcional ao crescimento da internet e das tecnologias de computação em geral. Em contrapartida a esse problema, foi desenvolvido uma nova tecnologia conhecida como Redes Definidas por Software (do inglês, Software Defined Networks - SDN) que consiste na separação do plano de dados do de controle, gerando assim uma maior flexibilidade e personalização no roteamento dos pacotes.

O que é OpenFlow?

OpenFlow é um protocolo de comunicação que permite a interação entre o controlador SDN e os dispositivos de encaminhamento, como switches e roteadores. Em uma arquitetura SDN, o plano de controle (que toma decisões sobre como os pacotes devem ser encaminhados) é separado do plano de dados (que realmente encaminha os pacotes de acordo com as decisões tomadas). OpenFlow atua como uma interface entre esses dois planos, permitindo que o controlador instrua os dispositivos de encaminhamento sobre como processar os pacotes.

História e evolução do OpenFlow

A ideia de separar o plano de controle do plano de dados não é nova, mas ganhou tração com o advento do OpenFlow. O protocolo foi inicialmente concebido como um projeto de pesquisa na Universidade de Stanford em 2008. Rapidamente, ele chamou a atenção da indústria devido ao seu potencial para transformar a maneira como as redes são projetadas e operadas. A Open Networking Foundation (ONF) foi estabelecida em 2011 para promover a adoção do OpenFlow e SDN. Desde então, o protocolo OpenFlow passou por várias revisões, com melhorias e novas funcionalidades sendo adicionadas para atender às demandas crescentes da indústria.

Por que o OpenFlow é importante no contexto das redes definidas por software (SDN)?

O OpenFlow é um dos principais protocolos responsáveis pela utilização de Redes Definidas por Software. O sucesso por trás dele ocorre devido às suas características que inovou a forma como as redes podem ser trabalhadas, sendo algumas delas:

Arquitetura do OpenFlow

A arquitetura OpenFlow é fundamental para a implementação e operação de redes definidas por software. Ela define a estrutura e a interação entre os componentes-chave que permitem a separação do plano de controle do plano de dados, proporcionando flexibilidade, centralização e programabilidade à rede.

Componentes-chave da arquitetura OpenFlow

Controlador OpenFlow

O controlador OpenFlow é o componente central da arquitetura OpenFlow. Ele é responsável por:

Switches OpenFlow

Os switches OpenFlow são dispositivos de encaminhamento que operam com base nas instruções recebidas do controlador. Eles têm as seguintes características:

Tabelas de fluxo

As tabelas de fluxo são componentes essenciais dos switches OpenFlow. Elas contêm entradas de fluxo que definem como os pacotes devem ser processados. Cada entrada de fluxo tem:

Funcionamento do OpenFlow

O OpenFlow é a espinha dorsal das redes definidas por software (SDN), permitindo uma operação de rede flexível e programável. Para entender o funcionamento do OpenFlow, é essencial compreender a interação entre os fluxos de dados e controle, bem como a lógica subjacente às tabelas de fluxo e suas entradas.

Fluxo de Dados e Controle

O fluxo de dados se refere ao movimento real de pacotes através da rede. Em uma arquitetura SDN/OpenFlow, os dispositivos de encaminhamento (switches OpenFlow) são responsáveis por processar e encaminhar pacotes com base nas instruções contidas em suas tabelas de fluxo. Essas tabelas contêm instruções lógicas e decisões sobre como os pacotes devem ser encaminhados, baseado nos metadados e campos preenchidos do cabeçalho do pacote.

Match, Actions e Prioridades

Fluxo de Controle de Pacotes

Primeiramente, quando um pacote chega a um switch OpenFlow, o switch verifica suas tabelas de fluxo para encontrar uma entrada correspondente. Após isso, o switch avalia as entradas da tabela de fluxo com base na prioridade e a primeira entrada que corresponde ao pacote é selecionada. A ação associada à entrada correspondente é executada. Isso pode resultar no encaminhamento, modificação ou descarte do pacote. Caso nenhum fluxo corresponda ao pacote, o switch pode optar por descartar o pacote ou enviar uma solicitação ao controlador para obter instruções. Além disso, caso ache necessário, o switch se comunica com o controlador para obter instruções adicionais ou para informar sobre eventos específicos.

Implementação de Redes SDN com OpenFlow

A implementação de redes SDN com OpenFlow envolve a configuração e integração de componentes-chave, como controladores e switches, para criar uma rede flexível, programável e centrada em software.

Como configurar e implantar uma rede SDN com OpenFlow

Antes de iniciar a implementação, é essencial definir os requisitos da rede, como topologia, capacidade, desempenho e objetivos específicos. Também precisamos escolher um controlador SDN que suporte OpenFlow. Existem várias opções disponíveis, como ONOS, Ryu, Floodlight, entre outros, e a escolha dependerá das necessidades específicas e da complexidade da rede. Também é necessário instalar e configurar o controlador em um servidor dedicado ou em uma máquina virtual bem como definir as políticas de rede, regras e lógica de encaminhamento conforme necessário. Na parte de Switches, precisamos escolher aqueles que suportem o protocolo OpenFlow, e instalar e configurar os switches na rede certificando-se de que eles estejam configurados para se comunicar com o controlador SDN. Isso geralmente envolve definir o endereço IP do controlador e a porta de comunicação OpenFlow. Muitos fabricantes oferecem switches compatíveis com OpenFlow, tanto em hardware quanto em versões virtualizadas. Outro passo essencial é garantir que o canal de comunicação entre o controlador e os switches (canal OpenFlow) esteja seguro e funcional. Isso permite que o controlador programe as tabelas de fluxo nos switches. Uma vez configurada, testamos a rede para garantir que os pacotes sejam encaminhados conforme esperado. Para isso, é possível usar ferramentas de monitoramento e diagnóstico para identificar e resolver quaisquer problemas. Finalmente, após a implantação, é essencial o monitoramento contínuo da rede para garantir seu desempenho e segurança, além das atualizações dos controladores, switches e políticas.

Integração de Switches e Controladores

Para a integração dos Switches e Controladores, precisamos configurar o endereço IP e a porta do controlador em cada switch OpenFlow. Isso permite que os switches saibam onde encontrar o controlador e como se comunicar com ele, bem como estabelecer mecanismos de autenticação entre o controlador e os switches para garantir que apenas dispositivos confiáveis possam se comunicar na rede, por meio do uso de certificados SSL/TLS ou outros métodos de autenticação. Após isso, para garantir a sincronização das tabelas de fluxo, o controlador envia instruções para os switches para programar suas tabelas de fluxo, e podendo receber como retorno estatísticas, alertas e informações de status de volta do Switch. Isso permite que o controlador tenha uma visão em tempo real do estado da rede e tome decisões informadas. Também é de extrema importância manter o controlador e os switches atualizados com os patches e versões mais recentes para garantir a compatibilidade, segurança e desempenho ideais. Caso queiramos que nossa aplicação escale, precisamos também garantir que o controlador possa gerenciar um número crescente de switches e que os switches possam se comunicar eficientemente com o controlador.

Casos de Uso do OpenFlow

Redes de Data Center

O OpenFlow é amplamente utilizado em data centers para permitir a otimização do tráfego de rede. Isso porque precisará lidar com cargas de trabalho variáveis e garantir a eficiência na utilização dos recursos da rede, visto que o volume de dados é muito alto e pode percorrer grandes distâncias.

Redes WAN

São redes de computadores que abrangem uma ampla área geográfica, interconectando dispositivos e redes em locais distantes uns dos outros. Diferentemente das LANs (Local Area Networks), que operam em uma área geográfica limitada, como um escritório ou um edifício, as WANs são projetadas para conectar redes em escala mais ampla, muitas vezes abrangendo cidades, estados, países ou até continentes.

Redes de Campus e Educação

As redes em campi universitários frequentemente têm requisitos complexos de rede, e o OpenFlow pode ser usado para otimizar a conectividade e a segurança da rede.

Internet das Coisas (IoT)

Na aplicação do OpenFlow na IoT (Internet das Coisas), a IoT refere-se ao cenário em que dispositivos físicos e objetos do mundo convencional são conectados à Internet e têm a capacidade de coletar e trocar dados. Por fim, vale ressaltar que podemos estar lidando com dispositivos extremamente simples, como sensores, e preocupações com economia de recursos é crucial.

Bibliografia

Livro: “OpenFlow: A New Paradigm in Network Provisioning" por Dmitri Kalashnikov e Sébastien Tandel
Livro: "Software Defined Networking" por Thomas D. Nadeau e Ken Gray
Site oficial da Open Networking Foundation: https://opennetworking.org/
Portal de notícias e tutoriais: https://www.sdxcentral.com/
Hub de Conteúdo da Cisco sobre Openflow: Cisco Content Hub - Openflow
Curso gratuito sobre SDN - SDN Fundamentals
OpenFlow and SDN: An Introduction
OpenFlow: uma rede definida por software - Revista Infra Magazine 11 (devmedia.com.br)