Publicações‎ > ‎Pesquisa‎ > ‎

HermesNet: Framework para configuração e gerenciamento de redes OpenFlow


Introdução

A Internet é baseada no conceito simples de que os roteadores encaminham os pacotes da origem até o destino. A Internet oferece vários serviços e também pode utilizar várias interfaces físicas de transmissão, porém ela reside em um único ponto comum -- o protocolo IP --. O protocolo IPv4 dispõe de poucos números livres para alocação em novas redes, sendo esperada a sua exaustão ao longo do ano de 2011. O protocolo IP exige a busca de endereço IP de cada pacote em uma tabela de roteamento grande. O alto custo computacional de algoritmos de busca em tabela é extremamente alta causando problemas de escalabilidade nos roteadores dos grandes backbones

A esse fenômeno chamamos de Ossificação da Internet preconizando a paralisia da Internet devido as limitações do modelo original baseado fortemente sobre o protocolo IP, que foi também o grande motivo para o seu sucesso. Sendo assim, vários grupos de pesquisadores tem estudado novas formas de estruturar a Internet do Futuro corrigindo esses problemas. Uma das mais importantes iniciativas nessa direção é o projeto Clean Slate da Universidade Stanford que visa reconstruir a Internet a partir do zero.


Um dos projetos mais significativos dessa iniciativa, que tem recebido crescente interesse pela comunidade acadêmica e o projeto OpenFlow. A ideia é conceber uma arquitetura em que se utiliza o mais baixo nível de abstracao nos equipamentos de comunicação (switches) de forma que de obtenha altas velocidade e confiabilidade. As funções de controle e gerenciamento são realizadas pelo controlador. O protocolo que permite a configuração de uma rede OpenFlow e público e aberto.







Sobre o nome


Hermes é o mensageiro dos deuses na mitologia grega. Também conhecido como Mercurio na mitologia romana e Thoth no Egito. Por essa função é considerado o guardião dos viajantes e das comunicações (dentre outros). HermesNet, como uma ferramenta de gerenciamento, pretende ser o guardião das redes.

Objetivos

O objetivo principal é propor um projeto de curto/médio prazo de se construir um plataforma de gerência de redes flexível e aberta. O diferencial é focar na arquitetura OpenFlow, proposição do programa CleanSlate da Universidade de Stanford.

OpenFlow é uma arquitetura proposta para Internet do Futuro, e pouco trabalho sobre gerenciamento foi feito para essa arquitetura. O HermesNet visa gerenciara essa rede, apesar de nada impedir de gerenciar outras redes legadas.

Esse projeto poderá sugerir vários temas de projetos finais e dissertações de mestrado. Além disso, visa oferecer uma plataforma de teste para novas dissertações e projetos finais. Um framework pronto facilitaa implementação e testes da proposta, por exemplo, um novo algoritmo de roteamento, um novo mecanismos de acesso a BD, etc.

Finalmente, esse projeto poderá divulgar o Larces e a UECE, além de contribuir para o mundo Open Source.

O que é OpenFlow?

A arquitetura Openflow é mostrada na Figura abaixo. Ela consiste em dispositivos (switchs) e um controlador que se comunicam através de um protocolo aberto. Essa proposta visa obter maior desempenho de comutação na rede através de um protocolo simples. A ideia é que ele configure diretamente as tabelas de fluxo (Flow-table) dos switches, entidade básica de comutação normalmente implementada em hardware usando TCAM em altas velocidades. Para garantir a segurança e confiabilidade do sistema, as mensagens de configuração são transmitidas em canal seguro baseado em TLS. OpenFlow foi concebido para funcionar em redes Ethernet, porém também há implementações para outros protocolos como MPLS.

O controlador atualiza as Flow-table inserindo e removendo entradas de encaminhamento (Flow-entries) através do protocolo OpenFlow. A Flow-table é um banco de dados que contem Flow-entries associadas a ações que instruem ao switch como proceder a cada fluxo de tráfego. Algumas dessas ações podem ser: encaminhar para porta, descartar o pacote, encapsular o pacote, criptografar o pacote, limitar a banda e classificar. A Figura abaixo mostra o diagrama de uma entrada Flow-entry na Flow-table.



Quando um switch recebe um pacote no qual não existe entrada na sua tabela, este encaminha mensagem ao controlador perguntando a ação a ser tomada para esse novo fluxo. O controlador, que dispõe de todas as informações poderá determinar a porta para qual esse fluxo deverá seguir ou outra ação como descartar o pacote. O controlador também deve configurar todo o caminho enviando mensagens de configuração para todos os switches até o destino final.Pelo menos, teremos a troca de mensagens do switch que recebeu o pacote e o controlador (mensagem Packet-In) e a configuração de todos os switches no caminho desde a origem até o destino (mensagem Modify-State). Para uma rede com N switches podemos estimar a necessidade de 6(N+1) mensagens por cada novo fluxo, considerando o estabelecimento e encerramento da conexão TCP. Se o caminho já estiver pre-definido (existir a entrada na Flow-table) não é necessário esse procedimento, diminuindo sensivelmente a quantidade de mensagens trafegadas pela rede e tratadas pelo controlador.


Por outro lado, a manutenção de Flow-entries nas tabelas dos switches exige o gasto de memória rápida TCAM, geralmente de tamanho pequeno. Por isso, é necessário retirar das tabelas os fluxos não mais usados de forma através de um mecanismo de time-out. Se reiniciar esse fluxo anteriormente excluído por time-out, será necessário reconfigurar todo o caminho fim-a-fim.


