跳转至
阅读量:

常见虚拟网卡

lo

lo 网卡是 Linux 中默认就会存在的一张虚拟网卡。它的默认 IP 为 127.0.0.1。

lo 网卡用于本地网络访问,数据包无需离开本机网络。lo 网卡的默认 MTU 为 65535,使用 lo 网卡进行传输数据速度会比用物理网卡传输快的多。不同进程间可通过 lo 网卡进行跨进程通信。

tap/tun

tap/tun 是 Linux 内核 2.4.x 版本之后实现的虚拟网络设备。

用户态进程可通过读写 tap/tun 字符设备文件来读取系统网络栈发往 tap/tun 网卡的数据包和写入数据包到系统网络栈。

tap 和 tun 网卡具有以下区别:

  • tun 网卡对应的字符设备文件为:/dev/net/tun,tun 网卡提供了对 IP 层的解包封包能力;
  • tap 网卡对应的字符设备文件为:/dev/tap0,提供了对数据链路层的解包封包能力,可以将 tap 设备看作去除了物理层的以太网网卡。

tap/tun 网卡由于其工作机制,常被用来作为 VPN 等隧道通信。

veth-pair

veth-pair 就是一对的虚拟设备接口,和 tap/tun 设备不同的是,它都是成对出现的。一端连着协议栈,一端彼此相连着。

发往 veth0 的数据包会被直接拷贝到 veth1 网卡。因为其点对点特性,因此 veth 网卡常用于虚拟化网络间的通信,如容器和虚拟机等。

bridge

同 tap/tun、veth-pair 一样,Bridge 也是一种虚拟网络设备,所以具备虚拟网络设备的所有特性,比如可以配置 IP、MAC 等。

除此之外,对于普通的网络设备,只有两端,数据从一端进,从另一端出。但是 Bridge 设备具有多个端口,数据可以从多个端口进,从多个端口出。因此 Bridge 还是一个交换机,具有交换机所有的功能。

可以将多个网卡连接到 bridge 网卡,从而实现交换机的能力。给 bridge 网卡配置上 NAT 规则,还可以让 bridge 由交换机转变为路由器。

bond

bond 同样也是一个虚拟网卡,bond 网卡能够将多个物理网卡组合为逻辑上的一个虚拟网卡,拥有单个 IP 和 MAC。

bond 网卡具有七种模式,常用的模式为平衡负载模式和冗余模式:

  • 平衡负载模式能够从多张网卡接收数据和,和将数据包根据负载均衡策略发往多个物理网卡;
  • 冗余模式能够在在单张网卡出现故障时自动切换到另外一张网卡去。

评论