Macvlan简介
Macvlan是一项二层网络技术,能够实现在一个物理接口上配置多个MAC地址。Macvlan允许以物理接口作为父接口,配置多个拥有唯一MAC(随机生成)地址和IP地址的子接口。然后,应用程序、虚拟机和容器能通过绑定指定的子接口,从而使用它们自己的MAC地址和IP地址直接连接到宿主机接口上。
Macvlan子接口与父接口并不能直接进行通信,如果需要两者之间进行通信,必须为宿主机添加另一个子接口。macvlan子接口使用类似mac0@eth0的网络符号,以此来清晰的标识子接口和父接口。注意,子接口的状态跟父接口的状态是绑定的,当eth0状态变成off的时候,子接口mac0@eth0也会变成off状态。

Macvlan的工作模式
Macvlan有四种网络模式:
其中,vepa是默认的工作模式。
private模式

这种模式下,相同父接口下的子接口彼此之间不能通信,子接口所有的数据帧被父接口转发到外部,即使数据帧经过物理交换机传递到另外个子接口也会被丢弃。
vepa模式

vepa模式是Macvlan默认工作的网络模式,所有子接口发出的数据帧需要经过父接口转发,经过上层交换机(可以是物理交换机,也可以是虚拟交换机)数据交换来完成通信,在vepa模式下,物理交换机需要支持802.1Qbg,简单来说就是交换机需要支持hairpin(发夹)功能。
bridge模式

在bridge模式下,子接口之间可以直接进行通信,所有数据帧不需要经过父接口转发到外部,采用bridge模式,macvlan不需要学习MAC,因为macvlan已经熟知所有的子接口物理地址,而且也不需要STP(生成树协议)功能。
bridge模式为虚拟机提供最快速的通信,但是有一个缺点:如果macvlan父接口down掉,父接口下的所有子接口也都将下线。

passthru模式
这种模式只允许一个虚拟机(或容器)直接连接到父接口上,且必须设置成混杂模式,也就是父接口只能与一个macvlan虚拟接口进行绑定,而且macvlan虚拟接口继承父接口的MAC地址。一般用于子接口桥接和创建VLAN子接口场景。
该模式的优点:虚拟机(或容器)能够更改MAC地址以及其他接口参数。