BGP在数据中心的应用1——数据中心网络介绍

news2024/12/26 11:06:59

注: 本文根据《BGP in the Datacenter》整理,有兴趣和英文阅读能力的朋友可以直接看原文:https://www.oreilly.com/library/view/bgp-in-the/9781491983416/

引子

在传统的大型数据中心,网络通常是三层结构。Cisco称之为:分级的互连网络模型(hierarchical inter-networking model)。这个模型包含了以下三层:
在这里插入图片描述

  1. Access Layer(接入层):在局域网中,接入层提供终端设备接入网络的功能;在广域网中,它可能还提供远程办公( teleworker)或远程 site 通过 WAN 访问公司网络的功能。
  2. Distribution Layer(分发层):分发层对接入层的包进行聚合(aggregate),然后送到核心层进行路由。分发层是 L2 网络(交换)和 L3 网络(路由)的边界。
  3. Core Layer(核心层):核心层也称作网络骨干(network backbone),由高速网络设备组成。核心层设计用来尽可能快地转发包,以及互联多个网络模块 ,例如分发模块、服务模块、数据中心,以及 WAN 边缘。

传统三层网络架构的规模取决于核心层设备的性能和规模、交换机的端口密度。最大的数据中心对应着体积最大和性能最高的网络设备,这种规模的设备并非所有的网络设备商都能提供,并且对应的资金成本和运维成本也较高。采用传统三层网络架构部署数据中心网络,企业将面临成本和可扩展性的两难选择。

一、现代数据中心网络的需求

数据中心的诞生是为了服务于数字业务,因此,它需要适应每一个阶段业务的架构和需求。前两次应用业务架构为单体应用程序(monolithic single-machine applications)以及客户端-服务器(Client-Server)架构模型。然而,随着云计算的兴起,越来越多的业务应用架构转变为了服务器-服务器(Server-Server)模式。这也是第三次应用浪潮,它的出现,也让承载它的数据中心架构发生了巨大的变化。此变化需要对下面三项提供良好的支持:

对服务器-服务器通信需求的增加:
在客户端-服务器架构中,物理服务器一般仅仅处理客户访问自己的请求(Request),或者与一些特定的服务器通信,例如数据库。但总体来说,大部分流量依然是南北向(South-North)流量。相反的是,目前的一些应用,例如Hadoop,需要部署在数以百计的节点上,并且无缝通信。这需要极大的东西向(East-West)流量支持。进一步说,现在的服务器为了提供更优秀的东西向流量支持、可移植性、可拓展性以及更高的硬件利用率,放弃了物理服务器直接部署应用的方式,而是转为了以虚拟机(Vitual Machine)或者微服务(Microservices)架构的形式。这种新的服务器部署形式对网络架构的要求是之前数据中心无法支持的。

规模:
随着数据储存量和计算能力的极大攀升,数据中心的规模也不断的扩大,通常一个数据中心需要上万以及数十万的服务器进行支持,而以往数据中心的网络架构通常无法满足如此庞大的服务器接入。

恢复力(Resilience):
数据中心网络的规模的增大必然带来网络故障出现频率变多。传统的数据中心通常使用向内扩张(Scale-in)的方式,使用更昂贵复杂的设备来来提高数据中心性能。但是这种方式导致设备一旦出现故障,所辐射的用户范围将变大,并且难以排错,这是业务所无法忍受的。所以在新的数据中心架构设计中,它被允许能够出现故障,但是要求故障是可控的(范围小),易于排错和快恢复,以及对用户影响十分微小的。

因此,未来解决上述问题,Clos架构被应用于来新的数据中心网络中。

二、Clos模型架构

Clos架构模型在上世纪50年代就已经被理论提出,以应对爆炸式的网络增长。图1显示了最简单的Clos模型。其中,绿色节点代表交换机,灰色节点代表服务器。在绿色节点中,顶部是Spine节点,下部是Leaf节点。Spine节点与Leaf节点相互连接,每片Leaf都连接到每个Spine节点,反之亦然。此外,Leaf节点下连服务器,为服务器提供网络接入服务。
在这里插入图片描述

图1:2层Clos架构

进一步说,这样的模型架构有如下的好处:

  1. 首先要注意的是连接的统一性:服务器通常距离任何其他服务器只有三跳,网络质量容易保证。
  2. 接下来,节点非常均匀:服务器看起来相似,交换机也是如此。这种重复的网络结构就像一个一个模块堆积而成,满足了现代数据中心快速,简单的拓展对需求。
  3. 第三,根据现代数据中心应用程序的要求,连接矩阵(Matrix)相当丰富,使其能够优雅地处理故障。可以看到,每一个Spine和Leaf节点都有线路连接,其中一条或者多条链路故障对整个网络对影响不大。

