广域网加速技术

摘要:
随着企业数字化转型快速发展,越来越多企业将IT系统、应用和服务部署到云上,以实现更高效、灵活的管理和使用。这就对广域网提出了更高的要求,而广域网线路往往存在带宽费用昂贵、服务质量不可靠等问题。为了改善用户体验,提高应用运行质量,降低广域网线路费用,广域网优化技术随之产生。

1 节省广域网带宽

很多对信息安全和服务质量要求严格的用户,分支机构和总部以及不同总部之间,租用的是运营商的高质量专线(例如:MSTP),线路费用很高,广域网带宽资源不足。这种用户希望在保障和提高业务服务质量的前提下尽量节省广域网带宽。缓存和压缩技术是解决这种诉求的好方法。网站缓存和数据消冗技术可以很好的起到节省广域网线路带宽资源的作用。

1.1 网站缓存(Web cache)

Web cache是将用户通过HTTP、HTTPS协议访问过的Web页面上某些指定文件类型(如apk、doc、微软补丁等)的内容,缓存在设备本地,在缓存文件老化时间内,用户访问相同内容时,以URL为索引直接从本地响应的一种广域网加速技术。
Web cache的工作流程如下图所示:

  1. 用户通过 HTTP/HTTPS 协议请求指定服务器的Web 页面内容时, Web Cache 将服务器响应的内容缓存在本地文件中。
  2. 后续用户访问该服务器时,Web Cache 获取报文的URL,依据URL 在本地缓存文件中进行查找。
  3. Web Cache 使用查找到的本地缓存文件中的内容直接响应用户。
    在这里插入图片描述

通过部署WebCache,可以有效提高分支用户网页响应速度,极大的提升了用户体验;同时相同文件在广域网链路上只传输1次,极大的降低了广域网带宽的消耗。

1.2 数据消冗

在广域网链路中传输的数据本质上就是类似于“011110001001”这样的“二进制”码流,实际上不同的IT应用传输的数据存在大量重复的码流片段。降低这种重复码流片段传输次数,是一种降低带宽消耗的方法。DRE是一种有效的数据消除冗余技术,在相互通信的网络设备上保存重复数据块与字典索引对应的数据字典。数据发送前首先查找字典,如果查找到该数据块的字典表项,则认为之前发送过该数据块,称为重复数据块。发送端将重复数据块替换为字典索引在广域网链路上传输。接收端通过识别字典索引,将其还原成重复数据块,以减少广域网链路传输的数据量,提高数据传输速度。用字典索引替换重复数据块的过程称为DRE压缩。用重复数据块替换字典索引的过程称为DRE解压缩。

DRE压缩过程

数据分块和替换:DRE压缩前将待发送数据划分为互不重叠的数据块,针对数据块来检测是否为重复数据块。如果为重复数据块,用字典索引替换该数据块,并根据该数据块生成摘要,把字典索引和摘要信息发送至接收端。如果不是重复数据块,为该数据块生成对应的字典索引,将该字典索引和数据块添加到本地数据字典中,并根据该数据块生成MD5摘要,把数据块、对应的字典索引和摘要信息发送至接收端。

DRE解压缩过程

  • 数据还原:设备检测接收到的数据,根据接收数据获得对应的原始数据。如果接收到的数据为字典索引,则根据字典索引进行数据字典查询以获取相对应的重复数据块。如果接收到的数据为字典索引和重复数据块,则根据收到的数据创建新的字典表项,并添加到本地数据字典中。
  • 数据校验:所有数据都还原后,计算解压数据的摘要,并且和报文中携带的摘要信息进行对比。如果相同,则代表解压缩成功;如果不同,则代表解压缩失败,等待对端重新发送数据。

2 提升弱网环境下应用服务质量

在企业IT应用向云平台迁移的过程中,很多应用从局域网内部使用变为跨广域网使用,广域网链路的延时、抖动和丢包造成应用体验大幅下降。本质上是应用无法使用广域网传输的特点。针对广域网丢包的问题,FEC技术可以通过冗余包的方式,保障音、视频应用的流畅性。针对广域网丢包、延时和抖动问题,多路径包复制技术,可以通过“多发选收”的方法提升关键应用的可靠性和体验。

2.1 FEC技术

