Open Flow

Instituto Lué Alberto Coimbra de Pós-graduação e Pesquisa de Engenharia – Escola Politécnica (UFRJ)

Redes de Computadores II - 22.2

Alunos: Juliana F. D. Piaz, Rodrigo Lucas P. da Silva e Ronaldo Cesar K. de Moraes

Esse artigo se refere ao estudo do conceito OpenFlow.

O que é o OpenFlow?

Definição

OpenFlow é um protocolo de comunicação que permite que uma rede seja controlada de maneira centralizada. Com OpenFlow, é possível controlar o fluxo de dados em uma rede de maneira mais precisa e flexível, o que pode ajudar a melhorar o desempenho e a disponibilidade da rede.

Origens e Circunstâncias

OpenFlow foi criado como uma maneira de facilitar a implementação de redes definidas por software (SDN, na sigla em inglês), permitindo que os administradores de rede configurem e gerenciem a rede de maneira mais fácil e eficiente. Antes do surgimento do OpenFlow, as redes eram geralmente controladas de maneira descentralizada, o que podia tornar o gerenciamento da rede bastante complexo e difícil. Inicialmente foi concebido com o objetivo de se tornar uma forma de gerenciamento centralizado da política global, utlizado como uma rede e controlador baseados em fluxo com foco na segurança da rede juntamente com SDN. Essa ideia acabou levando ao que ficou conhecido como OpenFlow, graças a mais pesquisas realizadas em conjunto por equipes de Stanford e da Universidade da Califórnia, em Berkeley.

SDN

O que é

A Rede Definida por Software (SDN) é uma arquitetura de rede na qual um controlador gerencia o controle de fluxo para habilitar a rede inteligente. Atualmente, uma especificação popular para criar um SDN é um padrão aberto chamado OpenFlow. O comportamento do SDN OpenFlow (SDN-OF) é fundamental para a segurança do sistema de rede e sua correção deve ser comprovada para evitar falhas no sistema. SDN é a sigla em inglês para "Software-Defined Networking" ou Redes Definidas por Software. É uma abordagem para o design e gerenciamento de redes que permite que o controle da rede seja separado do hardware que a compõe. Isso permite que os administradores de rede configurem e gerenciem a rede de maneira mais fácil e eficiente, e também facilita a implantação de novas tecnologias e serviços de rede. Com a SDN, é possível aproveitar ao máximo os recursos da rede e melhorar o desempenho e a disponibilidade da rede.

Como funciona

Com a SDN, é possível centralizar o controle da rede em um único ponto e gerenciar a rede de maneira mais eficiente e flexível. Isso permite que os administradores de rede configurem e gerenciem a rede de forma mais fácil e rápida, o que pode ajudar a melhorar o desempenho e a disponibilidade da rede. Além disso, a SDN também facilita a implantação de novas tecnologias e serviços de rede, permitindo que as redes sejam mais adaptáveis e escaláveis. A SDN também permite a integração de diferentes tipos de dispositivos de rede em uma única rede, independentemente de suas especificações e fabricantes. Isso pode ajudar a reduzir os custos de implantação e manutenção da rede, e também pode aumentar a flexibilidade e a capacidade da rede.

Arquitetura SDN tradicional:

A arquitetura de camadas de SDN é um modelo de design que divide o sistema de rede em camadas distintas, cada uma delas com uma função específica. Isso permite que cada camada seja projetada e implementada de forma independente, o que facilita a manutenção e a atualização do sistema de rede.
A camada mais baixa da arquitetura de camadas de SDN é a camada de rede física, que consiste nos dispositivos de hardware que compõem a rede, como switches e roteadores. Essa camada é responsável por gerenciar o envio e o recebimento de pacotes de dados na rede.
A camada intermediária é a camada de controlador, que é responsável por tomar decisões sobre como os pacotes de dados devem ser encaminhados pela rede. O controlador é um componente centralizado que tem visão global da rede e pode configurar o comportamento dos dispositivos de rede física para atender às necessidades de comunicação.
Por fim, a camada superior da arquitetura de camadas de SDN é a camada de aplicação, que consiste nas aplicações que utilizam a rede para comunicar-se entre si e com os usuários finais. A camada de aplicação pode ser usada para implementar funções avançadas, como segurança, monitoramento e gerenciamento de rede.
Em resumo, a arquitetura de camadas de SDN permite uma maior flexibilidade e programabilidade na configuração e gerenciamento de redes de computadores, permitindo que elas sejam adaptadas de forma dinâmica para atender às necessidades em constante mudança das aplicações e dos usuários.

Protocolo OpenFlow

Como funciona

O protocolo OpenFlow define a comunicação entre um controlador OpenFlow e um switch OpenFlow. Este protocolo é o que mais identifica a tecnologia OpenFlow. Em sua essência, o protocolo consiste em um conjunto de mensagens que são enviadas do controlador para o switch e um conjunto correspondente de mensagens que são enviadas na direção oposta. As mensagens, coletivamente, permitem que o controlador programe o switch de modo a permitir um controle refinado sobre a comutação do tráfego do usuário. A partir dessa comunicação estabelecida é que são referenciadas as decisões que serão tomadas nas tabelas de fluxo. Portanto, o dispositivo de rede recebe o pacote, compara com os fluxos presentes na tabela e executa a sua ação associada, podendo ser por exemplo, encaminhar para uma entrada diferente ou mesmo retornar para inspeção do controlador.

