计网Chapter2-3_P2P视频流DASH与CDN可扩展性

Chapter 2.3:P2P、视频流、DASH 与 CDN 的可扩展性

Chapter 2.3 的主线是应用层系统的可扩展性。当很多用户同时下载文件或观看视频时,中心服务器很容易成为瓶颈。P2P、DASH 和 CDN 分别从上传能力、码率选择和内容位置三个角度解决规模问题。


本节核心结论: 大规模应用不能只依赖中心服务器;P2P 分散上传能力,DASH 让客户端适应网络变化,CDN 把内容副本放到更靠近用户的位置。

1. P2P 的基本思想

P2P 的基本单位是 peer。在纯 P2P 架构中,几乎没有一直运行的中心服务器,任意端系统之间可以直接通信。每个节点既可以请求服务,也可以提供服务。

P2P 的自扩展性来自一个关键事实:新节点加入时,一方面增加下载需求,另一方面也带来上传能力。当节点越多时,系统负担增加,但可用服务能力也可能同步增加。

这张图强调 P2P 的文件分发不是“所有人只从服务器下载”,而是 peer 之间也会交换数据块。初始源节点把文件注入系统后,下载到块的 peer 也能继续上传给别人。

2. C/S 与 P2P 文件分发时间

设文件大小为 F,peer 数量为 N,服务器上传速率为 u_s,第 i 个 peer 上传速率为 u_i,第 i 个 peer 下载速率为 d_i,所有 peer 中最小下载速率为 d_min

在 C/S 模式下,服务器至少要上传 N 份文件,总上传量是 NF,所以服务器侧时间下界是:

1
NF / u_s

最慢客户端下载一份文件至少需要:

1
F / d_min

因此 C/S 分发时间满足:

1
D_cs >= max{ NF/u_s, F/d_min }

这说明 C/S 模式下,随着 N 增大,服务器上传压力线性增大。

在 P2P 模式下,服务器或初始源节点至少要上传一份完整文件:

1
F / u_s

最慢 peer 仍然至少要下载一份:

1
F / d_min

所有 peer 总共需要下载 NF 数据,而总上传能力是 u_s + Σu_i,因此还有下界:

1
NF / (u_s + Σu_i)

所以 P2P 分发时间满足:

1
D_p2p >= max{ F/u_s, F/d_min, NF/(u_s + Σu_i) }

P2P 的关键优势在第三项:N 增大时,总需求 NF 增加,但总上传能力 u_s + Σu_i 也随 peer 增加而增加。

3. u_s 是否意味着 P2P 有中心服务器

公式里的 u_s 不一定表示传统 C/S 中长期承担全部下载压力的中心服务器。它表示最初拥有完整文件的源节点或初始种子节点的上传速率。

哪怕是 P2P,文件一开始也必须由某个节点拥有完整副本。课件为了推导方便,把这个源节点称为 server,并记作 u_s。它的作用是把文件至少注入系统一次,之后 peer 之间可以互相分发。

如果课件记号中 N 表示下载的 peer 数量,那么总上传能力是:

1
u_s + Σ(i=1..N) u_i

如果自己把“总共 n 个节点”定义为包含初始源节点在内,那么剩余 peer 数量是 n - 1,总上传能力可以写成:

1
u_s + Σ(i=1..n-1) u_i

关键是先说明 N 是否包含初始源节点。

4. BitTorrent:分块交换与互惠机制

BitTorrent 是 P2P 文件分发的典型例子。它不会让每个 peer 一次下载完整文件,而是把文件分成多个 chunk 或 block,各 peer 之间交换不同块。

新节点加入 torrent 时,大致经历:

  1. 向 tracker 注册。
  2. 获得 peer 列表。
  3. 与部分 peer 建立连接。
  4. 从不同 peer 下载文件块。
  5. 把自己已有的块上传给其他 peer。

两个核心策略是 rarest first 和 tit-for-tat。

rarest first 指优先请求网络中最稀缺的块。这样可以避免某些块过少,导致后期大量 peer 都卡在同一个缺失块上。

tit-for-tat 指优先给上传给自己最快的 peer 回传数据,同时定期随机选择额外 peer 进行试探。这既鼓励互惠,也给新节点进入交换关系的机会。

5. 视频流服务为什么困难

