macvlan
Last updated
Was this helpful?
Last updated
Was this helpful?
macvlan 是一种网卡虚拟化的技术,由 linux 内核提供,支持的版本有 v3.9-3.19 和 4.0+,比较稳定的版本推荐 4.0+。有时候我们希望网卡可以有多个 ip 和 mac 地址。这时候就可以使用 macvlan 。其工作原理图如下:
从物理网卡进来的二层帧,根据目的 mac 地址,转发到不同的 macvlan 上。然后由 macvlan 转发到网络协议栈。
macvlan 有四种工作模式:
private 模式
vepa(virtual ethernet port aggregator) 模式
bridge 模式
passthru 模式
同一物理接口下的子接口无法互相同样,即使是从外部的物理交换机进来的帧。
vepa
这种模式下,子接口之间的通信流量需要导到外部支持 802.1Qbg/VPEA 功能的交换机上(可以是物理的或者虚拟的),经由外部交换机转发,再绕回来。
注: 802.1Qbg/VPEA 功能简单说就是交换机要支持 发夹(hairpin) 功能,也就是数据包从一个接口上收上来之后还能再扔回去。
这种模式下,模拟的是 Linux bridge 的功能,但比 bridge 要好的一点是每个接口的 MAC 地址是已知的,不用学习。所以,这种模式下,子接口之间就是直接可以通信的。
passthru
这种模式,只允许单个子接口连接主接口,且必须设置成混杂模式,一般用于子接口桥接和创建 VLAN 子接口的场景。
[网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP](https://blog.kghost.info/2013/03/27/linux-network-tun/)