RS code部分背景

This commit is contained in:
2026-05-15 19:10:05 +08:00
parent 70b4311bea
commit 37a3ede595
4 changed files with 91 additions and 12 deletions

View File

@@ -34,7 +34,7 @@
物理链路调度类的工作\cite{kataria2024titan,wu2023xron}通过不断监控同一逻辑链路下的公网链路与专线链路的质量,并在公网质量优秀可以为用户提供优质服务的时段将部分流量经由公网链路发送,从而希望能以此降低在专线上发送的数据流量,从而降低使用专线的成本。然而实际上,本研究的测量表明用户的高需求时段与公网链路质量下降时段基本重合,有大量流量需要提供服务时恰逢公网链路质量下降不能满足用户体验需求,公网链路的分流效果有限,大量流量仍旧通过专线转发,实际成本下降效果有限。
链路优化工作\cite{huang2010skypefec,holmer2013webrtcfec}则放弃使用专线链路,通过在发送端加入冗余信息以对抗在公网链路上传输时,可能遭遇的丢包。然而,为了尽可能地恢复丢失的信息,算法必须悲观地估计在链路上传输时可能遭遇的最差情况,并据此估算需要加入的冗余信息量。这使得链路上为了恢复一小部分可能的丢包而额外传输了大量的冗余数据,造成了带宽的浪费,同时也提升了使用链路的流量成本。
链路优化工作\cite{bolot1999adaptivefec,huang2010skypefec,holmer2013webrtcfec}则放弃使用专线链路,通过在发送端加入冗余信息以对抗在公网链路上传输时,可能遭遇的丢包。然而,为了尽可能地恢复丢失的信息,算法必须悲观地估计在链路上传输时可能遭遇的最差情况,并据此估算需要加入的冗余信息量。这使得链路上为了恢复一小部分可能的丢包而额外传输了大量的冗余数据,造成了带宽的浪费,同时也提升了使用链路的流量成本。
已有的这些方法都没有很好地解决用户质量与运营成本的平衡问题,因为它们:
\begin{itemize}

View File

