首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux中的虚拟网络设备

Linux中的虚拟网络设备
EN

Stack Overflow用户
提问于 2014-09-03 10:08:55
回答 2查看 21.4K关注 1票数 20

有人能详细解释一下veth对和tap接口的区别吗?这些设备是如何连接到linux桥或打开开关的。

我发现:"Veth是一种特殊的网络设备,是成对创建的,我认为它是一种改变流量方向的方法,也就是说,当从Linux协议栈发送给veth设备时,它被发送到它的另一个镜像veth设备,因此镜像设备将它作为一个正向通信,并将其返回Linux协议栈以供进一步使用。

Tap设备是逻辑网络设备,但与其他设备不同:它允许用户空间程序直接将流量注入Linux协议栈,还可以从堆栈中检索流量。它在用户空间中打开到Linux协议栈的隧道(或者在级别3的tun设备),该协议栈将用户空间中的数据视为方向通信。“

但它并没有告诉我整个情况。

提前谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-05-17 15:46:36

不能使用使用ip创建的linuxbridges接口将网络命名空间附加到linuxbridge或openvswitch,因此我们需要依赖于对。

虚拟以太网接口成对出现,它们像管子一样连接--一个veth接口中的任何东西都会产生另一个对等veth接口。因此,您可以使用接口通过物理接口存在的“默认”或“全局”命名空间将网络命名空间连接到外部世界。

抽头设备(如vnet0 )是KVM和Xen等虚拟机监控程序如何实现虚拟网络接口卡(通常称为VIF或vNIC)。客户操作系统接收发送到TAP设备的以太网帧。

票数 17
EN

Stack Overflow用户

发布于 2016-01-13 17:36:16

这些虚拟网络构件的用途是相似的。但它们之间有细微的差别,因此它们在不同的情况下使用:

  1. tap :用户空间应用程序/VM可以读取或写入以太网帧到tap接口,并且它将到达主机内核,在那里它将像其他通过物理(例如eth0)端口到达内核的以太网帧一样被处理。您可以将它添加到软件桥(例如linux桥)中。
  2. VETH:通常用于连接两个实体时,这些实体希望“获得”(因为没有更好的短语)一个接口来转发/接收帧。这些实体可以是容器/桥/ OVS -开关等。例如,您想要将一个坞/lxc容器连接到OVS。您可以创建一个veth对,并将第一个接口推送到码头/lxc(例如,作为phys接口),并将另一个接口推送到OVS。你不能用水龙头做这个。

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

代码语言:javascript
运行
复制
$ ovs-vsctl add-port ovs-switch-name tap0

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

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25641630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档