• Nenhum resultado encontrado

Alocação de redes virtuais e controladores em redes definidas por software: uma análise de custo, rede e dependabilidade

N/A
N/A
Protected

Academic year: 2021

Share "Alocação de redes virtuais e controladores em redes definidas por software: uma análise de custo, rede e dependabilidade"

Copied!
127
0
0

Texto

(1)

Pós-Graduação em Ciência da Computação

MARCELO ANDERSON BATISTA DOS SANTOS

ALOCAÇÃO DE REDES VIRTUAIS E CONTROLADORES EM

REDES DEFINIDAS POR SOFTWARE: UMA ANÁLISE DE

CUSTO, REDE E DEPENDABILIDADE

Universidade Federal de Pernambuco posgraduacao@cin.ufpe.br www.cin.ufpe.br/~posgraduacao

RECIFE 2017

(2)

Marcelo Anderson Batista Dos Santos

1. Alocação De Redes Virtuais E Controladores Em Redes Definidas Por Software: Uma Análise De Custo, Rede E Dependabilidade

ORIENTADOR: Prof. Stênio Flávio de Lacerda Fernandes

RECIFE 2017

Este trabalho foi apresentado à Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco como requisito parcial para obtenção do grau de Mestre Profissional em Ciência da Computação.

(3)

Catalogação na fonte

Bibliotecária Arabelly Ascoli CRB 4-2068

S237a Santos, Marcelo Anderson Batista dos

Alocação de redes virtuais e controladores em redes definidas por software: uma análise de custo, rede e dependabilidade / Marcelo Anderson Batista dos Santos – 2017.

126 f.: fig., tab.

Orientador: Stênio Flávio de Lacerda Fernandes

Tese (Doutorado) – Universidade Federal de Pernambuco. Cin. Ciência da Computação. Recife, 2017.

Inclui referências.

1. Redes de computadores. 2. Virtualização de redes. 3. Programação linear. I. Fernandes, Stênio Flávio de Lacerda (orientador) II. Título.

(4)
(5)

Agradecimentos

Início os agradecimentos citando meu orientador, Stênio Fernandes, que além de participar ativamente através de discussões e orientações para que essa tese fosse escrita, tornou-se um amigo que compartilhou os mais diversos tipos de conhecimentos durante essa jornada, sendo importante não apenas para a conclusão dessa tese, mas para que eu me tornasse alguém melhor.

Gostaria de agradecer à FACEPE (IBPG-1321-1.03/11) pelo incentivo à pesquisa durante a minha tese. Agradeço ao professor Nazim Agoulmine da Université d'Evry-Val d'Essonne pela troca de conhecimento em parceria com a CAPES através do programa STIC-AMSUD. Agradeço fortemente ao Dr. José Augusto Suruagy por todas as orientações para melhoria da tese.

Agradeço aos professores participantes da banca examinadora que dividiram comigo este momento tão importante: Dr. Divanilson Campelo, Dr. José Augusto Suruagy, Dr. Paulo Maciel, Dr. Luciano Gaspary e Dr. Neuman Souza.

Agradeço aos meus amigos pela paciência, discussões, momentos de descontração e apoio, especialmente André, Bosco, Renato, Saul, Nathalinha e Raquel. Agradeço a minha família que me deu o suporte necessário para que eu superasse diversas barreiras para chegar até aqui, especialmente minha Vó Maria, Tio Eli e Tia Célia. Agradeço também pelo carinho que sempre recebi de Ieda e Enir. Agradeço especialmente por perdoarem e compreenderem os momentos de ausência.

Por último e não menos importante, agradeço a minha esposa por estar ao meu lado todo esse tempo, pelos cuidados, amor e paciência. Sem vocês esse caminho certamente teria sido muito mais difícil.

(6)

"A coisa mais indispensável a um homem é reconhecer o uso que deve fazer do seu próprio conhecimento”.

(7)

Resumo

Devido ao rápido crescimento da Internet, em poucos anos, houve o aumento da complexidade da rede e diversos desafios surgiram para sua expansão. Como exemplo, pode-se citar o fenômeno conhecido como a ossificação da Internet. Em meio a esse cenário, a virtualização de redes (Network Virtualization - NV) surgiu como uma das principais formas para superar obstáculos e tornar a rede mais flexível e eficiente. Tecnologias de virtualização como Software Defined Network (SDN) e Network

Functions Virtualization (NFV) buscam, por exemplo, dar um maior poder de

gerenciamento à rede, aumentando o seu grau de adaptação à novas demandas. No entanto, mesmo com as inúmeras inovações trazidas por essas tecnologias de virtualização, é importante notar que embora haja um maior poder de manipulação da rede, faz-se necessário empregar técnicas eficientes de gerenciamento e alocação de recursos capazes de manter o sistema funcional e com desempenho satisfatório. Assim, como parte desse cenário, destacamos nessa tese três problemas relacionados a virtualização de redes: (1) alocação de máquinas virtuais; (2) alocação de controladores SDN e (3) questões de dependabilidade e otimização do uso dos recursos disponíveis. Desta forma, esta tese propõe uma heurística baseada na meta-heurística GRASP (Greedy Random Adaptive Search Procedure) para alocação de redes virtuais cujo objetivo é obter uma alocação com a maior disponibilidade possível considerando um conjunto de restrições para o correto funcionamento da rede. Além disso, contemplando os recentes desafios introduzidos por Redes Definidas por Software (SDN) é proposto um modelo através de Programação Linear Inteira para o problema de alocação de controladores SDN. Considera-se controladores com diferentes capacidades e custos onde a função objetivo deste modelo busca uma solução de cobertura da rede de forma que o custo total da implantação de controladores SDN seja minimizado. Adicionalmente busca-se identificar quais características de uma rede de backbone tem influência no custo final de alocação destes controladores SDN. Por fim, de forma complementar, são desenvolvidos e validados algoritmos para realizar: (1) Balanceamento de carga entre controladores SDN; (2) Criação de caminhos entre Switches e Controladores; (3) Reposicionamento de controladores SDN de forma a minimizar o número de desconexões em caso de falha de enlaces.

Palavras-chave: Virtualização de redes. Redes Definidas por Software (SDN). Dependabilidade.

(8)

Abstract

The number of Internet users has grown dramatically in the last years. Consequently, the complexity of the Internet has increased and several challenges have arisen because of its expansion. As an example, the phenomenon known as ossification of the Internet architecture makes harder to create new solutions in the network layer. One of the key ways to overcome barriers and make networks more flexible and efficient is Network Virtualization (NV). In this context, virtualization technologies such as Software Defined Network (SDN) and Network Functions Virtualization (NFV) allow better network management and greater capability to handle different demands. However, even with the several innovations brought by these virtualization technologies, it is important to note that it is necessary to apply efficient management techniques. In addition to that, there is a need to allocate resources to keep the system functional and performing satisfactorily. Thus, there are three problems related to network virtualization: (1) allocation of virtual machines; (2) allocation of SDN controllers and (3) issues of dependability and optimization of resources. This work proposes an algorithm based on GRASP (Greedy Random Adaptive Search Procedure) metaheuristic algorithm for the allocation of virtual networks whose objective is to obtain an allocation with the highest possible availability considering a set of constraints for the correct functioning of the network. Also, considering the recent challenges introduced by Software Defined Networks (SDN), a model was proposed based on Integer Linear Programming (ILP) for the SDN Controller Placement Problem. The objective of the proposed model is to minimize the deployment cost while taking into account several constraints and investigating features of real network topologies that affect the SDN controller placement cost. Finally, in a complementary way, algorithms are developed and validated to perform the following: (1) Load balancing between SDN controllers; (2) Path creation between switches and controllers; (3) Repositioning SDN controllers in order to minimize the number of disconnections in the event of a link failure.

Keywords: Network Virtualization. Software Defined Network (SDN). Dependability. GRASP.

(9)

Lista de Figuras

Figura 2.1. Taxionomia sobre Dependabilidade ... 23

Figura 2.2. Ameaças: Falha, erro e defeito ... 24

Figura 2.3. Técnicas de tolerância a falha (AVIZIENIS et al., 2004) ... 28

Figura 2.4. Topologia em serial (OGGERINO, 2001) ... 32

Figura 2.5. Topologia com enlaces em paralelo (OGGERINO, 2001)... 32

Figura 2.6. Ambiente de uma rede virtualizada (CHOWDHURY; BOUTABA, 2009) ... 34

