当前位置: 首页 > news >正文

广域网加速技术

摘要:
随着企业数字化转型快速发展,越来越多企业将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 结束语

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

相关文章:

广域网加速技术

摘要: 随着企业数字化转型快速发展,越来越多企业将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: 螺旋矩阵

题目 所谓“螺旋矩阵”&#xff0c;是指对任意给定的N&#xff0c;将1到NN的数字从左上角第1个格子开始&#xff0c;按顺时针螺旋方向顺序填入NN的方阵里。本题要求构造这样的螺旋方阵。 格式 输入格式: 输入在一行中给出一个正整数N&#xff08;<10&#xff09;。 输出…...

SparkSQL远程调试(IDEA)

启动Intellij IDEA&#xff0c;打开spark源码项目&#xff0c;配置远程调试 Run->Edit Configuration 启动远程spark-sql spark-sql --verbose --driver-java-options "-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendy,address5005"运行远程调试&#xf…...

Vue2 Vue3 响应式实现原理

Vue2 和 Vue3 的响应式实现原理有所不同。 Vue2 响应式实现原理&#xff1a; Vue2 使用 Object.defineProperty() 方法来实现数据劫持&#xff0c;从而实现数据的响应式更新。具体步骤如下&#xff1a; 首先&#xff0c;在初始化阶段&#xff0c;遍历 data 对象的所有属性&a…...

Android Tombstone 与Debuggerd 原理浅谈

一、前言 Android系统类问题主要有stability、performance、power、security。tombstoned是android平台的一个守护进程&#xff0c;它注册成3个socket服务端&#xff0c;客户端封装在crash_dump和debuggerd_client。 crash_dump用于跟踪定位C crash&#xff0c; 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天

精华笔记&#xff1a; 成员内部类&#xff1a;了解&#xff0c;应用率不高 类中套类&#xff0c;外面的称为外部类&#xff0c;里面的称为内部类 内部类只服务于外部类&#xff0c;对外不具备可见性 内部类对象通常在外部类中创建 内部类中可以直接访问外部类的成员(包括私有…...

网络安全如何自学?

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…...

Flink-时间窗口

在流数据处理应用中&#xff0c;一个很重要、也很常见的操作就是窗口计算。所谓的“窗口”&#xff0c;一 般就是划定的一段时间范围&#xff0c;也就是“时间窗”&#xff1b;对在这范围内的数据进行处理&#xff0c;就是所谓的 窗口计算。所以窗口和时间往往是分不开的。 时…...

软件设计模式原则(三)单一职责原则

单一职责原则&#xff08;SRP&#xff09;又称单一功能原则。它规定一个类应该只有一个发生变化的原因。所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变&#xff0c;那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原…...

使用Postman创建Mock Server

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

【古月居《ros入门21讲》学习笔记】15_ROS中的坐标系管理系统

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

初始linux:文件操作

目录 提示&#xff1a;以下指令均在Xshell 7 中进行 linux的理念 一、echo echo "字符串" 二、输出重定向 > > [文件] echo "字符串" > [文件] echo "字符串" > > [文件] 制作大文件 三、< 输入重定向与ca…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...