视频流量占据互联网很大比例。视频服务的难点主要有两个:

  • 规模性:如何同时服务海量用户。
  • 异构性:不同用户的带宽、设备、网络路径和稳定性差异很大。

视频本质上是按固定速率播放的图像序列。原始视频数据量巨大,因此必须压缩。压缩主要利用两类冗余:

  • 空间冗余:同一帧内部有大量相似像素。
  • 时间冗余:相邻帧之间变化通常不大。

存储型流媒体还面临 continuous playout constraint,即播放必须连续。网络中存在 jitter、丢包、重传和用户快进快退,因此客户端需要 playout buffer 来吸收网络波动。


机制理解: 缓冲区不是为了提高画质,而是为了让不稳定的网络传输变成尽量稳定的播放体验。

6. DASH:动态自适应 HTTP 流媒体

DASH 全称是 Dynamic Adaptive Streaming over HTTP。它的核心思想是:把视频分成块,为每个块准备多个码率版本,让客户端根据网络状况动态选择。

服务器端负责:

  1. 将视频文件切成多个块。
  2. 为每个块编码多个码率版本。
  3. 把块复制到服务器或 CDN 节点。
  4. 提供 manifest file,列出各块和各码率版本的 URL。

客户端负责:

  1. 获取 manifest file。
  2. 判断什么时候请求下一个块。
  3. 根据带宽和缓冲区选择码率。
  4. 选择从哪个服务器或 CDN 节点请求。

当网络好时,客户端请求高码率块;当网络变差时,客户端请求低码率块。因此视频清晰度可能在播放过程中自动升降。

7. CDN:把内容放到更靠近用户的位置

CDN 是 Content Distribution Network,内容分发网络。它解决的问题是:如何把视频、图片、网页等内容稳定地分发给大量用户。

单个 mega-server 不可扩展,原因包括路径远、瓶颈链路多、重复长距离传输浪费带宽、单点故障、中心服务器和周边网络容易拥塞。

CDN 的基本思想是:在全网部署缓存节点,把内容复制到多个位置,用户请求时导向较近或网络状况较好的副本。

两类部署策略是:

策略 含义 优点 缺点
enter deep 把 CDN 节点深入部署到许多接入网 离用户近 节点多,管理复杂
bring home 在少数关键位置或 IXP 附近部署集群 管理简单 离部分用户较远

8. DASH 与 CDN 如何配合

DASH 决定“请求什么质量的视频块”,CDN 决定“从哪里请求这些块”。两者常常一起工作。

这张图展示了两层选择:DNS/CDN 先帮助客户端找到合适节点,DASH 再让客户端根据当前带宽和缓冲区选择合适码率的视频块。

CDN 常借助 DNS/CNAME 重定向用户。用户访问内容网站时,网站可能返回指向 CDN 域名的 CNAME;随后 CDN 的 DNS 系统选择合适节点,客户端再通过 HTTP 请求内容。

9. 易混点

P2P 不是完全没有任何服务器。实际系统中可能有 tracker、索引服务器、认证服务器等辅助组件,但文件块主要在 peer 之间交换。

DASH 和 CDN 不是同一件事。DASH 解决码率自适应,CDN 解决内容位置和分发路径。

缓冲区不是为了提高画质,而是为了抵抗 jitter 和短期吞吐波动。

u_s 不一定是传统中心服务器,它可以表示初始源节点或 original seed 的上传能力。

10. 复习清单

学完本节后,应能回答:

  • P2P 为什么具有自扩展性?
  • C/S 文件分发时间为什么会随 N 线性增长?
  • D_csD_p2p 的公式中每一项分别来自什么限制?
  • BitTorrent 中 tracker、torrent、chunk 分别是什么?
  • rarest first 为什么有助于文件分发?
  • tit-for-tat 如何抑制只下载不上传?
  • 视频流服务为什么需要编码、DASH 和缓冲区?
  • DASH 的服务器端和客户端分别做什么?
  • CDN 为什么比 mega-server 更可扩展?
  • CDN 如何通过 DNS/CNAME 把用户导向合适节点?
  • u_s + Σu_i 中的 u_s 应如何理解?

最终总结: Chapter 2.3 的核心是可扩展性:P2P 让用户参与上传,DASH 让客户端适应网络变化,CDN 让内容靠近用户。这三类机制共同说明,大规模应用层系统必须把能力分布到网络边缘和多个节点上。