基于应用理解的协议栈优化

news2024/11/15 14:06:51

作者:余兵

移动互联网时代,不同的应用追求的产品体验差异性很大。

应用商店和图片等下载类型业务追求速度、越快越好,短视频关注起播、拖拽响应速度和观看过程卡不卡,直播追求画质清晰、高码率和直播过程流畅;而游戏则是追求低延时,网络稳定、不掉线。

如何保障不同类型应用的差异化产品体验是移动互联网时代的一个巨大的难题。

01 传统协议栈技术与不足

 

协议栈是底层通信技术,处在 OSI 模型的第四层,协议栈优化技术旨通过克服协议缺陷和改良协议机制,提升内容分发效率,改善产品体验。

传统的协议栈优化思路是以“快”破万法,追求速度的极致,从速度视角去解所有应用的产品体验问题,这对于下载类似的业务适用,但对于直播、点播和游戏等业务确是不适用的,会出现产品体验不好的现象。

点播和直播关注卡不卡、流畅与否,最核心的技术是保障播放器缓存不空,持续不断的有数据播放,和传输速度快慢并无直接关系;游戏信令关注低延时,对带宽需求量很小,但对丢包和网络抖动及其敏感,对于丢包感知、丢包恢复技术要求极高。

显然,速度的解法,并不能满足移动互联网下所有应用产品体验需求,协议栈优化技术需迭代要升级。其中最重要、最核心的技术是协议栈理解应用,理解应用的传输特征、理解应用关键体验指标、理解关键体验指标背后的性能瓶颈,及其造成性能瓶颈的影响因素个各个影响因素贡献的权重比例。

除了理解应用外,协议栈优化技术还需要扩展与延伸协议栈对应用传输过程的感知能力,感知结果与应用传输特征匹配,再定制差异化的拥塞控制和丢包恢复算法。

02 理解应用的协议栈技术

 

基于应用理解的协议栈,首先要理解不同应用的传输特征、关键体验指标、关键体验指标背后的性能瓶颈,及其造成性能瓶颈的影响因素和个各个影响因素贡献的权重比例;其次是对应用总结、分类,分成不同的业务类别,最后再针对不同的业务分类性的设计不同的算法策略。方案的核心思想是用不同的算法解决不同应用场景的产品体验优化。

应用分类和解法

阿里 CDN 最近四年,一直在协议栈技术智能化道路上探索,基于应用理解的协议栈技术是协议栈智能化的技术基础。针对阿里云 CDN 平台 130T 的业务规模做应用分类,分类规则依据两个维度:应用传输特征(不同的应用在业务特征的差异性会反馈到传输行为上)、应用关键体验指标(关注速度、卡顿率、低延时等不同的体验指标),最终将所有应用分成四类业务:信令业务、下载业务、点播业务、直播业务。

l 信令业务

信令场景的传输特征是交互式、低延时、信息量少,比如游戏对战类、网站访问类、钉钉、微信等 IM 通信工具文字和语音通话类业务。关键的应用体验指标是低延时、网络稳定、不抖动、不闪断,所以信令业务的产品体验优化解法是弱拥塞控制,强丢包恢复。最核心的优化要领总结为“快传传补”,“快传”是指快速的将数据报文发送到网络中,“快补”则是在拥塞检测、丢包恢复技术上及时、实时,只有如此才能达到低延时的应用体验需求。

协议栈技术本质上是一种攻防技术,贪心的拥塞控制是进攻,负责“免疫”的丢包恢复是防御,进攻与防御并存,顺风时进攻,逆风时防御,信令场景优化要领“快传快补”正是如此。协议栈的优化策略必须攻防兼备,设计进攻策略时,同样需要设计辅助的防御策略,一个优秀的拥塞控制算法,必定配套了一个优秀的丢包恢复算法,只有这样才能将协议栈技术演化到极致。

l 下载业务

