背景除去云网络

This commit is contained in:
2026-05-22 18:09:11 +08:00
parent d7e1a49273
commit 613caf3157
13 changed files with 153 additions and 156 deletions

Binary file not shown.

View File

@@ -5,9 +5,11 @@
\section{研究背景}
网络(Cloud Networking)是一种新型的网络部署与管理架构。云网络服务商通过预先在全球各地部署服务器与网络资源并对其虚拟化,允许其他软件服务的服务商可以通过租用这些计算和网络资源并将他们进行互联,组建适用于自身业务需求的遍布全球的云网络。基于云网络提供的网络资源如专线及公网链路计算资源如虚拟机可以将这些链路和虚拟机组成逻辑上互联的覆盖网络Overlay Network。覆盖网络的各个组件如转发节点、互联链路都由对应的云网络资源抽象而来对其扩展或重新配置时只需要进行软件设置而不需要对网络设备硬件进行更改其易于配置、易于扩展等众多优点使得它被广泛应用于文件传输、实时音视频通话、企业资源管理等多种服务中
覆盖网络(Overlay Network是一种建立在底层物理网络之上的逻辑网络。随着云计算和跨地域互联网服务的发展,服务商在构建覆盖网络时通常不再由自己建设底层基础设施,而是租用云服务商在全球多个地区提供的服务器、网关和链路计算与网络资源,并将这些资源抽象为可按需配置的转发节点和逻辑链路构成覆盖网络,从而为文件传输、实时音视频通信、企业资源访问等业务提供跨地域连接能力。与直接修改底层网络设备相比,覆盖网络的路径选择、节点扩展和链路调整主要通过软件配置完成,因而具有部署灵活、扩展方便和易于集中管理等特点
位于全球不同地区的两个覆盖网络用户可以利用覆盖网络建立连接。如图\ref{fig:云网络转发拓扑},建立连接的用户各自选择距离自己最近的接入网管接入覆盖网络,发送端的数据经由云网关进入云网络进行转发,再从接收端用户接入的云网关发至接收端用户
% 云网络Cloud Networking是一种新型的网络部署与管理架构。云网络服务商通过预先在全球各地部署服务器与网络资源并对其虚拟化允许其他软件服务的服务商可以通过租用这些计算和网络资源并将他们进行互联组建适用于自身业务需求的遍布全球的云网络。基于云网络提供的网络资源如专线及公网链路及计算资源如虚拟机可以将这些链路和虚拟机组成逻辑上互联的覆盖网络Overlay Network。覆盖网络的各个组件如转发节点、互联链路都由对应的云网络资源抽象而来对其扩展或重新配置时只需要进行软件设置而不需要对网络设备硬件进行更改其易于配置、易于扩展等众多优点使得它被广泛应用于文件传输、实时音视频通话、企业资源管理等多种服务中
位于全球不同地区的两个覆盖网络用户可以利用覆盖网络建立连接。如图~\ref{fig:云网络转发拓扑},建立连接的用户各自选择距离自己最近的接入网管接入覆盖网络,发送端的数据经由云网关进入云网络进行转发,再从接收端用户接入的云网关发至接收端用户。
\begin{figure}[H]
\centering
@@ -44,7 +46,7 @@
\nomenclature{FEC}{前向纠错编码Forward Error Correction}
本文作者实现了基于本文提出的分段链路质量优化方法的分布式覆盖网络转发以及针对低质量链路的冗余包计算及丢包恢复算法。经过对真实网络的模拟实验,本文提出的方法相比直接使用公网链路将端到端带宽提升了最高260\%
本文实现了基于本文提出的分段链路质量优化方法的分布式覆盖网络转发以及针对低质量链路的冗余包计算及丢包恢复算法。经过对真实网络的模拟实验,本文提出的方法相比直接使用公网链路将端到端带宽提升了最高\SI{260}{\percent}
总结而言,本文主要的贡献是:
\begin{itemize}
@@ -57,14 +59,14 @@
本文共分为六章,各章内容安排如下:
\ref{chap:引言}章为引言。本章介绍跨域云网络中覆盖网络传输的应用背景,分析专线链路成本高、公网链路质量不稳定所带来的矛盾,概述现有链路调度与冗余编码方法的不足,并给出本文的研究思路与主要贡献。
~\ref{chap:引言} 章为引言。本章介绍跨域云网络中覆盖网络传输的应用背景,分析专线链路成本高、公网链路质量不稳定所带来的矛盾,概述现有链路调度与冗余编码方法的不足,并给出本文的研究思路与主要贡献。
\ref{chap:背景介绍与研究动机}章为背景介绍与研究动机。本章介绍云网络、覆盖网络以及前向纠错编码等必要背景,结合真实测量结果分析现有方法在跨域公网链路场景下的局限,指出低质量公网链路不应仅被规避,而应结合覆盖网络的分段转发能力进行针对性质量修复。
~\ref{chap:背景介绍与研究动机} 章为背景介绍与研究动机。本章介绍云网络、覆盖网络以及前向纠错编码等必要背景,结合真实测量结果分析现有方法在跨域公网链路场景下的局限,指出低质量公网链路不应仅被规避,而应结合覆盖网络的分段转发能力进行针对性质量修复。
\ref{chap:相关工作}章为相关工作。本章分别介绍覆盖网络与隧道技术、链路质量优化方法以及软件定义网络与网络调度相关研究,并分析这些工作与本文研究问题之间的联系和差异。
~\ref{chap:相关工作} 章为相关工作。本章分别介绍覆盖网络与隧道技术、链路质量优化方法以及软件定义网络与网络调度相关研究,并分析这些工作与本文研究问题之间的联系和差异。
\ref{chap:跨域云网络传输性能提升研究}章为跨域云网络传输性能提升方法。本章介绍本文提出的全公网链路优化系统包括系统总体架构、交织XOR前向纠错编码设计、基于丢包统计的自适应参数调整方法以及用于平滑解码端突发输出的速率控制机制。
~\ref{chap:跨域云网络传输性能提升研究} 章为跨域云网络传输性能提升方法。本章介绍本文提出的全公网链路优化系统包括系统总体架构、交织XOR前向纠错编码设计、基于丢包统计的自适应参数调整方法以及用于平滑解码端突发输出的速率控制机制。
\ref{chap:实验验证与分析}章为实验验证与分析。本章介绍实验环境与实验设置,通过在模拟低质量链路条件下对比直接转发方案和本文方法的端到端吞吐性能,验证本文提出的分段链路质量修复方法的有效性。
~\ref{chap:实验验证与分析} 章为实验验证与分析。本章介绍实验环境与实验设置,通过在模拟低质量链路条件下对比直接转发方案和本文方法的端到端吞吐性能,验证本文提出的分段链路质量修复方法的有效性。
\ref{chap:结论与展望}章为结论与展望。本章总结全文的主要工作与实验结论,并讨论本文方法仍存在的不足以及未来可进一步优化的方向。
~\ref{chap:结论与展望} 章为结论与展望。本章总结全文的主要工作与实验结论,并讨论本文方法仍存在的不足以及未来可进一步优化的方向。

View File

@@ -3,18 +3,14 @@
\chapter{背景介绍与研究动机}
\label{chap:背景介绍与研究动机}
本章首先在\ref{sec:背景介绍}节中介绍云网络、覆盖网络和网络编码的基本信息,介绍在维持高质量服务前提下进行成本优化这一核心问题。之后在\ref{sec:实验观察与已有工作不足}节介绍一些本文作者对云网络的观察发现及已有工作在这些新观察下暴露出的不足。最后,在\ref{sec:basic idea}节介绍本文提出的通过对云网络公网进行分段质量修复的基本思路及面临的挑战。
本章首先在~\ref{sec:背景介绍} 节中介绍覆盖网络和网络编码的基本信息,介绍在维持高服务质量前提下进行成本优化这一核心问题。之后在~\ref{sec:实验观察与已有工作不足} 节介绍已有工作在实际场景下的不足。最后,在~\ref{sec:basic idea} 节介绍本文提出的通过对云网络公网进行分段质量修复的基本思路及面临的挑战。
\section{背景介绍}
\label{sec:背景介绍}
\subsection{云网络与覆盖网络}
\subsection{覆盖网络}
云网络的核心思想是服务商将计算和网络基础设施作为一种服务进行售卖Infrastructure as a Service, IaaS的新型计算范式\cite{azodolmolky2013cloudnetworking}。它的核心思想是云网络的服务商出资搭建数据中心、购买网络网络资源将数据中心内的计算、存储等单元连接互联网,其他服务提供商或者个人用户可按需要购买云服务商中提供的资源,并通过互联网访问。与传统的网络依赖与本地硬件进行部署不同,云网络通过虚拟机、虚拟路由器、虚拟交换机、负载均衡、虚拟防火墙等多种技术将已有的物理网络和计算资源抽象为虚拟化的计算资源,提供给不同的用户进行访问。通过网络虚拟化技术,云网络同时减少了计算资源的提供商与用户的成本,因为云网络的虚拟化特性使得资源可以按需用户需求动态分配与计费,用户只会为自己真正使用的资源付费,而云服务商可以通过对虚拟资源在硬件上的整合避免资源分配后的浪费,高效地满足所有用户的资源需求,降低运营成本\cite{luong2017cloudnetworksurvey}
% 在云网络模型下,用户所能访问的几乎所有资源如计算资源、存储资源以及网络互联资源都是虚拟资源而非物理资源。在云网络中,云服务器、云存储等实例可能分布在不同的物理节点上,所有的资源都需要通过高质量的网络进行互联,因此高性能的虚拟网络是云网络的基础\cite{mogul2012cloudnetworkperf}。
覆盖网络Overlay Network是一种广泛应用于云网络结构的网络虚拟化设计它基于物理的底层网络Underlay Network上通过对资源的逻辑整合而形成的逻辑网络。如图\ref{fig:overlay网络示意},覆盖网络在已有的硬件网络上构建一个虚拟的网络层,使得使用云网络服务的企业和用户可以获得更灵活与稳定的虚拟网络连接。近年来,企业对虚拟化和云网络的需求不断增长,因而将分布在全球各地的云资源进行互联的需求也不断提升。不同的云资源所处的基础设施可能出现异构的情况,使用覆盖网络可以有效地将这些区别隐藏在相同的虚拟网络层抽象之后,极大地简化了部署和配置网络的成本。
覆盖网络Overlay Network是一种已经获得广泛应用的网络虚拟化设计它是基于物理的底层网络Underlay Network上通过对资源的逻辑整合而形成的逻辑网络。如图~\ref{fig:overlay网络示意},覆盖网络在已有的硬件网络上构建一个虚拟的网络层,使得使用覆盖网络服务的企业和用户可以获得更灵活与稳定的虚拟网络连接。近年来,企业对虚拟化和云网络的需求不断增长,因而将分布在全球各地的云资源进行互联的需求也不断提升。企业构建覆盖网络以承载业务时,通常不选择自己搭建基础设施,而是选择向云服务商按需租用计算和网络资源,并利用这些云网络资源组成覆盖网络
\begin{figure}[H]
\centering
@@ -23,7 +19,9 @@
\label{fig:overlay网络示意}
\end{figure}
跨地域云网络场景中,不同节点之间通常存在多条物理连接路径,这些物理链路具有不同的链路质量和不同的链路价格及计费方式。例如,许多云服务商同时提供公网链路互联与专线链路互联\cite{azure_bandwidthcost,gcp_bandwidthcost}。其中,专线链路通常具有更稳定的传输性能、更低的丢包率与时延,但部署成本与使用成本较高;而公网链路虽然成本较低,却容易受到网络拥塞、跨域路由波动等因素影响,出现高丢包、时延抖动等问题\cite{kataria2024titan}。与此同时,链路质量与网络负载往往还会随着时间动态变化,使得不同链路在不同时间段内呈现出不同的性能特征。随着云计算与实时互联网应用的发展,现代云网络中的跨域流量规模持续增长,用户对于传输质量与服务稳定性的要求也不断提高。传统的覆盖网络服务商为了为用户提供高质量的传输服务,确保能为用户持续稳定提供低延迟、高带宽、低丢包的转发路径,选择尽可能多地使用专线链路构建覆盖网络,而这对运营成本带来了较大的压力。如何在维持网络服务质量保持高带宽、低丢包、低延迟的前提下,尽可能减少构建和运营云网络所需的成本,是各服务商关注的重点。
覆盖网络中,不同节点之间通常存在多条物理连接路径,这些物理链路具有不同的链路质量和不同的链路价格及计费方式。例如,许多云服务商同时提供公网链路互联与专线链路互联\cite{azure_bandwidthcost,gcp_bandwidthcost}。其中,专线链路通常具有更稳定的传输性能、更低的丢包率与时延,但部署成本与使用成本较高;而公网链路虽然成本较低,却容易受到网络拥塞、跨域路由波动等因素影响,出现高丢包、时延抖动等问题\cite{kataria2024titan}。与此同时,链路质量与网络负载往往还会随着时间动态变化,使得不同链路在不同时间段内呈现出不同的性能特征。
随着云计算与实时互联网应用的发展,现代云网络中的跨域流量规模持续增长,用户对于传输质量与服务稳定性的要求也不断提高。传统的覆盖网络服务商为了为用户提供高质量的传输服务,确保能为用户持续稳定提供低延迟、高带宽、低丢包的转发路径,选择尽可能多地使用专线链路构建覆盖网络,而这对运营成本带来了较大的压力。如何在维持网络服务质量保持高带宽、低丢包、低延迟的前提下,尽可能减少构建和运营云网络所需的成本,是各服务商关注的重点。
一些工作意识到了公网链路与专线链路在经常存在定价差异,因而尝试在维持覆盖网络服务质量的前提下,利用覆盖网络易于实时配置的特性,将部分流量转移至质量优秀的公网链路上,以减少专线链路的压力\cite{kataria2024titan,wu2023xron}。这些工作在公网链路质量较好时,利用低价的公网链路为部分用户提供服务,降低了高价专线需要承载的流量,从而在服务流量总量不变的情况下,降低了高价流量的占比,进而降低了链路部署的总成本。
@@ -44,7 +42,7 @@
\item \textbf{公网链路质量下降与用户流量高峰重合,基于公网分流的调度方法难以削减专线峰值成本。}
\end{enumerate}
已有的链路调度类工作没有考虑到公网链路质量下降的时间段与用户流量高峰有明显的相关性,公网链路的实际分流能力有限。如图\ref{fig:用户高峰与公网劣化重合},在某企业的某条公网连接中,用户流量带宽提升的时段与丢包率提升、延迟波动的时段有较强的相关性,只在公网丢包低、延迟稳定的时段使用公网链路只能削减专线上承载的一小部分流量。进一步地,由于用户流量带宽较大的时段公网持续恶化,这些方法也不能利用公网链路削减专线需要承载的峰值带宽,使得专线链路仍然在传输流量时起主导作用,链路使用成本的削减程度有限。另外,专线链路的价格通常以峰值带宽定价而不能以传输数据量计费,当前公网分流策略不能降低专线链路的使用成本。这是因为与公网链路通常可以灵活选用按量付费与按峰值带宽付费不同专线链路通常只能按一段时间内的峰值带宽或95分位带宽付费\cite{aliyun_bandwidthcost,tencent_bandwidthcost},这些方法不能有效地削减专线上承载的峰值带宽就意味着专线的使用成本不会由于公网的部分分流而显著降低。因此,这些工作对链路使用成本的削减十分有限,甚至可能由于专线链路成本没有明显下降,反而由于额外使用公网链路而导致链路使用成本增加。
已有的链路调度类工作没有考虑到公网链路质量下降的时间段与用户流量高峰有明显的相关性,公网链路的实际分流能力有限。如图~\ref{fig:用户高峰与公网劣化重合}在某企业的某条公网连接中用户流量带宽提升的时段与丢包率提升、延迟波动的时段有较强的相关性只在公网丢包低、延迟稳定的时段使用公网链路只能削减专线上承载的一小部分流量。进一步地由于用户流量带宽较大的时段公网持续恶化这些方法也不能利用公网链路削减专线需要承载的峰值带宽使得专线链路仍然在传输流量时起主导作用链路使用成本的削减程度有限。另外与公网链路通常可以灵活选用按量付费与按峰值带宽付费不同专线链路通常只能按一段时间内的峰值带宽或95分位带宽付费\cite{aliyun_bandwidthcost,tencent_bandwidthcost},这些方法不能有效地削减专线上承载的峰值带宽就意味着专线的使用成本不会由于公网的部分分流而显著降低。因此,这些工作对链路使用成本的削减十分有限,甚至可能由于专线链路成本没有明显下降,反而由于额外使用公网链路而导致链路使用成本增加。
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{hongkong-jinan-withbd.pdf}
@@ -57,9 +55,10 @@
\end{enumerate}
云服务商只对专线链路的质量提供服务质量保证Service level agreement, SLA而对公网的具体性能没有任何形式的保证。尽管服务商不对公网的性能做出任何保证所有的公网链路在所有的时间段质量都劣于专线链路。如图\ref{fig:公网片段热力图}所示,部分公网链路有着较低的平均丢包率,质量几乎与专线相当,而只有部分链路,特别是跨域链路的丢包率较高,链路质量较差,与低丢包的专线有较大差距。覆盖网络对用户流量进行转发时,通常将多个不同的网络片段相连组成连接两侧接入网关的路径。由于覆盖网络的内部转发机制通常对端到端的传输透明,两端的客户端只能感知到由多个链路的丢包级联而成的最终丢包率,只要组成转发路径的链路中包含了至少一条丢包率较高的跨域公网链路,端到端感知到的丢包率就会明显上升。这导致在跨域连接的场景下,网络编码类工作只能以感知到的高丢包率对在整个路径上转发的包加入大量的冗余,造成了较大的带宽浪费,造成链路使用成本上升。
例如一条端到端的连接可能分别由AB、BC、CD三段链路组成其中三段链路的丢包率分别为$0, 0.2, 0$, 如果使用端到端的冗余,为了应对其中一条高丢包链路带来的丢包,必须在整条链路上加入额外约\SI{20}{\percent}的冗余导致在从A发往D的流量中AB、BC两段都承载了相比有效数据多\SI{20}{\percent}的数据量。在这种场景下AB段网络本身质量优秀但是却由于后段质量较差的网络呃额外承载了流量导致了链路使用成本上升。
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{loss_avg_heatmap.pdf}
\includegraphics[width=.8\linewidth]{loss_avg_heatmap.pdf}
\caption{不同公网链路连续七天内平均丢包率热力图}
\label{fig:公网片段热力图}
\end{figure}

View File

@@ -3,15 +3,21 @@
\chapter{相关工作}
\label{chap:相关工作}
本章主要介绍一些与本文工作相关的已有工作。\ref{sec:隧道技术介绍}节主要介绍了当前在工业界得到较为广泛使用的用于构建覆盖网络的几种隧道技术,\ref{sec:链路质量优化相关工作}节介绍了多种常用于进行网络编码的前项纠错编码技术,并比较了他们的异同。最后,\ref{sec:SDN相关工作}介绍了与覆盖网络紧密联系的软件定义网络Software defined network, SDN的概念以及与其相关的一些工作。
本章主要介绍一些与本文工作相关的已有工作。\ref{sec:隧道技术介绍} 节主要介绍了当前在工业界得到较为广泛使用的用于构建覆盖网络的几种隧道技术,\ref{sec:链路质量优化相关工作} 节介绍了多种常用于进行网络编码的前项纠错编码技术,并比较了他们的异同。最后,\ref{sec:SDN相关工作}介绍了与覆盖网络紧密联系的软件定义网络Software defined network, SDN的概念以及与其相关的一些工作。
\section{覆盖网络与隧道技术}
\section{云网络、覆盖网络与隧道技术}
\label{sec:隧道技术介绍}
云网络是服务商将计算和网络基础设施作为一种服务进行售卖Infrastructure as a Service, IaaS的新型计算范式\cite{azodolmolky2013cloudnetworking}。它的核心思想是云网络的服务商出资搭建数据中心、购买网络网络资源将数据中心内的计算、存储等单元连接互联网并将这些资源出租,其他服务提供商或者个人用户可按需要购买云服务商中提供的资源,并通过互联网访问。与传统的网络依赖与本地硬件进行部署不同,云网络通过虚拟机、虚拟路由器、虚拟交换机、负载均衡、虚拟防火墙等多种技术将已有的物理网络和计算资源抽象为虚拟化的计算资源,提供给不同的用户进行访问。通过网络虚拟化技术,云网络同时减少了计算资源的提供商与用户的成本,云网络的虚拟化特性使得资源可以按需用户需求动态分配与计费,用户只需为自己真正使用的资源付费,同时云服务商可以通过对虚拟资源在硬件上的整合避免资源分配后的浪费,高效地满足所有用户的资源需求,降低运营成本\cite{luong2017cloudnetworksurvey}
在上述云网络资源基础上构建覆盖网络已经成为当前企业与网络服务商进行跨地域业务部署的常见运营策略。对于需要连接多地域用户、数据中心或云上服务的企业而言直接自建全球范围内的物理网络基础设施不仅部署周期长而且需要承担较高的建设和维护成本。相比之下企业可以按需租用云服务商在不同地域提供的虚拟机、网关以及公网或专线链路将这些分散的云网络资源抽象为覆盖网络中的转发节点与逻辑链路并通过软件方式完成路径配置、节点扩展和链路调整。由此覆盖网络既继承了云网络按需部署和弹性扩展的优势也为后续根据链路质量与成本进行灵活调度提供了基础。然而要在已有的底层IP网络之上形成彼此隔离、可配置且对上层业务透明的逻辑网络仅依赖云资源本身并不足够还需要相应的封装与转发机制。
覆盖网络的实现依赖于隧道封装技术其基本原理是将原始的二层或三层报文封装在另一种网络协议中进行传输从而在底层的IP网络上构建虚拟的二层网络。当前主流的Overlay隧道技术主要包括VXLAN\cite{rfc7348vxlan}、NVGRE\cite{rfc7637nvgre}和Geneve\cite{rfc8926geneve}等,它们在封装格式、协议机制和适用场景上各有特点。
VXLANVirtual 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传输机制在网络中建立隧道成熟度高当前已广泛应用于数据中心。
\nomenclature{IETF}{互联网工程任务组Internet Engineering Task Force}
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},但是协议较为复杂,适配难度较大。
@@ -19,7 +25,11 @@ GeneveGeneric Network Virtualization Encapsulation通用虚拟化网络封
\section{链路质量优化}
\label{sec:链路质量优化相关工作}
低质量的互联网链路由于负载较大出现拥塞或部分设备运行故障容易出现丢包或者延迟波动。在这些低质量的链路上进行传输时即使链路还有可用的传输带宽也会出现丢包或是延迟波动。即使TCP\cite{rfc9293tcp}等可靠传输协议通过重传确保了所有数据都能可到送达但性能较差。这是因为TCP协议依靠超时重传来在确保所有数据都最终送达至接收端即使使用了基于重复ACK的快速重传机制如图\ref{fig:TCP丢包恢复缓慢}恢复单个丢失的包也至少要经历接收端检测丢包——请求发送端重传——发送端重传包送达恢复的过程至少需要一个往返时延Round Trip Time, RTT才能恢复。对于一条在云网络中的跨域链路往返时延可能达到\SI{300}{ms}或更长,如此缓慢的丢包恢复不仅会阻塞后续数据包的发送,也会极大地影响实时媒体服务如影视直播、视频通话等应用的用户体验。
低质量的互联网链路由于负载较大出现拥塞或部分设备运行故障容易出现丢包或者延迟波动。在这些低质量的链路上进行传输时即使链路还有可用的传输带宽也会出现丢包或是延迟波动。即使TCP\cite{rfc9293tcp}等可靠传输协议通过重传确保了所有数据都能可到送达但性能较差。这是因为TCP协议依靠超时重传来在确保所有数据都最终送达至接收端即使使用了基于重复ACK的快速重传机制如图~\ref{fig:TCP丢包恢复缓慢}恢复单个丢失的包也至少要经历接收端检测丢包——请求发送端重传——发送端重传包送达恢复的过程至少需要一个往返时延Round Trip Time, RTT才能恢复。对于一条在云网络中的跨域链路往返时延可能达到\SI{300}{ms}或更长,如此缓慢的丢包恢复不仅会阻塞后续数据包的发送,也会极大地影响实时媒体服务如影视直播、视频通话等应用的用户体验。
\nomenclature{TCP}{传输控制协议Transmission Control Protocol}
\nomenclature{ACK}{确认报文Acknowledgement}
\nomenclature{RTT}{往返时延Round Trip Time}
\begin{figure}[H]
\centering
@@ -28,13 +38,13 @@ GeneveGeneric Network Virtualization Encapsulation通用虚拟化网络封
\label{fig:TCP丢包恢复缓慢}
\end{figure}
针对此问题研究者们提出了多种解决方案其中前向纠错编码Forward Error Correction, FEC被广泛地用于应对链路传输中的丢包。其基本思想是在发送数据时直接加入一部分冗余信息以确保在部分信息丢失时接收端无需请求发送端重新传送任何信息而可以利用已经接收到的信息配合冗余信息推算出丢失的信息。使用前向纠错编码进行丢包恢复时,与重传机制需要经历一整个往返时延的长时间反馈路径不同,利用前向纠错编码的冗余包进行恢复只需要等待后续冗余包送达后即可进行,错误恢复时间短,能更好地适应延迟敏感型应用如视频通话等应用的需求。
针对此问题研究者们提出了多种解决方案其中前向纠错编码Forward Error Correction, FEC被广泛地用于应对链路传输中的丢包。其基本思想是在发送数据时直接加入一部分冗余信息以确保在部分信息丢失时接收端无需请求发送端重新传送任何信息而可以利用已经接收到的信息配合冗余信息推算出丢失的信息。与重传机制应对丢包需要经历一整个往返时延的长时间反馈路径不同,利用前向纠错编码的冗余包进行恢复只需要等待后续冗余包送达后即可进行,错误恢复时间短,能更好地适应延迟敏感型应用如视频通话等应用的需求。
为了实现高效前向纠错编码,研究者们提出了多种编码方式,它们针对不同的目标进行了设计和优化。
为了实现高效前向纠错编码,研究者们提出了多种编码方式,它们针对不同的目标进行了设计和优化。
\subsection{简单复制冗余}
早期的FEC工作主要通过对时间敏感的数据包进行简单地复制和多次传输进行错误恢复。如图\ref{fig:早期FEC}所示通过将每个数据包复制多份每次发送新的数据的同时在同一个数据包中同时捎带发送之前已经发送过的一些数据包这样可以在一部分数据包丢失的同时仍旧确保接收端收到了所有数据。Bolot等人\cite{bolot1999adaptivefec}基于此思路提出可以利用实时语音通话应用中已经存在的平均丢包率监控字段对传输链路的丢包模式和丢包律进行估计从而动态地选重复发送包的发送间隔和次数优化通话用户的用户体验。之后Gandikota等人\cite{gandikota2008multipathfec}在此基础上提出可以通过多路径传输进一步提升冗余包和原始数据包中至少有一个送达的概率。Gandikota等人在工作中提出通过估算网络中的丢包率动态地调整冗余参数以实现对语音流中的重要子流进行保护同时再将编码后的数据包以及其他次要子流经过两个最大程度节点不相交路径在网络上与重要数据流分开传输以降低数据传输丢失概率、提升用户体验。Huang等人\cite{huang2010skypefec}通过测量Skype应用在不同丢包网络条件下的行为印证了相关冗余编码在提升实时语音通话用户体验方面的积极作用。
早期的FEC工作主要通过对时间敏感的数据包进行简单地复制和多次传输进行错误恢复。如图~\ref{fig:早期FEC} 所示,通过将每个数据包的内容复制多份每次发送新的数据的同时在同一个数据包中同时捎带发送之前已经发送过的一些数据包这样可以在一部分数据包丢失的同时仍旧确保接收端收到了所有数据。Bolot等人\cite{bolot1999adaptivefec}基于此思路提出可以利用实时语音通话应用中已经存在的平均丢包率监控字段对传输链路的丢包模式和丢包律进行估计,从而动态地选重复发送包的发送间隔和次数优化通话用户的用户体验。之后Gandikota等人\cite{gandikota2008multipathfec}在此基础上提出可以通过多路径传输进一步提升冗余包和原始数据包中至少有一个送达的概率。Gandikota等人在工作中提出通过估算网络中的丢包率动态地调整冗余参数以实现对语音流中的重要子流进行保护同时再将编码后的数据包以及其他次要子流经过两个最大程度节点不相交路径在网络上与重要数据流分开传输以降低数据传输丢失概率、提升用户体验。Huang等人\cite{huang2010skypefec}通过测量Skype应用在不同丢包网络条件下的行为印证了相关冗余编码在提升实时语音通话用户体验方面的积极作用。
\begin{figure}[H]
\centering