Figura 2.7. Elementos básicos de uma rede virtualizada (CARAPINHA; JIMÉNEZ, 2009) ... 36

Figura 2.8 - Arquitetura ONF/SDN (ONF, 2014) ... 39

Figura 3.1. Alocação de uma rede virtual ... 45

Figura 3.2. Função Principal ... 48

Figura 3.3. Função allocate_request ... 49

Figura 3.4. Função allocate_nodes ... 50

Figura 3.5. Modelo RBD ... 52

Figura 3.6. Taxa de aceitação das requisições virtuais ... 54

Figura 3.7. Disponibilidade das redes virtuais alocadas ... 55

Figura 3.8. Taxa de aceitação das requisições virtuais ... 57

Figura 3.9. Taxa de aceitação das requisições virtuais ... 58

Figura 3.10. Disponibilidade das requisições virtuais aceitas ... 59

Figura 3.11. Tempo de execução médio de uma instância ... 59

Figura 4.1. Alocação de um único controlador... 67

Figura 4.2. Topologia com múltiplos controladores SDN ... 70

Figura 4.3. Exemplo da restrição de atraso entre controladores e switches ... 74

Figura 4.4. Exemplo de restrição de atraso entre os controladores ... 75

Figura 4.5. Processo de geração da solução ... 76

Figura 4.6. Histograma do tamanho das topologias analisadas ... 77

Figura 4.7. Histograma sobre o atraso médio dos enlaces de cada topologia ... 78

Figura 4.8. Média da quantidade de controladores e média do custo de alocação ... 79

Figura 4.9. Proporção de controladores alocados por capacidade ... 80

Figura 4.10. Gráfico de correlação entre custo e atraso médio dos enlaces... 81

Figura 4.11. Gráfico de correlação entre custo e tamanho da topologia ... 82

(10)

Figura 4.13. Quantidade de Controladores alocados ... 84

Figura 4.14. Número de soluções não encontradas considerando controladores heterogêneos ... 85

Figura 5.1. Caminhos de controle entre switches e controlador ... 89

Figura 5.2. Cenário com falha em um enlace físico interrompendo a conexão entre switch e controle ... 90

Figura 5.3. Criação de caminhos de controle parcialmente disjuntos ... 90

Figura 5.4. Cenário com falha em um enlace físico interrompendo a conexão entre switch e controle ... 91

Figura 5.5. Reposicionamento do Controlador SDN e falha de um enlace ... 91

Figura 5.6. Exemplo de mapeamento de controladores SDN e seu respectivo domínio ... 95

Figura 5.7. Posições em que não é permitida a alocação de controladores devido a restrição de atraso entre switch e controlador ... 96

Figura 5.8. Combinações possíveis de alocação para os dois controles da rede ... 96

Figura 5.9. Busca em profundidade em grafos ... 98

Figura 5.10. Alocação de caminhos de controle utilizando o menor caminho ... 101

Figura 5.11. Avaliação da Rede Nacional de Pesquisa: Realocação dos controladores ... 104

Figura 5.12. Avaliação da Rede Pern: Realocação dos controladores ... 105

Figura 5.13. Avaliação da Rede Cogent: Realocação dos controladores ... 105

Figura 5.14. Avaliação da RNP: Balanceamento de Carga ... 106

Figura 5.15. Avaliação da rede Pern: Balanceamento de Carga ... 107

Figura 5.16. Avaliação da rede Cogent: Balanceamento de Carga ... 108

Figura 5.17. Comparação dos algoritmos de reposicionamento, balanceamento e criação de fluxos (RNP) ... 109

Figura 5.18. Comparação dos algoritmos de reposicionamento, balanceamento e criação de fluxos (Rede Pern) ... 109

Figura 5.19. Comparação dos algoritmos de reposicionamento, balanceamento e criação de fluxos (Rede Cogent) ... 110

(11)

Lista de Tabelas

Tabela 2.1. Atributos de Dependabilidade que são ou não mensuráveis ... 27

Tabela 2.2. Tempo de operação de acordo com a disponibilidade ... 31

Tabela 3.1. MTTF e MTTR dos componentes da rede ... 52

Tabela 3.2. Fatores, níveis e parâmetros ... 53

Tabela 3.3. Descrição das métricas coletadas ... 53

Tabela 3.4. Média da utilização de nós e enlaces (estresse)... 56

Tabela 3.5. Disponibilidade das redes virtuais alocadas ... 57

Tabela 3.6. Média da utilização de nós e enlaces (estresse)... 58

Tabela 4.1. Fatores e Níveis ... 74

Tabela 4.2. Parâmetros ... 75

Tabela 4.3. Correlação entre custo e atraso médio dos enlaces ... 80

Tabela 4.4. Correlação entre custo e tamanho da topologia... 83

Tabela 5.1. Características das topologias analisadas ... 102

Tabela 5.2. Métricas coletadas após os experimentos ... 102

Tabela 5.3. Algoritmos executados ... 103

Tabela 5.4. Atraso médio dos caminhos de controle e quantidade média enlaces utilizados ... 106

(12)

Abreviações e Acrônimos

ARH Adaptive Random Heuristic

ARH-PC Adaptive Random Heuristic – Physic Constraint CAPEX CAPitalEXpenditure

D-ViNE-SP Deterministic Node Mapping with Shortest Path ForCES Forwarding and Control Element Separation G-SP Greedy Node Mapping with Shortest Path

GRASP Greedy Randomized Adaptive Search Procedure MILP Mixed Integer Linear Programming

MPLS Multi-Protocol Label Switching MTTF Mean Time to Failure

MTTR Mean Time to Repair

NAT Network address translation NFV Network Functions Virtualization NV Network Virtualization

ONF Open Networking Foundation OPEX OPerationalEXpenditure RBD Reliability Block Diagram RTT Round Trip Time

SDN Software Defined Network SLA Service Level Agreement SPN Stochastic Petri Net VLAN Virtual LAN

VM Virtual Machine

VNO Virtual Network Operator

VNMP Virtual Network Mapping Problem VNP Virtual Network Providers

(13)

Sumário

1 INTRODUÇÃO ... 15

1.1 Motivação e Caracterização do Problema ... 17

1.2 Objetivos Gerais ... 18 1.3 Objetivos Específicos ... 18 1.4 Contribuções da Tese ... 19 1.5 Organização da Tese ... 19 2 REFERENCIAL TEÓRICO ... 21 2.1 Dependabilidade ... 21

2.1.1 Ameaças: O Conceito de Falha, Erro e Defeito ... 24

2.1.2 Atributos de Dependabilidade ... 25

2.1.2.1 Meios de Alcançar a Dependabilidade ... 27

2.1.2.2 Modelos Para Calcular ou Estimar Atributos de Dependabilidade ... 29

2.1.2.3 Por Que Disponibilidade é Importante e como Calculá-La... 30

2.2 Virtualização de Rede (Network Virtualization - NV) ... 33

2.2.1 Componentes Básicos e Terminologia ... 35

2.2.2 Requisitos e Desafios em uma Rede Virtualizada ... 36

2.3 Redes Definidas por Software (SDN) ... 37

3 UMA HEURÍSTICA PARA ALOCAÇÃO DE REDES VIRTUAIS ....A....CONSIDERANDO ATRIBUTOS DE DEPENDABILIDADE ... 41

3.1 Trabalhos Relacionados ... 42 3.2 VNMP e Modelagem do Problema ... 44 3.3 Heurística ... 46 3.3.1 Funcionamento Básico ... 46 3.3.2 ARH: Pseudocódigo ... 47 3.4 Metodologia ... 50 3.4.1 Estratégias de Mapeamento ... 50 3.4.2 Modelo RBD e Disponibilidade ... 51

3.4.3 Fatores, Parâmetros e Níveis ... 52

3.5 Resultados ... 54

3.5.1 Cenário 1: Variação do Tamanho Da Topologia Física ... 54

3.5.2 Cenário 2: Variação do Tamanho Da Rede Virtual ... 57

(14)

3.5.4 Tempo de Execução ... 59

3.6 Discussão ... 60

3.7 Considerações Finais ... 60

4 PROBLEMA DE ALOCAÇÃO DE CONTROLADORES EM UMA REDE SDN . 62 4.1 Introdução ... 62

4.2 Trabalhos Relacionados ... 64

4.3 SDN: Problema de Alocação de Controladores ... 67

4.3.1 Controlador SDN ... 68

4.3.2 Quanto Custa um Controlador SDN? ... 69

