基本信息

编辑推荐
深刻理解计算机网络问题与解决方案,全面掌握现代网络技术和未来趋势
内容简介
作译者
康德说,“自在之物”与“现象”即“此岸”与“彼岸”之间有着一条原则上的界限,是人类认识无法逾越的鸿沟。对于计算机网络世界而言,问题空间是此岸,完美系统是彼岸,中间隔着湍急的河流,本书则是架构在河流之上的桥梁。本书组织的各个章节都是从问题空间到解决方案空间。在网络工程中,遇到哪些问题和有哪些解决方案是架构设计的起点。
计算机科学参与了复杂性学科的创立,并把复杂性引申为计算机科学的内涵。复杂性在软件架构领域引起重视的首要原因是:单体架构的承诺已经无效。例如,在传统路由器或交换机设计中,快速的报文转发(数据平面)和高层的路由决定(控制平面)是集成在一起的。这种紧耦合的大型主机式结构限制了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月初译完毕,以及后期的三审三校,在此期间有许多人在默默付出。衷心感谢机械工业出版社华章公司的关敏和佘洁编辑,衷心感谢原作者成书经典,衷心感谢译者家人在翻译全程中的理解与支持。在此向你们致以最诚挚的谢意!
目录
译者序
前言
作者简介
译者简介
第一部分 数据平面
第1章 基本概念 4
1.1 是艺术还是工程 4
1.2 电路交换 6
1.3 分组交换 8
1.3.1 分组交换操作 8
1.3.2 分组交换网络中的流量控制 10
1.4 固定与可变长度数据帧 11
1.5 无环路径计算 13
1.6 服务质量 14
1.7 集中式控制平面的反击 15
1.8 复杂性 16
1.8.1 为什么如此复杂 16
1.8.2 定义复杂性 18
1.8.3 通过细腰模型管理复杂性 19
前言
但是,在本书作者看来,这些方法并没有想象中那么有效。尽管在实验室里花费了大量时间来阅读技术资料,甚至配置和部署网络设备,但仍有许多工程师不能理解计算机网络的实际工作原理。对网络工程师及网络工程专业的学生而言,实际的教学效果与心理上的预期仍然存在着很大的差距。
本书旨在填补这一空白—它不仅面向现在的工程师,也面向所有试图学习计算机网络工作原理的学生(即使网络工程不是他们的最终职业目标)。无论你是一名计算机科学专业的学生,还是一位有着20多年工作经验的网络工程师,或者你只想学习一些网络工程知识,甚至只是一名仅负责与“网络”相关业务的经理,都会通过阅读本书受益。
本书的组织结构
本书的两位作者在网络工程领域的工作经验加起来有50多年,这些年来,他们从事过转发设备、控制平面、存储乃至计算等诸多方面的工作。在不同的场所,两位作者(他们还是专栏评论员!)花了数千小时,以不同的形式进行了正规的和非正规的对外培训,其中涉及网络工程中的许多不同技艺。本书更是花费了作者大量的时间来考虑如何更好地讲解计算机网络技术中的诸多细节。计算机网络中哪些细节是不可忽视的,尤其是哪些内容和问题的细节是无关紧要的,都需要认真仔细地进行取舍。作者认为本书的组织结构有利于帮助计算机网络及相关领域的大多数读者。
撰写本书的想法源于互联网工程任务组(Internet Engineering Task Force,IETF)的RFC 1925,也就是“网络工程的12条军规”(The Twelve Networking Truths),其中第11条军规是:
每一个旧的想法都会以不同的名称和不同的表述被再次提出,而不管它是否有效。
显然,这很幽默,但是如果其中没有一丝道理,幽默就不会变得那么有趣了。就第11条军规而言,这又远不止“一丝道理”那么简单:在其中,体现了一种看待技术的完整方式,以及技术变革的步伐,它们可以彻底改变工程师学习技术的方式。如果说每个想法都会被再次提出,那么意味着每个想法之前就被提出过。这样一来,如果能够理解一个想法在第一次提出时的本义,那么就能理解基于相同想法的每一个新提议。
这种观察—计算机网络技术背后的基础思想并没有真正改变—是本书教学方法的驱动因素。本书没有关注模型或协议,而是遵循了一个独特的模式。
因此,本书的主题是:为了真正理解计算机网络,你需要提出和回答以下三个问题:“真正的问题是什么?”“解决方案是什么?”“具体是如何实现的?”
真正的问题是什么?
本书分为三个主要部分,涵盖了数据传输、控制平面,以及具体设计(或者更确切地说是技术)场景。在每一部分中都有一些章从一个基本的问题开始:所面临的真正问题是什么?以一种有意义的方式描述问题集往往需要做很多理论工作,所以这些章一开始可能看似不那么实用。
然而,这些章实际上非常实用。如果没有对问题的透彻理解,就几乎不可能真正理解真实的背景,从而不可能提出任何有效的提案或者实现方案。理解这些基本问题可以帮助我们做两件事:
将我们当前面临的问题(这些问题看似是新的或独特的问题)与过去网络工程中已解决的共性问题联系起来。
清楚地观察并理解大型系统中的组件问题,从而有机会以构建完整一致系统的方式,对每个问题应用一系列完整的解决方案。
实际上,提出问题才能真正理解那些用于解决网络工程问题的技术—这也是最重要的步骤。
解决方案是什么?
一旦问题暴露出来,本书将讨论一系列可能的解决方案。解决方案集合(必然)不会局限于最常见的解决方案或已实现的解决方案。相反,所选择的解决方案将(希望)提供一个可用解决方案类型的全面概览。同样,这部分将倾向于理论性介绍,特别是在描述单点问题的单点解决方案时。同样,认为不实用的观点将是错误的—每一个解决方案都是一个“工具”,可以把它添加到用来解决一系列问题的“思想工具集”中。以这种方式将问题和解决方案结合起来,从而建立一套对任何类型的工程师都有用的思考技能。
具体是如何实现的?
最后,一旦讨论了问题的集合以及对应每一个问题的一系列解决方案,问题和解决方案就能被聚合成一组实现案例。在这一部分将看到理论和实践的结合:理论上每个协议如何解决一组常见的问题集,然后选择一系列解决方案来解决这些问题。作者已经努力为这部分内容筛选了大量的协议和系统,所以读者不仅可以漫步解决方案的空间,而且可以漫游(尽可能在这类工作的范围内)计算机网络工程的历史。
媒体评论
第一部分讨论数据传输(数据平面)。第二部分介绍用于发现和使用拓扑与可达性信息的协议(控制平面)。第三部分讲解几种常见的网络设计和架构,包括数据中心Fabric、MPLS核心和现代软件定义广域网(SD-WAN)。作为所有网络技术所面临问题的解决方案,软件定义网络(SDN)等底层技术的基础原理贯穿全书。
本书是初级网络工程师和计算机网络专业学生的理想读物,经验丰富的工程师也可以通过本书更深入地理解自己每天使用的技术。无论专业背景如何,本书都将帮助你快速识别不断重复出现的问题和解决方案,并将这些知识应用到新技术和新环境中。
本书涵盖的内容包括
数据和网络传输
底层与高层传输及层间发现
分组交换
服务质量(QoS)
虚拟化的网络和服务
网络拓扑发现
单播无环路由
响应拓扑变化
距离向量控制平面、
链路状态及路径向量控制
控制平面策略与中心化
故障域
网络安全与传输
网络设计模式
冗余与弹性
故障排除