View File

@@ -107,7 +107,7 @@ FEC解码器按编码组为单位批量恢复和交付数据包。当一个编
\item \textbf{残余丢包率约束}:编码后未被恢复的随机丢包率应低于阈值,确保应用层的丢包率在可接受范围内。
\end{enumerate}
最终在所有可行的$(d, k)$组合中,选择$k$值最大的组合作为最优编码参数,提供最强的冗余保护。上述参数调整过程构成了一个完整的反馈闭环:解码端持续检测丢包并上报统计信息,中心控制器计算最优参数并下发至编码端,编码端在下一编码组生效新参数。
最终在所有可行的$(d, k)$组合中,选择$k$值最大的组合作为最优编码参数,提供充足保护的前提下尽可能减少冗余带来的额外开销。上述参数调整过程构成了一个完整的反馈闭环:解码端持续检测丢包并上报统计信息,中心控制器计算最优参数并下发至编码端,编码端在下一编码组生效新参数。
\section{解码端输出速率控制设计}
\label{sec:pacer}

BIN
figures/.DS_Store vendored

Binary file not shown.

View File

@@ -1,19 +1,19 @@
<mxfile host="app.diagrams.net">
<diagram name="Page-1" id="pRk9n5Hroj8CZQHKseAZ">
<mxGraphModel dx="1099" dy="662" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<mxGraphModel dx="1107" dy="789" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="aodYnq9aT-QJlK0XWGdi-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="1" vertex="1">
<mxCell id="aodYnq9aT-QJlK0XWGdi-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="1" vertex="1">
<mxGeometry height="40" width="30" x="200" y="100" as="geometry" />
</mxCell>
<mxCell id="aodYnq9aT-QJlK0XWGdi-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="-" vertex="1">
<mxCell id="aodYnq9aT-QJlK0XWGdi-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="-" vertex="1">
<mxGeometry height="40" width="30" x="230" y="100" as="geometry" />
</mxCell>
<mxCell id="aodYnq9aT-QJlK0XWGdi-3" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="1" vertex="1">
<mxCell id="aodYnq9aT-QJlK0XWGdi-3" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="1" vertex="1">
<mxGeometry height="40" width="30" x="230" y="190" as="geometry" />
</mxCell>
<mxCell id="aodYnq9aT-QJlK0XWGdi-4" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="-" vertex="1">
<mxCell id="aodYnq9aT-QJlK0XWGdi-4" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="-" vertex="1">
<mxGeometry height="40" width="30" x="260" y="190" as="geometry" />
</mxCell>
<mxCell id="aodYnq9aT-QJlK0XWGdi-5" edge="1" parent="1" source="aodYnq9aT-QJlK0XWGdi-4" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;fontFamily=Microsoft YaHei;fontSize=15;" target="aodYnq9aT-QJlK0XWGdi-2" value="">
@@ -22,16 +22,16 @@
<mxPoint x="410" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="aodYnq9aT-QJlK0XWGdi-6" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=15;" value="发送数据包" vertex="1">
<mxGeometry height="30" width="80" x="100" y="105" as="geometry" />
<mxCell id="aodYnq9aT-QJlK0XWGdi-6" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=20;" value="发送数据包" vertex="1">
<mxGeometry height="30" width="110" x="70" y="105" as="geometry" />
</mxCell>
<mxCell id="aodYnq9aT-QJlK0XWGdi-7" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=15;" value="接收数据包" vertex="1">
<mxGeometry height="30" width="80" x="100" y="195" as="geometry" />
<mxCell id="aodYnq9aT-QJlK0XWGdi-7" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=20;" value="接收数据包" vertex="1">
<mxGeometry height="30" width="110" x="70" y="195" as="geometry" />
</mxCell>
<mxCell id="aodYnq9aT-QJlK0XWGdi-8" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="2" vertex="1">
<mxCell id="aodYnq9aT-QJlK0XWGdi-8" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="2" vertex="1">
<mxGeometry height="40" width="30" x="290" y="100" as="geometry" />
</mxCell>
<mxCell id="aodYnq9aT-QJlK0XWGdi-9" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="1" vertex="1">
<mxCell id="aodYnq9aT-QJlK0XWGdi-9" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="1" vertex="1">
<mxGeometry height="40" width="30" x="320" y="100" as="geometry" />
</mxCell>
<mxCell id="aodYnq9aT-QJlK0XWGdi-12" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;fontFamily=Microsoft YaHei;fontSize=15;" target="aodYnq9aT-QJlK0XWGdi-9" value="">
@@ -40,13 +40,13 @@
<mxPoint x="500" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-1" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=15;" value="(丢包)" vertex="1">
<mxGeometry height="30" width="80" x="310" y="190" as="geometry" />
<mxCell id="JE9ww42JQGTNpQLY7NL1-1" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=20;" value="(丢包)" vertex="1">
<mxGeometry height="30" width="100" x="300" y="190" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="3" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="3" vertex="1">
<mxGeometry height="40" width="30" x="380" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-3" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="2" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-3" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="2" vertex="1">
<mxGeometry height="40" width="30" x="410" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-4" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;fontFamily=Microsoft YaHei;fontSize=15;" target="JE9ww42JQGTNpQLY7NL1-3" value="">
@@ -55,19 +55,19 @@
<mxPoint x="590" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-5" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=15;" value="(丢包)" vertex="1">
<mxGeometry height="30" width="90" x="400" y="190" as="geometry" />
<mxCell id="JE9ww42JQGTNpQLY7NL1-5" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=20;" value="(丢包)" vertex="1">
<mxGeometry height="30" width="90" x="390" y="190" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-10" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="4" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-10" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="4" vertex="1">
<mxGeometry height="40" width="30" x="470" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-11" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="3" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-11" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="3" vertex="1">
<mxGeometry height="40" width="30" x="500" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-12" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="4" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-12" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="4" vertex="1">
<mxGeometry height="40" width="30" x="500" y="190" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-13" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="3" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-13" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="3" vertex="1">
<mxGeometry height="40" width="30" x="530" y="190" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-14" edge="1" parent="1" source="JE9ww42JQGTNpQLY7NL1-13" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;fontFamily=Microsoft YaHei;fontSize=15;" target="JE9ww42JQGTNpQLY7NL1-11" value="">
@@ -76,10 +76,10 @@
<mxPoint x="680" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-15" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="5" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-15" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="5" vertex="1">
<mxGeometry height="40" width="30" x="560" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-16" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="4" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-16" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="4" vertex="1">
<mxGeometry height="40" width="30" x="590" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-17" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;fontFamily=Microsoft YaHei;fontSize=15;" target="JE9ww42JQGTNpQLY7NL1-16" value="">
@@ -88,19 +88,19 @@
<mxPoint x="770" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-18" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=15;" value="(丢包)" vertex="1">
<mxGeometry height="30" width="80" x="578" y="190" as="geometry" />
<mxCell id="JE9ww42JQGTNpQLY7NL1-18" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=20;" value="(丢包)" vertex="1">
<mxGeometry height="30" width="102" x="570" y="190" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-19" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="6" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-19" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="6" vertex="1">
<mxGeometry height="40" width="30" x="650" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-20" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="5" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-20" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="5" vertex="1">
<mxGeometry height="40" width="30" x="680" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-21" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="6" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-21" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="6" vertex="1">
<mxGeometry height="40" width="30" x="680" y="190" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-22" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="5" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-22" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="5" vertex="1">
<mxGeometry height="40" width="30" x="710" y="190" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-23" edge="1" parent="1" source="JE9ww42JQGTNpQLY7NL1-22" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;fontFamily=Microsoft YaHei;fontSize=15;" target="JE9ww42JQGTNpQLY7NL1-20" value="">
@@ -109,10 +109,10 @@
<mxPoint x="860" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-24" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="7" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-24" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="7" vertex="1">
<mxGeometry height="40" width="30" x="740" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-25" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="6" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-25" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="6" vertex="1">
<mxGeometry height="40" width="30" x="770" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-26" edge="1" parent="1" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;fontFamily=Microsoft YaHei;fontSize=15;" target="JE9ww42JQGTNpQLY7NL1-25" value="">
@@ -121,19 +121,19 @@
<mxPoint x="950" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-27" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=15;" value="(丢包)" vertex="1">
<mxGeometry height="30" width="80" x="760" y="190" as="geometry" />
<mxCell id="JE9ww42JQGTNpQLY7NL1-27" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=20;" value="(丢包)" vertex="1">
<mxGeometry height="30" width="100" x="750" y="190" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-28" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="8" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-28" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="8" vertex="1">
<mxGeometry height="40" width="30" x="830" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-29" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="7" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-29" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="7" vertex="1">
<mxGeometry height="40" width="30" x="860" y="100" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-30" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="8" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-30" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="8" vertex="1">
<mxGeometry height="40" width="30" x="860" y="190" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-31" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=15;" value="7" vertex="1">
<mxCell id="JE9ww42JQGTNpQLY7NL1-31" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=20;" value="7" vertex="1">
<mxGeometry height="40" width="30" x="890" y="190" as="geometry" />
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-32" edge="1" parent="1" source="JE9ww42JQGTNpQLY7NL1-31" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;fontFamily=Microsoft YaHei;fontSize=15;" target="JE9ww42JQGTNpQLY7NL1-29" value="">
@@ -151,8 +151,8 @@
<mxPoint x="660" y="70" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JE9ww42JQGTNpQLY7NL1-34" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=15;" value="冗余包" vertex="1">
<mxGeometry height="30" width="60" x="658" y="54" as="geometry" />
<mxCell id="JE9ww42JQGTNpQLY7NL1-34" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=21;" value="冗余包" vertex="1">
<mxGeometry height="30" width="82" x="658" y="54" as="geometry" />
</mxCell>
</root>
</mxGraphModel>

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 186 KiB

