![云计算虚拟化技术与开发](https://wfqqreader-1252317822.image.myqcloud.com/cover/828/31729828/b_31729828.jpg)
上QQ阅读APP看书,第一时间看更新
2.4.3 MACVLAN/MACVTAP设备
MACVLAN技术提出一种将一块以太网卡虚拟成多块以太网卡的极简单的方案。一块以太网卡需要有一个MAC地址,这就是以太网卡的核心。
以往,只能为一块以太网卡添加多个IP地址,却不能添加多个MAC地址,因为MAC地址正是通过其全球唯一性来标识一块以太网卡的,即便使用了创建ethx:y这样的方式,也会发现所有这些“网卡”的MAC地址和ethx都是一样的。本质上,它们还是一块网卡。使用MACVLAN技术可以解决这个问题,其工作方式如图2-22所示。
![](https://epubservercos.yuewen.com/B669F2/17180254805316706/epubprivate/OEBPS/Images/img00041001.jpg?sign=1738826236-6498uxNaHMPViehr27nNmEDBqG99a1Ey-0-3116e4a0e8dd7c79a7dc27847b41d033)
图2-22 MACVLAN设备的工作原理
MACVLAN会根据收到数据包的目的MAC地址判断这个数据包需要交给哪个虚拟网卡。单独使用MACVLAN好像毫无意义,但是配合网络名称空间(Network Namespace)使用,可以构建这样的网络,如图2-23所示。
![](https://epubservercos.yuewen.com/B669F2/17180254805316706/epubprivate/OEBPS/Images/img00041002.jpg?sign=1738826236-5eWYWpfxGTn7WJJ93l1IWV8SWnMrkGFV-0-761fbc47a1ce8bfe57992766b80edd3d)
图2-23 MACVLAN实现网卡虚拟化
由于MACVLAN与eth0处于不同的名称空间(Namespace),拥有不同的网络协议栈,这样使用可以不需要建立网桥在虚拟名称空间(Virtual Namespace)里面使用网络。
MACVTAP是对MACVLAN的改进,综合了MACVLAN与TAP设备的特性。使用MACVLAN的方式收发数据包,收到的数据包不交给网络协议栈处理,而是生成一个/dev/tapX文件,将数据写入到这个文件中,其工作原理如图2-24所示。
![](https://epubservercos.yuewen.com/B669F2/17180254805316706/epubprivate/OEBPS/Images/img00042001.jpg?sign=1738826236-W4pjOY05yK5FpE9p2rqXfOaSM2l8uZrn-0-ec886d891a42066d5c54b230f6afcf70)
图2-24 MACVTAP设备的工作原理