数据中心网络架构的问题与演进 — 传统路由交换技术与三层网络架构
2019-07-29 12:25 云物互联 阅读(6161) 评论(1) 编辑 收藏 举报目录
文章目录
传统路由交换技术
路由和交换
网络的工作方式是使用两种设备:交换机和路由器,来将计算机与外围设备连接起来。这两种工具使连接到网络上的设备之间以及其它网络相互通信。
虽然路由器和交换机看起来很像,但是它们在网络中的功能却截然不同:
-
交换机(Switch):主要用于将一栋大厦或一个校园里的多台设备连接到同一个网络上。例如,一台交换机可以将您的多台计算机、打印机和服务器连接起来,从而形成一个共享资源网络。交换机相当于一个控制器,允许不同的设备共享信息并且彼此通信。通过共享信息和合理地分配资源,交换机可以帮助您节省资金,提高工作效率。交换机有两种基本类型:非管理型和管理型。
- 非管理型交换机:拆箱即可投入使用,并且不允许进行任何更改。因此,家庭网络设备通常使用非管理型交换机。
- 管理型交换机:则允许您对它进行编程。由此提供了更大的灵活性,因为您可以利用本地或远程方式对其进行监控和调整,进而控制网络的通信流量及网络用户访问权。管理性交换机的典型特征就是具有管理登录 IP。
-
路由器(Router):主要用于将多个网络连接起来。例如,您会用一台路由器将联网的计算机连接到互联网上,从而使多名用户共享一个互联网连接。路由器相当于一个调度员,它会选择最佳的路由路径来传送信息,以便您迅速收到信息。首先,路由器会分析网络发送的数据,改变数据的打包方式,然后将数据发送到另一个网络上或者其他类型的网络上。它们将贵公司与外界连接起来,保护信息不受安全威胁,甚至可以决定哪些计算机拥有更高的优先级。根据贵公司的具体需求和网络计划,可以选择具有不同功能的路由器:
- 防火墙(Firewalls):一种用于检查接收的数据并且防止公司网络受到攻击的专业软件。
- 虚拟专网(VPN):一种允许远程员工从远程地点安全访问网络的途径。
- IP 电话网络:利用语音和电话会议技术将贵公司的计算机和电话网络集成在一起,从而简化并统一公司的通信方式。
交换技术
交换技术是随着电话通信的发展和使用而出现的通信技术。电话刚开始使用时,只能实现固定的两个人之间的通话,随着用户的增加,人们开始研究如何构建连接多个用户的电话网络,以实现任意两个用户之间的通信。
传统的 2 层交换技术
从广义上讲,任何数据的转发都可以叫做交换(Switch)。但是,传统的、狭义的第 2 层交换技术,仅包括数据链路层的转发。2 层交换机主要用在小型局域网中,计算机数量在二、三十台以下,这样的网络环境下,广播包影响不大,2 层交换机的快速交换功能、多个接入端口和低廉价格,为小型网络用户提供了完善的解决方案。交换式局域网技术使专用的带宽为用户所独享,极大地提高了局域网传输的效率。
具有路由功能的 3 层交换技术
在大规模局域网中,为了减小广播风暴的危害,就必须把大型局域网按功能或地域等因素划分成多个小局域网。与此同时,就出现了不同子网间的互访需求,但这是 2 层交换技术无法实现的。为了从技术上解决这个问题,网络厂商利用第 3 层交换技术开发了 3 层交换机,又称路由交换机,它是传统交换机与路由器的智能结合。简单地说,可以处理网络第 3 层数据转发的交换技术就是第 3 层交换技术。
从硬件上看,在第 3 层交换机中,与路由器有关的第 3 层路由硬件模块,也插接在高速背板/总线上。这种方式使得路由模块可以与需要路由的其它模块间,高速交换数据。3 层交换机是为 IP 设计的,接口类型简单,拥有很强的 3 层包处理能力,价格又比相同速率的路由器低得多,非常适用于大规模局域网络。
具有网络服务功能的 7 层交换技术
第 7 层交换技术通过逐层解开数据包的每层封装,并识别出应用层的信息,以实现对数据内容的理解。可以处理网络应用层数据转发的交换技术就是第 7 层交换技术。其主要目的是充分利用带宽资源,对互联网上的应用、内容进行管理,提高网络服务水平,数据流优化和智能负载均衡,完成互联网向智能化的转变。第 7 层交换技术通过应用层交换机实现了所有高层网络的功能,使网络管理者能够以更低的成本,更好地分配网络资源。
从硬件上看,7 层交换机将所有功能集中在一个专用的特殊应用集成电路或 ASIC(Application-specific Integrated Circuit,专用集成电路)上。ASIC 比传统路由器的 CPU 便宜,而且通常分布在网络端口上,在单一设备中包括了 50 个 ASIC,可以支持数以百计的接口。
路由技术
路由技术主要是指路由选择算法、因特网的路由选择协议的特点及分类。
路由选择算法:
- 静态路由选择算法:是非自适应路由选择算法,这是一种不测量、不利用网络状态信息,仅仅按照某种固定规律进行决策得简单得路由选择算法。静态路由选择算法得特点是简单和开销小,但是不能适应网络状态的变化。静态路由选择算法主要包括扩散法和固定路由表法。静态路由是依靠手工输入的信息来配置路由表的方法。优点是减小了路由器的日常开销。在小型互联网上很容易配置。可以控制路由选择的更新。但是,静态路由在网络变化频繁出现的环境中并不会很好的工作。在大型的和经常变动的互联网,配置静态路由是不现实。
- 动态路由选择算法:是自适应路由选择算法,是依靠当前网络的状态信息进行决策,从而使路由选择结果在一定程度上适应网络拓扑结构和通信量的变化。特点是能较好的适应网络状态的变化,但是实现起来较为复杂,开销也比较大。动态路由选择算法一般采用路由表法,主要包括分布式路由选择算法和集中式路由选择算法。分布式路由选择算法是每一个节点通过定期得与相邻节点交换路由选择得状态信息来修改各自的路由表,这样使整个网络的路由选择经常处于一种动态变化的状况。集中式路由选择算法是网络中设置一个节点,专门收集各个节点定期发送得状态信息,然后由该节点根据网络状态信息,动态的计算出每一个节点的路由表,再将新的路由表发送给各个节点。
路由选择协议的特点:
- 自适应
- 分布式
- 分层次(分自治系统内部和自治系统外部)
路由选择协议划分为两大类:
- 内部网关协议(IGP,具体的协议有 RIP 和 OSPF 等)
- 外部网关协议(EGP,目前使用最多的是 BGP)
三层网络架构
三层网络架构:是采用层次化模型设计的三层网络,Cisco 称之为:分级的互连网络模型(Hierarchical Inter-networking Model)。即将复杂的网络设计分成几个层次,每个层次着重于某些特定的功能,这样就能够使一个复杂的大问题变成许多简单的小问题。三层网络架构设计的网络有三个层次:
- 核心层(网络的高速交换主干)
- 汇聚层(提供基于策略的连接)
- 接入层 (将工作站接入网络)
为了方便管理、提高网络性能,大中型网络应按照标准的三层结构设计。但是,对于网络规模小,联网距离较短的环境,可以采用 “收缩核心” 设计,忽略汇聚层。核心层设备可以直接连接接入层,这样一定程度上可以省去部分汇聚层费用,还可以减轻维护负担,更容易监控网络状况。
核心层(Core Layer)
核心层:核心交换机为进出数据中心的包提供高速的转发,为多个汇聚层提供连接性,核心交换机为整个网络提供一个弹性的 L3 路由网络。
核心层是网络的高速交换主干,对整个网络的连通起到至关重要的作用。核心层应该具有如下几个特性:可靠性、高效性、冗余性、容错性、可管理性、适应性、低延时性等。在核心层中,应该采用高带宽的千兆以上交换机,因为核心层是网络的枢纽中心,重要性突出。核心层设备采用双机冗余热备份是非常必要的,也可以使用负载均衡功能,来改善网络性能。网络的控制策略最好尽量少在核心层上实施。核心层一直被认为是所有外部网络流量的最终承受者,所以对核心层的设计以及网络设备的要求十分严格。核心层设备将占投资的主要部分。
汇聚层(Aggregation Layer)
汇聚层:汇聚交换机连接接入交换机,同时提供其他的服务,例如:防火墙,SSL Offload,入侵检测,网络分析等。
汇聚层是网络接入层和核心层的 “中介(中间层)”,就是在 Server 接入核心层前先做汇聚,以减轻核心层设备的负荷。汇聚层具有实施策略、安全、工作组接入、虚拟局域网(VLAN)之间的路由、源地址或目的地址过滤等多种功能。在汇聚层中,应该选用支持三层交换技术和 VLAN 的交换机,以达到网络隔离和分段的目的。
接入层(Access Layer)
接入层:接入交换机通常位于机架顶部,所以它们也被称为ToR(Top of Rack)交换机,它们物理连接服务器。
接入层是直接面向用户连接的部分,向本地网段提供工作站接入,主要解决了相邻用户之间的互访需求。所以接入层可以选择不支持 VLAN 和三层交换技术的普通交换机,接入层交换机具有低成本、高端口密度且即插即用的特性。接入层还应当适当负责一些用户管理功能(如:地址认证、用户认证、计费管理等),以及用户信息收集工作(如:用户的 IP 地址、MAC 地址、访问日志等)。
三层网络架构的设计原则
- 层次化设计:每个层可以看作为是一个具有特定角色和功能的、结构定义良好的模块,层次化的设计结构,易于扩展和维护,降低了设计的复杂度和难度。三层网络架构可以更好地控制网络规模和网络质量,同时也方便网络管理和维护。
- 模块化设计:每个模块对应一个部门、功能或业务区域,可根据网络规模灵活扩展,部门或区域内部调整涉及范围小,容易进行问题定位。
- 冗余设计:双节点冗余性设计可以保证设备级可靠,适当的冗余提高可靠性,但过度的冗余也不便于运行维护。如果无法做好双节点冗余设计,对框式的核心交换机或者出口路由器,可以考虑单板级的冗余,如双主控板,双交换网板。另外,关键链路可以采用 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 的网络架构。
三层网络架构面临的问题
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