本文授权转载自公众号蛋蛋团.
01 数据中心是什么
数据中心, 指用于安置计算机系统及相关部件的设施, 例如电信和储存系统.
为了满足自身的业务需求, 保证数据的稳定和可靠. 无论是互联网还是传统行业, 都会有自己或大或小的数据中心, 甚至如阿里云和亚马逊这种专门以出租计算资源的云计算公司, 更是在全世界各地建立了不等的数据中心.
尽管到到如今的云计算时代, 将数据中心自身的资源虚拟化以达到更高的利用率, 有一点肯定, 物理资源决定了虚拟资源的天花板.
物理网络的特性, 例如带宽, MTU, 延时等, 最终直接或者间接决定了虚拟虚拟网络的特性. 对网络性能进行优化时, 有些物理网络特性可以通过升级设备或线路来提升, 但是有些与网络架构有关. 升级或者改动网络架构带来的风险和成本是巨大的, 因此在架设数据中心初始, 网络架构的选择和设计尤其需要谨慎.
那么, 从过去的传统数据中心, 到如今的云计算时代数据中心, 中间经历了怎样的变迁呢?
02 传统数据中心网络架构
在传统的大型数据中心, 网络通常是三层结构. Cisco 称之为: 分级的互连网络模型(hierarchical inter-networking model).
三层网络结构是采用层次化架构的三层网络, 有三个层次: 核心层(网络的高速交换主干), 汇聚层(提供基于策略的连接), 接入层(将工作站接入网络), 这个模型如下:
接入层 (Access Layer) : 接入交换机通常位于机架顶部, 所以它们也被称为 ToR(Top of Rack) 交换机, 它们物理连接服务器.
汇聚层(Aggregation Layer) : 汇聚交换机连接 Access 交换机, 同时提供其他的服务, 例如防火墙, SSL offload, 入侵检测, 网络分析等.
核心层(Core Layer) : 核心交换机为进出数据中心的包提供高速的转发, 为多个汇聚层提供连接性, 核心交换机为通常为整个网络提供一个弹性的 L3 路由网络. 一个三层网络架构示意图如下所示:
通常情况下, 汇聚交换机是 L2 和 L3 网络的分界点, 汇聚交换机以下的是 L2 网络, 以上是 L3 网络. 每组汇聚交换机管理一个 POD(Point Of Delivery), 每个 POD 内都是独立的 VLAN 网络.
服务器在 POD 内迁移不必修改 IP 地址和默认网关, 因为一个 POD 对应一个 L2 广播域.
汇聚交换机和接入交换机之间通常使用 STP(Spanning Tree Protocol, 生成树协议).STP 使得对于一个 VLAN 网络只有一个汇聚层交换机可用, 其他的汇聚层交换机在出现故障时才被使用(上图中的虚线).
也就是说汇聚层是一个 active-passive 的 HA 模式. 这样在汇聚层, 做不到水平扩展, 因为就算加入多个汇聚层交换机, 仍然只有一个在工作.
一些私有的协议, 例如 Cisco 的 vPC(Virtual Port Channel)可以提升汇聚层交换机的利用率, 但是一方面, 这是私有协议, 另一方面, vPC 也不能真正做到完全的水平扩展.
下图是一个汇聚层作为 L2/L3 分界线, 且采用 vPC 的网络架构.
传统的数据中心网络技术, STP 是二层网络中非常重要的一种协议. 在二层有一个相当矛盾的点, 那就是可靠性和安全性的矛盾.
可靠性是指构建二层网络时, 一般会采用会采用设备冗余和链路冗余的方式.
安全性是指二层交换机同处于一个广播域, 广播报文在环路中会反复持续传送, 可能会形成广播风暴, 所以必须防止形成环路.
要想两种同时达到, 可以采用 STP(生成树协议)自动控制, 即冗余设备和冗余链路成备份, 在正常情况下被阻塞掉, 当出现链路故障时冗余的设备端口和链路才会被打开.
由于 STP 的收敛性能等原因, 一般情况下 STP 的网络规模不会超过 100 台交换机. STP 的这种机制导致了二层链路利用率不足, 尤其是在网络设备具有全连接拓扑关系时, 这种缺陷尤为突出.
如上图所示, 当采用全网 STP 二层设计时, STP 将阻塞大多数链路, 使接入到汇聚间带宽降至 1/4, 汇聚至核心间带宽降至 1/8. 这种缺陷造成越接近树根的交换机, 端口拥塞越严重, 造成的带宽资源浪费就越可观.
03 云计算的发展对数据中心的影响
随着互联网的发展带来的数据大爆发以及虚拟化技术的发展, 计算资源被池化, 对数据中心也提出了新的挑战: 动态迁移和高性能.
采用大二层网络架构, 可以实现整个数据网络都是 L2 广播域, 这样即可实现动态迁移. 大二层网络架构, L2/L3 分界在核心交换机, 核心交换机以下, 也就是整个数据中心, 是 L2 网络(当然, 可以包含多个 VLAN,VLAN 之间通过核心交换机做路由进行连通). 大二层的网络架构如下图所示:
相对于之前的基础架构而言, 具有如下特点:
1资源池化 -- 硬件服务器通过虚拟化技术进行部分硬件资源的整合, 构造计算资源池化
2统一管理 -- 在虚拟化平台上建立虚拟机, 在虚拟机里部署业务, 实现平台上虚拟机的统一维护和管理
3横向扩展 -- 计算资源不够, 可以直接补充硬件服务器达到资源扩展
然而, 传统大二层的缺点也和明显, 共享的 L2 广播域带来的 BUM(二层数据链路层的报文)风暴随着网络规模的增加而明显增加, 最终将影响正常的网络流量.
同时, 虚拟机可以迁移, 但是如何达到迁移过程中用户无感知, IP 地址等不改变呢? 即实现动态迁移.
云计算技术的发展的不仅仅依托于虚拟化, 还有一个非常重要虚拟化管理软件平台, 典型的如 openstack.
通过 x86 服务器和二层交换机的连接, 将网络功能, 计算功能, 存储功能和安全功能全部虚拟化, 以虚拟机的形式实现我们传统数据中心硬件堆积所完成的一切功能, 全部组件融合在一套虚拟化管理软件平台中, 对外提供虚拟存储, 网络, 计算等资源, 这就是所谓的 "超融合" 平台.
04 数据中心流量丰富化带来的挑战
互联网这几年发展的特别快, 然而, 互联网公司本质上来讲也是数据公司, 数据承载着公司绝大部分的价值, 于是数据安全性以及可靠性也变的越发重要. 在早期, 小规模数据中心主要是南北流量, 而互联网爆发式的数据增长带来的数据中心虚拟化也要求更高的东西流量, 甚至跨数据中心流量.
南北向流量: 数据中心之外的客户端到数据中心服务器之间的流量, 或者数据中心服务器访问互联网的流量.
东西向流量: 数据中心内的服务器之间的流量.
跨数据中心流量: 跨数据中心的流量, 例如数据中心之间的灾备, 私有云和公有云之间的通讯.
在思科的分析报告中, 预计 2020 年, 东西流量能达到总带宽的 77%, 跨数据中心 9%, 南北流量仅占总带宽的 14%.
而传统三层网络架构主要是为了南北流量设计, 尽管也支持东西流量, 但是不足十分明显.
东西流量分为 L2 和 L3, 如果是 L2 流量, 如果源和目的主机都在同一个接入层交换机下, 那么可以达到全速, 因为接入交换机就能完成转发. 如果需要跨机架, 但仍然是在一个汇聚层 POD 内, 则需要通过汇聚层交换机进行转发, 带宽取决于汇聚层交换机的转发速率. 如果是 L3 流量, 必须经过核心交换机完成转发, 它不仅浪费了宝贵的核心交换机资源, 多层转发也增加了延时.
而到大二层网络架构, 无论是 L2 还是 L3 流量, 都需要经过核心交换机, 这也对核心交换机的性能提出了新的挑战.
05 总结
传统三层网络架构已经存在几十年, 并且现在有些数据中心中仍然使用这种架构. 最主要的原因是成本.
一方面是因为早期 L3 路由设备比 L2 桥接设备贵得多. 即使是现在, 核心交换机也比汇聚接入层设备贵不少.
另一方面, 早期的数据中心, 大部分流量是南北向流量.
例如, 一个服务器上部署了 web 应用, 供数据中心之外的客户端使用. 使用这种架构可以在核心交换机统一控制数据的流入流出, 添加负载均衡器, 为数据流量做负载均衡等.
传统的三层网络架构必然不会在短期内消失, 但是由于技术和市场的发展, 其短板也越来越明显. 比如企业将面临成本和可扩展性的两难选择.
基于现有网络架构的改进显得非常有必要, 新的网络架构最好是: 由相对较小规模的交换机构成, 可以方便的水平扩展, 较好的支持 HA(active-active 模式), 支持全速的东西向流量, 不采购高性能的核心交换机也能去除超占比, 支持 SDN 等等.
「Linux 云计算网络」公众号后台回复 "加群", 带你进入高手如云交流群
我的公众号 「Linux 云计算网络」(id: cloud_dev) , 号内有 10T 书籍和视频资源, 后台回复 「1024」 即可领取, 分享的内容包括但不限于 Linux, 网络, 云计算虚拟化, 容器 Docker,OpenStack,Kubernetes, 工具, SDN,OVS,DPDK,Go,Python,C/C++ 编程技术等内容, 欢迎大家关注.
来源: https://www.cnblogs.com/bakari/p/10929916.html