• Nenhum resultado encontrado

Implementação e Avaliação de Plano de Controle Baseado em Recursos Superdimensionados para Redes Softwarizadas

N/A
N/A
Protected

Academic year: 2021

Share "Implementação e Avaliação de Plano de Controle Baseado em Recursos Superdimensionados para Redes Softwarizadas"

Copied!
88
0
0

Texto

(1)

UNIVERSIDADE​ ​FEDERAL​ ​DO​ ​RIO​ ​GRANDE​ ​DO​ ​NORTE  CENTRO​ ​DE​ ​CIÊNCIAS​ ​EXATAS​ ​E​ ​DA​ ​TERRA 

DEPARTAMENTO​ ​DE​ ​INFORMÁTICA​ ​E​ ​MATEMÁTICA​ ​APLICADA  BACHARELADO​ ​EM​ ​CIÊNCIA​ ​DA​ ​COMPUTAÇÃO 

               

 

Implementação​ ​e​ ​Avaliação​ ​de​ ​Plano​ ​de 

Controle​ ​Baseado​ ​em​ ​Recursos 

Superdimensionados​ ​para​ ​Redes 

Softwarizadas 

                   

Douglas​ ​Braz​ ​Maciel

   

       

(2)

 

(3)

Natal-RN 

(4)

Douglas​ ​Braz​ ​Maciel 

         

Implementação​ ​e​ ​Avaliação​ ​de​ ​Plano​ ​de​ ​Controle 

Baseado​ ​em​ ​Recursos​ ​Superdimensionados​ ​para 

Redes​ ​Softwarizadas 

         

Monografia de Graduação apresentada ao          Departamento de Informática e Matemática          Aplicada do Centro de Ciências Exatas e da        Terra da Universidade Federal do Rio Grande        do Norte como requisito parcial para a        obtenção do grau de bacharel em Ciência da        Computação.          Orientador(a) 

Prof.​ ​Dr.​ ​Augusto​ ​José​ ​Venâncio​ ​Neto 

     

 

Universidade​ ​Federal​ ​do​ ​Rio​ ​Grande​ ​do​ ​Norte​ ​–​ ​UFRN  Departamento​ ​de​ ​Informática​ ​e​ ​Matemática​ ​Aplicada​ ​–​ ​DIMAp 

     

(5)

Natal-RN  Agosto,​ ​2017   

 

Monografia de Graduação sob o título ​Implementação e Avaliação de Plano de                  Controle  Baseado  em  Recursos  Superdimensionados  para  Redes  Softwarizadas apresentada por Douglas Braz Maciel e aceita pelo        Departamento de Informática e Matemática Aplicada do Centro de Ciências        Exatas e da Terra da Universidade Federal do Rio Grande do Norte, sendo        aprovada​ ​por​ ​todos​ ​os​ ​membros​ ​da​ ​banca​ ​examinadora​ ​abaixo​ ​especificada: 

   

__________________________________________  Dr.​ ​Augusto​ ​José​ ​Venâncio​ ​Neto 

Departamento​ ​de​ ​Informática​ ​e​ ​Matemática​ ​Aplicada​ ​(DIMAp)  Universidade​ ​Federal​ ​do​ ​Rio​ ​Grande​ ​do​ ​Norte 

     

__________________________________________  Dr.​ ​Marcos​ ​Cesar​ ​Madruga​ ​Alves​ ​Pinheiro 

Departamento​ ​de​ ​Informática​ ​e​ ​Matemática​ ​Aplicada​ ​(DIMAp)  Universidade​ ​Federal​ ​do​ ​Rio​ ​Grande​ ​do​ ​Norte 

     

__________________________________________  Dr.​ ​Edson​ ​Moreira​ ​Silva​ ​Neto 

Escola​ ​Agrícola​ ​de​ ​Jundiaí 

Universidade​ ​Federal​ ​do​ ​Rio​ ​Grande​ ​do​ ​Norte             

(6)

   

Natal-RN,​ ​data​ ​de​ ​aprovação​ ​(por​ ​extenso).                                                   

(7)

Agradecimentos 

Agradeço primeiramente a Deus por sempre me mostrar o caminho        certo das coisas, aos meus pais, irmão e familiares por sempre estarem por        perto, me motivando e apoiando nos melhores e piores momentos. Agradeço        também ao meu orientador por sempre estar me guiando e instruindo no        meio acadêmico, além também de todos os amigos que sempre estiveram por        perto​ ​me​ ​apontando​ ​os​ ​Bugs​ ​e​ ​ajudando​ ​na​ ​implementação​ ​da​ ​vida. 

                               

(8)

Implementação​ ​e​ ​Avaliação​ ​de​ ​Plano​ ​de​ ​Controle 

Baseado​ ​em​ ​Recursos​ ​Superdimensionados​ ​para 

Redes​ ​Softwarizadas 

     

Autor:​ ​Douglas​ ​Braz​ ​Maciel    Orientador(a):​ ​Prof.​ ​Dr.​ ​Augusto​ ​José​ ​Venâncio​ ​Neto 

         

R

ESUMO

 

 

O presente trabalho apresenta o plano de implementação de um protótipo        para o controlador de recursos superdimensionados em redes softwarizadas        com OpenFlow. O controlador resultante, tem como principal objetivo aplicar        plano de controle de recursos otimizado na rede ​softwarizada​, visando plano        de dados mais eficiente para obter serviço de transporte com qualidade        garantida. Os resultados obtidos com a prototipação demonstram a        viabilidade e eficiência do plano de controle, sugerindo melhoria significativa        frente a modelos clássicos da Internet quanto ao número de objetos móveis        simultaneamente conectados, sobre-reserva de recursos e vazão de dados        por​ ​classe​ ​de​ ​serviço. 

 

Palavras-chave: Redes Softwarizadas, OpenFlow, Alocação de Recursos        Superdimensionados,​ ​Qualidade​ ​de​ ​Serviço. 

   

(9)

Implementation​ ​and​ ​Evaluation​ ​of​ ​the 

Overprovisioned-based​ ​Resource​ ​Control​ ​Plane​ ​for 

Softwarized​ ​Networks 

     

Author:​ ​Douglas​ ​Braz​ ​Maciel    Advisor:​ ​Prof.​ ​Dr.​ ​Augusto​ ​José​ ​Venâncio​ ​Neto 

         

A

BSTRACT

 

 

The present work aims at introducing the implementation plan for        prototyping the oversized resources controller tailored to softwarized        networks featuring the OpenFlow southbound API. The resulting controller        has as primary objective to apply an optimized resource control plan in the        softwarized network, in order to obtain efficient-enhanced data plan in terms        to quality-guaranteed transport service. The results obtained through the        prototyping demonstrate the feasibility and efficiency of the resulting control        plan, suggesting a significant improvement over classic Internet models,        regarding overall mobile objects admissions, resources over-reservation and        data​ ​throughput​ ​per​ ​class​ ​of​ ​service.  

 

Keywords: Softwarized Networks, OpenFlow, Allocation of Oversized        Resources,​ ​Quality​ ​of​ ​Service. 

   

(10)

Lista​ ​de​ ​figuras 

Figura​ ​2​ ​Arquitetura​ ​ONF​ ​para​ ​as​ ​Redes​ ​Definidas​ ​por​ ​Software(SDN)...​ ​24 

Figura​ ​2.1​ ​Funcionamento​ ​de​ ​um​ ​Switch​ ​OpenFlow……….​ ​28 

Figura​ ​2.2​ ​Arquitetura​ ​de​ ​um​ ​switch​ ​tradicional………​ ​29 

Figura​ ​2.3​ ​Campos​ ​de​ ​cabeçalho​ ​em​ ​um​ ​fluxo​ ​OpenFlow………​ ​31 

Figura 2.4 Fluxograma do processamento de pacotes em switches        OpenFlow………​ ​41 

Figura​ ​2.5​ ​Primeiras​ ​mensagens​ ​trocadas​ ​entre​ ​o​ ​switch​ ​e​ ​o​ ​controlador..​ ​49 

Figura​ ​3​ ​Arquitetura​ ​geral​ ​do​ ​sistema​ ​SDWiNeMo………..​ ​58 

Figura​ ​3.1​ ​Estabelecimento​ ​de​ ​uma​ ​nova​ ​conexão​ ​na​ ​rede………..​ ​62 

Figura​ ​3.2​ ​Sinalização​ ​feita​ ​na​ ​Predição​ ​de​ ​mobilidade​ ​e​ ​handover.……….​ ​67 

Figura 3.3 Diagrama de sinalizações no momento do balanceamento da        carga……….​ ​68 

Figura 4 Fluxograma de execução dos mecanismos de admissão e alocação        de​ ​recursos……….​ ​72 

Figura​ ​5​ ​Organização​ ​da​ ​topologia​ ​empregada​ ​para​ ​os​ ​testes.………​ ​77 

