Tópicos Especiais em Redes de Telecomunicações Redes definidas por software e Computação em Nuvem Prof. Rodrigo de Souza Couto
Informações Gerais Prof. Rodrigo de Souza Couto E-mail: rodsouzacouto@ieee.org Página da disciplina: http://www.lee.eng.uerj.br/~rodrigo/sdnpel Sala: 5019E Áreas de Atuação (temas de pesquisa e desenvolvimento) Redes de Computadores Computação em Nuvem Horário das aulas Terça-feira: 7:00 às 8:40 Sala 18 Quinta-feira: 7:00 às 8:40 Sala 18
Programa do Curso Contextualização Desenvolvimento em Computação em Nuvem Pesquisa em nuvens resilientes a desastres Software-defined networking (SDN) Separação do plano de dados e do plano de controle OpenFlow Controladores SDN Virtualização de redes SDN com múltiplos controladores e em redes de longa distância Simulação de SDNs com o mininet
Programa do Curso Redes de Computação em Nuvem e Centros de Dados Conceitos básicos de computação em nuvem Técnicas de virtualização Orquestador de nuvem OpenStack Redes de centros de dados Rede interna ao centro de dados Interconexão de centros de dados SDN em centros de dados
Programa do Curso Network Function Virtualization (NFV) Princípios básicos e aplicações Padrão ETSI NFV Ferramentas para NFV (a definir) OpenStack Neutron, Open Daylight, etc.
Material para Estudo Slides de aula serão disponibilizados online Artigos científicos Alguns vídeos Importante: A maioria dos artigos só pode ser acessada da rede da UERJ, ou através do serviço da DINFO de acesso aos periódicos da Capes: http://www.dinfo.uerj.br/capes.html
Avaliações PLANEJADAS Seminários Leitura e apresentação de artigos para cada grupo de temas Artigos serão apresentados após cada conjunto de aulas expositivas do professor Os artigos serão escolhidos pelos alunos Restritos a um conjunto de artigos Número de seminários a ser definido A princípio, de 5 a 6 seminários por aluno Ideia geral Criar um espaço de discussão sobre os últimos avanços científicos do tema Recomenda-se que os alunos também leiam os artigos dos colegas (participação valerá ponto)
Avaliações PLANEJADAS Trabalho Prático Proposto pelo aluno aproximadamente no meio do curso Proposta deverá ser aprovada previamente Aluno escolherá a ferramenta Mininet, OpenStack, etc. Além da parte prática, trabalho deverá possuir contextualização teórica Apresentação em forma de artigo científico Formato SBC Dica http://www.sbc.org.br/index.php?option=com_jdownload s&itemid=195&task=finish&cid=38&catid=32 Tema escolhido poderá ser baseado nos seminários
Avaliações PLANEJADAS Trabalho Prático (Cont.) Entrega em três etapas Escolha do tema Entrega da versão parcial Contextualização teórica Introdução, Trabalhos Relacionados, etc. Entrega da versão final Trabalho completo, já com os resultados práticos
Pontuação Seminários 4 pontos Participação na discussão dos seminários 1 ponto Trabalho prático 5 pontos Critério de avaliação Média deverá ser maior ou igual a 7 para aprovação
Próximas Atividades Recomendadas (em ordem de prioridade) Assistir aos vídeos recomendados na Aula 0 Visão bem geral do que veremos sobre SDN e NFV Leitura dos artigos preliminares de SDN na Aula 0 Leitura do artigo do GT-PID Projeto de desenvolvimento de Computação em Nuvem UFRJ, UERJ e UFF Tentem assistir aos vídeos e ler os artigos de SDN até antes da aula da próxima Quarta 02/09
Plataforma IaaS Distribuída Visão Geral
Instituições Envolvidas Executoras Universidade Federal do Rio de Janeiro (UFRJ) Universidade do Estado do Rio de Janeiro (UERJ) Universidade Federal Fluminense (UFF) Parceria Université Pierre et Marie Curie (UPMC Sorbonne Universités) Apoio Rede Nacional de Ensino e Pesquisa (RNP)
Equipe Alunos Felipe F. da Silva Hugo F. S. S. M. Barreto Jean Philipe S. da Fonseca Paulo O. L. Valente Pedro Henrique C. Caminha Rafael Mitre da Costa Tatiana Sciammarella Professores Luís Henrique M. K. Costa (UFRJ) Miguel Elias M. Campista (UFRJ) Marcelo G. Rubinstein (UERJ) Rodrigo de Souza Couto (UERJ) Igor Monteiro Moraes (UFF) Pedro Braconnot Velloso (UFRJ) Otto Carlos M. B. Duarte (UFRJ) Stefano Secci (UPMC)
Introdução Disponibilidade dos recursos computacionais Ociosos por longos períodos Mas... Indisponíveis em momentos críticos 100 recursos ocupados na UFRJ (%) d c tempo Caso novas requisições sejam recebidas no momento crítico, elas seriam negadas. Deadline do congresso!
Introdução Disponibilidade dos recursos computacionais Ociosos por longos períodos Mas... Indisponíveis em momentos críticos 100 100 recursos ocupados na UFRJ (%) d c tempo recursos ocupados na UERJ (%) d c d p tempo Deadline do congresso! Deadline do projeto!
Introdução Disponibilidade dos recursos computacionais Ociosos por longos períodos Mas... Indisponíveis em momentos críticos 100 100 recursos ocupados na UFRJ (%) d c tempo recursos ocupados na UERJ (%) d c d p tempo Deadline do congresso! Requisições excedentes da UFRJ
GT-PID: Objetivos Promover o compartilhamento em nuvem de recursos computacionais entre participantes do sistema Através de uma camada de virtualização em nuvem Modelo de infraestrutura como serviço (IaaS) Aumentar a capacidade disponível por participante Recursos computacionais locais mais recursos computacionais remotos em períodos críticos Reduzir custos de infraestrutura Recursos são melhor aproveitados
Virtualização Base para um serviço IaaS Compartilhamento de um servidor físico por diferentes máquinas virtuais (VMs Virtual Machines) Usuário da VM tem ilusão de estar utilizando um servidor físico dedicado a ele Implementada por um hipervisor Virtualização
IaaS no GT-PID Usuário recebe um conjunto de máquinas virtuais Sistema operacional completo Flexibilidade para executar suas aplicações
Visão Geral da Arquitetura do GT-PID Controlador Requisições/ Respostas HTTP Usuários Túneis VPN Internet Servidor de VMs Comutador Local Servidor de VMs e discos Sítio (Universidade) 1 Sítio (Universidade) 2 Sítio (Universidade) N
Gerenciamento no GT-PID Administrator Global Entidade com visão e poder total sobre a infraestrutura Administrador Local Entidade responsável por um sítio Controle sobre todas as máquinas de um sítio
Ferramenta de Gerenciamento OpenStack Conjunto de APIs para manipulação da nuvem Recursos Gerenciados Computação (p.ex. processamento e memória) Rede Armazenamento Mecanismos de autenticação e gerenciamento Interface web para usuários e administradores Código aberto Grande comunidade
Contribuições Otimização da distribuição geográfica da nuvem OpenStack Divisão lógica em sítios Proposta e Implementação do Escalonador de Sítios Escolha de quais sítios hospedarão VMs de uma requisição Arquitetura projetada para nuvens colaborativas Criação do papel Administrador Local Modificação da interface web do OpenStack Criação de máquinas considerando sítios Administração local e global Migração Global (inter-sítio) e Local (intra-sítio)
Contribuições Autenticação Federada CAFe Expresso Avaliação de desempenho e monitoramento Ferramenta de benchmark de avaliação de nuvens Configurações avançadas de rede Comunicação entre VMs de sítios diferentes Estudo e comparação com orquestrador alternativo CloudStack
Contexto do GT-PID no Mundo IaaS Mundo IaaS corporativo Poucos sítios, alta capacidade Comercial Gerenciamento centralizado PID na RNP Muitos sítios, baixa capacidade Acadêmico Recursos colaborativos Gerenciamento hierárquico
Plataforma IaaS Distribuída Exemplo do serviço do GT-PID
Demonstração da Interface Gráfica Entrada no Sistema
Interface do Administrador Global Adm. Global pode assumir todos os papéis
Interface do Administrador Global Listagem de Servidores de VMs (hipervisores)
Interface do Usuário Final Instanciação de VMs
Interface do Usuário Final Formulário de Instanciação 32
Interface do Usuário Final Exemplos de Instanciação Exemplo de Criação Centralizada Exemplo de Criação Distribuída
Interface do Usuário Final Utilização da VM
Interface do Administrador Local Visualização de Instâncias no sítio Migração Local
Interface do Administrador Local Formulário de Migração Local
Plataforma IaaS Distribuída OpenStack no Contexto do GT-PID
Virtualização no GT-PID Utilização do Hipervisor KVM VM possui acesso à Internet através de NAT VMs podem comunicar entre si através de IPs privados VMs de um mesmo sítio Rede virtual local VMs de sítios diferentes Utilização de roteadores virtuais - Neutron
Devstack Script para instalar uma nuvem Completa OpenStack Ideal para prototipagem e desenvolvimento Não recomendado para uso em produção Utilizado no GT-PID para rápido desenvolvimento Em andamento DevStack para desenvolvimento Instalação manual para produção
Gerenciamento de Recursos Gerenciamento Global Instanciação de máquinas virtuais Decisão de em quais sítios e servidores instanciar Escalonador de sítios Gerenciamento Local Migração Local Migração ao vivo entre servidores do mesmo sítio Utilizado em período de manutenção de servidor
Zona de Disponibilidade Separação lógica entre Servidores de VMs Contexto do GT-PID Uma Zona de Disponibilidade por sítio Consiste em todos os servidores de VM do sítio Usuário pode escolher o sítio de cada VM Ex: melhora da tolerância a falhas Usuário OU VM Sítio UFRJ ou Zona de disponibilidade UFRJ Sítio UERJ ou Zona de disponibilidade UERJ
Instanciação de Máquinas Virtuais Centralizado Todas as VMs em um sítio Atualmente UFRJ, UERJ ou UFF Escalonador de Sítios decide o sítio Distribuído Esquema round-robin entre todos os sítios Escalonador de Sítios obtém os sítios que suportam pelo menos uma máquina do tipo desejado
VISÃO GERAL DO OPENSTACK
OpenStack: Arquitetura Conceitual Fornece Interface de Usuário Dashboard (Horizon) Identity Management (Keystone) Autentica Block Storage (Cinder) Compute (Nova) Image Service (Glance) Fornece Volumes Provisiona Fornece Imagens Máquina Virtual
OpenStack Visão Geral do Funcionamento Dashboard (Horizon) Identity Management (Keystone) Block Storage (Cinder) Compute (Nova) Image Service (Glance) Usuário solicita criação de VMs pela interface web
OpenStack Visão Geral do Funcionamento Dashboard (Horizon) Identity Management (Keystone) Block Storage (Cinder) Compute (Nova) Image Service (Glance) Pedido é autenticado em um gerenciador de identidades
OpenStack Visão Geral do Funcionamento Dashboard (Horizon) Identity Management (Keystone) Block Storage (Cinder) Compute (Nova) Image Service (Glance) Gera-se uma requisição de criação de VMs para o serviço de computação
OpenStack Visão Geral do Funcionamento Dashboard (Horizon) Identity Management (Keystone) Block Storage (Cinder) Compute (Nova) Image Service (Glance) Serviço de Computação solicita uma imagem para a VM (p.ex. q contenha o sistema operacional escolhido)
OpenStack Visão Geral do Funcionamento Dashboard (Horizon) Identity Management (Keystone) Block Storage (Cinder) Compute (Nova) Image Service (Glance) Serviço de Computação solicita a criação de um disco lógico para a VM
OpenStack Visão Geral do Funcionamento Dashboard (Horizon) Identity Management (Keystone) Block Storage (Cinder) Compute (Nova) Image Service (Glance) Máquina virtual é criada através de requisições ao hipervisor do Servidor de VMs escolhido Máquina Virtual
OpenStack: Detalhes dos Serviços glance-registry glance-api nova-compute Horizon nova-api Keystone ceilometer-agentcentral cinder-api RabbitMQ (Fila) cinder-volume nova-consoleauth nova-network ceilometer-api Alguns projetos do Openstack são divididos em módulos libvirt Hipervisor nova-novncproxy nova-conductor ceilometer-agentnotification nova-scheduler cinder-scheduler ceilometercollector ceilometer-alarmevaluator ceilometer-alarmnotifier MySQL (DB) ceilometer-agentcompute MongoDB (DB)
OpenStack: Detalhes dos Serviços glance-registry glance-api nova-compute Horizon nova-api Keystone ceilometer-agentcentral cinder-api RabbitMQ (Fila) cinder-volume nova-consoleauth nova-network ceilometer-api Esses módulos comunicam-se entre si para o provisionamento do serviço IaaS libvirt Hipervisor nova-novncproxy nova-conductor ceilometer-agentnotification nova-scheduler cinder-scheduler ceilometercollector ceilometer-alarmevaluator ceilometer-alarmnotifier MySQL (DB) ceilometer-agentcompute MongoDB (DB)
OpenStack: Detalhes dos Serviços glance-registry glance-api nova-compute Horizon nova-api Keystone ceilometer-agentcentral cinder-api RabbitMQ (Fila) cinder-volume nova-consoleauth nova-network ceilometer-api Hipervisor se comunica com o Nova, através do módulo nova-compute libvirt Hipervisor nova-novncproxy nova-conductor ceilometer-agentnotification nova-scheduler cinder-scheduler ceilometercollector ceilometer-alarmevaluator ceilometer-alarmnotifier MySQL (DB) ceilometer-agentcompute MongoDB (DB)
ESCALONADOR DE SÍTIOS
Escolha do Servidor de VMs Escalonamento (nova-scheduler) Servidor de VMs 1 Servidor de VMs 1 Servidor de VMs 2 Servidor de VMs 2 Servidor de VMs 4 Servidor de VMs 3 Filtros Servidor de VMs 3 Pesos Servidor de VMs 2 Servidor de VMs 4 Restrição Servidor de VMs 4 Prioridade Servidor de VMs 5 Servidor de VMs 5 Servidor de VMs 5 Escolha do Servidor de VM realizada após ordernamento segundo os pesos
Exemplo de Escalonamento Requisição de 1 VM em um Sítio UFRJ_A 50% UFRJ_A 50% UFRJ_B 50% UERJ_A 100% UERJ_B 40% UERJ_C 50% Utilização Filtros Filtros do Exemplo: - Zona de Disponibilidade - Capacidade de hospedar VM UFRJ_B 50% UERJ_A 100% UERJ_B 40% UERJ_C 50% Pesos UERJ_B é escolhido para tentar distribuir igualmente as VMs UERJ_B 40% UERJ_C 50%
Gerenciamento de Recursos Gerenciamento Global Instanciação de máquinas virtuais Decisão de em quais sítios e servidores instanciar Escalonador de sítios Gerenciamento Local Migração Local Migração ao vivo entre servidores do mesmo sítio Utilizado em período de manutenção de servidor
Migração Local Solicitação realizada pelo administrator local de cada sítios Limitada a apenas máquinas de seu sítio Transferência da execução de VMs para um Servidor de VMs no mesmo sítio Não há cópia de disco Servidor NFS compartilhado Servidor de VMs e Disco Operação rápida e sem interrupção do serviço Administrador Local Controlador Global Sítio UFRJ
Migração ao Vivo em Cenário Heterogêneo Máquina virtual usa o conjunto de instruções da CPU onde ela se encontra Ao ser migrada, esse conjunto de instruções pode mudar
Migração ao Vivo em Cenário Heterogêneo Solução no GT-PID: Esconder instruções específicas para a VM Ambas as CPUs parecem iguais para a VM
ADMINISTRADOR LOCAL
Administrador Local Novo tipo de usuário Pelo menos 1/sítio Gerenciamento das VMs em seu sítio
Administrador Local Novo tipo de usuário Pelo menos 1/sítio Gerenciamento das VM s em seu sítio Estrutura hierárquica Admin Admin Local Usuário Final
Controle de Acesso RBAC (Role-based access control) Controle de acesso baseado em níveis hierárquicos Cada tipo de usuário possui um papel diferente Role A Role B Role C
Controle de Acesso Admin Local Acesso aos serviços: adm_local Acesso ao painel: adm_<sítio>
Controle de Acesso Admin Administrador global recebe todos os papéis Admin consegue visualizar todos os painéis
Controle de Acesso
NEUTRON E CONFIGURAÇÕES DE REDE
Neutron Serviço do OpenStack responsável pelo provisionamento de rede Criação e configuração de redes virtuais entre as VMs Adicionado na Fase 2 do GT-PID Fase 1 utilizava serviço mais simples de rede nova-network Vantagens para o GT-PID Facilidade de configuração pela interface web Criação de redes virtuais Configuração de firewalls para as VMs Comunicação entre VMs de sítios diferentes Sem necessidade de IP público
Neutron Interface Web Roteador virtual situado no Controlador encaminha os pacotes entre os sítios
Neutron Interface Web VMs acessam a Internet através de NAT
Arquitetura do Neutron Controlador Gerenciamento P.ex. APIs Roteamento Configuração de rede para as VMs Medições Servidores de VMs Open vswitch Agente neutron para open vswtich Servidor de VMs e discos neutron-ovs Servidor de VMs Sítio UFRJ Neutron Server neutron-l3 neutron-ovs neutron-ovs Controlador Internet Sítio UERJ neutron-ovs neutron-dhcp neutron-metering neutron-ovs Túneis VPN Sítio UFF neutron-ovs