View File

@@ -1,11 +1,14 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36" version="29.6.1">
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36">
<diagram name="Page-1" id="XFsPQCdYGFanFzXYCrvw">
<mxGraphModel dx="2584" dy="1604" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<mxGraphModel dx="3633" dy="1756" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="VbqpsosNBejxl444Ky3Y-127" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="" vertex="1">
<mxGeometry height="390" width="1090" x="40" y="370" as="geometry" />
<mxCell id="zT3JdDzlZwAcD7vq6iYm-7" parent="1" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#dae8fc;strokeColor=#6c8ebf;size=170;" value="" vertex="1">
<mxGeometry height="406" width="1390" x="-110" y="370" as="geometry" />
</mxCell>
<mxCell id="zT3JdDzlZwAcD7vq6iYm-6" parent="1" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#d5e8d4;strokeColor=#82b366;size=100;" value="" vertex="1">
<mxGeometry height="250" width="1230" x="-30" y="10" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-21" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;dashed=1;" value="" vertex="1">
<mxGeometry height="210" width="388" x="710" y="390" as="geometry" />
@@ -214,8 +217,8 @@
<mxPoint x="690" y="290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-116" parent="1" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;" value="&lt;span style=&quot;font-size: 18px; background-color: rgb(255, 255, 255);&quot;&gt;跨域全球&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;font-size: 18px; background-color: rgb(255, 255, 255);&quot;&gt;骨干网络&lt;/span&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="120" width="140" x="510" y="518.5" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-116" parent="1" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=30;" value="&lt;span style=&quot;background-color: rgb(255, 255, 255);&quot;&gt;跨域全球&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;background-color: rgb(255, 255, 255);&quot;&gt;骨干网络&lt;/span&gt;&lt;/div&gt;" vertex="1">
<mxGeometry height="180" width="230" x="460" y="491" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-117" edge="1" parent="1" source="VbqpsosNBejxl444Ky3Y-98" style="curved=1;endArrow=none;html=1;rounded=0;entryX=0.229;entryY=0.838;entryDx=0;entryDy=0;endFill=0;strokeWidth=3;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" target="VbqpsosNBejxl444Ky3Y-116" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
@@ -244,139 +247,114 @@
<mxPoint x="778" y="807" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-121" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=16;fontFamily=Microsoft YaHei;fontStyle=1" value="数据中心A" vertex="1">
<mxGeometry height="30" width="110" x="330" y="570" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-121" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=30;fontFamily=Microsoft YaHei;fontStyle=1" value="数据中心A" vertex="1">
<mxGeometry height="30" width="160" x="278" y="566" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-122" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=16;fontFamily=Microsoft YaHei;fontStyle=1" value="数据中心B" vertex="1">
<mxGeometry height="30" width="110" x="720" y="572" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-122" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=30;fontFamily=Microsoft YaHei;fontStyle=1" value="数据中心B" vertex="1">
<mxGeometry height="30" width="160" x="727" y="568" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-123" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=16;fontFamily=Microsoft YaHei;fontStyle=1" value="数据中心C" vertex="1">
<mxGeometry height="30" width="110" x="330" y="701.5" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-123" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=30;fontFamily=Microsoft YaHei;fontStyle=1" value="数据中心C" vertex="1">
<mxGeometry height="30" width="160" x="279" y="697.5" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-125" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=16;fontFamily=Microsoft YaHei;fontStyle=1" value="数据中心D" vertex="1">
<mxGeometry height="30" width="110" x="720" y="700" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-125" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=30;fontFamily=Microsoft YaHei;fontStyle=1" value="数据中心D" vertex="1">
<mxGeometry height="30" width="160" x="731" y="698" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-128" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="物理底层网络&lt;div&gt;Underlay Network&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="220" x="-190" y="520" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-128" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=32;fontFamily=Microsoft YaHei;" value="物理底层网络&lt;div&gt;Underlay Network&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="350" x="-360" y="419" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-129" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" value="" vertex="1">
<mxGeometry height="100" width="1090" x="40" y="180" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-130" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontSize=20;fillColor=#f8cecc;strokeColor=#b85450;fontFamily=Microsoft YaHei;" value="虚拟机" vertex="1">
<mxGeometry height="60" width="320" x="70" y="200" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-133" edge="1" parent="1" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fillColor=#d0cee2;strokeColor=#56517e;endWidth=20.833333333333336;endSize=6;startSize=6;strokeWidth=1;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="217.41" y="350" as="sourcePoint" />
<mxPoint x="217.41" y="300" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-135" edge="1" parent="1" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;fillColor=#d0cee2;strokeColor=#56517e;endWidth=20.833333333333336;endSize=6;startSize=6;strokeWidth=1;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="903.41" y="350" as="sourcePoint" />
<mxPoint x="903.41" y="300" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-136" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="计算资源虚拟化" vertex="1">
<mxGeometry height="60" width="220" x="228" y="300" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-137" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="网络资源虚拟化" vertex="1">
<mxGeometry height="60" width="220" x="896" y="300" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-138" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontSize=20;fillColor=#f8cecc;strokeColor=#b85450;fontFamily=Microsoft YaHei;" value="虚拟交换机/虚拟路由器/虚拟链路" vertex="1">
<mxGeometry height="60" width="321" x="761" y="200" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-139" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="网络虚拟化&amp;amp;抽象" vertex="1">
<mxGeometry height="60" width="220" x="-190" y="200" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-140" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" value="" vertex="1">
<mxGeometry height="250" width="1084" x="46" y="-100" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-141" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="虚拟覆盖网络&lt;div&gt;Overlay Network&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="220" x="-190" y="-4" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-143" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=18;fillColor=#d0cee2;strokeColor=#56517e;" value="封装与解封装e.g. VXLAN" vertex="1">
<mxGeometry height="60" width="260" x="623" y="300" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-141" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=32;fontFamily=Microsoft YaHei;" value="虚拟覆盖网络&lt;div&gt;Overlay Network&lt;/div&gt;" vertex="1">
<mxGeometry height="60" width="350" x="-360" y="80" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-150" parent="1" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#ffe6cc;strokeColor=#d79b00;size=80;" value="" vertex="1">
<mxGeometry height="210" width="500" x="300" y="-90" as="geometry" />
<mxGeometry height="210" width="630" x="240" y="20" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-142" parent="1" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=18;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="VM1" vertex="1">
<mxGeometry height="50" width="88" x="410" y="-70" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-142" parent="1" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=30;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="VM1" vertex="1">
<mxGeometry height="50" width="88" x="430" y="40" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-144" parent="1" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=18;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="VM2" vertex="1">
<mxGeometry height="50" width="88" x="342" y="50" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-144" parent="1" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=31;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="VM2" vertex="1">
<mxGeometry height="50" width="88" x="362" y="160" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-145" parent="1" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=18;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="VM3" vertex="1">
<mxGeometry height="50" width="88" x="662" y="-70" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-145" parent="1" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=30;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="VM3" vertex="1">
<mxGeometry height="50" width="88" x="682" y="40" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-146" edge="1" parent="1" source="VbqpsosNBejxl444Ky3Y-144" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0.409;entryY=0.956;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=3;" target="VbqpsosNBejxl444Ky3Y-142" value="">
<mxCell id="VbqpsosNBejxl444Ky3Y-146" edge="1" parent="1" source="VbqpsosNBejxl444Ky3Y-144" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0.409;entryY=0.956;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=3;fontColor=#000000;textShadow=1;labelBorderColor=default;" target="VbqpsosNBejxl444Ky3Y-142" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="650" y="170" as="sourcePoint" />
<mxPoint x="700" y="120" as="targetPoint" />
<mxPoint x="670" y="280" as="sourcePoint" />
<mxPoint x="720" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-147" edge="1" parent="1" source="VbqpsosNBejxl444Ky3Y-145" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=3;" target="VbqpsosNBejxl444Ky3Y-142" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="580" y="142" as="sourcePoint" />
<mxPoint x="640" y="70" as="targetPoint" />
<mxPoint x="600" y="252" as="sourcePoint" />
<mxPoint x="660" y="180" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-148" edge="1" parent="1" source="VbqpsosNBejxl444Ky3Y-144" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=3;" target="VbqpsosNBejxl444Ky3Y-145" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="520" y="132" as="sourcePoint" />
<mxPoint x="580" y="60" as="targetPoint" />
<mxPoint x="540" y="242" as="sourcePoint" />
<mxPoint x="600" y="170" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-152" edge="1" parent="1" source="VbqpsosNBejxl444Ky3Y-142" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=1;exitDx=0;exitDy=0;strokeWidth=3;" target="VbqpsosNBejxl444Ky3Y-157" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="490" y="92" as="sourcePoint" />
<mxPoint x="602" y="50" as="targetPoint" />
<mxPoint x="510" y="202" as="sourcePoint" />
<mxPoint x="622" y="160" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-153" edge="1" parent="1" source="VbqpsosNBejxl444Ky3Y-144" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;strokeWidth=3;" target="VbqpsosNBejxl444Ky3Y-157" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="550" y="70" as="sourcePoint" />
<mxPoint x="602" y="84.5" as="targetPoint" />
<mxPoint x="570" y="180" as="sourcePoint" />
<mxPoint x="622" y="194.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-154" edge="1" parent="1" source="VbqpsosNBejxl444Ky3Y-145" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=3;" target="VbqpsosNBejxl444Ky3Y-157" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="670" y="100" as="sourcePoint" />
<mxPoint x="636.5" y="50" as="targetPoint" />
<mxPoint x="690" y="210" as="sourcePoint" />
<mxPoint x="656.5" y="160" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-155" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="逻辑链路" vertex="1">
<mxGeometry height="60" width="220" x="360" y="-15" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-155" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=30;fontFamily=Microsoft YaHei;" value="逻辑链路" vertex="1">
<mxGeometry height="60" width="220" x="250" y="80" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-156" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="虚拟节点" vertex="1">
<mxGeometry height="60" width="220" x="430" y="-100" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-156" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=30;fontFamily=Microsoft YaHei;" value="虚拟节点" vertex="1">
<mxGeometry height="60" width="220" x="480" y="10" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-157" parent="1" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=18;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="VM4" vertex="1">
<mxGeometry height="50" width="88" x="599" y="60" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-157" parent="1" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=30;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="VM4" vertex="1">
<mxGeometry height="50" width="88" x="619" y="170" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-158" parent="1" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;" value="&lt;span style=&quot;font-size: 18px; background-color: rgb(255, 255, 255);&quot;&gt;用户&lt;/span&gt;" vertex="1">
<mxGeometry height="120" width="140" x="902" y="-35" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-158" parent="1" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=30;" value="&lt;span style=&quot;background-color: rgb(255, 255, 255);&quot;&gt;用户&lt;/span&gt;" vertex="1">
<mxGeometry height="120" width="140" x="936" y="75" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-159" edge="1" parent="1" source="VbqpsosNBejxl444Ky3Y-145" style="curved=1;endArrow=none;html=1;rounded=0;entryX=0.25;entryY=0.25;entryDx=0;entryDy=0;endFill=0;strokeWidth=3;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" target="VbqpsosNBejxl444Ky3Y-158" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<Array as="points">
<mxPoint x="850" y="-40" />
<mxPoint x="870" y="70" />
</Array>
<mxPoint x="761" y="74" as="sourcePoint" />
<mxPoint x="858" y="20" as="targetPoint" />
<mxPoint x="781" y="184" as="sourcePoint" />
<mxPoint x="878" y="130" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-160" parent="1" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;" value="&lt;span style=&quot;font-size: 18px; background-color: rgb(255, 255, 255);&quot;&gt;用户&lt;/span&gt;" vertex="1">
<mxGeometry height="120" width="140" x="60" y="-80" as="geometry" />
<mxCell id="VbqpsosNBejxl444Ky3Y-160" parent="1" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fontFamily=Microsoft YaHei;fontSize=30;" value="&lt;span style=&quot;background-color: rgb(255, 255, 255);&quot;&gt;用户&lt;/span&gt;" vertex="1">
<mxGeometry height="120" width="140" x="80" y="30" as="geometry" />
</mxCell>
<mxCell id="VbqpsosNBejxl444Ky3Y-161" edge="1" parent="1" source="VbqpsosNBejxl444Ky3Y-160" style="curved=1;endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endFill=0;strokeWidth=3;exitX=0.75;exitY=0.867;exitDx=0;exitDy=0;exitPerimeter=0;" target="VbqpsosNBejxl444Ky3Y-144" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<Array as="points">
<mxPoint x="240" y="75" />
<mxPoint x="260" y="185" />
</Array>
<mxPoint x="560" y="-210" as="sourcePoint" />
<mxPoint x="722" y="-152" as="targetPoint" />
<mxPoint x="580" y="-100" as="sourcePoint" />
<mxPoint x="742" y="-42" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="zT3JdDzlZwAcD7vq6iYm-1" edge="1" parent="1" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;endWidth=89;endSize=17;width=91;fillColor=#e1d5e7;strokeColor=#9673a6;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="589.89" y="360" as="sourcePoint" />
<mxPoint x="588.89" y="270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="zT3JdDzlZwAcD7vq6iYm-4" connectable="0" parent="zT3JdDzlZwAcD7vq6iYm-1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;fontFamily=Microsoft YaHei;fontSize=35;" value="抽象" vertex="1">
<mxGeometry relative="1" x="-0.0985" y="-7" as="geometry">
<mxPoint x="-8" y="1" as="offset" />
</mxGeometry>
</mxCell>
</root>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 3.9 MiB

View File

@@ -21,7 +21,7 @@
% 标题
% 可使用“\\”命令手动控制换行
%
title = {跨国公网链路传输优化方法研究},
title = {面向传输性能提升的跨域\\覆盖网络链路优化方法研究},
title* = {To be filled},
%
% 学科门类