前言 Preface

为什么要写这本书

这本书的写作前前后后花了两年多的时间,我曾无数次地想过会有那么一个周末的下午,洋洋洒洒地写着前言,每念及于此,总有一种激扬文字、挥斥方遒的感觉。到了这一天,酝酿多时后坐在桌前,先是写了一些行业点评,虽然气势磅礴但不够接地气,反反复复地修改却始终没能令自己满意。最后想着,反正写前言就是在和读者聊天,也没有必要给书里的内容扣个大大的帽子,倒不如来说说情怀、谈谈理想,就当是给自己这几年的青春做一个注脚吧。

最开始其实并没有写书的打算,做研究的动力一方面是来源于对网络技术的兴趣与热爱,另一方面,坦白讲,那个时候在数据中心网络这块想到了一些新的点子,希望能够借着SDN的东风把想法做成实打实的产品。于是,最初是带着做调研的想法,开始对云数据中心SDN的技术与产品进行梳理。没有想到的是,这调研一做竟是两年多的时间,这两年里既看到了很多原来自己并不了解的技术,数次感叹于知识海洋的广袤无垠,也目睹了自己的一些想法被别人进行了变现,无奈地明白做产品需要分秒必争。

确立写书的想法是在2016年,实际上当时SDN圈子的风潮已经开始从云数据中心转向了企业级广域网,各路厂商、创业公司和媒体都已经开始围着SDWAN的概念在转了。和业界的一些同行聊过之后,其中有一部分人认为云数据中心的网络已经没什么值得研究的了。听多了类似的说法,给我个人的感觉是:SDN的出现既让网络这个圈子变得时髦,又让圈子里的人变得浮躁。于是,我决定把调研的内容写成一本书,希望能够使读者了解到,数据中心SDN在技术上还远远没有达到标准化,在产品上还有较大的提升空间,很多同行仍然在全力地投身于相关技术的演进和产品的迭代中。跟随先进的理念固然重要,但是踏踏实实地做事才是行业能够得以长久发展的关键。

本书还有另外一个出发点,是由于传统网络与SDN的纠葛长久以来都没能真正化解开来,很多人还是抱着非此即彼的错误观点。因此本书在介绍各个SDN技术和产品的时候,都会力争把控制和转发的逻辑说清楚,能分析到数据包处理流程这个层面的,都会加以详细分析。这么做的目的,是希望读者能够明白SDN虽然改变了网络的交付模式,但是API远远不是SDN的全部,网络架构本身的设计仍然是不可动摇的技术基础。另外,在一些情况下,SDN并不是解决问题的最好方式,因此本书还介绍了一些非SDN的数据中心网络技术,希望能够帮助读者拓宽技术视野,打开新的研究思路。

成书的过程中,最大的感悟是新技术发展得太快,很多章节的内容都不得不多次进行更新与修订。ICT的融合为传统的通信行业带来了前所未有的机遇,同时也要求我们能够调整好学习的心态。回顾这两年多的时间,几乎每日每夜都把自己泡在了各种各样的资料中,读了厂商不计其数的产品手册和技术文档,一行一行地去啃开源平台的代码,其中不乏很多有价值的内容,但由于成书时间与篇幅上的限制未能在书中进行介绍,多少还是有些遗憾吧。

同时,伴随着知识的逐步丰富,我也更加真切地体会到了个人的渺小。学习永无止境,不忘初心,方得始终,在探索技术的路上愿与诸君共勉。

本书特色

本书涉及云数据中心网络很多块的内容,主要包括传统技术、商用SDN方案、开源SDN方案以及相关的学术论文,覆盖了目前绝大部分的主流技术以及一些其他较为新颖的技术,是目前市面上少数能够切入SDN某一个具体行业应用场景,并对相关技术和产品进行系统性介绍的书籍之一。

实际上,把本书中每一块的内容拿出来都能单独写一本书。不过,为了让读者能够通过一本书,迅速并全面地掌握这些块内容,因此在写作的过程中就不得不去抠每一句话,甚至每一个字和词,力争简短、清晰、准确地呈现出核心的技术内容。如果相关行业的技术宽度为100,每种技术的深度为100,本书希望能够同时在宽度和深度上达到80+的水平,做到“样样通”而“样样不松”。

同时,为了能够捋顺这些五花八门的技术间的关系,行文过程中还对部分技术的产生背景与演进历程进行了介绍,希望读者在读过本书后,做到既能“知其然”,又能“知其所以然”。

读者对象

❑ CTO、CIO

❑ 数据中心架构师

❑ SDN架构师

❑ SDN产品经理

❑ SDN研发人员

❑ 高校与科研院所网络研究人员

❑ 其他对网络技术感兴趣的人员

如何阅读本书

阅读本书前,需要读者对传统网络技术和SDN基础知识有一定的了解。

第1章会对云数据中心网络演进的技术主线进行介绍,主要包括从3-Tier架构向Leaf-Spine架构的演进、从xSTP向大二层的演进、从传统网络向SDN的演进,以及传统网络的最新进展等内容。第1章可以看作本书的背景知识,用于引出后面章节对于数据中心SDN的介绍,讲述的过程中会以技术特征为分类依据,介绍厂商相关的私有技术与产品,以及IEEE、IETF相关的技术标准。第1章中所介绍的一些技术目前已经退出了历史舞台,为了保证讲述的完整性仍然保留了相关的介绍,读者可以有选择地进行阅读。

