Linux虚拟网络基础 — Bridge

bridge是一个虚拟网络设备,具有网络设备的特性(可以配置IP、MAC地址等);而且bridge还是一个虚拟交换机,和物理交换机设备功能类似。

bridge是用于连接两个不同网段的常见手段,不同网络段通过bridge连接后就如同在一个网段一样,工作原理很简单就是L2数据链路层进行数据包的转发。

对于普通的网络设备,就像一个管道,只有两端,数据从一端进,从另一端出。而 Bridge 有多个端口,数据可以从多个端口进,从多个端口出。

Bridge 的这个特性让它可以接入其他的网络设备,比如物理设备、虚拟设备、VLAN 设备等。Bridge 通常充当主设备,其他设备为从设备,这样的效果就等同于物理交换机的端口连接了一根网线。

应用场景

虚拟机

虚拟机通过tun/tap或者其它类似的虚拟网络设备,将虚拟机内的网卡同br0连接起来,这样就达到和真实交换机一样的效果,虚拟机发出去的数据包先到达br0,然后由br0交给eth0发送出去,数据包都不需要经过host机器的协议栈,效率高。
Linux虚拟网络基础 — Bridge_第1张图片

容器

因为容器运行在自己的network namespace中,所以每个容器都有自己单独的协议栈。因此也采用了另一种方式与外界通信。
容器中配置网关为192.168.88.1,发出去的数据包先到达br0,然后交给host机器的协议栈。但是目的IP是外网IP,在数据发出去之前需要先做NAT转换。因此需要host开启IP forward功能,这样数据包会通过eth0发送出去。由于要经过host机器的协议栈,并且还要做NAT转换,所以性能没有虚拟机那种方案好。
优点是容器处于内网中,安全性相对要高点。(由于数据包统一由IP层从eth0转发出去,所以不存在mac地址的问题,在无线网络环境下也工作良好)
Linux虚拟网络基础 — Bridge_第2张图片

你可能感兴趣的:(Linux,网络,linux,运维)