FEC( Forward Error Correction,前向纠错)是一种广域网差错控制技术,用于解决实时音、视频的网络丢包问题,保障重要音、视频流穿越广域网后仍能流畅播放,增强RTP 流在广域网传输的可靠性。FEC 的基本原理是:发送端将多个原始报文,通过RS(Reed Solomon)算法编码计算并增加冗余包后,以编码块为单位发送;接收端根据收到的原始报文和冗余包恢复出丢失的报文,还原原始数据。
FEC 技术中的重点和难点是生成适量的冗余包。生成的冗余包数量过多,会浪费网络带宽;生成的冗余包数量过少,则无法恢复出丢失的报文。冗余包的数量受编码块包数、编码算法和平均抗丢包率的影响。其中,编码块包数指编码块中原始报文的个数,由用户配置决定;编码算法出厂时已固定,不可配置;平均抗丢包率用于衡量FEC 抗丢包的能力,通常会设置成大于链路平均丢包率的值。
根据平均抗丢包率的配置方式不同,FEC 分为D-FEC(Determined-FEC,固定的FEC)和A-FEC(Adaptive-FEC,自适应的FEC)两种类型。D-FEC 使用固定的平均抗丢包率,适用于链路丢包率比较稳定的场景。A-FEC 根据实时链路丢包率动态调节平均抗丢包率,实现机制比D-FEC 复杂。可在保证通信质量和可靠性的前提下,尽量减小冗余包数量,提高传输效率。在广域网环境下,A-FEC应用更广泛。
A-FEC处理流程如下图所示:
在这里插入图片描述

(1) 发送端识别业务报文,进行 FEC 编码处理后发送。报文识别:发送端根据管理员配置的策略匹配需要重点保障的音、视频报文。对于匹配成功的报文,则进入FEC 处理环节;对于匹配失败的报文,则正常转发。.缓存、编码:积攒多个原始报文(例如报文1、2、3、4),对这些报文进行编码,生成一个或多个冗余包R。冗余包报文头中携带原始报文和冗余包的个数、原始报文和冗余包的起始序号等信息。.组合发送:按顺序发送原始报文1、2、3、4 和冗余包R。
(2) 在广域网中传输报文,编码块中的原始报文和冗余包都可能出现丢包。
(3) 接收端识别业务报文,进行 FEC 解码后发送给目的端。.报文识别:接收端根据和发送端相同的策略匹配音、视频报文。对于匹配成功的报文,则进入FEC 解码环节;对于匹配失败的报文,则正常转发。缓存、解码:接收端将原始报文缓存,收到冗余包时会根据冗余包中携带的信息尝试解码。如果缓存的同一编码块中的原始报文与冗余包个数之和大于等于冗余包中携带的原始报文的个数,则可恢复丢失的数据,解码成功。如下图所示,接收端根据原始报文1、2、4 和冗余包R可恢复出丢失的原始报文3。如果解码失败,则继续等待下一个冗余包来解码,或者等待解码超时,再进入发送环节。.发送:丢弃冗余包,发送原始报文。
(4) 接收端在执行步骤(3)的同时会计算每个编码块的丢包率,按周期对编码块的丢包率采样,并将采样的丢包率反馈给发送端。
(5) 发送端根据收到的丢包率计算平均值,动态调整平均抗丢包率,并从下一次编码开始,使用调整后的平均抗丢包率进行FEC编码。

2.2 多路径包复制技术

多路径包复制是一种冗余纠错技术。对于可靠性要求很高并且流量较小的业务(例如工业自动控制、付款、紧急呼叫、重要音视频通话等),多路径包复制技术利用大部分局域网普遍采用多条广域网链路的多链路优势,在发送端将原始业务报文复制后从两条链路发送出去,在接收端将原始业务报文和复制报文互相补充,整合成原始报文流,从而有效降低甚至解决因单条链路丢包、延时、抖动等原因导致的业务质量下降甚至中断的问题。
多路径包复制工作过程:
在这里插入图片描述

发送端收到业务报文后,对报文进行识别。只有类型符合要求、匹配TCP/UDP 流分类规则,且存在逐流负载分担等价路由的报文,设备才会对其进行包复制处理。发送端将满足条件的多个原始业务报文积攒成一个数据块(本文假设4 个报文作为一个数据块),进行复制并转发。
接收端会从两条链路接收到两份报文,需要对收到的重复报文进行去冗余处理,以便确保发送给目的端的报文中相同序号的原始业务报文和复制报文中仅保留一个。因为查表转发路径和复制包转发路径的速率不同、时延不同,且可能丢包,现假设接收端先后收到原始业务报文1、3、4 和复制报文2 和3,报文去冗余流程大致如下:
(1) 报文去冗余处理模块第一次收到原始业务报文 1、3、4 和复制报文2,将这些报文的信息记入冗余链,允许报文通过。
(2) 收到复制报文 3,因为冗余链中已经有报文3 的信息记录,系统判断复制报文3 是重复报文,于是,丢弃复制报文3。
(3) 将去冗余后得到的报文 1、3、4、2 依次发送给“报文保序”环节处理。
因为两条链路的时延不同,报文到达接收端的先后顺序很可能和报文本身的序号顺序不一致,所以,接收端对报文进行去冗余处理之后,还需要进行保序处理,以尽量保证报文按照序号从小到大的顺序发送出去。假设业务报文去冗余后顺序依次为1、3、4、2,则报文保序流程:
(1) 报文保序处理模块收到报文 1 后,直接发送,并将下次期望收到的报文序号(以下简称为期望序号)设置为当前收到的报文序号加1,即期望序号为2。
(2) 收到报文 3 和4,报文序号均大于期望序号2,则将报文3 和4 放入保序缓存,期望序号仍为2。
(3) 收到复制报文 2,报文序号等于期望序号2,则发送复制报文2,更新期望序号为3,从保序缓存中取出并发送序号为3 的报文。同时更新期望序号为4,从保序缓存中取出并发送序号为4的报文,更新期望序号为5。以此类推。
(4) 将保序后得到的报文 1、2、3、4 依次发送给目的端。

