微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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接口一样.

原文地址:https://www.jb51.cc/linux/402751.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