Linux中的虚拟网络设备

有人可以详细解释veth对和tap接口有什么区别,以及这些设备如何连接到 linux bridge或openvswitch.

我找到了这个:
“Veth是一对特殊的网络设备,我认为它是一种改变流量方向的方法,也就是说,当外向方向流量从Linux协议栈发送到veth设备时,它被发送到另一个镜像veth设备,所以镜像将其视为方向流量,并将其放回Linux协议栈进行进一步的使用.

分接设备是逻辑网络设备,但与其他设备不同:它允许用户空间程序直接将流量注入到Linux协议栈中,并且可以从栈中检索流量.它在用户空间中打开了一个到2层的Linux协议栈(或3级Tun设备)的隧道,该堆栈会考虑用户空间中的数据,如方向流量“

但它并没有给我全部的照片.

提前致谢!

解决方法

这些虚拟网络工件的目的是类似的.但有微妙的差异,因此它们在不同的情况下使用:

> TAP:用户空间应用程序/ VM可以读取或写入以太网帧到分接口,它将到达主机内核,它将像任何其他以太网帧一样通过物理(例如eth0)端口到达内核.您可以将其添加到软件桥(例如linux-bridge)
> VETH:通常在尝试连接两个想要“获得”的实体(由于缺乏更好的短语)连接转发/接收帧的接口时使用.这些实体可以是container / bridges / ovs-switch等.假设您要将docker / lxc容器连接到OVS.您可以创建一个veth对,并将第一个接口推送到docker / lxc(例如,作为物理接口),然后将另一个接口推送到OVS.你不能用TAP这样做.

请注意,我们不应该误会我们需要使用VETH,而不要在使用OVS时点击.我们可以随时创建OVS中的内部端口,其行为与tap接口完全相同.但是,这并不总是可能的,例如当您想要连接到无法合成类似Tap的界面的实体时.即:

$ovs-vsctl add-port ovs-switch-name tap0

现在可以使用tap0,就像我们使用tap接口一样.

相关文章

1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...
1 删除0字节文件 find -type f -size 0 -exec rm -rf {} ...
## 步骤 1:安装必要的软件包 首先,需要确保系统已安装 `dh...