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

从对等通信到万维网:通信模型变迁与拥塞求解

Leonard Kleinrock:我很清楚用不了多久这些计算机就会有相互通信的需求,但如何协调处理这些分时系统概率性产生的分组(不同于电路交换),却没有有效的方法,我有处理该问题的方法,因此对于我的博士研究,我决定创造一种数学理论来建模,评价,设计和优化有效和可靠的数据网络。

这是分叫交换网络的理论鼻祖,我们如今的网络分析理论多数来自于他的理论,如排队论建模。有了理论基础,网络便开始建设。

1960 年代末,最初的分组网(前身 ARPAnet)如下(来自 RFC33):

                                 SRI
                                _____
                               /     \
                              |  XDS  |
                              |  940  |
                               \_____/
                                  |
                            +----------+
                            |    IMP   |
                            +----------+
                             /   |    \
                            /    |     \
                           /     |      \  +----+    _____
                          /      |       \ | I  |   /     \
       ______     +----+ /       |        \| M  |--|  DEC  |
      /      \    | I  |/        |         | P  |  | PDP-10|
     |   IBM  |---| M  |         |         +----+   \_____/
     | 360/75 |   | P  |\        |
      \______/    +----+ \       |                    UTAH
                          \      |
        UCSB               \     |
                          +----------+
                          |    IMP   |
                          +----------+
                               |
                            ___|___
                           /       \
                          |   XDS   |
                          |(sigma)-7|
                           \_______/

                             UCLA

   Figure 1 Initial network configuration

网络旨在连接主机到主机,人坐在主机前与远端另一台相同或相似的主机通信,就像人们打电话一样。这种通信模型就是对等通信。面临的问题可想而知:

Vinton G. Cerf:假定我们不能实际改变这些网络本身,那么怎样才能让异构的分组网络彼此之间互操作呢?我们希望找到一种方法可以使任意多的分组网络以透明的方式进行互联,以便主机彼此之间不做任何转换就能进行端到端通信。

这愿景导致了 TCP/IP 诞生。

1986 年一次偶然的网络拥塞崩溃事件引起了人们的注意,幸亏 VJ 恰好在 1988 年摸清了 TCP 的网络动力学,即 “VJ 管道” 和 “TCP self-clock” 并完成了拥塞控制的理论实践,而在此之前,RFC791 只是一个纯端到端协议,没有任何网络感知和反馈机制:

Van Jacobson(VJ):我无法弄明白它失效的原因是我不理解它究竟如何开始运转的(不失效时正常运转的机理),它迫使我们弄明白了驱动 TCP 运转的 ACK 时钟,从那以后,其它事就容易了。

TCP Tahoe/Reno 为即将到来的拥塞时代做好了准备,紧接着 1989 年,万维网诞生了:

Berners-Lee:Web 页面和链接的行为规则,制造了一个大范围的万维网世界。

这改变了网络的拓扑,互联网节点从正态分布趋向幂律分布,这意味着拥塞将更加普遍并难以预测。

自 1969 年开始 ARPAnet,经过 1981 年标准化 TCP/IP,1983 年元旦完成 TCP/IP 的全面部署,互联网彻底实现互联,1986 年拥塞崩溃事件促使 1988 年完成拥塞控制理论基础以及 TCP Tahoe/Reno 实现,一切恰似上天的安排,做好准备迎接 1989 年万维网的诞生。

万维网通信和曾经的对等通信有什么本质不同。内容单向分发的通信模型并非核心,核心是连接形成的方式。

在对等通信中,节点就是主机(确切说是主机程序),它的处理能力和实际信息需求决定了指向它连接的数量,以电子邮件为例,只要处理邮件的是人,同时 n(n 很大) 对 1 的通信就不可能。可以将对等通信规模对应于现实世界的通信规模,两者极为相似。

但 Web 万维网不同,它的节点是文档,连接是超链接,这是一个虚拟的,overlay 于互联网之上的,几乎可无限扩展的优先连接网络,而优先连接正是幂律成因之一。从理论上分析,这种网络中出现巨无霸的超级节点是必然的,且这种节点的规模呈幂律分布。从现实的互联网对万维网超级节点访问,就是同时 n 对 1 的通信,这就产生了拥塞:
在这里插入图片描述

某种意义上讲,Web 就是互联网,互联网只是万维网的一个前端。超级站点的出现,HTTP over TCP 就成了协议瓶颈,而 TCP 原本并不适合这种多对一的通信模式。TCP/IP 使主机对之间可以 “交谈”,但 Web 用于分布信息的生产和消耗。“信息传播” 是一种广义意义上的通信,而 “成对交谈” 只是其中一个很小的子集。

我们确实需要一个专门为 Web 信息分发构建的通信协议,因为 TCP(包括 QUIC) 应对这种通信模型是非常低效的。如今内容提供商纷纷部署 CDN,这改变了互联网结构,使其更加扁平化,让终端更高效得内容:
在这里插入图片描述

