网络的虚拟化关注点二层,对内部的使用就是实现虚拟网卡 vNIC,对外部而言(中间网络设备的虚拟化),则需要实现虚拟交换机(vSwitch)。以上即两大类虚拟化:「网卡虚拟化」和「交换机虚拟化」。

但实际上,应用对网络的使用一般最低就是到 Socket API,因此有些技术会在直接以 IP(三层)、TCP/UDP(四层)的虚拟为目标。

此外,对于众多虚拟化技术相同,虚拟化之外还要关注资源的「隔离」。

网卡虚拟化

主要两种:Veth PairTUN/TAP

Veth Pair 虚拟网卡,灵活性极强,两端是虚拟以太网设备 vethX,无需关注中间实现,可以用在各种规模的网络中。

TUN/TAP 特点是实现在应用层程序(用户态),而非内核态/网络设备,即使是可操作三层 IP 包的 TAP 模式。

TUN/TAPVeth 的一大区别是 TNU/TAP 只需一端实现,TUN/TAP 负责部分的流量只在本机流动,而 Veth 是可以跨主机的。因此 Veth Paire 常用在任意两个网络设备(无论是否跨主机、是否物理网络)的连通。TUN/TAP 则用在单端、用户态(代理、虚拟机内部)。

TODO

以上的关于网络的虚拟化及其技术的分类很不合理,后续了解更全面后再行分类。todo

References

  1. Learn Network Namespaces and Virtual Ethernet (Veth) Devices (graphs) | Medium
  2. Learn Linux Bridge with graphs | by Amazingandyyy | Medium