[转帖]网卡虚拟化 Macvlan

网卡,虚拟化,macvlan · 浏览次数 : 0

小编点评

3人点赞 linux 摘要归纳总结 以上内容生成时需要带简单的排版,才能更加清晰地表达内容。

正文

网卡虚拟化 Macvlan

https://www.jianshu.com/p/ffd9675f6f41

 

拓扑结构
 
image.png
交换机配置
# ip link add name br0 type bridge
# ip link add name veth11 type veth  peer veth12
# ip link set veth11 master br0
# ip addr add 192.168.0.1/24 dev br0
# ip link set veth11 up
# ip link set veth12 up
# ip link set br0 up
添加namespace ns1和ns2
# ip netns add ns1
# ip netns add ns2
# ip netns add ns3
# ip netns exec ns1  ip link set lo up
# ip netns exec ns2  ip link set lo up
# ip netns exec ns3  ip link set lo up
  • Bridge 所有的端点都直接连接在一起
  • VEPA 虚拟以太网端口聚合器模式。在同一物理接口上的不同macvlan接口之间的数据通过物理接口传输。macvlan接口之间通信需要交换机支持发夹( hairpin)模式,或者有一个路由器来转发。macvlan的缺省模式为VEPA
  • Private 不允许同一物理接口上的macvlan实例之间通信,即使外部交换机支持发夹( hairpin)模式。
  • passthru [nopromisc] -这种模式给单个端点更多的能力,通常在macvtap模式。不允许在同一物理接口上有一个以上的端点。所有流量将被转发到这个端点,从而允许virtio来宾更改MAC地址或设置混杂模式,以便在接口上架桥或在其上创建vlan接口。默认情况下,此模式强制底层接口进入混杂模式。传递nopromisc标志可以防止这种情况发生,因此可以使用标准工具控制promisc标志。
  • Source-允许一个允许的mac地址列表,这是用来匹配源mac地址从接收帧在底层‐ing接口。这允许创建基于mac的VLAN关联,而不是基于标准端口或标签。这个特性对于部署基于802.1xmac的行为很有用,因为底层接口的驱动程序不允许这样做。

1、bridge模式

  • Macvlan之间都通
  • 广播洪泛到所有接口
  • 与父接口不通
  • 父接口down,macvlan接口也会down
添加macvlan link veth12.1和veth12.2
# ip link add veth12.1 link veth12 type macvlan mode bridge
# ip link add veth12.2 link veth12 type macvlan mode bridge
将macvlan接口添加到ns1和ns2
# ip link set netns ns1 veth12.1
# ip link set netns ns2 veth12.2
# ip link set netns ns3 veth12

修改namespac中的网卡名字
# ip netns exec ns1 ip link set veth12.1 name eth0
# ip netns exec ns2 ip link set veth12.2 name eth0
# ip netns exec ns3 ip link set veth12 name eth0
添加macvlan接口的ip地址
# ip netns exec ns1 ip addr add  192.168.0.11/24 dev eth0
# ip netns exec ns2 ip addr add  192.168.0.12/24 dev eth0
# ip netns exec ns3 ip addr add  192.168.0.254/24 dev eth0
up接口
# ip netns exec ns1 ip link set eth0 up
# ip netns exec ns2 ip link set eth0 up
# ip netns exec ns3 ip link set eth0 up
ping测试
  • 对端交换机接口IP 可以通
  • 物理网卡 不通
  • 同物理网卡的 macvlan 可以通
# ip netns exec ns1 ping -c 1 192.168.0.1
通
# ip netns exec ns1 ping -c 1 192.168.0.254
不通
# ip netns exec ns1 ping -c 1 192.168.0.12
通
查看mac地址情况
# ip netns exec ns1 ip link | grep ether
    link/ether 62:92:4b:81:85:fe brd ff:ff:ff:ff:ff:ff link-netns ns3
# ip netns exec ns2 ip link | grep ether
    link/ether 76:ed:9e:2e:5f:a4 brd ff:ff:ff:ff:ff:ff link-netns ns3
# bridge fdb
...
62:92:4b:81:85:fe dev dev veth11 master br0
7e:fc:bf:1f:ce:58 dev dev veth11 master br0
...
关闭veth11,macvlan之间不通
# ip link set veth11 down
//down一个veth,peer也会down
# ip netns exec ns3 ip link show type veth
19: eth0@if20: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
    link/ether 7e:fc:bf:1f:ce:58 brd ff:ff:ff:ff:ff:ff link-netnsid 0
