写点什么

网络协议之数据中心:我是开发商,自己拿地盖别墅

  • 2019-05-15
  • 本文字数:4044 字

    阅读完需:约 13 分钟

网络协议之数据中心:我是开发商,自己拿地盖别墅

无论你是看新闻、下订单、看视频、下载文件,最终的访问的目的地都在数据中心里面。我们前面学了这么多的网络协议和网络相关的知识,你是不是很好奇,数据中心究竟长啥样呢?


数据中心是一个大杂烩,几乎要用到前面学过的所有知识。


前面讲办公室网络的时候,我们知道办公室里面有很多台电脑,如果要访问外网,需要经过一个叫网关的东西,而网关往往是一个路由器。


数据中心里面也有一大堆的电脑,但是它和咱们办公室里面的笔记本或者台式机不一样。数据中心里面是服务器。服务器被放在一个个叫作机架 Rack 的架子上面。


数据中心的入口和出口也是路由器,由于在数据中心的边界,就像在一个国家的边境,称为边界路由器Border Router)。为了高可用,边界路由器会有多个。


一般家里只会连接一个运营商的网络,而为了高可用, 为了当一个运营商出问题的时候,还可以通过另外一个运营商来提供服务,所以数据中心的边界路由器会连接多个运营商网络。


既然是路由器,就需要跑路由协议,数据中心往往就是路由协议中的自治区域 AS。数据中心里面的机器要想访问外面的网站,数据中心里面也是有对外提供服务的机器,都可以通过 BGP 协议,获取内外互通的路由信息。这就是我们常听到的多线 BGP 的概念。


如果数据中心非常简单,没几台机器,那就像家里或者宿舍一样,所有的服务器都直接连到路由器上就可以了。但是数据中心里面往往有非常多的机器,当塞满一机架 Rack 的时候,需要有交换机将这些服务器连接起来,可以互相通信。


这些交换机往往是放在机架顶端的,所以经常称为 TORTop Of Rack交换机。这一层的交换机常常称为接入层Access Layer)。注意这个接入层和原来讲过的应用的接入层不是一个概念。



当一个机架放不下的时候,就需要多个机架,还需要有交换机将多个机架连接在一起。这些交换机对性能的要求更高,带宽也更大。这些交换机称为汇聚层交换机Aggregation Layer)。


数据中心里面的每一个连接都是需要考虑高可用的。这里首先要考虑的是,如果一台机器只有一个网卡,上面连着一个网线,接入到 TOR 交换机上。如果网卡坏了,或者不小心网线掉了,机器就上不去了。所以,需要至少两个网卡、两个网线插到 TOR 交换机上,但是两个网卡要工作得像一张网卡一样,这就是常说的网卡绑定bond)。


了解更多内容点击这里


这就需要服务器和交换机支持协议LACP,Link Aggregation Control Protocol)。它们互相通信,将多个网卡聚合称为一个网卡,多个网线聚合成一个网线,在网线之间可以进行负载均衡,也可以为了高可用作准备。



网卡有了高可用保证,但交换机还有问题。如果一个机架只有一个交换机,它挂了,那整个机架都不能上网了。因而 TOR 交换机也需要高可用,同理接入层和汇聚层的连接也需要高可用性,也不能单线连着。


最传统的方法是,部署两个接入交换机。两个汇聚交换机、服务器和两个接入交换机都连接,接入交换机和两个汇聚都连接,当然这样会形成环,所以需要启用 STP 协议,去除环,但是这样两个汇聚就只能一主一备了。STP 协议里我们学过,只有一条路会起作用。



交换机有一种技术叫作堆叠,所以另一种方法是,将多个交换机形成一个逻辑的交换机,服务器通过多根线分配连到多个的接入层交换机上,而接入层交换机多根线分别连接到多个汇聚交换机上,并且通过堆叠的私有协议,形成双活的连接方式。



由于对带宽要钱求更大,而且挂了影响也更大,所以两个堆叠可能就不够了,可以就会有更多的,比如四个堆叠为一个逻辑的交换机。


了解更多内容点击这里


汇聚层将大量的计算节点相互连接在一起,形成一个集群,在这个集群里面,服务器之间通过二层互通,这个区域常称为一个 PODPoint Of Delivery),有时候也称为一个可用区Available Zone)。


当节点数目再多的时候,一个可用区放不下,需要将多个可用区连在一起,连接多个可用区的交换机称为核心交换机



核心交换机吞吐量更大,高可用要求更高,肯定需要堆叠,但是往往仅仅堆叠,不足以满足吞吐量,因而还是需要部署多组核心交换机。核心和汇聚交换机之间为了高可用,也是全互连模式的。


这个时候还存在那个问题,出现环路怎么办? 点击这里了解更多内容


一种方式是,不同的可用区在不同的二层网络,需要分配不同的网段。汇聚和核心之间通过三层网络互通的,二层都不在一个广播域里面,不会存在二层环路的问题。三层有环是没有问题的,只要通过路由协议选择最佳的路径就可以了。那为啥二层不能有环路,而三层可以呢?你可以回忆一下二层环路的情况。