Figura 5.1. Porcentagem de chance para admissão de um objeto móvel na        rede.……….​ ​79 

Figura​ ​5.2.​ ​Reserva​ ​das​ ​CoS​ ​após​ ​reajustes………..​ ​81 

Figura​ ​5.3​ ​vazão​ ​de​ ​dados​ ​por​ ​CoS………...​ ​82   

(11)

Lista​ ​de​ ​tabelas 

Tabela​ ​1​ ​Recursos​ ​extras​ ​na​ ​versão​ ​1.1...​ ​34 

Tabela​ ​2​ ​Recursos​ ​extras​ ​na​ ​versão​ ​1.2...​ ​36 

Tabela​ ​3​ ​Recursos​ ​extras​ ​na​ ​versão​ ​1.3...​ ​37 

Tabela​ ​4​ ​Recursos​ ​extras​ ​na​ ​versão​ ​1.4...​ ​38 

Tabela​ ​5​ ​Recursos​ ​extras​ ​na​ ​versão​ ​1.5...​ ​39   

   

(12)

Lista​ ​de​ ​abreviaturas​ ​e​ ​siglas 

 

 

UFRN​ ​-​ ​Universidade​ ​Federal​ ​do​ ​Rio​ ​Grande​ ​do​ ​Norte 

DIMAp​ ​-​ ​Departamento​ ​de​ ​Informática​ ​e​ ​Matemática​ ​Aplicada 

SMART - Suporte Confiável de Sessões Móveis Multimídia com Alta        Demanda​ ​de​ ​Recursos​ ​de​ ​Transporte 

SDWiNeMo​ ​-​ ​Software​ ​Defined​ ​Wireless​ ​Networking​ ​for​ ​Moving​ ​Objects  MO​ ​-​ ​Moving​ ​Object 

IEEE​ ​-​ ​Institute​ ​of​ ​Electrical​ ​and​ ​Electronics​ ​Engineers  CoS​ ​-​ ​Class​ ​of​ ​Service 

PoA​ ​-​ ​Point​ ​of​ ​Access 

MIH​ ​-​ ​Media​ ​Independent​ ​Handover   QoS​ ​-​ ​Quality​ ​of​ ​Service 

ONF​ ​-​ ​Open​ ​Network​ ​Foundation 

API​ ​-​ ​Application​ ​Programming​ ​Interfaces  REST​ ​-​ ​Representative​ ​State​ ​Transfer  IP​ ​-​ ​Internet​ ​Protocol 

MPLS​ ​-​ ​Multiprotocol​ ​Label​ ​Switching​ ​Architecture  OXM​ ​-​ ​OpenFlow​ ​Extensible​ ​Match 

OF-Config​ ​-​ ​OpenFlow​ ​Configuration​ ​and​ ​Management​ ​Protocol  TCP​ ​-​ ​Transmission​ ​Control​ ​Protocol 

UDP​ ​-​ ​User​ ​Datagram​ ​Protocol  TLS​ ​-​ ​Transport​ ​Layer​ ​Security  DPID​ ​-​ ​OpenFlow​ ​Datapath​ ​ID 

(13)

Diffserv​ ​-​ ​Differentiated​ ​services  RFC​ ​-​ ​Request​ ​for​ ​Comments 

RSVP​ ​-​ ​Resource​ ​reSerVation​ ​Protocol  IETF​ ​-​ ​Internet​ ​Engineering​ ​Task​ ​Force  SLA​ ​-​ ​Service​ ​Level​ ​Agreement 

DSCP​ ​-​ ​Differentiated​ ​Services​ ​Code​ ​Point  ToS​ ​-​ ​Type​ ​of​ ​Service 

PHB​ ​-​ ​Per​ ​Hop​ ​Behavior  LTE​ ​-​ ​Long​ ​Term​ ​Evolution 

UMTS​ ​-​ ​Universal​ ​Mobile​ ​Telecommunications​ ​System  ANCE​ ​-​ ​Access​ ​Network​ ​Control​ ​Entity 

MCE​ ​-​ ​Mobility​ ​Control​ ​Entity  NPI​ ​-​ ​Network​ ​Protocol​ ​Interface  RMO​ ​-​ ​Requester​ ​Moving​ ​Object 

RSSI​ ​-​ ​Received​ ​Signal​ ​Strength​ ​Indicator  PoAT​ ​-​ ​PoA​ ​Target 

PoAC​ ​-​ ​PoA​ ​candidate   

   

(14)

Sumário

      1​ ​Introdução 14  1.1​ ​Contexto 14  1.2​ ​Objetivos 16  1.3​ ​Contribuições 20  1.4​ ​Resultados 20 

1.5​ ​Organização​ ​do​ ​trabalho 21 

2​ ​Fundamentação​ ​Teórica 22 

2.1​ ​Redes​ ​Definidas​ ​por​ ​Software​ ​(SDN) 22 

2.1.2​ ​Protocolos​ ​para​ ​Redes​ ​SDN 26 

2.2​ ​OpenFlow 27 

2.2.1​ ​Tabela​ ​de​ ​Fluxos 29 

2.2.2​ ​Versões​ ​do​ ​Protocolo​ ​OpenFlow 33  2.2.3​ ​Emparelhamento​ ​entre​ ​Pacotes​ ​e​ ​Fluxos​ ​de​ ​Entrada 40 

2.2.4​ ​Controlador​ ​OpenFlow 44 

2.2.5​ ​Comunicação​ ​entre​ ​Controlador​ ​e​ ​Switch​ ​OpenFlow 46 

2.2.5.1​ ​Controlador​ ​para​ ​Switch 47 

2.2.5.2​ ​Mensagens​ ​Assíncronas 48 

2.2.5.3​ ​Mensagens​ ​Simétricas 48 

2.2.5.4​ ​Conexão​ ​entre​ ​o​ ​Controlador​ ​e​ ​o​ ​Switch 49 

2.3​ ​Qualidade​ ​de​ ​serviço​ ​(QoS) 51 

2.3.1​ ​Abordagens​ ​de​ ​QoS 51 

2.3.1.1​ ​Serviços​ ​de​ ​Integração​ ​(IntServ) 51  2.3.1.2​ ​Serviço​ ​Diferenciado​ ​(DiffServ) 52  2.3.2​ ​Alocação​ ​de​ ​Recursos​ ​de​ ​QoS 54  2.3.2.1​ ​Alocação​ ​Estática​ ​de​ ​Recursos 54  2.3.2.2​ ​Alocação​ ​de​ ​Recursos​ ​Por​ ​fluxo 54  2.3.2.3​ ​Alocação​ ​de​ ​Recursos​ ​Superdimensionados 55 

2.4​ ​Resumo​ ​do​ ​Capítulo 55 

3​ ​Visão​ ​Geral​ ​do​ ​Sistema​ ​SDWiNeMO 56 

(15)

3.2​ ​Arquitetura 58  3.2.1​ ​Access​ ​Network​ ​Control​ ​Entity​ ​(ANCE) 59 

3.2.1.1​ ​Controle​ ​da​ ​Topologia 62 

3.2.1.2​ ​Controle​ ​de​ ​Admissão 63 

3.2.1.3​ ​Controle​ ​para​ ​Alocação​ ​de​ ​Recursos 63  3.2.2​ ​Mobility​ ​Control​ ​Entity​ ​(MCE) 64  3.2.2.1​ ​Mobilidade​ ​Antecipada​ ​do​ ​Objeto​ ​Móvel 68  3.2.2.2​ ​Controle​ ​para​ ​Seleção​ ​do​ ​Ponto​ ​de​ ​Acesso(PoA) 69  3.2.2.3​ ​Balanço​ ​de​ ​Carga​ ​Baseado​ ​em​ ​Mobilidade 70 

4​ ​Implementação 71 

4.1​ ​Fluxograma​ ​de​ ​Execução 71 

5​ ​Avaliação​ ​do​ ​SDWiNeMO 76 

6​ ​Conclusão 82 

Referências 84

 

(16)

 

1​ ​Introdução 

Este  capítulo  descreve  as  motivações  encontradas  para o    desenvolvimento deste trabalho, apresentando alguns dos principais        problemas existentes atualmente nos ambientes de rede, os objetivos        alcançados ao final do desenvolvimento da ferramenta, além também das        contribuições que este trabalho apresenta, onde estas foram ocasionadas        pelo desenvolvimento dos mecanismos expostos neste documento, e por fim,        é descrito os resultados obtidos, onde estes são mostrados através de        publicações​ ​em​ ​congressos​ ​internacionais.  

 

 

1.1​ ​Contexto 

