Redes virtuais para data centers definidos pelo software

Concluído(a)

Uma pilha de aplicativos geralmente inclui firewalls, balanceadores de carga, servidores Web, servidores de aplicativos, bancos de dados etc. Tradicionalmente, esses recursos costumavam ser executados em segmentos de rede separados, pois eles precisavam se comunicar entre si usando uma rede de backplane antes de responder ao usuário externo. Em datacenters tradicionais, a rede foi segmentada usando VLANS (LANs virtuais) de Camada 2, que são um mecanismo para restringir o domínio de difusão de cada segmento de LAN e particionar a rede.

Infelizmente, o provisionamento de uma VLAN para criar um segmento de rede é uma tarefa altamente manual, que envolve a configuração de um hipervisor vSwitch (comutador virtual), bem como das portas físicas para todos os comutadores no segmento de rede. Devido a essa configuração manual, a escalabilidade da VLAN é ruim. (A maioria dos comutadores de rede comercial oferece apenas um máximo de 4K de VLANs.) A virtualização de servidores levou a uma explosão no número de máquinas virtuais que, por sua vez, aumentaram a complexidade da infraestrutura e dos serviços de rede. O provisionamento manual se torna quase impossível devido à escala e à complexidade que surgem como resultado dos recursos dinâmicos de VM, tais como o provisionamento, o posicionamento e a migração dinâmica.

A complexidade dessas redes levou ao aumento da complexidade da inteligência de comutação, o que tornou o hardware de rede mais caro. Ela também levou ao bloqueio de fornecedores, pois a maior parte da infraestrutura de roteamento tem uma interoperabilidade ruim. As redes tradicionais não apresentavam padrões de interface aberta bem definidos. Por fim, os data centers eram restritos pelas propriedades de protocolos de rede tradicionais, que não se adaptavam bem à realocação dinâmica de recursos ou à colocação dos servidores isolados.

A tecnologia de virtualização de rede e a rede definida pelo software fornecem uma solução para esse problema de várias VMs, que podem ser colocadas dinamicamente e migradas em tempo real dentro do datacenter. Uma rede virtualizada inclui recursos dinâmicos como criação, exclusão, migração, configuração, captura de instantâneo e reversão de estado.

Rede definida pelo software

A rede definida pelo software é uma abordagem da rede de computadores que dissocia o plano de dados (que encaminha o pacote na camada de hardware) do painel de controle (que decide as regras de encaminhamento de pacotes). As SDNs usam um controlador centralizado, que programa o plano de dados usando APIs bem definidas para modificar o fluxo da rede. Confira a Figura 2 para entender as várias partes da pilha.

Planos de componentes da SDN.

Figura 2: Planos de componentes da SDN

O vídeo a seguir fornece mais detalhes sobre a rede definida pelo software.

Arquitetura da SDN

As SDNs são notavelmente flexíveis. Elas podem operar com diferentes tipos de comutadores e em diferentes camadas do protocolo. Os controladores e comutadores da SDN podem ser implementados para comutadores Ethernet (Camada 2), roteadores de Internet (Camada 3), comutação de transporte (Camada 4) e até mesmo na camada de aplicativo (Camada 7). A SDN conta com as funções comuns encontradas nos dispositivos de rede, que basicamente envolvem o encaminhamento de pacotes com base em algum formulário ou em alguma definição de fluxo.

Do ponto de vista de um comutador individual, um fluxo é uma sequência de pacotes que corresponde a uma entrada específica em uma tabela de fluxo. Uma tabela de fluxo corresponde aos pacotes de entrada de um fluxo específico e especifica as funções que serão executadas nos pacotes. Uma combinação de entradas da tabela de fluxo em vários comutadores associa um fluxo a um caminho.

Em uma arquitetura de SDN, um comutador virtual ou físico executa as seguintes funções:

  • O comutador encapsula e encaminha o primeiro pacote de um fluxo para um controlador da SDN, permitindo que o controlador decida se o fluxo deve ser adicionado à tabela de fluxo do comutador.
  • O comutador encaminha os pacotes de entrada para a porta apropriada com base na tabela de fluxo. A tabela de fluxo pode incluir informações de prioridade ditadas pelo controlador.
  • O comutador pode soltar pacotes em um fluxo específico, temporária ou permanentemente, conforme determinado pelo controlador, para fins de segurança. Essa função restringe os ataques de DoS (negação de serviço) ou os requisitos de gerenciamento de tráfego (controle de congestionamento).

O controlador da SDN gerencia o estado de encaminhamento dos comutadores usando APIs que permitem ao controlador endereçar uma ampla variedade de requisitos de operador sem alterar nenhum dos aspectos de nível inferior da rede, incluindo a topologia.

