网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP

TUN 设备

TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为。先来看看物理设备是如何工作的:

所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 Socket API 通知给用户程序。下面看看 TUN 的工作方式:

普通的网卡通过网线收发数据包,但是 TUN 设备通过一个文件收发数据包。所有对这个文件的写操作会通过 TUN 设备转换成一个数据包送给内核;当内核发送一个包给 TUN 设备时,通过读这个文件可以拿到包的内容。

如果我们使用 TUN 设备搭建一个基于 UDP VPN,那么整个处理过程就是这样:

数据包会通过内核网络栈两次。但是经过 App 的处理后,数据包可能已经加密,并且原有的 ip 头被封装在 udp 内部,所以第二次通过网络栈内核看到的是截然不同的网络包。

TAP 设备

TAP 设备与 TUN 设备工作方式完全相同,区别在于:

  • TUN 设备的 /dev/tunX 文件收发的是 IP 层数据包,只能工作在 IP 层,无法与物理网卡做 bridge,但是可以通过三层交换(如 ip_forward)与物理网卡连通。
  • TAP 设备的 /dev/tapX 文件收发的是 MAC 层数据包,拥有 MAC 层功能,可以与物理网卡做 bridge,支持 MAC 层广播

MACVLAN

有时我们可能需要一块物理网卡绑定多个 IP 以及多个 MAC 地址,虽然绑定多个 IP 很容易,但是这些 IP 会共享物理网卡的 MAC 地址,可能无法满足我们的设计需求,所以有了 MACVLAN 设备,其工作方式如下:

MACVLAN 会根据收到包的目的 MAC 地址判断这个包需要交给哪个虚拟网卡。单独使用 MACVLAN 好像毫无意义,但是配合之前介绍的 network namespace 使用,我们可以构建这样的网络:

由于 macvlan 与 eth0 处于不同的 namespace,拥有不同的 network stack,这样使用可以不需要建立 bridge 在 virtual namespace 里面使用网络。

MACVTAP

MACVTAP 是对 MACVLAN的改进,把 MACVLAN 与 TAP 设备的特点综合一下,使用 MACVLAN 的方式收发数据包,但是收到的包不交给 network stack 处理,而是生成一个 /dev/tapX 文件,交给这个文件:

由于 MACVLAN 是工作在 MAC 层的,所以 MACVTAP 也只能工作在 MAC 层,不会有 MACVTUN 这样的设备。

时间: 2024-10-20 02:09:37

网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP的相关文章

53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解

01 kvm及libvirt [[email protected] ~]# yum install libvirt libvirt-client python-virtinst virt-manager virt-install -y [[email protected] ~]# yum -y install qemu-kvm [[email protected] ~]# systemctl start libvirtd.service #创建桥 [[email protected] ~]# v

网络虚拟化(二)

一.虚拟交换机概述 虚拟交换机在许多方面都与物理以太网交换机相似.每个虚拟交换机都是互相隔离的,拥有自己的转发表,因此交换机查找的每个目的地只能与发出帧的同一虚拟交换机上 的端口匹配.它可以在数据链路层转发数据帧,然后通过以太网适配器出口连接到外部网络.虚拟交换机能够将多个以太网适配器绑定在一起,类似于传统服务器上的网卡绑定, 从而为使用虚拟交换机提供更高的可用性和带宽.它还支持端口级别的VLAN 分段,因此可以将每隔端口配置为访问端口或中继端口,从而提供对单个或多个VLAN 的访问. ·与物理

[原]openstack-networking-neutron(二)---tun/tap

简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在linux环境下的设计思路. tun/tap驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装.利用tun/tap驱动,可以将tcp/ip协议栈处理好的网络分包传给任何一个使用tun/tap驱动的进程,由进程重新处理后再发到物理链

网络虚拟化技术(一) Cisco VSS

VSS使用机箱间NSF/SSO作为两台机箱间的主要高可用性机制.一个虚拟交换机成员机箱将作为主用虚拟交换机成员,另一成员将处于控制面板的热等待状态.这两个机箱的数据面板均可用,因此总流量转发能力为1440Gbps.当一个虚拟交换机成员发生故障时,网络中无需进行协议重收敛.接入层或核心层交换机继续转发流量,因为它们只会检测出EtherChannel捆绑中有一个链路故障,所以不需要重收敛任何协议.通过VSS传输的流量不会发生任何中断.在传统模式中,一台交换机发生故障就会导致STP.HSRP和路由协议

网络虚拟化技术与应用场景

MacVTap和vhost-net技术原理 VM  <---->   虚拟网卡  <----> 虚拟化层  <---->  内核网桥  <----> 物理网卡 vhost-net技术使虚拟机的网络通信绕过用户空间的虚拟化层,必须使用Virtio半虚拟化的网卡    MacVTap则是跳过内核的网桥 传统桥接方案 <interface  type='bridge'>        <mac address='00:16:42:34:45:6f

虚拟化六、网络虚拟化技术2

一.交换机 1.VLAN VLAN(Virtual Local Area Network)的中文名为"虚拟局域网". 虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能.部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得 名虚拟局域网. VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的.与传统的局域网技术相比较,VLA

虚拟化五、网络虚拟化技术

一.交换机 1.VLAN VLAN(Virtual Local Area Network)的中文名为"虚拟局域网". 虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能.部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网.VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的.与传统的局域网技术相比较,VLAN技

网络虚拟化技术(一): Linux网络虚拟化

创建虚拟网络环境 使用命令 $ ip netns add net0 可以创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间,路由表,ARP表,ip地址表,iptables,ebtables,等等.总之,与网络有关的组件都是独立的. ip命令需要root权限的,但是由于本文大量使用ip命令,于是笔者给ip命令添加了capability,使普通用户也能使用ip命令 使用命令 $ ip netns list net0 可以看到我们刚才创建的网络环境 进入虚拟网络环境 使用命令 $ ip ne

网络虚拟化技术对比

标题索引 追朔原因 技术对比 总结配置 本文出自 "一步一印,有印为证" 博客,谢绝转载!