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:
- Separação de Planos: A principal vantagem do OpenFlow é que ele permite a separação do plano de controle do plano de dados. Isso oferece uma flexibilidade sem precedentes, pois os operadores de rede podem programar o comportamento da rede sem se preocupar com os detalhes de hardware dos dispositivos de encaminhamento.
- Centralização: Com o OpenFlow, o controle da rede pode ser centralizado em um ou mais controladores SDN. Isso simplifica a gestão da rede, pois as políticas e configurações podem ser definidas centralmente e distribuídas para os dispositivos conforme necessário.
- Inovação: Antes do OpenFlow e SDN, inovar em redes era um processo lento, pois exigia mudanças em hardware. Com o OpenFlow, as inovações podem ser implementadas no software, permitindo que novas funcionalidades sejam testadas e implantadas rapidamente.
- Adaptação Dinâmica:As redes baseadas em OpenFlow podem ser reconfiguradas em tempo real para atender a demandas variáveis, como aumento de tráfego ou falhas de rede.
- Visibilidade e Análise: Com o controle centralizado e a capacidade de programação, os operadores têm uma visão mais clara do que está acontecendo em sua rede. Isso facilita a análise de desempenho, detecção de problemas e otimização da rede.
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: É o cérebro da rede OpenFlow. Ele toma decisões sobre como os pacotes devem ser encaminhados e comunica essas decisões aos switches através do protocolo OpenFlow.
- Switches OpenFlow: São dispositivos de encaminhamento que processam pacotes com base nas instruções recebidas do controlador. Eles contêm uma ou mais tabelas de fluxo que determinam como os pacotes são processados.
- Tabelas de Fluxo: São estruturas de dados nos switches que contêm entradas de fluxo. Cada entrada define como os pacotes correspondentes devem ser tratados.
- Canal OpenFlow (Canal Seguro): É o canal de comunicação seguro entre o controlador e os switches, onde a comunicação é via TCP. É possível criptografar as mensagens entre os comutadores e o controlador por meio do TLS (Transport Layer Security) ou SSL (Secure Socket Layer). O Canal Seguro é usado para enviar mensagens e instruções do controlador para os switches e vice-versa.
Controlador OpenFlow
O controlador OpenFlow é o componente central da arquitetura OpenFlow. Ele é responsável por:
- Tomada de Decisão: O controlador decide como os pacotes devem ser encaminhados na rede. Ele pode tomar decisões com base em políticas definidas, condições de rede, demanda de tráfego e outros fatores.
- Programação dos Switches: Uma vez tomada uma decisão, o controlador comunica as instruções aos switches através do protocolo OpenFlow, programando suas tabelas de fluxo.
- Monitoramento da Rede: O controlador pode solicitar estatísticas e informações dos switches para monitorar o desempenho da rede e detectar problemas.
- Gestão de Eventos: Se um novo dispositivo for conectado à rede ou um link falhar, o controlador é notificado e pode tomar medidas adequadas.
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: Cada switch contém uma ou mais tabelas de fluxo que determinam como os pacotes são processados.
- Processamento de Pacotes: Quando um pacote chega a um switch, ele é comparado com as entradas da tabela de fluxo. Se uma correspondência é encontrada, o pacote é processado de acordo com as instruções associadas. Se não houver correspondência, o switch pode descartar o pacote, encaminhá-lo ou enviar uma solicitação ao controlador para obter instruções.
- Comunicação com o Controlador: Os switches se comunicam com o controlador através do canal OpenFlow, enviando e recebendo mensagens.
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:
- Campos de Correspondência: Estes campos determinam quais pacotes correspondem à entrada. Eles podem incluir informações como endereço IP de origem, endereço IP de destino, porta de origem, porta de destino, tipo de protocolo e outros.
- Ações: Definem como os pacotes correspondentes devem ser tratados. As ações podem incluir encaminhar o pacote para uma porta específica, modificar campos do pacote, descartar o pacote ou enviar o pacote ao controlador.
- Contadores: Mantêm estatísticas sobre os pacotes que correspondem à entrada.
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
- Match: É o conjunto de critérios usados para determinar se um pacote específico corresponde a uma entrada de fluxo particular. Os campos de correspondência podem incluir atributos como endereços IP, portas, VLAN tags e tipo de protocolo.
- Actions: Uma vez que um pacote corresponde a uma entrada de fluxo, a ação associada é executada. As ações podem incluir encaminhar o pacote para uma porta específica, modificar campos do pacote, descartar o pacote ou enviar o pacote ao controlador.
- Contadores: Mantêm estatísticas sobre os pacotes que correspondem à entrada.
- Prioridades: Em situações onde várias entradas de fluxo podem corresponder a um pacote, a prioridade determina qual entrada deve ser usada. Entradas com prioridades mais altas são avaliadas antes daquelas com prioridades mais baixas.
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.
- Gerenciamento de Tráfego de Múltiplas Cargas de Trabalho: Data centers são formados por instalações físicas projetadas para abrigar servidores e, por isso, hospedam várias cargas de trabalho diferentes referentes a diversos tipos de aplicação, por exemplo, aplicativos de processamento intensivo, armazenamento de dados e aplicativos Web, entre outros... Dessa forma, ao lidar com cargas de trabalho com características distintas, o OpenFlow permitirá o direcionamento eficiente do tráfego entre essas cargas de trabalho, garantindo que os recursos de rede sejam alocados de forma apropriada e que o desempenho seja otimizado.
- Garantir a eficiência: Como o volume de dados transmitidos e as distâncias são grandes, OpenFlow será essencial para o encaminhamento de maneira mais eficiente possível, reduzindo a latência. Por exemplo, uma das técnicas utilizadas será o balanceamento de carga, isto é, equilibrar a carga do tráfego entre os servidores e recursos de rede, ajudando a evitar congestionamento e a garantir que o tráfego seja distribuído uniformemente entre os servidores.
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.
- Roteamento Inteligente: OpenFlow pode ser usado para implementar roteamento inteligente e dinâmico do tráfego, isso porque pode ser programado para monitorar as condições da rede em tempo real, como a latência, a perda de pacotes e a largura de banda disponível em diferentes links. Com base nessas métricas, o OpenFlow pode direcionar o tráfego para a rota mais adequada, garantindo menor atraso. Vale ressaltar que isso é muito difícil de ser implementado utilizando os protocolos de roteamento convencionais que estudamos na disciplina, visto que não são apropriados para lidar com métricas tão dinâmicas como latência e probabilidade de perda de pacotes.
- Garantir eficiência: Assim como nos Data Centers, em redes com vários links WAN, o OpenFlow pode ser programado para realizar o balanceamento de carga entre os links, distribuindo o tráfego de saída de forma equilibrada e evitando congestionamentos em links individuais.
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.
- Segurança de Rede: Em instituições de ensino superior, a segurança de rede é uma preocupação importante, assim, o OpenFlow pode ser usado para implementar políticas de segurança avançadas em toda a rede do campus. Uma das técnicas utilizadas é a detecção de tráfego malicioso em tempo real e o isolamento automático de dispositivos comprometidos em uma rede separada, protegendo o restante da rede de ataques. Por fim, vale ressaltar que isso não é possível com os protocolos convencionais de roteamento que estudamos na disciplina que suportavam mecanismos de segurança mais simples, como a autenticação utilizando Hash.
- Gerenciamento de Tráfego: Os requisitos de roteamento para uma instituição de ensino podem ser complexos, pois possuem uma variedade de departamentos, laboratórios e edifícios que requerem conectividade de rede e características de roteamento distintas, logo, poderá ser utilizado para rotear o tráfego com base nas necessidades específicas de cada departamento ou laboratório. Por exemplo, ele pode priorizar o tráfego de laboratórios de pesquisa que requerem largura de banda elevada e baixa latência, enquanto equilibra o tráfego de departamentos administrativos.
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.
- Gerenciamento de Energia: Em muitos cenários de IoT, os dispositivos têm restrições de energia, e a conservação de energia é crucial, por isso pode ser usado para otimizar o uso de energia em dispositivos IoT. Uma das técnicas utilizadas é programar dispositivos IoT para entrar em modos de economia de energia quando não estão em uso e retornar ao pleno funcionamento quando necessário. Vale ressaltar que esse funcionamento é muito difícil de ser replicado utilizando protocolos de roteamento convencionais que é descentralizado, ou seja, todos os dispositivos devem estar conectados e trocando informações o tempo todo.
- Otimização do tráfego: Muitas vezes, os dispositivos IoT são implantados em locais remotos ou em áreas de difícil acesso, como fazendas ou ambientes industriais. Esses dispositivos estão frequentemente distantes dos servidores ou Data Centers onde os dados coletados serão processados e utilizados. Nesse contexto, o OpenFlow desempenha um papel crucial na garantia do tráfego eficiente e confiável de dados da IoT em ambientes com poucos recursos de rede. Por exemplo, uma das técnicas que podem ser utilizadas é o aprendizado de máquina em conjunto com o OpenFlow, permitindo ao sistema de rede aprender com base em padrões de tráfego históricos e prever as melhores rotas para otimização contínua.
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)