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. MSIL实用指南-struct的生成和操作

    struct(结构)是一种值类型,用于将一组相关的信息变量组织为一个单一的变量实体.所有的结构都继承自System.ValueType类,因此是一种值类型,也就是说,struct实例分配在线程的堆栈( ...

  2. ACM-数论-广义欧拉降幂

    https://www.cnblogs.com/31415926535x/p/11447033.html 曾今一时的懒,造就今日的泪 记得半年前去武大参加的省赛,当时的A题就是一个广义欧拉降幂的板子题 ...

  3. String类中intern方法的原理分析

    一,前言 ​ 昨天简单整理了JVM内存分配和String类常用方法,遇到了String中的intern()方法.本来想一并总结起来,但是intern方法还涉及到JDK版本的问题,内容也相对较多,所以今 ...

  4. hdu 5887 Herbs Gathering (dfs+剪枝 or 超大01背包)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5887 题解:这题一看像是背包但是显然背包容量太大了所以可以考虑用dfs+剪枝,贪心得到的不 ...

  5. 【百度之星】【思维】hdu 6724Totori's Switching Game

    思维题,最后只要判断每个点的度数>=k即可. #pragma comment(linker, "/STACK:1024000000,1024000000") #pragma ...

  6. codeforces 735C. Tennis Championship(贪心)

    题目链接 http://codeforces.com/contest/735/problem/C 题意:给你一个数n表示有几个人比赛问最多能赢几局,要求两个比赛的人得分不能相差超过1即得分为2的只能和 ...

  7. CodeForces 779D. String Game(二分答案)

    题目链接:http://codeforces.com/problemset/problem/779/D 题意:有两个字符串一个初始串一个目标串,有t次机会删除初始串的字符问最多操作几次后刚好凑不成目标 ...

  8. Fire Balls 08——音效的添加

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  9. 【Offer】[53-1] 【数字在排序数组中出现的次数】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 统计一个数字在排序数组中出现的次数.例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出 ...

  10. springboot使用 @EnableScheduling、@Scheduled开启定时任务

    1.在main启动项添加一个注解@EnableScheduling package com.example.springmybatis; import org.mybatis.spring.annot ...