下载场景特征为数据量大、追求下载速度,需要的带宽量大,期望压着可用带宽跑,充分利用链路可用带宽,典型的应用有应用商店的 APP 下载,大文件下载、高清图片下周、手机操作系统升级包下载等。下载应用关键的体验指标是下载速度、下载耗时,所以下载业务的优化要领是“拥塞控制、细水长流”,持续不断的做好带宽估计,持续不断最大化利用链路探测带宽,才能保障下载类业务的产品体验,短视的突破、取巧难将性能做到极致。

 

l 点播业务

点播场景特征为静态的视频文件流(缓存在 CDN 边缘节点)、不关注下载速度,关注视频播放卡不卡,视频起播和拖拽响应速度,比如行业手淘、快手、抖音、小红书、优酷和蚂蚁支付宝第三 tab 页等平台上提供的短视频点播业务。关键体验度量指标是卡顿率,卡顿是播放器的行为,保障播放器缓存不空,持续不断的有数据播放是点播场景优化的关键难题。

l 直播业务

直播场景特征为实时流、带宽需求量不大但有突发(和视频编码技术有关)、对网络丢包敏感、不关注下载速度,关注播放过程流畅与否,比如行业的手淘、快手、抖音、虎牙、斗鱼等平台上提供的直播业务。直播业务的关键体验是播放流畅、不卡顿,与点播业务的优化要领相似,区别是直播为实时流,阿里 CDN 的优化思路是弱拥塞控制,强丢包恢复。

基于应用理解分类,阿里云 CDN 设计了一个协议栈算法容器,包含四大主算法,分别覆盖信令业务、下载业务、点播业务和直播业务,每个主算法包含三个子算法,提供了低中高三个不同等级的分级服务,最终满足各种应用的产品体验改善需要。

 

协议栈算法容器

区别于原始 Linx 内核的算法模式——将不同思想、服务不同场景的算法设计为独立算法,阿里 CDN 结合应用中心式、统一管控需求,也为了能让算法和应用更加灵活匹配,我们使用了一种新模式,设计了一个算法底座,底座上生长了 5 个主算法,主算法提供低中高三种不同级别的分级服务,最终形成了算法容器。

算法容器的构建逻辑如下:

首先,通用能力抽象、底座化,抽象拥塞控制和丢包恢复技术作为算法容器的底座。拥塞控制和丢包恢复是协议栈最核心的两大技术,近乎 95%的协议栈优化工作都集中在此。拥塞控制类别人的心脏,通过带宽估计和带宽使用,控制整个协议栈的启停;丢包恢复则类似人的免疫系统,当网络出现拥塞或出现丢包时负责免疫修复。

其次,通用能力灵活、弹性化,不用的场景分类对拥塞控制和丢包恢复依赖有差别。比如直播对于拥塞控制的依赖比较弱,直播为实时流,需要带宽量相对固定,贪心式的拥塞控制算对直播产品体验优化效果弱,但是对于丢包恢复的能力要求很高;下载业务对于拥塞控制的能力要求极高,需要拥塞控制算法尽力而为,丢包恢复技术要求一般;再如信令业务,对带宽的需求趋于无,但是对丢包恢复的能力要求极高。拥塞控制和丢包恢复通能力灵活、弹性后,场景分类算法可以按照自己的需求选择能力等级。

再次,场景分类主算法设计,主算法设计包含两部分关键类容:第一是基于应用场景特征的理解决策使用通用能力等级(拥塞控制和丢包恢复能力),第二部分是基于场景传输特征和性能瓶颈,迭代专用策略。

最后,算法服务分级的能力(阿里云 CDN 设计了低、中、高三档能力,演化为三个子算法),不同应用对于产品体验的要求有差异、对质量的敏感度也有差异,利用这种差异构建服务分级的能力,可以实现产品体验和成本双赢。比如 CDN 系统内部的日志回传对实时性要求不高,可以给予最低档的优化服务;比如点播、直播、游戏等业务对产品体验要求非常高,可以给予最高的的产品体验优化;又比如 CDN 内部管控类服务对质量的敏感适中,给予中间档位的传输服务。

阿里CDN算法容器图

能力产品化交付

技术能力交付的方式有很多,算法容器遵循了产品化模式交付标准,有如下功能或特性:

