许多应用程序对数据传递有截止时间要求,例如实时视频、多人游戏和云端增强现实/虚拟现实。然而,当前的传输层API过于原始,无法满足这些要求。因此,如今的应用程序被迫构建定制和复杂的截止时间感知的数据传递机制。在这项工作中,设计了截止时间感知传输协议(Deadline-aware Transport Protocol(DTP)),以在广域网上提供在截止日期之前交付的服务。为了满足波动网络上多样且有时矛盾的需求,设计了主动发送端丢弃调度器( Active-Drop-at-Sender Scheduler)和自适应冗余机制。我们通过扩展QUIC构建了DTP,并开发了两个利用DTP的应用程序。广泛的评估结果表明,与原始的QUIC相比,DTP易于使用且可以带来显著的性能改进(1.2倍至5倍)。
作者:Jie Zhang, Hang Shi, Yong Cui, Feng Qian, Wei Wang, Kai Zheng, Jianping Wu
来源:ICNP 2022
标题:To Punctuality and Beyond: Meeting Application Deadlines with DTP
链接: https://ieeexplore.ieee.org/document/9940391
内容整理:鲁君一
背景和动机
新兴应用程序,如360°视频和云端虚拟现实/游戏,对数据传输有截止时间的要求。本文首先进行了这些应用程序的案例研究,将这类应用程序的常见传输要求总结如下:
- 基于块的数据传输的截止时间要求:这些应用程序以块的方式生成和处理数据,每个块都有明确的截止时间要求。
- 具有不同属性的多个并发块:通常需要并行传输许多块。这些块对应用程序性能产生不同的影响,因此通过优先处理某些块而不是其他块,可以降低带宽消耗。
- 块之间的依赖关系:应用复杂的编码来压缩块数据,这通常涉及到跨块增量压缩。跨块压缩可以显著减少带宽需求,但会引入块之间的依赖关系。如果依赖的块无法及时到达,那么依赖的块到达也没有意义。因此,在发送块时应尊重这种依赖关系。
- 应用层自适应:为了应对网络波动,应用程序通常会开发自己的自适应逻辑。例如,它们通常会尝试将数据发送速率与监测/预测的带宽相匹配。
简而言之,这些应用程序需要一个传输协议,能够提供基于多个块的截止日期之前交付的服务。它应该支持多路复用,即同时传输多个块。每个块需要具有其自身的属性,如截止时间、优先级和依赖关系,但没有现有的协议能全部支持上述功能。
因此提出一种通用且易于使用的基于块的协议,称之为 DTP,用于截止日期感知数据传输。使用 DTP,应用程序可以传达截止日期要求以及必要的元数据并获得有意义的反馈。DTP 尝试满足应用程序的需求并通知应用程序交付结果。而且,DTP可以将接收方的交付结果携带给发送方,让发送方调整要求。因此,DTP 可以显着减轻应用程序开发人员的负担,如下表所示。
设计
DTP的设计遵循以下三个原则:
- 端到端原则,使得DTP不需要修改网络设备。DTP应该尽可能地将数据放置在它能够控制的终端点上。
- 适应多样化的应用需求,如截止时间、优先级和依赖关系。
- 减轻应用程序开发者的负担。DTP处理短期波动,应用程序只需要根据长期的QoE或数据交付结果选择适当的设置。
为了完成截止日期之前交付的任务,我们首先需要了解延迟来自哪里。可以将块传递时间分为三个部分:
- 发送方的延迟。当应用程序的数据速率高于瓶颈带宽时,数据将被缓冲。这种延迟将影响后续的所有块。
- 网络中的延迟。这包括数据传输延迟(带宽 × 块大小)和往返时延(RTT)。
- 接收方的延迟。接收方需要等待丢失或重排序的数据包到达。丢包检测和重传也需要时间。特别是当块的尾部数据包丢失时,这些延迟是无法忽视的。
网络中的延迟取决于连接可以获得的网络资源数量。一个TCP友好的传输协议不能获得超过其公平份额的带宽。RTT受到网络缓冲区占用量的影响。填充缓冲区的拥塞控制可能会获得更高的带宽,但也会导致更高的RTT和可能更高的丢包率。
使用主动发送端丢弃调度器( Active-Drop-at-Sender Scheduler)来减少发送方队列,从而减少发送方的延迟,特别是对于重要的块。为了获得低的RTT并尽可能在发送方保留可调度的数据,DTP需要采用不会过度填充网络缓冲区的拥塞控制算法。当链路存在丢包且截止时间紧迫时,尾部数据包的丢失将导致块错过截止时间。冗余模块(Redundancy module)可以通过在不等待丢包检测和重传的情况下恢复丢失的数据包来缓解这个问题。
DTP的架构如下图所示:
其中,Active-drop-at-sender (ADS) scheduler使用以下算法计算Weighted_p
调度器会在收到 ACK 或应用推送数据时运行,以便快速响应网络波动和应用发送模式的变化。
在每次运行时,调度程序更新非依赖块的Weighted_p值,并选择Weighted_p最低的块发送。
实现
我们通过扩展QUIC来构建DTP,因为QUIC已经提供了许多有用的构建块。DTP的设计也可以在其他协议(如SCTP和TCP)上实现。我们的实现基于Cloudflare的quiche ,它使用Rust编程语言实现了IETF QUIC。实现分为无I/O的核心QUIC状态机和套接字管理,后者可以使用平台本机API编写。通过这种方式,实现可以在许多平台上运行。由于QUIC是一种正在快速发展的协议,我们的扩展应该是非侵入性的,以便我们可以快速跟随QUIC的新功能,并且使用QUIC的应用程序更容易采用DTP。
QUIC数据包由标题和一个或多个帧组成,这些帧携带控制信息和应用程序数据。QUIC定义了20种帧类型,如STREAM、ACK、HANDSHAKE DONE等。扩展QUIC的自然方式是更改其帧格式或定义新的帧类型。为了在接收方和发送方之间同步块元数据,DTP定义了两种新的帧类型:BLOCK INFO和BCT。为了估算单向延迟,DTP在ACK帧中添加了时间戳。FEC帧用于实现冗余模块。为了使DTP的部署具有增量性,握手期间的版本协商被修改为协商DTP功能。如果协商失败,则回退到原始的QUIC协议。
测试
将DTP与QUIC和SCTP流控制传输协议进行比较。对于QUIC,我们选择基于quiche发布的DTP的默认设置。我们不使用重置操作来丢弃QUIC的数据流,因为应用程序不能知道何时取消流,除非有由DTP维护和提供的信息。
我们使用默认的SCTP调度程序(先到先服务)和基于QUIC的过期数据取消(称为SCTP’)。
DTP、QUIC和SCTP’使用相同的BBR拥塞控制算法和块到流映射,以进行公平的比较。
在接下来的实验中,我们考虑了3个DTP的变体:
- 仅考虑截止日期(α=0,称为DTP-D);
- 仅考虑优先级(α=1,称为DTP-P);
- 同时考虑截止日期和优先级(称为DTP)。
这里α负责调整截止日期隐含的优先级和应用程序制定的优先级之间的权重。首先研究DTP在带宽变化条件下的表现:
可以看出,当带宽受限时,QUIC的性能迅速下降,因为它不会放弃过时的块。DTP-D和DTP-P的性能略差于DTP,但比QUIC好得多。这证明考虑截止日期或优先级可以提高截止日期交付性能,并且将这两个因素结合在一起可以获得更好的性能。
接下来,我们研究DTP在面对网络丢包时的性能:评估了冗余模块在三种不同的流量模式下的有效性。对于每种情况,将丢包率从1%变化到20%。我们将带宽设置得足够大,以便发送所有块。
在所有情况下,DTP的性能始终优于QUIC。这表明冗余模块能够处理不同的应用程序流量模式和丢失情况。
总结
本文提出了一种名为DTP的新型传输层协议。它采用了两个关键机制:截止时间感知的主动发送端丢弃调度(ADS)和自适应冗余,以提升应用程序性能。我们在DTP之上构建并评估了几个应用程序。与原始的QUIC相比,DTP可以将应用程序的QoE提高1.2倍至5倍,同时对应用程序开发者的负担非常小。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。