Com o decorrer dos anos, o acesso aos dispositivos móveis tornou-se        mais fácil, tais como smartphones, smartwatches, dispositivos corporais, e        outros, devido ao barateamento das tecnologias móveis. Hoje em dia é difícil        encontrar uma pessoa que não possua pelo menos um smartphone, por        exemplo. Estudos indicam que até 2021 aproximadamente 27.1 bilhões de        dispositivos estarão conectados na rede[12], enquanto que em 2016 haviam        apenas 17.1 bilhões, sendo que cada indivíduo, em 2021, possuirá pelo        menos 3 dispositivos com acesso à internet, enquanto que em 2016, cada        pessoa possuía aproximadamente 2 dispositivos com capacidade de acesso à        rede. Tendo isto em mente, a consequência deste crescimento é refletido no        consumo da rede, onde de acordo com a Cisco, somente o tráfego de vídeo        circulante na internet, será de aproximadamente 187.4 exabyte,        apresentando uma elevação cerca de 379,3% quando se comparado a 2016,        onde neste o tráfego girava em torno de 49.4 exabyte. Além disso, o conteúdo        que será mais fortemente consumido, pelos usuários, será o de vídeos, onde        este​ ​representará​ ​cerca​ ​de​ ​80%​ ​do​ ​tráfego​ ​total​ ​na​ ​internet. 

(17)

Esta quantidade imensa de dados trafegados é proveniente de diversas        aplicações embarcadas em dispositivos móveis, onde cada uma dessas        necessita de garantia de qualidade em um conjunto de requisitos,        especificados por essas, para fornecer um serviço de qualidade para os        usuários. Entretanto, a internet nos dias de hoje encontra-se engessada,        apresentando inúmeras dificuldades e até mesmo incapacidades de        encontrar uma solução para o cenário apresentado pela Cisco para 2021.        Alguns desses problemas estão relacionados a confiabilidade, escalabilidade        e a falta de flexibilidade, visto que é muito complexo integrar uma nova        tecnologia na rede, devido à dificuldades encontradas tanto na testabilidade        do novo mecanismo quanto pela atual internet ser composta por dispositivos        proprietários, onde somente os fabricantes possuem acesso ao código fonte        do dispositivo da rede, tais como roteadores e switches, para integração de        novas​ ​funcionalidades.  

As redes definidas por software (Software Defined Network - SDN) é        uma abordagem projetada para solucionar os problemas apresentados        acima, onde os dispositivos de rede (switches, roteadores, pontos de acesso)        não mais são implementados por softwares proprietários, mas sim por        pesquisadores e administradores da rede, no qual, através de um        controlador, novos protocolos e algoritmos são facilmente capazes de serem        inseridos​ ​na​ ​rede. 

Esse trabalho foi desenvolvido no âmbito do projeto SMART (Suporte        Confiável de Sessões Móveis Multimídia com Alta Demanda de Recursos de        Transporte), onde a aplicação dos conceitos do SMART já encontravam-se        em desenvolvimento no âmbito de um trabalho de mestrado. O SMART segue        um modelo disruptivo, onde o foco está na inovação tecnológica ao invés da        evolução das tecnologias já existentes no cenário atual, no qual para isto        utiliza a abordagem das redes definidas por software para o desenvolvimento        de mecanismos de comunicação revolucionários. A idéia ao final do projeto        era o de fornecer um sistema robusto, capaz de suportar diferentes        aplicações e tecnologias de rede heterogêneas, provendo qualidade de serviço       

(18)

para as aplicações, através da alocação de recursos, definidos previamente        pelas aplicações, com a finalidade de atingir o nível de satisfação dos        usuários. O SMART visava fornecer as seguintes inovações: (i) especificação        de requisitos de QoS para cada aplicação móvel; (ii) criação de novas        mensagens OpenFlow, voltadas para o âmbito do projeto; (iii) predição de        mobilidade baseando-se na queda dos padrões de QoS estabelecidos para        cada aplicação; (iv) seleção do(s) ponto(s) de acesso mais adequado(s) para        acomodar requisições de associação na rede; (v) balanceamento de carga        entre pontos de acesso, de forma a garantir a estabilidade da rede. Com isto        em mente, foi desenvolvido o sistema SDWiNeMo (Software Defined Wireless        Networking for Moving Objects). Este sistema é um framework destinado a        oferecer serviços de transporte com garantia de QoS para as diversas        aplicações móveis, além também de prover transparentemente, aos nós        móveis, mobilidade entre pontos de acesso caso os recursos requisitado        pelas​ ​aplicações​ ​não​ ​estejam​ ​sendo​ ​atendidos​ ​adequadamente.  

1.2​ ​Objetivos 

Existe uma diversidade imensa de tipos de objetos móveis (Moving        Objects - MO), onde estes podem ser tanto smartphones, smartwatches, e        diversos outros dispositivos. Sendo assim, uma infraestrutura ótima deve        fornecer serviços diferenciados que aprimorem o desempenho e a usabilidade        da rede, de forma que seja proporcionado escalabilidade, confiabilidade,        agilidade e flexibilidade, além também da capacidade de suportar qualquer        tecnologia de comunicação sem fio utilizada por estes MOs, tais como IEEE        802.11​ ​e​ ​4​ ​G,​ ​visando​ ​sempre​ ​mantê-los​ ​com​ ​a​ ​conexão​ ​possível.  

O framework SDWiNeMo foi desenvolvido visando fornecer garantia de        qualidade de serviço, desde a origem até o destino do canal de comunicação,        para as aplicações embarcadas nos MOs que requisitarem conexão na rede.        Cada aplicação necessita de um conjunto diferente de requisitos para        oferecer uma boa experiência de uso para os usuários, e sendo assim, o        SDWiNeMo, no momento da requisição, procura identificar os recursos       

(19)

desejados pela aplicação, tais como latência máxima, largura de banda ideal,        e outros. Esta extração de informações é necessária para o controlador        descobrir a classe de serviço (CoS) que melhor representa determinada        aplicação, sendo que cada CoS oferece diferentes garantias de recursos. As        classes de serviço são criadas no momento da inicialização da rede, após a        descoberta dos melhores caminhos presentes entre a entrada e a saída da        rede, e configuradas em cada interface pertencente aos caminhos        previamente escolhidos, presente nos PoAs, sendo que a largura máxima        suportada por cada interface destas é dividida entre as diversas classes de        serviço gerenciadas pelo controlador. Entretanto, a largura máxima de        banda disponibilizada para uma determinada classe, não é liberada de        imediato, pois apenas uma parte desta é liberada de início, enquanto que o        restante é liberado gradativamente, através de reajustes na banda        sobre-reservada para uma determinada classe, com o aumento das        requisições realizadas a um PoA e mapeadas para uma determinada CoS. A        idéia da divisão das interfaces dos PoAs em classes, permitiu o        desenvolvimento de mecanismos capazes de aprimorar o desempenho da        rede. 

O objetivo do SDWiNeMo é fornecer um conjunto de serviços        diferenciados, focando sempre em prover a melhor conexão possível para os        MOs. O SDWiNeMo, configura inicialmente uma sobre-reserva de banda nas        classes de serviço pertencentes às interfaces de rede dos PoAs, para que        assim seja transmitido um menor número de sinalizações na rede. O        mapeamento de MOs para estas classes é feito por um módulo de controle de        acesso, onde este é o responsável pela inserção de fluxos nos PoAs        pertencentes a um dado caminho previamente selecionado. Além disso, para        tratar adequadamente cada admissão realizada na rede, o SDWiNeMo conta        com o controlador de alocação de recursos que é responsável por armazenar        informações sobre a quantidade de banda utilizada e disponível em cada        classe, além também de ser o encarregado por executar reajustes tanto na        sobre-reserva de recursos das classes quanto reajustes entre as próprias       

(20)

classes, fazendo transferência de recursos ociosos, em uma ou mais classes,        para  a  classe  que  encontra-se  momentaneamente  saturada.  A  interoperabilidade realizada entre estes dois controladores é fundamental        para a maximização do uso dos recursos presentes nos PoAs, pois isto        permite a minimização da quantidade de recursos ociosos e o consequente        incremento​ ​do​ ​número​ ​de​ ​MOs​ ​conectados​ ​na​ ​rede.  

Além disso, o SDWiNeMo possui mecanismos para predição de        mobilidade, onde através do protocolo IEEE 802.21 Media Independent        Handover (MIH), o controlador mantém-se atualizado sobre as condições da        conexão de cada MO conectado na rede. O MIH é um agente embarcado nos        MOs, que é responsável por executar medições nos parâmetros de qualidade        da conexão, tais como taxa de perda de pacotes, latência, força do sinal        entre o MO e o PoA, e sendo assim, periodicamente repassa para o        controlador estas informações coletadas. Quando o MO encontra-se        apresentando altas taxas de perda de pacote, latência ou em outras        palavras, os parâmetros de QoS não encontram-se sendo atendidos no        momento, o controlador envia um comando para a execução de um handover        para o MIH. O handover consiste em transferir o MO, atualmente conectado        a um PoA, para outro PoA que encontre-se apto para acomodar todas as        aplicações​ ​associadas​ ​a​ ​este​ ​MO.  

