谁能详细解释一下 veth 对和 tap 接口(interface)的区别,以及这些设备如何连接到 linux bridge 或 openvswitch。
我发现了这个: “Veth 是成对创建的特殊网络设备,我认为它是一种改变流量方向的方法,也就是说,当出方向的流量从 Linux 协议(protocol)栈发送到 veth 设备时,它被发送到另一个它的镜像veth 设备,因此镜像将其视为方向流量并将其放回 Linux 协议(protocol)栈以供进一步使用。
Tap 设备是逻辑网络设备,但与其他设备不同的是:它允许用户空间程序直接将流量注入(inject) Linux 协议(protocol)栈,并且可以从堆栈中检索流量。它在用户空间的第 2 层(或第 3 层的 tun 设备)打开一条通往 Linux 协议(protocol)栈的隧道,该协议(protocol)栈会将来自用户空间的数据视为方向流量"
但它并没有给我全貌。
提前致谢!
最佳答案
使用 ip tuntap 创建的 Linux tap 接口(interface)不能用于附加网络命名空间到 linuxbridges 或 openvswitch,因此我们需要依赖 veth 对。
虚拟以太网接口(interface)成对出现,它们像一根 pipe 一样连接在一起——任何进入一个 veth 接口(interface)的东西都会从另一个对等的 veth 接口(interface)出来。 因此,您可以使用 veth 接口(interface)通过“默认”或“全局”命名空间将网络命名空间连接到外部世界 接口(interface)存在。
TAP 设备(例如 vnet0)是 KVM 和 Xen 等管理程序实现虚拟网络接口(interface)卡(通常称为 VIF 或 vNIC)的方式。 发送到 TAP 设备的以太网帧由 guest 操作系统接收。
关于linux - Linux 中的虚拟网络设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25641630/