Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >基于BGP实现纯三层容器网络方案

基于BGP实现纯三层容器网络方案

作者头像
腾讯专有云
发布于 2022-06-24 09:27:39
发布于 2022-06-24 09:27:39
1.2K0
举报
文章被收录于专栏:腾讯专有云腾讯专有云

容器网络实现中,相比于Overlay网络模型,Underlay网络具有更高的数据面转发性能。TCS(Tencent CloudNative Stack)在多集群的生产实践中,伴随着集群规模的增大,愈发需要能够支撑底层网络可以横向扩展的高性能网络方案。基于BGP实现的纯三层网络方案,打通Node与Pod以及Pod与Pod之间的网络通信,兼具高性能和强扩展属性助力TCS夯实底座。

01 性能测试

下图对比overlay常用到的两种隧道方案做性能对比,可以看出Underlay在网络发送吞吐上基本没有性能损耗。

02 架构概览

在不改变IDC机房内部网络拓扑的情况下,接入层交换机和核心层交换机建立BGP连接,借助于机房内部已有的路由策略实现,针对Node所处的物理位置分配Pod CIDR,并在每个节点上将Pod CIDR通过BGP协议宣告给接入层交换机,实现全网通信的能力。下图基于Leaf-Spine架构做详细说明。

  1. 每个接入层交换机与其管理的Node二层联通,共同构成一个AS。每个节点上跑BGP服务,用于宣告本节点路由信息。
  2. 核心层交换机和接入层交换机之间的每个路由器单独占用一个AS,物理直连,跑BGP协议。核心层交换机可以感知到全网的路由信息,接入层交换机可以感知与自己直连的Node上的路由信息。
  3. 每个Node上只有一条默认路由,直接指向TOR。同一个接入层交换机下的Node通信下一跳指向对端。

03 具体实现

邻居发现

在BGP实现的集群网络中,经常存在节点新增和删除的情形,如果采用静态配置对等体的方式,需要频繁的操作交换机进行对等体增删的操作,维护工作量很大,不利于集群的横向扩展。为了降低工具人属性,基于交换机动态邻居发现功能或者软件层面实现的路由反射器无需额外配置即可被动发现BGP邻居。具体有下面两种实现方式:

  1. 通过接入层交换机实现动态邻居发现:接入层交换机充当边界路由器,并开启Dynamic Neighbors功能,H3C,Cisco以及华为的路由器具体开启DN配置请参考官方文档。Node上的BGP服务主动与接入层交换机建立iBGP连接,并宣告本地路由,接入层交换机将学习到的路由宣告给整个数据机房内部。
  2. 通过RR实现动态邻居发现:物理交换机或者Node节点充当反射路由器RR,反射路由器与接入层交换机建立iBGP连接,Node节点上的BGP服务与反射路由器建立连接。Node上的BGP服务将本地路由宣告给RR,RR反射到接入层交换机,接入层交换机接着宣告给整个数据机房内部。

下一跳

跨TOR的节点之间通信下一跳指向TOR,同一个TOR下的节点之间通信下一跳指向对端节点。下图展示了同一个TOR下以及跨TOR下节点的路由学习情况,可以直观的根据路由表判定下一跳地址。10.2.0.2节点与10.2.0.3节点处在同一个TOR下,具备二层连通,报文经过封装后不经过TOR直接被送到对端。10.2.0.2节点与10.3.0.3节点处在不同的TOR下,报文需要经过接入层交换机TOR和核心交换机Spine路由后才能到达对端。

IP地址拓扑感知

Underlay场景下IP地址分配与机房强关联,接入层交换机及核心层交换机往往会针对预分配的IP地址进行策略控制,TCS集群实现IP地址拓扑感知能力,根据节点所处的物理位置分配可路由的IP地址段。因为可路由的IP地址比较稀缺,TCS可根据节点上Pod规模动态扩缩容IP地址段,以实现对IP地址的高效利用。

自定义IPPool资源对象,ippool-controller启动后通过watch IPPool资源对象获取可用的IP地址池,同时需要监听Node事件,当Node上IP地址短缺时,ippool-controller根据Node所处的物理拓扑以及期望的IP地址个数扩容Pod CIDR更新到Node实例中,Node上的IPAM根据具体分配的Pod CIDR申请释放IP。

BMP监控

基于BMP(BGP Monitoring Protocol[rfc7854],BGP监控协议)开发BMP Server,用于对BGP会话的运行状态进行实时监控,包括对等体关系的建立与关闭、路由信息等。利用收集到的BMP Message直接定位故障。

Graceful Restart

BGP是基于TCP实现的路由协议,TCP连接异常断开后,开启Graceful Restart功能的交换机不会删除RIB和FIB,仍然按照原有的转发表项转发报文,并启动RIB路由老化定时器。BGP Peer需要两端同时开启Graceful Restart功能才能生效,Graceful Restart可以有效防止BGP链路震荡,提升底层网络的可用性。

