SDN Introdução Baseado em: • SDN: Software Defined Networks by Thomas D. Nadeau and Ken Gray • Material de treinamento do Prof. Cesar Marcondes (UFSCAR) •Livro do Tanenbaum: Sistemas Operacionais Nível Aplicação 1 Motivação - 1 Conceitos motivacionais: • Estamos entrando na era da computação elástica: A flexibilidade na operação da computação, armazenamento e recursos de rede . • Com a virtualização de SOs, é possível mover ou expandir servidores para data centers em qualquer localização com uma simples operação. • As empresas programam o crescimento e adquirem recursos previamente para atender as demandas, todavia, parte do recurso fica em desuso se não houver flexibilização. Nível Aplicação 2 Motivação - 2 • Caso Amazon: dobrava a cada seis meses, investia para ter recursos à altura, mas eles não eram eficientemente utilizados: comercializar recursos não utilizados até atingir aproximadamente 100% de uso - arrumar inquilinos e atribuir recursos à demanda. O livro chama esta flexibilização de hyper virtualization. • Máquinas Virtuais devem ter endereços IPs dedicados aos respectivos SOs, válidos e roteáveis e a flexibilização implica em gerir estes endereços. • A utilização de protocolos específicos com a flexibilização também requer que os mesmos protocolos estejam disponíveis em todos os ambientes. • Gerência de flexibilização enquanto no interno de apenas um data-center não é crítico, mas quando cresce... Nível Aplicação 3 Parênteses: Máquinas Virtuais Virtualização: Diferentes servidores funcionam em diferentes máquinas virtuais (VM) que podem estar hospedadas em um único computador, mantendo o modelo de falha parcial a baixo custo e fácil manutenção. É a base da chamada computação elástica. O computador no qual o chamado hipervisor roda uma ou mais máquinas virtuais, chama-se computador hospedeiro. Cada máquina virtual é chamada hóspede. Virtualização (1) Motivação: Pode acontecer de uma empresa ter múltiplos servidores (e-mail, web, ftp…) não porque a carga é excessiva, mas por segurança: se um serviço falhar, os outros continuam a funcionar. Deseja-se flexibilizar as configurações de serviços e distribuir a potência computacional facilmente. Justificativas: 1. A maioria das interrupções nos serviços não é por hardware, mas pelo conjunto de software inchado, não confiável e com erros (em especial SOs!) Virtualização (2) Justificativa (ainda): 2. O único software que rodaria no modo núcleo seria o hipervisor que tem menos linhas de código que o SO, e portanto menos erros. 3. Economia em hardware (menos máquinas) implica também economia de energia; 4. Cada aplicação leva consigo seu próprio ambiente; um dos benefícios é permitir rodar aplicações mais antigas e novas; outro benefício é não precisar particionar o disco e assim ter que reiniciar o computador para mudar de SO. Virtualização (3) Conceito utilizado: • Emulação: as instruções são executadas via software permitindo emular um hardware totalmente diferente do hardware da máquina real. Ex: emuladores de consoles de video-games emulam o hardware do video-game onde o jogo “pensa” estar executando no video-game mas na verdade esta sendo executado por um emulador no computador. Através da emulação pode-se executar programas para outras arquiteturas, como por exemplo emular um MACintosh no PC, ou um hardware totalmente diferente. • A emulação tem desempenho pior do que a execução no ambiente nativo. Hipervisores Tipo 1 Ele é o SO, o único no modo núcleo, gerencia máquinas virtuais e processos. O SO hóspede acredita estar no modo núcleo, mas de fato está no modo usuário (Modo Núcleo virtual). Em CPUs com Virtualization Technology (VT), quando uma instrução falha, dispara uma armadilha para o núcleo (hipervisor) que inspeciona a origem da instrução (SO ou processo do user), permitindo ou não sua execução, emulando ou não. Hipervisores Tipo 2 Hipervisor do tipo 2 é um programa de usuário sobre um SO hospedeiro. VMWare: carrega um SO hóspede; na carga varre o binário procurando blocos de instruções que terminem com instruções que alterem o fluxo de controle: (jump, call, trap…). Acontece uma tradução binária: substitui instruções sensíveis (q só podem ser executadas no modo núcleo) por instruções do VMWare que as emula. v Hipervisores Tipo 2 Após executar um bloco básico o controle retorna ao VMWare que localiza o próximo bloco. Blocos vão sendo traduzidos, armazenados e executados. Nenhuma instrução vinda do SO hóspede é executada pelo hardware real, mas emuladas. Máquinas que não tem VT podem usar este tipo de virtualização. Estudos mostram que máquinas com VT também tem seu custo como problemas de cache, TLBs… e dependendo da carga de trabalho pode ter desempenho pior. VirtualBox Uma das ferramentas de virtualização disponíveis (Oracle): https://www.virtualbox.org/ “Presently, VirtualBox runs on Windows, Linux, Macintosh, and Solaris hosts and supports a large number of guest operating systems including but not limited to Windows (NT 4.0, 2000, XP, Server 2003, Vista, Windows 7, Windows 8), DOS/Windows 3.x, Linux (2.4, 2.6 and 3.x), Solaris and OpenSolaris, OS/2, and OpenBSD.” Uma máquina virtual (Virtual Machine – VM) pode ser , definida como “uma duplicata eficiente e isolada de uma máquina real”. A IBM define uma máquina virtual como uma cópia isolada de um sistema físico, e esta cópia está totalmente protegida. VirtualBox Esta cópia pode ser importada , exportada, configurada para atender a demanda. A extensão .VDI é o formato nativo do VirtualBox e significa apenas Imagem de Disco Virtual. A extensão .VMDK é o formato original da VMWare, aceito pelo VirtualBox. Paravirtualização SO Paravirtualizado: instruções sensíveis foram removidas e substituídas por uma chamada de uma API para realizar operações como E/S, modificação de registros internos, etc. O hipervisor pode ter parte que faz emulação e parte que é apenas um micronúcleo. Virtualização de Rede (1) Infra-estrutura tradicional de rede http://www.ibm.com/developerworks/linux/lib rary/l-virtual-networking/ Infra-estrutura de rede virtualizada. OBS: Linux incorpora um switch de nível 2 simples dentro do kernel. Nível Aplicação 14 Virtualização de Rede (2) Switch virtual distribuído: Liga vNics e vNics a Nics. “Enables cross-server bridging , making the underlying server architecture transparent. A virtual switch within one server can transparently join with a virtual switch in another server making migration of VMs between servers (and their virtual interfaces) much simpler, because they can attach to the distributed virtual switch in another server and transparently join its virtual switched network”. OpenvSwitch foi comprado pela VMWare . É muito utilizado por cloud Nível Aplicação 15 Fecha Parênteses... Motivação - 3 • Um dispositivo de rede é constituído por um plano de dados que liga as várias portas de rede e um plano de controle que é o cérebro de um dispositivo (implementa um protocolo). • Como concebidos os equipamentos de rede, exigem que determinada função seja implementada de forma distribuída, onde o controle está em cada um dos equipamentos. Roteadores e switches são muito caros principalmente devido aos componentes de controle; • Ao mesmo tempo que cresce a computação elástica, o custo da potência computacional estava diminuindo ao ponto de ter milhares de processadores à disposição. Nível Aplicação 16 Motivação - 4 Ideia: A potência de processamento pode ser aproveitada para executar um plano de controle logicamente centralizado e usar hardware de comutação barato: SDN – Software Defined Networks ou Redes Definidas por Software • Os propositores de SDN perceberam que os fornecedores de equipamentos de rede não atendiam suas necessidades, particularmente quanto a inovação e desenvolvimento. • Se alguém quisesse experimentar um novo protocolo , como o firmware não suportava, fazia-se uma requisição ao fabricante e esperava-se todas as etapas do desenvolvimento (meses, anos…). Nível Aplicação 17 Motivação - 5 ONF – Open Network Foundation – suporta comercialmente os esforços de SDN e é a autoridade de padronização. Previsão de crescimento de SDN ao redor do mundo, divulgada pela ONF em Abril/2013. ( em $Millions ) Nível Aplicação 18 Motivação - 6 • Alguns engenheiros de Stanford criaram um protocolo – Openflow – que implementou esta ideia. • Baseado nesta arquitetura básica, imagina-se o quão rápido e fácil seria projetar um novo protocolo apenas implementando no data center usando hardware em preço de commodities. • Ainda melhor, é possível implementar isto em um ambiente de computação elástica em uma máquina virtual. • A motivação para SDN e OpenFlow foi a flexibilidade de como programar o dispositivo de rede e não onde está a programação. Nível Aplicação 19 Motivação - 7 OpenFlow foi arquitetado para ter diversos dispositivos contendo apenas planos de dados que respondem a comandos enviados para eles de um controlador centralizado que hospeda um único plano de controle para aquela rede; A função de data-path ainda reside no switch, enquanto que as decisões de roteamento de alto nível são movidas para um Controlador, normalmente localizado em um servidor. Os Switches e o Controlador se comunicam através do protocolo OF. Um Controlador adiciona e ou remove entradas da tabela de fluxos em nome da aplicação. Nível Aplicação 20 Motivação - 6 • Joga fora o que foi feito até hoje ? É mais provável uma abordagem híbrida: – pelo qual uma parte das redes sejam operadas por um controlador logicamente centralizado; – outras partes seria executadas pelo plano de controle distribuído mais tradicional. Isso implica que esses dois mundos devem interagir uns com os outros. Nível Aplicação 21 Espectro da Distribuição Revolucionário: Para novas redes Evolucionário: Dispositivos mantém Nívelfunções Aplicação algumas 22 Motivação - 7 • O esforço de empresas (Juniper, Cisco, Level3…) está direcionado para desenvolver programação de rede chamada Interface to the Routing System (I2RS). • Há discussões com IETF e os primeiros rascunhos do IETF estão surgindo. • Ideia básica do I2RS: criar um protocolo e componentes para programar a base de informação de roteamento do dispositivo (routing information base - RIB) usando um protocolo rápido para permitir interação em tempo-real da RIB com o gerente que a controla. • Estudam-se conceitos chaves para acelerar o feedback dado pelos elementos de rede. A chave do sucesso do SDN está na otimização desta comunicação. Nível Aplicação 23 Definição SDN • Software-defined networks (SDN) Uma abordagem arquitetônica que otimiza e simplifica as operações de redes ligando intimamente aplicações e serviços de rede reais ou virtuais. Para este objetivo emprega um ponto de controle central – o controlador SDN – que media e facilita a comunicação entre aplicações que pretendem interagir com os elementos de rede e os elementos de rede que querem transmitir informações a estas aplicações. O controlador expõe e abstrai funções de rede e operações via uma interface programável, bidirecional, moderna e application-friendly. Nível Aplicação 24 Plano de Controle No alto nível, o plano de controle estabelece os dados locais a serem utilizados para criar as tabelas de encaminhamento que serão utilizadas pelo plano de dados para encaminhar o tráfego entre portas de entrada e saída de um dispositivo. • Routing Information Base (RIB): conjunto de dados utilizado para armazenar a topologia da rede • Forwarding Information Base (FIB) : tabela com entradas dos encaminhamentos . A FIB é programada uma vez que a RIB for considerada consistente e estável. Nível Aplicação 25 Plano de Dados Um datagrama correto é processado no plano de dados realizando buscas na FIB que são programadas antecipadamente pelo plano de controle. • Ações resultantes da pesquisa de encaminhamento do plano de dados são: Encaminhar (ou replicar em casos como multicast), descartar, remarcar, contar, enfileirar. Algumas destas ações podem ser combinadas. Nível Aplicação 26 Controle e Dados em Rede típica Situação no interno de um switch: Chegou um pacote no plano de dados (1) que não se sabe o MAC – é passado para o plano de controle (4): aprende informação, atualiza RIB (C). Devolve ao plano de dados (2), eventualmente alterando a FIB, encaminha o pacote (3). OBS: Esquema semelhante para tratar questões do Nível 3. Nível Aplicação 27 Control and Data planes: not a new concept Qualquer roteador ou switch moderno multislot tem seu plano de controle rodando em processador dedicado e o plano de dados executando independente em uma ou mais linhas, cada uma com um processador dedicado. O processador do roteador e as linhas estão conectados sobre uma rede pequena interna de alta velocidade. Nível Aplicação 28 Benefícios da Separação Fatores beneficiados com a separação: • Escalabilidade e inovação: cada parte pode crescer e inovar independente da outra (com menos amarras); • Custo: deve ser reavaliado – hardware mais barato pois menos especializado, software mais sofisticado. • Evolução: possibilidade de desenvolver novas soluções independentes de fabricante. • Estabilidade: código em expansão se torna “colcha de retalho”, sendo complexo e frágil; espera-se código menor e portanto mais estável. • Complexidade: o número de “executores” de protocolo em um modelo consistente de controle distribuído pode criar complexidade de gerência e operações. ( quanto tempo vai levar para o plano de controle estabilizar a respeito de uma rede livre Nível Aplicação 29 de loops? ) Planos Distribuídos/Centralizados • Modelo distribuído: os elementos participam para desenvolver uma visão local consistente (livre de loops). Pelo tempos de propagação envolvidos com as atualizações de alcance, o modelo é chamado de consenso eventual, pois, a menos de uma rede caseira, formam-se grafos complexos que por alguns instantes podem conter inconsistências. • O modelo distribuído de controle existe em parte por que não existiam características disponíveis nas bases de dados, e seria difícil conseguir a sincronização exigida para alta disponibilidade entre dois ou mais pontos de controle. • Com a abordagem centralizada, uma rede grande que tenha uma mudança não precisa tocar individualmente cada elemento, mas interage com poucos pontos de controle que cuidam dos detalhes. Nível Aplicação 30 Lógico x Literal A centralização literal traz as dificuldades: • Escalabilidade: como um ponto central daria conta de sessões com cada equipamento gerenciado? • Alta disponibilidade: se um único ponto falhar, a rede toda falhará; • Distância geográfica: Manter um ponto próximo facilita operação e minimiza atrasos. Plano de controle centralizado logicamente faz mais sentido que centralizado literalmente: algum protocolo deve sincronizar os controladores fisicamente distribuídos. Nível Aplicação 31 Arquitetura Openflow Alguns aplicativos de controle estão no topo do controlador emulando o comportamento dos aplicativos de controle tradicionais. Nível Aplicação 32 OF - Operation Nível Aplicação 33 Controlador No mundo OF, o controlador é o rei! Um Controlador adiciona e ou remove entradas da tabela de fluxos em nome da aplicação: • Controladores estáticos: estaticamente estabelecem fluxos que interliguem um cjto de comps de teste durante um experimento. • Controladores dinâmicos: mais sofisticados adicionam / removem fluxos enquanto a experiência progride. Existem diversas maneiras para customizar o experimento OF: • Fazer o Download, e configurar um controlador existente. • Ler as Especificações do OpenFlow e fazer tudo do zero : Escrever o seu proprio controlador para manipular cerca de 20 mensagens do protocolo OpenFlow; • Mais Recomendavel: extender um controlador existente. Ex. Escrever um Modulo para NOX : www.noxrepo.org Nível Aplicação 34 Controladores disponíveis Outras informações (Reunião Semestral da ANSP - RSA4): • MUL – O melhor: em C, focado em performance; • Maestro – segundo melhor, em Java • Floodlight – Java – terceiro melhor. • Ryu – python - ruim: o programador tem que conhecer a especificidade do OF Nível Aplicação 35 Ferramenta - Mininet (1) • Grande ferramenta de testes e desenvolvimento, ideal para fase de prototipação. Google usa algo como mininet antes da implantação. • Rede Virtual na Comodidade da sua Maquina (Espaço do usuário => leve) • Topologias e Quantidades de Nós Arbitrárias mininet.org: “Mininet is distributed as a virtual machine (VM) image with all dependencies pre-installed, runnable on common virtual machine monitors such as VMware, Xen and VirtualBox. This provides a convenient container for distribution; once a prototype has been developed, the VM image may be distributed to others to run, examine and modify.” Nível Aplicação 36 Mininet (2) • É possível escrever scripts para ativá-lo: A API de Mininet permite criar redes customizadas com algumas poucas linhas de Python: from mininet.net import Mininet from mininet.topolib import TreeTopo tree4 = TreeTopo(depth=2,fanout=2) net = Mininet(topo=tree4) net.start() h1, h4 = net.hosts[0], net.hosts[3] print h1.cmd('ping -c1 \%s' \% h4.IP()) net.stop() Cria uma pequena rede (4 hosts, 3 switches), e realiza pings de um host para o outro (por cerca de 4 segundos) Nível Aplicação 37 Virtualização do OF com VLANs Alguns equipamentos permitem usar VLANs com diferentes controladores. Nível Aplicação 38 Virtualização com FlowVisor (1) https://openflow.stanford.edu/display/DOCS/Flowvisor: “FlowVisor is a special purpose OpenFlow controller that acts as a transparent proxy between OpenFlow switches and multiple OpenFlow controllers. FlowVisor creates rich ''slices'' of network resources and delegates control of each slice to a different controller Slices can be defined by any combination of switch ports (layer 1), src/dst ethernet address or type (layer 2), src/dst IP address or type (layer 3), and src/dst TCP/UDP port or ICMP code/type (layer 4). FlowVisor enforces isolation between each slice, i.e., one slice cannot control another's traffic” Nível Aplicação 39 Virtualização com FlowVisor (2) A rede física pode ser separada entre os 3 controladores oferecendo uma parte do controle para cada um, de acordo com a política. Nível Aplicação 40 VLAN e FlowVisor Um equipamento que tem VLAN de Produção normal, VLAN com o uso de OpenFlow, VLAN para uso do FlowVisor Nível Aplicação 41 Tarefas do Bimestre - 1 Áreas de Pesquisa a escolha do aluno: 1. SDN for sharing resources: QoS, load balancing, admission control... 2. SDN in Wireless: (Mininet manipula? ) Abordagem atual: usar Linux para Sistemas Embarcados (OpenWrt) inserindo OF; 3. SDN and Security; 4. SDN controllers: estudar como centralizar logicamente, estratégias para hierarquizar controladores, flowvisor. Passos da primeira tarefa do bimestre: 1. Escolha uma área de seu interesse entre estas 4 acima; 2. Faça um levantamento bibliográfico do tema: procure entender o estado da arte nesta área. Que problemas existem? Que soluções já foram encontradas? Quais as melhores soluções? 3. Monte uma apresentação contendo uma visão geral da área e a melhor solução que encontrou. Nível Aplicação 42 Tarefas do Bimestre - 2 Parte Prática: 1. Instale o VirtuallBox com uma máquina Ubuntu e estude-o; 2. Instale o mininet e crie uma minirede - estude-o; 3. “Enxergue” o protocolo OF em operação; 4. Instale um controlador de seu gosto e crie regras a serem discutidas ao longo do bimestre, de acordo com a área escolhida. Nível Aplicação 43