三层网络架构
数据中心网络是连接数据中心大规模服务器进行大型分布式计算的桥梁。
传统数据中心网络普遍采用树型拓扑方案. 典型的拓扑由三层交换机互联构成,分别是接入层交换机、汇聚层交换机和核心层交换机。Cisco称之为:分级的互连网络模型(hierarchical inter-networking model)。这个模型包含了以下三层:
Access Layer(接入层):(将工作站接入网络)
有时也称为Edge Layer。接入交换机通常位于机架顶部,所以它们也被称为ToR(Top of Rack)交换机,它们物理连接服务器。
接入层是直接面向用户连接的部分,向本地网段提供工作站接入,主要解决了相邻用户之间的互访需求。所以接入层可以选择不支持 VLAN 和三层交换技术的普通交换机,接入层交换机具有低成本、高端口密度且即插即用的特性。接入层还应当适当负责一些用户管理功能(如:地址认证、用户认证、计费管理等),以及用户信息收集工作(如:用户的 IP 地址、MAC 地址、访问日志等)。
Aggregation Layer(汇聚层):(提供基于策略的连接)
有时候也称为Distribution Layer。汇聚交换机连接Access交换机,同时提供其他的服务,例如防火墙,SSL offload,入侵检测,网络分析等。
汇聚层是网络接入层和核心层的 “中介(中间层)”,就是在 Server 接入核心层前先做汇聚,以减轻核心层设备的负荷。汇聚层具有实施策略、安全、工作组接入、虚拟局域网(VLAN)之间的路由、源地址或目的地址过滤等多种功能。在汇聚层中,应该选用支持三层交换技术和 VLAN 的交换机,以达到网络隔离和分段的目的。
Core Layer(核心层):(网络的高速交换主干)
核心交换机为进出数据中心的包提供高速的转发,为多个汇聚层提供连接性,核心交换机为通常为整个网络提供一个弹性的L3路由网络。
核心层是网络的高速交换主干,对整个网络的连通起到至关重要的作用。核心层应该具有如下几个特性:可靠性、高效性、冗余性、容错性、可管理性、适应性、低延时性等。在核心层中,应该采用高带宽的千兆以上交换机,因为核心层是网络的枢纽中心,重要性突出。核心层设备采用双机冗余热备份是非常必要的,也可以使用负载均衡功能,来改善网络性能。网络的控制策略最好尽量少在核心层上实施。核心层一直被认为是所有外部网络流量的最终承受者,所以对核心层的设计以及网络设备的要求十分严格。核心层设备将占投资的主要部分。
为了方便管理、提高网络性能,大中型网络应按照标准的三层结构设计。但是,对于网络规模小,联网距离较短的环境,可以采用 “收缩核心” 设计,忽略汇聚层。核心层设备可以直接连接接入层,这样一定程度上可以省去部分汇聚层费用,还可以减轻维护负担,更容易监控网络状况。
一个三层网络架构示意图如下所示:
三层网络架构的设计原则
- 层次化设计:每个层可以看作为是一个具有特定角色和功能的、结构定义良好的模块,层次化的设计结构,易于扩展和维护,降低了设计的复杂度和难度。三层网络架构可以更好地控制网络规模和网络质量,同时也方便网络管理和维护。
- 模块化设计:每个模块对应一个部门、功能或业务区域,可根据网络规模灵活扩展,部门或区域内部调整涉及范围小,容易进行问题定位。
- 冗余设计:双节点冗余性设计可以保证设备级可靠,适当的冗余提高可靠性,但过度的冗余也不便于运行维护。如果无法做好双节点冗余设计,对框式的核心交换机或者出口路由器,可以考虑单板级的冗余,如双主控板,双交换网板。另外,关键链路可以采用 Eth-Trunk 链路实现链路级可靠性。
- 对称性设计:网络的对称性便于业务部署,拓扑直观,便于协议设计和分析。
三层网络架构的特点
通常情况下,汇聚交换机是 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的网络架构。
随着云计算的发展,计算资源被池化,为了使得计算资源可以任意分配,需要一个大二层的网络架构。即整个数据中心网络都是一个L2广播域,这样,服务器可以在任意地点创建,迁移,而不需要对IP地址或者默认网关做修改。大二层网络架构,L2/L3分界在核心交换机,核心交换机以下,也就是整个数据中心,是L2网络(当然,可以包含多个VLAN,VLAN之间通过核心交换机做路由进行连通)。大二层的网络架构如下图所示:
大二层网络架构虽然使得虚机网络能够灵活创建,但是带来的问题也是明显的。共享的L2广播域带来的BUM(Broadcast·,Unknown Unicast,Multicast)风暴随着网络规模的增加而明显增加,最终将影响正常的网络流量。
传统三层网络架构已经存在几十年,并且现在有些数据中心中仍然使用这种架构。这种架构提出的最初原因是什么?一方面是因为早期L3路由设备比L2桥接设备贵得多。即使是现在,核心交换机也比汇聚接入层设备贵不少。采用这种架构,使用一组核心交换机可以连接多个汇聚层POD,例如上面的图中,一对核心交换机连接了多个汇聚层POD。另一方面,早期的数据中心,大部分流量是南北向流量。例如,一个服务器上部署了WEB应用,供数据中心之外的客户端使用。使用这种架构可以在核心交换机统一控制数据的流入流出,添加负载均衡器,为数据流量做负载均衡等。
三层网络架构面临的问题
STP 协议既是良方又是毒药
生成树协议(Spanning Tree Protocol,STP),是一种工作在 OSI 网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路,用于确保以太网中无环路的逻辑拓扑结构,从而避免了广播风暴大量占用交换机的资源。
传统的数据中心网络技术,STP 是二层网络中非常重要的一种协议。但是,在二层网络中使用 STP 协议有一个相当矛盾的点,那就是 可靠性 和 安全性 的矛盾。
- 可靠性是指构建二层网络时,一般会采用会采用设备冗余和链路冗余的方式。
- 安全性是指二层交换机同处于一个广播域,广播报文在环路中会反复持续传送,可能会形成广播风暴,所以必须防止形成环路。要想两种同时达到,可以采用 STP(生成树协议)自动控制,即冗余设备和冗余链路成备份,在正常情况下被阻塞掉,当出现链路故障时冗余的设备端口和链路才会被打开。
为什么二层交换网络会产生物理环路?
- 链路冗余:交换机之间为了冗余、带宽提升、或错误连接难免会产生一个封闭的物理环路,而以太网的转发机制又决定了不能有物理环路,一有环路,那些发给所有主机的 Broadcast 、Unknown Unicast Frame 就会肆无忌惮在环路上永不停歇地绕圈圈。这些 Frame 永远无法到达目的地,对交换机 CPU 是一个致命的打击,如果有环路的发生,你可能无法本地、或远程登录你的交换机,只有重启或拔线了。
- 二层交换机的转发机制:交换机对于从一个 Port N 上 incoming 的 frame,学习其 Source MAC X,生成 MAC Address Table(MAC X: Port N)。这样它就会生成 MAC 地址和 Port 的映射表,如果收到一个 Frame,就会通过 Frame 的 Destination MAC 与 MAC Address Table 进行匹配,继而得出这个 Frame 应该从哪一个 Port 发送出去。如果没有匹配到,就认为是 unknown Unicast 或 broadcast,只好将它从所有 Port( 除了 incoming 口)发送出去,让 Frame 到了其他的交换机上尝试处理,于是这个 Frame 就有可能会一直在封闭的环路里无限的循环。
STP 协议的设计思路
人类的很多智慧来自于大自然,同学们仔细观察一棵树,会发现一棵树,有根,树干,树杈,树枝,叶子,水分通过根,源源不断地输送到主干,树杈,然后到达叶子。水分在从根扩散到叶子的过程中,一直是单向的;而叶子因为光合作用产生的能量,再沿着叶子到达树枝,树杈,树干,一直到根。水分和能量是相反方向的流量,如果定义根为上游,叶子为下游,则水是从上游流向下游;而能量则是由下游流向上游。无论是哪个方向的流量,都没有在原地打转的情况发生,那是因为树的物理结构是发散的,没有树干、树杈、树枝的物理交织,自然不会发生环路。
网络科学家发现了这个规律,有一个大胆设想,既然二层网络里有物理环路,那用一种逻辑的方法将物理的环路斩断,斩成一个发散的树状架构,是不是Frame就不会无限循环下去了?
答案是肯定的,也是这么做的。如果把树的拓扑结构用于二层交换网络,在二层网络里选择一个根(Root Bridge),其它交换机当作树的树杈,每个树杈自然有一个根末梢(Root Port),这个就是交换机的上游接口,除了根末梢,其它的接口都是下游接口,至于下游接口是畅通的、还是阻断的,取决于到根的路径成本(Cost),谁更接近根,谁就畅通(Forwarding) ,即常说的 Designated Port;谁远离根,谁就需要被阻断(Blocked),即常说的 Non Designated Port。通过这种仿生的机制,可以有效地避免网络环路。
STP 协议的工作原理
任意一个交换机中如果到达根网桥有两条或者两条以上的链路,生成树协议都根据算法把其中一条切断,仅保留一条,从而保证任意两个交换机之间只有一条单一的活动链路。因为这种生成的这种拓扑结构,很像是以根交换机为树干的树形结构,故为生成树协议。
STP 的工作过程
首先进行根网桥的选举,其依据是网桥优先级(Bridge Priority)和 MAC 地址组合生成的桥 ID,桥 ID 最小的网桥将成为网络中的根桥(Root Bridge)。在此基础上,计算每个节点到根桥的距离,并由这些路径得到各冗余链路的代价,选择最小的成为通信路径(相应的端口状态变为 Forwarding),其它的就成为备份路径(相应的端口状态变为 Blocking)。STP 生成过程中的通信任务由 BPDU 完成,这种数据包又分为包含配置信息的配置 BPDU(其大小不超过 35B)和包含拓扑变化信息的通知 BPDU(其长度不超过 4B)。
由于 STP 协议造成的逐层收敛的性能问题,一般情况下 STP 的网络规模不会超过 100 台交换机。STP 的这种机制导致了二层链路利用率不足,尤其是在网络设备具有全连接拓扑关系时,这种缺陷尤为突出。如下图所示,当采用全网 STP 二层设计时,STP 将阻塞大多数链路,使接入到汇聚间带宽降至 1/4,汇聚至核心间带宽降至 1/8。这种缺陷造成越接近树根的交换机,端口拥塞越严重,造成的带宽资源浪费就越可观。
云计算推动纵向流量向横向流量的转变
早期数据中心的流量有 80% 为横向(east-west,南北)流量,随着云计算、分布式架构的发展,现在已经转变为 70% 为纵向(north-south,东西)流量。所谓纵向流量指的是从数据中心外部到内部服务器之间交互的流量;横向流量指的是数据中心内部服务器之间交互的流量。
随着云计算的到来,越来越丰富的业务对数据中心的流量模型产生了巨大的冲击,如搜索、并行计算等业务,需要大量的服务器组成集群系统,协同完成工作,这导致服务器之间的流量变得非常大。比如搜索,用户只是发出一个搜索指令,服务器集群就在海量数据面前进行搜索与计算,这个过程是非常复杂的,而只是将结果传递给用户。早期数据中心主要满足外部对数据中心的访问,所以流量就以 “南北” 为主。这种流量模型受到了出口带宽的限制,一般的数据中心访问都会存在收敛比,即网络接入带宽比较大,而出口带宽比较小,访问的速度无法提升,在业务高峰期时,用户访问数据中心的体验感下降,这种网络模型已经不适应现今数据中心的发展需要。
服务器虚拟化带来的虚拟机迁移问题
但随着数据量的增长,数据中心运营者发现的服务器不够了,当时最早做出反应是服务器层面,服务器虚拟化趋势越来越强,“提高服务器利用率”,“充分发挥计算资源效能”,成了当时最常听到的声音。随之而来的就是服务器与网络之间的关系改变了,原来网络和操作系统紧耦合的关系被打破,变成了松耦合的关系,网络不再能直接感知到操作系统了。而这种对应关系上的变化又带来了两个层面的矛盾:
- 性能层面:单台物理机上的应用多了,或者说是虚拟机多了,单个网口上承载的数据流量大了,原来的链路不够了;
- 功能层面:物理服务器不是真正的业务所在了,真正的业务在虚拟机上,但是虚拟机要在服务器上漂移,不能够被固定在原先一个区域当中了;
在三层网络架构中,通常会将二层网络的范围限制在网络接入层以下,避免出现大范围的二层广播域。这就导致了服务器不能随便在不同二层域之间移动,一旦服务器迁移到其他二层域,就需要变更 IP 地址,伴随着生产业务中断。在具有网络关联性的服务器集群中甚至会牵一发而动全身,相关的服务器也要跟着变更相应的配置,影响巨大。
由于这般限制,传统数据中心的三层网络架构设计根本无法满足服务器虚拟化中更灵活的、可自定义的虚拟机迁移策略。服务器虚拟化从根本上改变了数据中心网络架构的需求,需求数据中心、甚至是跨数据中的网络可以支持大范围的二层域,二层网络规模有多大,虚拟机才能调度、迁移有多远。
参考文献
https://www.cisco.com/c/zh_cn/solutions/small-business/products/routers-switches/routing-switching-primer.html
https://baike.baidu.com/item/三层网络结构
https://baike.baidu.com/item/交换技术/6335745
https://baike.baidu.com/item/路由技术
https://zh.wikipedia.org/wiki/生成树协议
https://juejin.im/post/5c723943f265da2d943f69c1
https://www.zhihu.com/question/21327750
https://www.cnblogs.com/jmilkfan-fanguiju/p/10589744.html#_691
转载请注明作者:JmilkFan 范桂飓
https://zhuanlan.zhihu.com/p/29881248
https://www.cnblogs.com/jmilkfan-fanguiju/p/11825044.html