Uma das principais características do SDWiNeMO é o poder que este        possui para balancear a carga presente na rede. Através do trabalho em        conjunto do controlador com o MIH, foi possível desenvolver um mecanismo        ágil e eficiente capaz de realizar distribuição de MOs, previamente        conectados, entre diferentes PoAs. Este balanceamento é acionado quando        uma nova requisição é feita para um PoA saturado, onde este encontra-se        incapaz de reajustar a sobre-reserva das classes e de realizar reajustes entre        classes, e sendo assim, para permitir acomodação de novos MOs, é        necessário executar o mecanismo de handover em um ou mais MOs        conectados nesse PoA, para que seja liberado recursos previamente alocados       

(21)

para estes e posteriormente disponibilizados novamente para acomodação de        novas​ ​requisições. 

Este trabalho foi desenvolvido no âmbito de um projeto de mestrado e        objetiva apresentar a implementação dos mecanismos para controle de        admissão e alocação de recursos, e também a técnica de validação utilizada        para analisar o desempenho e a correta execução dos mecanismos        implementados. O controlador SDN utilizado na implementação foi o Pox.        Apesar de existir diferentes tipos de controlador SDN no mercado, tais como        Floodlight, Ryu e o OpenDaylight, o Pox foi escolhido pelo fato deste ser de        conhecimento da equipe e ter sido desenvolvido em Python, além também de        apresentar​ ​uma​ ​boa​ ​documentação. 

Para testar algumas das funcionalidades do controlador, foi        primeiramente utilizado a ferramenta de emulação chamada de Mininet[25].        Esta ferramenta permite a criação personalizada de hosts e switches        OpenFlow para gerar uma topologia de rede virtualizada. Cada switch é        configurado para no momento da inicialização estabelecer um canal de        comunicação com o controlador, através do endereço IP especificado pelo        desenvolvedor da topologia. Sendo assim, para a execução de testes dos        controles de admissão e de alocação de recursos, esta ferramenta foi        suficiente para proporcionar resultados favoráveis. Entretanto, para a        execução dos testes que envolvem mobilidade, como a predição e o        balanceamento de carga, foi utilizada a ferramenta Mininet-WiFi [21], pois        nesta é integrada o protocolo IEEE 802.11, e sendo assim foi possível        realizar testes realísticos simulando ambientes de rede sem fio com presença        de perda de pacotes, variação de latência, handover entre pontos de acesso,        entre outros. O Mininet-WiFi é uma extensão do Mininet, e sendo assim os        mesmos resultados obtidos com os testes no Mininet também foram obtidos        quando​ ​testados​ ​no​ ​Mininet-WiFi.   

(22)

1.3​ ​Contribuições 

As principais contribuições fornecidas pelo desenvolvimento dos        mecanismos propostos para este trabalho foram: (i) implementação de um        serviço para controle de QoS em caminhos selecionados; (ii) implementação        de um mecanismo de controle de admissão baseado em alocação de recursos        de rede; (iii) apresentação dos resultados obtidos em artigos científicos        internacionais.   

1.4​ ​Resultados 

Além desse trabalho de conclusão de curso, os resultados obtidos com        o desenvolvimento e a validação do mecanismo SDWiNeMO conduziu às        seguintes​ ​publicações​ ​produzidas​ ​no​ ​decorrer​ ​do​ ​desenvolvimento: 

1. Felipe  Sampaio  Dantas  da  Silva,  "​Controle de Mobilidade      Infraestruturado e Orientado à Qualidade para Maximização de                Admissões em Sistemas WiNeMO: Uma Abordagem Definida por                Software​". Dissertação de Mestrado do Programa de Pós Graduação        em Sistemas e Computação, Universidade Federal do Rio Grande do        Norte.​​ ​Defendida​ ​em​ ​18​ ​de​ ​Dezembro​ ​de​ ​2015; 

2. SILVA, FELIPE S. DANTAS; NETO, AUGUSTO VENÂNCIO; MACIEL​,        DOUGLAS; CASTILLO-LEMA, JOSÉ; SILVA, FLÁVIO; FROSI, PEDRO;        Cerqueira,  Eduardo. "​An innovative software-defined WiNeMO          architecture for advanced QoS-guaranteed mobile service transport            ​".  Computer​ ​Networks​ ​(1999),​ ​v.​ ​107,​ ​p.​ ​270-291,​ ​2016. 

3. SILVA, FELIPE S. DANTAS; NETO, AUGUSTO J.V.; MACIEL,        DOUGLAS BRAZ; CASTILLO-LEMA, JOSE; SILVA, FLÁVIO DE        OLIVEIRA; ROSA, PEDRO FROSI. "​SDN Based Control Plane                Extensions for Mobility Management Improvement in Next Generation                ETArch Networks  ​". 18th ACM International Conference on Modeling,       

(23)

Analysis and Simulation of Wireless and Mobile Systems - MSWiM '15,        Cancun,​ ​2015,​ ​p.​ ​189-193; 

4. DANTAS, FELIPE; NETO, A.; BRAZ, D​.​; CASTILLO-LEMA, JOSE;        SILVA, FLAVIO. "​Infrastructured Mobility Management Approach for              Future Internet ETArch Networks      ​". International Conference on        Wireless​ ​Networks​ ​(ICWN),​ ​2015,​ ​Las​ ​Vegas,​ ​p.​ ​39-45. 

Vale ressaltar que os resultados apresentados por este trabalho foram objeto        da publicação de número 2, na qual essa apresenta o sistema SDWiNeMo        que é o framework resultante dos mecanismos desenvolvidos durante o        projeto​ ​SMART. 

 

1.5​ ​Organização​ ​do​ ​trabalho 

O restante deste documento encontra-se organizado da seguinte        maneira: Seção 2 apresenta um embasamento teórico sobre as tecnologias        abordadas no desenvolvimento do sistema. Seção 3 descreve o        funcionamento do SDWiNeMo, apresentando seus principais objetivos e a        organização interna da sua arquitetura. Seção 4 apresenta um fluxograma        de execução do sistema SDWiNeMo, onde este demonstra o andamento,        desde o início até o fim, de uma requisição dirigida ao sistema. A seção 5        apresenta o ambiente de testes utilizado, onde este abrange a topologia e        ferramenta de emulação utilizada, bem como configurações realizadas no        ambiente de testes. A seção 6 mostra os resultados obtidos e análises        obtidas na emulação. E por fim, a seção 7 apresenta a conclusão do        trabalho.  

 

(24)

2​ ​Fundamentação​ ​Teórica 

 

Neste capítulo será apresentado uma visão detalhada do conceito de        SDN, bem como algumas tecnologias desenvolvidas para operar sob este        novo conceito, como é o caso do protocolo OpenFlow e também do Mininet,        embora o Mininet tenha sido projetado para atuar sob redes convencionais        também. 

 

2.1​ ​Redes​ ​Definidas​ ​por​ ​Software​ ​(SDN) 

As Redes Definidas por Software (SDN, do inglês Software-Defined        Networking) [REF RFC 7426], são infraestruturas de rede que permitem        programabilidade de seus recursos em tempo de execução. Trata-se de uma        nova abordagem de programação, em software, voltado à redes, que permite        o desenvolvimento de mecanismos capazes de gerenciar e controlar os        recursos presentes na rede, tais como garantia de largura de banda mínima,        baixa latência e perda de pacotes. Firewalls, distribuição de carga entre        equipamentos de rede, qualidade de serviço(QoS), gerência de tráfego, são        exemplos de aplicações de rede que podem ser desenvolvidos utilizando-se        da​ ​abordagem​ ​SDN. 

Para a abordagem SDN poder entrar de vez em vigor, teve-se que        executar a padronização do mesmo. Isto deu-se através da ONF (Open        Network Foundation)[11]. A ONF foi criado por um conglomerado de        empresas, que dentre elas estão presentes: Google, Facebook, Microsoft e        algumas​ ​outras,​ ​em​ ​21​ ​de​ ​março​ ​de​ ​2011.  

A arquitetura proposta para padronização pela ONF é apresentada na        figura 2. Nela é possível ver a existência de três camadas: camada de        aplicação, camada de controle e camada de dados, cada uma com um papel        distinto. A terceira camada, chamada de plano de dados, é responsável pelo        transportes dos dados que trafegam pela rede. Nesta camada é descrito os       

(25)