这是好事。但拥塞只是向下转移到了接入侧,即最后一公里,超级站点变成了多个大型站点。

伯纳斯李(Berners-Lee)的初衷是为了方便研究人员之间共享和交流信息,随后他提出了一个基于超文本的信息系统的设想,旨在将各种不同类型的信息,如文档、图像、声音等,通过超链接连接在一起,使同事们能够方便地在不同的信息之间进行跳转。

就像 TCP/IP 最终走向商业化一样,Web 技术以更快的速度传播和推广,已经与初衷一点也不像了。为了使用如此具有吸引力的 Web,人们被迫在规模小得多的 TCP/IP 互联网上映射万维网,互联网变得拥挤不堪。

仔细观察万维网和互联网的拓扑,就能发现它们在拓扑上根本的不同。万维网是虚拟的点对点直连拓扑,两个 URI 通过超链接直连,而互联网涉及布线和管理成本,则紧凑得多,与直连拓扑相反,流量只要能中转就尽量中转。这意味着针对同一 URI 资源的访问注定会收敛到同一链路(或远或近),考虑到该资源的流行度越高,聚合带宽几乎一定会超过链路带宽从而造成拥塞。

根源不在互联网设施不行,而是万维网内容到从互联网访问这些内容的映射规则错配了。以一个规模小但慢得多的网络搏一个规模巨大的网络,拥塞是必然。

不光互联网和万维网错配,任何网络都不易与万维网适配。火车票购票难,知名景点拥挤不堪,节假日高速公路拥堵都是和万维网错配的例子。

人的行动速度大约在 3km/h(步行) 到 700km/h(飞机),多数集中在 80km/h 以下,这种尺度下所有行为都是公平的,而借助于现代通信工具,人获取信息的时间尺度却完全不在一个数量级(通过 IM,朋友圈,微博,dy,大量人几乎一瞬间获得相同的信息,并在同一时刻行动),于是就会出现非常多的人一起涌入同一处的场景。人们对现实世界的认知来自万维网,试图将它们与现实世界进行映射,与互联网拥塞一样,这就是现实世界拥塞的根源。

VJ 曾提出激进的 NDN 以解决内容分发与互联网的错配问题,在现实世界中,人们早就有类似的方法,这从侧面验证了 NDN 思想的正确性,进一步催生并持续优化了 CDN。为应对火车票购票难,在人流密集区域新增了代售点,为应对商超购物排队,出现了便利店,为应对由于品牌效应带来的顾客过载,连锁店就出现了。

内容分发和现实世界商品物资分发一样,多数属匿名分发,摆脱了内容的位置约束,这让汇聚压缩 n 对 1 通信流量成为可能。如果内容不在离用户最近的地方重复拷贝,就必然要在传输链路上重复拷贝(若动态内容,假设在源和分发点已经做了 “组播”),这中间有一种权衡:
在这里插入图片描述

本质上是要找一种汇聚压缩 n 对 1 通信流量的方法,如上图所示,需要在存储和传输之间做买卖,对于动态内容,分发点之前的分级组播分发则是高尚的。

现实中的 CDN 是否恰到好处,或者能否再进一步微调以优化,还有很多事要做。

浙江温州皮鞋湿,下雨进水不会胖。


http://www.kler.cn/a/517148.html

相关文章:

  • OpenAI模块重构
  • 【贪心算法】洛谷P1090 合并果子 / [USACO06NOV] Fence Repair G
  • Linux 常用命令——系统设置篇(保姆级说明)
  • 梯度下降法 (Gradient Descent) 算法详解及案例分析
  • RedisTemplate和Redisson的使用和区别
  • java.sql.Date 弃用分析与替代方案
  • java 中多线程、 队列使用实例,处理大数据业务
  • 【Linux网络编程】传输层协议
  • Spring Boot 快速创建项目
  • Swing使用MVC模型架构
  • 日志收集Day005
  • 数据结构(一)顺序表和链表
  • 【前端】如何依靠纯前端实现拍照获取/选择文件等文字识别OCR技术
  • 【HarmonyOS NAPI 深度探索10】HarmonyOS Next 中的 NAPI 的架构与原理
  • U3D的.Net学习
  • 阿里云服务器在Ubuntu上安装redis并使用
  • Java 生成 PDF 文档 如此简单
  • OpenAI秘密重塑机器人军团: 实体AGI的崛起!
  • ngrok同时配置多个内网穿透方法
  • 航空航天混合动力(7)航空航天分布式电推进系统
  • ChopChopGo:一款针对Linux的取证数据快速收集工具
  • 【Unity】ScrollViewContent适配问题(Contentsizefilter不刷新、ContentSizeFilter失效问题)
  • 提升效率与体验,让笔记更智能
  • Java导出通过Word模板导出docx文件并通过QQ邮箱发送
  • 深入探索imi框架:PHP Swoole的高性能协程应用实践
  • 深入解析:Docker 容器如何实现文件系统与资源的多维隔离?