# ip netns exec ns1 ping -c 1 192.168.0.12
不通
恢复环境
# ip link set veth11 up 
 
image.png

2、VEPA模式

此模式下macvlan之间是隔离的,需要交换机支持hairpin功能才能通信

# ip netns exec ns1 ip link set eth0  type macvlan mode vepa
# ip netns exec ns1 ip link set eth0  type macvlan mode vepa
ping测试
  • 对端交换机接口IP 通
  • 同物理网卡的 macvlan 不通
  • 物理网卡 不通
# ip netns exec ns1 ping -c 1 192.168.0.1
通
# ip netns exec ns1 ping -c 1 192.168.0.12
不通
# ip netns exec ns1 ping -c 1 192.168.0.254
不通
抓包可以看到很多icmp报文
# tcpdump -i veth11 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth11, link-type EN10MB (Ethernet), capture size 262144 bytes
05:21:06.824252 IP 192.168.0.11 > 192.168.0.12: ICMP echo request, id 33858, seq 717, length 64
05:21:07.848077 IP 192.168.0.11 > 192.168.0.12: ICMP echo request, id 33858, seq 718, length 64
05:21:08.871927 IP 192.168.0.11 > 192.168.0.12: ICMP echo request, id 33858, seq 719, length 64
 
image.png

3、private模式

隔离功能比VPEA更强,阻断了广播和组播,即使交换机开启hairpin也无法通信

# ip netns exec ns1 ip link set eth0  type macvlan mode private
# ip netns exec ns1 ip link set eth0  type macvlan mode private
ping测试
  • 对端交换机接口IP 通
  • 同物理网卡的 macvlan 不通
  • 物理网卡 不通
# ip netns exec ns1 ping -c 1 192.168.0.1
通
# ip netns exec ns1 ping -c 1 192.168.0.12
不通
# ip netns exec ns1 ping -c 1 192.168.0.254
不通
通过抓包可以发现,以看到ARP在重复的发送【注意等待ARP超时后测试】
# tcpdump -i veth11
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth11, link-type EN10MB (Ethernet), capture size 262144 bytes
05:29:10.280539 ARP, Request who-has 192.168.0.12 tell 192.168.0.11, length 28
05:29:10.280587 ARP, Request who-has 192.168.0.12 tell 192.168.0.11, length 28
05:29:11.304232 ARP, Request who-has 192.168.0.12 tell 192.168.0.11, length 28
 
image.png

4、passthru模式

只能被一个macvlan接口使用,并且会继承网卡的mac地址
# ip netns exec ns3 ip link | grep ether
    link/ether 7e:fc:bf:1f:ce:58 brd ff:ff:ff:ff:ff:ff link-netnsid 0
# ip netns exec ns2 ip link delete eth0
# ip netns exec ns1 ip link delete eth0
# ip netns exec ns3 ip link add eth0.11 link eth0 type macvlan mode passthru
# ip netns exec ns3 ip link set eth0.11 netns ns1
# ip netns exec ns1 ip link set eth0.11 name eth0
# ip netns exec ns1 ip addr add 192.168.0.11/24 dev eth0
# ip netns exec ns1 ip link | grep ether
    link/ether 7e:fc:bf:1f:ce:58 brd ff:ff:ff:ff:ff:ff link-netns ns3
# ip netns exec ns1 ip link set eth0 up
ping测试
  • 对端交换机接口IP 通
  • 物理网卡 不通
# ip netns exec ns1 ping -c 1 192.168.0.1
通
# ip netns exec ns1 ping -c 1 192.168.0.254
不通
 
image.png

5、source

只接受指定源mac的报文,这里是br0的mac地址,MAC为新mac
# ip netns exec ns1 ip link delete eth0
# ip netns exec ns3 ip link add eth0.11 link eth0 type macvlan mode source  macaddr add  36:50:43:11:71:c0
# ip netns exec ns3 ip link set eth0.11 netns ns1
# ip netns exec ns1 ip link set eth0.11 name eth0
# ip netns exec ns1 ip addr add 192.168.0.11/24 dev eth0
# ip netns exec ns1 ip link | grep ether
    link/ether 5e:32:45:fa:21:d3 brd ff:ff:ff:ff:ff:ff link-netns ns3
# ip netns exec ns1 ip link set eth0 up
ping测试
  • 对端交换机接口IP 通
  • 物理网卡 不通
# ip netns exec ns1 ping -c 1 192.168.0.1
通
# ip netns exec ns1 ping -c 1 192.168.0.254
不通
 