4.4 Modelo Analítico e Heurística de Balanceamento de Carga ... 70

4.4.1 Parâmetros e Constantes ... 71 4.4.2 Variáveis de Decisão ... 71 4.4.3 Função Objetivo: ... 71 4.4.4 Restrições Condicionais ... 72 4.5 Metodologia ... 72 4.6 Avaliação e Discussão ... 77

4.6.1 Uma Visão Sobre a Base de Dados do Topology-Zoo ... 77

4.6.2 Como a Restrição entre Switches e Controladores afeta o Custo de Alocação? 78 4.6.3 Qual é a Correlação Entre o Atraso Médio dos Enlaces e o Custo? ... 80

4.6.4 Qual A Correlação Entre o Tamanho das Topologias e o Custo? ... 81

4.6.5 Considerar que Controladores SDN têm sempre a mesma Capacidade tem aaaaa.algum Efeito no Custo? ... 83

4.6.6 A Restrição de Atraso Afeta o Número de Controladores SDN? ... 84

4.7 Considerações Finais ... 86

5 ANÁLISE DA RESILIÊNCIA DA REDE NO PROBLEMA DE ALOCAÇÃO DE AA...CONTROLADORES SDN ... 87

5.1 Introdução ... 88

5.2 Perda de Conectividade em Redes SDN ... 89

5.3 Trabalhos Relacionados ... 92

5.4 Estratégia para Reposicionamento de Controladores SDN ... 94

5.5 Balanceamento de Carga entre Controladores SDN ... 99

5.6 O Problema de Fluxo Máximo e o Algoritmo Edmonds Karp ... 100

5.7 Metodologia ... 101

5.8 Resultados e Discussão... 103

(15)

5.8.2 Balanceamento de Carga de Switches ... 106

5.8.3 Algoritmo de Fluxo Máximo para Criação de Caminhos de Controle ... 108

5.9 Considerações Finais ... 110

6 CONCLUSÕES ... 112

6.1 Publicações Científicas ... 114

6.2 Ameaças à Validação do Trabalho e Limitações ... 118

6.3 Trabalhos Futuros ... 119

(16)

1

1.

INTRODUÇÃO

Com mais de 3 bilhões de usuários1, pode-se afirmar que a Internet tem crescido

de forma assustadora e se tornado um inegável sucesso. No entanto, a sua infraestrutura tornou-se bastante complexa incorporando um grande número de dispositivos (e.g., roteadores, balanceadores de carga, switches, firewalls, NATs, DPI), tecnologias, protocolos além de sistemas de computação em nuvem, provedores de serviços, provedores de infraestrutura e diversos tipos de usuários com diferentes requisitos. Essa enorme heterogeneidade implica em uma maior dificuldade de gerenciamento de recursos de forma eficiente e consequentemente torna mais difícil aplicar mudanças em infraestruturas como a Internet, provocando fenômenos conhecidos como a ossificação da Internet (TURNER; TAYLOR, 2005).

Nesse contexto, operadores de rede precisam superar barreiras em relação à complexidade da rede e suas limitações para oferecer uma melhor qualidade de serviços para seus usuários finais. A fim de conseguir este objetivo, operadores de redes tentam utilizar os recursos disponíveis da melhor forma possível, aplicando técnicas de monitoramento e gerenciamento adequadas que buscam:

• Minimizar gargalos na rede

• Suportar um maior número de clientes

• Respeitar acordos de nível de serviço (SLAs) • Diminuir a quantidades de defeitos na rede

• Reduzir custos operacionais (OPEX) e custos de capital (CAPEX) ao mesmo tempo em que tentam melhorar o desempenho dos equipamentos que constituem a rede

(17)

Virtualização é a capacidade de criar uma abstração de alto-nível de uma plataforma de hardware, servidor, serviço ou até mesmo dispositivos de armazenamento de uma forma fracamente acoplada ao hardware subjacente através de camadas adicionais de software. Nesse contexto, tecnologias de virtualização de recursos de rede têm recebido grande atenção da indústria e da comunidade acadêmica nos últimos anos como solução para grande parte dos problemas de rede enfrentados atualmente. Tal abordagem permite uma maior dissociação do hardware subjacente, criando redes lógicas que se integram facilmente e permitem um maior poder de programabilidade da rede. Assim, as instâncias virtuais criadas operam exatamente como soluções tradicionais de hardware, mas com maior portabilidade, escalabilidade e reduzindo custos quando comparadas às soluções tradicionais. Obviamente que uma infraestrutura de hardware é necessária para acomodar tais instâncias virtuais, mas um único hardware pode suportar múltiplas instâncias virtuais, sendo possível a utilização de um hardware de propósito geral ao invés de um hardware dedicado a um único serviço numa arquitetura totalmente fechada.

Quando discutimos virtualização em redes de computadores é comum citarmos a habilidade de virtualizar enlaces, funções de rede e criar máquinas virtuais e serviços na nuvem. Como exemplos mais recentes nesse sentido podemos citar tendências como

Software Defined Networking (SDN) (MCKEOWN et al., 2008a)(Feamster, Rexford e

Zegura, 2014; Kreutz et al., 2015) e Networking Functions Virtualization (NFV) (CUI et al., 2012; HAN et al., 2014) que surgem como novos paradigmas para enfrentar desafios antigos criando uma plataforma de rede altamente programável.

É importante salientar mais uma vez que essas abordagens permitem gerenciar recursos de rede de uma forma totalmente diferente de redes tradicionais. Usualmente operadores de rede gerenciam diversos dispositivos através de comandos específicos de baixo nível em equipamentos integrados verticalmente e com arquiteturas proprietárias. Através da virtualização de recursos o operador de rede tem a capacidade de gerenciar recursos de forma mais flexível para atingir objetivos específicos (e.g., eficiência energética, minimizar o número de falhas ou distribuir a carga uniformemente na rede). Com Redes Definidas por Software, por exemplo, cria-se uma camada programável de software sobre a rede, onde está pode ser vista como um sistema operacional da rede, facilitando o gerenciamento e criando um novo paradigma em redes de computadores.

Assim, sob esta perspectiva, é essencial ter algoritmos e estratégias que coordenam o uso de recursos disponíveis com novas tecnologias que proporcionam

(18)

novas formas de gerenciamento satisfazendo requisitos tanto dos usuários finais quanto dos provedores de infraestrutura e provedores de serviço.

1.1

Motivação e Caracterização do Problema

Há um consenso na comunidade acadêmica que a Internet precisa rever seus mecanismos de funcionamento a fim de superar obstáculos para alcançar uma melhor qualidade de serviço e adaptar-se à demanda crescente de usuários. O termo Internet do Futuro (PAN; PAUL; JAIN, 2011) vem sendo utilizado para englobar arquiteturas e tecnologias que darão suporte a essa evolução. Nesse sentido, virtualização de redes tem se destacado como umas das tecnologias que permitirá encontrar soluções eficazes para o melhor crescimento da rede.

É importante notar que embora haja um maior poder de manipulação da rede com a utilização de tecnologias de virtualização, consequentemente se faz necessário empregar técnicas eficientes de gerenciamento e alocação de recursos capazes de manter o sistema em equilíbrio, funcional e com um desempenho adequado. Embora a alocação eficiente de recursos seja um tópico que tem sido tratado em muitas áreas da computação, este é um problema complexo ainda em aberto em redes de computadores. Como exemplo, em um cenário de computação em nuvem (que se baseia fortemente em tecnologias de virtualização) é possível solicitar recursos que vão desde atributos de rede como atraso e largura de banda até atributos específicos de uma máquina virtual como CPU e memória RAM. Nesse cenário, satisfazer requisitos tanto do cliente e provedor de serviço, otimizando custos, realizando balanceamento de recursos ou minimizando o atraso entre nós cria um problema computacionalmente difícil de ser resolvido. Considerando ainda o surgimento de tecnologias mais recentes de virtualização como SDN e NFV, temos uma maior flexibilidade e liberdade de escolha de como utilizar determinados recursos na rede, ao mesmo tempo em que novos atributos e estratégias se fazem necessários em busca da otimização de um determinado objetivo.

Ainda que a alocação e gerenciamento eficiente dos recursos de rede seja uma questão fundamental a ser abordada, há outro ponto importante a ser discutido, originado pelo seguinte questionamento: quais são os riscos associados a uma infraestrutura de rede virtualizada? É normal que os riscos sejam inerentes às infraestruturas físicas utilizadas (nós e enlaces), uma vez que os componentes de rede física subjacente são propensos a falhas, consequentemente há de se levar em consideração o mesmo problema em infraestruturas virtualizadas que executam sobre uma infraestrutura física.

