• Docker网络


    Docker网络模式


    docker默认网络驱动模式

    1. birdge 桥接模式(docker在安装完成之后,默认的网络模式,可以认为是一个二层交换机,能力有限,只是一些简单的学习与转发的功能,向外通信数据报使用iptables做SNAT地址转换,最后通过主机路由实现跨节点及互联网通信)
    2. host  主机模式(顾名思义,不做网络隔离,与宿主机使用一个网络namespace,容器与主机使用同样的网络)
    3. none 自定义(自选网络插件,一般用不到)
    4. container 容器模式(如果在创建容器时,--netword=container:container_id,即代表与该指定的容器共享一个网络namespace)

    Overlay

    Overlay网络,是建立在现有的网络之上的虚拟逻辑网络,Overlay网络大多数都是基于Vxlan技术实现的(在现有的三层网络建立虚拟二层网络),也可以理解为一条虚拟的Vxlan隧道

    Vxlan通过在UDP数据包中封装2层以太网数据帧,类似于Vlan的技术,并且突破VLAN4096的网络ID限制

    Vxlan环境的必备条件,每个Contaienr都有一个veth网络接口用来接入,Vxlan的桥接Bridge虚拟交换机;每个节点都都有虚拟的二层bridge虚拟交换机,用来与其它节点通信的隧道

    通信过程(单节点)通过本节点的bridge设备转发流量,不需要数据帧封装

    以下摘抄地址http://c.biancheng.net/view/3198.html

    1. C1 发起 ping 请求,目标 IP 为 C2 的地址 10.0.0.4。该请求的流量通过连接到 Br0 虚拟交换机 veth 接口发出。虚拟交换机并不知道将包发送到哪里,因为在虚拟交换机的 MAC 地址映射表(ARP 映射表)中并没有与当前目的 IP 对应的 MAC 地址
    2. 所以虚拟交换机会将该包发送到其上的全部端口。连接到 Br0 的 VTEP 接口知道如何转发这个数据帧,所以会将自己的 MAC 地址返回。这就是一个代理 ARP 响应,并且虚拟交换机 Br0 根据返回结果学会了如何转发该包。接下来虚拟交换机会更新自己的 ARP 映射表,将 10.0.0.4 映射到本地 VTEP 的 MAC 地址上
    3. 现在 Br0 交换机已经学会如何转发目标为 C2 的流量,接下来所有发送到 C2 的包都会被直接转发到 VTEP 接口。VTEP 接口知道 C2,是因为所有新启动的容器都会将自己的网络详情采用网络内置 Gossip 协议发送给相同 Swarm 集群内的其他节点
    4. 交换机会将包转发到 VTEP 接口,VTEP 完成数据帧的封装,这样就能在底层网络传输。具体来说,封装操作就是把 VXLAN Header 信息添加以太帧当中
    5. VXLAN Header 信息包含了 VXLAN 网络 ID(VNID),其作用是记录 VLAN 到 VXLAN 的映射关系。每个 VLAN 都对应一个 VNID,以便包可以在解析后被转发到正确的 VLAN
    6. 封装的时候会将数据帧放到 UDP 包中,并设置 UDP 的目的 IP 字段为 node2 节点的 VTEP 的 IP 地址,同时设置 UDP Socket 端口为 4789。这种封装方式保证了底层网络即使不知道任何关于 VXLAN 的信息,也可以完成数据传输
    7. 当包到达 node2 之后,内核发现目的端口为 UDP 端口 4789,同时还知道存在 VTEP 接口绑定到该 Socket。所以内核将包发给 VTEP,由 VTEP 读取 VNID,解压包信息,并根据 VNID 发送到本地名为 Br0 的连接到 VLAN 的交换机。在该交换机上,包被发送给容器 C2

    总结,现在容器网络大多数不会运用Overlay网络,数据帧封装会影响性能

     

  • 相关阅读:
    记账本开发第一天-补
    20200418-补
    20200411-补
    20200404-补
    20200328-补
    暴力解N皇后
    nN皇后递归
    Hanoi汉诺塔非递归栈解
    Hanoi汉诺塔递归
    JMMjmm模型
  • 原文地址:https://www.cnblogs.com/apink/p/15655423.html
Copyright © 2020-2023  润新知