protocolos e algoritmos usados para permitir que pacotes Ip sejam        repassados dentro da rede, desde sua origem até o destino. A segunda        camada é chamada de plano de controle, pois é responsável pela gerência da        rede. É nesta camada que se encontra os controladores da rede responsáveis        por orquestrar o plano de dados, de forma que a rede se comporte de acordo        com a maneira que os desenvolvedores da rede projetaram. Esta arquitetura        permite que o controle da rede seja centralizado, permitindo e facilitando a        coleta da grande quantidade de informações que trafegam pela rede.        Diversos controladores podem operar simultaneamente sobre um mesmo        ambiente de rede, mais precisamente sobre os mesmos dispositivos        presentes na rede, onde cada controlador torna-se responsável por        orquestrar uma ou mais funcionalidades, como por exemplo, um controlador        “A” tem a tarefa de realizar o balanceamento de carga entre diferentes        dispositivos de rede, enquanto que um controlador “B” é implantado para        atuar protegendo a rede de possíveis intrusões, em outras palavras, atuando        como um firewall. Além disto, cada controlador pode trocar informações com        outros​ ​presentes​ ​na​ ​rede. 

Por fim, na primeira camada é onde fica localizada todas as aplicações        utilizadas pelos clientes, bem como os requisitos necessários para sua        operação, como por exemplo, espaço para armazenamento, segurança e        gerenciamento das aplicações. É nesta camada que se encontra toda a        programabilidade das aplicações e também informações referentes às        necessidades de cada aplicação perante à rede, como por exemplo, uma        determinada aplicação “A” necessita de um canal para comunicação que        possua latência inferior a 50 ms, enquanto que uma outra aplicação “B”        necessita de 300kb/s de banda disponível para fornecer um bom        funcionamento​ ​para​ ​o​ ​cliente. 

     

(26)

Figura​ ​2.​​ ​Arquitetura​ ​ONF​ ​para​ ​as​ ​Redes​ ​Definidas​ ​por​ ​Software(SDN) 

Fonte:​ ​Próprio​ ​autor. 

A imagem apresentada pela Figura 2 mostra como é definida pela ONF        a arquitetura SDN. O SDN tem como principal característica separar o plano        de dados do plano de controle, o software do hardware, ou seja, o controle        lógico da rede é extraído dos dispositivos de rede é transferido para        elementos centralizadores ou controladores SDN. Com esta separação, os        dispositivos de rede tornam-se simples encaminhadores de pacotes. Para        gerenciar estes encaminhadores de pacotes, o controlador cria então uma       

(27)

abstração da rede, com a finalidade de coletar informações referentes às        conexões existentes entre dispositivos encaminhadores, e também estabelece        um canal de comunicação seguro com cada um destes dispositivos. Este        canal é criado exclusivamente para trafegar mensagens trocadas entre o        controlador e os dispositivos, como por exemplo, mensagens de comando ou        eventos gerados pelos switches, enquanto que os pacotes de dados        convencionais trafegam apenas entre os links existentes entre os        encaminhadores de pacotes. O termo “switch” é comumente usado para        representar nós OpenFlow, pois os caminhos são definidos pelo controlador,        o que torna então estes dispositivos apenas encaminhadores de pacotes,        eliminando assim, de suas obrigações, a tarefa de gerenciar os caminhos na        rede. O protocolo OpenFlow será detalhado nas próximas seções deste        documento.  

Existem duas interfaces principais de comunicação no controlador        chamadas de Northbound API (Application Programming Interfaces) e        Southbound API. A interface Southbound é a interface que o controlador usa        para configurar os dispositivos de rede, desde o envio de comandos até a        coleta de estatísticas, geralmente utilizando o protocolo OpenFlow para        transmissão dos comandos, enquanto que a interface Northbound estabelece        ligação entre o controlador e a camada de aplicação. Por esta interface        passam informações pertinente às necessidades das aplicações para que        assim o controlador possa gerenciar a rede da melhor maneira possível,        sempre visando prover o melhor serviço para as aplicações, como qualidade        de serviço (QoS) e segurança adequada. O protocolo comumente utilizado        para transmissão dos dados nesta interface é o REST (Representative State        Transfer)​ ​API. 

Além das interfaces citadas anteriormente, existem duas outras        interfaces chamadas de Westbound API e Eastbound API. A interface        Eastbound permite que dois ou mais controladores do mesmo tipo        comuniquem-se entre si para tomada de decisões em conjunto. Já a        interface Westbound possui a mesma função que a Eastbound, com a       

(28)

diferença de essa permitir a comunicação entre controladores compatíveis        que estejam em sub-redes diferentes. Estas interfaces são muito utilizadas        em ambientes rede que necessitem de vários controladores para poder        administrá-los. 

2.1.2​ ​Protocolos​ ​para​ ​Redes​ ​SDN 

Com o surgimento do SDN, diversos protocolos foram propostos para        operar sob este novo paradigma. Entre estes destacam-se: OpenFlow,        VXLAN,​ ​TRILL​ ​e​ ​LISP. 

O OpenFlow é um protocolo de comunicação utilizado para transportar        mensagens de comando entre controladores SDN e switches OpenFlow. Nos        switches OpenFlow ficam localizadas regras para repasse dos pacotes. Estas        regras são usadas pelos switches para casamento de padrões, ou seja, cada        pacote que chega ao switch é analisado baseando-se nas regras conhecidas        pelo switch, que foram previamente inseridas pelo controlador ou pelo        administrador da rede, e caso o switch conheça uma regra que case com este        pacote que acabou de ingressar ao switch, este então desempenha ações        sobre este pacote, como por exemplo, repassando-o para alguma interface de        rede​ ​ou​ ​simplesmente​ ​descartando-o. 

O protocolo VXLAN(Virtual eXtensible Lan) foi desenvolvido pela Cisco

       

e VMware para solucionar o problema da limitação existente nas VLANs, pois        estas suportam até um máximo de 4096 VLANs por haver apenas 12 bits        disponíveis para uso, e permitir a comunicação entre datacenters localizados        em diferentes sub-redes, utilizando do mesmo bloco de endereçamento IP.        Com o uso do VXLAN é possível chegar a 16 milhões de zonas de        identificação. O VXLAN funciona acrescentando um cabeçalho contendo um        VNI (VXLAN Network Id), que é um identificador, ao quadro ethernet que        uma máquina virtual disseminaria naturalmente para outra máquina        presente na mesma sub-rede IP. Após feito isto, este pacote, contendo o VNI,        é inserido como sendo apenas dados ao cabeçalho UDP presente em outro        quadro ethernet, onde neste novo quadro contém informações de origem e       

(29)

destino entre dois datacenters diferentes, por exemplo. Ao chegar no destino,        é extraído do pacote o quadro mais externo e o identificador VNI, sobrando        assim apenas o quadro interno, gerado pela máquina virtual. Assim sendo,        este quadro que sobrou pode ser então roteado para a máquina virtual        destinatária,​ ​recomeçando​ ​assim​ ​todo​ ​o​ ​ciclo​ ​novamente. 

O LISP (Locator/Identifier Separation Protocol) foi desenvolvido para        facilitar o transporte de máquinas virtuais de um datacenter para outro sem        alterar o endereço IP das que já encontra-se configurado nas máquinas        virtuais. Para isto funcionar é necessário realizar a divisão entre o endereço        que identifica a máquina virtual e o endereço que será utilizado para o        roteamento entre os datacenters. O LISP faz uso tanto do endereço associado        à máquina destinatária, o EID (Endpoint ID), quanto o endereço usado para        roteamento, o RLOC (Routing-Locator). Quando uma máquina cliente inicia        comunicação com uma máquina servidora, o tráfego é interceptado pelo iTR        (ingress Tunnel Router), que nada mais é que o túnel de entrada dos        pacotes, ou roteador de borda de entrada. O iTR é responsável por localizar o        RLOC no qual a máquina servidora encontra-se associada através do        endereço EID pertencente a esta máquina. Após a identificação do RLOC de        destino, o roteamento até este é feito através do eTR (egress Tunnel Router),        ou roteador de borda de saída, que consultará um diretório de serviços,        chamado de EID-RLOC, para obter informações de rotas que direcionam ao        RLOC do destinatário. Tudo isto é feito de maneira invisível para as        entidades​ ​envolvidas​ ​na​ ​comunicação. 

2.2​ ​OpenFlow 

A especificação do OpenFlow foi criada e, inicialmente, desenvolvida        por um grupo de pessoas da universidade de Stanford, Califórnia, e desde        então vem sendo aperfeiçoada a cada ano. Em um primeiro instante, a        organização sem fins lucrativos openflow.org foi criada, em 2008, com a        finalidade de suportar e promover o protocolo OpenFlow. Este domínio era        usado para centralizar a especificação do protocolo, como documentação e       

(30)

