The Design Philosophy of the DARPA Internet Protocols 阅读报告

The Design Philosophy of the DARPA Internet Protocols [1]

阅读报告

这篇论文首先介绍了DARPA(美国国防部高级计划署)互联网络架构设计的最初目标,这个架构最初是为了在已有的网络上有效地实现多路复用网络。论文开头直接指出,DARPA互联网络选用的多路复用技术是分组交换(packet switching)技术而不是与之对应的电路交换(circuit switching)技术,并指出了互联网的基础架构是分组交换和网关存储—转发。

然后,论文进一步细化了互联网的设计理念,也是本文的核心,总结为如下几点:

  1. 互联网在(某些)子网或网关失效时仍然能够继续工作;
  2. 互联网必须支撑多种类型的通信服务;
  3. 互联网架构必须能够适应各种各样的网络;
  4. 互联网架构必须允许资源的分布式管理;
  5. 互联网架构必须经济实惠;
  6. 互联网架构必须使得主机易于接入;
  7. 互联网架构使用的资源必须可以问责。

注意,它们的重要性依次减弱。根据这些目标,就可以设计出互联网。顺便指出,通过调节这几条的重要性,可以设计出来完全不同的网络。

第一条也是最重要的一条,即对失效的容忍。

为了能够实现这个目标,互联网只能采用分组交换技术。如果采用电路交换技术,那么虚电路(virtual circuit)信息必须要存储于网络中的某些中间节点,而这些中间节点在虚电路创建的时候就已经确定。同时,由于虚电路的状态信息存储于这些中间节点中,之后通过虚电路的通信就只能通过这些中间节点来转发。倘若任一有关的中间节点突然失效,那么这条虚电路将断开,源主机发送的数据将无法到达目的主机,除非重新建立连接。即使失效节点恢复,如果无法恢复虚电路状态信息,虚电路连接也无法继续。

反观分组交换,在分组交换技术中,每一个经过网络传输的分组都携带了完全的源主机和目标主机的地址等信息,可以单独进行转发,也不需要中间节点保存任何状态信息(这里不考虑用于分组过滤的防火墙)。假设在某一个分组进行转发的时候,已经有一条确定的路径(即路由,route),但是这条路径中的某一个中间节点突然失效。该失效节点的邻居节点感觉到这一情况后会立即重新运行路由算法,计算一条新的(可能很大程度上不同的)连通的路径。由于每个分组携带的信息足够进行转发,源主机和目标主机的通信立即恢复。这样,就实现了单个节点或某些节点的失效而网络可以继续工作。其实,这里所说的节点,就是路由器(router)。

然而在一些时候,每个分组都要携带的地址等信息也可能反而成为累赘。考虑经典的例子,远程终端,每一次传输很可能只发送一个字节,却要包含完整的地址等信息。

其次,对多种类型的通信服务的支撑,这一点要求互联网的灵活性非常强。

通信的需求大致可以分为可靠性、顺序性、高传输速率和低传输延迟几点。可靠性的意思是,网络和协议需要确保源主机能够确定发出的分组被目标主机接收到。顺序性指的是目标主机接收到的分组的顺序和源主机发送的顺序一致。顾名思义,高传输速率就是说单位时间内传输的数据量尽可能多。而低延迟是要求分组尽快到达目标主机。这几点构成了矛盾的辩证体,似乎不太可能同时实现得很好。

将可靠性和顺序性组合起来,产生了TCP(Transmission Control Protocol,传输控制协议),它能够极大概率地确保数据到达,且是有序的。这个协议能够很好的满足文件传输等需求。某种意义上,TCP类似于在分组交换网络上模拟了虚电路,只不过把控制信息保存在了通信双方主机内以及每一次传输的分组当中。为实现有效的重传(因为分组一定有可能传输失败)和在可靠的前提下达到尽可能高的传输速率,TCP有重传算法以及拥塞控制算法。也正因为此,TCP比不那么可靠的协议在低传输延迟方面要逊色一些。最近提出的BBR拥塞控制算法就在尝试改善丢包率较高的网络中TCP的传输速率和传输延迟。

而另外一种协议直接使用底层提供的发送分组的方式,不提供任何可靠性和顺序性的保证,这能够大大降低延迟。这种协议的应用场景类似于VoIP(Voice over Internet Protocol,网络电话)或是实时视频。

注意,上述不同类型的服务都在同一个互联网上传输。糟糕的是,正是由于分组交换技术中每个分组都独立进行转发,流量控制、资源分配等服务质量(QoS,Quality of Service)相关问题很难从宏观上较好地调控。因为,每一个转发节点都没能很好的把握整体数据流,而是陷入了单个分组转发的泥潭中。甚至,它们所处的协议层次中,没有任何关于服务质量的字段。提升它们所处的协议层次,似乎能够改善这一问题,例如设计一种“四层路由器”。如何在支撑多种类型的通信服务的前提下,综合考虑每种服务的服务质量需求,从而使得转发分组时获得全局最优,是这个问题的关键。

限于篇幅,本文就讨论相对比较重要的两个方面,也是我感兴趣的两个方面:对失效的容忍和对多种类型的通信服务的支持。总之,互联网络的核心是传输格式(这个比较平凡)、转发方式和路由控制。由上面讨论得知转发方式被确定为分组交换,而路由控制的核心是针对每一个单独的分组独立地进行路由。其中,路由控制是比较关键的,如何路由,优先转发哪个分组,如何选择丢弃某些分组,都需要精心设计。

 

参考文献

[1] David D. Clark. “The Design Philosophy of the DARPA Internet Protocols”, In: Proceedings of ACM SIGCOMM’88, Aug. 1988.

发表评论?

1 条评论。

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/10108QrCode