Anais do 4º Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 2014 Revisitando uma Infraestrutura Autonômica: Uma Perspectiva Baseada em uma Rede Definida por Software Marcelo Santos1, Patricia Endo1, Moisés Bezerra1, Glauco Gonçalves1, Djamel Sadok1, Stênio Fernandes1 1 Grupo de Pesquisa em Redes de Computadores e Telecomunicações (GPRT) Universidade Federal de Pernambuco (UFPE) Recife – PE - Brasil {marcelo, patricia, moises, glauco, jamel, stenio}@gprt.ufpe.br Abstract. Autonomic Networks and Software Defined Networks (SDN) have a great potential to work together, due to the management power provided by SDN protocols and technologies. This paper has as contribution an autonomic infrastructure proposal based on SDN. The SDN and autonomic network solution is done in a practical way through the use of a FloodLight controller, creating a flexible infrastructure to several scenarios. Taking into consideration the proposed infrastructure, different strategies can be implemented and analyzed in real physical networks, by using well-defined protocols and the power of flow handling provide by a SDN. Resumo. Redes autonômicas e redes definidas por software (SDN) possuem um grande potencial para trabalhar de forma conjunta, dado o poder de gerenciamento fornecido pelos protocolos e tecnologias utilizadas em SDN. Este artigo tem como contribuição uma proposta de infraestrutura autonômica, baseada em SDN. A junção de SDN e redes autonômicas é alcançada de forma prática através da utilização do controlador FloodLight, criando um ambiente flexível para diversos cenários. Considerando a infraestrutura proposta, diferentes estratégias podem ser facilmente implementadas e avaliadas em redes físicas reais, utilizando-se de protocolos bem definidos e do poder de manipulação dos fluxos fornecida por uma SDN. 1. Introdução Enquanto a arquitetura da Internet é um sucesso consolidado para seus usuários finais, especialmente em relação a diversidade de aplicações e serviços disponíveis atualmente; para a indústria e operadoras de rede, ela se tornou um sistema complexo, caro e pouco flexível. Software Defined Networking (SDN) é um novo paradigma que promete fornecer a capacidade de amplo controle sobre fluxos de tráfego da rede, com o objetivo principal de simplificá-la e de torná-la mais barata e flexível. Este controle é alcançado através da separação dos planos de controle e de encaminhamento. Desta forma, o tráfego pode ser explicitamente roteado e inspecionado por elementos de rede de controle com segurança e com políticas de gerenciamento eficientes. As redes autonômicas têm se tornado um importante campo de pesquisa para a Internet do Futuro, utilizando-se de propriedades como auto-cura, auto-configuração, auto-proteção, auto-otimização e auto-organização [IBM 2005], visando diminuir a complexidade do controle da rede e consequentemente facilitar seu gerenciamento. Em 35 Anais do 4º Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 2014 outras palavras, a principal característica das redes autonômicas é a minimização do grau de interferência humana, deixando que o próprio elemento autônomo tome a decisão a partir de uma base de conhecimento. Embora a ideia principal por trás de uma SDN seja a centralização do plano de controle, é possível utilizar a interface de gerenciamento oferecida e aplicá-la em uma estrutura de rede autonômica. SDN oferece um conjunto de protocolos e tecnologias bem definidas que permite que aplicações autonômicas sejam executadas sobre uma rede de forma prática e fácil, saindo de um campo abstrato e aproximando de um cenário cada vez mais real de redes. Esse artigo tem como objetivo principal discutir os desafios de construir uma infraestrutura autonômica baseada em SDN utilizando o controlador Floodlight1 e o switch virtual OpenVSwitch2, ambos compatíveis com o protocolo OpenFlow3. A infraestrutura proposta neste artigo possibilita testes de soluções autonômicas já conhecidas, além de levantar discussões de como empregar novas heurísticas autonômicas através deste novo cenário, explorando também suas limitações. O restante do artigo está estruturado da seguinte forma: a Seção 2 apresenta uma breve introdução sobre SDN; a Seção 3 descreve a infraestrutura composta por SDN e redes autonômicas; e por fim, as conclusões e trabalhos futuros são delineados na Seção 4. 2. Software Defined Networking (SDN) Software Defined Networks tem atraído significante atenção tanto da academia quanto da indústria. Fabricantes e provedores de serviços formaram a Open Networking Foundation (ONF) [Open Networking Foundation 2014], enquanto a academia tem trabalhado em grupos de pesquisa pelo IETF e IRTF buscando definir padrões e novos desafios em SDN [SDNRG 2014]. Uma análise da arquitetura atual dos switches permite observar que se trata de um modelo formado basicamente por duas camadas bem distintas: o software de controle (control plane) e o hardware dedicado ao encaminhamento de pacotes (data plane). SDN tem como base a dissociação dos planos de controle e de dados, visando tornar os switches mais baratos, rápidos e flexíveis. Em vez de diversas políticas de gerenciamento e execução de protocolos em uma convolução de dispositivos distribuídos, os elementos da rede (switches e roteadores) são simplificados para cumprir bem unicamente a tarefa de encaminhar os pacotes de acordo com uma tabela de repasse, enquanto os controladores da rede tomam a decisão de como criar esta tabela em cada dispositivo da rede [Mendonça 2014]. O protocolo OpenFlow tem sido utilizado como padrão para permitir a comunicação entre switches e controlador. Cada switch possui uma tabela de fluxos utilizada para o repasse de pacotes. Cada entradas da tabela é chamada de fluxo e determina como um fluxo de pacotes será processado e encaminhado. Um fluxo na tabela é formado pelos seguintes conjuntos de campos: (1) campos de identificação; (2) contadores, usados para coletar estatísticas de um fluxo; e (3) um conjunto de instruções, ou ações, a ser aplicado sobre uma correspondência [Mendonça 2014]. 1 http://www.projectfloodlight.org/floodlight http://openvswitch.org 3 https://www.opennetworking.org/sdn-resources/onf-specifications/openflow 2 36 Anais do 4º Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 2014 3. Uma infraestrutura autonômica baseada em SDN Em [IBM 2005], os autores definem que a Computação Autonômica é um ambiente computacional com habilidade de se gerenciar e se adaptar dinamicamente à mudanças de acordo com políticas e objetivos pré-estabelecidos. Os ambientes auto-gerenciáveis são capazes de, autonomicamente, executar suas atividades baseados no estado observado, sem requerer alguma entidade central e controladora. Essas tarefas são realizadas em um ciclo de controle, por vezes denominado MAPE-K (Monitor, Analyse, Plan, Execute, and Knowledge). Baseado no ciclo MAPE-K, propõe-se uma infraestrutura autonômica fundamentada em SDN que, diferentemente das SDNs padrão, procura distribuir a tarefa de controle entre os elementos da rede (Figura 1a). A ideia é manter o plano de controle e o plano de encaminhamento juntos no switch, mas com um controlador SDN distribuído em cada switch (Figura 1b). Quando comparado com soluções autonômicas que executam apenas em nível de aplicação, temos como diferencial o controle sobre todos os pacotes, além de protocolos e ferramentas para desenvolver aplicações autonômicas em cada switch, buscando um comportamento emergente baseado em aplicações executadas por cada switch. (a) (b) Figura 1. Utilizando SDN de forma autonômica Na infraestrutura proposta cada switch possui a organização mostrada na Figura 2. Utiliza-se o controlador FloodLight (ou pode-se utilizar outros controladores como o POX5, por exemplo) juntamente com o switch virtual OpenVSwitch (tutorial de instalação em [OVS e Floodlight 2012]). A aplicação autonômica inserida é independente da linguagem do controlador por se comunicar com ele através de uma interface RESTfull. Toda a parte de monitoramento de fluxos é realizada pelo próprio switch e fornecida através de uma API REST bem definida6. Figura 2. Nó da rede autonômica baseado em tecnologias SDN A manipulação da tabela de fluxos pode ser realizada através da mesma API REST oferecida pelo Floodlight. As etapas de Analyse, Plan, Execute, e Knowledge oriundas do MAPE-K são implementadas pela aplicação autonômica seguindo qualquer 5 6 http://www.noxrepo.org/pox/about-pox/ http://www.openflowhub.org/display/floodlightcontroller/Floodlight+REST+API 37 Anais do 4º Workshop de Sistemas Distribuídos Autonômicos - WoSiDA 2014 heurística autonômica desejável. É importante notar que devido a utilização do protocolo OpenFLow tem-se informações sobre o fluxo desde a camada de enlace (endereço MAC origem e destino) até a camada de aplicação (protocolo TCP, UDP e respectivas portas utilizadas). É possível criar regras autonômicas para bloqueio de fluxos, multicasting, balanceamento de carga ou reengenharia de tráfego. A capacidade de gerenciamento é ampla em nível de rede, sendo possível manipular campos dos cabeçalhos de pacotes que passam pelos switches com regras simples. É possível ainda definir novos protocolos para troca de mensagens entre switches (vislumbrando monitorar o comportamento de seus vizinhos e obter informações que o ajudem na tomada de decisão), dado que a aplicação em cada switch é totalmente programável. A infraestrutura descrita está ligada diretamente às primitivas fornecidas pelo protocolo OpenFlow, por este motivo, este aspecto atua como uma limitação aos tipos de cenários autonômicos que podem ser implementados nesta infraestrutura devido à inexistência de comunicação direta com serviços disponíveis na rede. No entanto, como alternativa, é possível criar extensões na camada da aplicação autonômica (Figura 2) para atender a requisitos específicos. Para este fim, o trabalho de Wendong et al. (2012) pode servir como ponto de partida para aplicação e extensão da abordagem apresentada. 4. Considerações finais Este trabalho apresentou uma infraestrutura autonômica de rede baseada em recursos de uma SDN. A partir desta infraestrutura é possível delinear discussões sobre como desenvolver aplicações autonômicas fazendo uso de uma interface de manipulação de fluxos capaz de abranger aspectos da camada de enlace até a camada de aplicação da rede. Um ponto importante a ser discutido é a realização de testes e a implantação de aplicações autonômicas em cada switch. Como o esperado é um comportamento emergente da rede, há a dificuldade de testes em larga escala em um cenário real devido ao fato da implantação de cada aplicação ser realizada manualmente em cada switch. Dessa forma, realizar constantes atualizações nesse cenário pode-se tornar custoso. Em trabalhos futuros pretende-se adaptar diversas estratégias autonômicas na infraestrutura apresentada, avaliando sua flexibilidade e suas limitações. Referências IBM (2006), “An architectural blueprint for autonomic computing”. IBM White Paper. Mendonça, M. et al. (2014) “A Survey of Software-Defined Networking: Past, Present, and Future of Programmable Networks”, in submission. Disponível em: http://hal.inria.fr/docs/00/93/29/82/PDF/hal_final.pdf. Acesso em Março de 2014. Open Networking Foundation (ONF) (2014). https://www.opennetworking.org/. Acesso em Março de 2014. Disponível em: OVS e Floodlight (2012). Disponível em: http://networkstatic.net/how-to-build-an-sdnlab-without-needing-openflow-hardware. Acesso em Março de 2014. Software Defined Networking Research Group (SDNRG) (2014). Disponível em: http://trac.tools.ietf.org/group/irtf/trac/wiki/sdnrg. Acesso em Março de 2014. Wendong, W., Yannan, H. U., Que, X., & Xiangyang, G. (2012). “Autonomicity design in OpenFlow based Software Defined Networking”. In IEEE Globecom, pp. 818-823. 38