计算机网络自顶向下方法34——网络层 排队论 缓存大小调节 分组调度 网络中立性

网络层深度解析(三):排队论与分组调度

排队发生在网络资源需求超过其瞬时容量的任何地方。理解排队的位置、规模和调度方式,是分析网络性能的基石。

一、何处出现排队?

排队主要发生在路由器的输入端口输出端口。其位置对路由器性能有着截然不同的影响。

1. 输出端口排队

  • 这是最常见、最主要的排队发生地。

  • 产生原因 :所有输入端口可能同时有数据包要发往同一个输出端口。即使交换结构的交换速率远高于单个链路速率,当多个输入端口同时向一个输出端口发送数据时,该输出端口的发送速率仍会成为瓶颈。

  • 队列管理 :每个输出端口都维护着一个输出队列(也称为缓存)。当数据包从交换结构到达输出端口,而该端口正在发送另一个数据包时,后到的数据包必须在队列中等待。

2. 输入端口排队

  • 产生原因 :当交换结构的速率慢于所有输入端口速率之和时,即使目的地不同,数据包也可能在输入端口被阻塞。

  • HOL阻塞:这是输入排队的一个致命问题。

    • 场景:假设输入队列前端有两个包,第一个包要发往输出端口Y,第二个包要发往输出端口Z。如果输出端口Y正忙,即使输出端口Z空闲,第二个包也必须等待第一个包被服务,因为它被队首的包"堵"住了。

    • 影响 :HOL阻塞会显著降低交换结构的利用率(在最坏情况下可降至约59%)。

  • 解决方案 :采用虚拟输出队列 。即为每个输入端口维护N个队列,每个队列对应一个输出端口。交换调度器可以查看所有输入端口的所有队列首部,从而绕过被阻塞的包,调度那些输出端口空闲的包。这几乎可以消除HOL阻塞。

二、多少缓存才"够用"?

这是一个在网络工程界争论已久的问题。

1. 传统经验法则

  • 带宽延迟积 :一个广为流传的经验法则是为每条链路提供 C × RTT 的缓存。

    • C:是链路的容量(bps)。

    • RTT:是典型的往返时间(s)。

  • 原理 :目的是为了填满一条端到端的TCP连接管道,使其能持续以满速率发送,而不至于因为缓存过小而限制其吞吐量。

  • 举例 :一条10Gbps链路,RTT为250ms,则建议缓存大小为:10e9 bps × 0.25 s = 2.5e9 bits ≈ 300 MB

2. 现代观点与争议

  • 问题 :在拥有大量并行流(如核心路由器)的链路上,C × RTT 规则会导致严重过大的缓存 。这会造成巨大的"缓冲区膨胀",导致所有流经历极高的排队延迟,即 "缓冲块" 现象。

  • 新思路 :对于拥有大量独立流(N)的链路,所需的缓存大小应约为 C × RTT / √N

  • 结论 :没有放之四海而皆准的答案。缓存大小的设置需要在吞吐量延迟之间进行权衡:

    • 大缓存:高吞吐量,但高延迟。

    • 小缓存:低延迟,但可能因频繁丢包而降低吞吐量。

三、分组调度算法

当队列中有多个数据包在等待时,调度算法决定下一个发送谁。这直接影响了公平性、延迟和保障。

1. 先进先出

  • 机制:最简单,按照数据包到达队列的顺序进行发送。

  • 特点

    • 不公平:一个贪婪的流可以占满整个队列,饿死其他流。

    • 无优先级:所有数据包被同等对待。

2. 优先权排队

  • 机制 :将流量划分为多个优先级队列 。调度器总是先发送非空的高优先级队列中的包,仅当所有更高优先级队列为空时,才发送低优先级队列的包。

  • 特点

    • 绝对优先:可以保证对延迟敏感的流量(如VoIP)获得优先服务。

    • 可能饿死低优先级流量:如果高优先级流量持续不断,低优先级流量可能永远得不到服务。