第2章将以杂谈的形式对SDN的本质进行论述,包括转发与控制分离、网络可编程以及集中式控制,并对SDN在IT层面的设计思路进行了总结。通过第2章的内容,希望可以帮助读者重新认识SDN,并捋顺SDN与传统网络间的关系。第2章的内容相比于其他章节的内容较为独立,读者可以灵活地调整本章的阅读顺序。

从第3章开始,正式开始介绍本书的核心内容——云数据中心SDN(Software Defi ned Data Center Networking,以下简称SDDCN)。第3章首先对SDDCN落地需求、实现架构以及关键技术进行介绍,希望能够为后续章节的内容起到提纲挈领的作用。第3章的表述相对抽象,有网络架构设计经验或者实际工程经验的读者可以仔细阅读与体会,如果读者之前并没有接触过相关工作,阅读第3章时可以先简单地看一遍,完成后续章节内容的阅读后,回过头来再去体会第3章中的内容,会获得更好的效果。

第4章将对十余个商用SDDCN解决方案进行深入的介绍,收录了主流厂商和一些具有技术代表性的创业公司的SDDCN产品,希望通过本章的内容,帮助读者了解这些方案内部的设计机制与技术细节,而不是仅仅看到一个“网络黑箱”,否则SDN不过是另外一个黑箱。

第5章对OpenStack Neutron进行了详细的介绍,主要内容包括Neutron的组网原理、软件设计架构、虚拟机的接入、OVS Plugin/Agent的设计与实现,以及其他主要的扩展Plugin/Agent。第6章对OpenDaylight的架构设计、OpenFlow的典型实现,以及OpenDaylight中的SDDCN的相关实现进行了详细的介绍。第7章对ONOS的架构设计、OpenFlow的典型实现,以及ONOS中的SDDCN的相关实现进行了详细的介绍。

第5、6、7章的内容将涉及各个开源平台的核心代码,力争同时呈现出代码中上层的业务逻辑以及底层的控制与转发逻辑,希望帮助读者在使用这些开源方案时,能够具备二次开发的能力。需要说明的是,代码所用版本以章前引言中所提及的版本为准,代码的呈现方式将以“===”形式的分割线注明代码所在文件,通过“//”形式的注释符对关键代码的逻辑进行解析。受限于篇幅,这三章跳过了非核心代码,同时省略了非关键参数与Java中的花括号。

第8章对学术界在云数据中心网络的典型研究工作进行介绍,包括拓扑、路由、虚拟化、服务链、服务质量、传输层优化、测量与分析、安全、高可用、大数据优化这十个方向。这一章在内容上会力争把每个研究工作的技术要点都讲清楚,而不是仅仅用一两句话来概括思路。这些研究工作既包括SDN的设计,又包括很多非SDN的设计,希望能够帮助读者拓展技术视野,启发新的设计灵感。

第9章和第10章是本书的番外部分。第9章对容器网络进行了概要性的介绍,容器是与虚拟机相对应的负载形态,因此独立成章,其中涉及的网络技术都在其他章节中介绍过,用在容器网络里只是接入了不同形态的负载,而技术的本质并没有发生变化,因此第9章中不会再去详细讨论这些已经介绍过的技术。第10章以Fiber Channel和Infi niBand为代表,对数据中心内部的存储网络和高性能计算网络的技术体系进行了概要性的介绍,这两者是与以太网和TCP/IP相对应的异构网络技术,因此独立成章,另外第10章中还简单地介绍了将以太网与Fiber Channel和Infi niBand进行融合的思路。

最后要说明的是,本书所介绍的内容均为云数据中心内部的网络技术,限于成书时间和篇幅上的限制,对于云数据中心外部的网络技术,如企业网络入云、Internet流量入云、云数据中心ISP上行出口优化、云数据中心间流量优化,均未能进行介绍。另外NFV相关的内容,包括vSwitch、vRouter、BPF、VPP等datapath技术,以及DPDK、SR-IOV等IO加速技术,本书也未做专题性介绍。

勘误和支持

由于笔者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者可通过微信号gokd35直接联系笔者,或者通过邮箱sddcn_qa@126.com提出问题或者建议。愿我们在网络技术的进修之路上互勉共进。

致谢

感谢九州云的龚永生先生,盛科网络的张卫峰先生,Arista的杨文嘉先生,为本书进行了专业的技术审校。

感谢北京邮电大学的黄韬教授、清华大学的毕军教授、电信北京研究院的孙琼女士,移动研究院的王璐女士、联通研究院的徐雷先生、VMware的叶逾健先生、Juniper的马绍文先生、Arista的池惠澄先生、BigSwitch的蒋刊哲先生、互联港湾的张宇峰先生、云杉网络的张天鹏先生、ZStack的王为先生、Canonical的张华先生,为本书进行了精彩的推荐。

感谢北京邮电大学的李昕教授、F5的范恂毅先生、VMware的吉白先生、BigSwitch的吴鑫先生,在本书写作过程中提供的帮助。

再一次感谢上述各位业界前辈,在繁忙的工作后利用宝贵的休息时间来审阅此书,是他们的无私支持给了我修缮此书的动力。同时,他们为业界发展所做出的贡献令人尊重和钦佩,将不断激励着我们后辈学习与前进!

感谢机械工业出版社的编辑高婧雅女士,对本书写作的悉心指导,以及对我本人的包容和理解。感谢SDNLab的方辉先生,在我形成写书想法时的鼓励与支持。没有他们,就不会有这本书的出版。

最后感谢我的家人和朋友,他们在生活中的关怀和鼓励使我能够在这两年中踏踏实实地完成本书内容的编写。

声明

本书中所述一切观点仅代表作者本人,与作者所在单位以及其他机构无关。