Virtualização para redes

Concluído

Grandes data centers fazem parte da infraestrutura básica que dá suporte aos serviços de nuvem. Para serem econômicos, esses data centers devem ter redes ágeis fáceis de configurar e atualizar. Essas redes também devem se prestar ao conceito de virtualização de rede. É na virtualização de rede que você cria redes virtuais sobre redes físicas, de modo semelhante a como criar máquinas virtuais em servidores físicos. Embora uma compreensão completa da rede do data denter e de suas tecnologias subjacentes esteja além do escopo deste módulo, é importante entender o motivo da virtualização de rede.

Desafios na criação de data centers na nuvem

Redes de computador são coleções de nós e links. Um nó é qualquer dispositivo de rede, como um comutador, um roteador ou um servidor. Um link é uma conexão física ou lógica entre dois nós na rede. As redes também têm recursos de identificação (endereços) e marcas de rotulagem. Geralmente, você também precisa de um mecanismo para identificar dispositivos (endereço IP e endereço MAC), links (ID do fluxo) e redes (ID da VLAN e ID de VPN) para gerenciar e monitorar uma infraestrutura virtualizada. Estruturas organizacionais de alto nível, como topologias de rede, são criadas com a montagem desses recursos.

Os designers de grandes redes de data center devem enfrentar vários requisitos (às vezes contraditórios)1. Eles devem:

  • Verificar se a topologia usada é escalonável para lidar com a demanda futura
  • Maximizar a taxa de transferência e minimizar o custo de hardware
  • Garantir que o design garanta a disponibilidade e a integridade do sistema apesar de falhas
  • Ter recursos de economia de energia para diminuir os custos operacionais (e ser ecológico)

Uma consideração importante na criação da rede para um grande data center é selecionar a malha de rede correta. As opções incluem Ethernet, InfiniBand e outras malhas de alta velocidade, como Myrinet. Cada uma tem custo, latência, largura de banda e critérios de comunicação diferentes e deve ser escolhida com cuidado. Uma comparação física dessas malhas não está dentro do nosso escopo. O que nos interessa mais é a topologia e o esquema de endereçamento selecionados para interconectar esses recursos. Por exemplo, se optarmos por usar uma rede endereçada por Ethernet em que os pontos de extremidade são identificados com um endereço MAC de 6 bytes simples, é provável que essa rede seja simples. Isso significa que cada interface recebe um endereço MAC que não depende de seu local. Uma configuração como essa torna o roteamento difícil e o encaminhamento de tabelas grande, pois todos os endereços devem ser armazenados.

Por isso, contamos principalmente com o roteamento hierárquico para criar redes escalonáveis. O endereçamento e o roteamento geralmente contam com o roteamento baseado em IP, em que cada ponto de extremidade recebe um endereço IP conforme seu local na hierarquia. No entanto, isso limita a mobilidade de máquinas virtuais: a migração de uma VM de um host para outro deve ser tratada usando uma política diferente. Além disso, muitas vezes é difícil alocar endereços IP de forma determinista, pois isso revelaria informações sobre o local do servidor de VM. A seleção da topologia de rede do data center é uma área de pesquisa ativa, com o foco em topologias tanto fixas quanto flexíveis que podem ser baseadas em árvore ou ser recursivas.

Além da topologia e do esquema de endereçamento, é importante decidir sobre o mecanismo de roteamento. No roteamento centralizado, um único controlador central cria tabelas de pesquisa para determinar a ação de encaminhamento. Esse método é ideal em teoria, pois o controlador central tem visibilidade completa da rede do data center e torna mais fácil configurar e entender o impacto das falhas. No entanto, o controlador introduz um gargalo e um ponto único de falha e resulta em uma grande sobrecarga na propagação de tabelas de encaminhamento. Em vez de roteamento centralizado, podem ser usadas abordagens distribuídas em que as decisões se baseiam nas informações locais em cada roteador e comutador.