(19)

O mercado é cada vez mais competitivo e dependente da Internet, a oferta de serviços e infraestruturas altamente disponíveis são características indispensáveis a serem consideradas. Diversos trabalhos que tratam da alocação de recursos em ambientes de redes virtuais têm negligenciado aspectos de dependabilidade (NAPIERALA, 2014). Assim, analisar conceitos de dependabilidade aplicados a tecnologias de virtualização é importante devido também a inserção de novos componentes, novas camadas de software e uma nova forma de estruturação da rede.

Por fim, como mostrado em outros trabalhos (CHOWDHURY; BOUTABA, 2009)(ESTEVES; GRANVILLE; BOUTABA, 2013)(NAPIERALA, 2014), a forma como definimos o problema de mapeamento de recursos, os requisitos e atributos envolvidos nos remete facilmente a um problema NP-difícil que, consequentemente, demanda um alto custo computacional que dificulta a busca de uma solução ótima. Investigar e propor soluções eficientes é um dos desafios a serem abordados nesta tese. Dessa forma, temos à intenção também de propor algoritmos e estratégias de gerenciamento que considerem questões relacionadas a dependabilidade no contexto de redes de computadores com ênfase em tecnologias de virtualização.

1.2

Objetivos Gerais

Nesta tese, abordaremos os desafios em ambientes de redes virtuais, investigando problemas de otimização considerando atributos de dependabilidade, propondo heurísticas para alocação de recursos em ambientes heterogêneos. Assim, considerando que a avaliação de desempenho e a criação algoritmos de alocação de recursos em redes virtualizadas são pontos importantes para a aplicação efetiva de soluções eficientes no cenário atual de redes de computadores, esta tese de doutorado busca propor soluções para dois problemas: (1) O problema de alocação de máquinas virtuais; e (2) O problema de alocação de controladores SDN. Ambas estratégias desenvolvidas consideram algum atributo de dependabilidade durante a criação de uma solução.

1.3

Objetivos específicos

Os objetivos específicos são destacados abaixo:

1- Alocar redes virtuais a fim de encontrar uma solução que maximize a dependabilidade de uma requisição de uma infraestrutura virtual.

(20)

2- Alocar um conjunto de controladores SDN com um custo mínimo em redes de larga escala;

3- Quando não for possível aplicar estratégias que encontrem soluções ótimas para o problema de alocação em questão, desenvolver heurísticas que encontrem uma solução viável computacionalmente;

4- Incorporar atributos de dependabilidade nas estratégias de mapeamento de recursos implementadas;

5- Mensurar e identificar características que possuem impacto no processo de alocação dos recursos virtualizados considerando topologias reais;

6- Validar os modelos e algoritmos desenvolvidos através da comparação e análise dos resultados obtidos com outras estratégias, apontando também as limitações das estratégias adotadas.

1.4

Contribuções da tese

As principais contribuições do trabalho podem ser elencadas como:

1- Adaptação da meta-heurística GRASP (Greedy Randomized Adaptive Search

Procedure) para o problema de alocação de requisições de infraestruturas

virtuais (nós e enlaces) maximizando sua disponibilidade;

2- Criação de um modelo baseado em programação linear inteira para encontrar o custo mínimo de recobrimento de uma rede por controladores SDN definindo seus respectivos switches, posicionamento e capacidade;

3- Identificação das características da rede que influenciam no custo de alocação de controladores SDN considerando topologias reais de redes de backbone; 4- Implementação de três heurísticas para minimizar o número de caminhos de

controle afetados em caso de falha de um enlace em redes SDN.

1.5

Organização da Tese

Inicialmente estudou-se o problema de alocação de requisições de máquinas virtuais (VMs) analisando aspectos de dependabilidade durante o processo de alocação. Como a evolução das tecnologias e paradigmas na área de virtualização, o foco da tese migrou para o estudo de Redes Definidas por Software (SDN). Dessa forma, adicionalmente aos algoritmos para alocação de requisições virtuais, foram propostos algoritmos para o problema de alocação de controladores SDN.

(21)

• Capítulo 2 – Apresenta o referencial teórico dando o embasamento necessário para o entendimento da tese ressaltando conceitos ligados a Disponibilidade, Virtualização de Redes e Software Defined Network (SDN).

• Capítulo 3 – Apresenta uma heurística para alocação de redes virtualizadas considerando a disponibilidade da rede e atributos como capacidade de CPU e enlace. Essa heurística é derivada da meta-heurística GRASP (Greedy

Randomized Adaptive Search Procedures).

• Capítulo 4 – Apresenta uma modelagem analítica e o uso de programação linear sobre o problema de alocação de controladores em uma rede SDN buscando minimizar o custo total para cobrir uma determinada rede.

• Capítulo 5 – Apresenta três heurísticas para que buscam juntas minimizar o número de caminhos de controle afetados em caso de falha de um enlace em redes SDN.

(22)

2

2.

REFERENCIAL TEÓRICO

Este capítulo visa dar o embasamento teórico básico para o entendimento das questões discutidas nos capítulos seguintes. Serão abordados conceitos sobre

Dependabilidade, Virtualização de redes (Network Virtualization - NV) e Redes Definidas por Software (Software Defined Network - SDN).

2.1

Dependabilidade

Em redes de computadores e em outras áreas da computação, a falha é algo praticamente inevitável. No entanto, é possível definir métricas, estratégias e a utilização de técnicas que possibilitam administrar ou evitar o colapso geral de um sistema. No entanto, a junção de diversas tecnologias, hardwares de diferentes fabricantes e camadas de softwares juntamente com o fator humano criam um cenário complexo propenso a falhas. Consequentemente, utilizar mecanismos para analisar o estado da rede, melhorar seu desempenho e manter o sistema operacional torna-se um desafio. Considerando o cenário de redes de computadores e dependabilidade de sistemas nos últimos anos, diversas terminologias surgiram em diversas áreas e em diferentes épocas, sendo necessário esclarecer a terminologia utilizada nesta tese. Dessa forma, essa subseção tem o objetivo de realizar uma breve distinção entre dependabilidade e outras terminologias similares, bem como fornecer uma definição inicial sobre dependabilidade.

Na década de 50 era comum ter componentes de hardware com baixa confiabilidade devido ao desenvolvimento tecnológico da época. Dessa forma, foi necessário desenvolver maneiras de contornar a baixa confiabilidade dos componentes disponíveis para que a confiabilidade do sistema fosse aumentada aplicando técnicas como o código de controle de erro, diagnóstico de falha e redundância de componentes. Uma primeira visão formal sobre aspectos de falha surgiu com a teoria proposta

(23)

incialmente por W. H. Pierce como o conceito de tolerância a falhas em 1965 e estendida por A. Avizienis em 1967.

A formação do IEEE Computer Society TC on Fault-Tolerant Computing2 em 1970 e do IFIP WG 10.4 Dependable Computing and Fault Tolerance3 em 1980 foram marcos importantes para consolidar um conjunto consistente de conceitos e terminologias (AVIZIENIS; LAPRIE; RANDELL, 2001) na área de dependabilidade. Na década de 80 iniciou-se ainda uma discussão sobre ameaças e segurança do sistema bem como a inserção de novas métricas que permitem mensurar possíveis falhas em um sistema considerando também o desempenho do sistema. Surgiu então a utilização de termos idênticos em diferente grupos acadêmicos, mas com significados diferentes ou termos diferentes designando um mesmo conceito (WEBER, 2002). O conceito de

dependabilidade vem se consolidando e se tornando mais popular em diversas áreas.

Aos poucos, o termo dependabilidade vem substituindo tolerância a falhas, como exemplo podemos citar que no ano 2000, o Fault Tolerant Computing Symposium (FTCS) foi rebatizado para Dependable Systems and Networks (DSN).

Devido à expansão dos serviços de rede oferecido juntamente com o grande crescimento de usuários na Internet, dependabilidade tem se tornado um importante fator de interesse durante a implantação e operação de serviços (MACIEL et al., 2012).

Embora não haja uma definição aceita universalmente para dependabilidade, o termo tem sido aceito na comunidade acadêmica, de maneira simplificada, como a capacidade de fornecer um conjunto de serviços de forma justificadamente confiável (AVIZIENIS; LAPRIE; RANDELL, 2001).