如图,核心层和汇聚层之间通过内部的路由协议 OSPF,找到最佳的路由进行访问,而且还可以通过 ECMP 等价路由,在多个路径之间进行负载均衡和高可用。


但是随着数据中心里面的机器越来越多,尤其是有了云计算、大数据,集群规模非常大,而且都要求在一个二层网络里面。这就需要二层互连从汇聚层上升为核心层,也即在核心以下,全部是二层互连,全部在一个广播域里面,这就是常说的大二层



如果大二层横向流量不大,核心交换机数目不多,可以做堆叠,但是如果横向流量很大,仅仅堆叠满足不了,就需要部署多组核心交换机,而且要和汇聚层进行全互连。由于堆叠只解决一个核心交换机组内的无环问题,而组之间全互连,还需要其他机制进行解决。


如果是 STP,那部署多组核心无法扩大横向流量的能力,因为还是只有一组起作用。


于是大二层就引入了 TRILLTransparent Interconnection of Lots of Link),即多链接透明互联协议。它的基本思想是,二层环有问题,三层环没有问题,那就把三层的路由能力模拟在二层实现。


运行 TRILL 协议的交换机称为 RBridge,是具有路由转发特性的网桥设备,只不过这个路由是根据 MAC 地址来的,不是根据 IP 来的。


点击这里了解更多内容


Rbridage 之间通过链路状态协议运作。记得这个路由协议吗?通过它可以学习整个大二层的拓扑,知道访问哪个 MAC 应该从哪个网桥走;还可以计算最短的路径,也可以通过等价的路由进行负载均衡和高可用性。



TRILL 协议在原来的 MAC 头外面加上自己的头,以及外层的 MAC 头。TRILL 的头里面 Ingress RBridge,有点像 IP 头里面的源 IP 地址,Egress RBridge 是目标 IP 地址,这两个地址是端到端的,在中间路由的时候,不会发生改变。而外层的 MAC,可以有下一跳的 Bridge,就像路由的下一跳,也是通过 MAC 地址来呈现的一样。


如图中所示的过程,有一个包要从主机 A 发送到主机 B,中间要经过 RBridge 1、RBridge 2、RBridge X 等等,直到 RBridge 3。在 RBridge 2 收到的包里面,分内外两层,内层就是传统的主机 A 和主机 B 的 MAC 地址以及内层的 VLAN。


在外层首先加上一个 TRILL 头,里面描述这个包从 RBridge 1 进来的,要从 RBridge 3 出去,并且像三层的 IP 地址一样有跳数。然后再外面,目的 MAC 是 RBridge 2,源 MAC 是 RBridge 1,以及外层的 VLAN。


当 RBridge 2 收到这个包之后,首先看 MAC 是否是自己的 MAC,如果是,要看自己是不是 Egress RBridge,也即是不是最后一跳;如果不是,查看跳数是不是大于 0,然后通过类似路由查找的方式找到下一跳 RBridge X,然后将包发出去。


RBridge 2 发出去的包,内层的信息是不变的,外层的 TRILL 头里面。同样,描述这个包从 RBridge 1 进来的,要从 RBridge 3 出去,但是跳数要减 1。外层的目标 MAC 变成 RBridge X,源 MAC 变成 RBridge 2。


如此一直转发,直到 RBridge 3,将外层解出来,发送内层的包给主机 B。


这个过程是不是和 IP 路由很像?点击这里了解更多内容


对于大二层的广播包,也需要通过分发树的技术来实现。我们知道 STP 是讲一个有环的图通过去掉边形成一棵树,而分发树是一个有环的图形成多棵树,不同的树有不同的 VLAN,有点广播包从 VLAN A 广播,有的从 VLAN B 广播,实现负载均衡和高可用。



核心交换机之外,就是边界路由器了。至此从服务器到数据中心边界的层次情况已经清楚了。


在核心交换上面,往往会挂一些安全设备,例如入侵检测、DDoS 防护等等。这是整个数据中心的屏障,防止来自外来的攻击。核心交换机上往往还有负载均衡器,原理前面的章节已经说过了。


在有的数据中心里面,对于存储设备,还会有一个存储网络,用来连接 SAN 和 NAS。但是对于新的云计算来讲,往往不使用传统的 SAN 和 NAS,而使用部署在 x86 机器上的软件定义存储,这样存储也是服务器了,而且可以和计算节点融合在一个机架上,从而更加有效率,也就没有了单独的存储网络了。


点击这里了解更多内容


于是整个数据中心的网络如下图所示。



这是一个典型的三层网络结构。这里的三层不是指 IP 层,而是指接入层、汇聚层、核心层三层。这种模式非常有利于外部流量请求到内部应用,这个类型的流量,是从外到内或者从内到外,对应到上面那张图里,就是从上到下,从下到上,上北下南,所以称为南北流量


但是随着云计算和大数据的发展,节点之间的交互越来越多,例如大数据计算经常要在不同的节点将数据拷贝来拷贝去,这样需要经过交换机,使得数据从左到右,从右到左,左西右东,所以称为东西流量


