在1990年代后期,当我还在读研究生时,
JH Saltzer;DP芦苇; DD Clark:系统设计中的端到端参数。ACM Trans。计算 Syst。2(4):277-288,1984.DOI = 10.1145 / 357401.357402
在每所大学的每个操作系统课程中,几乎都需要阅读该书,而且它似乎仍然是互联网设计的主要指导原则之一。(例如:参见J Kempf,R Austein编辑)和IAB,“ 中间的兴起和端对端的未来:对Internet体系结构演进的思考 ”,RFC 3724,2004年3月。 )
端到端原理说明(Saltzer等人,1984):
[如果]仅在站在通信系统端点的应用程序的知识和帮助下,才能完全正确地实现所讨论的功能,...,前提是所质疑的功能不是通信系统本身的功能可能。[尽管]有时,通信系统提供的功能的不完整版本可能有助于提高性能。
或更简单地(摘自摘要):
端到端的论点表明,与以较低级别提供功能相比,放置在系统较低级别上的功能可能是多余的或价值很小。
但是以我自己的经验(在计算机体系结构中,而不是在互联网体系结构中)应用端到端原理并没有取得什么成功。由于该原则被说成是“诗”(即,英语散文中有许多数学上没有定义的术语),因此很容易自欺欺人地认为:“所讨论的功能只有通过以下方式才能完全正确地实现:应用程序的知识和帮助。” 但是什么是“所讨论的功能”,更不用说应用程序的“知识和帮助”了?
示例:片上网络(与Internet不同)不允许丢弃数据包,但是缓冲非常有限,因此您需要采取某种措施来避免死锁或从死锁中恢复。另一方面,应用程序也需要使其自身无死锁,对吗?因此,我可能会以为我应该使常见情况(无死锁)变快,并在应用程序上避免死锁。实际上,这就是我们在Alewife和Fugu上尝试过的方法(Mackenzie等人,“ 利用两箱式邮件传递以进行快速保护的消息传递”,《国际Symp高性能复合拱门》(HPCA-4):231-242, 1998年。或约翰·库比亚托维奇(John Kubiatowicz)的论文。“它”有效“(通过在缓冲区已满时使互连中断处理器,并通过软件缓冲使OS扩展),但我在学术界或行业中都没有见过任何人(包括我们中的任何人) HPCA论文)竞相尝试复制该想法。因此,显然,避免网络中的死锁与避免应用程序级死锁是不同的“问题功能”,否则端到端原理是错误的。
可以将端到端原理从“诗”转变为定理吗?或者至少可以用计算机架构师可以理解的术语来表述?