1、 完成数据中心各服务器的数据安全集中存储。
2、 完成各服务器数据的集中管理。
3、 完成数据的本地、远程策略备份。
4、 数据备份时,要求备份安全性高( *** 作人员、数据传输、数据存放)不发生数据丢失、泄密。
5、 数据本地存储的安全性与高可用性。
会给用户带来的好处:
1、保证备份作业是完整的、可用的并具有很好的一致性。在灾难性事件发生后,你能快速的把数据库恢复到最新的备份的状态。
2、在执行 *** 作的过程中,数据库不需要停止,这可以帮助那些需要7x24小时在线业务系统来说是非常重要的。
名词解释
备份:为应付文件、数据丢失或损坏等可能出现的意外情况,将电子计算机存储设备中的数据复制到磁带等大容量存储设备中。从而在原文中独立出来单独贮存的程序或文件副本。(摘自《计算机科学》)
如果系统的硬件或存储媒体发生故障,“备份”工具可以帮助您保护数据免受意外的损失。例如,可以使用“备份”创建硬盘中数据的副本,然后将数据存储到其他存储设备。备份存储媒体既可以是逻辑驱动器(如硬盘)、独立的存储设备(如可移动磁盘),也可以是由自动转换器组织和控制的整个磁盘库或磁带库。如果硬盘上的原始数据被意外删除或覆盖,或因为硬盘故障而不能访问该数据,那么您可以十分方便的从存档副本中还原该数据。
备份分类
备份可以分为系统备份和数据备份。
1、系统备份:指的是用户 *** 作系统因磁盘损伤或损坏,计算机病毒或人为误删除等原因造成的系统文件丢失,从而造成计算机 *** 作系统不能正常引导,因此使用系统备份,将 *** 作系统事先贮存起来,用于故障后的后备支援。
2、数据备份:指的是用户将数据包括文件,数据库,应用程序等贮存起来,用于数据恢复时使用。
备份作用
备份的作用是用于后备支援,替补使用。
备份是容灾的基础,是指为防止系统出现 *** 作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。传统的数据备份主要是采用内置或外置的磁带机进行冷备份。但是这种方式只能防止 *** 作失误等人为故障,而且其恢复时间也很长。随着技术的不断发展,数据的海量增加,不少的企业开始采用网络备份。网络备份一般通过专业的数据存储管理软件结合相应的硬件和存储设备来实现。
备份方式
比较常见的备份方式有:
定期磁带备份数据。
远程磁带库、光盘库备份。即将数据传送到远程备份中心制作完整的备份磁带或光盘。 [1]
远程关键数据+磁带备份。采用磁带备份数据,生产机实时向备份机发送关键数据。
远程数据库备份。就是在与主数据库所在生产机相分离的备份机上建立主数据库的一个拷贝。
网络数据镜像。这种方式是对生产系统的数据库数据和所需跟踪的重要目标文件的更新进行监控与跟踪,并将更新日志实时通过网络传送到备份系统,备份系统则根据日志对磁盘进行更新。
远程镜像磁盘。通过高速光纤通道线路和磁盘控制技术将镜像磁盘延伸到远离生产机的地方,镜像磁盘数据与主磁盘数据完全一致,更新方式为同步或异步。
数据备份必须要考虑到数据恢复的问题,包括采用 [2] 双机热备、磁盘镜像或容错、备份磁带异地存放、关键部件冗余等多种灾难预防措施。这些措施能够在系统发生故障后进行系统恢复。但是这些措施一般只能处理计算机单点故障,对区域性、毁灭性灾难则束手无策,也不具备灾难恢复能力。
备份技术
系统灾难恢复
(IDR=Intelligent Disaster Recovery )
系统灾难恢复,就是在系统出现崩溃的时候,能够用非常少的步骤,将系统重建,包括上面的系统补丁、应用软件和数据。这样可以提高恢复的准确性、缩短恢复时间、缩短业务中断时间。
主要 [3] 灾备技术,在恢复的时候有这么几种方式:
采用公用的一张光盘,所有的系统都采用这一张光盘。这个光盘可以启动系统,同时可以启动网络,然后备份服务器将备份在磁带库(或者虚拟带库)中的整个硬盘内容或者第一主分区内容恢复到灾难机。这样不论灾难机原来有多大容量数据,都可以存放在整个备份系统的备份设备中,统一进行管理,而且不需要经常刻光盘,也就是说光盘不需要经常更新。比较典型的代表是BakBone NetVault VaultDR。右图是BakBoneNetVault VaultDR灾难备份和恢复的数据流,所有系统采用统一的光盘进行。
需要针对每台计算机单独刻光盘,恢复的时候需要利用针对性的光盘来恢复,每台机器都需要自己的光盘,而且需要定期不断更新。这种方式的最大不足是经常要刻光盘,否则灾难出现的时候如果没有光盘或者光盘太久了,都会影响恢复的速度和恢复后的状态。这种技术的典型代表是EMC NetWork Recovery Manager模块。
恢复时需要借助网络启动,也就是需要具备一台相同 *** 作系统的主机作为引导机器,然后利用备份的内容进行恢复。这种技术的典型代表是Symantec NetBackup的Bare Metal Restore(裸金属恢复)模块。
*** 作系统自己提供的灾备工具。对于大多数Unix小型机,都提供系统备份工具。借助于系统自身提供的磁带机,利用一个简单的命令,HP-UX采用make_recovery就可以把整个root卷备份到服务器自带的4mm磁带上。在恢复的时候,这盘磁带可以自启动系统,采用一个命令就可以将整个root卷恢复到硬盘上。这种方式的好处是简单和经济,尤其对于Unix系统,这样的方式远比备份软件提供的BMR模块方便、安全和经济,因为备份软件提供的BMR模块往往需要相同平台的其他服务器来启动。
数据远程复制
将数据在另外的地方实时产生一份可用的副本,此副本的使用不需要做数据恢复,可以将副本立即投入使用。数据复制的最大好处是副本数据立即可用,没有数据恢复时间,RTO 非常好,同时因为是实时复制,RPO也非常好,几乎不会丢失数据。缺点是费用远比数据备份要高,不仅仅是数据复制系统价格高,还需要另外的硬盘存储空间和主机系统,甚至建立另外的远程机房,考虑网络布线,这些都将带来成本大大增加,所以数据复制的建设和维护费用远远大于数据备份。
数据复制目前有如下实现方式:
基于主机。基于主机的数据复制技术,可以不考虑存储系统的同构问题,只要保持主机是相同的 *** 作系统即可,存在支持异构主机之间的数据复制软件,如BakBone NetVault Replicator就可以支持异构服务器之间的数据复制,可以支持跨越广域网的远程实时复制。缺点是需要占用一点主机资源。
基于存储系统。利用存储系统提供的数据复制软件,复制的数据流通过存储系统之间传递,和主机无关。这种方式的优势是数据复制不占用主机资源,不足之处是需要灾备中心的存储系统和生产中心的存储系统有严格的兼容性要求,一般需要来自同一个厂家的存储系统,这样对用户的灾备中心的存储系统的选型带来了限制。
基于光纤交换机。这项技术正在发展中,利用光纤交换机的新功能,或者利用管理软件控制光纤交换机,对存储系统进行虚拟化,然后管理软件对管理的虚拟存储池进行卷管理、卷复制、卷镜像等技术,来实现数据的远程复制。比较典型的有Storag-age,Falcon等。
基于应用的数据复制。这项技术有一定局限性,都是针对具体的应用。主要利用数据库自身提供的复制模块来完成,比如OracleDataGuard,Sybase Replication 等。
数据保护技术
CDP(Continuous Data Protection)
CDP 技术是目前最热门的数据保护技术,它可以捕捉到一切文件级或数据块级别的数据写改动,可以对备份对象进行更加细化的粒度的恢复,可以恢复到任意时间点。
CDP技术是一个新兴的技术,在很多传统的备份软件中都逐渐融入了CDP的技术。比如BakBone NetVault Backup 80 追加了TrueCDP模块,Symantec Backup Exec125等。其他公司包括EMC,Symantec都并购了一些CDP的软件,正在和传统地备份软件进行整合,还都在整合中。
CDP技术包括两种:
Near CDP,就是我们说的准CDP,它的最大特点是只能恢复部分指定时间点的数据(FPIT,Fixed Point In Time),有点类似于存储系统的逻辑快照,它无法恢复任意一个时间点。如Symantec 、CommVault、凯备份的CDP都属于这种类型。
TrueCDP,我们称之为真正的CDP,它可以恢复指定时间段内的任何一个时间点(APIT,Any Point In Time),而BakBone TrueCDP属于TrueCDP类型。
当前应用情况
如果采用灾备方案的分布在各个行业,不过大家都是按照一定的梯度来使用。
首先采用的是系统灾难备份(BMR Bare Metal Recovery),因为这种方案成本最低,只要在建设数据备份系统的时候追加一些模块就可以完成。不需要附加的存储空间,也不需要附加的 [4] 容灾机房,所以,有条件的用户几乎都可以实施。只不过有的用户采用 *** 作系统提供的备份工具来辅助,有的用户采用备份软件提供的灾难模块来完成。这样的用户数量最大,分布在各个行业。BakBone 的VaultDR在使用BakBone NetVault的备份软件用户中被广泛采用。很多用户非常喜欢BakBone VaultDR不用关心 *** 作系统类型,而且一张标准光盘可以应用到所有Intel x86服务器进行灾难备份和恢复。
其次是建立容灾系统的用户,大数据量的高端企业普遍采用基于存储的数据复制技术,比如电信、金融行业。中低端用户普遍采用基于主机的数据复制软件,成本较低,而且不需要进行严苛的存储系统采购,尤其是BakBone的NetVault Replicator不但可以进行远程数据复制,而且可以支持异构平台,所以在国内外有广泛的用户,一些政府部门、电力公司、证券部门、网站公司等都采用这种方式,而且大多运用在Windows、Linux平台。基于存储交换机层的虚拟存储技术虽然也在有了一些用户,但是因为此技术起步时间有限,技术成熟度需要进一步验证,很多用户只是做为试点,没有大范围的展开。对于基于应用的数据复制方式,也有部分高端客户在采用,而且也有大量的用户。
对于CDP技术,才刚刚起步,这种技术满足了很多关心灾备的用户的需求,在RTO 和RPO方面都能得到很高的标准,同时还可以进行任意历史版本的重现,正在被越来越多的用户所关注,相信将来会有非常广泛的用户。BakBone的TrueCDP可以进行任意时间点的恢复,是真正意义上的CDP,将会比其他准CDP产品有更大的优势,会被更多关心灾备的用户所选用。
应用误区
灾备系统因为能够带来业务的连续性,正越来被大家所重视,但是在使用过程中也要切记出现一些误区。
没有选择适合自己的。没有仔细分析和明确业务连续要求,对RTO和RPO没有进行仔细研究,要么不做,要做就想追求最全面的,这样可能忽视了最需要的建设,没有切实满足自己的需要。
认为灾备系统是万能的,夸大灾备系统的作用,忽视了备份系统、高可用系统的建设。其实各个系统都有自己的作用,需要根据实际需求进行建设。
没有有步骤分阶段的进行灾备建设,总想等实际成熟的时候全面建设,甚至还没有先进行数据备份系统的建设,就开始着手进行灾备系统建设。不进行备份系统建设,就没有满足数据安全的底线,在关键时刻缺少一份完整的数据,而花费大量的财力进行灾备系统建设,反而得不偿失。
多种灾备技术的选用不合理,比如主机系统的资源可以接受基于主机的复制软件来运行,却选用了基于存储系统的设计,造成必须选用相同类型的存储设备,增加了总体费用。
对BMR系统灾难备份总是希望选用备份软件自带的BMR模块。其实,备份软件自带的BMR模块对于Window和Linux比较方便,但并不是对于所有的Unix系统都合适,在Unix系统备份方面,Unix自带的系统备份工具和自带的磁带机就非常方便,一个命令就可以完成系统备份,还不用依赖于其他服务器,远远胜于一些备份软件自带的BMR模块,不但 *** 作方便,而且减少费用。
未来发展方向
未来的技术发展应该是多种技术并存,而且越能满足客户需求的方式更能得到客户的关注。
未来的发展之一应该是基于主机的异构复制技术会有更广泛的市场。因为大多数客户具备异构主机环境,支持异构环境的数据复制技术,就可以利用现有环境,各台主机之间互为复制。对于不支持异构环境的复制软件,就需要购买相同的存储或者购买相同 *** 作系统的主机进行数据复制,增加了灾备的总体费用。
未来的发展之二就是CDP技术。CDP融合了数据备份和数据复制的优点,既可以进行实时数据保护,还可以任意时间点的历史数据恢复,将会具有更加强大的生命力。随着TrueCDP和传统备份软件的无缝衔接,将会有越来越多的用户采用TrueCDP 进行灾备系统建设。右图是广为流行的BakBone NetVault TureCDP 备份系统架构图。
备份系统
备份系统的作用
很多系统管理员认为,投资建立一个备份任务的管理,较原来复杂的备份系统只是在恢复的时候才起作用有些浪费,并且平时增添了很多的管理任务,这对于企业来说是一个大的浪费。
这个问题是一个大问题,直接涉及到对于一个企业的信息系统的投资回报率(ROI)。当IT系统的重要性非常高,企业的关乎生命的数据都在计算机系统里面,那么数据的保护就非常重要,这是其一。另外,实施备份系统并不会带来更多的管理任务,相反为系统管理员带来了很多维护上的方便,主要有以下几点:
备份的自动化,降低由维护员的 *** 作带来的风险;
数据库在线备份,保证24×7小时业务运行;
文件系统及数据库数据的时间点恢复,历史版本管理;
磁带的复制(Cloning),可降低磁带的出错几率和实现异地容灾保存;
网络备份、LAN-Free及Serverless多种备份方式;
系统灾难快速恢复。
因此,如果企业必须实现上述功能,而企业又不实施备份系统时,需要的人力及设备的投资如果大于实施备份系统的投资,则该备份系统的投资是可以被接受的。
备份系统的功能
用户只需要简单的备份就可以了,不必要那么复杂。用户买了很多备份系统中没有用处的先进技术,没有必要在系统中实现过多的复杂功能。
备份系统实现的功能是备份技术发展到一定阶段的产物,先进技术的出现也由于用户的系统中有这样的需求。当IT系统发展到一定程度,用户对IT系统的依赖型增强,IT系统的数据量越来越大,对系统备份的要求就水涨船高。但好的备份系统应该有如下的特点:
备份系统可根据应用系统的需要非常容易地进行扩展;
满足未来的数据量及应用系统升级带来的备份系统的压力;
备份系统中,尤其是备份软件的可升级能力。
总体来说,备份技术已经经历了几个发展阶段,从传统的磁带备份到网络备份,从SCSI LAN-Free备份到SAN结构的动态共享LANFree备份,直到出现的Serverless备份。可以预见,未来备份产品有以下几个趋势:
磁盘备份
状况
随着SATA磁盘价格进一步下降,磁盘的备份优势逐渐体现出来。EMC已经推出了使用磁盘作为虚拟磁带库的产品,在功能上可以替代磁带库的功能。笔者认为,该产品的大批量投放市场,会在一定程度上引发备份硬件设备的升级换代。
iSCSI技术
该技术可以利用现有的TCP/IP网络进行数据传输,用户可以很方便地实现数据的远程异地保护。市场上已经出现了较多这样的产品,相信随着产品的成熟,会有很多异地备份和容灾方案会选择该技术。
NDMP协议
NDMP(网络数据管理协议)作为一种标准,已经发展到了Version 4,支持该协议的产品,可以非常方便地实现NAS服务器数据的快速备份和恢复。对于大数量的小文件,该技术有着得天独厚的优势。
备份技术
很多的磁盘阵列都提供了SnapShot功能,而对于磁盘阵列上的SnapShot,我们可以充分利用SnapShot技术进行数据的Serverless备份,这对于企业级的大型系统有着十分重要的意义,极大地降低了备份时对于生产系统的资源占用,并且可以非常快速地恢复。
实现备份介质的生命周期管理
通常每盘磁带都有一定的使用次数限制,因此,对于磁带备份系统来说,磁带使用了一定次数后,就应该摒弃掉,不能用来备份关键数据。
维护
人们投资购买了全自动的备份系统,目的就是降低维护工作量,只要实施了该系统,维护工作就可以放松了,只要过一周或者一个月检查一下备份的状态就可以了。
当用户实施了备份系统后,对于备份系统的维护工作仍然非常重要。主要由以下因素决定。
由于很多单位IT系统的主机很多,应用系统很多,并且每套应用系统都有相应的管理和维护人员,备份是各种应用数据备份任务的集中管理。因此对于应用系统较为复杂的用户来说,可以设立备份系统管理员或者存储备份工程师,对整体备份系统进行维护。
随着数据量的增大,应用系统的增长,备份策略随着时间的迁移应进行优化。
备份系统涉及的技术包括 *** 作系统、数据库、存储、磁带库等诸多技术,因此建议备份系统管理员对各种知识有一定的了解,并且除了参加备份系统知识的培训外,还要参加 *** 作系统、数据库等产品的专业培训,以保证应用系统在出现灾难时尽快实现数据的恢复。
关键数据库的日常备份如果失败,可能导致数据库的挂起。例如,对于 [5] Oracle数据库来说,如果不及时对数据库的“归档日志”进行备份,则会导致整个数据库的停止。
如果磁带库备份系统中有“克隆”的功能,还需要每日将“克隆”的介质取出,放置到异地保存,以利于容灾。
产品
在选择产品时,备份磁带库容量尽可能大,磁带机速度尽可能快,尽可能使用最先进的技术。
在产品的选择过程中,性价比是最重要的指标之一,但绝不是全部。建议用户在选择产品的时候考虑以下几个因素:
本系统应用数据的类型、数据量、备份策略(全备份、增量备份等)及关键数据的保留时间决定了磁带库的总容量;
备份时间窗口和备份数据量的峰值数据量决定了磁带机的最低数量;
应用系统的种类和数据类型决定备份时采用哪些技术。
如用NAS设备备份,尽量选择NDMP备份;SAN架构备份尽量选用磁带机动态共享;磁盘阵列提供了镜像或者SNAP功能,可以使用SnapShot备份技术。
磁带机技术的选择方面,建议选择较为通用的设备,对于该磁带机来说, *** 作系统及备份软件对其兼容的程度较好。
由于磁带机属于机械设备,故障率较磁盘、光盘等设备要高,因此配置磁带机时尽量保持冗余。SATA磁盘技术有了突飞猛进的发展,磁盘备份技术已经成为了发展方向。
硬件设备考虑备件的提供情况及提供商的服务水平,而对于备份软件来说,提供专业服务及技术支持也是需要考虑的重要因素。
备份软件应该具有较广泛的兼容性。
数据容灾
企业关键数据丢失会中断企业正常商务运行,造成巨大经济损失。要保护数据,企业需要备份容灾系统。但是很多企业在搭建了备份系统之后就认为高枕无忧了,其实还需要搭建容灾系统。数据容灾与数据备份的联系主要体现在以下几个方面:
数据备份基础
数据备份是数据高可用的最后一道防线,其目的是为了系统数据崩溃时能够快速的恢复数据。虽然它也算一种容灾方案,但这种容灾能力非常有限,因为传统的备份主要是采用数据内置或外置的磁带机进行 [6] 冷备份,备份磁带同时也在机房中统一管理,一旦整个机房出现了灾难,如火灾、盗窃和地震等灾难时,这些备份磁带也随之销毁,所存储的磁带备份也起不到任何容灾功能。
容灾与备份
真正的数据容灾就是要避免传统冷备份所具有先天不足,它能在灾难发生时,全面、及时地恢复整个系统。容灾按其容灾能力的高低可分为多个层次,例如国际标准SHARE 78 定义的容灾系统有七个层次:从最简单的仅在本地进行磁带备份,到将备份的磁带存储在异地,再到建立应用系统实时切换的异地备份系统,恢复时间也可以从几天到小时级到分钟级、秒级或0数据丢失等。
无论是采用哪种容灾方案,数据备份还是最基础的,没有备份的数据,任何容灾方案都没有现实意义。但光有备份是不够的,容灾也必不可少。容灾对于IT而言,就是提供一个能防止各种灾难的计算机信息系统。从技术上看,衡量容灾系统有两个主要指标:RPO(Recovery Point Object)和RTO(Recovery Time Object),其中RPO代表了当灾难发生时允许丢失的数据量;而RTO则代表了系统恢复的时间。
容灾不仅是技术
容灾是一个工程,而不仅仅是技术。很多客户还停留在对容灾技术的关注上,而对容灾的流程、规范及其具体措施还不太清楚。也从不对容灾方案的可行性进行评估,认为只要建立了容灾方案即可高枕无忧,其实这具有很大风险的。特别是在一些中小企业中,认为自己的企业为了数据备份和容灾,整年花费了大量的人力和财力,而结果几年下来根本就没有发生任何大的灾难,于是放松了警惕。可一旦发生了灾难时,后悔晚矣!这一点国外的跨国公司就做得非常好,尽管几年下来的确未出现大的灾难,备份了那么磁带,几乎没有派上任何用场,但仍一如既往、非常认真地做好每一步,并且基本上每月都有对现行容灾方案的可行性进行评估,进行实地演练。 [7]
数据容灾等级
设计一个 [4] 容灾备份系统,需要考虑多方面的因素,如备份/恢复数据量大小、应用数据中心和备援数据中心之间的距离和数据传输方式、灾难发生时所要求的恢复速度、备援中心的管理及投入资金等。根据这些因素和不同的应用场合,常见的容灾备份等级有以下四个:
本地冷备份
这一级容灾备份,实际上就是上面所指的数据备份。它的容灾恢复能力最弱,它只在本地进行数据备份,并且被备份的数据磁带只在本地保存,没有送往异地。
在这种容灾方案中,最常用的设备就是 [8] 磁带机,当然根据实际需要可以是手工加载磁带机,也可以是自动加载磁带机。前者主要适用于存储数据容量较小的中小型企业。
参考资料
1 基于NBU备份系统的磁带库优化与增容方案研究 .中国知网[引用日期2017-04-02]
2 双机热备系统的技术研究和具体实现 .中国知网[引用日期2017-04-02]
3 云计算在电力系统数据灾备业务中的应用研究 .中国知网[引用日期2017-04-02]
4 容灾备份系统中的同步策略研究及效率分析 .中国知网[引用日期2017-04-02]
5 Oracle数据库优化探究 .中国知网[引用日期2017-04-02]
6 前兆管理系统数据库冷备份及恢复方法实现 .中国知网[引用日期2017-04-02]
7 容灾的理论与关键技术分析 .中国知网[引用日期2017-04-02]
8 磁带机控制程序的研究与实现 .中国知网[引用日期2017-04-02]
本文引用自北京大学姚远教授,来源于百度百科
附链接:网页链接
原理四个主要方面:
一、tcp协议之连接建立、断开
二、tcp协议之超时重传
三、tcp协议之窗口管理
四、tcp协议之拥塞控制
TCP是一种面向有连接的协议,也就是说必须确认对方存在时才能发送数据而TCP通过检验和、序列号、确认应答、重发控制、连接管理、窗口控制等机制来实现可靠传输。
1 目的:TCP三次握手是客户端和服务器总共发三个数据包,通过三个数据包来确认主动发送能力和被动接收能力是否正常。
2 实质:通过指定的四元组(源地址、源端口、目标地址、目标端口)来建立TCP连接,同步双方各自发送序列号seq和确认号ACK,同时也会交换窗口大小信息
三次握手过程的实现方式就是交换序列号seq。
随便在网上找个地址,如果通过域名想看ip地址,可以ping下看连接。
① 19216837发送[SYN]报文段至222169228146,告知序列号x为0。
② 222169228146发送[SYN,ACK]报文段至19216837,告知序列号y为0,确认号ACK为x+1=1。
③19216837发送[ACK]报文段至222169228146,告知确认号ACK为y+1=1。
报文段中的其他参数:
MSS=1460 :允许从对方接收到的最大报文段,图中为1460字节(指承载的数据,不包含报文段的头部)。
win=8192 :滑动窗口的大小为8192字节。
SACK_PERM=1 :开启选择确认。为什么会使用SACK:tcp确认方式不是一段报文段一确认,而是采用累积确认方式。服务器接收到的报文段无序所以序列号也是不连续,服务器的接收队列会出现空洞情况。为了解决空洞,提前了解当前空洞,应对丢失遗漏,采取重传。提前了解方式就是通过SACK选项信息,SACK信息包含接收方已经成功接收的数据块的序列号范围。而SACK_PERM字段为1表明,选择开启了SACK功能。
网络层可能会出现丢失、重复、乱序的问题,tcp是提供可靠的数据传输服务的,为了保证数据的正确性,tcp协议会重传它认为的已经丢失的包。重传两种机制:一种基于时间重传,一种基于确认报文段提供的信息重传。
RTT :数据完全发送完(完成最后一个比特推送到数据链路上)到收到确认信号的时间(往返时间)。
RTO :重传超时时间(tcp发送数据时设置一个计时器,当计时器超时没有收到数据确认信息,引发超时而重传,判断的标准就是RTO)。
思考:发送序列号为1、2、3、4这4个报文段,但是出现了序列号2报文段丢失,怎么办?
发送端接收到seq1的确认报文(ACK=2)后,等待seq=2的确认报文。
接收端当收到序列号为3的报文(2已丢失),发送ack为4的确认报文,发送端正等待ack为2的确认报文,面对跳跃的报文,那么发送端会一直等待,直到超出指定时间,重传报文2。
为什么不跳跃确认呢?
tcp是累积确认方式,如果确认报文3,那么意味着报文1和报文2都已经成功接收。
超时处理方式:
思考:上面计时器是以时间为标准重传,那么可以通过确认报文的次数来决定重传。
发送端接收到seq1的确认报文(ACK=2)后,等待seq=2的确认报文。
接收端收到报文3、4、5,但是没收到报文2,那么接收端发送三个ACK为2的确认报文,发送端收到这个三个确认报文,重传报文2。
思考:如果快速重传中丢失包的地方很多(报文2,报文,7,报文9,报文30,报文300),那么需要从头到尾都重传,这很蛋疼?
思考:SACK重传对于接收到重复数据段怎样运作没有明确规定,通过DSACK重传可以让发送方知道哪些数据被重复接收了,而且明确是什么原因造成的。
发送端没有收到100-199的ACK包,超过指定时间,重传报文。
接收端都已经收到200-299的发送报文了,又来100-199是重复报文。再向发送端发送一个ACK报文,设置SACK 100-199,告知发送端,已经收到了100-199包,只是回应ACK包丢失。
发送端发送包100-199,由于网络延迟,一直没有达到接收端。
接收端连续发送三个ACK 200确认报文,触发快速重传,发送端收到了ACK 500的确认报文,表明之前的报文都已经交付成功。
接收端又收到了延迟的报文100-199,再次向发送端发送一个SACK 100-199的ACK 500报文。
发送端发现这是重复报文,判断为网络延迟造成的。
计时器重传:根据超时,重传。
快速重传:根据接收三次相同ACK报文,重传。
选择确认重传:根据接收端提供的SACK信息,重传。
DSACK重传:根据重复报文,明确丢失ACK报文还是网络延迟。
Category1:已发送且已确认(已经收到ACK报文的数据)。
Category2:已发送但未收到确认。
Category3:即将发送。
Category4:窗口移动前都不能发送。
可用窗口:46-51字节。
发送窗口:32-51字节。
RCVNXT:左边界
RCVWND:接收窗口
RCVNXT+RCVWND:右边界
接收端接收到序列号小于左边界,那么被认为重复数据而被丢弃。
接收端接收到序列号大于右边界,那么被认为超出处理范围,丢弃。
注意:tcp协议为累积ACK结构,只有当达到数据序列号等于左边界时,数据才不会被丢弃。
如果窗口更新ACK丢失,对于发送端,窗口左边界右移,已发送数据得到ACK确认之后,左右边界距离减小,发送端窗口会减小,当左右边界相等时,称为零窗口。零窗口之后:接收端发送窗口更新能会发生窗口更新ACK丢失。
<<tcp/ip 详解>>解释:
TCP是通过接收端的通告窗口来实现流量控制的,通告窗口指示了接收端可接收的数据量。
当窗口值变为0时,可以有效阻止发送端继续发送,直到窗口大小恢复为非零值。
当接收端重新获得可用空间时,会给发送端传输一个窗口更新告知其可继续发送数据。这样的窗口更新通常都不包含数据(纯ACK),接收端向发送端发送的窗口更新ACK可能丢失。结果双方处于等待状态,发生死锁。
解决方案:
发送端会采用一个持续计时器间歇性地查询接收端,看其窗口是否已增长。触发窗口探测,强制要求接收端返回ACK。发送几次探测,窗口大小还是0,那么断开连接。
出现SWS的情况:
① 接收端通告窗口太小。
② 发送端发送的数据太小。
解决方案:
① 针对接收端:不应通告小窗口值
[RFC1122]描述:在窗口可增至一个全长的报文段(接收端MSS)或者接收端缓存空间的一半(取两者中较小值)之前,不能通告比当前窗口更大的窗口值。标准:min(MSS , 缓存空间/2)。
② 针对发送端:不应发送小的报文
至少满足以下其一:
(1)可以发送MSS字节的报文。
window size >= MSS或者 数据大小>=MSS
(2)数据段长度>=接收端通告过的最大窗口值的一半,才可以发送。
收到之前发送的数据的ack回包,再发送数据,否则一直攒数据。
(3) -1 没有未经确认的在传数据或者-2 连接禁用Nagle算法。
tcp基于ACK数据包中的通告窗口大小字段实现了流量控制。
当网络大规模通信负载而瘫痪,默认网络进入拥塞状态,减缓tcp的传输。发送方和接收方被要求承担超负荷的通信任务时,采取降低发送速率或者最终丢弃部分数据的方法。
反映网络传输能力的变量称为拥塞窗口(cwnd)。
通告窗口(awnd)。
发送窗口swnd=min(cwnd,awnd)
目的:tcp在用拥塞避免算法探寻更多可用带宽之前得到cwnd值,帮助tcp建立ACK时钟。
[RFC5681] :在传输初始阶段,由于未知网络传输能力,需要缓慢探测可用传输资源,防止短时间内大量数据注入导致拥塞。慢启动算法针对这一问题而设计。在数据传输之初或者重传计时器检测到丢包后,需要执行慢启动。
拥塞窗口值:每收到一个ACK值,cwnd扩充一倍。所以假设没有丢包且每个数据包都有相应ACK值,在k轮后swnd= ,成 指数增长 。
SMSS是发送方的最大段大小。
慢启动阶段,cwnd会指数增长,很快,帮助确立一个慢启动阙值(ssthresh)。有了阙值,tcp会进入拥塞避免阶段,cwnd每次增长值近似于成功传输的数据段大小,成 线性增长 。
实现公式:cwnd+=SMSSSMSS/cwnd
刚建立连接使用慢启动算法,初始窗口为4,收到一次ACK后,cwnd变为8,再收到一次ACK后,cwnd变为16,依次继续,32、64,达到阙值ssthresh为64。
开始使用拥塞避免算法,设置ssthresh为ssthresh/2,值为32。重新从初始窗口4,线性递增到ssthresh=32。
当cwnd < ssthresh时,使用慢启动算法
当cwnd > ssthresh时,使用拥塞避免算法
应用快速恢复算法时机:启动快速重传且正常未失序ACK段达到之前。启动快速恢复算法。
实现过程:
① 将ssthresh设置为1/2 cwnd,将cwnd设置为ssthresh+3SMSS。
② 每接收一个重复ACK,cwnd值暂时增加1 SMSS。
③当接收到新数据ACK后,将cwnd设置为ssthresh。
参考:<<tcp/ip 详解>>
最近因为写论文的关系,泡知网、泡万方,发现了很多学术界对数据中心网络一些构想,发现里面不乏天才的想法,但日常我们沉迷在各个设备厂商调制好的羹汤中无法自拔,管中窥豹不见全局,还一直呼喊着“真香”,对于网工来说沉溺于自己的一方小小天地不如跳出来看看外界有哪些新的技术和思想,莫听穿林打叶声,何妨吟啸且徐行当前新的数据中心网络拓扑主要分为两类
1、以交换机为核心,网络连接和路由功能由交换机完成,各个设备厂商的“羹汤”全属于这个领域
2、以服务器为核心,主要互联和路由功能放在服务器上,交换机只提供简单纵横制交换功能
第一类方案中包含了能引发我回忆阴影的Fat-Tree,和VL2、Helios、c-Through、OSA等等,这些方案要么采用更多数量交换机,要么融合光交换机进行网络互联,对交换机软件和硬件要求比较高,第二类主要有DCell、Bcube、FiConn、CamCube、MDCube等等,主要推动者是微软,这类方案中服务器一版会通过多网卡接入网络,为了支持各种流量模型,会对服务器进行硬件和软件的升级。
除了这些网络拓扑的变化外,其实对数据中心网络传输协议TCP/IP、网络虚拟化、网络节能机制、DCI网络互联都有很多创新的技术和概念涌现出来。
FatTree 胖树,2008年由UCSD大学发表的论文,同时也是5年前工作中接触的第一种交换机为中心的网络拓扑,当时没有太理解,跟客户为这事掐的火星四溅,再来一次可能结论会有所改变,同时也是这篇论文引发了学术界对数据中心内部网络拓扑设计的广泛而深刻的讨论,他提出了一套组网设计原则来达成几个目的
1、全网采用低端商用交换机来组网、其实就是采用1U的接入交换机,取消框式设备
2、全网无阻塞
3、成本节省,纸面测算的话FatTree 可以降为常规模式组网成本的1/4或1/5
物理拓扑(按照4个pod设计)
FatTree 的设计原则如下
整个网络包含K个POD,每个POD有K/2个Edge和K/2个Agg 交换机,他们各有K的接口,Edge使用K/2个端口下联服务器,Agg适用K/2个端口上联CORE交换机
Edge使用K/2个端口连接服务器,每个服务器占用一个交换端口
CORE层由K/2K/2共计KK/4个K个端口交换机组成,分为K/2组,每组由K/2ge,第一组K/2台CORE交换机连接各个POD中Agg交换层一号交换机,第二组K/2的CORE交换机连接各POD中Agg的二号交换机,依次类推
K个POD,每个POD有K/2个Edge交换机,每个Edge有K/2端口,服务器总数为KK/2K/2=KKK/4
K取值4的话,服务器总数为16台
常规K取值48的话,服务器为27648台
FatTree的路由设计更加有意思,论文中叫两阶段路由算法,首先要说明的是如果使用论文中的算法是需要对交换机硬软件进行修改的,这种两阶段路由算法和交换设备及服务器的IP地址强相关,首先就是IP地址的编制,这里依然按照K=4来设计,规则如下
1、POD中交换机IP为10podswitch1,pod对应POD编号,switch为交换机所在POD编号(Edge从0开始由左至右到k/2-1,Agg从k/2至k-1)
2、CORE交换机IP为10kji ,k为POD数量,j为交换机在Core层所属组编号,i为交换机在该组中序号
3、服务器IP为10podswitchID,ID为服务器所在Edge交换机序号,交换机已经占用1,所以从2开始由左至右到k/2+1
设计完成后交换机和服务器的IP地址会如下分配
对于Edge交换机(以10201为例)第一阶段匹配10202和10203的32位地址,匹配则转发,没有匹配(既匹配0000/0)则根据目的地址后8位,也就是ID号,选择对应到Agg的链路,如目标地址为xxx2则选择到10221的链路,目标地址为xxx3则选择到10231的链路
对于Agg交换机(以10221为例)第一阶段匹配本POD中网段10200/24和10210/24,匹配成功直接转发对应Edge,没有匹配(既匹配0000/0)则根据目的地址后8位,也就是ID号确定对应到Core的链路,如目标地址为xxx2则选择到10411的链路,目标地址为xxx3则选择到10412的链路
对于Core交换机,只有一个阶段匹配,只要根据可能的POD网段进行即可,这里是10000/16~10300/16对应0、1、2、3四个口进行转发
容错方面论文提到了BFD来防止链路和节点故障,同时还有流量分类和调度的策略,这里就不展开了,因为这种两阶段路由算法要对交换机硬件进行修改,适应对IP后8位ID进行匹配,现实中没有看到实际案例,但是我们可以设想一下这种简单的转发规则再加上固定端口的低端交换机,对于转发效率以及成本的压缩将是极为可观的。尤其这种IP地址规则的设计配合路由转发,思路简直清奇。但是仔细想想,这种按照特定规则的IP编制,把每个二层限制在同一个Edge交换机下,注定了虚拟机是没有办法跨Edge来迁移的,只从这点上来看注定它只能存在于论文之中,但是顺着这个思路开个脑洞,还有什么能够编制呢?就是MAC地址,如果再配上集中式控制那就更好了,于是就有了一种新的一种路由方式PortLand,后续我们单独说。
如此看来FatTree 是典型的Scale-out模式,但是由于一般交换机端口通常为48口,如果继续增加端口数量,会导致成本的非线性增加,底层Edge交换机故障时,难以保障服务质量,还有这种拓扑在大数据的mapreduce模型中无法支持one-to-all和all-to-all模式。
把脑洞开的稍微小一些,我们能否用通用商业交换机+通用路由来做出来一种FatTree变种拓扑,来达到成本节省的目的呢,答案一定是确切的,目前能看到阿里已经使用固定48口交换机搭建自己的变种FatTree拓扑了。
以交换机为中心的网络拓扑如VL2、Helios不再多说,目前看到最好的就是我们熟知的spine-leaf结构,它没有设计成1:1收敛比,而且如果使用super层的clos架构,也可以支撑几万台或者百万台的服务器规模,但是FaTtree依靠网络拓扑取消掉了框式核心交换机,在一定规模的数据中心对于压低成本是非常有效的
聊完交换机为核心的拓扑设计后,再来看看服务器为核心的拓扑,同样这些DCell、Bcube、FiConn、CamCube、MDCube等,不会全讲,会拿DCell来举例子,因为它也是2008年由微软亚洲研究院主导,几乎和FatTree同时提出,开创了一个全新的思路,随后的年份里直到今天一直有各种改进版本的拓扑出现
这种服务器为核心的拓扑,主导思想是在服务器上增加网卡,服务器上要有路由转发逻辑来中转流量数据包,并且采用递推方式进行组网。
DCell的基本单元是DCell0,DCell0中服务器互联由一台T个端口的mini交换机完成,跨DCell的流量要通过服务器网卡互联进行绕转。通过一定数量的Dcell0组成一个DCell1,按照一定约束条件进行递推,组成DCell2以及DCellk
上图例中是一个DCell1的拓扑,包含5个Dcell0,每台服务器2个端口,除连接自己区域的mini交换机外,另一个端口会依次连接其他DCell0中的服务器,来组成全互联的结构,最终有20台服务器组成DCell1,所有服务器按照(m,n)坐标进行唯一标识,m相同的时候直接通过moni交换机交互,当m不同时经由mini交换机中继到互联服务器,例子中红色线为40服务器访问13服务器的访问路径。
DCell组网规则及递归约束条件如下:
DCellk中包含DCellk-1的数量为GK
DCellk中包含服务器为Tk个,每台服务器k+1块网卡,则有
GK=Tk-1+1
TK=Gk-1 ✕ Tk-1
设DCell0中有4台服务器
DCell1 中有5个DCell0 (G1=5)
Tk1=20台服务器(T1=20)
DCell2 中有21个DCell1 (G2=21)
Tk2=420台服务器(T2=420)
DCell3 中有421个DCell2 (G3=421)
Tk3=176820台服务器(T3=176820)
…
Tk6=3260000台服务器
经过测算DCell3中每台服务器的网卡数量为4,就能组建出包含17万台服务器的数据中心,同样DCell的缺点和优点一样耀眼,这种递归后指数增长的网卡需求量,在每台服务器上可能并不多,但是全量计算的话就太过于惊人了,虽然对比FatTree又再一次降低交换机的采购成本,但是天量的网卡可以想象对于运维的压力,还有关键的问题时高层次DCell间通信占用低层次DCell网卡带宽必然导致低层次DCell经常拥塞。最后还有一个实施的问题,天量的不同位置网卡布线对于施工的准确度以及未知的长度都是一个巨大的挑战。
DCell提出后,随后针对网卡数量、带宽抢占等一系列问题演化出来一批新的网络拓扑,思路无外乎两个方向,一个是增加交换机数量减少单服务网卡数量,趋同于spine-leaf体系,但是它一直保持了服务器多网卡的思路。另一种是极端一些,干脆消灭所有交换机,但是固定单服务器网卡数量,按照矩阵形式组建纯服务器互联结构,感兴趣的同学可以继续探索。
数据中心的路由框架涵盖范围和领域非常多,很多论文都选择其中的一个点进行讨论,比如源地址路由、流量调度、收敛、组播等等,不计划每个展开,也没有太大意义。但是针对之前FatTree的两阶段路由有一个更新的路由框架设计PortLand,它解决了两段路由中虚拟机无法迁移的问题,它的关键技术有以下几点
1、对于FatTree这种高度规范化的拓扑,PortLand设计为采用层次化MAC编址来支持大二层,这种路由框架中,除了虚拟机/物理机实际的MAC外(AMAC),还都拥有一个PortLand规范的伪MAC(PMAC),网络中的转发机制和PMAC强相关,PMAC的编址规则为
podpositionportvmid
pod (2字节) 代表虚拟机/服务器所在POD号,position(1字节)虚拟机/服务器所在Edge交换机在POD中编号,port(1字节)虚拟机/服务器连接Edge交换机端口的本地编号,vmid(2字节)服务器在Edge下挂以太网交换机编号,如果只有一台物理机vmid只能为1
2、虚拟机/服务器的编址搞定后,Edge、Aggregate、Core的编址呢,于是PortLand设计了一套拓扑发现机制LDP(location discovery protocol),要求交换机在各个端口上发送LDP报文LDM(location
discovery message)识别自己所处位置,LDM消息包含switch_id(交换机自身mac,与PMAC无关)pod(交换机所属pod号)pos(交换机在pod中的编号)level(Edge为0、Agg为1、Core为2)dir(上联为1,下联为-1),最开始的时候Edge角色会发现连接服务器的端口是没有LDM的,它就知道自己是Edge,Agg和Core角色依次收到LDM后会计算并确定出自己的leve和dir等信息。
3、设计一个fabric manager的集中PortLand控制器,它负责回答Edge交换机pod号和ARP解析,当Edge交换机学习到一个AMAC时,会计算一个PMAC,并把IP/AMAC/PMAC对应关系发送给fabric manager,后续有虚拟机/服务器请求此IP的ARP时,会回复PMAC地址给它,并使用这个PMAC进行通信。
4、由于PMAC的编址和pod、pos、level等信息关联,而所有交换机在LDM的交互过程中知晓了全网的交换机pod、pos、level、dir等信息,当数据包在网络中传播的时候,途径交换机根据PMAC进行解析可得到pod、pos这些信息,根据这些信息即可进行数据包的转发,数据包到达Edge后,Edge交换机会把PMAC改写为AMAC,因为它是知道其对应关系的。当虚拟机迁移后,由fabric manager来进行AMAC和PMAC对应更新和通知Edge交换机即可,论文中依靠虚拟机的免费ARP来触发,这点在实际情况中执行的效率要打一个问号。
不可否认,PortLand的一些设计思路非常巧妙,这种MAC地址重写非常有特色。规则设计中把更多的含义赋给PMAC,并且通过LDP机制设计为全网根据PMAC即可进行转发,再加上集中的控制平面fabric manager,已经及其类似我们熟悉的SDN。但是它对于转发芯片的要求可以看出要求比较低,但是所有的转发规则会改变,这需要业内对于芯片和软件的全部修改,是否能够成功也看市场驱动力吧,毕竟市场不全是技术驱动的。
除了我们熟悉的拓扑和路由框架方面,数据中心还有很多比较有意思的趋势在发生,挑几个有意思的
目前数据中心都是以太网有线网络,大量的高突发和高负载各个路由设架构都会涉及,但是如果使用无线是不是也能解决呢,于是极高频技术在数据中心也有了一定的研究(这里特指60GHZ无线),其吞吐可达4Gbps,通过特殊物理环境、波束成形、有向天线等技术使60GHZ部署在数据中心中,目前研究法相集中在无线调度和覆盖中,技术方案为Flyways,它通过合理的机柜摆放及无线节点空间排布来形成有效的整体系统,使用定向天线和波束成形技术提高连接速率等等新的技术,甚至还有一些论文提出了全无线数据中心,这样对数据中心的建设费用降低是非常有助力的。
数据中心目前应用的还是TCP,而TCP在特定场景下一定会遇到性能急剧下降的TCP incast现象,TCP的拥塞避免和慢启动会造成当一条链路拥塞时其承载的多个TCP流可能会同时触发TCP慢启动,但随着所有的TCP流流量增加后又会迅速达到拥塞而再次触发,造成网络中有时间流量很大,有时间流量又很小。如何来解决
数据中心还有很多应用有典型的组通信模式,比如分布式存储、软件升级等等,这种情况下组播是不是可以应用进来,但是组播在数据中心会不会水土不服,如何解决
还有就是数据中心的多路径,可否从TCP层面进行解决,让一条TCP流负载在不同的链路上,而不是在设备上依靠哈希五元组来对每一条流进行特定链路分配
对于TCPincast,一般通过减少RTO值使之匹配RTT,用随机的超时时间来重启动TCP传输。还有一种时设计新的控制算法来避免,甚至有方案抛弃TCP使用UDP来进行数据传输。
对于组播,数据中心的组播主要有将应用映射为网络层组播和单播的MCMD和Bloom Filter这种解决组播可扩展性的方案
对于多路径,提出多径TCP(MPTCP),在源端将数据拆分成诺干部分,并在同一对源和目的之间建立多个TCP连接进行传输,MPTCP对比传统TCP区别主要有
1、MPTCP建立阶段,要求服务器端向客户端返回服务器所有的地址信息
2、不同自流的源/目的可以相同,也可以不同,各个子流维护各自的序列号和滑动窗口,多个子流到达目的后,由接收端进行组装
3、MPTCP采用AIMD机制维护拥塞窗口,但各个子流的拥塞窗口增加与所有子流拥塞窗口的总和相关
还有部分针对TCP的优化,如D3协议,D3是针对数据中心的实时应用,通过分析数据流的大小和完成时间来分配传输速率,并且在网络资源紧张的时候可以主动断开某些预计无法完成传输的数据流,从而保证更多的数据流能按时完成。
这的数据中心节能不会谈风火水电以及液冷等等技术,从网络拓扑的角度谈起,我们所有数据中心拓扑搭建的过程中,主要针对传统树形拓扑提出了很多“富连接”的拓扑,来保证峰值的时候网络流量的保持性,但是同时也带来了不在峰值条件下能耗的增加,同时我们也知道数据中心流量多数情况下远低于其峰值设计,学术界针对这块设计了不少有脑洞的技术,主要分为两类,一类时降低硬件设备能耗,第二类时设计新型路由机制来降低能耗。
硬件能耗的降低主要从设备休眠和速率调整两个方面来实现,其难点主要时定时机制及唤醒速度的问题,当遇到突发流量交换机能否快速唤醒,人们通过缓存和定时器组合的方式进行。
节能路由机制,也是一个非常有特点的技术,核心思想是通过合理的选择路由,只使用一部分网络设备来承载流量,没有承载流量的设备进行休眠或者关闭。Elastic Tree提出了一种全网范围的能耗优化机制,它通过不断的检测数据中心流量状况,在保障可用性的前提下实时调整链路和网络设备状态,Elastic Tree探讨了bin-packer的贪心算法、最优化算法和拓扑感知的启发算法来实现节能的效果。
通过以上可以看到数据中心发展非常多样化,驱动这些技术发展的根本性力量就是成本,人们希望用最低的成本达成最优的数据中心效能,同时内部拓扑方案的研究已经慢慢成熟,目前设备厂商的羹汤可以说就是市场化选择的产物,但是数据中心网络传输协议、虚拟化、节能机制、SDN、服务链等方向的研究方兴未艾,尤其是应用定制的传输协议、虚拟网络带宽保障机制等等,这些学术方面的研究并不仅仅是纸上谈兵,对于我知道的一些信息来说,国内的阿里在它的数据中心网络拓扑中早已经应用了FatTree的变种拓扑,思科也把数据中心内部TCP重传的技术应用在自己的芯片中,称其为CONGA。
坦白来说,网络从来都不是数据中心和云计算的核心,可能未来也不会是,计算资源的形态之争才是主战场,但是网络恰恰是数据中心的一个难点,传统厂商、学术界、大厂都集中在此领域展开竞争,创新也层出不穷,希望能拓展我们的技术视野,能对我们有一些启发,莫听穿林打叶声、何妨吟啸且徐行~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)