为了解决东西流量的问题,演进出了叶脊网络Spine/Leaf)。


  • 叶子交换机leaf),直接连接物理服务器。L2/L3 网络的分界点现在在叶子交换机上,叶子交换机之上是三层网络。

  • 脊交换机spine switch),相当于核心交换机。叶脊之间通过 ECMP 动态选择多条路径。脊交换机现在只是为叶交换机提供一个弹性的 L3 路由网络,南北流量可以不用直接从脊交换机发出,而是通过与 leaf 交换机并行的交换机,再接到边界路由器出去。



传统的三层网络架构是垂直的结构,而叶脊 spine/leaf 网络架构是扁平的结构,更易于水平扩展。

小结

好了,复杂的数据中心就讲到这里了。我们来总结一下,你需要记住这三个重点。


  • 数据中心分为三层。服务器连接到接入层,然后是汇聚层,再然后是核心层,最外面是边界路由器和安全设备。

  • 数据中心的所有链路都需要高可用性。服务器需要绑定网卡,交换机需要堆叠,三层设备可以通过等价路由,二层设备可以通过 TRILL 协议。

  • 随着云和大数据的发展,东西流量相对于南北流量越来越重要,因而演化为叶脊网络结构。


2019-05-15 21:239734
用户头像

发布了 23 篇内容, 共 39.8 次阅读, 收获喜欢 160 次。

关注

评论

发布
暂无评论
发现更多内容

SSH的工作原理、加密方式以及配置多个ssh key

甜点cc

前端 学习笔记 加密 SSH 10月月更

Go语言入门10—Map

良猿

Go golang 后端 Go web

uniapp 提示 打包时未添加 push模块

源字节1号

软件开发 前端开发 后端开发 小程序开发

2022年最新数据库经典面试题及答案汇总(含PostgreSQL、Oracle、MySQL)

墨天轮

MySQL 数据库 oracle postgresql 面试题

千锋教育走访人才合作企业数式科技 深度了解企业人才需求

千锋IT教育

实时数据湖 Flink Hudi 实践探索

阿里云大数据AI技术

大数据 flink 企业号十月 PK 榜

开源代码安全 | 微软是如何应对开源代码安全问题的?

龙智—DevSecOps解决方案

开源 开源代码

WhaleDI自助建模实践与探索

鲸品堂

AI Codec 建模

如何让 SAP Spartacus 访问 navigation node 的上下文,暴露更多的字段

阿英

typescript angular SAP Spartacus 10月月更

浅谈Python中的生成器

何极光

Python 生成器 10月月更

TOGAF认证考试开启“主线+支线+副本”模式!

涛哥 数字产品和业务架构

重磅,无需特殊工具,直接访问网站!

八点半的Bruce.D

敢承诺安全效果?IT人竟能如此省心

科技热闻

2022年汽车品牌智能网联竞争力指数(ICVCI)

易观分析

汽车 ICVCI 智能网联

DevOps下测试的生存之道

嘉为蓝鲸

DevOps 测试

云原生时代的应用端到端可观测体系如何构建?

嘉为蓝鲸

运维 监控 可观测性 告警

使用Docker部署软件运行环境

源字节1号

软件开发 前端开发 后端开发 小程序开发

阿里云注册集群+Prometheus 解决多云容器集群运维痛点

阿里巴巴云原生

阿里云 云原生 Grafana Prometheus

精盾信息莅临千锋教育武汉校区招聘前端开发工程师

千锋IT教育

千锋武汉分校前端学员走访英志软件,并开展现场面试

千锋IT教育

浅谈 Python 中的迭代器

何极光

Python 迭代器 10月月更

Zepoch已售出500+,Zebec Chain受到市场追捧

西柚子

滴滴Java后台3面题目:网络+内存溢出+各种锁+高性能+消息队列

小小怪下士

Java spring 面试 JVM

澜舟科技推出【熊猫小说家】小程序,用 AI 书写你的故事

澜舟孟子开源社区

人工智能 nlp AIGC

Sanitizers 系列之 address sanitizer 原理篇

网易云信

数据库 算法 系统

【FAQ】关于华为地图服务定位存在偏差的原因及解决办法

HarmonyOS SDK

地图

Spring Boot「18」使用 JDBC 连接数据库

Samson

Java spring 学习笔记 spring-boot 10月月更

面向复杂业务场景下的低代码平台组件设计与实践分享

Baidu AICLOUD

组件化 低代码开发平台 数据映射

嘉为蓝鲸可观测性产品获Gartner Toolkit 推荐

嘉为蓝鲸

运维 监控 Gartner 可观测

一文浅析人工智能领域相关概念之间的关系

九章云极DataCanvas

人工智能 神经网络 机器学习

学C++的以后都能从事哪些岗位?

C++后台开发

c++ 后端开发 客户端开发 linux开发 C++开发

网络协议之数据中心:我是开发商,自己拿地盖别墅_技术管理_刘超_InfoQ精选文章