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

前言

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

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

高质量博客汇总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.mzph.cn/news/17994.shtml

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

相关文章

前端构建(打包)工具发展史

大多同学的前端学习路线&#xff1a;三件套框架慢慢延伸到其他&#xff0c;在这个过程中&#xff0c;有一个词出现的频率很高&#xff1a;webpack 。 作为一个很出名的前端构建工具我们在网上随便一搜&#xff0c;就会有各种教程&#xff1a;loader plugin entry吧啦吧啦。 但…

企业可以申请DV https证书吗

DV https证书是有基础认证的数字证书&#xff0c;所以DV https证书也可以叫DV基础型https证书。DV基础型https证书是众多https证书中既支持个人&#xff0c;也支持企事业单位申请的https证书&#xff0c;所以企事业单位都可以申请DV基础型https证书&#xff0c;不论是企业门户网…

边写代码边学习之卷积神经网络CNN

1. 卷积神经网络CNN 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种深度学习神经网络的架构&#xff0c;主要用于图像识别、图像分类和计算机视觉等任务。它是由多层神经元组成的神经网络&#xff0c;其中包含卷积层、池化层和全连接…

【数据结构】实验十:哈夫曼编码

实验十 哈夫曼编码 一、实验目的与要求 1&#xff09;掌握树、森林与二叉树的转换&#xff1b; 2&#xff09;掌握哈夫曼树和哈夫曼编码算法的实现&#xff1b; 二、 实验内容 1. 请编程实现如图所示的树转化为二叉树。 2. 编程实现一个哈夫曼编码系统&#xff0c;系统功能…

C语言预备

安装Visual studio 官方网址 https://visualstudio.microsoft.com/zh-hans/ 选择第一个社区版本&#xff08;免费&#xff09; 下载完成后打开安装包 安装完成后会自动打开程序选择c项目然后安装即可&#xff08;c兼容c&#xff09; 安装完成后启动程序注意这里需要注册也可…

scrapy框架简单实现豆瓣评分爬取案例

豆瓣网址&#xff1a;https://movie.douban.com/top250 1.创建scrapy框架 scrapy startproject 项目名(scrapy_test_one)创建好以后的目录是这样的 2.创建spider文件 在spiders目录下创建一个spider_one.py文件&#xff0c;可以随意命名&#xff0c;该文件主要是让我们进行数…

树、二叉树(C语言版)详解

&#x1f355;博客主页&#xff1a;️自信不孤单 &#x1f36c;文章专栏&#xff1a;数据结构与算法 &#x1f35a;代码仓库&#xff1a;破浪晓梦 &#x1f36d;欢迎关注&#xff1a;欢迎大家点赞收藏关注 文章目录 &#x1f34a;树的概念及结构1. 树的概念2. 树的相关概念3.树…

解决sonar的单元测试的覆盖率会为0问题

今天做项目遇到一个问题&#xff0c;明明做单元测试时覆盖率已经百分百了&#xff0c;然后传到Jenkin上&#xff0c;构建也成功了&#xff0c;但偏偏覆盖率就是为零&#xff0c;非常确定代码没有问题&#xff0c;所以唯一的问题就是出现在配置上了。 一开始的结果如下&#xf…

css 利用模糊属性 制作水滴

<style>.box {background-color: #111;height: 100vh;display: flex;justify-content: center;align-items: center;/* 对比度*/filter: contrast(20);}.drop {width: 150px;height: 159px;border-radius: 50%;background-color: #fff;position: absolute;/* 模糊 */filt…

Flowable-服务-微服务任务

目录 定义图形标记XML内容界面操作 定义 Sc 任务不是 BPMN 2.0 规范定义的官方任务&#xff0c;在 Flowable 中&#xff0c;Sc 任务是作为一种特殊的服务 任务来实现的&#xff0c;主要调用springcloud的微服务使用。 图形标记 由于 Sc 任务不是 BPMN 2.0 规范的“官方”任务…

CASAIM自动化平面度检测设备3D扫描零部件形位公差尺寸测量

平面度是表面形状的度量&#xff0c;指示沿该表面的所有点是否在同一平面中&#xff0c;当两个表面需要连接在一起形成紧密连接时&#xff0c;平面度检测至关重要。 CASAIM自动化平面度检测设备通过搭载领先的激光三维测头和智能检测软件自动获取零部件高质量测量数据&#xf…

剑指offer刷题笔记--Num61-68

1--扑克牌中的顺子&#xff08;61&#xff09; 主要思路&#xff1a; 五个数是顺子的充要条件&#xff1a;① 最大值 - 最小值 < 5&#xff08;大小王除外&#xff09;&#xff1b;② 没有出现重复的值&#xff08;大小王除外&#xff09;&#xff1b; 判断是否出现重复的值…

IDEA如何快捷创建serialVersionUID【详细图解】

在Java Bean&#xff0c;快速创建serialVersionUID&#xff0c;详细操作流程如下&#xff1a; 1.File->Settings->Editor->Inspections 在搜索框里搜索 Uid,选择下图中勾选的选择 2.如何使用 双击选中需要序列化Uid的类名&#xff0c;使用Alt enter&#xff0c;快捷…

Java里的static import使用小结

Java里的static import使用小结 换了工作要把Java重新捡起来了&#xff0c;这个在大学里用过的语言&#xff0c;虽然不复杂&#xff0c;还是有一些奇怪的地方的。比如static Slgluimport。 Static import是JDK 1.5中引进的特性&#xff0c;不过读大学那会还真没注意到。它的作…

机器学习 | Python实现NARX模型预测控制

机器学习 | Python实现NARX模型预测控制 目录 机器学习 | Python实现NARX模型预测控制效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 机器学习 | Python实现NARX模型预测控制 研究内容 贝叶斯黑盒模型预测控制,基于具有外源输入的非线性自回归模型的预期自由能最…

微信小程序防盗链referer问题处理

公司使用百度云存储一些资源&#xff0c;然后现在要做防盗链&#xff0c;在CDN加入Referer白名单后发现PC是正常的&#xff0c;微信小程序无法正常访问资源了。然后是各种查啊&#xff0c;然后发现是微信小程序不支持Referer的修改&#xff0c;且在小程序开发工具是Referer是固…

将程序打包成单一一个可执行文件

最近做了一个界面交互渲染的小项目&#xff0c;项目主要的功能是通过TCP接收数据然后在界面中渲染出对应的状态。由于用户的最大需求是炫酷&#xff0c;于是为了方便实现特殊的交互逻辑&#xff0c;我选择用freeglut自行实现了界面的交互和渲染&#xff0c;又用OpenCV做了部分图…

图数据库Neo4j学习四——Spring Data NEO

1配置 1.1Maven依赖 <!--neo4j --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId> </dependency>1.2yml配置 spring:data:neo4j:uri: bolt://localhost:76…

QT--day4(定时器事件、鼠标事件、键盘事件、绘制事件、实现画板、QT实现TCP服务器)

QT实现tcpf服务器代码&#xff1a;&#xff08;源文件&#xff09; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间server new QTc…

excel中使地址按十六进制进行数值递增的函数

这里是尼德兰的喵工具相关文章&#xff0c;欢迎您的访问&#xff01; 如果文章对您有所帮助&#xff0c;期待您的点赞收藏&#xff01; 让我们一起为成为芯片前端全栈工程师而努力&#xff01; 在进行寄存器编写时很多时候会涉及到算地址的问题&#xff0c;通常32bit位宽的寄存…