O tráfego dentro de grandes data centers pode ser cuidadosamente projetado para minimizar o congestionamento e a latência. Os grupos de pacotes serão categorizados como "fluxos" se estiverem relacionados de modo sequencial ou lógico. Os protocolos de roteamento fazem o balanceamento de carga distribuindo dados que se deslocam entre dois nós entre vários caminhos paralelos. O design de um data center deve ser otimizado para os padrões de fluxo específicos dentro dele. É por isso que a capacidade de analisar o tráfego é importante para um designer de data center. Os protocolos de roteamento devem ter reconhecimento de estado, de modo que favoreçam rotas ociosas em relação às ocupadas e os fluxos sejam distribuídos em vários caminhos paralelos.

Por fim, as redes do data center devem ser projetadas para tolerância a falhas. Tais redes geralmente usam protocolos gossip, em que os vizinhos falam uns com os outros para compartilhar informações sobre falhas rapidamente. É importante projetar esses mecanismos para que eles não consumam grandes quantidades de largura de banda. Também deve haver mecanismos para se recuperar de falhas e reincorporar os componentes com falha dentro da rede.

Virtualização de rede

Agora, fica claro que a implementação de uma grande rede de data center é complexa e precisa de uma abstração de nível superior para ser fácil de criar e configurar. No entanto, a situação é ainda mais complexa para data centers na nuvem, em grande parte devido a requisitos de multilocação. O paradigma de computação em nuvem só será relevante se puder garantir o isolamento entre vários locatários. Um provedor de serviços de nuvem deve garantir o isolamento de tráfego para que o tráfego de um locatário não seja visível para outro. Por exemplo, os pacotes transmitidos para ou de um aplicativo bancário hospedado em um locatário não devem ser visíveis para um aplicativo de jogos em outro locatário. O espaço de endereço também deve ser isolado para que cada locatário tenha acesso ao seu próprio espaço de endereço privado.

O tráfego e o isolamento de espaço de endereço são obtidos pela criação de redes virtuais para cada locatário, sendo o tráfego entre essas redes restrito a alguns canais estritamente definidos. Essas redes virtuais são criadas como "sobreposições" sobre redes físicas. Uma rede de sobreposição é uma rede virtual em que a separação de locatários está oculta da infraestrutura física subjacente. Isso é feito de modo que a rede de transporte subjacente não precise saber sobre os diferentes locatários para encaminhar corretamente o tráfego. A virtualização de rede refere-se ao provisionamento dessas sobreposições, associando-as às interfaces de rede do locatário e mantendo o ciclo de vida dessa rede conforme instâncias de VM são iniciadas, interrompidas e encerradas2.

Um dos benefícios importantes da virtualização da rede é permitir a migração de VM entre os hosts ao mesmo tempo retendo seu estado de rede (endereços IP e MAC). Alterações aos endereços MAC causam muitas interrupções inesperadas, por exemplo, invalidando licenças de software. Os hosts físicos podem ser atribuídos a endereços IP hierarquicamente, enquanto uma VM pode ter um endereço IP de um pool de endereços válidos para essa sub-rede.

Outro driver para virtualização de rede é a maior complexidade na manutenção de tabelas de encaminhamento. Em vez de manter um único endereço MAC por servidor físico, os data centers de nuvem devem manter um endereço MAC para cada VM. Isso leva a uma demanda significativa na capacidade do nó de encaminhamento.

A virtualização também ajuda a fornecer locatários individuais com controle sobre os endereços que eles usam em sua exibição da rede. Portanto, a rede de sobreposição deve fornecer locatários com a capacidade de usar qualquer endereço desejado, sem precisar verificar as redes de todos os locatários vizinhos. Esses endereços também devem ser independentes dos endereços usados pela infraestrutura do provedor de serviço de nuvem. As redes virtuais usam essa separação de endereço para limitar o escopo de pacotes enviados. Os pacotes têm permissão para cruzar limites de rede apenas por meio de pontos de saída controlados.

Por fim, a presença de vários locatários e a superconfirmação da largura de banda da rede compartilhada leva a um desafio de gerenciamento de fluxo e tráfego. Os CSPs devem garantir uma QoS (qualidade de serviço) de acordo com os SLAs garantidos e devem moldar o tráfego de cada locatário de acordo com a utilização de pico provisionada.

