三层网络架构

三层网络架构

数据中心网络是连接数据中心大规模服务器进行大型分布式计算的桥梁。
传统数据中心网络普遍采用树型拓扑方案. 典型的拓扑由三层交换机互联构成,分别是接入层交换机、汇聚层交换机和核心层交换机。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

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

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

相关文章

c语言调用labview方法,LabVIEW与C语言接口的方法

摘要介绍了一种LabVIEW与C 语言接口的方法,由实例证明,该方法高效、易行,是增强LabVIEW整体功能的一条有效的途径。关键词虚拟仪器LabVIEW 动态链接库LabVIEW是一种方便灵活的虚拟仪器开发环境。当前,虚拟仪器技术已广泛应用到各种…

SDN

直接理解 SDN是在2009年左右出现的一种新型网络结构,它将数据层面与控制层面分离,使用中央控制器完成网络的操作和管理,并通常采用OpenFlow协议作为其核心通信协议,拥有着集中式控制、可编程、部署灵活性和数据层面与控制层面相互…

gradle插件 java_简单的Gradle Java插件自定义

gradle插件 java正如我在“ 用Gradle构建Java的初步了解”一文中所展示的那样,当Gradle使用Java插件并将文件和目录放置在该插件期望的位置时, Gradle尤其适用于构建Java应用程序的基础知识(约定-基于项目的布局 )。 但是&#xf…

android 检测过程,Android 系统对permision的检测过程

Android 系统对permision的检测过程RK3288 5.1 中以太网设置静态IP 对permission的检测简略的调用过程如下:frameworks\opt\net\ethernet\java\com\android\server\ethernet\EthernetServiceImpl.javapublic void setConfiguration(IpConfiguration config) {if (!m…

IP地址分类(A类 B类 C类 D类 E类)

IP地址类型 公有地址 公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。 私有地址 私有地址&am…

Java:将JDBC ResultSet作为JSON流式传输

这篇文章展示了如何将java.sql.ResultSet转换为JSON并将其流回调用方。 如果要将大型数据集从JDBC数据源以JSON格式发送到Web应用程序,此功能很有用。 流式传输使您可以一点一点地传输数据,而不必将所有数据都加载到服务器的内存中。 例如,考…

android 开发 短信,Android开发之短信发送

今天要讲的是使用Android开发发送短信程序。我们先来看下运行效果图(1) 图(2)图(3)图(1):当我们运行项目时,出现在屏幕的效果;图(2):当我们输…

ISP (互联网服务提供商)

ISP:全称为Internet Service Provider,即因特网服务提供商,能提供拨号上网服务、网上浏览、下载文件、收发电子邮件等服务,是网络最终用户进入Internet的入口和桥梁。它包括Internet接入服务和Internet内容提供服务。这里主要是In…

android远程命令行工具,Android 使用 adb命令 远程安装apk

【UWP】解析GB2312、GBK编码网页乱码问题在WebHttpRequest请求网页后,获取到的中文是乱码,类似这样: ˹ŵ��Ϸ���������� - &#xff…

多路径路由算法—ECMP、WCMP

传统的网络拓朴结构可以形象的表示为树结构,我们称之为“有中心的网络拓扑结构”,简单地认为很多流量请求最终会汇聚到主干网这样的路由中心,才能转发到下一条路径。 传统的路由协议都是采用单路径路由的方式,简单地认为&#xf…

新的JEP草案将简化Java中的撰写

偏爱继承而不是继承 有充分的理由,“在继承中偏爱组成”这一口头禅在文献中已多次重复。 但是,Java很少或根本没有语言支持来简化对象的组成。 但是,有了名为“简洁方法机构”的新的JEP草案,情况可能会略有改善。 Brian Goetz负责…

应用层组播、IP组播

通常说的组播一般指IP组播,IGMP协议等 什么是应用层组播? 应用层组播通过在应用层复制和缓存数据包而不是在路由器上复制数据包来避免IP组播的部署问题。应用层组播无须对路由器作任何修改,因此在 Internet 上非常容易部署 为了改善网络效率&#xff0…

android 酷炫倒计时,android 好用的倒计时

android倒计时 是在原有TextView的基础上进行二次开发的自定义View效果图这个主要是结合了android的CountDownTimer,这个一般就是发送短信的倒计时。包含功能倒计时时间超过一个小时显示 时:分:秒时间小于一小时显示:分 &#xff…

android 获取对象,在Android中获取LayoutInflater对象的方法

1、通过系统服务来获得,这是最标准的:LayoutInflater inflater (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);2、通过LayoutInflater的静态方法获得:LayoutInflater inflater LayoutInflater.from(context)…

音视频常见问题分析和解决:延迟(时延 delay)和抖动

延迟和抖动 延迟:是网络传输中的一个重要指标,测量了数据从一个端点到另外一个端点所需的时间。一般我们用毫秒作为其单位。通常我们也把延迟叫做延时,但是延时有时还会表示数据包发送端到接受端的往返时间。这个往返时间我们可以通过网络监…

forkjoin_应用ForkJoin –从最佳到快速

forkjoin到目前为止,JDK 7已很好地掌握在开发人员手中,并且大多数人都听说过ForkJoin,但是没有多少人有时间或机会去尝试它。 它引起了并且可能仍然引起一些混乱,与普通线程池有什么不同。 [1] 我在本文中的目标是通过一个代码示…

android usb触摸屏驱动 win10,Win10手机居然这样兼容安卓:直接运行apk!

摘要:“应用太少是硬伤!”这是WP粉吐槽微软简洁而有力的一句话。最新的Win10Mobile预览版中首次引入了微软的安卓子系统,这也是微软推行的ProjectAstoria的一部分。那么Win10手机究竟要如何兼容安卓应用呢?微软最新一份招聘启事似…

GSM、UMTS、LTE

GSM 全球移动通信系统(Global System for Mobile Communications) ,由欧洲电信标准组织ETSI制订的一个数字移动通信标准。它的空中接口采用时分多址技术。自90年代中期投入商用以来,被全球超过100个国家采用。GSM标准的无处不在使得在移动电话运营商之间…

Java应用程序中的验证

我经常看到的项目几乎没有任何有意识的数据验证策略。 他们的团队在截止日期,明确要求的巨大压力下工作,只是没有足够的时间以适当且一致的方式进行验证。 因此,数据验证代码随处可见:JavaScript片段,Java屏幕控制器&a…

android daemon 程序,(转)Android App Daemon

一直没空把App Daemon的原理整理一下,见不少人在问原理,我这里就把整个流程大概的说一下。关于进程守护,从接触Android没多久就一直想实现,网上给出的方案也是各种各样,有双服务方式,有利用系统定时器方式的…