macvlan 桥接 区别_wanlan桥接

虚拟化网络- MacVlan

MacVlan允许在主机的一个网络接口上配置多个虚拟的网络接口,这些网络网卡有自己独立的 MAC 地址,也可以配置上 IP 地址进行通信。MacVlan本质上是一种网卡虚拟化技术,最大的优点就是性能优秀。

只要是从macvlan 子接口发来的数据包,物理网卡只接收数据包,不处理数据包,所以这就引出了一个问题:本机macvlan网卡上面的IP无法和物理网卡上面的 IP 通信。

MacVlan 模式

模式

说明

场景

Bridge

允许虚拟子接口通过物理接口连接到物理网络,并与物理网络中的其他设备通信。

用于容器、虚拟机或物理服务器

VEPA

允许 Macvlan 子接口连接到物理网络上的 VEPA 桥接设备,该桥接设备负责将流量引导到正确的虚拟子接口。

用于虚拟交换机和交换机基础设施中,支持虚拟机的网络连接

Private

创建了一个隔离的网络域,其中 Macvlan 子接口之间无法直接通信,但它们仍然可以连接到物理网络

用于实现多租户环境,确保不同租户之间的网络隔离

Passthru

允许将数据包传递给具有特定 MAC 地址的物理设备,而不是在 Linux 主机上处理它们

通常与虚拟化环境中的物理网卡直通(SR-IOV)一起使用

MacVlan 操作

动作

命令

说明

创建

ip link add link eth0 macvlan1 type macvlan mode bridge


查看

ip link show type macvlan

macvlan1@eth0

删除

ip link delete macvlan1


主机1

## 开启混杂模式
ip link set eth0 promisc on
## 创建 macvlan 接口和命名空间
ip netns add container1
ip netns add container2
ip link add link eth0 macvlan1 type macvlan mode bridge
ip link add link eth0 macvlan2 type macvlan mode bridge
## 将 macvlan 接口添加到命名空间
ip link set macvlan1 netns container1
ip link set macvlan2 netns container2
## 配置IP
ip netns exec container1 ip link set dev macvlan1 up
ip netns exec container1 ip addr add / dev macvlan1
ip netns exec container2 ip link set dev macvlan2 up
ip netns exec container2 ip addr add / dev macvlan2
## 网络连通性,同主机不同命名空间ping
ip netns exec container1 ping -c1 -W1 
ip netns exec container1 ping -c1 -W1 

主机2

## 开启混杂模式
ip link set eth0 promisc on
## 创建 macvlan 接口和命名空间
ip netns add container3
ip link add link eth0 macvlan3 type macvlan mode bridge
## 将 macvlan 接口添加到命名空间
ip link set macvlan3 netns container3
## 配置IP
ip netns exec container3 ip link set dev macvlan3 up
ip netns exec container3 ip addr add / dev macvlan3
## 网络连通性,同主机不同命名空间ping
ip netns exec container3 ping -c1 -W1 
ip netns exec container3 ping -c1 -W1 

清理环境

## 清理环境
ip netns delete container1
ip netns delete container2
ip netns delete container3
ip link delete macvlan1
ip link delete macvlan2
ip link delete macvlan3

Macvlan局限性

虽然Macvlan是一种强大的网络虚拟化技术,但它也存在一些局限性,需要在使用时考虑:

  • 复杂性:配置和管理Macvlan子接口可能相对复杂,特别是对于网络新手来说。需要小心管理,以确保正确的网络配置和隔离。
  • 性能隐患:尽管Macvlan通常具有较高的性能,但在某些情况下,可能会出现性能问题,特别是当大量Macvlan子接口与物理网络接口绑定时。
  • 不适用于所有网络场景:Macvlan适用于某些特定用例,如容器和虚拟机环境,但不适用于所有网络场景。在某些情况下,其他网络虚拟化技术,如Linux Bridge或VXLAN,可能更适合。
  • 广播和多播限制:Macvlan子接口通常无法在同一VLAN内进行广播和多播通信,这可能需要额外的配置才能实现。这可能会对某些应用程序造成问题。
  • IP地址管理:在Macvlan配置中,需要管理IP地址的分配和管理。这可能需要更多的网络规划和配置工作,以确保正确的IP地址分配。
  • MAC地址冲突:由于每个Macvlan子接口都有独立的MAC地址,如果不小心管理,可能会导致MAC地址冲突。这可能会引起网络问题。
  • 不支持跨子网通信:Macvlan子接口通常不支持不同子网之间的通信,除非进行额外的配置。
原文链接:,转发请注明来源!