• flannel的vxlan的工作过程


    看前提醒

    本文有些部分是我自己理解的,如果有异议希望大家指正出来。提前感谢大家了。

    关于vxlan的理解

    先脱离flannel,谈一下vxlan。我们先看一下vxlan的一些概念,先来一张图:

    • VETP:这是vxlan中最重要的部分,他负责拆包和封包。
    • VNI:类似于vlan,每个vlan都有一个ID。每个vxlan也需要有个ID进行标识。
    • 隧道:这是一个虚拟概念,实际上并没有一个设备对于这个概念,隧道屏蔽了底层的网络,通信双方都以为自己和对方直接通信。

    咱们再看一下vxlan的报文:

    如上图看出,vxlan中是在一个原始报文上,又进行了一层封包。也就是增加了一个50字节的头部。所以配置MTU的时候要注意一下,内层数据包所在的网卡的最大MTU最大应该是1450字节,因为后面进行封包后正好不会超过1500字节,这样基本上不会有问题。

    vxlan封包的时候的难点:

    • 内部层数据包:目的MAC,这个是需要想招得到的。
    • IP header: 对方VETP所在服务器的IP。

    为啥其他的不会成为难点呢?

    • vxlan的头部,这个一般会提前配置好,也可以理解为提前写死了。
    • UDP的头部,这个可以理解为已经写死了,一般是4789,flannel是8472.
    • outer Mac Header, 如果我们获取到了IP Header, 通过arp就能获取到。

    解决办法

    • 多播的方式,这种方式一般是不能提前知道整个集群的部署情况,需要通过多播进行询问,获取到我们想要的信息。
    • 控制中心的方式,这种方式是有个控制中心,能查询到整个集群的部署情况,然后按照需要提前将信息配置到各个节点上。

    关于这两个方式,不多赘述,我们要介绍的flannel用的就是控制中心的方式。

    Flannel的Vxlan的工作方式

    flannel支持UDP、HOST-GW、Vxlan三种网络模式,而其中vxlan是最受欢迎的网络模式,因为其性能优于UDP,复杂度弱于HOST-GW。

    下图展示了,flannel的vxlan在工作过程,需要的一些组件和数据的流向:

     

    •  首先,每个节点都会启动一个flanneld的进程,这个进程时刻监听着apiserver,到发现有新节点加入,就会做如下事情:
    1. # 在路由表中添加一个表项,
    2. ## 目的端是新增节点上,容器的网段
    3. ## via 设置为新增节点上VETP的地址
    4. ## 输出设备 本机的flannel.1
    5. ### 如下面举例, 其中172.17.2.0是完整地址是 172.17.2.0/32
    6. 172.17.2.0/24 via 172.17.2.0 dev flannel.1 onlink
    7. # 在arp缓存表中添加,172.17.2.0/32 的mac地址
    8. ### 如
    9. 172.17.2.0 dev flannel.1 lladdr 7a:2c:d0:7f:48:3f PERMANENT
    10. # 在FDB中添加, 上面的mac地址应该转发到那个机器上
    11. ## FDB可以理解为一个交换机,可以根据mac地址判断出,从那个口进行发出
    12. # 如
    13. 7a:2c:d0:7f:48:3f dev flannel.1 dst 192.168.1.3 self permanent
    • 当容器请求另一个节点上的容器时,会通过默认路由发送到cni0上,cni0拆去数据链路层的头部,按照路由表这个包应该发给flannel.1
    • flannel.1收到包,进行vxlan封包
    1. # 原数据包中的,目的mac从arp中获取
    2. # 数据包的目的IP,从FDB中获取
    • 从而,数据包通过物理网络就会发送到另一个节点上了,另一个节点会进行相应的拆包操作
  • 相关阅读:
    栈的实现-c语言实现
    GBase 8a MPP集群规划
    会用postman不算牛,会用Eolink才是真的牛
    Codeforces Round #828 (Div. 3) A-F
    vue缓存当前路由(在输入框中输入信息后,跳转其他路由再回来,仍可看到刚刚输入的内容等)
    Echarts折线图数据过小重叠,被x轴刻度顶到最上面解决办法
    使用systemd部署r-nacos
    DeFi史上具备从0到1创新性的7个代币
    文举论金:黄金原油全面走势分析策略指导。
    【2020】【论文笔记】使用CMOS和散射光学的THz分光——
  • 原文地址:https://blog.csdn.net/u014686399/article/details/126109538