image.png
 
 
3人点赞
 
linux

 

 

与[转帖]网卡虚拟化 Macvlan相似的内容:

[转帖]网卡虚拟化 Macvlan

网卡虚拟化 Macvlan https://www.jianshu.com/p/ffd9675f6f41 拓扑结构 image.png 交换机配置 # ip link add name br0 type bridge # ip link add name veth11 type veth peer

[转帖]macvlan 网络模式实现跨主机 Docker 通信

https://www.jianshu.com/p/cc481870236b macvlan 网络模式概念 macvlan 本身是 linux 内核的模块,本质上是一种网卡虚拟化的技术,其功能是允许在同一个物理网卡上虚拟出多个网卡,通过不同的 MAC 地址在数据链路层进行网络数据的转发。 一块网卡上

[转帖]linux 网络虚拟化: ipvlan

https://cizixs.com/2017/02/17/network-virtualization-ipvlan/ 简介 IPVlan 和 macvlan 类似,都是从一个主机接口虚拟出多个虚拟网络接口。一个重要的区别就是所有的虚拟接口都有相同的 macv 地址,而拥有不同的 ip 地址。因为

[转帖]Linux 调优篇 :虚拟化调优(irqbalance 网卡中断绑定)* 贰

一.网络流量上不去二.中断绑定 2.1 关闭中断平衡守护进程 2.2 脱离中断平衡守护进程 2.3 手动设置中断的CPU亲和性三. 总结 一.网络流量上不去 在Linux的网络调优方面,如果你发现网络流量上不去,那么有一个方面需要去查一下: 网卡处理网络请求的中断是否被绑定到单个CPU(或者说跟处理

【转帖】Linux 调优篇 :虚拟化调优(irqbalance 网卡中断绑定)* 贰

一.网络流量上不去二.中断绑定 2.1 关闭中断平衡守护进程 2.2 脱离中断平衡守护进程 2.3 手动设置中断的CPU亲和性三. 总结 一.网络流量上不去 在Linux的网络调优方面,如果你发现网络流量上不去,那么有一个方面需要去查一下: 网卡处理网络请求的中断是否被绑定到单个CPU(或者说跟处理

[转帖]ESXi主机网卡识别为10Mb导致业务缓慢

某企业所有业务系统及应用运行在由5台安装了ESXi 6.0的服务器组成的虚拟化环境中,已经稳定运行了多年,基本上没有出过问题。 今天下午企业工程师联系我,说单位的业务系统访问很慢。在业务系统中PING网关的延时超过2ms,平常都是小于1ms。近期单位服务器与网络没有改动。 检查发现有台物理主机内存报

[转帖]IO虚拟化——SR-IOV 原理

摘要: 介绍SR-IOV 的概念、使用场景、VMware 和 KVM 中的配置方法。 第一部分:虚拟化通信延迟: 第二部分:IO 虚拟化 第三部分:SR-IOV 第四部分:Intel网卡在VMware 环境 实现 SR-IOV 需要的条件和配置方法 第五部分:SR-IOV 在Red Hat Virt

[转帖]方神: 银河麒麟V10SP1桥接配置网卡总结

简介 公司计划再XC服务器上做业务软件的兼容测试,为了满足需要,想利用操作系统自带的KVM虚拟化做些虚拟机。再配置过程中发现虚拟机无法与宿主机通信,无法访问外网。以下对该问题做些简要的故障分析记录。 环境说明 服务器: 飞腾S2500*2 128Core 1T内存 操作系统: #版本 Kylin L

[转帖]VMware ESXi虚拟化平台驱动查询

虚拟化平台升级或者增加服务器时,如果驱动不在官方兼容性列表中,容易导致未知问题。出现问题后,即使有售后服务,官方也不进行支持。所以在正式上线之前将驱动升级到官方兼容性列表中,显得尤为重要。 本文将介绍在VMware ESXi 6.7 U3版本下,查询网卡,HBA及RAID卡驱动版本,以及去官方查看兼

[转帖]网卡bonding模式 - bond0、1、4配置

网卡bonding简介 网卡绑定就是把多张物理网卡通过软件虚拟成一个虚拟的网卡,配置完毕后,所有的物理网卡的ip和mac将会变成相同的。多网卡同时工作可以提高网络速度,还可以实现网卡的负载均衡、冗余。 bonding模式 1 round-robin(mode=0) 轮转策略,轮流在每一个slave网