1、前言

BGP工作模式:

bgp工作模式和flannel的host-gw模式几乎一样;

bird是bgd的客户端,与集群中其它节点的bird进行通信,以便于交换各自的路由信息;

随着节点数量N的增加,这些路由规则将会以指数级的规模快速增长,给集群本身网络带来巨大压力,官方建议小于100个节点;

限制:和flannel的host-gw限制一样,要求物理机在二层是连能的,不能跨网段;

Route Reflector模式:

在更大规模的集群中,需要通过Route Reflector模式专门创建一个或者几个专门的节点,负责跟所有的BGP客户端建立连接,从而学全全局的路由规则;

而其它节点,只需要跟这几个专门的节点交换路由信息,就可以获得整整个集群的路由信息

IPIP模式:

场景:用在跨网段通信的情况下,bgp模式在跨网段的场景将不能工作;

tunl0:创建的虚拟网卡设备,此时的作用就和flannel的VxLAN工作模式类似(此处的tunl0不是flannel的UDP模式中的tun0)

2、服务器信息

1、ip及mac信息

server ip mac gw_mac
172.22.108.11 172.22.108.11 b8:ca:3a:f2:74:fb 38:ad:8e:59:02:e7
172.22.108.12 172.22.108.12 08:94:ef:7b:47:a7 38:ad:8e:59:02:e7
10.100.106.15 10.100.106.15 b8:2a:72:ce:b0:75 00:5e:ed:ff:00:01
172.22.108.11 172.32.31.151 ae:a3:86:58:6c:59
172.22.108.12 172.32.135.30 f2:bc:d7:00:3c:be
10.100.106.15 172.32.245.151 f6:a\b:e3:0f:ad:12

2、路由条目

主机10.100.106.15

主机172.22.108.12

主机172.22.108.11

3、IPIP剖析

1、虚拟tunl0网卡报文详情

在10.100.106.15上ping 172.22.108.12的pod,同时下172.22.108.11上执行抓包命令( tcpdump -i tunl0 host 172.32.245.151 -w 108.12.pcap )(如果抓其物理网卡,是抓不到数据包的,因为,进行了二次封装,到达物理网卡的报文的ip是10.100.106.15)

2、物理网卡报文详情

本机10.100.106.15上抓包,添加过滤信息:ip.addr == 172.32.245.151

tcpdump -i em1 host 172.22.108.12 -w 106.15.pcap

对端172.22.108.12上抓包

添加过滤信息:ip.addr == 172.32.245.151,通过以下抓包可以发现,由于使用了ipip模式,最外一层封装了物理网卡的信息。

4、calico cross-subnet

ipip虽然实现了 calico 跨网段通信,但对于相同网段间的主机通信来说,IP-in-IP 就有点多余了,因为二者宿主机处于同一广播域,2层互通,直接走主机路由即可。此时需要借助calico cross-subnet

$ calicoctl apply -f - << EOF
apiVersion: v1
kind: ipPool
metadata:
cidr: 192.168.0.0/16
spec:
ipip:
enabled: true
mode: cross-subnet
nat-outgoing: true
EOF

为经作者同意,禁止转载,写作不易