@@ -27,13 +27,13 @@ GeneveGeneric Network Virtualization Encapsulation通用虚拟化网络封
\section{链路质量优化}
低质量的互联网链路由于负载较大或部分设备运行故障容易出现丢包或者延迟波动。在这些低质量的链路上进行传输时即使链路还有可用的传输带宽也会出现丢包或是延迟波动。即使TCP\cite{rfc9293tcp}等可靠传输协议通过重传确保了所有数据都能可到送达但性能较差。这是因为TCP协议依靠超时重传来在确保所有数据都最终送达至接收端即使使用了基于重复ACK的快速重传机制恢复单个丢失的包也至少要经历接收端检测丢包——请求发送端重传——发送端重传包送达恢复的过程至少需要一个往返时延Round Trip Time, RTT才能恢复。对于一条在云网络中的跨域链路往返时延可能达到\SI{300}{ms}或更长,如此缓慢的丢包恢复不仅会阻塞后续数据包的发送,也会极大地影响实时媒体服务如影视直播、视频通话等应用的用户体验。
低质量的互联网链路由于负载较大出现拥塞或部分设备运行故障容易出现丢包或者延迟波动。在这些低质量的链路上进行传输时即使链路还有可用的传输带宽也会出现丢包或是延迟波动。即使TCP\cite{rfc9293tcp}等可靠传输协议通过重传确保了所有数据都能可到送达但性能较差。这是因为TCP协议依靠超时重传来在确保所有数据都最终送达至接收端即使使用了基于重复ACK的快速重传机制恢复单个丢失的包也至少要经历接收端检测丢包——请求发送端重传——发送端重传包送达恢复的过程至少需要一个往返时延Round Trip Time, RTT才能恢复。对于一条在云网络中的跨域链路往返时延可能达到\SI{300}{ms}或更长,如此缓慢的丢包恢复不仅会阻塞后续数据包的发送,也会极大地影响实时媒体服务如影视直播、视频通话等应用的用户体验。
针对此问题研究者们提出了多种解决方案其中前向纠错编码Forward Error Correction, FEC被广泛地用于应对链路传输中的丢包。其基本思想是在发送数据时直接加入一部分冗余信息以确保在部分信息丢失时接收端无需请求发送端重新传送任何信息而可以利用已经接收到的信息配合冗余信息推算出丢失的信息。使用前向纠错编码进行丢包恢复时与重传机制需要经历一整个往返时延的长时间反馈路径不同利用前向纠错编码的冗余包进行恢复只需要等待后续冗余包送达后即可进行错误恢复时间短能更好地适应延迟敏感型应用如视频通话等应用的需求。
为了实现高效地前向纠错编码,研究者们提出了多种编码方式,它们针对不同的目标进行了设计和优化。
早期的FEC工作主要集中在为实时语音通信服务提高通话质量上。Bolot\cite{bolot1999adaptivefec}等人最初提出可以利用语音传输协议中已有的平均丢包率监控字段对传输链路的丢包和丢包模式进行估计,将已发送的数据包额外附在之后发出的数据包中多次传输(如图\ref{fig:早期FEC}),以提高至少一份数据最终送达至接收端用户的概率,有效地提升了通话传输的质量。Gandikota\cite{gandikota2008multipathfec}等人在此基础上进一步提出可以通过多路径传输,根据估算得到的网络中的丢包率,动态地调整参数以实现对语音流中的重要子流进行保护,同时将编码后的数据包以及其他附属子流经过两个最大程度节点不相交路径在网络上分开传输,以提升用户体验。Huang\cite{huang2010skypefecmeasure}等人通过测量Skype应用在不同丢包情况下的行为,证了相关冗余编码在提升用户体验方面的作用。
早期的FEC工作主要通过对时间敏感的数据包进行简单地复制和多次传输进行错误恢复。如图\ref{fig:早期FEC}所示,通过将每个数据包复制多份,每次发送新的数据的同时,在同一个数据包中同时捎带发送之前已经发送过的一些数据包,这样可以在一部分数据包丢失的同时仍旧确保接收端收到了所有数据。Bolot等人\cite{bolot1999adaptivefec}基于此思路提出可以利用实时语音通话应用中已经存在的平均丢包率监控字段对传输链路的丢包模式和丢包进行估计,从而动态地选重复发送包的发送间隔和次数,优化通话用户的用户体验。之后Gandikota等人\cite{gandikota2008multipathfec}在此基础上提出可以通过多路径传输,进一步提升冗余包和原始数据包中至少有一个送达的概率。Gandikota等人在工作中提出通过估算网络中的丢包率,动态地调整冗余参数以实现对语音流中的重要子流进行保护,同时将编码后的数据包以及其他次要子流经过两个最大程度节点不相交路径在网络上与重要数据流分开传输,以降低数据传输丢失概率、提升用户体验。Huang等人\cite{huang2010skypefec}通过测量Skype应用在不同丢包网络条件下的行为,证了相关冗余编码在提升实时语音通话用户体验方面的积极作用。
\begin{figure}[htbp]
\centering
@@ -42,6 +42,20 @@ GeneveGeneric Network Virtualization Encapsulation通用虚拟化网络封
\label{fig:早期FEC}
\end{figure}
通过重复发送数据包的方式添加冗余虽然简单但是会带来较高的冗余开销为了提高冗余信息的恢复效率研究者们进一步提出了基于纠删码Erasure Code的前项纠错机制。XOR码和R-S码是较为主要的冗余纠错恢复机制。这两种编码都是线性分组码将原始数据分为$n$个数据包一组,对于每一组数据再加入$k$个冗余数据包并将$n + k$个数据一并发送,接收端同样以组为单位进行丢包的恢复。
在XOR编码中$n$可以为任意值,而固定$k = 1$,冗余包通过将所有组内的数据包按位进行异或运算得到。如果接收端只接收到了一组数据包共$n + 1$个包中的$n$则丢失的包可以通过对已经接收到的包按位进行异或运算恢复得到。XOR编码可以在一组数据共$n + 1$个包丢失任意一个时通过剩余的$n$个包将丢失的包恢复但是如果丢失了两个或更多包则完全不能恢复丢失的数据。XOR码的计算简单冗余包生成和丢失数据包恢复都只需要使用异或运算即可完成运算开销小但是只能恢复固定模式的少量丢包面对组内多个丢包的情况效果有限。
为应对XOR编码的缺点在1960年Reed与Solomon提出了R-S编码\cite{reed1960rscode},通过对一组共$n$个数据包在有限域上进行运算,计算出$k$个额外的冗余包。R-S编码保证对于$n$个数据包和$k$个计算出的冗余包共$n + k$个数据包,接收端只要接收到了其中的任意$n$就能完整地恢复出所有的原始数据包。相较于XOR编码R-S编码的恢复能力有较大的提升能够在同一个编码组里出现较多的丢包的恶劣情况下进行恢复从能承受最多1个丢包增加至能承受最多$k$个丢包。RS编码被广泛用于传输音视频流媒体Lin等人\cite{bolot1999adaptivefec}通过在物理层上对数据包进行FEC编码提升了视频传输的效果。更多的其他研究者选择结合视频编码自身以帧和画面组Group of Pictures, GOP进行编码的特性进行FEC编码以提升视频传输质量。Shih等人\cite{shih2016framefec}通过对视频中的关键帧进行FEC保护提升了关键帧以及后续多个依赖关键帧的画面质量有效提升了视频传输质量。Xiao等人\cite{xiao2012subgopfec}使用贪心算法动态决定每个冗余组需要包含的帧数量及冗余度在不牺牲延迟的情况下提升了视频质量。Yang等人\cite{yang2003qualitygopfec}通过估算不同的数据包丢包后对解码视频的影响时间动态选择FEC参数以提升用户的视频观看体验。Kurdoglu等人\cite{kurdoglu2017fecwithquantation}则将FEC冗余率与编码帧率、编码量化参数及编码方式等联合优化以最佳化用户观看体验而非追求更高的单一量化指标。总体而言R-S编码相比简单复制冗余具有更高的冗余恢复效率因此被广泛应用于实时音视频传输等场景。
然而R-S编码通常以固定大小的数据组为单位进行编码与恢复其恢复能力依赖于单个编码组中的丢包数量不超过冗余包数量$k$。实际网络上的丢包并不是独立的在部分链路上可能由于链路拥塞、无线信号衰减等原因出现连续的突发丢包。在这些场景下如果使用R-S编码进行丢包恢复为了能成功恢复数据必须按照最差的可能情况决定$n$$k$的相对取值,而这通常使得算法对网络的状况产生过于悲观的估计,为了应对短暂出现的连续丢包而将$k$的值始终维持在较高水平。这导致在其他未遭遇连续丢包的数据组中大量的冗余包被浪费占用了传输带宽而未能有效地提升传输质量。为解决此问题研究者们提出了交织Interleave技术。如图\ref{fig:交织示意图}所示,交织技术将多个编码组交替地在网络上发出,使得当传输过程中出现了连续丢包时,丢包被分散在多个不同的编码组中分别应对,使得单个编码组需要应对的丢包比例大大下降,从而降低了整体需要的冗余率。
\begin{figure}[htbp]
\centering
\caption{交织编码示意}
\label{fig:交织示意图}
\end{figure}
\section{软件定义网络}
随着现代网络应用的快速发展,云网络用户遍布全球,网络内部需要传输数据量不断提升,且跨域传输的流量快速增长。如何在跨域传输场景下提升网络的传输可靠性与传输性能是当前研究的重点。跨域云网络服务通常涉及来自世界不同地区的复杂接入请求,交织复杂的流量调度需求和对流量和链路状态变化的动态响应,直接使用传统的物理网络进行传输难以依照不同用户的不同服务质量需求快速调整传输时网络的流量管理能力,而使用覆盖网络则允许云网络服务商通过集中控制覆盖网络中的各节点行为,综合多种标准如节点负载、链路质量等,灵活地对流量进行调度,以达成稳定高效传输的目标。