Ponte de rede virtual: por que precisa ter um endereço IP atribuído a ela?

Ponte de rede virtual: por que precisa ter um endereço IP atribuído a ela?

Estou configurando uma máquina virtual QEMU/KVM e queria usar uma rede bridge para isso. Em todos os manuais/tutoriais que li, diz para desabilitar o DHCP na NIC física e habilitá-lo na ponte. O que não entendo é que se a ponte funciona exatamente como uma ponte/switch física, por que ela precisa ter um endereço IP atribuído a ela enquanto a NIC física real não tem um? Esta pergunta já foi feita algumas vezes, mas ainda não encontrei uma resposta, por exemploaquia resposta dizia que desta forma as VMs podem se comunicar com a ponte. Mas por que eles precisam? Com máquinas físicas reais, uma ponte funciona de forma transparente e apenas encaminha o tráfego. Então, minhas perguntas são:

  1. Por que uma ponte virtual precisa de um endereço IP e uma ponte física não?
  2. Como a NIC física sabe usar o endereço IP da ponte virtual quando a NIC não possui um?
  3. Por que as VMs precisam se comunicar com a ponte enquanto as máquinas físicas não se comunicam diretamente com uma ponte física?

Aqui estão algumas ilustrações para mostrar melhor o que quero dizer:

  1. Como imagino que funciona uma rede física com um switch de rede:

Como imagino que funciona uma rede física com um switch de rede

  1. Como imagino que uma ponte virtual ~deveria~ funcionar

Como imagino que uma ponte virtual ~deveria~ funcionar

  1. Como eu entendo que realmente funciona

Como eu entendo que realmente funciona

Responder1

  1. Por que uma ponte virtual precisa de um endereço IP e uma ponte física não?

É um equívoco pensar que uma ponte virtual precisa de um endereço IP. Não precisa disso.

Você realmentepodetem uma ponte virtual sem endereço IP. Mas então o host em si não será acessível por IP nessa interface física: apenas as VMs o farão.

Em um host de virtualização empresarial, isso pode ser útil: você pode ter uma rede de cliente que precisa estar conectada às VMs dos clientes. Talvez você não queira conceder acesso dessa rede ao próprio host de virtualização, masapenaspara as respectivas VMs. Então você teria outra rede de gerenciamento fisicamente separada que usaria para administrar seus hosts de virtualização. Esta rede seria conectada ao host através de uma NIC separada quenãoser membro de qualquer ponte virtual.

  1. Como a NIC física sabe usar o endereço IP da ponte virtual quando a NIC não possui um?

A menos que a NIC física tenha recursos específicos de aceleração IPv4, um endereço IP é apenas dados de carga útil para a NIC. Uma NIC física básica funciona apenas com Camada 2, ou seja, com endereços MAC. O protocolo IP é Camada 3 e geralmente é deixado para a pilha de drivers de rede do sistema operacional. Quando você "configura um endereço IP para uma NIC" com ifconfigou ip addr, você não necessariamente faz nenhuma alteração na configuração real do hardware físico, mas em uma construção abstrata que inclui a NIC física e o suporte ao protocolo IP no nível do sistema operacional associado a a NIC.

Quando uma NIC física é configurada para atuar como membro de uma ponte, qualquer recurso de aceleração da Camada 3 pode precisar ser desativado de qualquer maneira: ao atuar como parte de uma ponte, a NIC precisa receber todos os pacotes recebidos, independentemente da endereço MAC ou IP de destino e o código da ponte decidirão se o pacote será encaminhado e para qual membro da ponte. Uma ponte básica não deve se preocupar com endereços IP. Qualquer funcionalidade da Camada 3 em uma ponte vai além da funcionalidade básica da ponte e é/deve ser opcional em uma ponte virtual.

Se a NIC física estiver configurada com um endereço IP quando configurada como parte de uma ponte, ela ativará a funcionalidade ARP nessa NIC (+ seu driver). Mas as mensagens ARP de saída dessa NIC física não serão capazes de alcançar as VMs: para alcançar todo o segmento com seus ARPs (conforme exigido pela funcionalidade adequada da Camada 2), o driver da NIC teria que gerar a mensagem ARP como uma mensagem de saída. & mensagem recebida simultaneamente, e o driver NIC não terá o código para fazer isso.

Ter uma ponte virtual com VMs significa que algumas partes do segmento IP da ponte estarão fisicamente fora do host, enquanto outras estarão contidas nas VMs localizadas dentro do host. Se o host usasse a NIC normalmente na tentativa de se comunicar com uma das VMs, os pacotes seriam enviados desnecessariamente do host para o switch físico ou roteador ao qual o host está conectado e, a partir daí, eles teriam que volte para o host e através da ponte para a VM de destino.

Isso certamente seria ineficiente e poderia nem funcionar: o switch físico ao qual o host com a ponte virtual está conectado normalmente não teria motivo para enviar quaisquer pacotes originados desse host de volta ao próprio host.

Em vez disso, os pacotes de saída do host para o segmento de rede em ponte devem ser enviados através do código da ponte, que primeiro procura qual interface da ponte (virtual ou física) estaria “mais próxima” do destino. Se o destino for conhecido pela ponte, o pacote de saída será enviado diretamente para ela. Para a comunicação entre o host e suas VMs, isso significa que a comunicação acontece inteiramente dentro do host físico e não utiliza a largura de banda da rede física fora do host.

Se o endereço MAC de destino não for conhecido pela ponte, os pacotes de saída são inicialmente enviados para todas as interfaces membros da ponte: assim que uma resposta for recebida, a ponte aprenderá a localização do destino do pacote inicial e poderá voltar ao método eficiente de operação (como acima).

Ao fazer solicitações ARP do host que contém a ponte, as solicitações devem ser transmitidas tanto para as VMsea NIC física para que as solicitações sejam realmente enviadas para otodosegmento de rede: o código da ponte pode fazer isso, a NIC física individual não.

Acho que não há exigência de que uma ponte Linux seja exclusivamente física ou virtual: não vejo por que uma ponte Linux não poderia ter múltiplas interfaces físicasequalquer número de VMs associadas a ele. Mas em um ambiente corporativo, geralmente você não gostaria de criar um "host que faça tudo" como esse. Poderia facilmente tornar-se uma peça de infra-estrutura complicada e crítica, que nunca pode ter qualquer tempo de inatividade; em outras palavras, uma dor de cabeça para os administradores do sistema.

  1. Por que as VMs precisam se comunicar com a ponte enquanto as máquinas físicas não se comunicam diretamente com uma ponte física?

Novamente o equívoco: as VMs fazemnãoprecisa de um endereço IP na ponte "para se comunicar com a ponte" como tal.

Mas se vocêquererpara que o host e as VMs possam se comunicar entre si no mesmo segmento de rede IP, atribuir um endereço IP ao dispositivo bridge é a maneira de fazer isso.

O endereço IP no dispositivo bridge existe principalmente para atender às necessidades de comunicação dohospedar, não doVMs- mas pode permitir que o host se comunique com as VMs por IP de maneira eficiente, sem passar por dispositivos externos, se desejar.

informação relacionada