artigos publicados. O objetivo inicial do OpenFlow era o de fornecer uma        plataforma de redes experimental para pesquisadores da área, apesar de        também visar uma futura possível comercialização de equipamentos        embarcados com o OpenFlow. A primeira versão do OpenFlow foi lançada em        31 de dezembro de 2009, embora partes da documentação já se        encontrassem disponíveis na internet antes mesmo do seu lançamento        oficial. A organização openflow.org gerenciou o desenvolvimento da        especificação do OpenFlow até a versão 1.1.0, enquanto que versões        posteriores a esta foram desenvolvidas e gerenciadas pela ONF, para acelerar        a​ ​implantação​ ​e​ ​desenvolvimento​ ​do​ ​OpenFlow​ ​em​ ​ambientes​ ​SDN.  

Como dito anteriormente, o OpenFlow é um protocolo de comunicação        usado para que controladores SDN modifiquem o comportamento dos        switches SDN, bem como também permitir a realização da coleta de        informações. Em outras palavras, o OpenFlow define o que um switch é        capaz de fazer quando possui este protocolo embarcado. Nas duas figuras a        seguir, pode-se visualizar as principais diferenças existentes na arquitetura        dos​ ​switches​ ​OpenFlow​ ​e​ ​dos​ ​switches​ ​regulares. 

Figura​ ​2.1.​​ ​Funcionamento​ ​de​ ​um​ ​Switch​ ​OpenFlow. 

(31)

Figura​ ​2.2.​​ ​Arquitetura​ ​de​ ​um​ ​switch​ ​tradicional. 

Fonte:​ ​Próprio​ ​autor. 

A figura 2.2 representa a arquitetura dos switches regulares.        Observa-se que o plano de dados encontra-se associado ao plano de        controle, ou seja, o switch é responsável por gerenciar sua própria lógica de        repasse dos pacotes, enquanto que a figura 2.1 representa a arquitetura        geral dos switches OpenFlow. Nota-se nesta imagem que o plano de controle        foi dissociado do plano de dados, passando a responsabilidade do controle        do switch para um elemento externo, chamado controlador SDN. Nesta        mesma figura observa-se a existência de tabelas de fluxos. Estas tabelas são        responsáveis por armazenar informações referentes a lógica de tratamento        dos pacotes que chegam ao switch, onde cada fluxo representa uma regra e        cada regra é responsável por desencadear uma determinada ação, como por        exemplo, encaminhar todo pacote que entrar pela porta 1 para a porta 2.        Observa-se também na figura 2.1 que switches OpenFlow repassam os        pacotes que não possuem regras específicas de tratamento para o        controlador, que após receber o pacote, retornará para o switch um conjunto        de regras e ações para operar sobre pacotes semelhantes a este. Tabelas de        fluxo​ ​e​ ​ações​ ​serão​ ​discutidas​ ​com​ ​mais​ ​detalhes​ ​na​ ​seção​ ​2.3.3. 

2.2.1

​ ​Tabela​ ​de​ ​Fluxos

O principal componente dos switches OpenFlow são as tabelas de        fluxos. Em um switch pode existir várias tabelas de fluxo, na qual cada uma       

(32)

armazena várias entradas de fluxos. A quantidade de fluxos e tabelas        suportados​ ​por​ ​um​ ​switch​ ​dependerá​ ​da​ ​robustez​ ​do​ ​equipamento.  

Um switch OpenFlow precisa necessariamente possuir pelo menos        uma tabela de entrada de fluxos, na qual esta primeira tabela, será a        responsável por tratar, em um primeiro momento, todos os pacotes de        entrada no switch, enquanto que as demais tabelas somente serão acionadas        caso um dos fluxos desta primeira tabela direcione o pacote de entrada para        uma segunda tabela. As tabelas possuem identificadores representados por        números inteiros. A cada tabela é atribuído um número positivo, no qual a        tabela que possuir o número 0 como identificador será a que terá maior        prioridade internamente ao switch. Uma tabela somente poderá encaminhar        um pacote para outra tabela que possuir identificador numérico maior que o        seu próprio identificador. Vale ressaltar que é opcional para a tabela 0 o        redirecionamento de um pacote para uma outra tabela, pois um determinado        fluxo pode apresentar a instrução de enviar o pacote diretamente para uma        porta​ ​de​ ​saída. 

Quando acontece de não haver casamento entre um pacote e as        entradas de fluxo existentes em uma tabela, um fluxo pré-configurado para        tratar deste caso é então acionado. Este fenômeno é chamado de “table        miss”. O comportamento do fluxo que trata de um “table miss” depende do        modo em que foi configurado na tabela. Algumas das instruções atribuídas a        este fluxo envolvem descartar o pacote, encaminhar o pacote para outra        tabela de fluxos e repassar o pacote para o controlador. Neste último caso        será gerado um evento chamado Packet-in, que será detalhado mais adiante.        Caso não exista o fluxo que trate do “table miss”, por padrão o pacote será        descartado. 

Um fluxo de entrada em uma tabela é formado por sete campos:        Campo de regras, contadores, ações, campo de prioridade, campo para        tempo de esgotamento, campo de identificação dos fluxos, ou cookie, e por        fim, o campo flags. Para correto funcionamento dos fluxos, apenas os três        primeiros são essenciais. Apesar destes quatro últimos campos serem       

(33)

opcionais, ou seja, sua ausência não acarreta na inserção incorreta de um        fluxo, estes campos são de grande importância para o casamento,        gerenciamento e identificação dos fluxos e pacotes. Na figura 2.3 é possível        visualizar​ ​o​ ​formato​ ​de​ ​um​ ​fluxo​ ​OpenFlow. 

Figura​ ​2.3.​​ ​Campos​ ​de​ ​cabeçalho​ ​em​ ​um​ ​fluxo​ ​OpenFlow. 

Fonte:​ ​Próprio​ ​autor. 

Nesta figura é possível visualizar uma tabela de fluxos contendo N        fluxos inseridos, bem como alguns dos principais campos presentes em um        fluxo. Cada campo destes não necessariamente deve fazer parte de um fluxo,        pois​ ​cada​ ​fluxo​ ​pode​ ​fazer​ ​uso​ ​de​ ​um​ ​número​ ​variável​ ​de​ ​campos.  

O campo de contadores têm a função de calcular quantos pacotes        foram emparelhados com determinado fluxo, onde ao valor deste campo é        acrescido uma unidade para cada pacote que coincidir com um fluxo. Além        disso, os contadores podem ser utilizados para atuar não somente sobre os       

(34)

fluxos de dados, mas também sobre tabelas de fluxo, portas de um switch,        filas de entrada e saída, grupos e alguns outros. Com isto, é possível        contabilizar a quantidade de pacotes casados, número de entradas ativas,        em uma tabela, calcular a quantidade de pacotes transmitidos e recebidos,        quantidade de bytes enviados e recebidos. Estes dados podem ser utilizados        para a realização de cálculos mais sofisticados, que servirão de estudo para        o​ ​melhoramento​ ​contínuo​ ​da​ ​rede. 

O campo de prioridades define a ordem na qual os fluxos serão        analisados no momento da chegada de um pacote no switch. Números        inteiros positivos são atribuídos a este campo e quanto maior for seu valor        numérico, maior precedência este fluxo terá internamente ao switch. O        primeiro fluxo que casar com um determinado pacote será o utilizado para        tratamento, enquanto que fluxos que possuírem prioridade inferior a este,        não chegarão a ser analisados. O fluxo que trata do caso de “table miss”        possui prioridade 0, pois este fluxo somente deve ser acionado em último        caso. 

Os Temporizadores são utilizados para definir o período de vida de um        fluxo. Fluxos podem ser eliminados de uma tabela através do uso de três        maneiras diferentes: requisição realizada pelo controlador, tempo ocioso e        tempo máximo de vida. No primeiro caso, o controlador será o agente        responsável por eliminar um ou vários fluxos de uma tabela, isto pode        acontecer, por exemplo, quando uma máquina se desconecta da rede. A        segunda maneira, chamada de “​idle_timeout”, está relacionada ao tempo        ocioso de um fluxo. O switch registra o momento da chegada do último        pacote a um determinado fluxo e logo em seguida inicia a contagem, em        segundos, do seu tempo de inatividade. Caso este valor atinja um número        pré-definido, o fluxo é então removido do switch. O terceiro e último caso,        chamado de “​hard_timeout”, ocorre quando o tempo de vida máximo de um        fluxo, cronometrado desde sua criação, é atingido. Fluxos configurados com        “​hard_timeout​” são removidos independentemente de estarem sendo        utilizados ou não. Para evitar a remoção indesejada de um fluxo devido ao       

(35)

fator tempo, configura-se os valores do “​idle_timeout​” e do “​hard_timeout​”        para zero. Isto instrui o switch a não remover fluxos baseando-se pelo        tempo. Entretanto, ainda é possível remover fluxos através de mensagens de        remoção​ ​vindas​ ​diretamente​ ​do​ ​controlador​ ​para​ ​o​ ​switch.   

