WAAS技术白皮书
Copyright © 2021 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
随着IT基础架构的快速整合导致的数据相对集中、企业雇员全球化移动办公逐渐成为潮流,越来越多的企业应用系统交付需要通过广域网进行传输访问。广域网分支和总部数据中心之间良好的通信环境以及用户体验,不仅可以有效提升办事处的工作效率,也可以在广域网分支上为客户多元化服务提供保障。
目前,广域网承载的业务类型及业务特点如表1所示。
表1 广域网业务类型及业务特点
业务类型 |
业务特点 |
企业生产应用业务 |
支撑企业分支正常运转的核心应用,如企业集团OA办公系统、企业的财务系统、订单管理系统、ERP企业资源系统、CRM客户关系管理系统等,其数据报文传输以小包居多,且一个应用往往需要分支客户端和总部服务器之间进行多次的交互,实现诸如应用数据库的查询,数据输入提交等行为。网络的时延对于这种类型的应用体验有最直接的影响 |
大文件的数据传输应用 |
数据传输以单方向为主,大多数情况下都是从企业总部数据中心发送到远程分支,且链路中传输的内容以大数据包为主,单次传输容量达到数十兆甚至数G。在这种情况下,广域网的链路带宽将直接影响文件的传输结果,另外大容量、长时间以及多频次的数据下载将严重影响广域网的带宽利用 |
以语音、视频、QQ、企业微信等即时消息为主的统一通信类业务 |
常见的业务种类包括VoIP会议电话、视频会议、QQ/MSN等即时聊天工具、网络会议等。此类数据传输以双向交互为主,报文的长度不确定,大包小包混合存在,对于网络带宽和时延RTT都有较高的要求 |
Internet类业务应用 |
这种类型的业务优先级相对较低,即使带宽不足或者链路时延较大也是可以接受的。对于该类型业务最重要的防范大量工作无关业务对于带宽的滥用 |
对于以上各类广域网业务,存在应用延时大导致用户体验差,带宽利用率不足导致部署及维护成本高,以及关键业务带宽质量无法保证的问题,因此广域网优化技术随之产生。
WAAS(Wide Area Application Services,广域网应用服务)是一种能够对广域网链路流量提供优化的技术。支持WAAS技术的设备可以通过配置优化动作,改善广域网链路高延迟、低带宽的缺点。
WAAS包括TCP优化和UDP优化。
TCP优化可以加速文件传输,降低网络延迟,降低丢包率,提升基于TCP的应用在广域网上的传输性能。
TCP优化支持以下几种优化技术:
· TFO(Transport Flow Optimization,传输层流优化)
· DRE(Data Redundancy Elimination,数据冗余消除)
· LZ(Lempel-Ziv compression,LZ压缩)
· 包复制
UDP优化可以降低丢包率,减少网络带宽的使用。
UDP优化支持以下几种优化技术:
· FEC(Forward Error Correction,前向冗余纠错)
· LZ(Lempel-Ziv compression,LZ压缩)
· 包复制(仅应用层协议为RTP时支持)
如图1所示,WAAS优化涉及两个方向的流量:从LAN到WAN的流量,以及从WAN到LAN的流量。以TCP优化为例,整体优化流程如下:
(1) 在TCP握手建立连接的过程中,Router A与Router B协商出两者的TFO优化能力交集,并使用双方都支持的优化能力对数据流进行TFO优化处理。
(2) 对于LAN-to-WAN方向的流量,设备对报文进行压缩处理,将压缩后的报文发送给WAN网络。目前支持的压缩方式有DRE和LZ两种方式。
(3) 对于WAN-to-LAN方向的流量,设备对报文进行解压缩处理,将解压缩后的报文发送给LAN网络。
图1 WAAS应用场景示意图
TFO是指传输层流优化技术。在不改变TCP流量的源、目的IP地址和端口号的情况下,在广域网链路两端分别对TCP连接进行透明代理,并对广域网链路上的TCP流量进行优化。
TFO优化方式包括:
· 慢启动优化
· 扩大接收缓冲区
· 拥塞算法优化
· 选择性确认
传统TCP慢启动时,拥塞窗口初始值为1个TCP分段,每经过一个传输轮次,拥塞窗口就加倍,最后拥塞窗口达到一个合适的值。在广域网环境下,传输时延较大,导致拥塞窗口达到一个合适的值需要经过较长的时间。慢启动优化通过扩大初始拥塞窗口大小的方式来缩短慢启动过程。
传统TCP的接收缓冲区最大为64K,即发送方在发送完64K的报文后,需接收到对端的确认报文后才能继续发送数据,即使广域网链路带宽还有空闲,也无法再发送数据。TFO可以把TCP接收缓冲区最大增加到16384K,提高TCP的传输性能。
TCP的拥塞控制算法主要依赖于拥塞窗口,窗口的大小代表在未收到确认报文的情况下能够发送出去的最大数据报文段。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。窗口越大,数据发送的速度越快,则越有可能出现网络拥塞;相反窗口越小,数据发送的速度越慢,则导致数据发送效率低下。TFO拥塞控制算法优化就是要在发送速度与网络拥塞状况这两者之间权衡,选取最合适的拥塞窗口大小,使得网络吞吐量最大化且不产生拥塞。
传统TCP在数据的传输过程中采用累计确认机制,发送方需等待一个来回时间根据接收方的确认报文确认丢失的数据,并且可能重传一些已经被接收方正确接收的数据。在多个不连续分段丢失的情况下,这种机制降低了TCP传输的总吞吐量。
SACK(Selective Acknowledgment,选择性确认)允许接收方通知发送方所有正确接收的数据,因此发送方只需要重传丢失的数据。例如,在多个不连续分段丢失的情况下,接收方对未正确接收的不连续数据分别确认,使发送方只重传丢失的数据,实现数据包的选择性重传。
DRE是一种消除冗余数据技术,通过使用双向数据库保存先前检测到的TCP流量,以耗用极少带宽的索引来替代重复数据块,从而减少广域网链路传输的数据量,提高数据传输速度。
在压缩机制中,数据块是WAAS划分出的互不重叠的待发送压缩数据单元,用于检测待发送的内容是否重复。针对重复的数据块,WAAS采用字典索引将其取代之后进行发送。
DRE的基本原理如下:
(1) 发送端发送数据块前首先查找DRE字典,如果查找到该数据块的字典表项,则认为之前发送过该数据块,将其称为重复数据块。
(2) 发送端将重复数据块替换为字典索引在广域网链路上传输,此过程称为DRE压缩。
(3) 接收端通过识别字典索引,将其还原成重复数据块,此过程称为DRE解压缩。
图2 DRE压缩原理图
如图2所示,以Host从Server下载文件为例,采用DRE优化的数据传输过程如下:
(1) Router B的TCP透明代理模块接收并缓存原始的TCP数据块后,将其发送给DRE模块。DRE模块采用滑动块检测技术对数据进行分块和检测,先将待发送数据划分为互不重叠的数据块,如data A和data B,然后检测它们是否为重复数据块。
¡ 如果是重复数据块,如data A,则使用对应的字典索引index A替换该数据块,并根据该数据块生成MD5摘要,然后发送字典索引和MD5摘要信息。
¡ 如果不是重复数据块,如data B,则为该数据块生成对应的字典索引index B,将该字典索引和数据块添加到本地临时字典中,并根据该数据块生成MD5摘要,然后发送数据块、对应的字典索引和MD5摘要信息。
(2) Router B将压缩后的数据发送至Router A。
(3) Router A还原数据,根据接收数据获得对应的原始数据。
¡ 如果接收到的数据为字典索引,则根据字典索引进行数据字典查询以获取相对应的重复数据块。
¡ 如果接收到的数据为字典索引和数据块,则根据收到的数据创建新的字典表项,并添加到本地数据字典中。
(4) Router A将解压后的数据发送到LAN侧Host。
(5) Router A发送ACK/SACK信息给Router B确认接收数据。
(6) Router B收到确认信息后,将确认收到的非重复数据添加到本地生效字典,未被接收的数据重传。
Router A与Router B的本地生效字典是同步的。两边设备通过缓存本地生效字典,从而对报文进行压缩和解压缩,较少带宽的消耗。
LZ压缩是一种数据无损压缩技术,它包含一系列的压缩算法。目前,H3C采用的是LZ压缩算法在兼顾压缩率的前提下,更偏重于处理速度,以便LZ压缩能够满足报文转发的性能需求。
LZ与DRE压缩的区别在于,LZ不需要在压缩和解压缩双方同步保存数据字典,而是通过自建字典方法来进行压缩替换,其压缩字典存在于压缩结果中。例如,原始数据data1在压缩成sequence1的过程中,不需要查找本地字典,而是将原始数据划分为不同的子序列,碰到重复的子序列如bcde,则使用序列偏移和匹配长度[5,4]代替,从而达到压缩的目的。
LZ的基本压缩原理为,将历史数据中出现过的字符串序列用一种特殊的格式或者特殊的小序列表示。因为特殊格式或者特殊小序列通常都是比原本的字符串序列更小,所以LZ能起到压缩的效果。
图3 LZ压缩原理示意图
如图3所示,以Host从Server下载文件为例,采用LZ优化,数据传输过程如下:
(1) Router B接收并缓存原始数据报文后,对其进行LZ压缩。例如data1的原始数据为abcde_bcdefgh_abcdemdk,压缩成sequence1后的数据为[token]abcde_[5,4]fgh_[14,5]mdk,其中包括:
¡ token:1个字节,为每个序列的开头标记。该标记分为两个4位的字段:匹配长度字段表示匹配序列的字符个数,字面序列长度字段表示字面序列的字符个数。
¡ 字面序列长度:0~N个字节,表示字面序列的字符个数,分为两种情况存储。如果字符个数值小于等于15,则只需要将数值存入token的高4位即可;如果取值比15大,则将15存入token的高4位,取值与15的差值存入token后面的字节。
¡ 字面序列:表示被认为没有在以前的历史数据中出现过的序列及其子序列,它们以原始形式保存,解压的时候它们会被完整的拷贝过去。
¡ 匹配序列:表示以前出现过的序列,它使用一个offset和匹配长度来表示。
¡ offset:2个字节,表示待解压的匹配序列起始字符到已出现字面序列起始字符相差的字符个数。
¡ 匹配长度:0~N个字节,表示匹配序列的字符个数,与字面序列长度类似,它也分为两部分存储。如果字符个数值小于等于15,则只需要将数值存入token的低4位即可;如果取值比15更大,则将15存入token的低4位,取值与15的差值存入offset后面的字节。
(2) Router B将压缩之后的sequence报文发送给接收端Router A。
(3) Router A收到压缩后的报文,根据LZ算法进行解压缩得到原始数据,将原始数据发送给LAN侧的Host。
采用FEC对网络流量进行优化时,在相互通信的WAAS设备上,发送端会根据FEC的配置对原始数据包进行编码且生成冗余包。冗余包不是简单的复制原始数据包,冗余包头中有该分组中原始数据包的个数、冗余包的个数以及序号等信息。接收端对网络流量进行FEC解码并根据未丢失的数据包和冗余包恢复丢失的数据包。
平均抗丢包率是指抵抗网络丢包的能力,例如平均抗丢包率5%表示一个数据流在网络传输过程中丢失5%也不会影响其正常通信。它决定了发送端对一组原始数据包进行FEC编码时生成冗余包的个数:平均抗丢包率越小,生成的冗余包个数越少,占用带宽越小;平均抗丢包率越大,生成的冗余包个数越多,占用带宽越大。平均抗丢包率由管理员根据实际丢包率的情况进行配置,一般情况下,配置的平均抗丢包率要比实际丢包率大。
编码块包数是指FEC编码时一组编码块对应的原始数据包个数。FEC优化时,当设备缓存的原始数据包个数达到编码块包数之后,WAAS设备开始生成冗余包,并将原始数据包和生成的冗余包发送出去。
采用RTP(Real-time Transport Protocol,实时传输协议)协议进行音频、视频实时互动时,虽然延时小,但是经常有包乱序、包丢失和包重复的问题出现,无法对所传数据提供可靠的保障。
FEC是一种前向冗余纠错技术,其基本原理是:
(1) 发送端对待传输的原始数据包,根据配置的编码块包数和平均抗丢包率生成冗余包,然后将冗余包追加在原始数据包后面发送给接收端。冗余包不是简单的复制原始数据包,冗余包头信息中有该分组中原始数据包和冗余包的个数以及序号等信息。
(2) 接收端收到的数据包后,首先检查是否有丢包,如果有丢包,则根据冗余包信息解码,还原出原始数据包,再将原始数据包发送给目的端。
图4 FEC压缩原理示意图
如图4所示,FEC对报文的处理流程如下:
(1) 音频、视频数据包识别
a. 呼叫报文处理:Router A接收到音频、视频呼叫报文后,为报文生成一个会话并设置ALG(Application Layer Gateway,应用层网关)业务标记用于识别数据报文。
b. 数据报文处理:Router A接收到数据报文后,进行RTP类WAAS策略匹配。如果匹配到策略,则创建FEC的快速转发表项并设置快速转发业务标记;如果没有匹配到策略,则正常转发。
(2) FEC编码过程
a. 数据缓存:Router A将RTP原始数据包进行缓存。
b. FEC编码处理:当Router A缓存的原始数据包达到编码块包数或者编码缓存时间达到超时时间时,设备将缓存的序列号为1、2、3、4的原始数据包分成一组,对其进行进行FEC编码并生成一个或多个冗余包R,然后分别发送缓存的原始数据包与生成的冗余包。
(3) FEC解码过程
a. 数据缓存:Router B将接收到的原始数据包1、3、4和冗余包R进行缓存。
b. FEC解码处理:在解码超时时间内,当缓存的原始数据包和冗余包之和大于等于该分组中原始数据包的个数,设备会将缓存的数据包1、3、4、R进行FEC解码处理,并恢复出丢失的数据包2,然后将1、2、3、4发送出去,同时丢弃冗余包R。如果缓存时间达到解码超时时间,设备将不对已缓存的数据包进行FEC解码,而是直接发送原始数据包,丢弃冗余包。
FEC根据平均抗丢包率的配置方式分为A-FEC(Adaptive-FEC,自适应的FEC)和D-FEC(Determined-FEC,固定的FEC)两种类型。
· A-FEC根据实时丢包率调节平均抗丢包率:发送端在冗余包中加入设备地址信息通告给接收端。接收端对实时数据进行丢包率采样,并周期性的反馈给发送端,从而使发送端调整冗余包个数的生成,减少广域网链路传输的数据量,提高数据传输速度。
· D-FEC使用配置的固定平均抗丢包率。在网络波动较大的环境中,D-FEC更具有优势。
广域网优化场景中,对于可靠性要求很高并且流量较小的业务(例如付款、紧急呼叫等),如果在传输过程中出现丢包和时延较大情况,会对业务产生很大影响,甚至导致业务中断。
目前,大部分局域网普遍采用多条WAN链路接入广域网,并在多条WAN链路之间进行负载分担。
包复制是一种冗余纠错技术,它利用多链路优势,将同一份报文从两条链路发送出去。只要两条链路不同时丢弃报文,则接收端可通过将两条链路上接收到的同一份报文信息进行互相补充,整合成完整的报文流,从而能够有效降低甚至解决因单条链路丢包导致的业务中断等问题。
目前,包复制技术仅在VXLAN组网环境下支持。
包复制基本原理如下:
(1) 发送端对于匹配了包复制策略条件的报文,首先查询其WAN出接口是否存在等价链路。
¡ 如果存在等价链路,则将报文复制到第一条查询到的等价链路上,并从该WAN出接口及查询到的等价链路同时转发报文。
¡ 如果不存在等价链路,则无需复制,直接从路由出接口转发报文。
(2) 接收端接收到报文后,通过报文特征整合两条链路收到的报文,即对接收到的报文进行去冗余与保序处理,综合两个链路的报文还原出原始业务流,再将原始业务流发送给目的终端。
如图5所示,包复制对报文的处理流程包括如下4个步骤:
(1) 报文识别
(2) 报文复制
(3) 报文去冗余
(4) 报文保序
图5 包复制原理示意图
· TCP报文处理:Device A对接收到的报文进行分析,如果以下条件均满足,则进行包复制转发;如果以下条件中有任一条件不满足,则正常转发。
¡ 报文类型为TCP。
¡ 能匹配到TCP优化策略。
¡ WAN出接口存在等价转发链路。
· RTP报文处理:Device A对接收到的报文进行分析,如果为UDP报文,则判断是否为信令报文。
¡ 如果是信令报文,则正常转发。
¡ 如果不是信令报文,且以下条件均满足,则进行包复制转发;如果不是信令报文,且以下条件中有任一条件不满足,则正常转发。
- 能成功获取报文对应的会话信息。
- 报文类型为RTP。
- 能匹配到TCP优化策略。
- WAN出接口存在等价转发链路。
如图5所示,在Device A与Device B之间有两条等价链路,Device A->WAN 1->Device B和Device A->WAN 2->Device B。Device A收到原始报文后,识别报文,并对满足条件的原始报文进行复制。Device A根据等价路由的选路规则,选出原始报文的出接口,发送原始报文;然后选择路由表中第一个被查询到的其它等价链路(除原始报文出接口链路的链路)发送复制报文。
出现以下情况时,设备不会进行包复制:
· 设备内存不足,已经达到内存告警门限。
· 报文长度大于传输链路的MTU。
Device B从两条链路接收报文后,需要对收到的重复报文进行去冗余处理,确保原始报文和复制报文仅保留一个。报文去冗余流程如下:
Device B收到两条链路发来的报文,根据报文信息在冗余链中进行查找。
· 如果冗余链中不存在相同的报文信息记录,则认为该报文为首次收到的报文,将该报文信息加入冗余链,并继续处理该报文。
· 如果冗余链中存在相同的报文信息记录,则判断该报文是重传报文还是冗余。对于重传报文,继续处理;对于冗余报文,则从冗余链中删除对应的报文信息记录,同时将该冗余报文丢弃。
冗余链是一个用于存放报文信息的缓冲区,如果设备收到的报文的信息和冗余链中保存的报文信息相同,则表示收到的为重复报文,需要进行去冗余处理。
报文经过两条链路到达Device B,因为两条链路的时延不同,报文到达的先后顺序很可能和报文本身的序号大小不一致,所以,Device B对报文进行去冗余处理之后,还需要对报文进行保序处理,以尽量保证报文按照序号从小到大的顺序发送出去。
· 如果报文为分片报文,则对到达的各分片报文进行缓存,待整个报文的所有分片到达后再进行发送。如果在分片报文老化超时时间到达时整个报文还未完全到达,则发送已缓存的分片报文。
· 如果报文为非分片报文,则需要判断当前报文的序号是否为本地接口期望收到的序号。
¡ 如果该报文序号为期望序号或者比期望序号小,则发送本报文并更新期望序号,然后遍历保序缓存链。如果保序缓存链中存在期望序号的报文,则发送该报文并再次更新期望序号。以此类推,直到保序缓存链中缓存的期望序号报文全部发送完毕。
¡ 如果该报文序号比期望序号大,则将本报文加入保序缓存链中。
· 不管接口是否收到报文,接口均会监控保序缓存链,发送保序缓存链中超时老化的报文,并更新期望序号。
保序缓存链是一个存放报文的缓冲区,用于尽量保证按照报文序号大小顺序将报文发送给下一跳。如果收到的报文的序号大于期望收到的报文的序号,即该报文提前到达,接口会将该报文暂时存入保序缓存链,以便等待期望的报文发送后,再发送这些报文。
为了避免长时间等待期望报文导致通信恶化,保序缓存链支持超时老化机制,即不管期望报文是否到达,保序缓存链中的每个报文在固定的老化时间之后会被发送。
为了应对报文突发、保序缓存链需要缓存多个报文占用过多内存的情况,保序缓存链会有容量限制。当保序缓存链中的报文达到容量最大值时,即便最老的报文未超时老化,也被发送,以便新报文可以进入保序缓存链。
例如,接口当前期望收到序号为3的报文,但实际收到序号为4的报文,则序号为4的报文会被放入保序缓存链,以便等待序号为3的报文。
· 如果下一个到达的报文序号为3,则发送序号为3的报文,更新期望序号为4。然后遍历保序缓存链,发送序号为4的报文,更新期望序号为5。
· 如果下一个到达的报文序号为5,则将序号为5的报文放入保序缓存链,期望序号仍为3。如果再下一个到达的报文序号为3,则发送序号为3的报文,更新期望序号为4。然后遍历保序缓存链,发送序号为4的报文,更新期望序号为5。之后,继续遍历保序缓存链,发送序号为5的报文,更新期望序号为6。这样,就能将序号为3、4、5的报文顺序发送。
· 如果缓存链中序号为4的报文老化超时时间到达,但期望的序号为3报文未收到,则发送序号为4的报文,更新期望序号为5。
如图6所示,数据中心提供视频和游戏服务,用户通过广域网访问数据中心,访问量和数据量均很大。在广域网接入设备Router A和Router B上部署TCP优化技术TFO+DRE,可有效降低广域网的丢包率,改善广域网链路高延迟、低带宽的缺点。
图6 TFO+DRE优化组网图
企业总部数据中心和远程分支的之间的数据传输,大多数情况下都是从企业总部数据中心到远程分支单方向的、大数据包为主,单次传输容量达到数十兆甚至数G。例如,远程分支经常向企业总部数据中心查阅文件、下载软件、访问公司网站/数据库等。在这种情况下,广域网的链路带宽将直接影响用户的传输结果,大容量、长时间以及多频次的数据下载都将严重影响广域网的带宽利用。WAAS设备可以通过配置TCP/UDP单向LZ压缩功能,节约带宽。
如图7所示,在发送端WAAS设备上开启TCP/UDP单向LZ压缩功能后,将减少企业总部数据中心与远程分支的数据同步的所使用的带宽。
图7 TCP/UDP单向LZ压缩组网图
语音、视频等数据流对于网络带宽和时延RTT都有较高的要求。
如图8所示,在WAAS设备上开启FEC优化功能可以保障关键的视频应用在20%丢包的情况下无卡顿、无花屏,能够为音视频会议的正常召开提供有力保障。
图8 FEC优化组网图
如图9所示,某企业的分支机构通过双WAN链路跨VXLAN网络和总部连接,对于可靠性要求很高且流量较小的业务报文(比如付款、紧急呼叫等),现利用双WAN链路组网特点,通过部署WAAS的包复制功能,使得业务报文在WAN链路传输时,能有效降低甚至解决单条链路中的丢包、乱序问题,保证业务的高可靠性。
图9 包复制优化组网图
· RFC 1323:TCP Extensions for High Performance
· RFC 2582:The NewReno Modification to TCP's Fast Recovery Algorithm
· RFC 2733:An RTP Payload Format for Generic Forward Error Correction