域名维度算法配置,支持不同域名配置不同算法:

l  支持域名维度国家、省份、运营商、节点、时间组合维度的算法配置,可以灵活的组合使用算法

l  域名策略 web 化配置、点鼠标实现域名算法配置

l  域名策略 web 化管理,提供网页式域名算法管理能力

l  域名算法分钟级生效,配置动作触发下发逻辑,分钟后生效

l  算法策略到内核态,系统标准化 API,接入网关改造简单、轻量

03 未来展望与规划

移动互联网时代需要的是基于产品体验的协议栈优化技术,基于数据传输的优化技术只是数据报文的搬运工,是缺少灵魂的、行尸走肉的,无法理解应用传输特征和产品体验需求,难以满足存量和爆炸式增长的 APP 应用需求。

基于数据的传输和基于产品体验传输,中间差了一个协议栈智能化技术。正如文章中提到观点,基于应用理解的协议栈优化是协议栈智能化的基础技术,应用理解的协议栈优化技术是我们在智能化道路上迈出的第一步,但不是最后一步,我们仍在路上。

我们的目标是让协议栈优化技术理解应用、给协议栈技术植入智能化基因、用智能化的思路设计产品体验的传输技术,最终解决移动互联网下各种应用的产品体验优化问题。

注:文中的出现的协议栈关键词,如果没有加限定词,特指 TCP 协议栈。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果iPhone屏下Touch ID技术专利获批,苹果Find My技术大火

根据美国商标和专利局(USPTO)公示的最新清单,苹果近日获得了屏下 Touch ID 的新技术专利。专利中重点提及了“短波红外线”技术,相关元件位于屏幕下方或者集成到屏幕内。 该专利主要介绍了应用于屏幕 Touch ID 的光学成像系统&…

自动化工具selenium(一)

一)什么是自动化?为什么要做自动化? 自动化测试可以代替一部分手工测试,不能够完全代替手工测试 1)自动化测试相比于手工测试来说人力的投入和时间的投入是非常非常少的,自动化测试能够提高测试效率 2)在回归测试里面,…

被隐藏的过程——预处理

文章目录0. 前言1. 程序的翻译环境和执行环境2. 被隐藏的过程2.1 翻译环境2.2 编译3.2.1 预编译3.2.2 编译2.2.3 汇编2.3 链接2.4 运行环境3. 预处理3.1 预定义符号3.2 #define3.2.1 #define定义标识符3.2.2 #define定义宏3.2.3 #define替换规则3.2.4 #和##3.2.5 带副作用的宏参…

API Gateway vs Load Balancer:选择适合你的网络流量管理组件

本文从对比了 API Gateway 和 Load Balancer 的功能区别,帮助读者更好地了解他们在系统架构中扮演的角色。 作者陈泵,API7.ai 技术工程师。 原文链接 由于互联网技术的发展,网络数据的请求数节节攀升,这使得服务器承受的压力越来…

vue-virtual-scroll-list虚拟列表

当DOM中渲染的列表数据过多时,页面会非常卡顿,非常占用浏览器内存。可以使用虚拟列表来解决这个问题,即使有成百上千条数据,页面DOM元素始终控制在指定数量。 一、参考文档 https://www.npmjs.com/package/vue-virtual-scroll-li…

Web前端学习:章三 -- JavaScript预热(三)

六九:函数的变量提升 函数的变量提升没有var高,var是最高的。 先提var,再提函数 解析: 1、4行打印之前没有定义变量,预解析触发变量提升 2、先提var,再提函数。所以先把var提升到最上面,然后提…

【蓝牙系列】蓝牙5.4到底更新了什么(2)

【蓝牙系列】蓝牙5.4到底更新了什么(2) 一、 背景 上一篇文章讲了蓝牙5.4的PAwR特征,非常适合应用在电子货架标签(ESL)领域, 但是实际应用场景中看,只有PAwR特性是不够的,如何保证广…

【latex】总结最近使用到的画图、表格及公式操作