Cookies são valores definidos pelo controlador para filtrar fluxos de        entrada. A cada fluxo pode ser atribuído um cookie. Isto permite ao        controlador realizar modificações e remoções de fluxo usando apenas seus        identificadores,​ ​além​ ​de​ ​possibilitar​ ​a​ ​coleta​ ​de​ ​dados​ ​estatísticos.  

As flags são usadas para informar como os fluxos de entrada são        gerenciados, como por exemplo, a flag “​OFPFF_SEND_FLOW_REM”,       ​aciona  mensagens​ ​de​ ​remoção​ ​para​ ​um​ ​determinado​ ​fluxo​ ​de​ ​entrada. 

O campo ação engloba um conjunto de passos que devem ser        realizados, pelo switch, para completar o ciclo de processamento do pacote.        Alguns exemplos de ações são: encaminhar ou descartar pacotes, inserir ou        remover​ ​tags,​ ​como​ ​vlans​ ​e​ ​mpls,​ ​etc.  

2.2.2

​ ​Versões​ ​do​ ​Protocolo​ ​OpenFlow

No momento da escrita deste documento, o protocolo OpenFlow        encontra-se na versão 1.5.1, estando na iminência da liberação da versão        1.6. O OpenFlow vem continuamente evoluindo com o decorrer dos anos. A        cada versão, novas funcionalidades são integradas ao protocolo, o que        acarreta na necessidade da atualização de switches OpenFlow, pelos        fabricantes, para permitir o uso destas novas funcionalidades. Um switch        OpenFlow pode suportar diversas versões do OpenFlow que serão utilizadas        na negociação com o controlador. Por padrão, a versão OpenFlow que um        switch utilizará será a maior versão suportada tanto pelo controlador quanto        pelo switch em si. Caso haja falha na negociação da versão, a comunicação        não é estabelecida entre o controlador e o switch, ocasionando assim um        erro. Nas tabelas abaixo são apresentados as principais funcionalidades        adicionadas com o passar das versões OpenFlow. Não será detalhado neste        documento todas as funcionalidades acrescentadas, apenas algumas delas,       

(36)

pois estas informações podem ser encontradas facilmente na especificação        oficial​ ​do​ ​OpenFlow[1]. 

Tabela​ ​1.​​ ​Recursos​ ​extras​ ​na​ ​versão​ ​1.1 

Principais​ ​Recursos​ ​Adicionados​ ​na​ ​versão​ ​OpenFlow​ ​1.1   Múltiplas​ ​tabelas​ ​de​ ​Fluxo 

Tabelas​ ​de​ ​Grupo 

Suporte​ ​para​ ​tags​ ​MPLS​ ​e​ ​VLAN  Portas​ ​Virtuais 

 

A versão 1.1 do OpenFlow permitiu a elaboração mais detalhada do        processamento de pacotes, visto que esta nova versão possibilitou o uso de        múltiplas tabelas de fluxo, onde cada pacote poderia ser encaminhado para        uma outra tabela. Sendo assim, diversas instruções poderiam ser        empregadas sobre um mesmo pacote, onde cada instrução faria parte de        fluxos​ ​presentes​ ​em​ ​diferentes​ ​tabelas.  

As tabelas de grupo são formadas por ​action buckets​. Cada ​action              Bucket ​contém uma lista de ações a serem processadas. Quando um pacote        é direcionado para um determinado grupo, uma ou várias ​action buckets​, são            acionados e consequentemente cada uma das ações presentes nestes        buckets são processadas. A introdução desta nova funcionalidade permite,        como por exemplo, a implementação do mecanismo de multicast para        repasse dos pacotes, visto que um grupo poderia ser formado por diversas        ações na qual cada uma direcionasse um mesmo pacote para diferentes        portas de saída. Existem quatro tipos de grupos, cada um fornecendo uma        mecanismo diferente de execução dos ​action buckets​. Este quatro tipos de              grupos​ ​são​ ​apresentados​ ​a​ ​seguir. 

ALL​: Executa todas as action buckets pertencentes um determinado        grupo. O pacote ingressante é clonado para cada bucket. Este tipo de       

(37)

grupo é comumente usado para encaminhamento de pacotes multicast        ou​ ​broadcast.  

Indirect​: Apenas uma action bucket pode fazer parte do grupo, sendo        proibido​ ​a​ ​criação​ ​de​ ​outros​ ​buckets. 

Select​: O grupo pode conter diversos buckets, mas apenas um destes        será executado, onde a seleção do escolhido é feita através de        algoritmos externos ao OpenFlow, implementados pelo fabricante do        switch,​ ​como​ ​por​ ​exemplo,​ ​hash​ ​e​ ​round​ ​robin. 

Fast Failover​: Processa o primeiro bucket que encontra-se apto para        execução. Cada bucket contém um parâmetro especial que é associado        a uma porta e/ou grupo que monitora determinada porta. Se a porta        na qual o bucket encontra-se agregado não estiver ativa, este bucket        não é executado e assim sendo o bucket seguinte é verificado. Caso a        porta presente no bucket esteja levantada, este bucket será então        usado. Apenas um bucket pode ser executado no grupo, e este bucket        será​ ​executado​ ​até​ ​que​ ​a​ ​porta​ ​associada​ ​a​ ​ele​ ​encontre-se​ ​derrubada.  O acréscimo de tags VLAN e MPLS também foi introduzido nesta        versão. Instruções como inserção e remoção de tags a um cabeçalho        OpenFlow são reconhecidos por switches que suportem versões do protocolo        à​ ​partir​ ​da​ ​1.1. 

Embora o conceito de portas virtuais já existisse na versão 1.0 do        protocolo, o suporte a estas portas foi incrementado. As principais portas        virtuais​ ​reservadas​ ​para​ ​uso​ ​são: 

ALL​. Este é um mecanismo usado para enviar um pacote para todas        as portas presentes em um switch, com exceção da porta por onde o        pacote​ ​entrou. 

CONTROLLER​. Encaminha um pacote diretamente para o controlador        através de uma mensagem OpenFlow. Esta mensagem será tratada        como​ ​um​ ​evento​ ​de​ ​​Packet-In​​ ​no​ ​controlador. 

(38)

Tabela​ ​2.​​ ​Recursos​ ​extras​ ​na​ ​versão​ ​1.2 

Principais​ ​Recursos​ ​Adicionados​ ​na​ ​versão​ ​OpenFlow​ ​1.2  Extensão​ ​para​ ​casamento​ ​de​ ​padrões 

Extensão​ ​para​ ​reescrita​ ​de​ ​pacotes  Suporte​ ​ao​ ​IPv6 

Melhorias​ ​no​ ​Uso​ ​de​ ​Múltiplos​ ​Controladores   

Esta versão foi responsável por enriquecer o processo de casamento        dos pacotes, que se dá através do uso de um novo descritor chamado de       

OpenFlow Extensible Match    ​(OXM). Com o OXM é possível tratar vários novos        campos presentes no cabeçalho de um pacote que não eram tratáveis nas        versões anteriores. A nova lista de campos tratáveis é muito grande para ser        descrita neste documento, mas no geral qualquer campo utilizado para casar        com pacotes ethernet, como as VLANs, MPLS, IPV4 e IPv6 pode ser        facilmente​ ​manipulado​ ​e​ ​seus​ ​valores​ ​configurados​ ​com​ ​o​ ​uso​ ​do​ ​OXM. 

Nas versões anteriores, existia um suporte muito limitado para o uso        de múltiplos controladores. Quando um switch perdia conexão com um        controlador, este entrava em modo seguro de falhas ao invés de tentar        estabelecer conexão com um segundo controlador. Nesta versão é possível        que  um  switch estabeleça conexão com múltiplos controladores        simultaneamente, mas para que isto ocorra sem falhas, o switch deve        assegurar que apenas o controlador responsável por enviar um determinado        comando​ ​receba​ ​as​ ​mensagens​ ​desencadeadas​ ​pelo​ ​uso​ ​deste​ ​comando.   

 

     

(39)

Tabela​ ​3.​​ ​Recursos​ ​extras​ ​na​ ​versão​ ​1.3 

Principais​ ​Recursos​ ​Adicionados​ ​na​ ​versão​ ​OpenFlow​ ​1.3  Refatoramento​ ​da​ ​Negociação​ ​das​ ​Capacidades​ ​de​ ​um​ ​Switch  Suporte​ ​mais​ ​Flexível​ ​ao​ ​Table​ ​Miss  

Acréscimo​ ​de​ ​Campos​ ​Manipuláveis​ ​em​ ​um​ ​Cabeçalho​ ​IPv6  Métricas​ ​por​ ​Fluxo 

Suporte​ ​à​ ​Identificação​ ​de​ ​Fluxos​ ​via​ ​Cookies   

A refatoração da negociação teve como finalidade tornar mais flexível        as tabelas de um switch. Após este refatoramento, o switch que suportar a        versão 1.3 estará apto a utilizar métricas para medições, fluxos        especialmente criados para tratar pacotes que não foram emparelhados com        nenhum​ ​outro​ ​fluxo​ ​de​ ​uma​ ​tabela,​ ​ou​ ​​table​ ​miss​,​ ​entre​ ​outras. 