Em resumo, a virtualização de rede é simplesmente um mecanismo de compartilhamento que permite que várias redes virtuais isoladas usem a mesma infraestrutura de rede física. Esse compartilhamento permite que as redes virtuais sejam alocadas dinamicamente e implantadas sob demanda precisamente como máquinas virtuais3. Em um nível prático, os consumidores de serviços de nuvem devem ser capazes de implantar redes virtuais compatíveis com todos os recursos de redes físicas, incluindo sub-redes, endereçamento CIDR (Rotina Interdomínios Sem Classificação), firewalls e emparelhamento para computação em nuvem para ser um paradigma de computação útil. Isso é exatamente o que os provedores de serviço de nuvem, como Amazon, Microsoft e Google, permitem que você faça.

Estudo de caso: Redes virtuais no Azure

Todos os principais provedores de serviços de nuvem dão suporte a redes virtuais, embora às vezes usem diferentes terminologias e abstrações. O Azure, por exemplo, não oferece firewalls virtuais, mas dá suporte a NSGs (grupos de segurança de rede), que são uma abstração de firewalls. A Figura 10 mostra uma VNet (rede virtual) do Azure configurada para fornecer conteúdo aos clientes de servidores Web virtuais observados por um balanceador de carga virtual ao qual é atribuído um endereço IP público virtual. O balanceador de carga e as VMs do servidor Web estão localizados em uma sub-rede, enquanto os bancos de dados de back-end e outros recursos são isolados em uma sub-rede totalmente diferente. Cada sub-rede está em um NSG diferente, com regras de firewall diferentes aplicadas a cada uma. Por exemplo, a sub-rede voltada para o público abre as portas 80 e 443 para o mundo exterior para dar suporte ao tráfego HTTP e HTTPS, enquanto a sub-rede privada é acessível somente da outra sub-rede e abre somente as portas necessárias para que os servidores Web conectem-se aos bancos de dados. O diagrama não mostra os outros recursos de rede virtual, como NICs (adaptadores de rede) virtuais que conectam as VMs à rede.

Figure 10: Virtual network in Azure.

Figura 10: Rede virtual no Azure.

Isso espelha a topologia que você pode projetar para uma rede física para dar suporte à segurança e à escalabilidade. E mal toca a superfície do que os administradores de nuvem talentosos podem realizar com redes virtuais. O Azure, por exemplo, dá suporte ao emparelhamento VNet. Essa tecnologia permite que duas ou mais redes virtuais sejam conectadas, mesmo que as redes estejam localizadas em diferentes regiões do Azure. Ela também dá suporte a VPNs (redes virtuais privadas) ponto a site e site a site, que permitem que dispositivos locais e dispositivos de rede conectem-se com segurança às redes virtuais. Por fim, o Azure ExpressRoute fornece conectividade segura, dedicada e de alta largura de banda entre redes locais e redes virtuais. A AWS e o Google fazem o mesmo por meio de serviços como a Nuvem Privada Virtual (AWS e Google), o AWS Direct Connect e o Google Cloud InterConnect.

Em resumo, a rede virtual é uma tecnologia tão madura quanto as máquinas virtuais, e não é menos importante no contexto da computação em nuvem. Embora os detalhes sejam quase todos ocultos dos usuários, os data centers e suas redes são projetados intencionalmente por especialistas para dar suporte à rede virtual e a tudo o que ela envolve.

Referências

  1. Liu, Yang and Muppala, Jogesh K and Veeraraghavan, Malathi and Lin, Dong and Hamdi, Mounir (2013). "Data Center Networks: Topologies, Architectures and Fault-Tolerance Characteristics." Springer Science and Business Media.

  2. Liu, Yang and Muppala, Jogesh K and Veeraraghavan, Malathi and Lin, Dong and Hamdi, Mounir (2014). "Problem statement: Overlays for network virtualization." RFC 7364.

  3. Wen, Heming and Tiwary, Prabhat Kumar and Le-Ngoc, Tho (2013). "Wireless virtualization." Springer.

Verificar seu conhecimento

1.

Qual é o principal motivo para colocar recursos do Azure em NSGs (grupos de segurança de rede) separados?

2.

O Azure dá suporte ao emparelhamento VNet para VNets na mesma região e ao emparelhamento VNet global para VNets em diferentes regiões do Azure. Qual é a finalidade do emparelhamento VNet?