深空物联网通信中视频流的智能多路TCP拥塞控制|文献阅读|文献分析和学习|拥塞控制|MPTCP|SVC

news2024/10/6 14:33:13

前言

那么这里博主先安利一些干货满满的专栏了!

首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。

高质量博客汇总https://blog.csdn.net/yu_cblog/category_12379430.html?spm=1001.2014.3001.5482


Intelligent Multi-Path TCP Congestion Control for video streaming in Internet of Deep Space Things communication

摘要

文献分析和学习

今天给大家讲解一下这篇文献,深空物联网通信中视频流的智能多路TCP拥塞控制。然后我也看到了前面很多同学都在讲拥塞控制算法,然后其实我这个也是拥塞控制算法,但是这个背景是不一样的。

首先我们为了后面大家能更好地理解我接下来要讲的内容。我们先明确一下,这篇文章,是在TCP的基础上做拥塞 控制算法的一篇文章。所以,他是在传输层做操作。其次他用的是MPTCP,即多路TCP,再其次,他是针对于视 频流传输的,再其次,他是针对于深空通信的。可能上面的这些名词,在那本《自顶向下》里面可能都没有涉及到,所以,在这我先给大家铺垫一些背景知识。

背景知识铺垫

什么是深空通信?

深空通信是指在太空中进行的通信方式,主要应用于太阳系外的深空探测任务,例如火星探测、木星探测等。深空 通信所涉及到的距离非常遥远,比如,⻢斯克的星舰去到火星之后,要和地球取得 联系,此时就要用到深空通信。

深空通信遇到了什么困难?

基于窗口和ACK,TCP协议(也就是我们上课学习的TCP)在深空链路上的性能很差,具有极高的传播延迟和链路错误。 那么为了解决这个问题,在此之前已经有很多的相关研究去解决这个问题了。但是,这些方法存在以下局限性:

(1)基于规则的方法使用一组固定的规则来处理每种情况,有时候不能灵活处理各种状况。 (3)单路径TCP导致⻓RRT,链路利用率降低。

(2)当经历⻓RRT之后,在源处接收到有关链路条件的旧信息,基于这些过去信息的拥塞处理决策可能不是最优决策。

文章的Solution

所以作者就在本文提出了他的方法,就是DQN for SVC-based CC in MPTCP这个个东⻄,那这个东⻄是什么意思

呢?DQN代表深度Q网络,SVC就是一种视频处理方式,MPTCP就是多路TCP协议。总之就是,

首先发现TCP不太行,所以为了解决问题,首先作者采用MPTCP去替代TCP,然后在此基础上使用SVC对视频做处 理,然后在此基础上,再加上深度Q网络,这样就能很好的保证深空视频传送的拥塞控制效果。然后一下是作者提 出的方法的完整模型图,然后接下来我开始详细讲解这里面的每一个模块,和他们的作用。

SVC可伸缩视频编码技术

可伸缩视频编码 SVC 是一种视频编码技术,它允许在不同的传输网络和接收端设备上进行动态适应视频的清晰度 和帧率。SVC 可以将原始视频流分成多个编码层,每个编码层具有不同的比特率和解析度,这使得接收端设备可以 选择最适合其带宽和处理能力的编码层来解码视频。

首先,SVC技术先将一部分块数据(也就是一段时间内的视频帧)分成了M部分,其中 M-1 部分是 Enhancement layer ,其中 1 块是 base layer 然后我们就来定义权重函数。

 

其中 Chi,t 是缓冲器中在t时隙处的第i个块。L(·)是输出块的层编号的函数。W是块的权重,默认值设置为 100,M是总的层数,设置为3,所以L越大的话,(M-L)是越小的,所以这是一个递减的函数。这样定义的话:重量 随着层的减少而增加。(我看前面有些组没有讲这个,不讲也行)

然后,SVC技术被应用到这个领域,是为了解决HoL阻塞的(这个我记得上周也有一个组提到了)。HoL阻塞 (Head-of-Line Blocking)是指,在一个队列中,如果正在处理某一个数据包时,后续的数据包无法立即被处 理,形成了阻塞。

如果我们使用SVC,则可以在数据包中包含有多个不同的分层信息。接收方设备可以根据需要选择不同的分层进行 解码,如果高分辨率层次的数据包遭遇延迟和阻塞,接收方设备可以立即切换到低分辨率层次,从而避免了HoL阻 塞问题。但是如果是没有进行SVC编码,那么接收方主机就只能等着,就阻塞在accept那里了。

关于MPTCP的拥塞控制

即这一部分就是MPTCP。 

什么是MPTCP?
MPTCP(Multipath TCP)是一种多路径传输控制协议,他和tcp的区别其实就是mptcp将多条网络路径结合起来。

