Geralmente, uma ponte de rede é um dispositivo L2 que conecta vários segmentos de rede em um. Ele não possui IPs e basicamente apenas envia quadros para todos os segmentos, exceto aquele do qual foi recebido (ou mais inteligente).
Mas com uma ponte Linux você obtém uma interface com um endereço IP. Considere o seguinte diagrama com docker
contêineres:
(fonte: docker.com )
Neste caso, as interfaces de que estou falando são docker0
e my_bridge
.
Em seguida, você usa veth
pares para conectar contêineres a uma ponte. Uma extremidade de um veth
par é representada por uma interface com um endereço IP que você pode ver em um contêiner. A outra extremidade não tem endereço IP, pertence ao namespace de rede do host. E você pode ver master docker0
ou algo próximo a ele na ip a
saída. Pode-se pensar nessa extremidade de um par como um conector que você conecta na porta de uma ponte.
Além disso, posso ver a 172.17.0.0/16 dev docker0 ...
regra na tabela de roteamento do host, que possibilita o envio de pacotes do host para um contêiner.
Mas também posso enviar pacotes de um contêiner para a eth0
interface do host. Que está em uma sub-rede diferente. E não consigo ver ao lado da interface master docker0
do host na saída. O que provavelmente não faria sentido de qualquer maneira, já que uma ponte não pode conectar diferentes sub-redes. Portanto, esta parte (e a do parágrafo anterior) provavelmente não pode ser considerada parte da ponte. Em vez disso, como um comportamento extra que vem com uma ponte Linux.eth0
ip a
Além disso, quando envio pacotes de um contêiner para outro, posso vê-los no namespace de rede do host (o host os iptables
processa).
Não importa o quanto eu tente, não consigo imaginar um diagrama com uma ponte Linux que eu não possa escolher. Quanto ao diagrama acima, parece que a ponte conecta diferentes sub-redes, o que uma ponte física não pode realizar.
Eu provavelmente prefiro colocar a ponte entre my_bridge
e veth
pares. Mas então deve-se admitir que você conecta as extremidades dos veth
pares em my_bridge
, não na ponte. E isso com uma ponte vem a capacidade de enviar pacotes do host para um contêiner e de um contêiner para a eth0
interface do host.
Portanto, parece que uma ponte Linux é uma ponte de rede com algumas reviravoltas extras. E você não pode facilmente descrevê-lo em um diagrama sem introduzir imprecisões, pode? Eu estava errado sobre alguma coisa acima?
Você descreveu e sua imagem mostra o roteamento entre duas pontes e uma interface física que não faz parte de uma ponte. Entre as muitas outras coisas que o Linux faz é o roteamento da camada 3, e é isso que está acontecendo quando os pacotes fluem entre as pontes e a interface física que não faz parte de nenhuma ponte.