macvlan 一种虚拟网卡解决方案

写在开篇,是为了提醒自己,

  1. 要善始善终
  2. 莫着急,做好每一件小事

参考文献:
https://blog.csdn.net/dkfajsldfsdfsd/article/details/79525187
http://www.qingpingshan.com/m/view.php?aid=389184

学习这个的目的,是为了了解下面的内容:
https://github.com/containernetworking/plugins

一、 mavclan要知道的小知识点

  • macvlan并不创建网络,只创建虚拟网卡,
  • macvlan会共享物理网卡所链接的外部网络,实现的效果跟桥接模式是一样的。
  1. macvlan 既不创建网络,主要有什么特性?或者说,macvlan的使用场景?
  • macvlan主要是用来解决效率问题的。
  • 也就是说macvlan是效率贵高的跨主机网络虚拟化解决方案之一。
  • 适合在对网络性能要求极高的场景下。
  1. 网络虚拟化的目的?
    就是在多租户场景下,在统一的底层网络之上,单独为每个租户虚拟出自己的网络从而达到隔离的目的。

  2. macvlan属于什么解决方案呢?或者说,macvlan到底是干什么的,? 或者说,有什么用?

  • macvlan是网卡虚拟化方案
  • macvlan将一张物理网卡设置多个mac地址,就是一变多,一对多;类似于鸣人的影分身之术, 注意: 需要物理网卡,打开混杂模式
    13868689-e30dedaa93df3e79
    如何设置网卡为混杂模式
  • 既然有了多个mac地址,就可以设置多个IP地址了,从而实现,一块物理网卡链接到交换机,变成多个虚拟网卡链接到交换机。
  1. macvlan是linux kernel提供的一种network driver类型, 如何查看当前内核是否加载了该driver呢?
  • lsmod | grep macvlan (查看是否加载了)
  • modprobe macvlan (手动加载macvlan驱动到内核)
  • /drivers/net/macvlan.c (源码地址)
  1. macvlan的工作模式?
  • Bridge:属于同一个parent接口的macvlan接口之间挂到同一个bridge上,可以二层互通(经过测试,发现这些macvlan接口都无法与parent 接口互通)。
    13868689-a2fb31fea6839bd7
    bridge mode
  • VPEA:所有接口的流量都需要到外部switch才能够到达其他接口。
    13868689-4863054586010c89
    vpea mode
  • Private:接口只接受发送给自己MAC地址的报文。
    13868689-bf795c8b86ca0b18
    private mode

二、 测试

1. 基本练习测试,创建一个macvlan, 并分配一个ip(也就是链接到某一网络)

13868689-d86b77a36445b11d
创建虚拟网卡ens33.01

13868689-ea45733e6fe02832
激活虚拟网卡ens33.01

13868689-0ce2055040d471b1
分配IP地址

13868689-6ff94977ca5ca06d
删除虚拟网卡ens33.01 ip link delete 网卡名字

2. 测试在不同命名空间下,两个macvlan类型虚拟网卡,是否可以直接通信

  1. 创建两个虚拟网卡ens33.01, ens33.02
ip link add link ens33 name ens33.01 type macvlan mode bridge   
ip link add link ens33 name ens33.02 type macvlan mode bridge   
13868689-1fd576a1320084da
创建虚拟网卡
  1. 创建两个命名空间
ip netns add ns1  
ip netns add ns2  
13868689-37c34098910d0641
创建命名空间
  1. 将两个虚拟网卡ens33.01,ens33.02分别分配到ns1,ns2命名空间里
ip link set ens33.01 netns ns1    
ip link set ens33.02 netns ns2   

13868689-e7d63bf29823a185
给虚拟网卡分配命名空间

13868689-492136622ef83fc6
在命名空间中,尝试执行命令

  1. 使用dhclient给虚拟网卡ens33.01, ens33.02分配IP
ip net exec ns1 dhclient ens33.01   
ip net exec ns2 dhclient ens33.02   

13868689-be4bb5c19edfbc04
给虚拟网卡分配IP

13868689-688238981aa00954
查看分配的IP

  1. 测试是否可以ping同宿主机
    13868689-cc90c8c4c79c330c
    是否可以ping通本宿主机
  2. 测试ens33.01 与 ens33.02 之间是否可以互相ping通
    13868689-f7d76eda8802b518
    是否可以ping通ns2命名空间下的ens33.02虚拟网卡?

3. 测试同一命名空间下的虚拟网卡,是否可以ping通么?

13868689-5d7454b2dc94c986
创建虚拟网卡,分配IP

13868689-3b37afe67f40551e
测试网络是否通

感觉很怪异,不知道为啥,同一个命名空间下的虚拟网卡,居然不通。

猜你喜欢

转载自blog.csdn.net/weixin_34138377/article/details/86833246