macvlan接口类型简单说类似于子接口,但相比子接口来说,macvlan接口拥有自己独立的mac地址,因此使用macvlan接口可以允许更多的二层操作。...macvlan有四种模式:VEPA,bridge,Private和Passthru macvlan接口会监听并接收链路上到达本mac地址的报文,因此macvlan(除bridge外)仅能向外部网络发送报文...设备不能直接接收在同一个物理网卡的其他macvlan设备的数据包,但是其他macvlan设备可以将数据包通过物理网卡发送出去,然后通过hairpin设备返回的给其他macvlan设备,用于管理内部vm直接的流量...passthru模式:该模式仅允许一块网卡上面部署一个macvlan接口,其他使用macvlan的容器将启动失败,但只要不使用macvlan,该容器还是可以正常启动。...macvlan同bridge一样,都是linux原生支持的,可以手动实现自己的macvlan通信,具体配置操作参见:linux 网络虚拟化:macvlan 总结:通过以上示例可以看出,macvlan类型的接口可以当作正常的
通过上篇文章的学习,我们已经知道 Macvlan 四种模式的工作原理,其中最常用的就是 Bridge 模式,本文我们将通过实验来验证 Macvlan Bridge 模式的连通性。...Macvlan 是 linux 内核比较新的特性,可以通过以下方法判断当前系统是否支持: $ modprobe macvlan $ lsmod | grep macvlan macvlan...各个 Linux 发行版对 Macvlan 的支持 ---- Macvlan 对 Kernel 版本依赖:Linux kernel v3.9–3.19 and 4.0+。...type macvlan mode ,其中 是 Macvlan 接口的父接口名称, 是新建的 Macvlan 接口的名称,这个名字可以任意取, 是...Macvlan 的模式。
macvlan是Linux操作系统内核提供的网络虚拟化方案之一,更准确的说法是网卡虚拟化方案。...macvlan应该很简单。 1.环境准备 假设有一块物理网卡,名称是enp0s8,连接到网络192.168.187.0/24网段,就在enp0s8上实验macvlan。...dev enp0s8macv.01 type macvlan ip link add link enp0s8 dev enp0s8macv.02 type macvlan ip link set enp0s8macv...3.macvlan作用 从以上的创建步骤可以看出,macvlan并没有创建网络,只是虚拟了网卡,共享了物理网卡所连接的外部网络,它的效果与桥接模式是一样的。...而macvlan只涉及到一个虚拟设备macvlan。可以看出,macvlan方案涉及到的虚拟设备更少,数据包处理所经过的点就更少,效率就更高。macvlan会出现在一些对网络性能要求极高的场景下.
这也就意味着,只要是从 Macvlan 子接口发来的数据包(或者是发往 Macvlan 子接口的数据包),物理网卡只接收数据包,不处理数据包,所以这就引出了一个问题:本机 Macvlan 网卡上面的 IP...Macvlan vs Bridge ---- 说到 Macvlan,就不得不提 Bridge,因为你可以把 Macvlan 看成一个简单的 Bridge。但他们之间还是有很大的区别的。...Macvlan Macvlan 有以下特点: 可让使用者在同一张实体网卡上设定多个 MAC 地址。...Macvlan 的工作模式 ---- Macvlan 共支持四种模式,分别是: VEPA(Virtual Ethernet Port Aggregator) 在 VEPA 模式下,所有从 Macvlan...Passthru 此种模式会直接把父接口和相应的MacVLAN接口捆绑在一起,这种模式每个父接口只能和一个 Macvlan 虚拟网卡接口进行捆绑,并且 Macvlan 虚拟网卡接口继承父接口的 MAC
yangjunsss.github.io 摘要 Docker 作为容器的主流平台,不仅仅提供了虚拟化隔离,同时也配备的网络隔离技术,并使用不同的网络驱动满足不同的场景,这篇文章对 Docker 的3种网络实现Host、Bridge、Macvlan...模式 在一些特定场景中,比如一些传统应用或者监控应用需要直接使用 HOST 的物理网络,则可以使用 kernel 提供的 macvlan 的方式,macvlan 是在 HOST 网卡上创建多个子网卡,...macvlan 要求物理网卡支持混杂 promisc 模式并且要求 kernel 为 v3.9-3.19 和 4.0+,因为是直接通过子接口转发数据包,所以可想而知,性能比 bridge 要高,不需要经过...macvlan 支持四种模式: private:子接口之间不允许通信,子接口能与物理网络通讯,所有数据包都经过父接口 eth0 vepa(Virtual Ethernet Port Aggregator...所以模式都不能与 eth0 通信,并且 macvlan 在公有云上的支持并不友好。
上一篇文章我们详细介绍了 macvlan 这种技术,macvlan 详解,由于它高效易配置的特性,被用在了 Docker 的网络方案设计中,这篇文章就来说说这个。...下面我们做两个实验,分别验证相同 macvlan 网络和不同 macvlan 网络的连通性。...1.2 不同 macvlan 网络之间的通信 接下来,我们来看看不同 macvlan 网络之间的连通性,搭建以下的拓扑环境: ?...由于 macvlan 网络会独占物理网卡,也就是说一张物理网卡只能创建一个 macvlan 网络,如果我们想创建多个 macvlan 网络就得用多张网卡,但主机的物理网卡是有限的,怎么办呢?...在 Docker 中,macvlan 只支持 bridge 模式。 相同 macvlan 可以通信,不同 macvlan 二层无法通信,可以借助三层路由完成通信。
01 macvlan 简介 前面的文章讲过了几种 Linux 虚拟网络设备:tap/tun、veth-pair、bridge,它们本质上是 Linux 系统 提供的网络虚拟化解决方案,今天要讲的 macvlan...02 macvlan 的工作原理 macvlan 是 Linux kernel 支持的新特性,支持的版本有 v3.9-3.19 和 4.0+,比较稳定的版本推荐 4.0+。...它一般是以内核模块的形式存在,我们可以通过以下方法判断当前系统是否支持: # modprobe macvlan # lsmod | grep macvlan macvlan...VLAN 用来划分广播域,而 macvlan 共享同一个广播域。 通过不同的子接口,macvlan 也能做到流量的隔离。...macvlan 的四种通信模式,常用模式是 bridge。
——村上春树 物理网卡的分身术:Macvlan Macvlan(MAC Virtual LAN)是一种在 Linux 操作系统上实现的网络虚拟化技术。...通俗的来讲,macvlan 可以基于一个物理网卡设备,生成多个MAC地址和IP 地址不同的逻辑网卡 Macvlan五大工作模式解析 Macvlan出现之前,我们可以通过网卡别名(例如eth0:1)的方式为一块以太网卡添加多个...所有从Macvlan接口发出的流量,不管目的地址是什么,全部发送给父接口,类似于连接到一个特殊的交换机,这个交换机负责处理 Macvlan 接口与物理网络之间的通信,使得 Macvlan 接口可以与其他设备进行通信...在这种模式下,每个父接口只能和一个Macvlan网卡捆绑,并且Macvlan网卡继承父接口的MAC地址。...Macvlan 设备基本命令 在宿主机上创建 Macvlan 设备 ip link add veth2.1 link veth2 type macvlan mode bridge ip link set
可以在linux命令行执行lsmod | grep macvlan查看当前内核是否加载了该驱动;如果没有查到,可以通过modprobe macvlan来载入。...3 创建docker macvlan网络使用如下命令创建一个macvlan网络:docker network create -d macvlan --subnet=192.168.1.0/24 --gateway...基于macvlan网络创建容器docker run --net=macvlan --ip=192.168.1.12 --name test -itd alpine:3.6然后进入容器docker exec...3 创建macvlan bridge要实现宿主机和容器互通,需要在宿主机上再创建一个macvlan网络设备,将这个设备作为bridge,再修改路由使宿主机访问容器时指向该设备。...建立一个名为macbridge的macvlan设备,并分配ip:ip link add macbridge link eth0 type macvlan mode bridgeip addr add 192.168.1.11
一、MacVlan 实现Docker的跨主机网络通信的方案有很多,如之前博文中写到的通过部署 Consul服务实现Docker容器跨主机通信 Macvlan工作原理: Macvlan是Linux内核支持的网络接口...当容器需要直连入物理网络时,可以使用Macvlan。Macvlan本身不创建网络,本质上首先使宿主机物理网卡工作在‘混杂模式’,这样物理网卡的MAC地址将会失效,所有二层网络中的流量物理网卡都能收到。...二、配置实例 实例1(实现容器基于macvlan的单网段跨主机通信) 实现效果: 两台centos 7.3,分别运行着docker服务; 两台docker服务器创建相同的一个MacVlan网络,使docker...实例2(基于macvlan的跨主机网络多网段的解决方案) 实现的效果如下: 两台centos 7.3,分别运行着docker服务; 每台宿主机创建了两个MacVlan网段供容器使用(172.10.16.0...-o parent=ens33.20 mac_net20 #创建一个macvlan网络,给其定义一个网段、网关及绑定到ens33.20 #接下来分别基于刚刚创建的macvlan网络运行一个容器 2、第二台
自定义模式 macvlan:容器占用的ip地址和虚拟机宿主机是同等层次的,就相当于同意路由器下的一台计算机....所以Macvlan对于公司内部的数据中心网络来说很棒(假设公司网络组能接受NIC设置为混杂模式),但是Macvlan在公有云上并不可行。...Macvlan本身是linux kernel模块,其功能是允许在同一个物理网卡上配置多个MAC地址,即多个interface,每个interface可以配置自己的IP.macvlan本质上是一种网卡虚拟化技术...\ -o parent=ens33\ macvlan31 加入macvlan网络 docker run -itd --name tomcat-1 --ip=192.168.31.190–network...macvlan31 tomcat docker run -itd --name tomcat-2 --ip=192.168.31.191 --network macvlan31 tomcat Macvlan
CNI解压后把macvlan的二进制放到集群所有宿主机的/opt/cni/bin下面。...spec: cniType: macvlan macvlan: master: - enp1s0 ippools: ipv4: - underlay-pool...vlanID: 0 EOF spec.macvlan.master 设置为 enp1s0, enp1s0 必须存在于主机上。...","namespace":"default"},"spec":{"cniType":"macvlan","macvlan":{"ippools":{"ipv4":["underlay-pool"]},...spec: cniType: macvlan macvlan: master: - enp1s0 ippools: ipv4: - underlay-pool
上两周,为了优化k8s的网络性能,最终选择了macvlan+ptp方案,最终性能也达到标准了。但其实存在一个问题,macvlan的pod的IP其实不太好分配。...原来ip分配的问题 原来的方案直接使用官方的host-local进行IP分配,虽然很稳定,但不同的node节点需要配置一个不重叠的网段,最终需要底层网络预先分配一个比较大的网段作为macvlan的地址范围...namespace: kube-system labels: tier: node app: macvlan data: etcd.pem: | -----BEGIN...mountPath: /etc/kube-macvlan/ containers: - name: kube-macvlan...这样部署就很方便了,命令如下: kubectl apply -f macvlan-dpl.yaml 总结 通过这两周的实践,基本完成了开发cni网络插件的一整套流程,算是又开启了一门技能。
网络方案的实现 Macvlan是一个新的尝试,是真正的网络虚拟化技术的转折点。...网络实际上就是使用了Linux提供的macvlan驱 动。...在两台主机上各创建macvlan网络 创建macvlan网络不同于桥接模式,需要指定网段和网关(因为要保证跨主机上网段和网关是相同的),并且都得是真实存在的。...会独占主机网卡,但可以使用vlan子接口实现多macvlan网络 vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id取值为1~4094 在两台主机上分别使用创建的macvlan1...macvlan会独占主机的网卡的解决方案 前面说过macvlan会独占主机网卡,但可以使用vlan子接口实现多macvlan网络 vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan
macvlan macvlan 就如它的名字一样,是一种网卡虚拟化技术,它能够将一个物理网卡虚拟出多个接口,每个接口都可以配置 MAC 地址,同样每个接口也可以配自己的 IP,每个接口就像交换机的端口一样...macvlan 的做法其实就是将这些虚拟出来的接口与 Docker 容器直连来达到通信的目的。...一个 macvlan 网络对应一个接口,不同的 macvlan 网络分配不同的子网,因此,相同的 macvlan 之间可以互相通信,不同的 macvlan 网络之间在二层上不能通信,需要借助三层的路由器才能完成通信...,如下,显示的就是两个不同的 macvlan 网络之间的通信流程。...weave weave 网络没有借助服务发现协议,也没有 macvlan 那样的虚拟化技术,只需要在不同主机上启动 weave 组件就可以完成通信。
MACVLAN MACVLAN , IPVLAN 名字和VLAN 相近,但是机制有很大不同。 MACVLAN技术是一种将一块以太网卡虚拟成多块以太网卡的极简单的方案。...有了MACVLAN技术,你可以这么做了。 IPVLAN ipvlan类似于macvlan,区别在于端点具有相同的mac地址。 ipvlan支持L2和L3模式。...L2 模式 ipvlan L2 模式和 macvlan bridge 模式工作原理很相似,父接口作为交换机来转发子接口的数据。...ipvlan 和 macvlan 两个虚拟网络模型提供的功能,看起来差距并不大,那么什么时候需要用到 ipvlan 呢?...要回答这个问题,我们先来看看 macvlan 存在的不足: 需要大量 mac 地址。
id 3 VXLAN # ip link add vx0 type vxlan id 100 local 1.1.1.1 remote 2.2.2.2 dev eth0 dstport 4789 MACVLAN...# ip link add macvlan1 link eth0 type macvlan mode bridge # ip link add macvlan2 link eth0 type...macvlan mode bridge # ip netns add net1 # ip netns add net2 # ip link set macvlan1 netns net1 # ip link...set macvlan2 netns net2 IPVLAN # ip netns add ns0 # ip link add name ipvl0 link eth0 type ipvlan
单主机通信:none host bridge joined 多主机通信:overlay macvlan 扩展的多主机通信:flannel weave calico ?...image.png macvlan:性能优异,没有提供DNS服务,通信只能IP 1、在两台主机上搭建macvlan:要设置promiscuous Mode:Allow ALL ?...image.png 2、在两台主机上都创建macvlan网络 ? image.png 3、为容器分配网络 ? image.png 一个网卡只能创建一个macvlan ?...image.png 利用子网配置多个macvlan ? image.png 利用网关配置,使不同macvlan可以通信 ? image.png ?
建立macvlan虚拟网卡,容器启动后用nsenter工具映射到容器的network namespace中 这种办法我觉得是最干净简洁的,而且采用macvlan,还意外获得了一种能力,就是你能在宿主机上创建子...macvlan设备,从而能向容器内的macvlan设备打入精确的流量。...另外,在容器内tcpdump包也很完美,如果想捕获二层协议包,可以用macvtap替换macvlan。...最后推荐为了简化macvlan的操作,我写的一个小工具:dockerfly 参考: Linux 上的基础网络设备详解 http://www.ibm.com/developerworks/cn/linux...上虚拟网络与真实网络的映射 http://www.ibm.com/developerworks/cn/linux/1312_xiawc_linuxvirtnet/index.html 网络虚拟化技术: TUN/TAP MACVLAN
服务使用,macvlan 主要给 Java 服务使用。...关于 macvlan 网络性能的测试可以参照网上的一些论文,一般来说,macvlan 网络可以达到物理网络 95% 以上的性能。...我们把 Dubbo 服务挂在 macvlan 的网络下实现 Dubbo 服务与原有虚拟机服务的互联互通。...这个方案并不是很优雅,需要每个服务都维护一个环境变量用于告诉框架需要注册的 IP,所以我们采用了只挂载 macvlan 网络的方案。...为了使 Service Mesh 支持 overlay 网络和 macvlan 网络,我们把 Envoy 的一块网卡挂载在 macvlan 网络中,另一块网卡挂载在 overlay 网络中,这样 Envoy
领取专属 10元无门槛券
手把手带您无忧上云