此外,我们可以看到,所有服务器直接与Leaf交换机直接相连,Spine只是作为连接器来完善服务器之间的连接。在这个模型中,服务器被推到Leaf,而不是Spine。这种架构模型称为向外扩张(Scale-out)模型。在实际的部署中,服务器通过低速链路与Leaf互连,交换机之间通过高速链路互连。

想要对该模型架构进行扩容,通常有两个方法。一个是增加Leaf和Spine节点的数量、更换更好的设备以及接口转发速率,但是这种方式很容易受到每个交换机接口数量,投入成本以及转发效率的限制。还有一种方式则是增加Clos网络的层级,例如从二层Clos网络转变为三层Clos网络架构,如图2所示:
在这里插入图片描述

图2:3层Clos架构

可以看到,整个网络分为了三层,分别是Spine、Leaf和Tor(Top of rack)。其中Tor设备也就是整个网络服务器的接入点,由于它通常部署在每一个Rack的顶端,所以被称为Tor of rack。由于多个Leaf和Tor组成的二级Clos网络通过Spine进行连接,极大的扩张了数据中心设备的规模。这从根本上展示了Clos网络的美妙之处:就像分形设计一样,更大块都是从本质上相同的积木组装而成的,每一个积木并不需要有超强的转发能力。甚至我们可以将网络层级扩大到四级或者更多,以绕过较小构建块的规模限制。

最后总结一下,通过扩大层级的方式,我们使用固定的,相对廉价的交换机就能过建成规模庞大的网络。同时受益于每一层级间丰富的互联的链路,及时链路乃至设备出现故障,所损书的带宽依然在可控范围内,并且所影响的服务器不多(传统网络中通常两台设备做备份,其中一台出现故障,带宽直接减少百分之50)。最后,由于交换机以模块化的形式部署,我们只需要选择几类不同型号的即可,方便管理和排错。

三、Clos网络架构

Clos网络架构还要求使用与传统网络架构不同。在传统网络中,我们所谓的Spine层被称为网络的访问聚合层。前两层网络是使用桥接(bridge)而不是路由(routing)连接的。桥接网络中使用生成树协议(STP),该协议将Clos网络的丰富连接矩阵分解为无环路树。例如,如图1所示,在双层Clos网络中,最左边的叶子和最右边的叶子之间有四条路径。然而,STP只能使用其中一条路径。因此,对于左边和最右边的Leaf,拓扑缩减为图3所示的拓扑结构。
在这里插入图片描述

图3:STP协议下的Clos架构

相比来说,路由能够充分利用Clos网络的丰富连接矩阵,利用所有路径。路由还可以采用最短的路径,以更好地整体链路利用率。因此,我们可以得到如下的结论,路由最适合Clos结构,而桥接则不适合。从桥接到路由的转换中获得的一个关键好处是,我们可以摆脱桥接网络所需的多个协议,其中许多是专有的。传统的桥接网络通常运行STP、VLAN协议、第一跳路由协议(如主机备用路由协议(HSRP)或虚拟路由器冗余协议(VRRP)),以及路由链路的单独单向链路检测协议。通过路由,我们唯一的控制平面协议是路由协议和单向链路检测协议(BDF)。通过减少运行网络工作所涉及的协议数量,我们还提高了网络的弹性和减少了排错的复杂性。

四、服务器接入模型

大型企业的数据中心拥有丰富的服务器,因此因网络工作故障而损失整个机架无关紧要。然而,在许多较小的网络中,由于失去一个Tor会导致整个机架的服务器无法使用,并且无法承担该后果。因此,它们双连接服务器,每个链接都连接到不同的ToR,并且这两个ToR都位于同一个机架上。

因此,当服务器双连接时,双链路使用供应商专有协议聚合成单个逻辑链路,Cisco称其为虚拟端口通道(vPC),Arista称其为多机箱链路聚合协议(MLAG)等等。从协议的角度来看,连接到服务器的两个交换机提供了一种错觉,即它们是单个交换机。此外,两台Tor之间还需要通过标准的链路聚合控制协议(LACP)协议捆绑链路,以提高互联接的可靠性。图4显示了带有MLAG的双连接服务器架构。
在这里插入图片描述

图4:双上行服务器接入模式

五、连接外部网络

Clos网络访问外部网络通常有两种方式,分别是通过Border pod或者Spine。它们的架构图分别如图5和图6所示:
在这里插入图片描述

图5:通过Border Pod访问外网

在这里插入图片描述

图6:通过Spine访问外网

简单来说,这两种模型各有优势。首先是通过Border Pod访问外部网络,这种方式最大的优势就是将内部网络和外部网络进行了分离,内部的路由协议不会和外部进行交互,保证了内部网络的稳定和安全性。但是,如果是在小规模的网络中,通常是没有成本去专门部署Boeder Pod的,因此也可以直接通过Spine实现对外网的访问。需要注意的是,在这个模型中,所有Spine都需要连接到外部网络,以实现流量的负载(ECMP),否则所有流量仅通过少数的Spine访问外网,会照常相应的链路拥塞和设备故障。

