云计算虚拟化技术与开发
上QQ阅读APP看书,第一时间看更新

2.4.3 MACVLAN/MACVTAP设备

MACVLAN技术提出一种将一块以太网卡虚拟成多块以太网卡的极简单的方案。一块以太网卡需要有一个MAC地址,这就是以太网卡的核心。

以往,只能为一块以太网卡添加多个IP地址,却不能添加多个MAC地址,因为MAC地址正是通过其全球唯一性来标识一块以太网卡的,即便使用了创建ethx:y这样的方式,也会发现所有这些“网卡”的MAC地址和ethx都是一样的。本质上,它们还是一块网卡。使用MACVLAN技术可以解决这个问题,其工作方式如图2-22所示。

图2-22 MACVLAN设备的工作原理

MACVLAN会根据收到数据包的目的MAC地址判断这个数据包需要交给哪个虚拟网卡。单独使用MACVLAN好像毫无意义,但是配合网络名称空间(Network Namespace)使用,可以构建这样的网络,如图2-23所示。

图2-23 MACVLAN实现网卡虚拟化

由于MACVLAN与eth0处于不同的名称空间(Namespace),拥有不同的网络协议栈,这样使用可以不需要建立网桥在虚拟名称空间(Virtual Namespace)里面使用网络。

MACVTAP是对MACVLAN的改进,综合了MACVLAN与TAP设备的特性。使用MACVLAN的方式收发数据包,收到的数据包不交给网络协议栈处理,而是生成一个/dev/tapX文件,将数据写入到这个文件中,其工作原理如图2-24所示。

图2-24 MACVTAP设备的工作原理