Docker跨主机网络-macvlan
一、搭建Docker的 macvlan 网络环境
docker 开发了另一个支持跨主机容器网络的 driver:macvlan
macvlan 本身是 Linxu kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置自己的 IP
macvlan 本质上是一种网卡虚拟化技术,Docker 用 macvlan 实现容器网络
macvlan 的最大优点是性能极好,相比其他实现,macvlan 不需要创建 Linux bridge,而是直接通过以太 interface 连接到物理网络
macvlan并不创建网络,只创建虚拟网卡
macvlan会共享物理网卡所链接的外部网络,实现的效果跟桥接模式是一样的
1、macvlan 不创建网络,主要有什么特性?macvlan使用场景
macvlan主要是用来解决效率问题的,也就是说macvlan是效率高的跨主机网络虚拟化解决方案之一,适合在对网络性能要求极高的场景下
2、网络虚拟化的目的
就是在多租户场景下,在统一的底层网络之上,单独为每个租户虚拟出自己的网络从而达到隔离的目的
3、macvlan到底是干什么的
macvlan是网卡虚拟化方案
macvlan将一张物理网卡设置多个mac地址,就是一变多,一对多
注意: 需要物理网卡,打开混杂模式
A、设置网卡为混杂模式
ifconfig 网卡名 promisc
取消网卡的混杂模式:
ifconfig 网卡名 -promisc
既然有了多个mac地址,就可以设置多个IP地址,从而实现,一块物理网卡链接到交换机,变成多个虚拟网卡链接到交换机
B、混杂模式
混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用
以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截的我们所要的信息,这是捕获数据包的物理基础。
以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的站点所组成各个站点采用上面提到的 CSMA/CD 协议进行信道的争用和共享。每个站点(这里特指计算机通过的接口卡)网卡来实现这种功能。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据的传送,判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将它丢弃。如果是的话,接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给LLC 子层
C、网卡具有的几种工作模式
1) 广播模式 (Broad Cast Model)
它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧
- 多播传送 (MultiCast Model)
多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员
- 直接模式 (Direct Model)
工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧
- 混杂模式 (Promiscuous Model)
工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的
网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的
4、如何查看当前内核是否加载了该driver
macvlan是Linux kernel提供的一种network driver类型
A、查看是否加载
lsmod | grep macvla