广域网加速技术
摘要:
随着企业数字化转型快速发展,越来越多企业将IT系统、应用和服务部署到云上,以实现更高效、灵活的管理和使用。这就对广域网提出了更高的要求,而广域网线路往往存在带宽费用昂贵、服务质量不可靠等问题。为了改善用户体验,提高应用运行质量,降低广域网线路费用,广域网优化技术随之产生。
1 节省广域网带宽
很多对信息安全和服务质量要求严格的用户,分支机构和总部以及不同总部之间,租用的是运营商的高质量专线(例如:MSTP),线路费用很高,广域网带宽资源不足。这种用户希望在保障和提高业务服务质量的前提下尽量节省广域网带宽。缓存和压缩技术是解决这种诉求的好方法。网站缓存和数据消冗技术可以很好的起到节省广域网线路带宽资源的作用。
1.1 网站缓存(Web cache)
Web cache是将用户通过HTTP、HTTPS协议访问过的Web页面上某些指定文件类型(如apk、doc、微软补丁等)的内容,缓存在设备本地,在缓存文件老化时间内,用户访问相同内容时,以URL为索引直接从本地响应的一种广域网加速技术。
Web cache的工作流程如下图所示:
- 用户通过 HTTP/HTTPS 协议请求指定服务器的Web 页面内容时, Web Cache 将服务器响应的内容缓存在本地文件中。
- 后续用户访问该服务器时,Web Cache 获取报文的URL,依据URL 在本地缓存文件中进行查找。
- 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 结束语
本文介绍的几种广域网优化技术,在不同场景下为不同应用提供了提升跨广域网应用服务质量的方法。在实际应用中,需要了解不同技术的实现原理,针对不同网络条件的差异,以及不同应用对服务质量的诉求,合理选择有一种或多种技术部署使用,提升客户应用体验。
相关文章:

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

构建智能医患沟通:陪诊小程序开发实战
在医疗科技的浪潮中,陪诊小程序的开发成为改善医患沟通的创新途径之一。本文将介绍如何使用Node.js和Express框架构建一个简单而强大的陪诊小程序,实现患者导诊和医生咨询功能。 1. 安装Node.js和Express 首先确保已安装Node.js,然后使用以…...
插入区间[中等]
优质博文:IT-BLOG-CN 一、题目 给你一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1&#x…...

Android Bitmap 模糊效果实现 (二)
文章目录 Android Bitmap 模糊效果实现 (二)使用 Vukan 模糊使用 RenderEffect 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比 Android Bitmap 模糊效果实现 (二) 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134656140 最新更新地址 https:/…...

初识Java 18-4 泛型
目录 泛型存在的问题 在泛型中使用基本类型 实现参数化接口 类型转换和警告 无法实现的重载 基类会劫持接口 自限定类型 奇异递归类型 自限定 自限定提供的参数协变性 本笔记参考自: 《On Java 中文版》 泛型存在的问题 接下来讨论的,是在泛型…...

家政保洁预约小程序app开发特点有哪些?
家政预约服务小程序APP开发的特点介绍; 1. 低成本:用户通过手机APP下单,省去了中介费用,降低了雇主的雇佣成本。 2. 高收入:家政服务人员通过手机APP接单,省去了中介费用,从而提高了服务人员的…...

【JavaEE初阶】 HTTP响应报文
文章目录 🌲序言🎍200 OK🍀404 Not Found🎄403 Forbidden🌴405 Method Not Allowed🎋500 Internal Server Error🌳504 Gateway Timeout🌲302 Move temporarily🎍301 Move…...
PTA: 螺旋矩阵
题目 所谓“螺旋矩阵”,是指对任意给定的N,将1到NN的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入NN的方阵里。本题要求构造这样的螺旋方阵。 格式 输入格式: 输入在一行中给出一个正整数N(<10)。 输出…...

SparkSQL远程调试(IDEA)
启动Intellij IDEA,打开spark源码项目,配置远程调试 Run->Edit Configuration 启动远程spark-sql spark-sql --verbose --driver-java-options "-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendy,address5005"运行远程调试…...
Vue2 Vue3 响应式实现原理
Vue2 和 Vue3 的响应式实现原理有所不同。 Vue2 响应式实现原理: Vue2 使用 Object.defineProperty() 方法来实现数据劫持,从而实现数据的响应式更新。具体步骤如下: 首先,在初始化阶段,遍历 data 对象的所有属性&a…...

Android Tombstone 与Debuggerd 原理浅谈
一、前言 Android系统类问题主要有stability、performance、power、security。tombstoned是android平台的一个守护进程,它注册成3个socket服务端,客户端封装在crash_dump和debuggerd_client。 crash_dump用于跟踪定位C crash, debuggerd_cli…...
Matlab 三维电力线重建
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 之前曾经讨论过关于悬链线方程的曲线拟合点云最小二乘法拟合曲线,在这篇博客中其实拟合的是悬链线的一种近似形式,但对于大多数情况下已经够用了。方程如下所示: z = A ( x 2 + y 2 ) +...

GoLang Filepath.Walk遍历优化
原生标准库在文件量过大时效率和内存均表现不好 1400万文件遍历Filepath.Walk 1400万文件重写直接调用windows api并处理细节 结论 1400万文件遍历时对比 对比条目filepath.walkwindows api并触发黑科技运行时间710秒22秒内存占用480M38M 关键代码 //超级快的文件遍历 fun…...
Java面向对象第7天
精华笔记: 成员内部类:了解,应用率不高 类中套类,外面的称为外部类,里面的称为内部类 内部类只服务于外部类,对外不具备可见性 内部类对象通常在外部类中创建 内部类中可以直接访问外部类的成员(包括私有…...

网络安全如何自学?
1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…...
Flink-时间窗口
在流数据处理应用中,一个很重要、也很常见的操作就是窗口计算。所谓的“窗口”,一 般就是划定的一段时间范围,也就是“时间窗”;对在这范围内的数据进行处理,就是所谓的 窗口计算。所以窗口和时间往往是分不开的。 时…...

软件设计模式原则(三)单一职责原则
单一职责原则(SRP)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原…...

使用Postman创建Mock Server
这篇文章将教会大家如何利用 Postman,通过 Mock 的方式测试我们的 API。 什么是 Mock Mock 是一项特殊的测试技巧,可以在没有依赖项的情况下进行单元测试。通常情况下,Mock 与其他方法的主要区别就是,用于取代代码依赖项的模拟对…...

【古月居《ros入门21讲》学习笔记】15_ROS中的坐标系管理系统
目录 说明: 1. 机器人中的坐标变换 tf功能包能干什么? tf坐标变换如何实现 2. 小海龟跟随实验 安装 ros-melodic-turtle-tf 实验命令 运行效果 说明: 1. 本系列学习笔记基于B站:古月居《ROS入门21讲》课程,且使…...

初始linux:文件操作
目录 提示:以下指令均在Xshell 7 中进行 linux的理念 一、echo echo "字符串" 二、输出重定向 > > [文件] echo "字符串" > [文件] echo "字符串" > > [文件] 制作大文件 三、< 输入重定向与ca…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...