calico的ipip与bgp的模式分析的更多相关文章

  1. calico集成详解

    一.摘要 ======================================================================================= 包括三项: c ...

  2. Calico网络模型

    由于两台物理机的容器网段不同,我们完全可以将两台物理机配置成为路由器,并按照容器的网段配置路由表. 在物理机A中,我们可以这样配置:要想访问网段172.17.9.0/24,下一跳是192.168.10 ...

  3. 042.集群网络-flannel及calico

    一 Flannel组件 1.1 flannel介绍 Kubernetes的网络模型假定了所有Pod都在一个可以直接连通的扁平网络空间中.若需要实现这个网络假设,需要实现不同节点上的Docker容器之间 ...

  4. Flannel和Calico网络插件工作流程对比

    Flannel和Calico网络插件对比   Calico简介 Calico是一个纯三层的网络插件,calico的bgp模式类似于flannel的host-gw Calico方便集成 OpenStac ...

  5. Flannel和Calico网络插件对比

    1.Kubernetes通信问题 1.容器间通信:即同一个Pod内多个容器间通信,通常使用loopback来实现. 2.Pod间通信:K8s要求,Pod和Pod之间通信必须使用Pod-IP 直接访问另 ...

  6. 修复tunl0-二进制安装calico

    这篇博文很重要,出现这个问题导致pod之间无法通讯,pod无法连接外网. 出现的问题是二进制方式安装了节点之后, tunl0没有显示,通过ifconfig tunl0 up 启动tunl0 没有意义, ...

  7. calico和flannel的优缺点

    1.Kubernetes通信问题 1.容器间通信:即同一个Pod内多个容器间通信,通常使用loopback来实现. 2.Pod间通信:K8s要求,Pod和Pod之间通信必须使用Pod-IP 直接访问另 ...

  8. 容器中跨主机的网络方案-Calico

    容器中的网络是建立docker集群的重要内容. 本文将介绍如何用Calico实现容器的多节点互通. Calico的组件结构如下: Calico通过etcd同步Bridge的信息,各个Docker no ...

  9. calico官网网络拓扑实现:基于eNSP与VMVare

    Calico官网提供了两种网络设计模式: AS per rack: 每个rack(机架)组成一个AS,每个rack的TOR交换机与核心交换机组成一个AS AS per server: 每个node做为 ...

随机推荐

  1. Spring与后端模板引擎的故事

    更多内容,欢迎关注微信公众号:全菜工程师小辉.公众号回复关键词,领取免费学习资料. 现在很多开发,都采用了前后端完全分离的模式,随着近几年前端工程化工具和MVC框架的完善,使得这种模式的维护成本逐渐降 ...

  2. CENTOS服务器基础教程-U盘系统盘制作

    什么都要用到一点点,会一点点,现在的USB3.0基本上服务器都已经支持.小编给大家介绍基础篇:如何使用U盘制作系统安装盘   工具/原料   U盘 UltraISO工具 方法/步骤     准备一个U ...

  3. Azure Devops: COPY failed: stat /var/lib/docker/tmp/docker-builder268095359/xxxxxxx.csproj no such file or directory

    在Azure Devops中部署docker镜像时,  出现COPY failed: stat /var/lib/docker/tmp/docker-builder268095359/xxxxxxx. ...

  4. 问题.beego路由设置及请求参数传递

    最近项目组安排将一组Lua实现的web服务端代码重构成Go实现,所以顺便学习了下Lua和Go,这里记录下在尝试重构的过程中遇到的几个问题. 1.beego路由设置 路由设置简单说下,主要是调用了pac ...

  5. Mongodb操作1-linux安装数据库

    1.下载mongodb 百度云盘连接 :链接:https://pan.baidu.com/s/1b-hTS0XHQKpatecFoumLxw  提取码:z9ax 并送上可视化工具:链接:https:/ ...

  6. atcode E - guruguru(思维+前缀)

    题目链接:http://arc077.contest.atcoder.jp/tasks/arc077_c 题解:一道思维题.不容易想到类似区间求和具体看一下代码. #include <iostr ...

  7. CF 987C Three displays DP或暴力 第十一题

    Three displays time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  8. webpack4.0 babel配置遇到的问题

    babel配置 babel版本升级到8.x之后发现出现了很多问题.首先需要安装 "@babel/core": "^7.1.2", "@babel/pl ...

  9. Java面试-List中的sort详细解读

    最近看了一些排序相关的文章,因此比较好奇,Java中的排序是如何做的.本片文章介绍的是JDK1.8,List中的sort方法. 先来看看List中的sort是怎么写的: @SuppressWarnin ...

  10. 大多数人不知道的:HashMap链表成环的原因和解决方案

    引导语 在 JDK7 版本下,很多人都知道 HashMap 会有链表成环的问题,但大多数人只知道,是多线程引起的,至于具体细节的原因,和 JDK8 中如何解决这个问题,很少有人说的清楚,百度也几乎看不 ...