Com a dissociação dos planos de dados e painéis de controle, a SDN habilita os aplicativos a lidarem com um dispositivo de rede abstraído sem preocupação com os detalhes de como o dispositivo opera. Os aplicativos de rede enxergam uma API para o controlador. Assim, é possível criar e implantar rapidamente aplicativos para orquestrar o fluxo de tráfego de rede para atender a requisitos empresariais específicos de desempenho ou segurança.

O controlador centralizado da SDN pode ser usado para provisionar, gerenciar e desmontar as redes virtuais com eficiência em uma malha de IP físicos. O controlador da SDN fornece uma API padronizada para um aplicativo de orquestração de nuvem a fim de programar os elementos de rede em um datacenter para fornecer redes virtuais sob demanda. Caso uma VM seja migrada, o controlador da SDN cuidará da modificação das tabelas de fluxo nos elementos de rede para restabelecer a rede virtual. Esse tipo de flexibilidade não poderá ser fornecido se a configuração for feita manualmente.

Usando essas técnicas, as SDNs criam uma rede de sobreposição lógica que isola os componentes de rede entre diferentes locatários, enquanto permite simultaneamente que as VMs de um mesmo locatário existam no mesmo domínio de difusão de Camada 2. Isso é permitido mesmo se ambos os dispositivos residem fisicamente em datacenters diferentes. Ao abstrair a rede física, os provedores de nuvem podem alocar os endereços IP privados e públicos (voltados para a Internet) para VMs e até mesmo permitir que eles sejam realocados dinamicamente, sem exigir nenhuma reconfiguração manual.

Isolamento usando as SDNs

Ter um controlador central permite que o painel de controle tenha uma exibição global. Isso reduz a necessidade de protocolos complexos, como o Spanning Tree Protocol, para os caminhos de computação. Em vez disso, um algoritmo de caminho mais curto simples (por exemplo, Dijkstra) pode ser usado para calcular a topologia. Isso remove a complexidade do plano central, permite a reconfiguração rápida das arquiteturas de rede, além de adicionar e atualizar regras de segurança, tudo isso usando uma API simples.

O isolamento entre locatários é um aplicativo de SDN crítico na nuvem. Ao especificar fluxos de rede separados, dependendo do locatário, várias redes virtuais podem ser sobrepostas em uma rede física. Essas redes virtuais podem até mesmo ter sobreposição de espaço de endereços IP. Considere o caso de dois locatários de nuvem, Yellow e Red, colocalizados no mesmo rack de um datacenter (Figura 3). Eles podem compartilhar a mesma infraestrutura subjacente, embora isolados usando uma abstração de nível superior.

Exibição lógica de uma sobreposição de rede.

Figura 3: Exibição lógica de uma sobreposição de rede

Uma forma de alcançar o isolamento entre as redes dos locatários Red e Yellow é usando o túnel de rede. Normalmente, as seguintes etapas ocorrem para o tráfego de túnel:

  1. O aplicativo em execução na VM considera-a anexada a um segmento de LAN e envia um quadro de Ethernet na VNI (adaptador de rede virtual).

  2. O vSwitch recebe o pacote da VM e o encapsula. O método de encapsulamento (Figura 4) pode ser um dos seguintes:

    • VXLAN (LAN extensível virtual)
    • NVGRE (virtualização de rede usando o encapsulamento de roteamento genérico)

    Métodos de encapsulamento.

    Figura 4: Métodos de encapsulamento

  3. A pilha de IP do kernel adiciona o endereço IP e MAC de destino do hipervisor de destino e o envia na malha de IP físico.

  4. No destino, a pilha de IP do kernel extrai o endereço IP e MAC externo, lê os cabeçalhos de encapsulamento para determinar a VM de destino e entrega o pacote à VNI da VM de destino.

O fluxo geral de um pacote do aplicativo de origem para o aplicativo de destino é ilustrado na Figura 5.

Fases do pacote em uma rede virtualizada.

Figura 5: Fases do pacote em uma rede virtualizada

A rede definida pelo software entra em cena nas etapas 2 e 3 do processo de túnel acima. O software em execução no vSwitch do hipervisor inspeciona os pacotes e solicita ao controlador centralizado da SDN que adicione uma especificação de fluxo. A especificação de fluxo é usada para corresponder a tupla {VM, endereço de origem, endereço de destino} a uma ação de fluxo que adiciona o cabeçalho de encapsulamento e o cabeçalho externo de MAC e IP, conforme mostrado na Figura 5. O controlador SDN sabe qual cabeçalho externo adicionar, pois tem uma exibição global de todos os recursos e o software no controlador roteia os fluxos de acordo.