Um defeito é um evento que ocorre quando o serviço fornecido apresenta uma resposta inesperada que representa um desvio do funcionamento correto. O funcionamento incorreto de um serviço é denominado de interrupção e a transição deste estado para um estado de funcionamento correto é chamado de restauração do

serviço. Assim, uma definição alternativa para o conceito de dependabilidade, o qual

complementa a definição anterior, considera que um serviço confiável é aquele que possui a capacidade de evitar falhas que são frequentes ou severas sem interrupções inaceitáveis para um usuário (LAPRIE, 1992).

De maneira geral, dependabilidade, tolerância a falhas, confiabilidade e a capacidade de sobrevivência de um sistema (survivability) possuem diversas

2

https://www.ieee.org/membership-catalog/productdetail/showProductDetailPage.html?product=CMYFT713

(24)

características em comum. Tais conceitos não são disjuntos ou idênticos, mas compartilham significados e terminologias em comum. Uma discussão mais aprofundada sobre a taxonomia de cada conceito pode ser encontrada em (AL-KUWAITI; KYRIAKOPOULOS; HUSSEIN, 2009).

É comum observar, por exemplo, certa confusão em distinguir a diferença entre certos termos como dependabilidade e confiabilidade. O conceito de confiabilidade pode ser definido precisamente de forma matemática, por outro lado, segundo (AVIZIENIS; LAPRIE; RANDELL, 2001), o conceito de dependabilidade é genérico e pode ser agrupado através de uma estrutura guarda-chuva (Figura 2.1) (TRIVEDI et al., 2009).

Figura 2.1. Taxonomia sobre Dependabilidade

Em resumo, como visto na Figura 2.1, pode-se definir o conceito de dependabilidade em uma espécie de conceito guarda-chuva agrupado em três categorias: (1) Ameaças (Threats); (2) Atributos (Attributes); e (3) Meio para alcançar disponibilidade (Means). Nesse contexto, dependabilidade não pode ser definida como

(25)

apenas uma propriedade mensurável, mas uma coleção de métricas relacionadas. Vale ressaltar ainda que alguns de seus atributos são quantitativos (e.g., disponibilidade e confiabilidade) e outros qualitativos (e.g., segurança) (AL-KUWAITI; KYRIAKOPOULOS; HUSSEIN, 2009).

2.1.1 Ameaças: O conceito de falha, erro e defeito

Uma falha (fault) é definida como uma alteração do comportamento padrão de um componente do sistema no âmbito físico (hardware). Um estado errôneo ou erro (error) pode ser identificado quando o processamento posterior a esse estado pode ocasionar um defeito (failure). Um defeito é um desvio da especificação do funcionamento do sistema. Ou seja, um defeito ocorre quando um erro alcança uma interface do sistema provocando um desvio na especificação de funcionamento do serviço (Figura 2.2). Falhas são inevitáveis. Os componentes físicos de um sistema se deterioram, sofrem com interferências externas e com problemas oriundos de sua alta complexidade. No entanto, é possível minimizar a quantidade de defeitos, mesmo na ocorrência de falhas.

Figura 2.2. Ameaças: Falha, erro e defeito

Como exemplo, em um chip de memória pode ocorrer uma falha que ocasiona uma alteração de um determinado bit. Como resultado, a interpretação desse bit pode provocar um erro no universo da informação armazenado em uma estrutura de dados. Consequentemente, um usuário poderá identificar um defeito devido à detecção de um desvio do funcionamento esperado do sistema (WEBER, 2002). No entanto, é importante destacar que um erro não leva necessariamente a um defeito. Um bit errado poderia alterar a hora em que um bilhete aéreo foi cancelado, mas o usuário poderia ainda solicitar o reembolso sem pagar taxas adicionais sem de fato detectar um defeito no sistema.

(26)

2.1.2 Atributos de Dependabilidade

O conceito de Dependabilidade, como dito anteriormente, é baseado em um conjunto de atributos que podem variar pouco dependendo do autor que o define. Neste trabalho utilizamos as definições de atributos de acordo com Trivedi et al., 2009. Pode-se afirmar que a análiPode-se da dependabilidade de um sistema é baPode-seada nos atributos que foram mensurados. Dentre os principais atributos podemos destacar:

• Confiabilidade: É a probabilidade de um sistema desempenhar sua função dentro de condições específicas em um período de tempo em estado operacional. Pode-se então definir a confiabilidade através de uma função de confiabilidade 𝑅(𝑡) que representa a probabilidade de um sistema atuar de acordo com suas regras de operação no intervalo de a 0 a t, conforme a equação 2.1.

𝑅(𝑡) = 𝑃(𝑇 > 𝑡), 𝑡 ≥ 0 (2.1)

É importante destacar alguns conceitos importantes mencionados anteriormente (WEBER, 2002):

o Função especificada: A especificação de um sistema é importante para determinar se o sistema está operando conforme sua especificação. Sem uma especificação é difícil determinar se um sistema está operacional e consequentemente se é confiável.

o Condições específicas: É preciso determinar em que situação o sistema deve funcionar. Como, por exemplo, condições de temperatura e variações de energia que o sistema pode tolerar.

o Período de tempo: Um sistema pode ser altamente confiável em um período de tempo curto de operação, mas pode necessitar de reparos por longos períodos após seu uso.

• Disponibilidade: A capacidade de um sistema executar uma função definida em um instante de tempo. A maneira de se obter a disponibilidade (A) de um determinado sistema é lançar mão das suas características do tempo até a ocorrência de falha (TTF) e tempo até o reparo de uma falha ocorrida (TTR). Considerando que essas medidas exatas não estão disponíveis, suas médias são utilizadas. O MTTF (Mean Time To Failure) pode ser computado considerando a confiabilidade do sistema como segue:

𝑀𝑇𝑇𝐹 =∫ 𝑅(𝑡)𝑑𝑡 = ∫ 𝑡𝑓(𝑡)𝑑𝑡 ∞ 0 ∞ 0 (2.2)

(27)

Valendo-se dos valores de tempo médio para falha (MTTF) e tempo médio de reparo (MTTR) de um dispositivo, a disponibilidade de estado estacionário (A) pode ser representada como:

𝐴 = 𝑀𝑇𝑇𝐹

𝑀𝑇𝑇𝐹 + 𝑀𝑇𝑇𝑅 (2.3)

Note que um sistema pode ser altamente confiável, mas possuir uma baixa disponibilidade. Como, por exemplo, um avião que realiza diversas viagens, mas que necessita de reparos e manutenções após cada voo.

• Comprometimento do Desempenho (Performability): É a capacidade que um sistema ou componente possui para executar as suas funções considerando restrições como velocidade, precisão, uso de memória e outras métricas que reflitam um bom desempenho do sistema. Embora não seja comum na literatura clássica incluir o comprometimento do desempenho como um atributo de dependabilidade, alguns trabalhos mais recentes consideram desempenho como um atributo de dependabilidade (AVIZIENIS et al., 2004) (TRIVEDI et al., 2009). O conhecido órgão de padronização, International Organization for Standardization (ISO), também considera desempenho como um atributo de

dependabilidade4.

• Mantenabilidade (Maintainability): A facilidade que um sistema ou componente apresenta para corrigir defeitos, melhorar seu desempenho, ou outros atributos, adaptando-se a alterações no ambiente. Ou seja, é a capacidade do sistema de ser colocado em estado de operação quando retirado devido a uma falha. O tempo médio de reparo (MTTR) é uma das métricas que pode indicar a mantenabilidade do sistema.

• Integridade: Ausência de alterações inapropriadas de estados do sistema ou informações (dados).

• Segurança: Capacidade de evitar consequências catastróficas para usuários ou para o sistema.

Os diversos atributos de dependabilidade podem ser agrupados em atributos quantitativos e qualitativos. A Tabela 2.1 exibe alguns desses atributos que podem ser mensuráveis ou não mensuráveis (AL-KUWAITI; KYRIAKOPOULOS; HUSSEIN, 2009).

(28)

Tabela 2.1. Atributos de Dependabilidade que são ou não mensuráveis

Atributo Natureza

Mensurável Não mensurável

Disponibilidade X Confiabilidade X Manutenibilidade X Comprometimento do Desempenho X Segurança X Integridade X Confidencialidade X

2.1.2.1 Meios de alcançar a dependabilidade

Para conseguir alcançar bons indicadores de dependabilidade há métodos e técnicas bem definidas na literatura e exibidos anteriormente na Figura 2.1. Abaixo temos uma descrição sobre cada um deles:

• Tolerância a falhas: Tolerância a falhas pode ser definida como a capacidade de um sistema manter um estado de funcionamento esperado mesmo na presença de falhas. Diversos autores possuem classificações próprias para as técnicas de tolerância a falhas (WEBER, 2002). A Figura 2.3 exibe as técnicas de tolerância a falha segundo (AVIZIENIS et al., 2004).

Uma das formas de alcançar tolerância a falhas é através da introdução de redundância para alguns elementos. Aplicando esta técnica evita-se que o sistema entre em um estado errôneo, pois o componente replicado assume o papel do componente defeituoso. É importante destacar ainda que os sistemas que implementam algum mecanismo de tolerância a falhas devem ser protegidos também contra falhas que podem afetá-los.

(29)

Figura 2.3. Técnicas de tolerância a falha (AVIZIENIS et al., 2004)

• Remoção de falhas: A remoção de falhas acontece em duas fases distintas de um sistema ou componente: (1) fase de desenvolvimento e (2) fase

operacional. Durante a fase de desenvolvimento o primeiro passo é verificar se

o sistema respeita as propriedades e termos previamente estabelecidos. Quando detectada uma não conformidade é realizado um diagnóstico para determinar a origem da falha e em seguida a sua correção. Já durante a fase operacional pode-se aplicar uma manutenção corretiva quando um defeito for detectado ou uma

manutenção preventiva quando uma falha for detectada e corrigida antes de

tornar-se um defeito.

• Predição de falhas: Conjunto de técnicas utilizadas para estimar as falhas existentes no sistema, futura ocorrências de falhas e suas consequências. A predição de falhas avalia o comportamento de um sistema de acordo com as condições do ambiente e o comportamento esperado sob um dado intervalo de tempo. Dessa forma, deve-se realizar uma análise quantitativa ou qualitativa das falhas do sistema. Na análise quantitativa é estimada a probabilidade de ocorrência de falha (e.g., taxa de falha, tempo para falha, tempo médio entre falhas etc). Já na análise qualitativa pode-se criar uma tabela com informações do sistema e seu respectivo ambiente para inferir possíveis falhas.

• Prevenção de falhas: Representa um conjunto de técnicas que tentam evitar a ocorrências de falhas. Pode-se destacar as técnicas de qualidade de controle

(30)

utilizadas durante o processo de desenvolvimento tanto de hardware quanto de software. Como exemplo, podemos citar técnicas de modularização de software; rigorosidade nas restrições para aquisição de componentes de hardware e até mesmo a utilização de firewalls para prevenir ataques maliciosos numa rede.

2.1.2.2 Modelos para calcular ou estimar atributos de dependabilidade

Devido à importância de estimar atributos de dependabilidade de um sistema, formalismos e ferramentas foram criados para modelarmos e analisarmos a confiabilidade e disponibilidade resultante de um sistema composto por diversos componentes.

• Reliability Block Diagram (RBD): Um modelo RBD é utilizado para modelar a estrutura lógica de um sistema através de blocos de componentes, a fim de calcular a confiabilidade ou disponibilidade geral do sistema. As formas básicas que um RBD pode assumir são: (1) série, (2) paralelo e (3) k-out-of-n.

Em cenários complexos, onde componentes são dependentes uns dos outros, com diferentes distribuições de probabilidade (não exponencial) ou com limitação de capacidade de recuperação outras abordagens se fazem necessárias, como por exemplo, simulação (SAHNER; TRIVEDI; PULIAFITO, 1996).

• Árvore de Falha: Similar ao RBD, representa uma sequência de componentes conectados que podem causar uma falha e consequentemente fazer um sistema parar de funcionar. A ideia por trás de árvore de falhas é construir um diagrama lógico que permite analisar a confiabilidade do sistema. A principal diferença com um modelo RBD é devido ao fato do RBD modelar a probabilidade de funcionamento correto dos componentes, enquanto que uma árvore de falha é gerada através das combinações de falha dos componentes (Watson et al, 1961) (SAHNER; TRIVEDI; PULIAFITO, 1996)

• Cadeia de Markov: Modelos combinatórios como RBD e Árvore de Falhas assumem independência estocástica entre seus componentes diferentemente de uma cadeia de Markov. Uma cadeia de Markov é baseada num grafo composto por um conjunto de estados conectados por transições. As transições representam a probabilidade da transição de um estado para o outro. A modelagem representa um comportamento aleatório contínuo ou discreto sem memória, onde o estado futuro não depende do comportamento passado (STEWART, 2009; TRIVEDI, 2002).

(31)

• Redes de Petri e Redes de Petri Estocástica: Uma Rede de Petri é um grafo bipartido que permite a modelagem de sistemas paralelos, concorrentes, não-determinísticos e assíncronos. Uma Rede de Petri consiste basicamente de um conjunto de lugares L (representados por círculos), transições T (representadas por barras) e arcos A (representados por setas). Uma rede de Petri marcada possui marcas (ou tokens) que residem em lugares e movem-se através de arcos e transições. Através das marcas é possível representar o estado da rede num determinado momento. Em redes de Petri puras, embora haja marcações, não há marcação de tempo. Dessa forma, uma rede de Petri pura pode descrever apenas o sistema e suas estruturas lógicas sem noção alguma de tempo. No entanto, o tempo é um fator importante em diversas modelagens de problemas.

Uma variação das redes de Petri pura composta da adição do conceito de tempo é denominada rede de Petri Estocástica (Stochastic Petri Networks - SPN). Neste caso, temos transições temporizadas, significando que marcações são descritas e disparadas como um processo estocástico caracterizado por uma distribuição exponencial. A introdução da noção de tempo permite a modelagem de sistemas dinâmicos (Maciel, Lins e Cunha, 1996; Florin G.; Long, 1980; Marsan, Chiola e Conte, 1985; Molloy, 1985).

2.1.2.3 Por que disponibilidade é importante e como calculá-la

O número de usuário na Internet (cerca de 3,1 bilhões de usuários em 20155) por

si só já demonstra o grau de sua disseminação e sua utilização em massa. Diversas são as razões conhecidas para sua utilização, mas pensemos nas que implicam em grandes perdas ou problemas quando a rede não está em um estado de funcionamento adequado. Hospitais, operadores da bolsa de valores, redes de bancos e cartões de crédito, um policial que necessita de informações ou até mesmo um usuário que utiliza a rede para atividades cotidianas como, por exemplo, descobrir qual metrô precisa pegar acaba sofrendo com os problemas de uma rede com baixa disponibilidade. Imaginemos também uma empresa digital que realiza vendas pela Internet e que tem sua rede fora do ar por algumas horas, quantas vendas e quantos clientes ela pode perder quando uma compra é realizada em um concorrente? O preço da baixa disponibilidade é alto, e no caso de hospitais podem significar o sucesso de um procedimento cirúrgico6 e

5 http://www.statista.com/statistics/273018/number-of-internet-users-worldwide/ 6 http://www.bbc.com/future/story/20140516-i-operate-on-people-400km-away

(32)

consequentemente determinar a saúde de um paciente. Por isso, nesta subseção vamos dar uma introdução sobre o cálculo da disponibilidade em redes baseado no livro de Chris Oggerino (OGGERINO, 2001).

Relembrando o que foi apresentado anteriormente, a disponibilidade (𝐴) de um

componente pode ser calculada através dos tempos médios entre falha (Mean Time

Between Failure - MTBF) ou tempo médio para falha (Mean Time To Failure - MTTF) e

o tempo médio de reparo (Mean Time To Repair - MTTR):

𝐴 = 𝑀𝑇𝑇𝐹

𝑀𝑇𝑇𝐹 + 𝑀𝑇𝑇𝑅 𝑜𝑢

𝑀𝑇𝐵𝐹 𝑀𝑇𝑇𝐹 + 𝑀𝑇𝐵𝐹

(2.4)

Comumente a disponibilidade é medida em porcentagem, sendo frequente ouvir o termo dos cinco noves (99,999%) de disponibilidade. A tabela abaixo demonstra o impacto da disponibilidade baseada no número de noves:

Tabela 2.2. Tempo de operação de acordo com a disponibilidade

Número de 9s Disponibilidade Tempo sem operar

por ano

Tempo sem operar por mês 1 90% 36,5 dias 72 horas 2 99% 3,65 dias 7,20 horas 3 99,9% 8,76 horas 43,2 minutos 4 99,99% 52,6 minutos 4,32 minutos 5 99,999% 5,26 minutos 25,9 segundos