前言 推荐使用overleaf写latex文章,内含很多会议/期刊的模板,可以直接套用。 https://www.overleaf.com下文都是在写论文过程中比较头疼的部分,有人建议我写完文章,最后再调整格式。但图片过大看起来实在是不适~ 插入图片 \beg…

5GHz 你得先认识DFS

想用Wi-Fi 5GHz?你得先认识DFS! 添加链接描述 无线网络2.4 GHz的频段,因为频道过少、使用技术过多太过拥挤,频宽性能不佳早已不是新闻。在5 GHz的频段,频道数大幅超过2.4 GHz,但其中也有一大部份是DFS频道…

【MySQL高级篇】第04章_逻辑架构

第04章_逻辑架构 1. 逻辑架构剖析 1.1 服务器处理客户端请求 首先MySQL是典型的C/S架构,即Clinet/Server 架构,服务端程序使用的mysqld。 不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果是:客户端进程向服…

线程池的原理

1. 为什么要用线程池降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统…

Javaweb之会话跟踪技术

1.会话跟踪技术的概述 会话跟踪技术就是处理一次会话中多次请求间数据共享问题 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。 从浏览器发出请求到服务…

vue 行内样式 px 单位 转换为 vw

vue2 安装 插件 npm i style-vw-loader --save vue.config.js 文件配置 module.exports {chainWebpack: (config) > {config.module.rule(vue).test(/\.vue$/).use(style-vw-loader).loader(style-vw-loader).options({unitToConvert: "px",//需要转换的单位vi…

讲透前端工程开发工具发展与使用

前端⼯程化的发展及⼯具详解 什么是⼯程化?什么是前端⼯程化? 随着发展的逐步发展,作为⼯程师除了需要关注需要写的⻚⾯,样式和逻辑之外,还需要⾯对⽇益复杂的系统性问题,⽐如模块化⽂件的组织、ES6 JS ⽂…

为了满足国内市场快速发展的业务需求,理想汽车选择亚马逊云科技

理想汽车是一家用户驱动的汽车科技企业,坚持核心技术全栈自研,理想ONE是其首个单车突破20万辆的智能电动车产品。借助亚马逊云科技领先技术和多项托管服务,理想汽车迅速构建起安全稳定、技术架构先进的车联网云计算处理平台,服务于…

R语言基础(二):常用函数

接前文: R语言基础(一):注释、变量 3.常用函数 函数就是一些已经编写好的功能,我们拿过来直接使用就可以了。 3.1 查看变量ls() 也许你清空了控制台,看不到之前的变量。但是它一直存在于系统中。 我们可以使用ls()函数查看已经定…

事件响应必备:DNS攻击与防御矩阵

攻击者采用了哪些DNS攻击技术,哪些组织可以帮助事件响应团队检测、缓解和预防这些技术?FIRST近日发布的DNS攻击与防御矩阵提供了答案。 DNS作为互联网基础架构的一项核心服务,安全问题严峻,各种攻击层出不穷。F5发布的数据显示&a…

项目管理手册

1 概述 1.1 项目管理体系 1.1.1 体系基础 项目管理体系是建立在公司 ISO 9000 质量管理体系基础上,结合 PMI 项目管理框架与 CMMI 能力成熟度模型,针对项目实施状态,对一些重点环节进行细化,加强重点环节的监控,明确…

Python导入模块的3种方式(超级详细)

很多初学者经常遇到这样的问题,即自定义 Python 模板后,在其它文件中用 import(或 from...import) 语句引入该文件时,Python 解释器同时如下错误: ModuleNotFoundError: No module named 模块名 意思是 Pyt…

VS2022安装EasyX 及 EasyX图形库安装和使用(附C++各图形编程项目示例源码)

文章目录一、EasyX的安装二、C_EasyX 项目1. 樱花2. 雪花3. 小熊4. 跳动爱心5. 橘子钟表6. 红玫瑰7. 奥特曼三、更多项目资源EasyX提取链接 网盘链接:https://pan.baidu.com/s/1gPtRVZub_008jwcK11Bb-g?pwd9ol9 提取码:9ol9 什么是EasyX? E…