这些虚拟网络工件的目的是类似的.但有微妙的差异,因此它们在不同的情况下使用:
> 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接口一样.