当前位置: 首页 > news >正文

计算机网络自顶向下方法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,算法决定了带宽分配和延迟特性,是实现流量管理和服务质量的基础。

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

http://www.dtcms.com/a/572831.html

相关文章:

  • 网站怎么做适配南通网站建设培训
  • 本地缓存与分布式缓存:深入解析与多级缓存架构实践
  • 【C语言实战(73)】深入C语言网络编程:UDP与TCP的实战对决
  • 健身房预约系统SSM+Mybatis(五、预约展示)
  • 记录对某985证书站挖掘
  • 解决 Chrome 无法访问网页但无痕模式下可以访问该网页 的问题
  • 探索LoSA:动态低秩稀疏自适应——大模型高效微调的新突破
  • wordpress表格插件网站建设关键词优化价格
  • Gitlab+Jenkins+Docker+Harbor+K8s+Rancher集群搭建CICD平台
  • Linux服务器安装jdk和maven详解
  • 回归、预测、分类三者关系
  • 微信平台微网站开发乙肝能治好吗
  • Skill 与 Workflow:让自动化更“聪明”的系统架构
  • AI+Python近红外光谱分析机器学习与深度学习实战,覆盖提示词撰写、数据预处理、回归/神经网络/集成学习/迁移学习/可解释性可视化等
  • ESP8266植入程序实现MQTT控制
  • 突击宝典:pytorch面试高频考点精析
  • 建设公司网站的背景意义上海网站开发设计培训
  • 电子商务网站的建设和流程就业培训机构有哪些
  • ICML 2025|基于大语言模型的多比特文本水印方法
  • 在 iOS 18 自动填充密码失败,如何排查?
  • Facebook海外推广:什么样的Facebook账号更好爆量?
  • vue 使用vueCli 搭建vue2.x开发环境,并且指定ts 和less
  • 在 iOS 18 离线徒步地图,如何存储和调用?
  • 【iOS】UICollectionView
  • 广东电白建设集团有限公司网站宫免费网站
  • 混淆 iOS 类名与变量名的实战指南,多工具组合把混淆做成工程能力(混淆 iOS 类名变量名/IPA 成品混淆Ipa/Guard CLI 实操)
  • sysstat 概览与使用:sar/iostat/mpstat/pidstat(含基础原理)
  • 纯flex布局来写瀑布流
  • 智能网联汽车与低空经济‌:结合5G技术拓展新兴产业
  • RDD的特点、算子与创建方法