那么MPTCP本质上,是怎么实现的呢?

MPTCP本质上是将一个上层的报文分成多份,(我们知道,IP报文在如果⻓度超过MTU之后是会分片的,这里也是同一个道理,虽然细节实现可能不一样)然后将这些分割后的数据在不同的TCP子连接上传输。

那么MPTCP优越在哪呢?

TCP的拥塞控制算法我们大家都很熟悉了,即加性递增、乘性减小。当网络出现拥塞时,TCP会将拥塞窗口减半,然后重新进行慢启动,逐渐增大发送窗口。

诶!但是MPTCP的拥塞控制就不一样啦!当MPTCP检测到某个路径出现拥塞时,它会通过弱化该路径的窗口来减 少在该路径上的传输速率,而不是像TCP那样直接将窗口减半。同时,MPTCP支持多路径传输,因此可以在其他 路径上增加传输速率,利用多条路径实现更高的带宽利用率。举一个例子,假设MPTCP同时使用了两个传输路 径,当其中一个路径出现拥塞时,MPTCP可以选择增加另一个路径上的传输速率,从而实现更高的总体传输速 率,而TCP就不行了,他只能把拥塞窗口减半,然后再慢启动!

那么到现在,最后的问题就是,这个MPTCP到底应该怎么在拥塞的时候去调整每个路径上的传输速率呢?

比如说 这里弱化多少,这里增加多少呢?那么这个定量的问题,作者使用强化学习(RL)去解决的。

首先,强化学习是需要一个奖励函数的,也就是我们经常说的 reward function ,需要定义奖励函数,我们首先要 定义状态。

 在这个项目中,我们每隔时间t来计算一次状态。 状态的定义如下。

 其中sit表示在t时刻开始的时间间隔内的第i条TCP路径上的状态,Cwti表示当前路径在当前时间下的拥塞窗口大 小,第二个表示丢包率,第三个表示可用带宽,第四个表示时延。

 所有路径的总状态,可以如上所示了。 等一会儿,我们期望的是,把这个状态丢进强化学习网络里面之后,强化学习网络能告诉我,我这个MPTCP具体

应该怎么调整?所以我们定义 “动作” -- 表示具体应该怎么调整 接下来,我们可以定义,在t开始的特定时间段内,MPTCP和SVC的动作为Ai。

 紧接着,我们再定义奖励函数。

 

其中W(Ch,t)表示层权重函数,Lri,t是第i个子流的损失率,并且Thi,t是实现的吞吐量,所以,吞吐量越大 奖励函数值越大的,而层权重函数和丢包率的积其实可以理解成数据包到达对面主机的一个成功率,当然,这个增 大,奖励函数也是要增大的。

接下来,我们利用上面定义好的一系列变量,来分析算法运行的过程。

 

 

首先,我们要明确,送进网络里面的,是[si,ai,ri,si],即状态+动作+奖励

(行1-3)算法随机初始化Q和重放缓冲器的值,这个缓冲区是什么意思呢,其实可以理解成重复训练,我们将一 个状态送进网络之后,这个状态可能发生了改变,相对应的他的奖励也会变,这时候我们把这个进入过网络的状态 再次放到等待队列(不完全是队列,它是随机采样进去的,不是先进先出的)里面继续,这样就能通过多次送进网 络,找到每种状态的最大化奖励所对应的动作。(行5-9)系统收集拥塞窗口的大小、每个子流的丢失率、带宽利 用率以及从环境接收的每个子流的RTT。然后,通过选择动作返回的最大奖励,系统执行动作以改变拥塞窗口的大 小(行11-13)<具体怎么改的,我找了很久但是文章中没有提到>。在执行动作之后,系统将状态、动作、奖励和 下一状态存储在重放缓冲器中,并执行随机采样(第14-15行)。最后,对每个学习步骤执行梯度下降(按照我的 理解这里是一个反向传播)以更新网络参数(行16-19)。

到这里,其实就已经可以得到,每一种状态,(即那个1*4的矩阵),所对应的最优的处理动作是什么,也就是 说,MPTCP应该怎么设置每条路的传输速率?都得到了解决。

性能分析 

那么作者具体的模型就是上面所说的内容了,那么他的性能到底怎么样呢? 由于深空环境的特殊性,本次实验的通信环境是通过计算机模拟实现的,而不是通过真实的实验或仿真测试。

为了评估提出的基于 dqn 的 MPTCP CC 方案的性能,我们设置两个具有不同 RRT和损失率的非对称链路。详细的链路设置如表 1 所示。

现在我们来开始分析这个 DQN for SVC-based CC in MPTCP 的性能。

我们直接看图分析。

 

这个fig4展示了,流数据通过模拟的星际回程链路发送时,成功接收和播放的层的百分比。