As métricas por fluxo são utilizadas para medir e controlar o fluxo de        pacotes que trafegam por uma determinada entrada da tabela. Uma das        suas principais aplicações está em limitar o tráfego que circula por um        determinado fluxo, onde pacotes serão descartados caso um determinado        valor,​ ​definido​ ​na​ ​configuração​ ​da​ ​métrica,​ ​seja​ ​atingido. 

O campo Cookie foi adicionado às mensagens de Packet-In com a        finalidade de facilitar na identificação do fluxo responsável por encaminhar        um​ ​determinado​ ​pacote​ ​para​ ​o​ ​controlador.  

           

(40)

Tabela​ ​4.​​ ​Recursos​ ​extras​ ​na​ ​versão​ ​1.4 

Principais​ ​Recursos​ ​Adicionados​ ​na​ ​versão​ ​OpenFlow​ ​1.4  Melhoramento​ ​na​ ​Descrição​ ​das​ ​Razões​ ​de​ ​um​ ​Packet-In 

Monitoramento​ ​de​ ​Fluxos 

Remoção​ ​Automática​ ​de​ ​Fluxos​ ​em​ ​Casos​ ​de​ ​Tabela​ ​Cheia  Sinalização​ ​de​ ​Avisos​ ​sobre​ ​Tabela​ ​Cheia   

Acréscimo​ ​de​ ​Novos​ ​Códigos​ ​de​ ​Erro   

Nas versões anteriores, o controlador recebia mensagens de Packet-In        vindas do switch, mas não havia descrição precisa sobre o motivo pelo qual o        pacote foi encaminhado para o controlador. Nesta versão, foi introduzido        quatro novos motivos para a geração de um Packet-In, além do caso de ​table        miss​. Alguns dos novos valores usados como argumento para um evento de        Packet-In​ ​são: 

​ ​​OFPR_TABLE_MISS​:​ ​Usado​ ​quando​ ​ocorre​ ​um​ ​​table​ ​miss​. 

OFPR_APPLY_ACTION​: Valor configurado quando uma determinada        ação determina o encaminhamento do pacote diretamente para o        controlador. 

OFPR_INVALID_TTL​: O evento é gerado devido a existência de um        TTL(Time​ ​to​ ​Live)​ ​inválido. 

OFPR_GROUP​: O pacote foi encaminhado para o controlador após ter        passado​ ​por​ ​um​ ​grupo​ ​de​ ​ações. 

Na versão 1.4 também foi introduzido o conceito de monitoramento de        fluxos. Esta nova habilidade permite o monitoramento, em tempo real, de        mudanças feitas por outros controladores a um conjunto de fluxos, que        foram definidos para monitoramento por um controlador. Quando qualquer        modificação ocorre em uma tabela ou conjunto de fluxos, o controlador que        encontra-se​ ​realizando​ ​o​ ​monitoramento​ ​é​ ​então​ ​informado. 

(41)

Todo switch é limitado a uma certa quantidade de entradas em uma        tabela de fluxos. Nas versões anteriores, quando este limite era atingido, o        switch ficava incapaz de incorporar novos fluxos, retornando assim um erro        para o controlador. Com esta versão 1.4, as tabelas de fluxo podem ser        configuradas, através do comando ​OFPTC_EVICTION​, para comportarem-se        de maneira diferente, eliminando fluxos com baixa prioridade para a        inclusão de novos fluxos. Além disso, a versão 1.4 também permite a        configuração das tabelas para geração de mensagens de aviso no momento        em​ ​que​ ​uma​ ​certa​ ​quantidade​ ​de​ ​fluxos​ ​for​ ​atingida. 

Tabela​ ​5.​​ ​Recursos​ ​extras​ ​na​ ​versão​ ​1.5 

Principais​ ​Recursos​ ​Adicionados​ ​na​ ​versão​ ​OpenFlow​ ​1.5  Tabelas​ ​de​ ​Saída 

Extensão​ ​das​ ​Estatísticas​ ​dos​ ​Fluxos​ ​de​ ​Entrada  Gatilho​ ​para​ ​Envio​ ​de​ ​Dados​ ​Estatísticos   

Comandos​ ​para​ ​Manipulação​ ​de​ ​Grupos     

Nas versões anteriores, o processamento dos pacotes ocorria no        contexto da porta de entrada. Com a introdução deste novo recurso, quando        um pacote for encaminhado para uma dada porta de saída, este irá ingressar        na primeira tabela de saída, e assim sendo, um novo processamento atuará        sobre o pacote. Uma tabela de saída pode redirecionar o pacote para outras        tabelas​ ​de​ ​saída,​ ​similarmente​ ​ao​ ​que​ ​ocorre​ ​às​ ​tabelas​ ​de​ ​entrada. 

A versão 1.5 introduziu novos parâmetros para o cálculo estatístico,        como por exemplo, a possibilidade de contabilizar o tempo ocioso dos fluxos,        bem como a quantidade de fluxos removidos em uma tabela. Consultas de        estatísticas consomem recursos e podem gerar sobrecarga nos switches.        Para tentar contornar isto, foi introduzido o conceito de acionamento        automático do envio de dados estatísticos direcionados para o controlador.       

(42)

Isto ocorre quando um ou mais limiares definidos pelo controlador são        alcançados. 

Nas versões anteriores a 1.5, as operações sobre os grupos alteravam o        conjunto inteiro de Buckets existentes internamente a um grupo. Com esta        versão, agora é possível inserir e remover Buckets específicos, ao invés de ter        que configurar toda vez um novo conjunto, que contivesse tanto Buckets        antigos quanto Buckets recém criados, para inserir ou remover        determinados Buckets. O comando OpenFlow usado para inserção de novos        Buckets é o ​OFPGC_INSERT_BUCKET enquanto que para remoção       

OFPGC_REMOVE_BUCKET​.  

2.2.3

​ ​Emparelhamento​ ​entre​ ​Pacotes​ ​e​ ​Fluxos​ ​de​ ​Entrada

A figura 2.4 mostra a sequência de execução que um switch realiza        sobre o pacote de entrada. Cada campo presente no pacote é analisado e        emparelhado com cada fluxo pertencente a primeira tabela de entrada. Como        descrito na figura 2.3, diversos campos podem ser utilizados para análise,        onde no momento em que um pacote casa com um fluxo, um conjunto de        ações podem atuar sobre este pacote, onde cada ação dessa poderá alterar        campos de cabeçalho do pacote e empurrar o pacote para uma porta de        saída, por exemplo. O conjunto de ações designados para um pacote deve ser        responsável por desencadear uma mensagem de saída, repassando este        pacote para alguma porta de saída, pois caso contrário, ao final da execução        de todas as ações, o pacote será simplesmente descartado. Na figura abaixo        é possível visualizar todo o caminho seguido por um pacote, desde a sua        entrada​ ​até​ ​a​ ​saída.   

 

   

   

(43)

Figura​ ​2.4.​​ ​Fluxograma​ ​do​ ​processamento​ ​de​ ​pacotes​ ​em​ ​switches​ ​OpenFlow. 

  Fonte:​ ​Próprio​ ​autor. 

Nesta imagem é possível notar a presença de três cores de setas        diferentes. As setas com cor azul representam o caminho percorrido por        pacotes provenientes de uma tabela de entrada, ou seja, o caminho       

Referências

Documentos relacionados

forficata recém-colhidas foram tratadas com escarificação mecânica, imersão em ácido sulfúrico concentrado durante 5 e 10 minutos, sementes armazenadas na geladeira (3 ± 1

The main objectives of this data analysis are divided into two classes: i) General Statistics: give an overview of structured information on Wikipedia as a whole, showing raw numbers

No primeiro, destacam-se as percepções que as cuidadoras possuem sobre o hospital psiquiátrico e os cuidados com seus familiares durante o internamento; no segundo, evidencia-se

Pretendo, a partir de agora, me focar detalhadamente nas Investigações Filosóficas e realizar uma leitura pormenorizada das §§65-88, com o fim de apresentar e

nesta nossa modesta obra O sonho e os sonhos analisa- mos o sono e sua importância para o corpo e sobretudo para a alma que, nas horas de repouso da matéria, liberta-se parcialmente

No entanto, maiores lucros com publicidade e um crescimento no uso da plataforma em smartphones e tablets não serão suficientes para o mercado se a maior rede social do mundo

Especificamente as questões levantadas buscam avaliar qual o contributo das espécies mais representativas da área amostral (Bolbochenous maritimus (L.) Palla,

A médio/longo prazo será notória a diminuição do número de avarias, devido ao natural ajustamento do plano de manutenções preventivas implementado, a melhoria