六、支持多租户

随着云计算的兴趣,数据中心的网络还需要满足一些额外的特征:

  • 敏捷性:鉴于云的典型使用,即客户快速创建和删除资源,网络能够支持这种模式至关重要。
  • 隔离:一个客户的流量不得被其他客户看到。
  • 规模:必须支持大量客户或租户。

相对来说,传统的数据中心架构通过VLAN、VPN实例来隔离租户已经不适用于虚拟机以及微服务的架构场景,因为VLAN和VPN实例无法实时的感受这些服务的创建和销毁,此外VLAN ID的个数(1-4095)也极大程度限制了数据中心所能连接服务器的数量。因此,通过Clos架构在底层(Underlay)运行路由协议保证网络全局可达的情况下,再通过虚拟拓展局域网(VXLAN)的方式在租户间建立VXLAN的高层(Overlay)隧道,能更好的解决支持多租户的问题。

七、自动化运维需求

由于数据中心的规模巨大,我们必须对其采用自动化的管理形式。如果一个数据中心中设备各异,差别巨大,是几乎无法实现全自动化管理的。庆幸的是,在Clos架构中通常使用的交换机类型固定,并且通过VXLAN结合软件定义网络(SDN)的形式,能过极大的简化网络部署和运维的压力。

八、路由协议选择

这里我们推荐使用BGP来架构数据中心的底层网络。相对于OSPF,它天生支持更多的协议栈(OSPFv2和OSPFv3严格来说是两个不同的协议),并且BGP也不需要向链路状态协议定时泛洪链路(Link-State)状态信息,因为BGP是基于触发更新,以减少路由协议对带宽的消耗。此外,通过BGP的形式传递路由,交换机也无需维护极大的链路状态数据库,减少对于宝贵计算资源的浪费。另外一点,BGP带有更加丰富的选路属性,能过灵活的帮助数据中心实现底层的网络负载均衡等需求。最后,BGP是基于TCP协议同步信息,有足够的可靠性。

当然BGP的收敛速度一般是无法与链路状态协议所相比的。并且,BGP作为一种特殊的距离矢量(Distance- Vector)协议,也有着所有距离矢量协议的通病。因此,我们需要对BGP进行一些额外的调试,以解决这些问题。具体的内容都将放到后续的笔记中进行整理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js函数之call和apply

一、含义 function test() {console.log(----) }//执行 test(); test.call() 结果一致,调用test()默认会调用call,二者效果一致,call省略掉了。 二、改变this指向 call还有一个很重要的功能是改变this的指向。 function Car(brand, color)…

[Java]泛型

文章目录🥽 泛型简介🌊 泛型的概念🌊 使用泛型的原因🌊 小结🌊 类型推断🥽 自定义泛型🌊 自定义泛型类🌊 自定义泛型类/泛型接口注意点🌊 自定义泛型方法🥽 泛…

2022HW11