O artigo OpenFlow: Enabling Innovation in Campus Networks apresentou o OpenFlow e é leitura recomendada para entendimento da filosofia da arquitetura.


Protocolo OpenFlow


Os dispositivos OpenFlow se comunicam com o controlador através do protocolo OpenFlow. É um protocolo simples que usa TCP como transporte e TLS como canal seguro. O protocolo OpenFlow suporta 3 tipos de mensagens:

  1. Mensagens Controlador para Switch: São mensagens enviadas apenas pelo controlador para os switches que realizam as funções de configuração do switch, troca informações sobre as capacidade dos switch e gerencia as tabelas de fluxo.
  2. Mensagens Simétricas: São mensagens enviadas em ambas as direções com o objetivo de diagnosticar problemas da conexão controlador-switch.
  3. Mensagens Assincronas: São mensagens enviadas pelo switch para o controlador para anuncias mudança no estado da rede estado do switch, etc.

A especificação OpenFlow Specification Version 1.1.0, publicada em 28 de Fevereiro de 2011, é a mais atual. A especificação é aberta e não exige licenciamento para utilização comercial.


Implementações de dispositivos OpenFlow


Existe ainda pouca oferta de dispositivos OpenFlow comercialmente disponíveis. A maioria das empresas fabricantes ainda forncecem dispositivos em carater experimental.


Algumas implementações Open Souce (ou quase...):

  • Open Virtual Switch (http://openvswitch.org/)
  • Linux OpenWRT (Access Point)
  • Pronto Switch / Indigo Firmware: Switch Openflow baseado no Broadcom Reference Design.
  • NetFPGA

Controlador OpenFlow

O controlador OpenFlow é responsável por configurar todos os dispositivos da rede. Como a arquitetura OpenFlow pressupõe a utilização de dispositivos simples, todas as funções de plano de controle e gerenciamento são realizadas pelo controlador. O controlador dispõe das informações de topologia de toda a rede assim como a localização dos hosts e caminhos externos.


Devido ao fato da centralização da arquitetura OpenFlow, as questões de escalabilidade do controlador tem recebido atenção dos pesquisadores. Vários trabalhos tem focado em aplicar arquiteturas distribuídas para sanar o problema de escalabilidade.

Implementações de Controladores OpenFlow

Existe algumas implementações de controlador OpenFlow Open Source. No entanto a maioria fornece apenas algumas bibliotecas de comunicação e gerenciamento básico.
  • NOX OpenFlow controller (Python/C++)
  • SNAC Web Based OpenFlow Policy Controller (GUI for NOX)
  • Beacon Java based OpenFlow Controller (Java)
  • FlowVisor Openflow Controller Proxy (Java)

Arquitetura do HermesNet

O Sistema deve ter uma arquitetura flexível para permitir a incorporação de novos módulos facilmente. Além disso, deve-se usar o máximo de projetos Open Source prontos para facilitar a implementação...

Abaixo a arquitetura proposta do sistema completo:

Apesar de ser uma plataforma experimental, ela deve focar uso profissional “carrier grade”.

Sobre o OpenNMS

O projeto OpenNMS é a única ferramenta gerenciamento OpenSource categoria “carrier grade”. Existe desde 1999 e apresenta uma arquitetura muito interessante.

No entanto, é uma ferramenta de gerenciamento genérica e complexa demais. Nossa proposta é construir um sistema mais simples que o OpenNMS voltado para OpenFlow.

Linguagem de desenvolvimento

  • C/C++ para as partes sensíveis ao desempenho
  • Java para o demais módulos

Sistemas Operacionais

  • Linux Ubuntu (deb) Prioritário
  • Linux Red Hat (rpm)
  • Windows

Licença

O sistema HermesNet foi desenvolvido com uma licença GPLv3.

SourceForge

Utilizamos o SourceForge como repositório de código (Git), plataforma de Wiki, listas de discussão e bug track.

http://sourceforge.net/projects/hermesnet

Para copiar o conteudo do repositorio git use:

git clone git://git.code.sf.net/p/hermesnet/code hermesnet

Para salvar sua contribuição:

git config user.name "YOUR NAME"
git config user.email "USERNAME@users.sourceforge.net"

git add .
git commit -m "Version information"
git push ssh://<user>@git.code.sf.net/p/hermesnet/code <branch>

Ambiente de Desenvolvimento

  • Ambiente: Eclipse, Tomcat, Postgres,
  • Maven para build e documentação.

Ambiente de teste

Todos nos servidores e desktops do Larces poderão ser usados para desenvolvimento e implantar o sistema.

Dispositivos OpenFlow

  • VM de desenvolvimento
  • PC com OpenV Switch (disponível)
  • PC com placa NetFPGA (disponível)
  • Pronto Switch (comprado)
  • Switch Netgear (aguardando mais informações)
  • OpenWRT (algum voluntário?)

Sugestão de Projetos

Veja algumas sugestões de Projeto Final e Dissertação de Mestrado.

Material Complementar

Slides da apresentação Lançamento do HermesNet

Colaboradores

Esse projeto conta com os seguintes colaboradores:

Alan Ribeiro Feijó
Bruno Batista
Diego Peixoto

Cronograma

Lançamento do projeto: maio/2011
Sistema de desenvolvimento: dezembro/2011
Fechamento da arquitetura: março/2012
Primeira versão Beta: novembro/2012
Primeira versão Estável: julho/2013

Subpáginas (1): Sugestões de Projetos
Ċ
Marcial Fernandez,
9 de mai de 2011 12:06
Comments