Para determinar a disponibilidade de um sistema é preciso antes analisar como o os seus componentes estão conectados entre si. Para componentes ligados em série podemos obter a disponibilidade através da equação 2.5 onde 𝑛 representa o número de componentes e 𝑖 o componente em questão.

𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒 𝑒𝑚 𝑆é𝑟𝑖𝑒 = ∏ 𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒_𝑐𝑜𝑚𝑝𝑜𝑛𝑒𝑛𝑡𝑒(𝑖)

𝑛

𝑖=1

(2.5) Nesse contexto, se um único componente falha então o sistema não estará operacional em sua totalidade. Como exemplo, se assumirmos que na rede vista na Figura 2.4 ocorre uma falha operacional caso haja a falha de comunicação entre qualquer um de seus componentes, podemos modelar o sistema como um sistema em série.

(33)

Figura 2.4. Topologia em serial (OGGERINO, 2001)

No caso de termos componentes em paralelo estima-se a disponibilidade resultante calculando o complemento da probabilidade de todos os elementos falharem. A Equação 2.6 define o cálculo da disponibilidade de componentes em paralelo.

𝐷𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒 𝑒𝑚 𝑃𝑎𝑟𝑎𝑙𝑒𝑙𝑜 = 1 − [∏(1 − 𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑𝑒_𝑐𝑜𝑚𝑝𝑜𝑛𝑒𝑛𝑡𝑒(𝑖))

𝑛

𝑖=1

] (2.6)

Quando falamos em um sistema com componentes em paralelo é importante notar que isso representa algum tipo de redundância (e.g., Figura 2.5), onde quando há a detecção de um erro pode-se transferir a carga de trabalho para outro componente em condições de funcionamento adequado (mecanismo de fail-over). Esse reestabelecimento da falha pode ser automático ou manual, sendo ideal que seja automático para que seja possível alcançar uma alta disponibilidade, pois desta forma o tempo para reestabelecer o sistema para um estado operacional tende a ser menor.

(34)

Uma rede que possui alta disponibilidade possui provavelmente componentes em paralelo. No entanto, como visto na Figura 2.5 é improvável ter uma rede totalmente composta por componentes em paralelo ou apenas em série, assim é preciso estimar a disponibilidade em um sistema com componentes em série e em paralelo. Uma solução bastante utilizada nesse caso é o uso de Diagramas de Blocos de Confiabilidade (RBD) (OGGERINO, 2001). Dessa forma, podemos definir 4 passos para calcular a disponibilidade:

1- Mapear os componentes do sistema e a forma como estão conectados (em série ou paralelo)

2- Estimar a disponibilidade de cada componente de forma individual

3- Calcular a disponibilidade dos componentes em paralelo, transformando componentes em paralelo em um único componente

4- Calcular a disponibilidade final resolvendo um modelo totalmente em série Nesse contexto, é importante destacar a análise do modo e efeito da falha ou FMEA (do inglês Failure Mode and Effect Analysis) (STAMATIS, 2003). FMEA é um levantamento estruturado e sistemático das potenciais falhas que podem ocorrer nos componentes que integram o sistema, bem como busca determinar os efeitos das falhas sobre cada componente estimando o sucesso operacional. Tal análise é importante para determinar os modos de falha corretos, pois nem sempre a falha de um componente acarreta na falha total do sistema. Dessa forma, FMEA pode ser visto como um passo inicial para determinar a confiabilidade de um sistema realizando uma análise de risco eficiente.

2.2

Virtualização de Rede (Network Virtualization - NV)

O uso efetivo da tecnologia de virtualização em computação teve origem há aproximadamente 50 anos quando a IBM criou as primeiras estratégias de virtualização envolvendo processador e memória RAM (RIXNER, 2008). No entanto, em redes de computadores a adoção de virtualização levou muito mais tempo para começar a ser introduzida. Tecnologias e paradigmas baseados em algum tipo de virtualização de recursos relacionados a redes de computadores foram introduzidos apenas a cerca de 20 anos atrás com tecnologias como Virtual Private Networks (VPN). Em seguida, houve o surgimento de diversas outras tecnologias como: Virtual LAN (VLAN), Multiprotocol

(35)

Label Switching (MPLS), Generalized Multi-Protocol Label Switching (GMPLS), Software Defined Network (SDN) e Network Function Virtualization (NFV).

O processo de virtualização de redes tem como premissa superar barreiras tecnológicas bem conhecidas como, por exemplo, desafios atrelados à ossificação da Internet, sendo até mesmo apontada como a solução para a Internet do Futuro em diversos trabalhos (PAPADIMITRIOU, PANAGIOTIS, 2009) (VERDOUW et al., 2013). Vale ressaltar que graças à tecnologia de virtualização é possível ter um maior poder de programação sobre as redes, não sendo a rede necessariamente dependente de protocolos como o IP ou qualquer tecnologia específica. Ou seja, as tecnologias de virtualização aplicadas a redes de computadores permitem a criação de diferentes arquiteturas e o uso de novos protocolos em um novo ambiente de redes que pode vir a ser bastante heterogêneo e complexo (Figura 2.6).

Figura 2.6. Ambiente de uma rede virtualizada (CHOWDHURY; BOUTABA, 2009)

De forma simples, virtualização é a capacidade de simular uma plataforma de

hardware, serviço ou recurso de rede através de uma camada de software (LAUREANO

et al., 2008). Nesse contexto, uma instância virtual tem a capacidade de operar praticamente da mesma forma que uma solução não virtualizada. Uma plataforma com suporte à virtualização possui um hardware de propósito geral que pode suportar múltiplos serviços ou dispositivos virtualizados em um mesmo hardware, proporcionando maior flexibilidade, redução de custos de capital e operação. Embora uma rede virtualizada ofereça vários benefícios, há diversos desafios como isolamento entre

(36)

diferentes redes virtuais, garantias de escalabilidade, confiabilidade e interoperabilidade entre diferentes soluções (CARAPINHA; JIMÉNEZ; VARGAS, 2009).

2.2.1 Componentes básicos e terminologia

Os termos e componentes básicos de uma rede virtualizada são descritos abaixo e são exibidos também na Figura 2.7:

• Nós virtuais: Um nó virtual pode ser definido como uma entidade que é composta essencialmente por uma ou mais camadas de software (e.g., virtualizadores como VMWare7, XEN8 e KVM9), tendo o papel de replicar ou estender um

comportamento, recursos, serviços ou interfaces (e.g., roteadores, funções de rede, enlaces e máquinas virtuais). Cada nó virtual precisa ser alocado em um nó físico. Uma das diferenças em relação a outras abordagens é que um nó virtualizado não executa em um hardware dedicado. Por fim, um nó virtual é baseado no isolamento e particionamento de recursos de hardware de acordo com requisitos pré-definidos.

• Enlaces virtuais: Um enlace virtual é definido como um conjunto de um ou mais enlaces físicos. Independente de quantos enlaces físicos são utilizados um enlace virtual é identificado por um único identificador. Note que um enlace físico pode suportar múltiplos enlaces virtuais (Figura 2.7). Na prática um enlace virtual é criado através de regras de encaminhamento que definem um caminho específico (e.g., MPLS e OpenFlow).

• Rede Virtual: Uma rede virtual é uma coleção de nós virtuais conectados por um conjunto de enlaces virtuais para formar uma topologia virtual. Sob outra perspectiva, pode-se visualizar uma rede virtual como uma rede de sobreposição (Figura 2.6).

• Rede substrato: É o conjunto de dispositivos físicos que possuem a capacidade ou permitem a virtualização de qualquer recurso da rede.

• Provedor de Infraestrutura: São responsáveis pelo gerenciamento de dispositivos físicos da rede (e.g., roteadores, servidores e enlaces). Os provedores de Infraestrutura fornecem recursos através de uma interface bem definida para diferentes provedores de serviço.

7 www.vmware.com

8 www.xenproject.org 9 www.linux-kvm.org

(37)

• Provedor de Serviço: Provedores de serviços utilizam a infraestrutura de um Provedor de Infraestrutura pagando pelos recursos utilizados. O objetivo é oferecer serviços fim-a-fim para usuários finais, mas também é possível oferecer serviços para outros Provedores de Serviço. Note que não necessariamente o provedor de serviço e o provedor de infraestrutura são entidades distintas. • Usuário Final: O termo Usuários Finais em redes virtualizadas possui a mesma