文章目录任务描述-域自适应二、代码三、实验1、Simple Baseline2、Medium Baseline3、Strong Baseline任务描述-域自适应 ●想象一下,你想做与3D环境相关的任务,然后发现 ○3D图像很难标记,因此也很昂贵。 ○模拟图像(如GTA-5上的…

shell-流程控制之循环

1.for创建20用户用户前缀由用户输入用户初始密码由用户输入 例如&#xff1a;test01,test10 [rootcotenos day06]# vim useradd.sh #!/bin/bash read -p "请输入用户前缀&#xff1a;" user read -p "请输入初始密码&#xff1a;" pass for ((i1;i<…

重新成长再出发

文章大纲突然的转型&#xff0c;逼自己一把也能重新成长为什么脱口秀突然火了起来&#xff1f;上天是给了你一个重新成长的机会&#xff01;2022 一些成长的点滴突然的转型&#xff0c;逼自己一把也能重新成长 年初的时候&#xff0c;航旅纵横给我弹窗问我很久没有坐飞机了怎么…

微三云陈志坤:盘点帮助企业转型到线上的模式

今/天小编给大家介绍一下泰山众筹模式系统&#xff0c;想搭建系统平台的联系微三云陈志坤。 泰山众筹模式已经走了4个多年头&#xff0c;目前仍在运行。 第一部分&#xff1a;泰山众筹模式介绍 一、无泡沫——安全长久 所有的互联网金融项目的死穴就是泡沫无法消除&#xf…

对于此版本,windows installer和即点即用的Office不能并行运行,因此只能安装一种类型(安装Visio破解版时的报错)

阅读前请看一下&#xff1a;我是一个热衷于记录的人&#xff0c;每次写博客会反复研读&#xff0c;尽量不断提升博客质量。文章设置为仅粉丝可见&#xff0c;是因为写博客确实花了不少精力。不用担心你关注我而我却不关注你&#xff0c;因为我是个诚信互关的人&#xff01;&…

gem5 arm架构 fullsystem spec2017 benchmark 仿真

gem5 system emulation 模式&#xff0c;内部实现了对system call的模拟&#xff0c;使用了一段时间后&#xff0c;有一些发现: 如果使用spec2017 X86编译&#xff0c;那么会存在对intel比较新的指令不支持的问题&#xff1b;后来使用gcc march K6 m32来解决&#xff0c;即使用…

FPGA知识汇集-FPGA配置模式和配置设计

所有现代FPGA的配置分为两类:基于SRAM的和基于非易失性的。其中&#xff0c;前者使用外部存储器来配置FPGA内的SRAM;后者只配置一次。 Lattice和Actel的FPGA使用称为反熔丝的非易失性配置技术&#xff0c;其主要优点是系统设计更加简单、不需要外部存储器和配置控制器、功耗低…

Kotlin之泛型的高级特性

Kotlin泛型中的基本用法和Java中的泛型用法是大致相同的&#xff0c;因此也比较好理解。然而实际上&#xff0c;Kotlin在泛型方面还提供了不少特有的功能&#xff0c;接下来将进行介绍。 一、对泛型进行实化 泛型实化这个功能对于绝大多数Java程序员来讲是非常陌生的&#xf…

对云台、IMU、鲁棒性和硬件时间同步的理解

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> slam是一门集硬件和软件的多科学技术&#xff0c;涉及到很多技术术语、概念以及数学公式等等。下面我将结合网上资料以及个人理解进行介绍。 什么叫云台…

navicat导入sql数据库文件的简单操作步骤

目录 前言必读 一、概念 二、操作步骤 &#xff08;一&#xff09;新建连接 &#xff08;二&#xff09;新建数据库 &#xff08;三&#xff09;数据库导入sql文件 前言必读 读者手册&#xff08;必读&#xff09;_云边的快乐猫的博客-CSDN博客 一、概念 在很多项目当…

LeetCode 309. 最佳买卖股票时机含冷冻期

309. 最佳买卖股票时机含冷冻期 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;: 卖出股票后&#x…

第二个岳云鹏,跨年晚会含泪主持,成为一道最靓丽的风景

中国人自古讲究&#xff1a;百善孝入先&#xff0c;尤其是对于娱乐圈的明星来说&#xff0c;孝心和爱心更是他们成功的根本。 在这方面&#xff0c;德云社的小岳岳走在了前列&#xff0c;他用自己的孝心和爱心感动了粉丝&#xff0c;也收获了无数的鲜花和掌声。小岳岳的爱心体现…

2022年终总结 2023展望

一、回首2022 总结2022&#xff0c;同时也给新的一年设定目标&#xff0c;明年来还愿。 2022对我来说意义非凡&#xff0c;最重要莫过于考上了理想的研究生学校。 1~2月 考研初试刚结束&#xff0c;很长时间没敲过代码&#xff0c;而且本科期间刷的算法题不多&#xff0c;感觉…

02 USART

串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#xff0c;极大地扩展了单片机的应用范围&#xff0c;增强了单片…

RabbitMQ——高级特性

1、RabbitMQ高级特性 1.1、消息的可靠性投递 在使用 RabbitMQ 的时候&#xff0c;作为消息发送方希望杜绝任何消息丢失或者投递失败场景。 RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。 ⚫ confirm 确认模式 ⚫ return 退回模式 rabbitmq 整个消息投递的路径…

【回答问题】ChatGPT上线了!推荐30个以上比较好的命名实体识别模型

【回答问题】ChatGPT上线了&#xff01;推荐30个以上比较好的命名实体识别模型以及github源码&#xff1f; 推荐30个以上比较好的命名实体识别模型 命名实体识别模型是指识别文本中提到的特定的人名、地名、机构名等命名实体的模型。推荐的命名实体识别模型有&#xff1a; …

数据仓库搭建——本地数仓搭建详细流程

1 准备 1.1 本地虚拟机器准备 使用本地搭建三台机器&#xff0c;搭建数仓&#xff0c;模拟实际平台数据仓库的搭建。具体的搭建框架如下 安装软件角色主机1主机2主机3HadoopNameNode√SecondaryNameNode√DataNode√√√NodeManager√√√ResourceManager√√Zookeeperzk se…

educoder数据结构与算法 栈 第1关:实现一个顺序存储的栈

本文已收录于专栏 &#x1f332;《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》&#x1f332; 目录 任务描述 相关知识 编程要求 测试说明 AC_Code 任务描述 本关任务是实现 step1/SeqStack.cpp 中的SS_IsFull、SS_IsEmpty、SS_Length、SS_Push和SS_Pop五个操作…