我们可以看到 Proposed 就是作者提出的方法,后面的这些是作者用来做对比的方法。

我们可以看到,无论是SVC的BL层的接受概率,还是EL层的接受概率,还是BL+EL的总接受概率,作者提出的这个 方法都远远的超过其他对比的模型。我们可以看这个图,作者提出的方法,EL+BL加起来其实就可以理解成整个完 整的视频数据包到达对方主机的概率。我们可以看到,都接近100%了,我感觉这个有点夸张了其实。

然后前面我们提到,作者引入SVC是为了解决HoL阻塞问题,现在我们看看,解决的效果怎么样。

 

在这个图里面,纵坐标就是HoL阻塞的概率。横坐标就是网络的各链路 rtt 的不对称性。不对称性的定义如下。

根据各链路 rtt 的不对称性也进行了性能评价。连杆的不对称性根据给出的相对误差来定义。

如图 5(a)所示,很明显,随着上述不对称性的增加,HoL 阻塞也会增加。当最大不对称度为 60%时,模型表示出 HoL 阻塞只有 12%,而其他模型基本在 50%以上。

蓝色这个是作者提出的模型,这是遥遥领先于其他模型了。

然后还有一个图,它是测量了传输一个完整的流文件所花费的时间。

 

显然,作者的这个方法太有优势了
可以看到,他这个方案的性能分别比 TCP BBR、DRL-TCP 和 QLE-DS 提高 20%、21%和 19%。

我认为可以改进的地方

虽然,看似,刚才看这些作者给出的这些图,好像感觉这个模型已经完全SOTA了,已经没有上升空间了,其实我认为,这个模型还是有很多要等待改进的地方的。

在这里,我主要对MPTCP提出了一些我的改进的想法。

MPTCP本身已经是一种支持多路径传输的协议,然而在深空网络环境中,由于传输路径的复杂性和不稳定性,MPTCP仍然需要进一步改进以适应不同的传输场景。以下是一些MPTCP进一步改进的方法:首先我是想对安全保障的方面说。

1. 加强安全保障:如前所述,深空网络传输具有重要的安全保障需求,需要提供数据的加密、认证和防篡改等 安全措施。因此,在MPTCP中,进一步封装,加强数据的安全保护,以确保数据传输的安全性和完整性。

2. 感觉这篇文章的实验部分内容有点少,其实可以探究一下SVCM的值对效果的影响。

3. 另外,目前他这里所做的这些实验,只有两条链路去模拟,因此我认为还没有很好的模拟了深空通信的状态,因为深空通信状态太复杂了,因此我认为这个文章还需要补实验,更好模拟深空通信的状态。

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

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

相关文章

【CAS6.6源码解析】ST的默认淘汰策略 MultiTimeUseOrTimeoutExpirationPolicy

本篇文章是对上篇文章【深度解析票据淘汰与过期策略】的一个补充&#xff0c;上篇文章主要分析了TGT的默认淘汰策略配置&#xff0c;ST的配置有TGT的默认配置有一些差异化&#xff0c;特别是ST是基于MultiTimeUseOrTimeoutExpirationPolicy这样一种淘汰策略&#xff0c;本文将详…

精密划片机行业发展趋势

划片机行业的发展趋势主要包括以下几个方面&#xff1a; 高精度、高效率的切割技术&#xff1a;随着半导体芯片的尺寸不断增大&#xff0c;切割的精度和效率要求也越来越高。因此&#xff0c;行业将继续推动切割技术的创新和发展&#xff0c;以提高划片效率和精度。 自动化和智…

百度地图点标记加调用