Utilização

Para ser utilizado é necessário ter conectividade IP entre o controlador SDN e os switches de rede. Apesar disso, o protocolo OpenFlow funciona no protocolo TCP. Para estabelecer a comunicação, primeiramente o switch envia um pacote inicial para o controlador reconhecê-lo. Em conjunto, o switch envia a versão que suporta o OpenFlow e o controlador responde o mesmo para o switch. Após a versão mais atual ser estabelecida na comunicação dos dispositivos, o controlador faz uma requisição dos recursos OpenFlow possibilitados pelo switch. Após esses padrões estabelecidos, esse canal OpenFlow é ativado com sucesso.

Transformação do setor de redes

Devido a limitação existente nos hardwares que constituem a infraestrutura de rede atualmente perante ao crescimento acelerado dos tráfegos na internet, o SDN traz uma separação do plano de controle e o plano de dados. Sendo assim, todos os recursos do hardware podem ser usados para encaminhar dados e não mais a verificação de rotas, executada separadamente em servidores dedicados. Dessa forma, o OpenFlow tem-se como uma escolha muito atrativa atualmente para melhorar a eficiência e escalabilidade em uma rede.

Código Aberto

Devido ao fato do OpenFlow ter sido criado com um padrão aberto, isso permite com que os fabricantes dos elementos de rede possam implementá-lo com facilidade. Sendo assim, o OpenFlow proporciona mais flexibilidade à rede que antes era limitada às otimizações e desenvolvimento dos hardware proprietários.

Padrões Internacionais

O padrão OpenFlow é gerenciado pela Open Networking Foundation (ONF), que é responsável pela sua popularização e adoção de redes definidas por software (SDN). Entretanto, apesar do OF ser uma das principais causas para a disseminação do SDN, existem outras opções de padrões possíveis para para programar os switches SDN. Outra escolha popularmente conhecida de comunicação de switches são as APIs REST. Nesse caso, as aplicações do controlador possuem da mesma forma um módulo REST compatível.

Integração OpenFlow e SDN

A Rede Definida por Software (SDN) é uma arquitetura em que um controlador gerencia uma coleção distribuída de switches (des)instalando regras de encaminhamento de pacotes e relata estatísticas de tráfego. OpenFlow (OF), uma implementação do SDN, fornece um protocolo aberto para programar tabelas de fluxo em switches e roteadores na rede. Os switches e controlador se comunicam através do protocolo OF, que define mensagens, como: packet-received, sendpacket-out, e modifique-forwarding-table. Assim o comportamento do SDN OpenFlow (SDN-OF) é fundamental para a segurança do o sistema de rede e suas correções devem ser comprovadas para evitar falhas no sistema.

Complexidade de implementação

O OpenFlow possui um protocolo simples e que pode ser implementado em uma rede com certa facilidade. Além disso, a maioria dos dispositivos hoje já apresentam suporte ao OpenFlow. Entretanto, existem certas características necessárias para a implementação do SDN que devem ser levadas em conta para os switches OpenFlow. Os switches utilizados em uma rede OpenFlow podem ser híbridos, que suportam o OpenFlow e também os protocolos tradicionais, como podem ser dedicados, que não possuem controle integrado e dependem totalmente de um controlador. Sendo os híbridos os principais ainda no mercado. Além disso, por serem controlados por uma interface aberta, é necessário certa atenção para o uso de uma conexão TLS, para evitar espionagem e ataques DoS.

Escalabilidade e Flexibilidade

As redes definidas por software trazem como principais fatores de vantagem a sua flexibilidade e eficiência em relação às arquiteturas, que antes estavam restritas às otimizações desenvolvidas sobre os hardwares utilizados. Dessa forma, desagregando o plano de dados do plano de controle, que passa a possuir servidores dedicados para os cálculos de rotas, tem-se uma possibilidade de processamento sendo escalável de acordo com a necessidade de computar rotas naquela rede.

Conclusões

A partir das características apresentadas é importante salientar que o protocolo OpenFlow, dentro de uma infraestrutura de SDN é indispensável para a expansão e escalabilidade das redes da atualidade. Dentro desse contexto percebe-se a grande vantagem de eficiência que esse protocolo e infraestrutura permitem, muitas vezes, podem existir hardwares mais antigos os quais ainda não existe a viabilidade para a troca. Esse acoplamento com estruturas legado é inegavelmente indispensável em qualquer arquitetura de rede da atualidade.

Bibliografia

Ali Abdallah, e. a. (2017). Performance implication and analysis of the openflow sdn protocol. [Acessado em 11/11/2022].

Evans, S. (2013). The history of openflow. [Acessado em 29/10/2022].

Fabian Schneider, e. a. (2013). Openflow rules interactions: Definition and detection. [Acessado em 06/11/2022].

Jin-Young Choi, e. a. (2013). Formal modeling and verification of sdn-openflow. [Acessado em 10/11/2022].

Paul G ̈oransson, T. C. (2017). Openflow protocol. [Acessado em 04/11/2022].

Paul Smith, e. a. (2013). Openflow: A security analysis. [Acessado em 08/11/2022].

Rawal, A. (2021). Introduction to openflow protocol. [Acessado em 05/11/2022].

Zolt`an Lajos Kis, e. a. (2015). Openflow switch specification. [Acessado em 05/11/2022].