49 lines
11 KiB
TeX
49 lines
11 KiB
TeX
% !TEX root = ../bachelor-thesis.tex
|
||
|
||
\chapter{背景介绍与相关工作}
|
||
|
||
\section{云网络与覆盖网络}
|
||
|
||
云网络的核心思想是服务商将计算和网络基础设施作为一种服务进行售卖(Infrastructure as a Service, IaaS)的新型计算范式\cite{azodolmolky2013cloudnetworking}。它的核心思想是云网络的服务商出资搭建数据中心并购买网络网络资源将数据中心内的计算、存储等单元连接互联网,其他服务提供商或者个人用户可按需要购买云服务商中提供的资源,并通过互联网访问。与传统的网络依赖与本地硬件进行部署不同,云网络通过虚拟机、虚拟路由器、虚拟交换机、负载均衡、虚拟防火墙等多种技术将已有的物理网络和计算资源抽象为虚拟化的计算资源,提供给不同的用户进行访问。通过网络虚拟化技术,云网络同时减少了计算资源的提供商与用户的成本,因为云网络的虚拟化特性使得资源可以按需用户需求动态分配与计费,用户只会为自己真正使用的资源付费,而云服务商可以通过对虚拟资源在硬件上的整合避免资源分配后的浪费,高效地满足所有用户的资源需求,降低运营成本\cite{luong2017cloudnetworksurvey}。
|
||
|
||
在云网络模型下,用户所能访问的几乎所有资源如计算资源、存储资源以及网络互联资源都是虚拟资源而非物理资源。在云网络中,云服务器、云存储等实例可能分布在不同的物理节点上,所有的资源都需要通过高质量的网络进行互联,因此高性能的虚拟网络是云网络的基础\cite{mogul2012cloudnetworkperf}。
|
||
|
||
覆盖网络(Overlay Network)是一种广泛应用于云网络结构的网络虚拟化设计,它基于物理的底层网络(Underlay Network)上通过对资源的逻辑整合而形成的逻辑网络。如图\ref{fig:overlay网络示意},覆盖网络在已有的硬件网络上构建一个虚拟的网络层,使得使用云网络服务的企业和用户可以获得更灵活与稳定的虚拟网络连接。近年来,企业对虚拟化和云网络的需求不断增长,因而将分布在全球各地的云资源进行互联的需求也不断提升。不同的云资源所处的基础设施可能出现异构的情况,使用覆盖网络可以有效地将这些区别隐藏在相同的虚拟网络层抽象之后,极大地简化了部署和配置网络的成本。
|
||
|
||
\begin{figure}[htbp]
|
||
\centering
|
||
(覆盖网络从underlay中构建的图,仿照tcf论文)
|
||
\caption{覆盖网络基于底层网络,将各类物理网络资源抽象为一个虚拟的网络层}
|
||
\label{fig:overlay网络示意}
|
||
\end{figure}
|
||
|
||
覆盖网络的实现依赖于隧道封装技术,其基本原理是将原始的二层或三层报文封装在另一种网络协议中进行传输,从而在底层的IP网络上构建虚拟的二层网络。当前主流的Overlay隧道技术主要包括VXLAN\cite{rfc7348vxlan}、NVGRE\cite{rfc7637nvgre}和Geneve\cite{rfc8926geneve}等,它们在封装格式、协议机制和适用场景上各有特点。
|
||
|
||
VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网)\cite{rfc7348vxlan}是由IETF制定的虚拟网络技术之一,广泛应用于在数据中心和云网络中。VXLAN通过MAC over UDP的方式,将二层的以太网帧封装在UDP报文中通过公网传递,对虚拟的二层网络在三层网络的基础上进行扩展。VXLAN使用24比特的虚拟网络标识(VXLAN Network ID, VNI)来区分不同的虚拟以太网,可以突破传统VLAN的4096个虚拟网络数量限制,提供约1600万个各自独立的虚拟局域网。VXLAN协议将普通的二层网络数据帧添加上VXLAN的包头,之后再将数据包装上外层的以太网、IP和UDP报文头后发送至公网。VXLAN包的封装和解封装由VXLAN隧道端点(VXLAN Tunnel End Point)进行,VTEP负责将从虚拟机进入隧道的包进行封装,也负责将从隧道接收到的包进行解封装后交付给虚拟机。这使得VXLAN隧道对虚拟机透明,便于与其他网络系统集成。VXLAN利用已有的UDP传输机制在网络中建立隧道,成熟度高,当前已广泛应用于数据中心。
|
||
|
||
NVGRE(Network 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支持在同一子网内进一步通过流标识来区分不同的数据流,为更精细地管理流量和流量均衡提供了支撑。然而,这要求物理网络设备具备识别和处理这些字段的能力,对在公网部署带来了一定的挑战。
|
||
|
||
Geneve(Generic 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}或更长,如此缓慢的丢包恢复不仅会阻塞后续数据包的发送,也会极大地影响实时媒体服务如影视直播、视频通话等应用的用户体验。
|
||
|
||
针对此问题,研究者们提出了多种解决方案,其中前向纠错编码(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网络进行连接时,控制器将将综合考虑覆盖网络中所有可用的连接的质量,选择最符合客户端的传输需求的链路对流量进行调度。 |