3. 循环调度

  • 机制:维护多个队列。调度器依次轮询每个队列,如果队列非空,则发送该队列的一个包,然后立即移动到下一个队列。

  • 特点

    • 粗粒度公平:确保每个队列都能获得大致相等的服务机会。

    • 不考虑包长:一个队列如果都是大包,它实际获得的带宽会比其他队列多。

4. 加权公平排队

  • 机制 :这是最复杂也最理想的调度算法之一。它为每个队列 i 分配一个权重 w_i

  • 工作方式 :WFQ近似地模拟了一种广义处理器共享模型。在每个时间点,它计算每个队列应获得的"服务量",并据此进行调度。

  • 特点

    • 权重保障 :每个队列 i 能保证获得的带宽份额为:w_i / (所有队列权重之和) × 链路容量

    • 考虑包长:调度是基于"比特"而非"包"进行的,更加公平。

    • 隔离性:一个行为不佳的流(发送过多数据)不会影响其他遵守规则的流获得其应得的带宽份额。

四、排队、调度与网络中立性

1. 什么是网络中立性?

这是一个监管和社会性议题,其核心原则是:互联网服务提供商(ISP)应对所有互联网流量一视同仁,不应基于内容、来源、目的地或应用进行歧视、限制或收费。

2. 分组调度如何关联网络中立性?

  • "中立"的调度器 :像FIFORR这样的算法本质上是"中立"的,它们不区分流量类型。

  • "非中立"的调度器 :像PQWFQ 这样的算法,其设计目的就是区分 流量,并为某些流量提供更好的服务

    • 良性使用:ISP可以用WFQ为语音通话提供低延迟保障,这被视为合理的网络管理。

    • 争议使用 :ISP可以用PQ来降级或** throttling **来自竞争对手(如Netflix)的流量,同时优先传输自己的视频服务流量。这被视为违反了网络中立性原则。

3. 核心争议

  • 支持网络中立性:认为互联网应是一个公平的竞争环境,ISP不应成为"看门人",利用调度技术来挑选赢家和输家。

  • 反对网络中立性:认为ISP应该有权管理自己的网络,并通过提供差异化的服务质量来创造新的商业模式和创新。

总结
  • 排队位置输出排队 是常态,而输入排队 及其引发的HOL阻塞是限制高性能路由器吞吐量的关键问题。

  • 缓存大小 :需要在高吞吐量低延迟 之间权衡,传统C × RTT法则可能不适用于拥有大量流的核心路由器。

  • 调度算法 :从简单的FIFO 到公平的WFQ,算法决定了带宽分配和延迟特性,是实现流量管理和服务质量的基础。

  • 网络中立性:分组调度技术本身是中立的,但其使用方式却处于网络中立性这一重大社会和政策辩论的核心。技术选择背后,是关于互联网未来形态的深刻抉择。

相关推荐
0和1的舞者2 小时前
网络通信的奥秘:HTTP详解 (六)
网络·网络协议·计算机网络·http·https·计算机科学与技术
甄心爱学习5 小时前
计算机网络10
计算机网络
Wish3D8 小时前
查看计算机网络端口是被哪个应用占用
计算机网络
磊 子9 小时前
计算机网络概述
网络·计算机网络
yy179626100121 小时前
计算机网络分层基础概念
计算机网络
报错小能手1 天前
计算机网络自顶向下方法41——网络层 自治系统内部的路由选择:开放最短路优先(OSPF)设置OSPF链路权值
网络·计算机网络·智能路由器
kyle~1 天前
计算机网络---安全外壳协议(SSH,Secure Shell)
运维·计算机网络·安全·ssh
报错小能手1 天前
计算机网络自顶向下方法39——网络层 中间盒 互联网架构原则(IP沙漏 端到端原则)
tcp/ip·计算机网络·架构
广州服务器托管1 天前
WIN11.26H1.27982.1中简优化版 45进程(2025.11.8)
运维·人工智能·计算机网络·云计算·可信计算技术