FEC前半部分

This commit is contained in:
2026-05-14 23:18:56 +08:00
parent 71591477a7
commit 70b4311bea
6 changed files with 52 additions and 6 deletions

View File

@@ -23,16 +23,27 @@ VXLANVirtual eXtensible Local Area Network虚拟可扩展局域网\cite
NVGRENetwork Virtualization using Generic Routing Encapsulation基于路由封装的网络虚拟化\cite{rfc7637nvgre}是另一种主要的虚拟隧道协议。该协议主要应用于微软的Hyper-V虚拟环境中\cite{microsoft_nvgre}。NVGRE将二层的MAC包封装在GRE隧道包内通过公网传递利用GRE协议中的Key字段传递包所属的虚拟子网标识Virtual Subnet ID, VSID以及流标识FlowID。NVGRE同样以24比特标识虚拟网络的名称因此也可以支持最多约1600万个虚拟子网。同时NVGRE支持在同一子网内进一步通过流标识来区分不同的数据流为更精细地管理流量和流量均衡提供了支撑。然而这要求物理网络设备具备识别和处理这些字段的能力对在公网部署带来了一定的挑战。
GeneveGeneric Network Virtualization Encapsulation通用虚拟化网络封装技术\cite{rfc8926geneve}是IETF新提出的通用网络虚拟化封装协议旨在以单一、可扩展的封装格式取代碎片化的VXLAN、NVGRE等多种隧道协议以维持生态统一。Geneve也采用MAC over UDP的封装通过灵活配置的元数据传递机制满足多种网络虚拟化需求。Geneve也使用24比特的虚拟网络标识Virtual Network Identifier, VNI来区分不同的虚拟网络支持的网络数量与VXLAN、NVGRE等协议相当。与VXLAN等协议不同Geneve允许在头部后添加可变长度和数量的控制位和控制信息可以有效满足不同虚拟网络的需求增强了可扩展性。Geneve协议通过设计可选的元数据空间允许在不修改协议的前提下引入新功能自推出以来已经逐步得到各类虚拟网络平台的支持\cite{ovn_geneve,vmware_nsxt_geneve}。Geneve功能丰富可拓展型强,但是协议较为复杂,适配难度较大。
GeneveGeneric Network Virtualization Encapsulation通用虚拟化网络封装技术\cite{rfc8926geneve}是IETF新提出的通用网络虚拟化封装协议旨在以单一、可扩展的封装格式取代碎片化的VXLAN、NVGRE等多种隧道协议以维持生态统一。Geneve也采用MAC over UDP的封装通过灵活配置的元数据传递机制满足多种网络虚拟化需求。Geneve也使用24比特的虚拟网络标识Virtual Network Identifier, VNI来区分不同的虚拟网络支持的网络数量与VXLAN、NVGRE等协议相当。与VXLAN等协议不同Geneve允许在头部后添加可变长度和数量的控制位和控制信息可以有效满足不同虚拟网络的需求增强了可扩展性。Geneve协议通过设计可选的元数据空间允许在不修改协议的前提下引入新功能自推出以来已经逐步得到各类虚拟网络平台的支持\cite{ovn_geneve,vmware_nsxt_geneve},但是协议较为复杂,适配难度较大。
\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被广泛地用于应对链路传输中的丢包。
针对此问题研究者们提出了多种解决方案其中前向纠错编码Forward Error Correction, FEC被广泛地用于应对链路传输中的丢包。其基本思想是,在发送数据时直接加入一部分冗余信息,以确保在部分信息丢失时,接收端无需请求发送端重新传送任何信息,而可以利用已经接收到的信息配合冗余信息推算出丢失的信息。使用前向纠错编码进行丢包恢复时,与重传机制需要经历一整个往返时延的长时间反馈路径不同,利用前向纠错编码的冗余包进行恢复只需要等待后续冗余包送达后即可进行,错误恢复时间短,能更好地适应延迟敏感型应用如视频通话等应用的需求。
为了实现高效地前向纠错编码,研究者们提出了多种编码方式,它们针对不同的目标进行了设计和优化。
早期的FEC工作主要集中在为实时语音通信服务提高通话质量上。Bolot\cite{bolot1999adaptivefec}等人最初提出可以利用语音传输协议中已有的平均丢包率监控字段对传输链路的丢包率和丢包模式进行估计,将已发送的数据包额外附在之后发出的数据包中多次传输(如图\ref{fig:早期FEC}以提高至少一份数据最终送达至接收端用户的概率有效地提升了通话传输的质量。Gandikota\cite{gandikota2008multipathfec}等人在此基础上进一步提出可以通过多路径传输根据估算得到的网络中的丢包率动态地调整参数以实现对语音流中的重要子流进行保护同时将编码后的数据包以及其他附属子流经过两个最大程度节点不相交路径在网络上分开传输以提升用户体验。Huang\cite{huang2010skypefecmeasure}等人通过测量Skype应用在不同丢包情况下的行为验证了相关冗余编码在提升用户体验方面的作用。
\begin{figure}[htbp]
\centering
\includegraphics[width=.6\linewidth]{naive_fec_ref_pic.jpg}
\caption{早期FEC工作将冗余信息附加在后续发出的包中进行发送}
\label{fig:早期FEC}
\end{figure}
\section{软件定义网络}
随着现代网络应用的快速发展,云网络用户遍布全球,网络内部需要传输数据量不断提升,且跨域传输的流量快速增长。如何在跨域传输场景下提升网络的传输可靠性与传输性能是当前研究的重点。跨域云网络服务通常涉及来自世界不同地区的复杂接入请求,交织复杂的流量调度需求和对流量和链路状态变化的动态响应,直接使用传统的物理网络进行传输难以依照不同用户的不同服务质量需求快速调整传输时网络的流量管理能力,而使用覆盖网络则允许云网络服务商通过集中控制覆盖网络中的各节点行为,综合多种标准如节点负载、链路质量等,灵活地对流量进行调度,以达成稳定高效传输的目标。
覆盖网络的概念最初由Anderson等人提出\cite{andersen2001RON}。该工作提出了将公网中并不直接相连的一些节点重新抽象为一个覆盖网络中的相邻节点称为RON节点。各个RON节点之间通过公网建立连接形成Overlay网络中的虚拟链路。除了转发功能RON节点间还可以通过主动探测的方式对建立虚拟链路所依靠的物理链路质量进行实时测量并将测量结果汇总至控制器。当客户端希望通过RON网络进行连接时控制器将将综合考虑覆盖网络中所有可用的连接的质量选择最符合客户端声明的需求的链路对流量进行调度。
覆盖网络的概念最初由Anderson等人提出\cite{andersen2001RON}。该工作提出了将公网中并不直接相连的一些节点重新抽象为一个覆盖网络中的相邻节点称为RON节点。各个RON节点之间通过公网建立连接形成Overlay网络中的虚拟链路。除了转发功能RON节点间还可以通过主动探测的方式对建立虚拟链路所依靠的物理链路质量进行实时测量并将测量结果汇总至控制器。当客户端希望通过RON网络进行连接时控制器将将综合考虑覆盖网络中所有可用的连接的质量选择最符合客户端的传输需求的链路对流量进行调度。