南朝刘峻在《辩命论》中说:“自然者,物见其然,不知所以然;同焉皆得,不知所以得。”本书提供了一种理解网络的新方法,即从问题空间到方案空间的方法。通过解释计算机网络在架构设计方面必须克服的问题空间,思考常见的方案空间,并展示这些解决方案在新协议和成熟协议中是如何实现的。这样,作者不仅阐明了现代计算机网络的组件和协议,而且揭示了现代计算机网络为什么被设计成现在的样子。这不仅能够让读者对网络知识“见其然,知其所以然”,而且能够让读者在接下来要做的网络架构设计中“知其得,知其所以得”。
康德说,“自在之物”与“现象”即“此岸”与“彼岸”之间有着一条原则上的界限,是人类认识无法逾越的鸿沟。对于计算机网络世界而言,问题空间是此岸,完美系统是彼岸,中间隔着湍急的河流,本书则是架构在河流之上的桥梁。本书组织的各个章节都是从问题空间到解决方案空间。在网络工程中,遇到哪些问题和有哪些解决方案是架构设计的起点。
计算机科学参与了复杂性学科的创立,并把复杂性引申为计算机科学的内涵。复杂性在软件架构领域引起重视的首要原因是:单体架构的承诺已经无效。例如,在传统路由器或交换机设计中,快速的报文转发(数据平面)和高层的路由决定(控制平面)是集成在一起的。这种紧耦合的大型主机式结构限制了 IP 网络创新技术的出现,大量 RFC 规范对现行网络进行修修补补,造成了交换机 / 路由器设备控制功能的高度复杂。网络研究人员想要基于真实生产流量进行大规模网络实验几乎是不可能的,因为网络设备是封闭的,没有提供开放的应用编程接口,无法对网络设备进行自动化配置以及对网络流量进行实时操控。为了解决这些问题,斯坦福大学的 Nick McKeown 教授于 2008 年 4 月首先提出了新型的基于软件的网络架构—软件定义网络,之后众多的设备厂商、计算机组织及运营商纷纷加入软件定义网络标准的制定中。软件定义网络是一种新兴的网络架构,它属于下一代网络技术研究范畴,但又与其他下一代网络技术研究方向有很大区别:它并不革新原有 IP 分层网络的报文转发行为,只简化报文转发规则产生的复杂性。也就是说,它既继承现有网络技术,也可以不依赖于现有网络技术独立发展;既顺从当前新的应用趋势,也符合控制、转发分离的思想。其目的是对现有复杂的网络控制平面进行抽象简化,使控制器与交换设备可独立发展,使网络面向应用可编程。贯穿本书的正是软件定义网络破解复杂性的基本原则:控制平面与数据平面分离。
贯穿本书的另外一个原则是权衡。作者反复强调的一句话是:如果没有找到权衡,说明没有足够努力地寻找。在本书中理解“权衡”有一个很好的例子,即如何管理和控制复杂性。作者深刻地指出,由于物理世界的限制,无论在抽象逻辑中被埋藏得有多深,总是会对在现实世界中部署的任何解决方案或设计实施审查。最终,必须寻找在设计、安全、隐私、成本和适应网络的目标等方面的权衡—复杂性是无法避免的,它只能从网络中的一个位置移动 到另一个位置。例如,计算机网络的专业人士经常被告知,今天的控制平面将简化他们的网络。相反的情况却发生了:像 SDN 和 NFV 这样的技术虽然非常有价值,但却在加剧复杂性,而不是解决复杂性。既然复杂性是必要的,它就不能被“解决”。那么,又该如何定义复杂性,理解它的组成部分并测量它呢?作者引入了一个简单易懂的“状态、优化和交互表面”模型来处理复杂性中的权衡。
无论是否有效,每一个旧的想法都会以不同的名称和不同的呈现方式再次提出—第11条军规是贯穿本书的一条暗线。时间是一个神奇的维度,站在 20 年后看现在和第 11 条军规,读者会明白作者的用意所在。计算机网络设计中存在一些一脉相承的不变原则,比如模块化、扩展、分层、安全原则等。有时候我们需要回顾历史上被遗忘的问题和解决方案,以审视眼前的系统是否存在相同的问题。就像区块链,其非凡和成功之处不在于它处于任何 组件研究的前沿,而在于它整合了许多不相关领域的旧创意。鉴于本书关注的技术本质和思想,诚如作者所说:写作这本书的目的是永恒的,因为它 20 年后仍将是一个有用的学习指南和参考。
本书共分为四个部分,分别是数据平面、控制平面、网络设计和当前热门话题。第一部分数据平面的内容主要围绕数据传输问题展开,具体包括协议模型、分组交换、服务质量、网络虚拟化和传输安全等;第二部分控制平面关注的是网络设备如何沿着无环路径转发数据包,主要围绕拓扑的发现、无环路径的计算、拓扑变化的响应等内容展开,这一部分还介绍了控制平面的策略;第三部分是网络设计概述,介绍了网络设计的方法论,重点关注网络设计的安全性、设计模式、冗余与弹性、故障排除等几个方面。全书第 1 章是第一部分和第二部分的基础,而第一部分和第二部分又是第三部分的基础;第四部分主要关注一些可能塑造未来的具体技术和发展趋势,其中关注的不仅仅是网络工程,而且还包括信息生产和处理的整个过程。
本书作者之一 Russ White 在计算机网络领域有超过 30 年的工作经验,从广域固网传输、数据中心网络、园区网络到移动无线网络,他的工作涵盖不同的垂直领域、不同的文化环境,以及从简单到极度复杂的物理环境。作者独特的兴趣也决定了本书的独特和深度。作者不仅关注网络分解、可编程网络、云计算,还关注网络复杂性、哲学,以及人和技术之间的交集。作者在其个人主页第 11 条军规(https://rule11.tech/)中写道:本网站主要关注元认知技能,即作为网络工程师,应该如何思考和学习。这些元认知技能可以从本书的字里行间看出来:埋藏在本书段落之间的不仅有网络技术的细节和本质,还有网络架构设计的理念和思维方法。
本书的翻译源自几个不同有趣灵魂和人生轨迹的碰撞。关敏是机械工业出版社华章公司的编辑,是她自始至终的关怀、支持和信任,才让本书花开中国。佘洁也是机械工业出版社华章公司的编辑,是她出色的文笔、专业的知识、严谨的态度让本书精彩盛放。老曹是一位“70 后”老程序员,在计算机网络领域有 20 多年的沉淀,期望将码农的工匠精神倾注在这个大部头上。石涛声是一位区块链工程师,在分布式系统领域有着 10 多年的工作积累,期望以学者严谨的精神让更多的读者通过本书受益。无论如何,翻译都是一项特殊的创作过程,在一次次的字斟句酌中,在一次次的推敲打磨中,都包含了译者的理解和选择。尽管小心谨慎、孜孜矻矻、如履薄冰,终因译者水平有限,本书翻译错漏之处在所难免,望诸位读者海涵并指正。
夜把花悄悄地开放了,却让白昼去领受谢词。忝为译者,署名写序,不能不感恩那些真正成就此书的力量。从 2018 年 3 月开始翻译,到 10 月初译完毕,以及后期的三审三校,在此期间有许多人在默默付出。衷心感谢机械工业出版社华章公司的关敏和佘洁编辑,衷心感谢原作者成书经典,衷心感谢译者家人在翻译全程中的理解与支持。在此向你们致以最诚挚的谢意!
摘自《计算机网络问题与解决方案》的“译者序”