definição empregada em redes de computadores. São clientes que utilizam algum serviço oferecido por um provedor de serviço como, por exemplo, acessar simplesmente uma página Web.

Figura 2.7. Elementos básicos de uma rede virtualizada (CARAPINHA; JIMÉNEZ, 2009)

2.2.2 Requisitos e desafios em uma rede virtualizada

Nesta seção serão destacados alguns requisitos para um funcionamento adequado de uma rede que emprega tecnologias de virtualização, bem como desafios inerentes a esse tipo de ambiente:

• Gerenciamento e Monitoramento: O provedor de Infraestrutura deve ter uma visão clara sobre o funcionamento da topologia física e virtual, para isso é necessário haver um monitoramento constante de parâmetros do estado da rede e um provisionamento adequado de recursos. Esta tarefa torna-se complexa quando há diversas redes virtuais e camadas adicionais de software envolvida, demandando estratégias eficientes de monitoramento e orquestração de recursos para que não se tenha uso excessivo ou desperdício de recursos.

• Isolamento: Mecanismos para garantir graus de isolamentos entre redes virtuais e serviços são necessários para que se possa garantir requisitos mínimos de

(38)

segurança, além de garantir um desempenho mínimo sem que recursos compartilhados (memória RAM, CPU, banda e espaço de armazenamento) sejam monopolizados por um determinado recurso virtualizado.

• Escalabilidade e Alocação sob Demanda: Devido a um grande número de requisições, o número de recursos virtualizados pode crescer rapidamente de algumas centenas a milhares em uma rede (CHOWDHURY; BOUTABA, 2009). Uma solução para este tipo de ambiente deve ser escalável para lidar com uma grande demanda de recursos virtualizados em um cenário dinâmico.

• Interoperabilidade e Independência de Tecnologia: Redes virtualizadas não devem ser dependentes de um tipo específico de tecnologia de rede que restrinja a sua aplicabilidade e diminua sua flexibilidade. Além disso, é preciso haver a criação de interfaces de comunicação interoperáveis entre diferentes tecnologias de virtualização, facilitando a proliferação deste tipo de tecnologia, sendo o oposto das soluções “caixas pretas” fornecidas por grandes companhias atualmente.

2.3

Redes Definidas por Software (SDN)

A Internet para a indústria e operadores de rede tornou-se um sistema complexo, caro e pouco flexível. Software Defined Networking (SDN) surge como um novo paradigma que promete fornecer a capacidade de ter um amplo controle sobre fluxos de tráfego da rede, simplificando a rede e tornando-a mais barata e flexível (McKeown et

al., 2008a). Desta forma, o tráfego pode ser explicitamente roteado e inspecionado por

elementos de rede de controle com segurança e políticas de gerenciamento eficientes. Este novo paradigma abre um leque de novas possibilidades para a indústria e anseia por estudos científicos que possam nortear sua inserção no cenário de redes atual (MONSANTO et al., 2013).

O hardware atual de uma rede deve suportar o máximo possível as futuras atualizações. O ideal é que não houvesse a necessidade de aumentar a capacidade do

hardware tanto do lado cliente quanto do núcleo da rede (por questões óbvias de custo).

SDN tenta através da simplificação do hardware dos roteadores e da adição de um maior poder de programação da rede, reduzir custos e tornar a rede mais flexível. Uma análise da arquitetura atual dos roteadores 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 dos roteadores e switches, visando tornar os switches mais baratos, rápidos e flexíveis (CASADO et al., 2012). Em uma SDN, o

(39)

plano de controle é logicamente centralizado e pode ser programado através de uma interface aberta (ex.: ForCES10, OpenFlow11, etc.). É através desta interface aberta que

as SDNs podem simplificar o gerenciamento de redes e possibilitar a inovação e evolução dos cenários tradicionais. Assim, um plano de controle centralizado num controlador SDN permite uma visão única e global da rede, trazendo benefícios como um conjunto de políticas menos propensas a erros, configurações de dispositivos de baixo nível mais simples e adaptações dinâmica da rede. O controlador SDN, ou eventuais aplicações executadas sobre o controlador, são responsáveis por atualizar a tabela de encaminhamento de cada roteador/switch da rede. Essa abordagem permite que novas funcionalidades sejam implementadas simplesmente pela adição de novas peças de software (aplicações) que realizam o gerenciamento da rede através do controlador SDN. Consequentemente, uma rede SDN tem uma camada de abstração que permite a implementação de uma variedade de algoritmos como balanceamento e classificação de tráfego com base em restrições definidas pelo operador de rede.

O interesse significativo em SDN, partindo tanto da indústria quanto do meio acadêmico, tem feito surgir diversos grupos e organizações que visam definir padrões e identificar oportunidades de pesquisa neste novo cenário de redes. Um grupo de operadores de rede, prestadores de serviços e fornecedores criaram a Open Network

Foundation (ONF), uma organização voltada para a indústria que visa promover e

padronizar o protocolo OpenFlow (o protocolo mais utilizado na atualidade em rede SDN).

O protocolo OpenFlow tem sido utilizado como padrão para permitir a comunicação entre switches e controladores. Cada switch possui uma tabela de fluxos utilizada para o repasse de pacotes. Cada entrada da tabela determina como um fluxo de pacotes será processado e encaminhado. Um entrada da tabela é formada pelos seguintes conjuntos de campos: (1) campos de identificação; (2) contadores, usados para coletar estatísticas de uma regra; e (3) um conjunto de instruções, ou ações, a ser aplicado sobre uma correspondência (NUNES et al., 2014b).

Em uma linha semelhante, a abordagem de SDN proposta pelo grupo de trabalho do IETF - ForCES (Forwarding and Control Element Separation), redefine a arquitetura interna dos dispositivos de rede, tendo o elemento de controle separado do elemento de encaminhamento (Nunes, Bruno Astuto A. et al, 2014). No entanto, o dispositivo de rede ainda é representado como uma entidade única. Assim, os planos de controle e

10 http://datatracker.ietf.org/wg/forces/charter/ 11 https://www.opennetworking.org/

(40)

encaminhamento são mantidos próximos. Em contraste, o plano de controle está inteiramente dissociado do plano de dados em sistemas “SDN OpenFlow”. Os membros do ForCES vêm trabalhando em padronizações desde 2001, publicando uma variedade de documentos incluindo: uma arquitetura de um framework, definindo suas entidades e interações; uma linguagem de modelagem, definindo as funções lógicas dentro de um elemento de encaminhamento (plano de dados) e o protocolo de comunicação entre os elementos de controle e encaminhamento. Este grupo de trabalho está inativo desde o começo de 2015 (o estado do grupo no IETF é concluído).

Figura 2.8 - Arquitetura ONF/SDN (ONF, 2014)

Pode-se afirmar que a Open Networking Foundation (ONF) vem trabalhando na padronização de SDN de forma mais próxima à indústria baseada no protocolo OpenFlow. A ONF definiu um modelo de arquitetura SDN, conforme apresentado na Figura 2.8.

A arquitetura definida pela ONF/SDN consiste basicamente em três camadas: • Camada de aplicação: Consiste das aplicações de negócios do usuário final que

consomem os serviços de comunicações SDN. O limite entre a camada de aplicação e a camada de controle é determinado pela API fornecida (northbound).

Referências

Documentos relacionados

a) há um continuum de padrões de liderança dado pelo grau de autoridade utilizado pelo líder e o grau de liberdade disponível para os subordinados. c) para tarefas rotineiras

de 2 (duas), por acordo individual, convenção coletiva ou acordo coletivo de trabalho. Agora a CLT passa a contar com 3 espécies de compensação de horas; 1) Banco de horas

2°) KERKHOFF, A.J., MORIARTY, P.E. The latitudinal species richness gradient in New World woody angiosperms is consistent with the tropical conservatism hypothesis. Avalie

With regard to the “Influence of professional activity on family life” category, fathers and mothers in this study reported that the influence of physical and mental

O Fluxo de Caixa é o instrumento utilizado para controlar e informar as condições financeiras de um determinado empreendimento, auxiliando nas escolhas de decisões, sendo

In this work, improved curves are the head versus flow curves predicted based on the correlations presented in Table 2 and improved by a shut-off head prediction

Segundo o mesmo autor, a animação sociocultural, na faixa etária dos adultos, apresenta linhas de intervenção que não se esgotam no tempo livre, devendo-se estender,