结语

相较于OSPF、RIP这些内部网关协议,BGP着眼于控制路由的传播以及选择最佳路径。BGP最大的优势在于具有较强的可扩展性,能够满足大规模集群横向扩展的需求,同时BGP足够简单稳定,是云原生网络方案实现中必不可少的一环。TCS团队践行云原生理念,利用BGP协议打造稳定可靠的底层Underlay网络环境,为TCE客户提供更高的数据面转发性能。

-END-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯专有云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
腾讯云TKE-基于 Cilium 统一混合云容器网络(下)
魏后民,腾讯云后台开发工程师,关注容器、Kubernetes、Cilium等开源社区,负责腾讯云 TKE 混合云容器网络等相关工作。 王昌宇,腾讯云高级工程师,关注OpenStack、Kubernetes,ServiceMesh等社区,负责TCNS高性能网络研发。 徐凌云,腾讯云高级工程师,关注 Linux 内核网络、Cilium等开源社区,负责 TCNS 高性能网络研发。 前言 在 腾讯云TKE - 基于 Cilium 统一混合云容器网络(上) 中,我们介绍 TKE 混合云的跨平面网络互通方案和 TK
腾讯云原生
2021/06/28
1.7K0
BGP 模式下 Calico 与 MetalLB 如何结合
最近我司业务扩展在机房新开了一个区域,折腾了一段时间的 Calico BGP,为了能将整个过程梳理得更简单明了,我还是决定将这个过程记录下来。不管是对当下的总结还是未来重新审视方案都是值得的。大家都知道,云原生下的网络架构在 Kubernetes 里可以算是百花齐放,各有所长,这无形中也导致网络始终是横在广大 K8S 爱好者面前迈向高阶管理的几座大山之一。通常大家在公有云上使用厂家提供的 CNI 组件可能还感受不到其复杂,但一旦要在 IDC 自建集群时,就会面临 Kubernetes 网络架构选型的问题。Calico 作为目前 Kubernetes 上用途最广的 Kubernetes CNI 之一,自然也有很多追随者。而本篇便是在自建机房内 BGP 组网下的一次总结。
云原生小白
2022/06/06
2K0
BGP 模式下 Calico 与 MetalLB 如何结合
Kube-OVN高级功能 | 支持 BGP
" 如果你怀念 SDN 领域丰富的网络能力却在云原生领域苦苦追寻而不得,那么 Kube-OVN 将是你的最佳选择。本系列我们将逐个介绍Kube-OVN高级功能的工作原理及使用路径,帮你尽快征服容器网络难题!"
灵雀云
2023/03/27
1K0
Kube-OVN高级功能  |  支持 BGP
一文读懂 Kubernetes 容器网络
在Kubernetes中要保证容器之间网络互通,网络至关重要。而Kubernetes本身并没有自己实现容器网络,而是通过插件化的方式自由接入进来。在容器网络接入进来需要满足如下基本原则:
iMike
2021/02/07
6470
kubernetes(十八)集群网路
OSI(Open System Interconnection)是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。
alexhuiwang
2020/09/23
1.5K0
kubernetes(十八)集群网路
使用 Containerlab + Kind 快速部署 Cilium BGP 环境
Cilium 是一款基于 eBPF 技术的 Kubernetes CNI 插件,Cilium 在其官网上对产品的定位为 “eBPF-based Networking, Observability, Security”,致力于为容器工作负载提供基于 eBPF 的网络、可观察性和安全性的一系列解决方案。Cilium 通过使用 eBPF 技术在 Linux 内部动态插入一些控制逻辑,可以在不修改应用程序代码或容器配置的情况下进行应用和更新,从而实现网络、可观察性和安全性相关的功能。
Se7en258
2022/12/06
1.2K0
使用 Containerlab  +  Kind 快速部署 Cilium BGP 环境
calico网络原理、组网方式和使用
calico是一个比较有趣的虚拟网络解决方案,完全利用路由规则实现动态组网,通过BGP协议通告路由。
domain0
2019/08/08
23.4K1
kubernetes集群网络
问题:Pod是K8S最小调度单元,一个Pod由一个容器或多个容器组成,当多个容器时,怎么都用这一个Pod IP?
yuezhimi
2020/09/30
1.5K0
关于网络的一次推演(续)
本文用一个连续的思路对网络做了推演,为上一篇文章的延续。旨在最终解构复杂网络架构。包含:RIP、OSPF、EIGRP、BGP和常用的数据中心网络架构等。上一篇文章详见《关于网络的一次推演》
晴日飞鸢
2022/03/17
1.6K1
Kubernetes容器网络模型
计算、存储和网络是云时代的三大基础服务,作为新一代基础架构的 Kubernetes 也不例外。而这三者之中,网络又是一个最难掌握和最容易出问题的服务;本文通过对Kubernetes网络流量模型进行简单梳理,希望对初学者能够提供一定思路。先看一下kubernetes 总体模型:
SDNLAB
2020/07/09
1.4K0
Kubernetes容器网络模型
Calico 介绍、原理与使用
Calico 是一套开源的网络和网络安全方案,用于容器、虚拟机、宿主机之前的网络连接,可以用在kubernetes、OpenShift、DockerEE、OpenStrack等PaaS或IaaS平台上。
YP小站
2020/06/04
11.8K0
Calico 介绍、原理与使用
如何像Facebook一样构建数据中心 – BGP在大规模数据中心中的应用(2)
作者简介:史梦晨,南京邮电大学通达学院 本科,柏林工大/巴黎六大 硕士 现就职于 欧洲高级网络测试中心 研究方向:网络设计,测试: 大规模数据中心,SD-WAN,EV**,Segment Routing, NFV 前文说到,根据需求1-5,RFC7938提出了只使用eBGP作为数据中心内唯一的路由协议,那么是怎么考虑和实施的呢。 为何选择eBGP作为路由协议 首先为何eBGP一般不被考虑用做数据中心内的纯路由协议呢?主要是由于以下认识或者是原因: 1、eBGP一般是用于广域网域间互
SDNLAB
2018/06/11
2K0
SDN私享汇(十五):SDN之道Juniper Contrail深入解析
1.介绍 云计算为了适应业务/APP 的快速开发和部署,会把网络分为两层:Overlay和Underlay网络。对于Underlay网络适用于传统的物理网络的自动化部署,提供基本的物理连通性,不需要经常变化网络拓扑等。对于Overlay网络来说,需要经常性的网络变更以适用于DevOps的要求,必须要引入SDN来控制Overlay网络,对于Overlay网络来说,也分为纯软件的(比如基于 vRouter)方案和软硬混合的方案(比如基于 TOR Switch上的EV**+VxLAN)方案。
SDNLAB
2018/03/29
2K0
SDN私享汇(十五):SDN之道Juniper Contrail深入解析
网工知识大扫盲——三层交换技术
今天给大家带来的是交换技术,主要是三层方向的,文中提到的示例都以锐捷设备为例,很适合大家查漏补缺,以下是目录:
网络技术联盟站
2021/04/23
1.9K0
杨雨:Tungsten Fabric如何增强Kubernetes的网络性能
在混合多云的世界里,Kubernetes是如此流行,已经成为应用统一部署和管理的事实标准,而Tungsten Fabric与Kubernetes的集成,更增强了后者的网络性能和安全性,帮助实现业务落地。
Tungsten Fabric
2020/06/08
1.1K0
杨雨:Tungsten Fabric如何增强Kubernetes的网络性能
datacenter network architecture
想写两篇文章,一是《数据中心网络体系结构》,二是《交换机体系结构和pipeline》,写这主要是为总结和回顾,好帮我们解决云计算碰到的问题,比如云计算环境overlay和underlay网络怎么设计,软件交换机可以借鉴那些硬件交换机的特性,软件的转发流程怎么设计等等。
惠伟
2021/02/24
9290
datacenter network architecture
Calico BGP 功能介绍:实现
Calico 作为一种常用的 Kubernetes 网络插件,使用 BGP 协议对各节点的容器网络进行路由交换。本文是《Calico BGP 功能介绍》系列的第二篇,介绍 Calico 中 BGP 功能的实现。所使用的 Calico 版本为 v3.17.3。
米开朗基杨
2021/06/09
3.1K0
Calico BGP 功能介绍:实现
使用containerlab搭建cilium BGP环境解析
containerLab支持很多节点和类型设置,相对比较复杂。实际使用中只需要掌握基本的组网即可
charlieroro
2022/10/05
9200
使用containerlab搭建cilium BGP环境解析
云网一体化数据中心网络关键技术
中共中央政治局常务委员会在2020 年3 月4 日召开会议,明确指出,加快5G 网络、数据中心(datacenter,DC)等新型基础设施建设进度(以下简称“新基建”)。“新基建”作为发力于科技端的基础设施建设,将成为新一轮数字化经济发展的催化剂,也将是未来科技创新竞争力的核心所在。数据中心首次被国家列入加快建设的条目,作为“新基建”七大领域中的一大亮点,将协同5G 网络、工业互联网等基础设施加速新一代信息技术发展。
灯塔大数据
2020/06/02
8.2K0
云网一体化数据中心网络关键技术
BGP篇
OSPF,ISIS,RIP等路由协议属于独自的自制系统,早期,多自治系统中间互访采用EGP网络,EGP没有考虑到路由优选和环路抵御的问题。仅仅考虑路由可达。
残浔
2023/11/26
6060
BGP篇
相关推荐
腾讯云TKE-基于 Cilium 统一混合云容器网络(下)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文