IT门户, 中国互联网人工智能物联网行业资讯平台--公众IT
新闻来源:互联网资料整理       发布时间:2023/4/6 8:00:04       共计:4629 浏览

macvlan和overlay的区别?

overlay模型

Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络.VxLAN 可将二层数据封装到 UDP 进行传输,VxLAN 提供与 VLAN 相同的以太网二层服务,但是拥有更强的扩展性和灵活性.

Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息 包括 Network、Endpoint、IP 等.Consul、Etcd 和 ZooKeeper 都是 Docker 支持的 key-vlaue 软件

docker network inspect 中的 "IPAM" 是指 IP Address Managemen

docker 会创建一个 bridge 网络 “docker_gwbridge”,为所有连接到 overlay 网络的容器提供访问外网的能力

overlay 网络的具体实现:

1.docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 linux bridge br0,endpoint 还是由 veth pair 实现,一端连接到容器中(即 eth0),另一端连接到 namespace 的 br0 上

2.br0 除了连接所有的 endpoint,还会连接一个 vxlan 设备,用于与其他 host 建立 vxlan tunnel。容器之间的数据就是通过这个 tunnel 通信的

不同 overlay 网络之间是隔离的 即便是通过 docker_gwbridge 也不能通信

如果需要通信 需要把其它overlay网络的容器添加一个网卡连接到overlay网络中 docker network connect overlay1 容器2 表示给容器2添加一个到overlay1的连接

overlay IPAM docker 默认为 overlay 网络分配 24 位掩码的子网(10.0.X.0/24)所有主机共享这个 subnet,容器启动时会顺序从此空间分配 IP

MACVLAN网络模型

macvlan 本身是 linxu kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置自己的 IP。macvlan 本质上是一种网卡虚拟化技术.

macvlan 的最大优点是性能极好,相比其他实现.macvlan 不需要创建 Linux bridge,而是直接通过以太 interface 连接到物理网络

容器的 eth0 就是 enp0s9 通过 macvlan 虚拟出来的 interface.容器的 interface 直接与主机的网卡连接,这种方案使得容器无需通过 NAT 和端口映射就能与外网直接通信(只要有网关),在网络上与其他独立主机没有区别

用 sub-interface 实现多 macvlan 网络

macvlan 会独占主机的网卡,也就是说一个网卡只能创建一个 macvlan 网络.但主机的网卡数量是有限的,如何支持更多的 macvlan 网络

macvlan 不仅可以连接到 interface(如 enp0s9) 也可以连接到 sub-interface(如 enp0s9.xxx)

VLAN 是现代网络常用的网络虚拟化技术,它可以将物理的二层网络划分成多达 4094 个逻辑网络,这些逻辑网络在二层上是隔离的,每个逻辑网络(即 VLAN)由 VLAN ID 区分,VLAN ID 的取值为 1-4094

Linux 的网卡也能支持 VLAN,同一个 interface 可以收发多个 VLAN 的数据包,不过前提是要创建 VLAN 的 sub-interface

如希望 enp0s9 同时支持 VLAN10 和 VLAN20,则需创建 sub-interface enp0s9.10 和 enp0s9.20

在交换机上,如果某个 port 只能收发单个 VLAN 的数据,该 port 为 Access 模式. 如果支持多 VLAN,则为 Trunk 模式.enp0s9 要接在交换机的 trunk 口上

不同 macvlan 网络不能在二层上通信 在三层上可以通过网关将 macvlan 连通

设置三层网关连通方式:

1.将 一台Host 配置成一个虚拟路由器并且设置网关IP

2.在路由器上设置iptables规则转发 VLAN10 和 VLAN20 的流量

1.因为 bbox1 与 bbox4 在不同的 IP 网段,跟据 bbox1 的路由表 数据包将发送到网关 172.16.10.1 eth2.10

2.路由器从 eth2.10 收到数据包,发现目的地址是 172.16.20.11,查看自己的路由表:于是将数据包从 eth2.20 转发出去

3.通过 ARP 记录的信息,路由器能够得知 172.16.20.11 在 host2 上,于是将数据包发送给 host2

4.host2 根据目的地址和 VLAN 信息将数据包发送给 bbox4

macvlan 网络的连通和隔离完全依赖 VLAN、IP subnet 和路由,docker 本身不做任何限制,用户可以像管理传统 VLAN 网络那样管理 macvlan

版权说明:
本网站凡注明“公众IT 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
您可以扫描右侧微信二维码联系我们。
网站首页 关于我们 联系我们 合作联系 会员说明 新闻投稿 隐私协议 网站地图