先看效果 PHP代码 <?phpnamespace kds_addons\edata\controller;use think\addons\Controller; use think\Db;class Maps extends Controller {// 经纬度计算面积function calculate_area($points){$totalArea 0;$numPoints count($points);if ($numPoints > 2) {f…

Blazor前后端框架Known-V1.2.9

V1.2.9 Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 Gitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;https://github.com/known/Known 概述 基于C#和Blazor…

(学习笔记1)类和对象详解(C++)

类和对象 1.类的定义语法类的定义方式 2.类的访问限定符2.1 访问限定符的特点2.2 struct与class的区别 3. 三大特性3.1 封装4.类的作用域5.类的实例化6.类对象模型7.this指针7.1 this指针的特性7.2 this指针相关问题 1.类的定义 类是面向对象语言特有的语法&#xff0c;在面向…

数组中重复的数字_剑指 Offer 03

文章目录 题目描述法一 哈希表 题目描述 法一 哈希表 int findRepeatNumber(vector<int>& nums){unordered_map<int, bool> map;for(const int& num:nums){if(map[num]) return num;map[num]true;}return -1;}

c++游戏制作指南 模板(权当预告)

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f35f;欢迎来到静渊隐者的csdn博文&#xff0c;本文是c游戏制作指南的一部&#x1f35f; &#x1f355;更多文章请点击下方链接&#x1f355; &#x1f368; c游戏制作指南&#x1f3…

C++调用C# dll成功示例

方法1&#xff1a;公共语言运行时支持 一.准备C# dll类库 。生成CSLib.dll namespace CSLib {public class Class1{private string name;public string Name{get{return name;}set{name "Your Name: " value;}}} }二、写C应用调用 1)需要把dll复制到运行目录下。…

Python实现GA遗传算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;最早是由美国的 John holland于20世…

超细详解,接口自动化测试-JSON和JsonPath提取数据(实战)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 JSON(JavaScript …

修改若依框架为自己的项目并上传到git

第一步: 打开后台若依项目,把全局替换打开,搜索ruoyi 和 RuoYi 和 若依 分别换成自己公司的名称( 记住要把区分大小写打开 ) 第二步: 关闭idea中的项目,然后在文件夹中打开这个项目,然后搜索target( 缓冲 ) 删除,部分人的电脑上面还有imp文件切记也要删除 第三步: 接着把项目…

Day09-作业(Mybatis)

作业1&#xff1a;通过SpringBootMybatis的方式完成如下学员管理的需求 页面原型&#xff1a; 数据准备&#xff1a; -- 学员表 create table student(id int unsigned primary key auto_increment comment ID,主键,name varchar(10) not null comment 姓名,no char(10) not …

C++多线程基本原理详解

在C学习过程中&#xff0c;要想“更上一层楼”的话&#xff0c;多线程编程是必不可少的一步&#xff0c;大家需要更多的思考是为什么这么做&#xff1f;这样做的好处是什么&#xff1f;以及多线程编程都可以应用在哪里&#xff1f; 1、多线程 传统的C&#xff08;C11标准之前…

R语言中数据重塑(长宽表的转化)

学习笔记&#xff0c;仅供学习使用。 目录 1-什么是整洁的数据&#xff1f; 2-宽表变成长表 示例1&#xff1a; 示例2&#xff1a; 示例3&#xff1a; 3-长表变宽表 示例1&#xff1a; 示例2&#xff1a; 1-什么是整洁的数据&#xff1f; 按照Hadley的表述&#xf…

我的观影记录表【个人向】

目录 前言电影评分标准闪电侠&#xff08;2023&#xff09;银河护卫队3&#xff08;2023&#xff09; 前言 这里是我本人的观影记录&#xff0c;这个想法2年前就有了&#xff0c;但是一直比较懒&#xff0c;现在&#xff08;上班摸鱼&#xff09;准备重新开始&#xff0c;评价…

Spring Boot Starter 剖析与实践 | 京东云技术团队

引言 对于 Java 开发人员来说&#xff0c;Spring 框架几乎是必不可少的。它是一个广泛用于开发企业应用程序的开源轻量级框架。近几年&#xff0c;Spring Boot 在传统 Spring 框架的基础上应运而生&#xff0c;不仅提供了 Spring 的全部功能&#xff0c;还使开发人员更加便捷地…

Bigemap 在网络通讯行业中的应用场景

地图应用&#xff1a; 使用我们软件下载地图&#xff0c;对影像需求是高频更新&#xff0c;我们软件目前的更新频率可以满足需求&#xff0c;实现离线地图的下载&#xff0c;在地图上导入数据查看和标注点位&#xff0c;基站信号覆盖展示数据并且导出&#xff0c;并且会发送到…

​​​amoeba实现MySQL读写分离

​​​amoeba实现MySQL读写分离 准备环境&#xff1a;主机A和主机B作主从配置&#xff0c;IP地址为192.168.131.129和192.168.131.130&#xff0c;主机C作为中间件&#xff0c;也就是作为代理服务器&#xff0c;IP地址为192.168.131.136。三台服务器操作系统为RHEL6.4 x86_64,为…

Codeforces Round 889 (Div. 2)(视频讲解A——D)

文章目录 A Dalton the TeacherB Longest Divisors IntervalC2 Dual (hard Version)D Earn or Unlock Codeforces Round 889 (Div. 2)&#xff08;视频讲解A——D&#xff09; A Dalton the Teacher #include<bits/stdc.h> #define endl \n #define INF 0x3f3f3f3f us…

自定义MVC增删改查

目录 mymvcdemo是自定义mvc框架的使用示例 1.1 实体类 1.2 dao方法 1.3 写Service / biz 三层架构 1.4 建action 相当于selvert 1.5 con连接MySQL 8.0 版本 1.6 配置文件 XML 1.7 主界面布局 1.8 增加界面布局 1.9 写tld配置文件 2.0 注意架包 我是已经打包好的 mymv…