3 结束语

本文介绍的几种广域网优化技术,在不同场景下为不同应用提供了提升跨广域网应用服务质量的方法。在实际应用中,需要了解不同技术的实现原理,针对不同网络条件的差异,以及不同应用对服务质量的诉求,合理选择有一种或多种技术部署使用,提升客户应用体验。

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

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

相关文章

第十四章——C++中的代码重用

C的一个主要目标是促进代码重用。公有继承是实现这种目标的机制之一,但并不是唯一的机制。 包含对象成员的类 valarray类简介 valarray类是由头文件valarray支持的。这个类用于处理数值(或具有类似特性的类),它支持诸如将数组…

Python基础语法之学习表达式进行符串格式化

Python基础语法之学习表达式进行符串格式化 一、代码二、效果 一、代码 print("11等于%d" % (1 1)) print(f"2/1等于{2 / 1}") print("字符串类型是%s" % type("字符串"))二、效果 坚持追求自己的梦想,即使道路漫长曲折&…

C语言---操作符的详解(下)

目录 1. 结构成员访问操作符 1.1 结构体 1.2结构体成员访问操作符 1.2.1 直接访问 1.2.2 间接访问 2. 操作符的属性 2.1 优先级 2.2 结合性 3. 表达式求值 3.1 整型提升(类型小于int) 3.2 算术转换(类型大于int) 1. 结构…

2023/11/28JAVAweb学习

查找哪个进程占用了该端口号 跳过某一个阶段

比特币上的有状态多重签名

无需链下通信 介绍 随着区块链和加密货币空间的发展,越来越需要增强安全措施来保护数字资产。 应对这一挑战的突出解决方案之一是多重签名(多重签名)钱包。 这些钱包在执行交易之前需要多方签名,从而提供额外的安全层来防止未经授…

Vue diff 算法探秘:如何实现快速渲染

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

微软Azure AI新增Phi、Jais等,40种新大模型

微软在官方宣布在Azure AI云开发平台中,新增了Falcon、Phi、Jais、Code Llama、CLIP、Whisper V3、Stable Diffusion等40个新模型,涵盖文本、图像、代码、语音等内容生成。 开发人员只需要通过API或SDK就能快速将模型集成在应用程序中,同时支…

docker (简介、dcoker详细安装步骤、容器常用命令)一站打包- day01

一、 为什么出现 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应…

InstructDiffusion-多种视觉任务统一框架

论文:《InstructDiffusion: A Generalist Modeling Interface for Vision Tasks》 github:https://github.com/cientgu/InstructDiffusion InstructPix2Pix:参考 文章目录 摘要引言算法视觉任务统一引导训练集重构统一框架 实验训练集关键点检测分割图像…

推荐6款交互设计软件,助你事半功倍!

交互软件可以帮助设计师从“可用性”和“用户体验”的角度优化他们的作品。如果设计师想创建一个令人满意的交互设计作品,一个方便的交互设计软件是必不可少的。当然,交互软件只是我们实现目标的一种手段。根据设计师的个人喜好和方便,选择易…

TS版LangChain实战:基于文档的增强检索(RAG) | 京东云技术团队

LangChain LangChain是一个以 LLM (大语言模型)模型为核心的开发框架,LangChain的主要特性: 可以连接多种数据源,比如网页链接、本地PDF文件、向量数据库等允许语言模型与其环境交互封装了Model I/O(输入…

Wangeditor工具栏配置

包下载 pnpm add wangeditor/editor pnpm add wangeditor/editor-for-vue import wangeditor/editor/dist/css/style.css // 引入 css import { Editor, Toolbar } from wangeditor/editor-for-vue import { DomEditor } from wangeditor/editor <Toolbar style"border…