vmware网络技术原理与实践.pdf
http://www.100md.com
2020年1月16日
![]() |
| 第1页 |
![]() |
| 第7页 |
![]() |
| 第16页 |
![]() |
| 第25页 |
![]() |
| 第33页 |
![]() |
| 第463页 |
参见附件(19141KB,561页)。
vmware网络技术原理与实践,这是一本非常专业的网络技术讲解书籍,作者不仅为读者提供基础知识的讲解,又通过丰富实例深入探究虚拟换的功能和设计,让你完全掌握技术。

简介
本书由资深虚拟化技术专家亲笔撰写,ccie认证专家ivan pepelnjak作序鼎力推荐。书中既全面介绍了物理网络的基础知识,又通过大量实例详细阐释了不同实用场景、不同的硬件配置下,虚拟网络环境构建的考虑因素和具体实施方案。
全书分为四部分,共19章:第一部分 (第1-6章)介绍物理网络的基础知识,包括网络连接、网络模型、以太网、虚拟 lan、生成树协议、链路聚合、路由及交换结构组件等,为在扩大虚拟化工作范围时与网络团队有效沟通提供了必要的背景知识:第二部分(第7—13章)讲解物理交换机和虚拟交换机的区别,并介绍vsphere标准交换机、vsphere分布式交换机、 cisconexus 1000v虚拟交换机的功能,以及与各种虚拟网络部署相关的设计考虑因素,标准虚拟交换机与分布式虚拟交换机的具体设计和配置过程;第三部分(第 14-17章)详细介绍iscsi和nfc的概念、设计及配置,包括iscsi协议栈中的所有组件、实现iscsi架构必要的基础知识、nfs的各种设计考虑因素,以及iscsi和nfc的必要配置步骤;第四部分(第18~19章)讲解其他设计方案,描述了不同硬件配置中可以考虑的不同设计选项,探索了多nic vmotion的用例及具体配置和验证实例。
作者
Chris Wahl;芝加哥Ahead咨询司技术架构师,在企业基础架构设计、实施和管理方面有10余年经验。他曾在层次化数据心环境与效技术团队合作,在各种虚拟化、数据心和私有云项目给予架构和工程方面的专业指导。他拥有30多行业,包括稀有的VMware认设计专(VCDX$104),以及VMware vExpert。Chris还努力回馈社区,是VMware技术络(VMTN)跃的“师”用户和协调员,并且还是芝加哥VMware用户组(VMUG)的领导。
Steve Pantol Ahead 咨询司技术架构师,力于建立更好的数据心,推云技术的采用,拥有丰富的行业经验。近7年左右,他专注于各种VMware技术,拥有许多技术认,正在向VCDX的方向努力。
译者简介
姚军;曾在多券商任IT经理,在集、数据库、络方面有近20年经验,主导及参与了多型集项目的需求分析、实施及维护,由于工作因,在计算领域涉猎广。自2006年开始,工作之余将量精力投入IT图书的翻译及编著工作,曾参与《网络技术安全考试丛书》的编写工作,并有多部译作出版,如《黑客曝:恶意软件和RootKit》、《社化媒体与企业:社化媒体的威胁与应对策略》、《SEO的艺术(书2版)》和《vSphere 5.0存储设计与实现》等。
目录
第一部分 物理网络入门
第1章 入门知识
第2章 两种网络模型的故事
第3章 以太网
第4章 第2层的高级知识
第5章 第3层
第6章 融合式基础架构
第二部分 虚拟交换
第7章 虚拟交换与物理交换的不同
第8章 VSphere标准交换机
第9章 Sphere分布式交换机
第10章 第三方交换机-1000V
第11章 实验方案
第12章 标准虚拟交换机设计
第13章 分布式虚拟交换机设计
第三部分 在我的网络上访问你的存储:IP存储
第14章 iSCSI常规用例
第15章 iSCSI设计和配置
第16章 NFS常规用例
第17章 NFS设计和配置
第四部分 其他设计方案
第18章 其他虚拟交换机设计方案
第19章 多NICvMotion架构
vmware网络技术原理与实践截图


云计算与虚拟化技术丛书
VMware网络技术:原理与实践
Networking for VMware Administrators
(美)沃尔(Wahl,C.) (美)潘特尔(Pantol,S.) 著
姚军 译
ISBN:978-7-111-47987-1
本书纸版由机械工业出版社于2014年出版,电子版由华章分社(北京华
章图文信息有限公司)全球范围内制作与发行。
版权所有,侵权必究
客服热线:+ 86-10-68995265
客服信箱:service@bbbvip.com
官方网址:www.hzmedia.com.cn
新浪微博 @研发书局
腾讯微博 @yanfabook目录
译者序
序
前言
第一部分 物理网络入门
第1章 入门知识
1.1 导言
1.2 重复的工作
1.3 小结
第2章 两种网络模型的故事
2.1 导言
2.2 模型行为
2.3 OSI模型
2.4 TCPIP模型
2.5 OSI和TCPIP模型的对比
2.6 小结
第3章 以太网
3.1 导言
3.2 以太网
3.3 扩展以太网段:中继器、集线器和交换机3.4 小结
第4章 第2层的高级知识
4.1 导言
4.2 避免环路和生成树
4.3 链路聚合
4.4 小结
第5章 第3层
5.1 导言
5.2 网络层
5.3 IP编址和子网
5.4 网络层支持应用
5.5 小结
第6章 融合式基础架构
6.1 导言
6.2 概念
6.3 示例
6.4 小结
第二部分 虚拟交换
第7章 虚拟交换与物理交换的不同
7.1 导言
7.2 物理和虚拟交换机的比较7.3 物理上联链路
7.4 虚拟端口
7.5 VLAN
7.6 小结
第8章 vSphere标准交换机
8.1 导言
8.2 vSphere标准交换机
8.3 虚拟交换机属性
8.4 安全性
8.5 发现
8.6 流量整形
8.7 网卡捆绑
8.8 层次化覆盖
8.9 VMkernel端口
8.10 VM端口组
8.11 小结
第9章 vSphere分布式交换机
9.1 vSphere分布式交换机简介
9.2 监控
9.3 私有VLAN
9.4 分布式端口组9.5 流量整形
9.6 负载平衡
9.7 网络IO控制
9.8 小结
第10章 第三方交换机–1000V
10.1 导言
10.2 与vSphere的集成
10.3 虚拟控制引擎模块
10.4 虚拟以太网模块
10.5 高级功能
10.6 运营许可模式
10.7 小结
第11章 实验方案
11.1 导言
11.2 架构决策
11.3 实验方案
11.4 小结
第12章 标准虚拟交换机设计
12.1 导言
12.2 标准虚拟交换机设计
12.3 确保服务质量12.4 网络适配器
12.5 虚拟机流量
12.6 VMkernel端口
12.7 最后的调整
12.8 配置其他vSphere主机
12.9 小结
第13章 分布式虚拟交换机设计
13.1 导言
13.2 分布式虚拟交换机设计
13.3 确保服务质量
13.4 创建分布式虚拟交换机
13.5 网络适配器
13.6 虚拟机使用的分布式端口组
13.7 VMkernel端口所用的分布式端口组
13.8 添加vSphere主机
13.9 最后的步骤
13.10 其他设计考虑因素
13.11 小结
第三部分 在我的网络上访问你的存储:IP存储
第14章 iSCSI常规用例
14.1 导言14.2 理解iSCSI
14.3 iSCSI组件
14.4 iSCSI适配器
14.5 iSCSI设计
14.6 从iSCSI启动
14.7 小结
第15章 iSCSI设计和配置
15.1 导言
15.2 iSCSI设计
15.3 虚拟交换机配置
15.4 添加iSCSI设备
15.5 小结
第16章 NFS常规用例
16.1 导言
16.2 理解NFS
16.3 NFS组件
16.4 网络适配器
16.5 NFS设计
16.6 小结
第17章 NFS设计和配置
17.1 导言17.2 NFS设计
17.3 虚拟交换机配置
17.4 挂载NFS存储
17.5 小结
第四部分 其他设计方案
第18章 其他虚拟交换机设计方案
18.1 导言
18.2 用例
18.3 两个网络适配器
18.4 4个网络端口
18.5 6个网络端口
18.6 8个网络适配器
18.7 小结
第19章 多NIC vMotion架构
19.1 导言
19.2 多NIC vMotion用例
19.3 配置多NIC vMotion
19.4 小结
附录 VMware用户组译者序
虚拟化技术堪称目前IT发展的基石。它充分利用过去十多年来高速
发展的计算、网络和存储技术,为企业带来更加灵活、高效的计算架
构,通过平台抽象,管理人员可以用软件的形式定义整个平台的各项资
源,从而简化管理任务。
正因为具有上述灵活性,虚拟化平台的供应商和许多管理人员热衷
于虚拟环境中的各项改进,因而忽略了物理环境,使两个世界产生了裂
缝,虚拟化供应商不断推出极其吸引眼球的新功能,管理人员则更多地
将目光集中在软件配置上,他们都忘记了一个事实:无论虚拟化技术中
的软件配置如何发达,网络流量仍然是由物理架构来完成传输,而决定
虚拟环境运营效果的,仍然是硬件架构的性能。
在虚拟化环境建设达到一定规模之后,虚拟化管理人员就会发现,需要和安全团队、硬件团队协作的环节越来越多,而物理世界和虚拟世
界的分离,给双方的沟通造成了障碍,从而大大影响了一些项目的推
进。为了改进这一状况,人们可能会翻阅市面上的许多参考书,但是常
常失望地发现,阐述虚拟化环境和物理环境之间有机联系,并提供基本
设计原则和实例的书籍少之又少。
本书的目的,正是弥合这两个世界之间的鸿沟,让虚拟化架构、设计、运营人员更好地理解物理环境,从而在构建虚拟化环境的时候,能
够根据需求选择基础架构,设计出更强大、更安全灵活的方案,并在基
础建设和日常运营中,更好地与IT架构中的其他团队合作,确保虚拟化
项目的顺利实施。本书的两个作者都是业界的资深专家,在虚拟化项目
实施方面有深厚的功底和丰富的经验,他们从网络模型、常见网络层次
的介绍开始,由浅入深地介绍现代网络的基本概念,并自然地过渡到虚
拟交换等虚拟化环境中与物理网络最为关联的部分,最后扩展到实际的
设计用例,详细介绍了不同实用场景、不同的硬件配置下,虚拟化环境
构建的考虑因素和具体实施方案。书中不仅有理论方面的介绍,也有具
体案例的演示,包括VMware环境中的具体配置,不管读者面对的是什
么样的用例,都能够从中获益,甚至在工作中可以直接利用书中的许多
配置方法。
在翻译过程中,我们看到了许多熟悉的概念,它们似乎显而易见,但是在实际工作中把握起来并不轻松,而细读之下,读者在不知不觉之
中会接受经典的设计理念,掌握VMware虚拟环境在网络和存储上提供
的灵活配置方法。物理世界和虚拟世界之间的鸿沟,也就在一个又一个
实例讲解中被填平。我们衷心地向广大读者推荐本书,希望它能为大家
的工作提供实际的帮助。
本书的翻译工作主要由姚军完成,徐锋、吴兰陟、陈志勇、刘建
林、白龙、方翊、陈霞、林耀成、宁懿等也为翻译工作做出了贡献。由于译者水平所限,书中难免出现一些错误,请广大读者批评指正。
译者序
长期以来虚拟网络都是服务器虚拟化中的“灰姑娘”,任何阅读
VMware发行说明的人都能够证明——每当新的vSphere版本发布,我们
都会收获大量新的CPURAM优化特性、高可用性改进和更好的存储连
接性的信息,可是却只能得到关于联网的很少的信息。
网络和虚拟化供应商之间的传统竞争,以及大型IT机构中虚拟化和
网络团队之间缺乏共识,都绝对没有好处。虚拟化供应商试图绕过传统
网络概念(例如,无视生成树协议(STP)和链接聚合组(LAG)的存
在),而总是要求一些不可能实现的功能,例如跨越多个数据中心的远
距离桥接。造成与网络团队缺乏合作的状况也就不足为奇了,虚拟化供
应商使用的不为人熟知的概念和术语也于事无补。
虚拟化出版生态系统也表现出这种心态——我们出版了关于服务器
虚拟化管理、故障排除、高可用性和DRS的出色图书,但是几乎没有关
于虚拟网络及其与外部物理世界交互的图书。这种疏忽最终会被改正
——我们已经为VMware联网专门写了一本书。
谁应该阅读本书? 我个人的意见是,本书是任何接近vSphere主机
的人都应该阅读的。服务器和虚拟化管理员将得到有助于理解网络团队
的同事们日常处理的复杂难题的基本网络知识,网络工程师最终也有机会理解vCenter图形界面上鼠标操作背后的玄机。如果能够说服公司中的
虚拟化和网络工程师阅读本书,他们就会有共同语言,能够讨论各自的
需求、优先顺序和挑战。
虽然本书从基本的主题开始,如网络的定义,但是很快就深入
vSphere虚拟网络复杂的细节之中。必须承认,尽管在创建VMware网络
技术深入研讨会时花了几个月阅读vSphere文档、研究ESXi的实际表
现,但有些细节对我来说仍是陌生的。
你将从本书中得到什么? 如果你是服务器或者虚拟化管理员,对
于网络没有太多了解,你将会学到理解数据中心网络和vSphere虚拟网
络如何与之互动所需要的知识。如果你是网络工程师,角度会有所不同
——从服务器端去看待问题,这些细节将帮助你调整网络边界,与
vSphere主机交互。
最后,一定要记住,组织中的其他工程师不是你的敌人——她有不
同的视角、不同的难题和不同的优先级及需求。“我们必须这样做”或
者“我们不能这么做”之类的话在这种环境中通常没有什么好处,更好的
方法是提出这样的问题“为什么需要这个?”或者“你试图解决什么样的
业务问题”——本书可能就是帮助你弥补沟通障碍的拼图中的一块。
Ivan Pepelnjak
CCIE1354(名誉)ipSpace.net前言
在许多组织中,仍然没有虚拟化团队,甚至没有专门的虚拟化人
员。vSphere环境的维护任务通常落在现有服务器或者存储管理员的肩
上,在他们的职务说明中增加了一条:“执行其他指定的任务”。
虚拟化是一个复杂的跨学科主题,真正地“理解”它,需要对服务
器、存储和网络有扎实的了解。但是因为新技术通常由新人管理,他们
在技能上有着很多缺陷。根据作者的经验,网络是承担vSphere环境的
管理员最不熟悉的领域。服务器团队和存储团队倾向于紧密协作,而网
络人员则往往隐藏在很多接线板后面。本书的意图是帮助vSphere管理
员跨越这一鸿沟。
本书不是想作为特定认证的学习指南。如果你的目标是Network+、CCENT或者其他认证,可以寻找其他更为全面的书籍。
第一部分旨在介绍基础网络知识,从非常简单的连接性和路由及交
换结构组件开始,为在扩大虚拟化工作范围时与网络团队有效沟通提供
必要的背景知识和术语。
在第二部分中,我们研究虚拟网络,解释它与第一部分中建立的物
理网络之间的区别。我们提供了构建虚拟网络的一个指南,从现实世界
的需求开始,研究满足这些需求必要的虚拟和物理网络配置步骤。在第三部分中,我们加入了存储,使用第二部分中的方法研究
iSCSI和NFS配置。
写作本书的动机
Chris:除了实现“写一本书”的宏愿之外,将某人的经验传给下一代
技术专家的想法显得有些浪漫。网络领域正如在黑暗的未知海域中航
行,知识就是沿路上的小岛。我认为,写一本游记,可以作为指南,看
看能不能帮助人们完成这一旅程,对自己来说,也可以在第二轮学习中
得到更多的心得。
Steve:我同意Chris的说法,但是没有像他那么好的文采,这确实
是个好的思路。
本书的目标读者
本书针对涉及VMware vSPhere环境维护的IT专业人员。这些管理员
通常有很强的服务器或者存储背景,但是缺乏核心的网络概念。由于虚
拟化的跨学科特性,vSphere管理员很有必要对支持其环境的技术有全
盘的了解。
如何阅读本书本书分为19章。
·第一部分
·第1章提供了网络概念的概述。
·第2章描述了网络模型的目的和两种主要的网络模型。
·第3章介绍以太网的基本知识。
·第4章以前面几章为基础,深入研究更高级的以太网概念,包括
VLAN、交换端口类型、生成树协议和链路聚合。
·第5章描述IP协议、第3层网络和支持应用。
·第6章提供融合式基础架构的简单概述,并说明示例平台。
·第二部分
·第7章重点介绍第一部分描述的物理交换机和本书其余部分关注
的虚拟交换机在机理和执行上的不同之处。
·第8章介绍vSphere标准交换机的功能。
·第9章介绍vSphere分布式交换机的功能。
·第10章介绍Cisco Nexus 1000v虚拟交换机的功能。·第11章介绍用于第12章和第13章的实验方案,指导读者进行设
计练习。
·第12章描述配置标准vSwitch以支持第11章定义的用例的必要步
骤。
·第13章描述配置分布式vSwitch支持第11章定义的用例的必要步
骤,重点介绍分布式和标准式虚拟交换机之间的功能差异。
·第三部分
·第14章介绍iSCSI的概念,描述一个用例。
·第15章描述配置iSCSI以支持第14章定义的用例的必要步骤。
·第16章介绍NFS的概念,描述一个用例。
·第17章描述配置NFS以支持第16章定义的用例的必要步骤。
·第四部分
·第18章描述不同硬件配置中可以考虑的不同设计选项。
·第19章介绍多NIC vMotion的概念,并描述为一个样板用例配置
它的必要步骤。
·附录A介绍VMware用户组,它可以作为利用更大的VMware社区能力的手段,我们鼓励读者参与社区。
致谢
Chris要感谢在职业生涯中帮助他的人,使他得以与技术社区分享虚
拟网络的知识。走到今天,经过了多年反复试验带来的无数次成功和失
败。在这期间,有许多人提供了指导和帮助,他要特别感谢过去的导师
Wayne Balogh、Sean Murphy、Matt Lattanzio和Pam Cox,以及他的父母
Dawn和Matt,感谢他们在技术生涯中的坚定支持。此外,感谢妻子
Jennifer每天带给他的正能量和启迪。
Steve要感谢他的妻子Kari和孩子们——Kurt、Avery和Ben——感谢
他们在日常生活和这个项目上的支持。还要感谢他的父母Don和Betty,感谢他们在20世纪90年代初就花钱购买电脑,而且任由他拆卸。还要特
别感谢Xfinity On-Demand,特别是Sprout and Disney Junior networks,感
谢他们在最近几个月承担了养育孩子的工作。
我们都要感谢Ahead公司的所有人,包括Mitch Northcutt、Eric
Kaplan、Paul Bostjancic和Mike Mills,感谢他们在技术上和后勤上的支
持。还要感谢我们了不起的技术评审Doug Baer、Scott Winger和Trevor
Roberts,以及VMware Press团队——Joan Murray、Ellie Bru和Seth
Kerney,感谢他们不懈的努力和对书稿的完善。关于作者
Chris Wahl在企业基础架构设计、实施和管理方面有10多年经验。
他已经在各种虚拟化、数据中心和私有云的建设中提供了架构和工程上
的专业指导,并与高性能技术团队进行层次化数据中心环境上的合作。
他目前拥有芝加哥的Ahead咨询公司高级技术架构师的头衔。
Chris拥有30多个行业认证,包括稀有的VMware认证设计专家
(VCDX104)以及VMware vExpert。他还努力回馈社区,是VMware
技术网络(VMTN)活跃的“大师”级用户和协调员,以及芝加哥
VMware用户组(VMUG)的领导人。
Chris的独立博客“Wahl Network”曾赢得大奖,他专注于创建围绕虚
拟化、融合式基础架构的内容,倡导有利于技术社区的产品和服务。在
过去的几年中,他已经发表了数百篇文章,并被vSphere-Land选为2012
年“最受欢迎独立博客作者”。Chris还在世界各地的行业活动上发表演
讲,提出专业的话题,并且以技术分析家的身份提出自己的看法。
Steve Pantol 14年以来承担过各种方面的技术任务,近7年以来专注
于VMware技术的组合。他拥有许多技术认证,正在向VCDX的方向努
力——只是为了摆脱Wahl的辖制。他是Ahead的高级技术架构师,致力
于建立更好的数据中心,推动云技术的采用。关于技术审校人员
Doug Baer是VMware Hands-on Labs团队的架构师。他在IT业有将近
20年的经验,担任过各种角色,包括咨询、软件开发、系统管理、网络
和存储基础架构解决方案、培训和实验室管理。Doug拥有亚利桑那州
Tucson市的亚利桑那大学的计算机科学学士学位,并且拥有多项顶级行
业认证,包括VCDX19以及HP的Master ASE Clond和数据中心架构授
权认证专家(14)。
你可以在VMware Hands-on Labs的大型活动、VMware用户组活动
以及VMware博客(http:blogs.vmware.com)上找到他,或者在
VMware社区论坛上回答问题。如果你觉得这样找太麻烦,可以在
Hands-on Labs网站上的视频中看到他(名叫Trevor)。在业余时间,Doug喜欢远离技术,和家人一起旅游,或者在亚利桑那州的公路上跑
步。
Trevor Roberts Jr.是Cisco的高级IT架构师,他很享受帮助客户成功
实现虚拟化和云解决方案的工作。在业余时间,Trevor在
www.VMTrooper.com上,通过Professional OpenStack和Professional
VMware播客以及Twitter账户@VMTrooper分享数据中心技术的见解。
Trevor目前正在撰写VMware管理员的开发运营方面的稿件。
Scott Winger是一位有抱负的作家,从1987年起就是中西部一所大学的计算机技术人员。他拥有数学学位,并且在威斯康星麦迪逊大学学
习过计算机架构、操作系统、编程语言和编译器、数据库管理系统、网
络和数字方法。他在附近的Cisco技术学院教授各种网络和计算机课
程。Scott于2013年5月通过了VMware认证专家考试,并在不断地追逐
Cisco、微软和VMware的其他认证。第一部分 物理网络入门
·第1章 入门知识
·第2章 两种网络模型的故事
·第3章 以太网
·第4章 第2层的高级知识
·第5章 第3层
·第6章 融合式基础架构第1章 入门知识
关键概念
·实体携行网络(sneakernet)
·网络效应
·访问层、分发层和核心层1.1 导言
如果你对网络只有肤浅的理解,或者你的Visio框图上显示,服务器
连接到一个写着“这里有恐龙”的大黑匣子,那么就从本章开始吧。如果
你对基础知识有所了解,能够熟练地使用TCPIP、以太网和交换机这些
术语,那么可以跳过本章。
如果你是服务器管理员,可能对网络有一些经验——你必须插入一
个网卡,分配IP地址。但是对这一主题的介绍常常是以用户为中心的,通过行动来进行——其他人告诉你应该插入哪个端口;另外一个人分配
IP地址。你只知其然,不知其所以然。此外,你的工作已经很多,没有
足够的时间去了解一切来龙去脉。但是,在越来越虚拟化的世界里,你
至少应该了解一点基础知识。1.2 重复的工作
为了打好基础,我们先来想象一下,一个和现在完全一样,但是网
络的概念还没有出现的世界。业务仍然在计算机(或者类似设备)上完
成,但是还没有产生要求它们连接起来交换数据的需求。在偶然的情况
下,数据需要从一个工作站转移到另一个工作站,这通过复制到可移动
媒体完成——可能是某种蜡筒唱片——然后带着它到另一个地方去。在
网络萌芽之后,这种方法被称作实体携行网络(sneakernet),因为数
据的载体是你的鞋子(sneaker)。
假设你的工作是桌面支持,所以比公司里的其他人更懂技术。在维
护工作的间歇,你和会计部的同事Bob喜欢交换猫的照片,有时候会给
照片写上傻气的标题。这不是什么高尚的追求,但是可以让日子过得好
一点。你和Bob有权使用带有扫描仪和打印机的电脑,所以可以在家里
拍照,带到公司扫描、编辑和打印,通过部门间信件交换打印输出。有
一天,高层下达了绿色倡议,严格限制在非关键业务上使用打印机。你
考虑要调整工作流程,使用蜡筒唱片,但是这并不理想——空闲的蜡筒
唱片本身越来越难得到,一定有更好的办法。
你想起了小时候玩的游戏——使用两个纸杯和一根细绳和远处的朋
友聊天。对着纸杯讲话,然后将它移到耳边听对方的回答。你的朋友更聪明,指出可以用两组纸杯,同时说话和听取回应——对着一个连接到
朋友耳边的纸杯说话,他则对着连接到你耳边的纸杯说话。你知道,这
时就可以利用上述概念——分离发送和接收线路,就可以允许双方同时
通信。在地下室的“疯狂科学家实验室”里,你开始着手。
第二天早上,你将成果带给Bob看。在每台计算机上安装一张卡,用两条交叉的线路连接,并且安装一个通过线路向其他计算机发送任何
文件的新应用程序。你带来一些猫的新照片进行测试,它们从你的计算
机顺利地传到了Bob的计算机。这样,你就建立了第一个两人间的网
络。
Bob大为震惊,为这一成果而兴奋不已。接下来的几周,你们两个
人快乐地相互传送文件,直到有一天,人力资源部的Paul偶然看到你们
的行为,他也想要加入。你停下来考虑这一情况,虽然Paul有些怪异
——他偏爱狗的照片——但是你看到了连接两个以上朋友的价值。
Metcalfe定律
你可能知道,人们之间的联系,两个比一个好,三个比两个好,依
次类推。以太网发明者Robert Metcalfe在Metcalfe定律中将这一个概念规
范为“网络效应”:网络的价值与连接的兼容通信设备数量的平方成正
比。将此与一般随着用户增加而呈线性增长的网络成本相比,就会发现
很快就能到达价值远超过成本的临界点。经过多年,“用户”代替了“连接的兼容通信设备”,Metcalfe定律常
被用于描述从传真机到社会化网络的各种情况。
Robert Metcalfe还曾预测,互联网将在1996年底因其自身的压力而
崩溃——人都有失算的时候。
但是,如何将第3台电脑加入到你的双人单连接网络中呢?你考虑
了3端电缆的想法,但是你知道网络的扩展不会止于Paul。因此,需要
一个具有扩展性的方案。你设计了一个有许多网络端口的盒子,接收你们发出的所有内容,然后将其重发到所有其他端口。回到实验室,你为
这个设备添加了一些智能——每个端口的第一条线路上接收的信息,将
会从第二条线路上发送给其他端口。现在,你不需要担心制作电缆时发
送和接收线路的交叉了。这个盒子还能够帮助你解决距离的限制。线路
上的信号随着距离而衰减,但是这个盒子能够将信号以最大强度重发,从而使传输距离加倍。你把这个盒子称作“集线器”(hub),这个名字
是根据作为开发背景的儿童电视频道而取的。
次日早上,你带着集线器,供Paul使用的网卡以及一些新电缆来到
公司。到午饭时分,一切已经就绪。你选择的照片毫无差错地发送到其
他两方。但是,法务部的Sharon注意到吊顶上的电缆,也希望加入。不
过,Sharon与Paul不和,她所要发送的照片可能冒犯Paul。显然,她不
希望Paul接收到这些照片。
你回到了制图板旁边。为了满足Sharon的需求,传输应用程序必须
有一定的针对性。但是集线器不假思索地将接收到的信息重发给连接的
各方。可能,问题并不在集线器上,而在连接的电脑上。你、Sharon和
Bob的电脑上的网卡都完全一样。可以在它们上面写入某种唯一的标识
符,然后改写传输应用程序,使用这个标识符。你拆下所有零件,重新
制作新的网卡,这时碰到了一个问题——集线器将会重发接收到的所有
信息,即使Sharon直接将照片发给你,数据也仍然会发回给Paul。好
了,既然要更换网卡,干脆对它们进行一些编程,使其忽略不是发给特定ID的数据。这样应该就行了。进入实验室之后,你发现需要制作许多
网卡。以后不知道谁会得到这些网卡,你决定为其编号。公司里只有大
约15个人左右需要网卡,所以可以使用2个数字的标识符00~99。在第一
张网卡上设置ID时,你认为不应该自找麻烦,所以将ID字段宽度加倍。
现在,你的网络可以支持多达10000个设备——这真难以想象,但是既
然做了,就得做好。
第二天,你带来了新硬件,向Bob、Paul和Sharon解释这个新的系
统。你的编号是0000,Bob是0001,Paul是0002,Sharon是0003。开始
一切正常,很快,在你的秘密网络里有了10个活跃的用户,你开始感到
紧张。用户们抱怨记不住人们的编号,Bob投诉说,自从你几天前更换
了他的电脑,就没有再收到猫的照片,他认为自己被忽视了。
Bob的问题一下子点醒了你——当你替换他的电脑时,他得到了一
张新网卡,不再是0001了,而是0010。你必须让每个人知道这一变化。
但是这将进一步招来编号系统难以使用的抱怨。你所需要的是一个能够
容纳友好名称——也就是人们容易记住的名称的系统。如果硬件ID变
化,必须自动更新友好名称与硬件ID的映射,这样就没有必要去麻烦每
个人。
你建立了一个查找表,列出每个人的名字,这是一个友好的名称
——你询问每个人,他们希望用什么名称来命名计算机——以及网络
ID。你决定每个晚上将这个文件分发给每个人,至少在没有想到名称解析问题的新解决方案之前这么做。传输应用也必须重写,除了向网络ID
发送文件之外,还能支持向友好名称发送文件。你做出了必要的更改,并分发新的文件和说明,风波暂时平息了。
你的小项目越来越为人所知。公司的CIO听说了你的事迹,要求了
解项目的进行情况。在你解释了目前的工作之后,他询问传输程序是否
能够传输任何类型的文件,还是只能传输那些傻气的照片。当你告诉
他,数据就是数据,任何文件都有效时,他若有所思。他对你所花的时
间表示感谢,然后走开了。
几周之后,CIO找到你,要求连接大楼里的所有电脑——分布在几
个楼层的500个工作站。他要求你考虑这一点,并且将细节反馈给他。
这真是一个挑战。你的集线器有16个端口,这立刻成了问题。你当然可
以制作有500个端口的集线器,但是如果它坏了怎么办?所有人都会离
线。你要把这个集线器放在哪里?大楼里没有一个地方能够使你在电缆
距离限制内连接到所有工作站,即使有这种地方,安装这么多长短不一
的线路在材料和工时上也很昂贵。
如果要求是CIO提出的,时间和钱可能不是问题,所以你开始着手
解决第一个问题——距离。一个500端口的集线器不可行,但是2个250
端口的集线器可以解决问题。因为集线器将接收到的东西全部重发,应
该可以毫无问题地将两个集线器连接起来。细想一下,因为所有信息都
被重发给所有端口,两台计算机不管是连接在同一个集线器还是连接许多集线器,都应该能够相互传输数据。较小的设备应该更容易制造,也
更容易在出现故障的时候更换。一番冥思苦想之后,你决定采用三层模
式。在第一层(核心层)上,一台集线器将连接第二层(分发层)中的
集线器。在每个楼层放置一个分发层集线器,这些集线器用于连接第三
层(访问层)。最终用户的工作站连接到分布在楼层各处的访问层集线
器。这样,你就可以确保电缆较短且结构化,并且提供扩展或者部署到
新的建筑物中的模式化方法。
你将方案提交给CIO,得到了他的批准,然后开始着手部署这个新
基础架构,不知不觉之间,网络连接成为了整个公司的信条,没有人记
得,在网络出现之前的日子是怎么过的。1.3 小结
恭喜!你已经建立了第一个网络。你可以在LinkedIn档案中的技能
中增加“网络”这个项目了。当然,本章的例子过于简单了,但是介绍了
前几章中所需要的基本概念。我们介绍了一些零星的部件——应用程
序、网卡、电缆和集线器——并且经历了设计中的一些挑战。下面的几
章将更加详细地介绍这些基本概念。第2章 两种网络模型的故事
关键概念
·网络模型
·网络架构
·分层
·封装
·OSI模型
·TCPIP模型2.1 导言
在前一章中,我们进行了一次思维实验,从头开始构建了一个公司
范围内的网络。这种方法不建议在现实世界中采用。
构建真正的网络时,你必须考虑部件的可用性、系统的可支持性以
及和其他系统的互操作性。如果世界上的每个公司都从头建立自己的网
络,在公司之间交换数据就会成为一场异乎寻常的梦魇。
幸运的是,我们没有必要这么做。我们可以购买遵循著名网络模型
的现成设备,以可预测和可支持的方式构建网络。
网络模型是网络功能的概念分解,它将通信过程分为多个层次,描
述它们之间的交互。网络架构(network architecture)是一组文档,每
个文档描述遵循网络模型的更大系统中的一部分。协议由某些文档定
义,这是一组描述设备通信方法的规则。另一个文档可能描述物理规范
——如连接器类型。还有一个文档可能规定两个其他部件交互的治理规
则。这些文档组成一个整体,描述了构建可用网络的各个必要方面。确
保系统中的设备正常通信的唯一方法是每个部件都遵循相同的规则。
最初,网络架构是专属的,每个主要供应商都各搞一套。后来,引
入了任何人都可以采用的开放标准。有两个值得一谈的开放标准——其中一个是用于传授网络概念的经典参考模型,而另一个是实际使用的模
型。
1977年,国际标准化组织启动了开放系统互连(OSI)项目。他们
的用意很好——集中来自全世界的代表,建立基于标准的系统,使世界
上的每一台计算机都能相互通信。当时,网络技术通常是政府赞助的
(如ARPANET)或者供应商驱动的专利技术(如IBM的系统软件架构
(SNA)和DEC的DECnet)。OSI是联合技术供应商和其他感兴趣的团
体,建立任何人都能实现的通用框架,从而实现互操作性的一次尝试。
OSI有两个主要组成部分——一个7层的抽象模型,和一组围绕该模型设
计的协议。
大约在同一个时期,为美国国防部高级研究计划局(Defense
Advanced Research Projects Agency,DARPA)提供支持的研究人员致力
于一种不同网络互联的开放架构方法。这一方法成长为互联网协议族,通常被称作TCPIP,该名称取自于其中的两个最重要的协议——传输控
制协议(TCP)和互联网协议(IP)。它很快得到采用。美国国防部于
1982年3月将TCPIP作为所有军用网络的标准,1989年6月,Unix
TCPIP栈成为自由版权,允许任何人访问,实际上也就断绝了其他协议
族(包括OSI)的支持。
虽然OSI从未真正投入使用,但是这种模型仍然是全世界的人们每
天使用的重要工具,它被用于传授网络概念,描述故障排除过程和设计问题。TCPIP模型作为当今使用的几乎所有通信设备的基础,同样值得
重视。2.2 模型行为
在深入研究两种模型的细节之前,我们先来了解理解模型工作原理
的几个关键概念。
2.2.1 分层
为了更好地理解组网过程,我们将它们分为更容易控制的层次,并
定义了层次之间交互的标准接口。这样做有如下好处:
·降低复杂度:通过将过程分解为容易理解的部分,整个过程更容
易学习、使用、支持和制造。在排除故障时,我们可以将重点放在各个
部分,而不是整个过程。
·模块化和互操作性:供应商可以编写实现某个层次功能的软件,只要遵循层次之间的标准化接口,该软件就可以和在其他层次上运行的
其他供应商软件并存。
电话系统是分层模型的一个例子。你所需要知道的就是电话的使用
方法。拨号,剩下的就是别人的问题了。你不需要知道线路交换、电话
线、微波传输、海底电缆、通信卫星或者蜂窝网络的任何细节。在你的
电话和基础架构其余部分之间已经实现了标准接口,你只需要关心自己的电话是否正常(是否有电,是否有信号)或者潜在的用户错误(拨号
是否正确)。
在分层模型中,每个层次提供了低层和高层之间的服务。打电话
时,你要求基础架构较低的层次路由呼叫,使另一端的电话响铃。电话
是一个端点——用户直接交互的设备。当两个端点通信时,相同层次交
换信息,将交换的细节外包给较低的层次。你只管打你的电话,开始和
另一端的人通话,更多时候,你和他们的语音信箱打交道,但是一切都
在掌握之中。
2.2.2 封装
封装(encapsulation)提供了实现层次之间隔离的机制。模型中的
每个层次都有一个对应的协议数据单元(PDU)。除了最低的层次之
外,每个层次都定义一个报头(header)。报头包含在该层操作的协议
使用的信息。PDU由与层次相关的报头和低层数据载荷组成。图2.1展
示了OSI模型中的封装过程。图2.1 封装2.3 OSI模型
OSI模型包含7层,如图2.2所示。
图2.2 OSI模型
图中的层次从下到上分别为:·第1层,物理层:这一层处理物理传输介质,以及数据注入介质的
方法,包括电缆类型、连接器、针脚、编码、调制、电流及激活和关闭
传输介质的过程。这一层通常引用定义物理技术的其他标准。
·第2层,数据链路层:这一层处理对物理介质的逻辑访问。在这一
层次上添加了一个包含帧检查序列域的报尾,便于进行错误校正。OSI
模型将这一层次的PDU称作L2PDU。在实际中,我们称它们为帧
(frame)。
·第3层,网络层:这一层定义逻辑编址、路由和转发以及路径确
定。逻辑编址为每个设备提供一个路由过程使用的唯一标识符。路由确
定设备如何向最终目标转发数据包。路径确定是路由器用于学习指定目
标所有可能路径,并确定最优路由的过程。在这一层中,我们将PDU称
作数据包(packet)。
·第4层,传输控制层:这一层定义数据交付,包括错误校正和流控
制。在这一层中,我们将PDU称作分段(segment)。
·第5层,会话层:这一层定义通信会话如何启动、管理和终止。
·第6层,表示层:这一层定义数据格式,并协商使用的格式。数据
压缩和加密在这一层中进行。
·第7层,应用层:这一层定义通信驱动程序和需要与底层网络通信的本地应用程序之间的接口。这一层还定义身份验证过程。
第8层
你可能在职业生涯中听说过“第8层”的说法。第8层往往是对非技术
性问题的批评性说法。在某些情况下,它的含义是,问题的根源是
PEBKAC(存在于键盘和椅子之间的问题)错误,常常被用于指代人、管理、策略或者钱。
第8层和第9层还被建设性地用来指任何过程。这听起来更符合分层
和封装的概念——过程定义了人们使用应用程序沿着协议栈向下执行的
规程。
除了PearsonVue考试中心之外,不太可能有人会强迫你按顺序背诵
这7个层次,但是如果你觉得需要记住它们,使用助记术会比较方便。
助记术是任何容易记忆的、能够提醒你想起难以记忆信息的方法。
常见的助记术包括用于记忆螺丝刀用法的“右紧左松”,彩虹颜色顺序
的“Roy G.Biv”,以及记住分类学的“King Philip Came Over From Great
Spain”(菲利普国王来自大西班牙)。
在搜索引擎中输入“OSI mnemonic”,将会返回一个可以选择许多助
记方法的网站,其中一些可能很滑稽、猥亵甚至两者皆有——这些性质
使其更吸引人。在G级助记方法中,我们喜欢“Please Do Not Take SalesPeople’s Advice”(不要听销售人员的建议),因为它还提供了人生中的
一个经验。2.4 TCPIP模型
和OSI模型类似,TCPIP模型使用分层方法分解和隔离功能,但是
用4层代替7层——分别是应用层、传输层、互联网层和网络接口层,如
图2.3所示。
图2.3 TCPIP模型
和OSI模型一样,我们从下往上研究各个层次。2.4.1 网络接口层
网络接口层定义了主机与网络的连接方法,包括物理连接本身和用
于数据传输的物理介质细节。有些令人困惑的是,以太网既是关键的网
络接口协议,也是我们所关心的物理介质。
以太网将在第3章中详细介绍。
2.4.2 互联网层
互联网层定义了整个网络中编址和数据交付的机制。在这一层中运
作的协议包括IP、ARP、ICMP和IGMP。
互联网协议(IP)定义了网络设备分配的逻辑地址。这一地址由网
络地址和主机地址组成。网络地址用于将数据发往合适的目标网络,主
机地址唯一标识目标网络中的主机。这些地址采用小数点格式,如
192.168.1.100,你在以前可能已经遇见过,并且无数次地将它们分配给
不同的设备。每个IP地址都定义一个子网掩码,可将地址解析为网络和
主机部分。
地址解析协议(ARP)用于将IP地址转换为硬件地址,以将帧发往
下一跳设备或者最终目标设备。ARP请求通过本地网络发送,询问那个
网络接口有某个特定的IP地址。具有该IP地址的网卡发送ARP响应,包含了其硬件地址。
互联网控制消息协议(ICMP)用于控制通过网络的数据流、报告
错误、进行诊断。最常用的ICMP命令是ping和tracert,用于验证连接
性、确定主机之间的路径。
ICMP允许一台主机同时向许多目标发送数据。这称为组播
(multicasting),这超出了本书讨论的范围,在此不做介绍。
互联网层将在第5章中更详细地研究。
2.4.3 传输层
传输层定义了主机间的连接类型,以及确认信息是否发送和如何发
送。从使用的角度,该层只有两个协议可供选择:传输控制协议
(TCP)和用户数据报协议(UDP)。
TCP是面向连接的协议,它建立、管理和终止网络连接。TCP保证
数据的交付,包括流控、错误校验的支持,以及通过确认和重传恢复丢
失的数据。
相反,UDP是无连接的协议,UDP数据不需要错误校正或者流控,因此不需要建立网络连接即可快速传输,也没有对数据到达指定目标作
出确认。这听起来很糟糕,但是实际上并非如此,因为UDP对于流媒体等应用非常有用,在这种应用中数据的丢失总比重传丢失的包而引起延
迟更好,在其他情况下,错误校正可以用更高层的应用,更有效地完
成。
2.4.4 应用层
TCPIP模型的应用层定义了端点运行的软件所使用的服务。当应用
程序需要访问底层网络时,这一层通过将其转换为网络可传输格式处理
请求。这时,通过合适的端口建立连接。
端口是分配给应用程序或者协议的一类地址。TCPUDP有65536个
端口。互联网名称与数字地址分配机构(ICANN)将端口1~1023保留
给著名的应用程序。端口1024~49151被称作“注册”端口,它们也在
ICANN注册。端口49152~65535是私有(动态)端口,由各种应用根据
需要使用。
端口0
如果你注意力很集中,可能会发现我们说有65536个端口,然而分
类中只有65535个。从技术上说,保留端口的范围是0~1023,但是端口0
被用于特定的目的,不被用于传递流量。端口0在Unix套接字编程中被
作为一个快捷方式使用,请求端口0时,系统指定下一个可用的动态端
口。这使编程人员省去了硬编码端口号或者编写代码确定可用动态端口的麻烦。
运行于这一层的协议包括用于请求和提供网页的HTTP(端口
80)、用于文件传输的FTP(端口20和21)以及用于电子邮件的
SMTP(端口25)。端口及其分配的完整列表可以在
www.iana.orgassignmentsport-numbers上找到。2.5 OSI和TCPIP模型的对比
OSI和TCPIP模型有很多共同之处,因为它们描述了同样的一组事
物,只不过是方式上不同。图2.4展示了两个模型之间层次的对比,相
互的映射,以及每层上协议的示例。
图2.4 OSI和TCPIP层次对比2.6 小结
本章从理论而非实践出发描述了网络,重点介绍了网络模型、分层
和封装等基本概念。从下一章开始到第一部分结束,我们将介绍更多的
实际应用,说明网络的实践特性。第3章 以太网
关键概念
·以太网
·MAC地址
·冲突域
·广播域
·中继器、集线器和交换机
·交换逻辑3.1 导言
现在,我们要脱离教室中的讨论,进入具体的细节中。虽然本书主
要关注虚拟网络,但是在某种程度上,如果你想要完成任何工作,流量
就必须进入物理链路。所以,理解物理网络至关重要。在本章中,我们
讨论以太网和相关的第1层和第2层技术,这些技术你可能会在数据中心
中遇到。我们从以太网历史的简单介绍开始,然后转向电缆连接技术、物理编址和设备互连以及在它们之间转发数据的技术。3.2 以太网
当谈到数据中心网络时,我们通常会讲到某种类型的以太网。以太
网(Ethernet)这一术语指的是一组描述典型局域网(LAN)的物理和
数据链路层标准,以及实现它们的技术。
3.2.1 历史和操作理论
以太网已经出现了一段时间——将近40年了。20世纪70年代中期,在Robert Metcalfe的领导下,Xerox PARC开发了以太网,1980年正式投
入商业使用,1985年正式标准化为IEEE 802.3。
以太网最初是围绕共享介质的思路构建的——当时,同轴电缆作为
共享的物理总线。在被用于夏威夷大学开发的AlohaNet无线电传输系统
之后,建立了一些通信规范,但是使用物理电缆作为通信传输的“以
太”(ether)——以太网的名称就是从这里得来,因为IT人士都难以抵
抗19世纪物理学引用的诱惑。图3.1展示了一个简单的共享总线LAN拓
扑。图3.1 共享总线以太网上的设备
共享通信介质带来了挑战。计算机被连接到共享物理总线上,它们
通过总线发送电信号传输信息,通过检测电信号接收信息。如果两台计
算机试图同时发送信息会发生什么情况?两个信号会重叠,在总线上的
其他设备会引起混乱和不连贯。这在以太网的术语中称作冲突
(collision)。
为了在共享连接上成功地进行通信,必须有一些机制来确保一次只
有一个设备传输数据。以太网通过带有冲突检测的载波侦听多路访问
(CSMACD)算法来实现这一机制。
即使缩写,这个术语也很拗口,让我们来进一步分解它。“载波侦
听”的意思是首先检查线路。如果另一个传输正在进行,在传输之前等待线路空闲。“多路访问”指的是多个设备共享总线——冲突是可能发生
的。“冲突检测”描述了检测冲突并作出反应的方法。由于冲突涉及多个
同时发出的信号,可以通过搜索高于预期的信号振幅发现。检测到这些
冲突之后,传输中的站点发送一个阻塞信号,确保所有站点意识到冲
突,然后对每个站点采用某种退回算法,等待随机的时间后再重新传
输。
3.2.2 以太标准和电缆类型
以太网有多种速度和形式。最近,在现代数据中心,你最可能碰到
的是千兆和万兆以太网,使用铜缆或者光纤。在数据中心之外,你可能
使用100Mbps连接,甚至无线连接,但是我们讨论的重点是数据中心内
的连接,那里是真正发生魔法的地方。
光纤线路(fiber)和光纤通道(fibre)
在美国,关于数据中心内光纤线路的讨论可能很快就引起困惑。美
国人使用“fiber”来指代光纤线路本身。有时候,这种光纤线路被用于使
用光纤通道协议(fibre channel protocol)的存储区域网络(SAN)。所
以,“光纤线路”是介质,而“光纤通道”是一种可以在该介质上使用的协
议。明白了吗?更复杂的是,光纤通道协议也可以运行于非屏蔽双绞线
(UTP)上。在美国之外,“fibre”常被用于指光纤介质,这导致了许多令人沮丧
的拼写问题。
更多有关光纤通道的信息,可以参见Mostafa Khalil的《Storage
Implementation in vSphere 5.0》。
[1]
千兆以太网使用铜缆,而它的前身10M和100M以太网使用UTP电
缆。这些电缆由4对线组成,沿着电缆长度方向铰接,两端由RJ45连接
器终结。
你知道的所有关于连接器的知识都是谎言
你可能对我的卖弄学问不屑一顾,但是我们不能再成为说谎者中的
一员了。你知道5类线末端的是什么东西?它并不是RJ45连接器。RJ45
连接器是带锁的,不适合于标准以太网NIC端口。用于标准UTP电缆的
连接器是8P8C(8位置,8触点)连接器。真正的RJ45连接器是8P2C(8
位置,2触点)连接器。真正的RJ45插头和插座标准从未被真正采用,而8P8C和RJ45连接器的外观很相似(除了锁以外),所以两者都被叫
做RJ45。
在铜缆千兆以太网络上,所有4对线路都被用于同时传输和接收。
这与早期的10M和100M标准不同,那两种标准定义了单独的发送和接
收线对。光纤上的千兆和万兆以太网使用两股光纤线路,一股用来传输,另
一股用于接收。相对短的距离上可以使用多模光纤,较长距离则使用单
模光纤。单模光纤只携带单一频率的激光信号(对人眼不安全),而多
模光纤携带的是多种频率、由LED驱动的光信号,如果你看到这一光
线,不会受到伤害。在数据中心应用中,光纤线路通常终止于SC或者
LC连接器。SC连接器是方形的,使用推进–拉出式连接机制,每对传
输接收线路通常用一个塑料夹固定在一起。LC连接器体型较小,使用
与RJ45连接器类似的翼片连接机制。
上游光纤线路连接一般使用可热插拔的收发器。千兆接口转换器
(GBIC)或者小型可插拔收发器(SFP)用于支持千兆以太网连接,增
强小型可插拔收发器(SPF+)用于万兆连接。
铜缆上的万兆以太网最常采用SFP+直接连接,在这种连接中双轴
铜缆由连接到电缆末端的SFP+外壳终结。有些供应商将这种电缆称作
直接连接铜缆(DAC)。这些电缆用于相当短的范围内,被动电缆为
1~7米,主动电缆最多为15米,后者从连接的设备上获得传输所需的电
力。现在也有在UTP上传输的万兆铜缆网络(10GBase-T),但是较少
见,因为升级基础架构以支持它的成本高于使用现有的SFP+端口。
表3.1列出了一些常见的物理以太网标准。
表3.1 常见以太网标准表3.2展示一些常见的电缆连接器及其型号。
表3.2 常见以太网电缆连接器及其型号
3.2.3 以太网编址
在共享总线上,所有站点都能看到所有传输。但是,正如我们在第
1章中所看到的,有些信息本意只用于一个站点,有些用于一组站点,有些则可供所有站点接收。所以,以太网定义了一个编址方案,允许针
对单个接收者、多个接收者或者总线上所有接收者进行通信。
这些第2层地址——在IEEE 802.3标准中称作MAC(Media Access
Control,媒体访问控制)地址——长度为6字节,通常以一个12个十六
进制数字的字符串表示。Cisco设备通常用句点将其分为4个数字的组
(如1234.5678.90AB)。其他供应商使用冒号或者破折号分隔2个数字
的组(12:34:56:78:90:AB或者12-34-56-78-90-AB)。VMware使用冒号
记法,所以我们也将使用这种记法。
这些地址分为3种。第一种是我们将要花最多时间说明的——单播
地址。单播地址用于指定发送者和以太帧的意向接收者。当网络适配器
观察到共享总线上的传输时,它会检查目标MAC地址是否匹配自身的
地址,如果匹配则处理该帧,否则该帧被忽略。
单播MAC地址要求在全球范围内保持唯一。为此,物理网卡的制
造商在工厂将MAC地址编码到以太网卡上——这个地址常常被称作“烧
录地址”。IEEE为每个制造商分配一个组织唯一标识符(OUI),这个
标识符占据MAC地址的前半部分。然后,制造商分配地址的另一半。
VMware有自己的OUI(00:50:56),用于构建虚拟机网络适配器的MAC
地址。
全球唯一的例外情况IEEE要求MAC地址全球统一的本意很好,但是制造商并不都能达
到这个要求。许多人都有过发现NIC有重复MAC地址的经历,现代NIC
往往可以将MAC地址修改为自定义值。全球唯一性实际上更多的是作
为一个指导原则。所以,只要你的MAC地址在2层域中保持唯一,就没
有关系。
其他两类MAC地址用于标识多个接收者。广播目标地址(MAC地
址FF:FF:FF:FF:FF:FF)用于表示共享总线上的所有网络适配器都应该处
理该帧。组播目标地址用于将帧发送给总线上的一组网络适配器。组播
MAC地址将使用OUI 01:00:5e,剩下的6字节由用户定义。
[1] 中文书名《vSphere 5.0 存储设计与实现》,由机械工业出版社出
版。——编辑注3.3 扩展以太网段:中继器、集线器和交换机
我们在表3.1中已经看到,每个物理以太网标准都有最大电缆长
度,这种距离限制的原因和穿越介质时电信号的衰减(attenuation)有
关。当你想要连接更远的设备时该怎么办?早期的解决方案是中继器
(repeater),这种设备连接两个网段,将其在一端侦听到的所有信号
发送到另一端。中继器在10BASE5和10BASE2的时代很常见,当时以太
网段通常是单一的共享同轴电缆。
当基于UTP的电缆技术推出时,中继器被集线器(hub)所代替,如图3.2所示。集线器实际上是一个多端口的中继器,网段上的每个设
备都连接到集线器,集线器将接收到的所有传输数据重发到其他各个端
口。如果8端口集线器接收到端口1上的传输数据,它将把传输数据重发
到端口2~8,而不会将其发到接收到传输数据的端口上。从集线器传输
的数据都是新鲜的,可以发到最大距离,从而重置了距离计数器。图3.2 连接到集线器的设备
通过堆叠集线器,你可以支持许多设备的互连。但是,因为每个集
线器盲目地重发信号,形成的网络仍然是单一的共享总线,很容易引起
冲突。这种网络上的所有设备被称为同一冲突域(collision domain)的
组成部分。而且,CSMACD要求一次只有一个设备传输。因此,可用
的带宽在所有连接的设备之间共享。最终,在基于集线器的以太网中,没有设备能够同时传输和接收。这被称为半双工(half-duplex)通信。
随着共享总线上的设备数量的增加,冲突的概率也会增加。最终,不断
的冲突使通信无法持续。
因为冲突的倾向和低下的带宽利用率,人们开发出了更智能的互连
设备——交换机(switch)。交换机不通过盲目的重新广播建立单一的
共享总线,而是检查每个帧的目标地址,只将其转发到相关的端口。如
果多个帧同时被发送到同一个目标地址,交换机可以缓存这些帧,一次发送一个,以避免冲突。所以,在交换机中,尽管背板的带宽是共享
的,但每个当前通信连接的带宽不是共享的,每组通信中的端口可以使
用全部带宽,仅受交换机背板的限制。
由于这些特性,每个交换端口自成冲突域。只要每个端口只连接一
个设备,就不会发生冲突。CSMACD算法可以禁用,允许连接的两端
同时发送和接收,实际上成倍提高了性能。这被称作全双工(full-
duplex)通信。
虽然交换机能为单播流量做出智能的转发决策,但是仍然必须支持
广播和组播流量,允许发送者传输到所有或者多个连接的设备。当一个
交换机端口接收到广播,它会被重传到所有其他端口,这就是交换机和
所连接设备被称作共享一个广播域(broadcast domain)的原因。当交换
端口接收到组播时,只向与该地址有关的端口转发。
交换逻辑
让我们更深入地探究一下交换机的魔法。交换机必须检查每个输入
帧,确定是转发它还是忽略它。为此,交换机必须学习与每个端口相关
的MAC地址。这一映射由交换机检查每个输入帧源MAC地址建立。知
道源端口和源MAC地址之后,交换机在设计用于快速搜索的特种内存
中建立一个查找表,这一内存被称作内容可寻址存储器(ContentAddressableMemory,CAM)。
检查输入帧源地址之后,交换机检查帧的目标地址,并搜索MAC
地址表中的匹配项。如果没有找到匹配项,交换机向所有其他端口发送
该帧,假设位置的目标地址将会响应,然后将其加入地址表。如果找到
匹配项,且匹配项不是源端口,交换机将该帧转发到目标地址对应的端
口。如果匹配项就是源端口,该帧被忽略。如果你将一个集线器连接到
交换机端口,就会看到这种情况。交换机将把连接到集线器的所有设备
的MAC地址关联到同一个交换机端口,集线器将会把它连接的设备接
收到的所有信号重发到交换端口上。3.4 小结
在本章中,我们深入研究了以太网,讨论了操作理论、物理信道和
物理编址。我们还介绍了交换机及其做出转发决策的方法。下一章在这
些思路的基础上,介绍高级的第2层概念。第4章 第2层的高级知识
关键概念
·虚拟LAN(VLAN)
·汇聚端口
·访问端口
·生成树协议(STP)
·链路聚合4.1 导言
在前面的几章中,我们主要围绕为各种网络对象创建标识展开讨
论,并描述了各种网络拓扑。这对于让流量从一个对象传送到另一个对
象来说很好,但是有一些高级主题,对将基本网络转换为高可用性和可
伸缩的网络来说是必不可少的。
在本章中,我们将介绍3个新概念:将物理局域网(LAN)从逻辑
上分为虚拟LAN(VLAN)的方法,用于防止第2层出现环路,从而防
止网络传输能力被严重降低的技术,以及对链路聚合的讨论。这3个主
题在现代数据中心中十分关键,特别是与第二部分讨论的虚拟网络概念
关联的时候。在本章中所要探索的这3个主题通常可以在你遇到的所有
网络中遇到——随着阅读的深入你就会看到原因。
4.1.1 概念
局域网是供所有连接设备消费的共享资源,目标是让每个设备都能
高效地通信。但是,有时候一个公司可能希望通过较小的网络,将网络
的各个部分分成不同的功能组。管理层可能希望将每个部门隔离到自己
的网络中,或者希望让一个网络专门用于推动业务收入的应用。
拥有多个VLAN能够给性能和安全带来很大的好处。想象一下这种情景:在人力资源部(HR)中的人,该部门相互发送和接收敏感的个
人文件。隔离的HR LAN可以确保没有人会无意或者恶意地窥探他们的
网络流量。隔离的LAN还能确保HR员工不会与网络上的其他用户共享
一个广播域,从而改进了性能。最后,单独的LAN限制了某些恶意软件
的传播。
我们来看一个公司使用两个不同LAN隔离HR与销售和市场部门的
例子(见图4.1)。注意这个网络需要两个不同的交换机。
图4.1 两个隔离的物理LAN
然而,购买全新的一组网络设备来隔离HR员工的成本效益不高。
这类似于一家航空公司购买一批宽体客机,每架飞机只让10个人登机
——浪费了许多容量,招致不必要的开销。为了代替这种做法,开发出了虚拟LAN的思路,它被作为IEEE 802.1Q开放标准,可以让物理交换
机从逻辑上分割,提供独立的虚拟LAN。
图4.2显示了一个以太网帧,重点是通常不用的4字节。在这4字节
中,12位专门保留用于VLAN ID。在VLAN ID字段中填入值,就可以标
记该帧,将其放在一个VLAN段中。
图4.2 以太网帧
VLAN通过在帧头添加4字节的标记定义,让所有交换机知道该帧
属于哪个逻辑LAN。交换机的端口被编程为只转发具有指定VLAN编号
的帧,忽略其他帧。这让网络管理员控制哪个端口属于特定的VLAN。
回到想要隔离HR和其他部门的那家公司,我们现在发现,只需要
一个物理交换机(见图4.3)。VLAN标记现在在逻辑层上处理这种隔
离。图4.3 用于HR和公用的两个VLAN
只允许单一VLAN帧的端口称作访问端口(access port)。进入该端
口的流量(称作入口操作)将由交换机在帧上添加VLAN标记。这使得
连接到该端口的服务器不会意识到所属的VLAN,从而让服务器向该交
换机发送无标记的帧。另一方面,从该端口转发的流量(称作出口操
作)将删除VLAN标记,以便使服务器不会看到该标记。
让我们花点时间看看示例VLAN ID(100)的标记过程。服务器生
成无标记流量(没有VLAN标记),并将帧发送到交换机端口。在帧进
入端口时,它是入口帧,交换机知道该端口配置为VLAN 100,并将
VLAN ID域更新为100。当该帧以后发送到下一个目标时,就使用
VLAN ID 100,如图4.4所示。图4.4 访问端口的入口和出口VLAN ID状态
记住,如果没有路由设备的帮助,VLAN之间不能互相通信。每个
VLAN都有自己的2层网络域。即使两个设备在物理上插入相邻的端
口,在每个端口上使用不同的VLAN,都会禁止两个端口相互通信,除
非有一个设备路由这些流量。
4.1.2 端口汇聚
在VLAN数量较少或者小型网络拓扑的情况下,你可以对所有端口
使用访问端口。如果你的网络开始扩展,这样做就不那么好了。例如,如果有100个VLAN,就必须至少配置100个不同的访问端口,来转发从
一个交换机通往下一个交换机的流量。但是,如果你允许一个端口传递
多个不同VLAN,会怎么样?这就是端口汇聚(trunking)的用武之地
——这个想法实际上很简单,端口汇聚就是让一个端口能够转发一系列
专门定义的VLAN的流量如果你不想创建这样的列表,还可以简单地转
发“所有VLAN”的流量。
图4.5展示了4个不同的VLAN——VLAN ID 100、200、300、400——被分配到一个汇聚端口的情况。这个端口现在有能力传递属于4个
VLAN中任何一个的标记流量。
图4.5 多个VLAN的汇聚模式端口
汇聚端口(trunk port)常用于交换机之间,可以扩展VLAN。如果
两个用户连接到办公楼不同部分的两台交换机上,且必须处于同一个
VLAN,就需要相互通信的手段。两台交换机可以使用一个汇聚端口,从两个场地传递802.1Q(VLAN标记)流量。
注意 虽然将服务器连接到访问端口相当常见,但有一些用例将服
务器连接到汇聚端口。我们将在第2部分讨论虚拟网络时介绍这种用
例,但是要记住,没有运行虚拟化管理器的物理服务器几乎总是连接到
访问端口。
原生VLAN我们在前面曾经说明过,连接到访问端口的服务器向交换机发送无
标记帧。然后,访问端口添加相关VLAN的标记。但是,如果未标记帧
被汇聚端口接收,会发生什么?由于汇聚端口可能属于数十个VLAN,交换机如何确定对帧应用哪个VLAN标记?
这时就要用到“原生VLAN”(native VLAN)的概念了。原生VLAN
是专门定义,用作任何未标记流量默认值的VLAN。当交换机看到一个
无标记的帧进入其端口,它查找原生VLAN编号,并在不标记任何
VLAN信息的情况下转发它。下一跳的交换机必须承认原生VLAN的编
号。4.2 避免环路和生成树
设备间的单一链路形成了单一故障点,所以很自然地会想到增加冗
余链路。只要预算允许,你还应该在交换机级别上引入冗余性,例如,访问层交换机到多个上游分发层交换机的双连接。这避免了任一个网络
设备故障造成整个系统停机的情况。但是,这样做也有危险,因为交换
机之间的冗余链路如果携带广播流量,可能造成所谓的“广播风暴”,在
这种情况下,交换机传输真实流量的能力将接近于0,因为它实际上传
输的是无限循环的广播帧。因为以太网没有存活时间之类的内部计数器
来使流量过期失效,进入环路的帧将永不休止——至少在网络管理员拔
除导致环路的电缆,或者在每个连接的交换机上开启生成树协议
(Spanning Tree Protocol,STP)之前。
4.2.1 生成树概述
生成树协议是一个非常深奥的主题,让许多专业的网络管理员都感
到头痛。我们将在本章的下一部分告诉你它究竟是什么,它的工作原
理,以及对于典型网络运作的重要性。
什么是生成树
STP——IEEE 802.1D开放标准设计用于避免环路,使网络管理员能在不形成流量环路的情况下引入冗余性。STP学习网络拓扑,有目的地
阻塞可能造成环路的冗余链接。如果一个活动链路失效,STP将解除必
要链路的阻塞,恢复连接性。
实例 上述的效果很容易演示。如果你有便宜的消费级网络交换
机,可以将两个端口连接在一起,插入你的笔记本或者桌面电脑,并且
Ping某个IP地址,生成ARP请求广播。由于低端交换机没有运行STP来
阻止环路,因此会观察到大量的活动,直到你拔掉环路为止,这就是交
换机上的广播风暴。
生成树是如何工作的
所有主动参与STP的交换机首先必须知道那个交换机是根网桥
(root bridge)。这通过选举完成——就像选举总理或者组长一样,但
是涉及的政策比较少。根网桥从网桥ID最低的交换机中确定。各个交换
机通过交换包含其网桥ID的网桥协议数据单元(BPDU)来确定根网
桥。
网桥ID由两部分组成:网桥优先级和MAC地址。默认情况下,所
有交换机的网桥优先级都为32768。管理员可以更改网桥优先级,以
4096的倍数增加或者减少,强制确定作为根网桥的交换机。如果所有交
换机都使用默认的优先级32768,则通过寻找MAC地址值最小的交换机
来打破僵局。在你希望作为根网桥的交换机上设置较低的网桥优先级是明智的,否则的话,根网桥的角色可能会落到一台能力不足或者过度使
用的交换机上,仅仅因为它恰好有最小的MAC地址。
确定根网桥之后,拓扑中剩下的非根网桥交换机进行一些计算,确
定将流量发回根网桥的最佳路径。它们交换BPDU,确定网络拓扑并跟
踪拓扑的变化。到根网桥的每条路径都有相关的成本。想象一下,你想
要从一个城市开车到下一个城市,会有许多不同的路径选择。你可能选
择州际公路,里程较远但是可以开快车;也可以选择地方公路,里程较
短,但是速度也慢得多。
交换机关注每条可能返回根网桥的链路的成本,搜索最低的总路径
成本。路径成本是基于数据传输率的每条路径成本总和。对于标准
STP(802.1D),成本如表4.1所示。
表4.1 STP成本值
从这些成本中可以看出,如果STP必须在一条100Mbps(成本19)
和4条1000Mbps链路(成本为4×4=16)之间做出选择,它将选择4条
1000Mbps链路。选择路径之后,连接到其他交换机的端口被分配如下
的STP角色:
·根端口(Root Port,RP):提供到根网桥最低成本路径的交换机端口。
·指定端口(Designated Port,DP):处于到根网桥最低成本路径下
一跳的上游交换机端口。
·阻塞端口(Blocked Port,BLK):根端口和指定端口之外的端
口,被阻止转发流量。
这些连接如图4.6所示。图4.6 样板拓扑中的生成树角色
当一个链路失效时,STP将完成一次重新收敛过程,确定应该激活
的阻塞端口。该端口将经历4个状态:
·阻塞:任何非DP或者RP端口的起始状态。不接收和发送用户数
据,但是发送和接收BPDU帧。
·监听:端口监听BPDU帧但是不转发,不更新其MAC表。这使得
过时的MAC地址可以失效,因为它们在STP拓扑变化之后不再有效。端
口持续监听可能使其返回阻塞状态的BPDU。不转发帧。
·学习:端口尚不转发帧,但是观察接收到的帧的源地址,并用它
们填写MAC表。
·转发:正常操作——端口正在发送和接收数据。
4.2.2 PortFast
STP默认阻塞端口,直到它监听和学习该端口上的流量,确定可以
在不造成环路的情况下转发流量。这对于交换机间链路是很好的,但是
网络上的终端设备——桌面电脑、服务器、打印机等——通常不会造成
网络环路。阻塞流量一段时间可能造成某些令人头疼的复杂性,特别是
在工作站或者服务器试图使用预启动执行环境(PXE)启动,或者请求IP地址的DHCP租约时。
对于这些终端设备,管理员可以在Cisco设备上启用PortFast,或者
在其他交换机供应商的产品上指定某个端口为边缘端口(edge port)或
者“快速上联”(fast uplink)端口。PortFast是802.1D的一种扩展,允许
端口跳过监听和学习状态,直接迁移到转发状态。实际上,这一设置告
诉交换机立刻信任该端口,不需要花费时间证明该端口不会造成环路。
实例 对连接到服务器上任何一个NIC的端口启用PortFast很常见,且常常受到厂商的推荐,因为它们不会形成环路。所有服务器NIC应该
得到允许,积极地转发流量。
当然,在交换机端口上启用PortFast必须小心,并且确保没有网络
设备插入该端口。有些人可能插入一个配置了不恰当的STP网桥优先级
的“流氓”网络设备,成为网络拓扑中的根网桥。但是,这些方面的内容
超出了本书的范围,BPDU Filtering和BPDU Guard等工具能够提供对这
类风险的防护。
4.2.3 快速生成树
虽然STP的效果和宣传的一样,但是它的收敛相当慢。如果网络拓
扑变化,STP可能花费30~50秒才能将端口从阻塞迁移到转发流量。大
部分环境都不能接受这样的停机时长。在当今“随时在线”技术的“超连接”世界里,你能够想象整个网络断开将近一分钟吗?
注意 大部分网络不运行传统的802.1D STP,它已经成为一个统
称,表示当今存在的任何STP变种,便于和你的同伴们谈论交换机端口
上的阻塞和转发流量。
快速生成树协议(Rapid Spanning Tree Protocol,RSTP)——IEEE
802.1W开放标准的推出,是为了更快的网络收敛。这种协议要求大约6
秒钟的收敛时间,使用的端口状态少于STP,这样的性能有多种原因,主要是源于该协议使用提议(proposal)和确认(agreement)来代替定
时器,并将端口状态与端口角色解耦。它所使用的3种端口状态是:
·丢弃(discarding):该端口状态代替STP的禁用、阻塞和监听状
态。端口丢弃帧,就像STP阻塞端口一样。
·学习(learning):此时,该端口检查流量以学习MAC地址,但是
不转发或者接收数据流量。
·转发(forwarding):交换端口转发和接收数据流量。
RTSP还引入了另外两种端口角色:
·替换端口(alternate port):这是通过不同于活动根端口的对等交
换机,提供到根网桥替换路径的阻塞端口。·备份端口(backup port):这是通过同一台对等交换机,提供通往
根网桥的备份路径的阻塞端口。4.3 链路聚合
并不是所有设备间冗余链路都会招来STP的麻烦。实际上,你可以
自由地使用一整组专门用于解决某些冗余链路需求的协议,我们接下来
将介绍它们。
4.3.1 什么是链路聚合
虽然STP之类的协议对于避免网络环路是必要的,但是让完好的网
络连接处于闲置,只在出现链路故障(这种故障可能永远不会发生)时
才投入使用,是令人羞耻的事情。我们可以使用链路聚合,在不违反
STP的情况下使用这些链路。
链路聚合(link aggregation)是将多个物理端口绑定为单一逻辑组
的行为。这避免了组的任何一个成员被阻塞,因为组对STP来说是一个
逻辑端口。
与STP管理的单独链路相比,链路聚合提供了两大好处:
·增加带宽和负载分担:因为一个逻辑组中的多条链路都是活跃
的,在各个通信会话中提供了更多可用带宽。在图4.7中,没有一个单
独的通信会话(如单个客户与单个服务器的通信)能够使用超过一个物理链路。你可以将它看作建造多个车道的高速公路:你可以在高速公路
上行驶更多的车辆,但是每辆车在同一时间内只能占用一个车道。
·改进冗余性和可用性:如果组中的一个链接失效,其他链接继续
传递流量,组不会离线。没有必要重新配置STP拓扑,或者由STP将一
个新的链路从阻塞迁移到活动。图4.7 从单一来源到单一目标的链路聚合数据流只通过一个聚合端口
链路聚合带来的挑战之一是,它以不同的名称、形式和标准出现。
不同供应商采用不同的术语,甚至在实施相同标准时都是如此。为了不
引起混乱,我们尝试用通用的术语链路聚合组(LAG)来描述一般概
念,在谈及具体实现时使用供应商特定的术语。
实现方法
构建LAG有许多不同的方法,每个供应商都决定使用略微不同的名
称或者方法,实现逻辑链路分组。这可能给网络新手带来疑惑和挫败
感,所以我们将介绍常见的术语和使用的技术。
802.3ad和802.1ax-IEEE开放标准
IEEE LANMAN标准委员会在他们的802.3ad开放标准中提出链路
聚合。该思路是为了通过非专利的手段达到许多链路聚合目标。后来,该标准被正式改为802.1ax发布,以避免与其他802.1层次之间的混淆。
802.1ax的正式定义如下:
链路聚合允许一个或者多个链路聚合在一起,组成链路聚合组,从
而使媒体访问控制(MAC)客户可以将链路聚合组视为单一链路。
在802.1ax开放标准中,IEEE还定义了链路聚合控制协议
(LACP)。这个协议的目的是使两个系统能够用标准的非专利协议协商LAG。
Cisco的EtherChannel
EtherChannel(以太网通道)是构建Cisco交换机之间LAG的专利方
法,它最多可以包含8个转发流量的活动端口,以及8个不活动端口(有
时称作故障切换端口),用于在活跃端口失效时接管。EtherChannel有
两种类型:
·静态EtherChannel,在Cisco IOS中称作“mode on”,它是人工配置
的,不使用协商协议来组建LAG。如果网络管理员在交换机中输入错误
的信息,LAG看上去仍然是活动的,但是可能不能正确转发流量。
·动态EtherChannel可以使用两种协议之一自动创建LAG:端口聚合
协议(PAgP)或者LACP。创建动态EtherChannel时,两个网络交换机
协商组建LAG。如果协商失败,不会建立LAG。
Etherchannel与Port Channel
在链路聚合的讨论中更为复杂的是,EtherChannel和Port Channnel
两个术语常常互换使用。但是,两者之间有微妙的差别。在两个交换机
之间配置EtherChannel时,在每个交换机上创建一个Port Channel接口,将物理接口绑定在一起。EtherChannel作为交换机之间的渠道,由一组
捆绑的电缆组成,而Port Channel是在两端终结EtherChannel的逻辑接口,由一组捆绑的接口组成。换句话说,当你改变EtherChannel的配置
时,是通过Port Channel的接口进行的。当这些更改提交时,它们自动
应用到组成EtherChannel的各个接口。
其他供应商的术语
下面是一些在讨论链路聚合时可能遇到的其他术语:
·Trunk(HP):HP网络设备的某些文档(以及支持这些设备的许
多网络工程师)将LAG称作Trunk(主干)。这可能造成LAG与传输
802.1Q VLAN标记的链路之间的混淆,后者被其他人称作“Trunk”。HP
的“Trunk”实现遵循802.1ad标准,而非HP的工程师称其为LAG。
·多机架链路聚合(Multi-Chassis Link Aggregation,不同供应商)
或者跨堆叠以太网通道(Cross-Stack EtherChannel,Cisco):多机架
LAG终结两个不同节点上的接口。这是具有更高可用性的实现方法,因
为LAG可以承受连接目标的故障。各个供应商都有特定的实现细节,超
出了本书的范围,但是你应该知道MC-LAG的存在,因为单一交换机目
标的故障并不意味着聚合链接的丢失,因此它更为健壮。具体的例子包
括虚拟端口通道(Cisco)和分布式主干(HP)。
·NIC Teaming(网卡捆绑):许多终端操作系统和虚拟化管理器能
够从逻辑上捆绑网络连接。这通常称作NIC Teaming或者NIC
bonding(网卡绑定)。在这些配置中,软件驱动程序必须确定如何在上联链路中分布流量,连接的物理交换机通常没有意识到捆绑的配置。
4.3.2 动态链路聚合
如前所述,802.3ad和Cisco的链路聚合实现都支持两种LAG构建方
法——静态和动态。它们实际上很简单。静态LAG是由管理员手工配置
的,在创建之后立刻显示为“启动”状态,即使线路另一端的对应端口没
有正确配置也是如此。动态LAG使用特定的协议与对应端口通信,询问
它们是否正确配置,可以组成LAG。
实例 在实践中,选择哪一种方法主要取决于网络设备的支持。例
如,VMware vSphere标准交换机(vSwitch)无法组成动态LAG,如果
需要链路聚合,必须使用静态LAG。其他硬件和虚拟交换机如HP
ProCurve、Cisco Nexus和VMware vSphere虚拟分布式交换机(5.1及更
高版本)支持使用LACP的动态LAG。大部分网络管理员倾向于尽可能
使用动态LAG,因为这有助于确保LAG正确配置。
在现代交换世界中,动态LAG协议实际上只有一个选择:LACP。
你想要使用的任何设备都支持它。尽管如此,使用Cisco PAgP的设备也
不少见。
链路聚合控制协议(LACP)LACP在IEEE 802.3ad开放标准中定义,后为802.1ax。理解该协议
更详细的工作原理并不很重要,但是你应该知道它所使用的一般过程:
1)配置为使用LACP的网络设备将在LAG所有成员端口上生成特殊
的LACPDU(LACP数据单元)帧。
2)对端设备将接收这些特殊帧,如果它们也配置了LACP,将用自
己的LACPDU帧响应。
3)网络设备将组成动态LAG。
真的很简单!
端口聚合协议(PAgP)
端口聚合协议(PAgP)是一个越来越不重要的LAG协议。该协议
由Cisco开发,作为动态组成LAG的方法。现在的Cisco设备不再支持
PAgP,因为其他厂商的设备都坚持使用LACP。
实例 和使用Cisco网络设备的人一起工作时,他可能将LACP说
成“mode active”(主动模式)。这是因为创建Cisco EtherChannel的CLI
命令需要设置该模式。LACP模式的选择为“active”(主动)
和“passive”(被动)。主动设备将寻找对端设备组成LAG,而被动设备
只会监听请求。两个设备中至少有一个必须是主动的,否则两者都只能
监听。将两个设备都设置成主动,以免担心设备设置方式的情况也很常见。
4.3.3 负载分布类型
使用LAG时,必须选择一种何种流量通过哪个物理端口的方法。两
个设备之间创建的每个会话都只能使用LAG内的单一端口。认为流量会
分布到多个端口是常见的错误——回到高速公路上的汽车的例子,你不
能将一辆车切成4块,同时占据4个车道。即使你能够这么做,这些分块
也不能带着你更快地到达目的地——谁能保证呢?
每个LAG,不管是静态还是动态,都使用某种负载分布方法,确定
流量会话与特定端口的映射。LAG可以检查帧和数据包的首部,寻找3
种信息:
·源信息(src)
·目标信息(dst)
·源和目标信息(src-dst)
负载分布逻辑可以提取如下信息:
·IP地址(ip)
·MAC地址(mac)·TCPUDP端口(port)
你可以根据特定流量负载的最佳分布方式来做出选择。典型的默认
方法是使用源和目标MAC地址(src-dst-mac)。这种方法在你不知道基
于源还是基于目标的分布更有好处的时候使用。从主机A到主机B、主
机A到主机C以及主机C到主机B的数据包都使用LAG中的不同端口。
下面是一些用例和负载分布方法:
·通往一组Web服务器的流量可能从使用源IP地址(src-ip)中得
益。使用这种方法,来自不同IP地址的数据包可能使用LAG中的不同端
口,但是来自同一个IP地址的数据包将使用LAG中的同一个端口。
·通往办公大楼中PC工作站的流文件传输可能从目标MAC地址
(dst-mac)中得益。使用这种方法,前往相同目标MAC的数据包通过
LAG中的相同端口转发,而前往不同目标的数据包通过LAG中的不同端
口发送。
·相互间必须传递流量的应用服务器可能从源和目标端口(src-dst-
port)中得益。使用这种方法,在主机之间发送的使用不同端口的数据
包将在LAG中的不同端口上转发,而主机间相同端口之间发送的数据包
将在LAG中的相同端口上转发。
陷阱 在vSphere 5.5之前,VMware vSphere分布式交换机只支持src-dst-ip负载分布。一定要告诉你的网络管理员使用这种方法,并将
VMware虚拟交换机上的分布算法设置为“基于IP散列的路由”(route
based on IP hash)。4.4 小结
现在,你已经进入第2层的高级主题,你可能认为,你最希望实现
的是消除逻辑环路。但是要记住,业界已经做出了很大的努力,用创造
性的方法使网络在实际拓扑中有多条物理通道时以为只有一条路径存
在。幸运的是,你在vSphere网络上所要处理的大部分事务完全不可能
形成环路——这将在第二部分中更详细地介绍。
对于你未来的高性能网络忍者职业生涯,更为重要的是VLAN的理
解、消费和配置。大部分vSphere环境依赖于正确的VLAN编号和描述,这样客户虚拟机(VM)才能正确地相互通信。此外,使用VLAN隔离
各种类型的流量,可能带来许多性能上的好处。最后,链路聚合提高了
vMotion和IP存储之类的关键大量负载的可靠性和容量。不用害怕:我
们接下来将用物理和逻辑配置的实际例子,更加深入地讨论这些主题。
参考文献
1.IEEE Standards Association.2013.802.1AX-2008-IEEE Standard for
Local and Metropolitan Area Networks—Link Aggregation.Available at:
http:standards.ieee.orgfindstdsstandard802.1AX-2008.html.第5章 第3层
关键概念
·路由
·IP地址
·子网
·默认网关
·DHCP
·DNS
·ARP
·Ping5.1 导言
我们已经学习了第1层和第2层,现在可以转向第3层——网络层
了。曾几何时,当每个数据包必须离开本地网段,进入浩瀚的世界
去“碰运气”时,我们只能含着眼泪目送它们,希望它们一路走好。在本
章中,我们将描述在不同的网络之间,数据从一个设备路由到另一个设
备的过程。我们将从网络层功能的概述开始,然后转向网络层的逻辑编
址,深入讨论路由机制,详细描述一些支持该层功能的工具。5.2 网络层
你可能记得在第2章中曾经提到,OSI第3层的功能是将数据包从发
送者传递到接收者,一路上可能经过许多“跳”(hop)。为了实现这种
功能,网络层协议支持转发数据包、设备逻辑编址的过程以及发现所连
接网络和到达网络的途径的方法。
5.2.1 路由和转发
网络上的每台主机在确定发送数据包的目标时,都使用一个简单的
两步过程。如果目标地址和主机在同一个子网,源主机简单地将数据包
直接发送到目标主机。如果目标地址在不同的子网,主机将数据包发往
子网上的路由器。路由器检查数据包,将目标地址与路由表比较,寻找
匹配项。如果找到匹配项,路由器将数据包重新发往对应的接口。
5.2.2 已连接、静态和动态路由
路由器将每个数据包的目标地址与路由表比较。路由表可以三种不
同的方式填充。首先考虑的是已连接路由(connected routes)。只要接
口上线且分配了互联网协议(IP)地址,路由器将自动将直连的子网路
由添加到路由表。如果路由器有一个IP地址为192.168.1.124的接口,它将把192.168.1.024添加到路由表,将该接口作为下一跳。
第二种方法是静态路由。对于没有直接连接的网络,管理员可以手
工输入路由语句,将某个网络导向某个接口。这在小规模或者静态环境
中工作得很好,但是在扩展或者新网络不断添加的时候难以管理。
第三种方法是动态路由,路由器可以通过路由协议学习路由。每个
路由器向拓扑中的其他路由器广播所知路由。当路由器监听到路由更新
时,它将更新信息添加到路由表。路由协议包括一些避免路由环路添加
到路由表的机制,并且包含某些路由器用于比较学习到的路由的指标,确保添加到某个位置的最佳路由。
5.2.3 最终网关
前面,我们曾经说过,如果路由表中找到匹配项,路由器将把数据
包发到对应的接口。那么,如果匹配项没有找到呢?路由器通常会配置
一个最终网关(gateway of last resort),也称默认路由或者默认网关。
这些术语可以互换使用,但是“最终网关”更直观。这是一种特殊的通配
静态路由,如果数据包在路由表中没有任何匹配项,则将其发送到这个
网关,它知道该怎么做。
注意 除非你使用Cisco路由器并使用no ip classless命令,否则上述
说明都成立。在这种配置下,最终网关可以设置,但是会被忽略。如果路由表中没有找到匹配项,该数据包会被抛弃。
这一概念也可以扩展到网络上的主机——每台主机都可以将其默认
网关配置成子网上的路由器。注意,因为默认网关是任何非局域网的通
配路由,每台主机只能有一个默认网关。即使主机是多连接的——也就
是说连接到多个网络——也仍然只能有一个默认网关。5.3 IP编址和子网
在网上通信的每个设备需要唯一的IP地址。IP地址是一个32位数
字,我们将其缩短为句点十进制记法,将32位序列的每个字节转换为一
个十进制值,并且用句点分割这些数字。所以,IP地址204.248.52.7实际
上是32位序列11001100111110000011010000000111。你常常会听到这些
十进制分块被称作octets,也就是一组8个二进制值。
IP地址被分组为连续的地址,每一组是一个IP网络或者子网。单一
子网中的地址在第一部分中有共同的数值串。整个IP地址分为两部分
——一个定义网络的网络前缀,和一个指定网络上主机的主机地址。共
享同一网络前缀的所有主机相互处于同一局域网——它们之间不能有任
何路由。同样,具有不同网络前缀的主机必须用路由器分隔。
5.3.1 分类编址
那么,对于204.248.52.7这样的地址值,你怎么知道网络地址结束
的地方和主机地址开始的地方呢?回到国防部高级研究计划局
(DARPA)设想IP的时候,互联网工程任务组(IETF)创建了RFC
791,描述主机用作单播地址的不同网络类别,其中定义了3类网络——
A类、B类和C类。每个类别的网络前缀长度不同。A类网络使用地址的第一个字节作为网络前缀。B类网络使用前两个字节作为网络前缀,C
类则使用前三个字节。在描述网络前缀时,通常是写出前缀中的数字,对主机部分使用0。例如,4.0.0.0是一个A类网络,128.123.0.0是一个B
类网络,192.123.231.0是一个C类网络。
每一类网络都能支持一定数量的主机。A类网络保留第一个字节作
为网络前缀,其余3个字节(24位)可以用于主机标识。可用主机的总
数是2^24减去每个网络中的两个保留地址,共有1600多万个主机地址。
地址范围中的最后一个保留作为广播地址,第一个地址在历史上保留用
作网络前缀,但是现在的路由和交换硬件允许使用该地址。B类地址支
持2^16减去2,共计65534台主机。至于C类网络,则是2^8-2=254台主
机。表5.1列出了各类网络的八位位组范围、网络编号、网络总数和每
个网络的主机数。
表5.1 分类网络描述
5.3.2 无类编址
分类编址并非没有限制。分类网络的供应很快被耗尽,路由表变得
难以管理。IETF设计了一个描述网络的新系统(RFC 1518和1519),称作无类域间路由(Classless Inter-Domain Routing,CIDR)。
和分类编址一样,IP地址由网络前缀和主机标识符组成。但是
CIDR的网络前缀没有被限制在一个字节的位数边界上,而是允许网络
前缀使用任何长度,这通过可变长度子网掩码(VLSM)实现。
CIDR引入了子网掩码的概念,这是另一个32位二进制数,和IP地
址配合起来,确定IP地址的网络和主机部分。子网掩码的二进制表现总
是一系列的1,后面跟上一系列0。路由器将IP地址的二进制值和子网掩
码作逻辑与(AND)运算,确定网络部分。另一种说法是,IP地址的网
络部分是对应于子网掩码中1的一组位。
我们来看几个例子。假设有一台主机的IP地址为10.20.30.40,采用
A类子网掩码255.0.0.0,网络地址是什么?
10.20.30.40的二进制表现形式是
00001010000101000001111000101000。255.0.0.0的二进制表现形式是
11111111000000000000000000000000。我们比较这两个数值:
IP:00001010000101000001111000101000
掩码:11111111000000000000000000000000
网络:00001010000000000000000000000000我们可以查看IP地址中的哪些位映射到子网地址中的1,然后在映
射到0的位上输入0,写出网络地址。这里,网络地址为
00001010000000000000000000000000,转换为10进制就是10.0.0.0。你
常常会看到子网掩码表达为其中1的个数——这称作CIDR标记法。我们
的网络的CIDR标记方式是10.0.0.08。
现在,我们来尝试更复杂的地址。我们使用相同的IP地址
10.20.30.40,但是这次子网掩码是255.255.255.224。
同样,10.20.30.40的二进制表现形式是
00001010000101000001111000101000。255.255.255.224的二进制表现形
式是11111111111111111111111111100000。我们比较这两个数值:
IP:00001010000101000001111000101000
掩码:11111111111111111111111111100000
网络:00001010000101000001111000100000
这次,我们的网络地址变成00001010000101000001111000100000,转换成十进制和CIDR标记法就是10.20.30.3237。
提示 www.subnet-calculator.comcidr.php上有一个方便的在线计算
器,可以将IP和子网掩码转换为其网络地址和网络范围。5.3.3 保留地址
有些IP地址最好避免使用,因为它们被保留用于特定的目的。这包
括每个子网中最小和最大的IP地址。最小的IP地址保留用作网络地址,而最大的则用于该网段的广播地址。其他常用的保留地址块是0.0.0.08
保留用作通配源IP地址,127.0.0.08保留用作环回地址,169.254.0.016
保留用作链路本地地址(你可能在Windows中看到它们被称作自动私有
IP地址[ARIPA]),D类(第一个字节为224~239)和E类(第一个字节
为240~255)地址被保留用作组播和试验性地址。
其他一些地址范围被保留用作私有IP地址,包括10.0.0.08、172.16.0.012和192.168.0.016。私有地址通常用于不需要公共IP地址的
组织内部。设置私有地址的设备仍然可以通过网络地址转换(NAT)访
问外部资源。保留地址范围的完整列表可以参见RFC 6890《Special
Purpose IP Address Registries》(特殊用途IP地址注册)。5.4 网络层支持应用
介绍了编址和转发机制之后,我们转向辅助网络层功能、保养和供
应的常见工具。
5.4.1 DHCP
网络上的每个设备都需要一个IP地址,但是随着网络的扩张,人工
为每台设备配置地址给后勤工作带来了挑战。某些重要的设备——例如
路由器、交换机和服务器——应该人工配置,使用不会变化的静态IP地
址,以确保这些设备总是可以在预期的地址上访问。其他设备(一般是
最终用户设备)可能采用的是临时性的链接,不需要固定、人工分配的
地址。对于这些设备,可以使用动态主机配置协议(HDCP),临时借
用或者租借IP地址。DHCP还使管理员能够配置其他信息,包括默认网
关地址、DNS服务器地址(下面会做详细介绍)以及域名。
使用DHCP时,DHCP服务器维护可用于各个子网的不同IP地址池
的列表。配置为使用DHCP的设备在其子网上广播DHCP Discover消息。
DHCP服务器指定池中的一个IP地址并向客户响应一个DHCP Offer消
息,包括指定的IP地址、子网掩码、租期和DHCP服务器的IP地址。然
后,客户端通过广播DHCP Request消息做出响应,表示它已经接受提供的地址。客户端可以从多个DHCP服务器接收地址,但是只能对一个做
出响应。任何其他发送地址的DHCP服务器将会看到广播请求,将提供
的地址返回到地址池中。然后,DHCP服务器向客户端发送DHCP
Acknowledgement消息,确认地址保留。确认消息包括可能指定的其他
配置参数。
5.4.2 DNS
虽然我们中的某些人还为能够回忆起20年前使用的IP地址(可是却
记不得妻子早上让他们做的事情)而痛苦,但是不能期待最终用户也能
做到这点。
域名服务(Domain Name Service,DNS)是将用户友好的名称映射
到IP地址的集中化机制。当主机配置为使用DNS服务器时,它将向指定
的服务器发送DNS请求,要求翻译。然后,DNS服务器用匹配友好名称
的IP地址响应。可以指定多个DNS服务器,所以如果客户端无法联系列
出的第一台DNS服务器,它将尝试列表中的下一台服务器,直到接收到
响应。
5.4.3 ARP
回忆一下,每个IP数据包必须封装在一个第2层帧中,才能够发送到下一跳设备。地址解析协议(ARP)用于确定该帧的目标媒体访问控
制(MAC)地址。
客户端将一个名称解析为IP地址之后,它确定该IP地址是不是在本
地子网上。如果是,则在该网段上发出一个ARP广播,要求该IP地址的
设备响应其MAC地址。如果目标主机不在本地子网上,客户端发出默
认网关IP地址的ARP请求。
并非每次通信都要发出ARP请求。在客户端发起请求时,响应被记
忆在ARP缓存中。每当客户端需要在一个帧里封装数据包,它会检查
ARP缓存,看看是否有目标IP的MAC匹配项。
5.4.4 Ping
Ping命令可以测试主机之间的基本IP连接性。它使用互联网控制消
息协议(ICMP),向目标主机发送一个ICMP回声(echo)请求,预期
该主机响应一个ICMP回声。成功时,你就确定网络可以从源主机向目
的主机发送一个数据包。
Ping的名称来自声纳,因为回声请求和回声响应类似于主动声纳的
处理过程。5.5 小结
在本章中,我们研究了第3层——网络层的功能。我们描述了网络
层功能、网络层编址、路由和转发过程以及在该层次上运行和提供支持
的一些工具程序。在下一章中,我们离开网络理论,研究一种相对新颖
的基础架构消费模式。第6章 融合式基础架构
关键概念
·融合式基础架构
·Cisco UCS
·HP BladeSystem
·Nutanix虚拟计算平台6.1 导言
在进入虚拟网络的讨论之前,我们先绕个小小的弯子。你可以把这
看作一次小憩,在接受了我们刚刚介绍的大量网络知识之后稍事休息的
机会。到目前为止,我们已经介绍了不少的网络基础知识。这种时候很
容易令人迷失方向,沉迷于各种互联设备的特性,而忘了那些设备的最
初目的是为了建立网络。类似的情况常常发生在服务器、存储、桌面电
脑方面的专业人士身上。当这些技术被看作孤岛,独立配备和采购,就
会出现“竖井”,大大降低效率。
融合式基础架构(converged infrastructure)是解决上述问题的方法
之一,这种解决方案将计算、网络和存储技术打包或者集成为一种易于
消费、部署和管理的解决方案。在本章中,我们将介绍融合解决方案的
基本概念,并提供一些常常会碰到的例子。6.2 概念
首先,我们先来看看具备传统数据中心组件——连接到网络交换机
和存储阵列的机架式服务器——的典型IT机构。管理和维护这些设备的
人员组合成不同团队——存储团队、网络团队和服务器团队——这些团
队共同组成基础架构团队。
当数据中心需要添加新服务器时,需要进行相当多的活动。除了政
策和采购商的把戏之外,这三个团队必须和谐共事,使新服务器进入投
产状态。
服务器团队必须“上架和堆叠”服务器。这是将服务器运送到数据中
心,拆包,然后寻找一个机架位置安装的过程。他们的任务还包括指定
服务器名称,应用IP地址,并完成服务器的其他个性化属性的设置。
网络团队将服务器连接到附近的交换机,询问服务器团队该服务器
端口的配置方式。他们询问的问题常常与VLAN配置、所需电缆数量和
确定端口与服务器通信的最大传输单元(MTU)有关。为了安全,他
们还可能想要对网卡(NIC)进行研究,验证交换机发现的MAC地址。
最后,存储团队可能需要检查主机总线适配器(HBA),为建立存
储区域网络(SAN)和对应的分区配置标识全球端口名称(WWPN)。然后,他们可以构建存储结构,例如逻辑单元号(LUN)或者卷,并向
服务器提供它们。
听起来很累,不是吗?涉及的人很多,即使有完美的沟通,仍然有
许多犯错的机会。虽然没有一项任务会花费太长的时间,但协调工作和
遵循更改控制策略所需的后勤工作可能造成延迟,将交付时间延长到疯
狂的地步。我们曾经遇到很多公司,他们认为能在90天内完成从交付到
投产的过程就很好了。
融合基础架构的好处
上述模式已经出现了多年,并且大部分都很有效。那么为什么要改
变呢?是的,如果每个月只添加一台或者两台服务器,进行多团队的目
标竞演就没有太大的必要。但是,如果你每个月要添加10、100甚至
1000台服务器,那又会怎么样呢?你需要一个工程师兵团,他们除了添
加服务器什么都不干。这种方法没有伸缩性,而且极其容易出错。
融合基础架构试图消除大量的人为因素,它的目标是将多种资源组
合成一个逻辑管理和控制面。网络当然是这一思路的核心,通常与计算
和存储相结合。融合机构不形成IT基础架构中的孤岛,而是支持打破这
些藩篱,组成统一的团队。
下面是融合基础架构带来的一些好处:·一次性连接线路:网络团队执行的大部分联网任务在解决方案的
初始配置期间完成。在数据中心添加更多服务器时,物理网络保持不
变。
·敏捷性和灵活性:大部分配置通过自动化和模板完成,消除了人
为配置相关的风险。
·可见性:整个解决方案可以从中央管理面板分析和配置,而不是
必须登录到跨学科的多个门户上。6.3 示例
在过去几年中,融合基础架构服务的数量激增。该市场顺应了数据
中心简化管理和增加灵活性的思路。每种服务在具体运营方式、针对的
市场和解决方案的伸缩性上各有不同的侧重。我们将提供几个在数据中
心上遇到的解决方案示例。这不是一个完整的列表,只用来作为各类融
合基础架构的例子。
6.3.1 Cisco UCS
Cisco统一计算系统(Unified Computing System,UCS)是一种“白
板”计算方法,试图回答“后虚拟世界应该使用什么样的计算平台?”的
问题。Cisco的方法在一个“围墙”中统一网络和存储网络结构,减少了管
理点的数量,并提供服务器置备的策略和基于池的方法。它还允许你选
择刀片或者机架式服务器。
UCS的智能存在于一对阵列互连(fabric interconnect)之中,该设
备运行UCS Manager软件,控制和管理整个计算域。每个阵列互连有到
外部网络的上游连接,并且可以选择到阵列扩展器的SAN和下游“服务
器端口”连接,这些连接的实现形式是刀片机箱中的IO模块或者柜顶式
Nexus 2000系列设备。每个阵列扩展器作为阵列互连的远程线卡使用。阵列扩展器完全依赖于阵列互连,它们本身不转发流量。流量通过上联
端口(uplink port)流入阵列互连,然后通过服务器端口(server port)
流向阵列扩展器,最后流向刀片服务器或者机架服务器。
清楚地说,UCS是融合空间中相当独特的一种服务——一般来说,融合基础架构的设计被限制在刀片或者“类似刀片”的机箱中,不允许使
用机架服务器。
为什么这很关键?不是所有工作负载都适合于刀片型系统。例子之
一是Apache Hadoop——这种大数据分析群集可以从每台服务器中许多
慢速的小型本地硬盘中获益,这种硬盘数量不适合于单一的刀片服务
器。
图6.1展示了一个UCS机架,其IO模块连接到一对阵列互连。图6.1 Cisco UCS架构
阵列互连作为终端主机(End-Host)设备使用——它们就像面向服
务器一端的交换机,而在面向网络的一端则像服务器网卡。这消除了传
统交换机的一些危险。终端主机设备不会形成环路,也就没有必要考虑
生成树。这意味着,从阵列互连到上游交换机的每条上游链路都可以是
活跃的。每个IO模块和阵列互连之间也可以有多个连接,无须担心环路
——根据你的配置,每个IO模块和阵列互连之间的链路被看作一个port-
channel绑定,或者将刀片与特定的上联链路绑定。这确保流量可以流向
所有上联链路。阵列互连不学习任何不在其控制之内的MAC地址。当交换流量时,任何未知的目标MAC地址都被转发到上联端口,期待上
游的全功能交换机对其进行处理。
服务器必需的所有网络配置都在UCS Manager中进行。你定义
VLAN、服务质量(quality of service)策略、MTU大小和每个服务器所
拥有的NIC数量。服务器通常配置为无状态——与物理刀片关联的服务
配置文件包含从池中拉取的MAC地址和全球名称(WWN)标识、网络
和SAN配置以及从SAN或者LAN启动的配置细节。这就可以在出现故障
时快速而轻松地更换——你可以替换失效的刀片,并且重新将服务配置
文件关联到替换的刀片。
Cisco提供了两个扩展管理能力的附加产品。UCS Central提供多个
UCS域(也就是多对阵列互连和连接的服务器)的集中化管理。UCS
Director提供了全面的管理和编排功能,不仅可用于Cisco UCS硬件,还
能用于其他Cisco交换设备及多供应商存储设备。
6.3.2 HP BladeSystem
HP BladeSystem多年来一直处于x86刀片架构的领先地位。
BladeSystem全力关注刀片服务,不会选择机架服务器。但是,BladeSystem提供广泛的特种刀片——如存储刀片、PCIe插槽刀片、桌
面刀片等。此外,这种架构设置为允许使用广泛的刀片交换机,甚至可以使用Cisco和Broacde等其他供应商的产品。
和用一对阵列互连组成包含所有刀片机箱的域的Cisco UCS不同,BladeSystem将相当部分控制和管理放入单独的刀片机箱。实际上,每
个机箱都有一个板载管理器(Onboard Administrator,OA)和8个用于
不同网络模块的插槽。这为管理员提供了灵活性,可以自定义每个机
箱,用于特定的需求(例如光纤通道、以太网或者两者组合的数量或者
用途)。得到这些灵活性的代价是每个点必须作为单独实体管理和维
护,但是可以使用管理软件,通过HP Virtual Connect Enterprise和HP
OneView等服务组合实体控制。Cisco UCS和HP BladeSystem两者之间的
重要差别是:“UCS使用一个逻辑管理点,而HP BladeSystem有多个”。
我们不准备评价孰优孰劣,这只是你在使用两种系统时应该注意的一个
要点而已。
从网络的角度看,HP BladeSystem的重点在于虚拟连接(Virtual
Connect,VC)技术,这是工作于透明模式(与UCS的终端主机模式很
类似)的交换模块。VC模块通常成对部署在机箱中相邻的位置。你可
以选择将模块配置为主动-被动,如果主动模式的模块失效,被动模块
将会接管,也可以配置为主动–主动,使底层vSphere虚拟化管理器可以
在故障的时候将流量转向主动模块。在主动–被动和主动–主动模式之间
选择的决策通常取决于流量和上联交换架构。HP的Cook Book介绍了两
种配置的构建方法——我们将从第11章开始介绍刀片服务器架构的一些细节。
HP BladeSystem在VC管理器中提供了定义VLAN、虚拟NIC、NIC
速度等能力。在VC域(VC Enterprise Manager中的单一或者多个机箱)
中完成一次配置,就可以重复地用于每个当前和附加的刀片。如果对你
的架构或者设计有利,也可以使用仅存在于BladeSystem中的VLAN,将
其用于本地流量(如vMotion或者Fault Tolerance)。当BladeSystem作为
HP CloudSystem Matrix解决方案一部分时,可以得到额外的自动化和自
服务功能。
图6.2展示了HP BladeSystem c7000机箱的业务端点。图6.2 HP BladeSystem后视图
6.3.3 Nutanix虚拟计算平台
Nutanix提供了将各种资源供应组——计算、存储和网络——融合
为单一的“超融合”平台的新方法。Nutanix的融合达到了最大的限度,不涉及任何远程存储阵列——所有资源都被合并到一个虚拟计算群集机架
(virtual computing cluster chassis)。
在专注于网络构造时,Nutanix提供了有趣的体验。因为全部的焦
点都在Nutanix群集进出流量的表现上。与该系统绑定的以太网连接为
虚拟机提供一个离开群集与其他实体通信的路径。群集中的每个
Nutanix节点提供一系列网络适配器,可以插入一个上游交换系统,带
宽的扩展变得很容易,只需要简单地添加节点的数量。这在某种程度上
与CiscoUCS小节中表达的概念类似,不同之处在于不是将UCS机架与
UCS阵列互连连接,而是将Nutanix节点连接到上游交换机,由其提供群
集功能和对节点的访问。剩下的节点间通信由系统处理。除了指定IP地
址,节点间通信对管理员是透明的。
图6.3展示了Nutanix虚拟计算平台的架构。图6.3 Nutanix虚拟计算平台架构6.4 小结
在本章中,我们介绍了融合架构的概念,说明了它相对传统部署模
式的优势,并描述了3种最常遇到的供应商实现。本章结束了我们在物
理基础架构上的讨论,在下一章中,我们将讨论虚拟网络概念。第二部分 虚拟交换
·第7章 虚拟交换与物理交换的不同
·第8章 vSphere标准交换机
·第9章 vSphere分布式交换机
·第10章 第三方交换机–1000V
·第11章 实验方案
·第12章 标准虚拟交换机设计
·第13章 分布式虚拟交换机设计第7章 虚拟交换与物理交换的不同
关键概念
·主机上联链路
·虚拟端口
·外部交换机标记
·虚拟交换机标记
·虚拟客户标记7.1 导言
虽然很容易指出物理和虚拟交换之间的明显差异——一个是硬件,另一个是软件——但还不仅于此。在交换流量和提供高级服务及功能的
过程上也有不同。在本章中,我们关注虚拟交换机如何在运行ESXi的
VMware vSphere主机上运营,以及虚拟交换机代表的逻辑对象的一些术
语。7.2 物理和虚拟交换机的比较
你的第一个问题可能是——虚拟交换机究竟是什么?毕竟,本书的
前一部分完全聚焦于交换的理论与实践,以及一些路由方面的知识,大
部分都集中在将电缆插入神奇的盒子当中,以传输数据的过程。
首先,我们将介绍物理和虚拟交换机之间基本功能的相似和不同之
处。你可能会吃惊于两类交换机的相似之处,它们之间的差异很微小,但是对虚拟环境的设计和配置有着深远的影响。
7.2.1 相似点
需要注意的是,顾名思义,VMware虚拟交换机(常称为vSwitch)
不对流量进行特殊或者专利的修改。所有流入虚拟交换机的帧遵循IEEE
802.3协议的相同标准,遵循OSI模型数据链路层的概念框架,以及
TCPIP网络接口层的实际应用。考虑这一点非常有意义——否则你就需
要特殊的设备来将流量传入或者传出ESXi主机及其虚拟交换机。
图7.1展示了IEEE 802.3帧格式。图7.1 IEEE 802.3帧格式
此外,ESXi主机有能力使用来自Qlogic、Emulex、Intel等公司的各
种现成网络适配器(NIC)——参考硬件兼容性列表,将其作为权威性
列表。这些NIC使用标准的连接器类型——RJ458p8c铜缆接口或者各种
标准的光纤连接器类型,和在运行其他操作系统或者虚拟化管理其的其
他服务器上所找到的NIC一样。然后,虚拟交换机开始使用这些网络适
配器,并连接电缆对流量进行交换处理。
7.2.2 不同点
因为虚拟交换机不是物理设备,在配置上有某些灵活性。如果你的
虚拟交换机需要大量虚拟端口,只需要编辑其属性并根据需要调整。对
于物理交换机,这可能需要繁重的交换机升级,添加新交换机,或者在
基于机架的交换机上添加线卡。
7.2.3 交换决策
另一个重要的差别是虚拟交换机处理第2层交换的方式。也就是
说,对网络上的MAC地址的确定以及数据的移动。物理交换机有很大
的MAC地址表,保存在内存中以便快速发现帧发送的目标。直接和远
程连接到交换机的节点地址都被记忆下来——也就是直接插到交换机端口的节点和连接到另一个交换机端口上的节点。
图7.2显示了连接到虚拟交换机的设备的MAC地址,这些地址是在
vSphere Web Client中找到的。
图7.2 虚拟交换机只跟踪其端口上的MAC地址
虚拟交换机不会关心不直接连接到它的节点的MAC地址。它只需
要知道消费虚拟交换机上虚拟端口的虚拟机和VMkernel端口设备(在本
章中将做进一步介绍)的MAC地址。除此之外,虚拟交换机对其他设
备没有任何线索。如果一个帧从外部进入虚拟交换机,目标是未知的MAC地址,它会被虚拟交换机忽略。这是一个重要的区别——物理交
换机将会向除了接收帧的端口之外的所有端口发出未知帧,作为其学习
MAC地址的过程的一部分。软件虚拟交换机不需要经历学习过程,由
此知道MAC地址属于哪个端口。类似地,如果一个帧从虚拟端口进入
虚拟交换机,例如从一个VM发出,目标是未知的MAC地址,它将通过
上联链路端口处理。这使得虚拟交换机的二层交换非常简单而轻松。总
结起来,交换逻辑如下:
1)以太网帧进入虚拟交换机。
2)如果目标是已知的MAC地址,将该帧交换到拥有该地址的虚拟
端口。
3)如果目标是未和的MAC地址:
a)如果来自外部源,抛弃该帧。
b)如果来自内部源,将其发到物理上联链路。
图7.3说明了这种虚拟交换逻辑。
记住,虚拟交换机只能进行2层交换。如果帧试图到达另一个
VLAN上的MAC地址,需要第3层交换,该帧将被发送到物理上联链
路,寄希望于高层交换机能够执行VLAN间路由。图7.3 虚拟交换机中的交换决策7.3 物理上联链路
但是,虚拟交换机上的端口并不都是虚拟的——毕竟,必须有某种
手段将流量送出主机!这就是物理网络适配器(NIC)的任务,它作为
进入物理网络的上联链路(uplink)。每个上联链路提供到上游物理交
换机的一条通信路径,以便数据能够进入和离开虚拟环境。
主机网络接口卡(NIC)
ESXi主机的NIC作为虚拟交换机的上联链路。也就是说,它们是流
量进入和离开vSphere主机的途径。如果需要,你可以配置大量的NIC
——在vSphere 5.1中最多为32个1GbE NIC——也可以只配置一个。我们
倾向于配置不少于两个NIC,为避免单点故障,至少配置两个NIC。如
果你不希望流量离开ESXi主机,可以创建一个没有上联链路的虚拟交换
机。
你还可以选择NIC的速度。这通常是每秒1G bit(1Gbps)或者10G
bit(10Gbps)。你甚至可能注意到这些值被表示
为“1GbE”和“10GbE”——大写字母E代表以太网。
不是所有流量都会使用物理上联链路。有时候一个VM(甚至主
机)希望与相同主机上同一个虚拟交换机内的同一个VLAN上的另一个VM通信。在这种情况下,流量没有必要离开虚拟交换机,使用上联链
路——交换机知道连接到它的两个实体,它将简单地在本地交换该帧。
过去,这有时候被称作“暗流量”(dark traffic),因为在开发出现代化
的虚拟感知工具和监控软件之前,很难跟踪和监控这些流量。
图7.4说明了本地虚拟交换机暗流量的概念。
图7.4 本地交换的流量(暗流量)7.4 虚拟端口
我们已经介绍了虚拟交换机的物理端——NIC提供的物理上联链
路,下面我们转向虚拟端。
虚拟交换机动态定义可用于VM和主机本身的虚拟端口数量。虚拟
端口计数是动态的,这一事实很重要,因为这使得交换机很敏捷,可以
满足新创建的VM和主机端口的需求,同时删除不使用的端口,保持主
机RAM消耗的合理性。
提示 vSphere 4分布式交换机使用静态的虚拟端口数量。当你耗尽
虚拟端口时,必须用图形用户界面(GUI)或者脚本增加该数量。这很
无趣!
然而,vSphere 5.x默认情况下使用的分布式虚拟端口是弹性端口
(elastic ports)。弹性意味着,虚拟交换机将自动管理虚拟端口的数量
——按需创建和删除——不需要用户的干预。
虚拟端口连接到3种不同类型的端口:VM NIC、VMkernel端口和服
务控制台端口。
7.4.1 虚拟机NIC在虚拟机中创建、连接和激活的每个虚拟网络适配器使用虚拟交换
机上的一个虚拟端口。这是VM NIC和虚拟交换机之间连接的实际方式
——虚拟端口是与物理网络之间的桥梁。
7.4.2 VMkernel端口
VMkernel端口是将vSPhere主机的VMkernel连接到虚拟交换机的特
殊端口。毕竟,主机也需要和其他主机、vCenter服务器和网络上的其他
重要设备通信,这些流量必须和其余流量一样通过虚拟交换机发送。
VMkernel端口可以有多种不同的用途,传输各类流量:
1)管理
2)vMotion
3)容错日志
4)iSCSI存储流量
5)NFS存储流量
7.4.3 服务控制台
在vSPhere 5之前,你实际上有两种ESX可以选择:ESX和ESXi。到了vSphere 5,就只有ESXi了。两者之间有何不同?ESX有时称作“经
典”虚拟管理器,实际上运行虚拟化内核(VMkernel)和一个控制台操
作系统(Console Operating System,COS)。ESX是个相对较大的安
装,导致了更大的攻击面,所以VMware最终搁置经典的ESX架构,现
在只提供精简的、仅包含VMkernel的ESXi。
不过,重要的是理解经典ESX不使用管理VMkenel端口,而是采用
特殊的接口——服务控制台来进行管理;这个接口归COS而不是
VMkernel所有。虽然深入讨论这一点超出了本书的范围,但是最好了解
这种经典的架构。7.5 VLAN
虚拟交换机最后一个(但很重要)组件是VLAN标记。你可能记得
第4章中介绍的IEEE 802.1q。虚拟交换机支持3种不同的方式,确定如何
以及在何处处理VLAN。
7.5.1 外部交换标记
顾名思义,外部交换标记(External Switch Tagging,EST)配置
中,虚拟交换机完全忽略VLAN标记,物理上联链路连接的外部交换机
处理所有VLAN,并在它们到达虚拟交换机之前删除标记。
这种配置通过将上游交换机上的物理交换端口设置为访问模式来实
现。当流量进入上游交换机的访问端口时,检查VLAN标记,并在端口
向下游的虚拟交换机发送流量之前删除标记。因此,虚拟交换机只处理
无标记流量。
而且,因为没有VLAN标记进入虚拟交换机,VM NIC或者
VMkernel端口不知道它们属于哪个VLAN,也从不会看到802.1Q VLAN
标记。虚拟交换机上的任何设备必须使用相同的VLAN——在上游交换
机访问端口上配置的那一个。7.5.2 虚拟交换机标记
虚拟交换机标记(Virtual Switch Tagging,VST)发生在虚拟交换
机本身检查和添加删除VLAN标记的时候。为此,连接到物理上联链路
的上游交换机端口必须配置为汇聚(trunk)端口。这使该端口可以传递
预订数量的VLAN标记流量到虚拟交换机,且保留标记。
当帧到达虚拟交换机时,交换机检查VLAN标记以了解帧属于哪个
VLAN以及目标MAC地址,假定它找到一个匹配VLAN和MAC地址的
VM NIC或者VMkernel端口,则删除VLAN标记并交付该帧。否则,该
帧被抛弃。当流量来自VM NIC或者VMkernel端口时,虚拟交换机确保
在将该帧发送到物理上联链路之前添加VLAN标记。
VM NIC或者VMkernel端口不知道802.1Q VLAN标记,这一点与
EST类似,因为虚拟交换机在交付帧之前删除该标记。
注意 VST是虚拟化管理员最欢迎和常用的方法,原因是多方面
的。VST非常易于管理和维护,因为上游交换机端口配置为汇聚端口,不需要网络管理员花费精力去维护。而且,它为虚拟化管理员提供了额
外的VLAN可见性,可以轻松地从vSphere Client上看到标记编号。最
后,它在可用于虚拟交换机的VLAN数量上比EST更灵活,EST只允许
每个物理上联链路使用一个VLAN。对了,这个方法也是VMware推荐
的首选方法。7.5.3 虚拟客户标记
最后一种标记类型是虚拟客户标记(Virtual Guest Tagging,VGT)。在这种配置中,上游交换机端口配置为汇聚端口,向虚拟交换
机传递VLAN标记。虚拟交换机将检查VLAN标记,确保它们匹配正确
的目标虚拟端口,但是保持标记不变。标记帧以不修改的方式传递到
VM和VMkernel端口。为了这种配置正常工作,VM必须读取和理解
VLAN标记,并标记自己发送出去的流量。
图7.5说明了VLAN标记如何从Windows VM中添加到NIC。图7.5 在Windows客户VM中配置VLAN
VGT是一种独特的配置,通常保留给监控或者“嗅探”流量、提供路
由服务或者其他需要看到带有VLAN标记的帧的VM。7.6 小结
在本章中,我们了解了物理和虚拟交换机之间的一些关键差别。我
们介绍了它们处理流量的不同方式、虚拟端口的不同类型以及处理
VLAN的不同方法。在下一章中,我们在这些不同点的基础上,实际地
探索vSphere标准交换机的配置选项。第8章 vSphere标准交换机
关键概念
·控制和数据平面
·虚拟端口
·虚拟交换机安全性
·流量整形
·网卡捆绑和故障切换
·VMkernel端口
·端口组8.1 导言
如果没有某种将网络流量发出和发往VM的手段,VMware ESXi服
务器也就没有多少意义。幸运的是,VMware实现了这种手段,并且为
这个问题提供了经过深思熟虑的两种解决方案——vSphere标准交换机
和vSphere分布式交换机。本章重点关注前者——在每种许可证级别都
包含的原始虚拟交换机方案。不要被标准交换机的“标准”一词所迷惑
——它包含一组很好的特性,能够帮助你将流量快速地送入网络。下面
我们先来看看VMware标准交换机的工作原理。8.2 vSphere标准交换机
VMware标准交换机(standard switch)的目标是在任何场景下使网
络可以通信。这可能意味着,ESXi主机完全没有连接到vCenter——所
谓的vSphere“独立”(standalone)或者“vSphere虚拟化管理器”(vSphere
hypervisor)安装。在这种情况下,没有比主机本身更高级的管理设
施,所以标准级别的交换机必须能够只在主机发出指令的情况下运作。
提示 如果更深入地去思考就会发现,当你第一次在服务器上安装
VMware时,它是一片空白——没有名称、IP或者DNS信息。虽然可以
编写安装脚本,自动分配这些标识,但是无法做出任何假设。这是标准
虚拟交换机必须能够在ESXi独立安装下工作的另一个原因。
8.2.1 基本术语
在了解标准交换机工作原理之前,我们必须介绍一些术语。描述交
换机功能时,我们常常使用控制平面(control plane)和数据平面(data
plane)这两个术语。控制平面的流量和功能可以看作是流向交换机的流
量,而数据平面流量可以看作是通过交换机的流量。和交换机相关的管
理、监控和配置流量是控制平面流量。从一个虚拟机发送给世界的其余
部分的帧是数据平面流量。在典型的柜顶式物理交换机中,控制和数据平面处于同一设备中。
对于虚拟交换机,这些功能是相互分离的。
8.2.2 控制平面
标准虚拟交换机的控制平面位于VMware主机上。也就是说,虚拟
交换机配置、端口数量和流量转移方式的操纵都由主机负责。更确切地
说,确保虚拟交换机配置和正常运作,是虚拟化管理器内核(称作
VMkernel)的任务。
同样,即使你聚集一组VMware主机,每台主机也负责自己的标准
虚拟交换机。在vCenter出现故障时,每台主机的标准虚拟交换机仍然可
以通过直接连接到主机的vSphere客户端配置。
8.2.3 数据平面
主机上的每个标准交换机负责交换帧,这意味着数据平面由主机负
责。在数据进入主机的网卡(NIC)时,这些网卡组成标准虚拟交换机
的上联链路,VMkernel确保帧到达正确的目标。有时候这意味着流量会
被忽略,特别是外部流量进入虚拟交换机时带有未知目标MAC地址的
情况。8.3 虚拟交换机属性
每个虚拟交换机有两个基本属性,可以配置它们来满足设计和网络
最大传输尺寸的需求。
8.3.1 端口数量
端口数量表示保存在内存中、被跟踪和可用于VM的虚拟端口、VMkernel端口以及主机上联链路的数量。标准虚拟交换机的弱点之一
是,如果你更改端口数量,ESXi主机必须重启。在vSphere 4.1之前,虚
拟交换机端口的默认数量仅为56,导致许多没有经验的VMware管理员
在遇到该限值之后,才知道这是可以修改的。随着时间的推移,VMware了解到虚拟化管理员们的痛苦,在vSphere 4.1中,分配给标准
虚拟交换机的默认端口数被改为128,提供了一些余地。管理员可以2的
幂次增加该数量,比如从128改为256,最多可以增加到4096个端口。
图8.1展示了vSphere Web Client中的默认虚拟交换机属性对话框。图8.1 默认虚拟交换机属性
实例 如果你在经典的vSphere客户端上查看端口计数,可能会注
意到显示的端口数比默认端口数少8(120个)。虚拟化管理器总是保留
8个端口用于网络发现、Cisco发现协议(CDP)流量和物理上联链路等
开销。在较新的vSphere Web客户端中,显示的是实际的端口计数。
8.3.2 最大传输单元(MTU)
你可以配置的另一个项目是MTU——可放入帧载荷部分的最大数
据量。默认情况下,MTU是1500字节,对于你所能购买的任何网络设
备都是如此。你可以合理地假设,所有处于虚拟交换机上游的物理设备
都支持1500或者更大的MTU,这样能够避免不必要的数据包碎片。还有一个选项可以增大MTU的大小,将其设置为“巨型帧”(jumbo
frame)。我们确实喜欢这个行业中的这些傻里傻气的名称。巨型帧就
是大于默认尺寸(1500字节)的帧。即使将MTU设置为1501,从技术
上讲也是启用了巨型帧。这种“强大”、尺寸稍大一些的帧令人望而生
畏。
不过,大部分时候,巨型帧一词指的是MTU为9000字节或者更大
的帧,但是ESXi所能支持的最大MTU为9000字节。如果你和网络工程
师交谈,希望知道在虚拟交换机上设置多大的MTU,就要询问MTU的
确切数值——不要只问他,是否采用巨型帧。这样可以避免任何混淆。
实例 我们曾经和希望启用巨型帧,认为较大的数值默认情况下会
提高性能的人一起做了大量的工作。情况并不总是如此,在某些情况
下,启用巨型帧可能影响性能。对于巨型帧,很难确保所有物理联网设
备都正确配置。在你考虑增大基础架构上的MTU尺寸时,一定要有可
靠的技术原因,并进行性能测试。8.4 安全性
虚拟交换机上的安全设置可能是虚拟交换机配置中最容易被误解的
地方。有3个设置可以调整:混杂模式(promiscuous mode)、MAC地
址更改(MAC address changes)和伪造传输(forgedt transmit),如图
8.2所示。
图8.2 虚拟交换机上的安全性设置
8.4.1 混杂模式
回想我们介绍物理交换的时候,你可能会想起它的一个主要好处:可以将流量直接交换到单一的目标MAC地址。除非流量泛滥、广播或
者专门为了一个目标,网络上的设备不会“看到”流过交换机的其他流
量。对于大部分用例来说,这都是很好的,因为它提供了更好的可伸缩
性和改进的网络性能,是标准虚拟交换机的默认行为。
在某些情况下,我们确实希望VM看到发给另一个设备的流量。想
象一下,某种监控VM需要嗅探流量。这时,混杂模式能够带来方便。
将其设置为Accept(接受),就可以要求虚拟交换机让每个VLAN的流
量与同一个VLAN上的其他VM共享。
陷阱 混杂模式不允许VM看到不是由端口组指定的VLAN上的流
量。它仍然可以看到所属VLAN的流量。这是非常常见的错误概念。
8.4.2 MAC地址更改
MAC地址更改的想法迷惑了许多人,所以我们将做深入的介绍。
首先,从虚拟交换机的角度看,究竟什么是MAC地址更改呢?要理解
这一点,你必须首先了解交换机是如何跟踪VM的MAC地址的。
首先,每个VM都有3种不同类型的MAC地址:Initial(初始)、Effective(有效)和Runtime(运行时)MAC地址:
·初始MAC地址是在VM中的虚拟网络适配器上配置的。这在虚拟网卡创建时由vSphere决定,或者通过更改vSphere提供的值,人工设
置。这和物理网卡的“烧录”MAC地址(BIA)非常类似。
·有效MAC地址在VM中由客户操作系统配置。一般来说,客户OS
只使用初始MAC地址,和你的PC默认使用BIA非常类似。
·运行时MAC地址是虚拟交换机端口真正看到的地址。
图8.3显示了vSphere Web Client中一个VM的运行时MAC地址。
图8.3 VM的运行时MAC
现在你已经是MAC地址的专家了,我们可以回到虚拟交换机管理
MAC地址更改的讨论中。
设置为“Accept”时,虚拟交换机允许初始MAC地址与有效MAC地
址不同,意味着客户OS可以自行更改MAC地址。一般来说,我们不希望发生这种情况,因为恶意用户可能尝试使用相同MAC地址来仿冒另
一个VM,但是有些用例,比如Microsoft网络负载平衡(NLB)中,这
样做是有意义的。
当设置为“Reject”(拒绝)时,虚拟交换机将在发现客户OS试图将
有效MAC地址更改为初始MAC地址之外的数值时,禁用该端口。该端
口不再接收流量,直到你更改安全策略,或者确保有效MAC地址与初
始MAC地址相同。
总结起来,MAC地址更改策略的重点完全在是否允许VM(甚至某
个VMkernel端口)更改用于接收流量的MAC地址。下一小节介绍发送
流量的情况。
8.4.3 伪造传输
伪造传输和MAC地址更改很类似,它与MAC地址更改有关,但是
关心的是传输流量。
如果设置为“Accept”(接受),VM可以将希望使用的任何MAC地
址放入2层帧的“源地址”字段中。虚拟交换机端口会让这些帧发往目
标。
如果该策略设置为“Reject”(拒绝),该端口将查询由VM生成的所有流量。该策略将检查源MAC地址字段是否被篡改。只要源MAC字段
与有效MAC地址相同,端口就允许该帧。然而,如果MAC地址不匹
配,该帧将被抛弃。
进行嵌套的虚拟化时,伪造传输策略的问题很常见。嵌套
(nesting)这一术语用于描述在VM内运行ESXi虚拟化管理器,然后由
该管理器运行其他具有自身唯一MAC地址的嵌套VM的情况。嵌套的虚
拟化管理器VM使用的端口将看到许多不同的MAC地址,因为嵌套的客
户VM会发送流量。在这种情况下,你必须将伪造传输策略设置
为“Accept”。
图8.4说明了这一过程。
图8.4 嵌套VM在没有接受伪造传输的情况下不能发送流量8.5 发现
当你的环境中有一个虚拟交换机时,可能想要确保能够使用几种不
同监控方法中的一种,确定交换机的复杂拓扑。我们有时候称之为交
换“邻居”。
大部分交换机都至少连接到一个其他交换机,组成一个能够相互通
信的交换机网络。使用发现协议,我们可以让这些交换机(物理和虚
拟)了解自己的邻居。
注意 与网络部门交朋友的简单方法之一是在虚拟交换机上启用发
现。我们发现,许多人都从未听说过这个功能,或者对启用它感到犹
豫。在开启这一功能之前,一定要确保安全团队允许你使用发现协议,一旦开启,每个人都可以非常轻松地了解物理和虚拟交换机的邻居!
Cisco发现协议(CDP)
VMware标准虚拟交换机只支持一种发现协议——Cisco发现协议
(Cisco Discovery Protocol,CDP)。你能猜到哪个交换机制造商使用
这种协议吗?给你个提示——不是Brocade。
CDP是一种专利协议,允许交换机相互通信,以了解它们与其他设备的连接情况。对于流量的传输来说这不是必需的,但是为管理员和工
程师提供了一种很好的手段,去了解插入端口的哪一端是什么设备。
CDP会实时更新,也就是说,它的价值远远不止于在一个数据表上或者
用其他手工方法记录配置。在标准虚拟交换机上,CDP默认启用。图8.5
展示了标准虚拟交换机连接的3550交换机上,show cdp neighbors命令的
输出。图8.5 连接到两个虚拟交换机上联端口的Cisco 3550交换机CDP信息8.6 流量整形
流量整形(traffic shaping)是控制允许流过链路流量的能力。也就
是说,你可以不让流量尽快通过,限制可发送的流量。
在标准虚拟交换机中,你只能对从一个对象——如VM或者
VMkernel端口——发送到另一个对象的输出流量进行流量整形。
VMware称此为“入口流量”(ingress traffic),指的是数据通过虚拟端口
进入虚拟交换机。在下一章我们开始讨论分布式交换机时,将介绍如何
设置“出口流量”(egress traffic)的整形,那是指端口组接收的发往VM
或者VMkernel端口的流量的控制。
流量整形包括3个不同的控制点,如图8.6所示。图8.6 流量整形控制一览
·Average bandwidth(平均带宽,kbps):允许交换机发送的平均带
宽值,单位为千位秒(Kbps)。流量可能会在短期内略微超过该值,因为这是一段时间的平均值。但是,在大部分情况下,将会强制流量不
超过这里设置的定义速度限值。
·Peak bandwidth(峰值带宽,Kbps):允许交换机通过的最大带
宽。峰值带宽的使用由我们达到平均带宽限值的频率决定。每当实际流
量低于平均带宽限值,我们就获得了所谓的“突发红利”(burst
bonus),这可能是最高为突发尺寸限值(下面将作介绍)的字节数。
突发红利可以在有受到抑制的流量时使用,按照突发尺寸值描述的数据
大小,让更多的流量通过交换机。·Burst Size(突发尺寸,KB):这个值经常被误解,所以我们将作
详细的介绍。突发尺寸是允许在峰值带宽上发送的“可突发”数据的实际
数量,以KB为单位。可以将突发红利看作流量的储蓄账户。突发尺寸
就是可以进入该“账户”的最大字节数。所以,当你需要发送超过平均带
宽允许值得数据时,可以进行突发传输,这时的带宽超过平均带宽。但
是突发传输总是保持在(或者低于)峰值带宽,在流量储蓄账户中的字
节数——突发红利为0时强制终止。
图8.7是一个例子,展示一段平均流量期间,在这一期间的中段采
用了突发峰值带宽。你可以将突发尺寸(KB)除以峰值带宽
(kbps),确定突发流量的时长。
图8.7 显示平均和峰值带宽的流量整形图表对流量整形值进行修改将会立刻在交换机上应用限制——不需要重
启或者预热。
流量整形的计算
下面是一个具体的例子,说明在最好的情况下,如何计算流量处于
峰值的时长:
·为了易于计算,假设你将平均带宽设置为1000Kbps。
·你还将峰值带宽设置为2000Kbps——平均带宽的2倍。
·最后,你将突发尺寸设置为1000KB。提示——不要忘记一个字节
有8位,也就是说,1000KB=8000Kb。大写的“B”指字节,小写的“b”指
位。
如果突发红利达到最大值,也就是突发尺寸值(8000Kb),你可
以在峰值带宽下传输4秒:8000Kb突发尺寸2000Kbps峰值带宽=82=4秒8.7 网卡捆绑
让我们离开网络计算,小憩片刻,然后转向网卡捆绑的美妙世界
中。捆绑(teaming)的概念被冠以不同的名称:绑定(bonding)、组
合(grouping)和汇聚(trunking)等。实际上,它的意思就是我们将某
台ESXi主机上的多个物理NIC组合在一起,组合成单一的逻辑链路,为
虚拟交换机提供带宽聚合和冗余性。你可能认为这和前面介绍的端口通
道(port channel)有些类似,没错——目标很相似,但是方法却有很大
的不同。
图8.8展示了绑定和故障切换的所有配置选项。图8.8 从vSphere Web Client查看捆绑和故障切换配置选项
我们先来看看虚拟交换机中所有网卡绑定的配置选项。这些选项在
虚拟交换机使用多个上联链路时比较关键,但是不管有多少上联链路,它们都是有效的配置点。
8.7.1 负载平衡
第一个有趣的配置是Load-balancing policy(负载平衡策略)。这实
际上是我们告诉虚拟交换机如何处理出站流量的方式,在标准虚拟交换
机上有4种选择:
1)Route based on the originating virtual port(基于原始虚拟端口的
路由)
2)Route based on IP hash(基于IP散列的路由)
3)Route based on source MAC hash(基于源MAC散列的路由)
4)Use explicit failover order(使用明确的故障切换顺序)
记住,我们不关心入站流量,因为它不在我们的控制之中。流量到
达哪个上联链路由上游交换机决定,虚拟交换机只负责确保它到达目
标。第一个选项Route based on the originating virtual port(基于原始虚拟
端口的路由)是新虚拟交换机的默认选择。虚拟交换机上的每个VM和
VMkernel端口连接到一个虚拟端口。当虚拟交换机接收来自这些对象的
流量,它为虚拟端口分配一个上联链路,并用其进行通信。选中的上联
链路通常不会变化,除非上联链路出现故障、VM电源状态改变或者
VM通过vMotion迁移。
第二个选项Route based on IP hash(基于IP散列的路由)用于和链
路聚合组(LAG,也称作EtherChannel或者Port channel)结合。当流量
进入虚拟交换机,负载平衡策略将在数据包创建一个源和目标IP地址的
散列值。生成的散列值描述了使用的上联链路。
第三个选项Route based on source MAC hash(基于源MAC散列的路
由)和IP散列方法很类似,但是策略只检查以太网帧中的源MAC地址。
老实说,我们很少看到在生产环境中使用这种策略,但是对于嵌套虚拟
化管理器VM很方便,有助于在多条上联链路中平衡嵌套的VM流量。
第四个选项(最后一个选项)Use explicit failover order(使用明确
的故障切换顺序)实际上不进行任何类型的负载平衡,而是使用列表上
的第一个活动(Active)网卡。如果这个网卡失效,则使用列表中的下
一个活动网卡,直到备用(Standby)网卡。记住,如果你选中了明确
故障切换选项,而且虚拟交换机有多条上联链路,在任何时候都只有一
条链路被激活使用。只在必须使用一条链路,而不是在所有链接上负载平衡的情况下,才使用这一策略。
注意 几乎在所有情况下,根据原始虚拟端口路由的策略都更为合
适。除非你发现了大部分流量都通过同一个上联链路发送,其他上联链
路相对空闲的问题,否则不要对奇特的负载平衡策略抱有幻想。记住我
们的格言——最简单的设计往往最好。
在大部分情况下,单个VM不会利用超过一个上联链路。如果你为
虚拟交换机提供一对1Gb以太网上联链路,VM一次仍然只会使用一条
上联链路。这一概念也有例外,比如在VM有多个连接到虚拟交换机的
虚拟NIC,使用IP散列策略,但是这种情况在生产环境中很少见到。
8.7.2 网络故障检测
当网络链路失效(且情况很明确),虚拟交换机会意识到故障,因
为链路状态报告链路离线。这通常可以通过检查是否有人被电缆绊倒,或者错误地拔下线路来验证。在大部分情况下,这一报告就足以满足你
的需求,默认的网络故障检测配置“link status only”(仅链路状态)就够
了。
但是,如果你打算进一步确定网络上的故障,比如超出所连接上游
交换机的范围,该怎么办?这时信标探查能够帮助你。信标探查
(beacon probing)是一个重要的术语,因为它名副其实。虚拟交换机通过其上联链路定期发出信标,看看其他上联链路是否能够“听”到它。
图8.9展示了具有三个上联链路的虚拟交换机示例。当上联链路1发
出一个信标,上联链路2接收而上联链路3没有接收,这是因为上游的聚
合交换机2离线,因此流量无法到达上联链路3。
图8.9 信标探查找到上游交换机故障的示例
你是否觉得好奇,为什么我们使用了有3个上联链路的例子?想象
一下只有两个上联链路,发送信标后另一个上联链路没有听到的情况。
是发送的上联链路有故障,还是接收的上联链路有故障?无从知晓。因
此,你需要至少三个上联链路,才能正常使用信标探查。
注意 信标探查在大部分环境中越来越没有价值,特别是因为融合
基础架构的出现,以及只有2个网卡或者夹层卡的10GbE刀片的使用。
大部分现代数据中心都以冗余方式连接所有服务器和交换机,上游交换
机故障对于网络流量没有影响。这并不是说信标探查没有用武之地,但是应用场景相对少了。而且,当上联链路连接到LAG时,不要开启信标
探查,因为散列算法可能将你的信标转移到错误的上联链路,从而触发
假阳性。
8.7.3 通知交换机
Notify Switches(通知交换机)配置有些神秘。究竟要向交换机发
送什么样的通知?默认情况下,该配置设置为“Yes”,正如我们在此介
绍的,默认设置几乎总是好的。
记住,你的所有上游物理交换机都有一个MAC地址表,用来将端
口映射到MAC地址。这避免了对端口发起洪泛的必要——洪泛
(flood)指的是向流量到达的端口之外的所有端口发送帧(这是帧的目
标MAC地址没有出现在交换机MAC地址表中时必需进行的操作)。
但是,当虚拟交换机上的一个上联链路失效,所有VM开始使用新
的上联链路时,该怎么办?上游物理交换机不知道VM现在使用哪一个
端口,必须诉诸端口洪泛,或者等待VM发送一些流量,以便重新学习
新端口。作为替代,通知交换机选项通过代表VM向上游物理交换机发
送反响地址解析协议(RARP)帧,使上游交换机能够更新其地址表。
这在帧开始从vMotion迁移的VM、新开机的VM或者出现故障且被替换
的上联链路端口之后的VM发出之前完成。这些RARP通知是一种奇妙的方法,说明ESXi主机将发出特殊的更
......
VMware网络技术:原理与实践
Networking for VMware Administrators
(美)沃尔(Wahl,C.) (美)潘特尔(Pantol,S.) 著
姚军 译
ISBN:978-7-111-47987-1
本书纸版由机械工业出版社于2014年出版,电子版由华章分社(北京华
章图文信息有限公司)全球范围内制作与发行。
版权所有,侵权必究
客服热线:+ 86-10-68995265
客服信箱:service@bbbvip.com
官方网址:www.hzmedia.com.cn
新浪微博 @研发书局
腾讯微博 @yanfabook目录
译者序
序
前言
第一部分 物理网络入门
第1章 入门知识
1.1 导言
1.2 重复的工作
1.3 小结
第2章 两种网络模型的故事
2.1 导言
2.2 模型行为
2.3 OSI模型
2.4 TCPIP模型
2.5 OSI和TCPIP模型的对比
2.6 小结
第3章 以太网
3.1 导言
3.2 以太网
3.3 扩展以太网段:中继器、集线器和交换机3.4 小结
第4章 第2层的高级知识
4.1 导言
4.2 避免环路和生成树
4.3 链路聚合
4.4 小结
第5章 第3层
5.1 导言
5.2 网络层
5.3 IP编址和子网
5.4 网络层支持应用
5.5 小结
第6章 融合式基础架构
6.1 导言
6.2 概念
6.3 示例
6.4 小结
第二部分 虚拟交换
第7章 虚拟交换与物理交换的不同
7.1 导言
7.2 物理和虚拟交换机的比较7.3 物理上联链路
7.4 虚拟端口
7.5 VLAN
7.6 小结
第8章 vSphere标准交换机
8.1 导言
8.2 vSphere标准交换机
8.3 虚拟交换机属性
8.4 安全性
8.5 发现
8.6 流量整形
8.7 网卡捆绑
8.8 层次化覆盖
8.9 VMkernel端口
8.10 VM端口组
8.11 小结
第9章 vSphere分布式交换机
9.1 vSphere分布式交换机简介
9.2 监控
9.3 私有VLAN
9.4 分布式端口组9.5 流量整形
9.6 负载平衡
9.7 网络IO控制
9.8 小结
第10章 第三方交换机–1000V
10.1 导言
10.2 与vSphere的集成
10.3 虚拟控制引擎模块
10.4 虚拟以太网模块
10.5 高级功能
10.6 运营许可模式
10.7 小结
第11章 实验方案
11.1 导言
11.2 架构决策
11.3 实验方案
11.4 小结
第12章 标准虚拟交换机设计
12.1 导言
12.2 标准虚拟交换机设计
12.3 确保服务质量12.4 网络适配器
12.5 虚拟机流量
12.6 VMkernel端口
12.7 最后的调整
12.8 配置其他vSphere主机
12.9 小结
第13章 分布式虚拟交换机设计
13.1 导言
13.2 分布式虚拟交换机设计
13.3 确保服务质量
13.4 创建分布式虚拟交换机
13.5 网络适配器
13.6 虚拟机使用的分布式端口组
13.7 VMkernel端口所用的分布式端口组
13.8 添加vSphere主机
13.9 最后的步骤
13.10 其他设计考虑因素
13.11 小结
第三部分 在我的网络上访问你的存储:IP存储
第14章 iSCSI常规用例
14.1 导言14.2 理解iSCSI
14.3 iSCSI组件
14.4 iSCSI适配器
14.5 iSCSI设计
14.6 从iSCSI启动
14.7 小结
第15章 iSCSI设计和配置
15.1 导言
15.2 iSCSI设计
15.3 虚拟交换机配置
15.4 添加iSCSI设备
15.5 小结
第16章 NFS常规用例
16.1 导言
16.2 理解NFS
16.3 NFS组件
16.4 网络适配器
16.5 NFS设计
16.6 小结
第17章 NFS设计和配置
17.1 导言17.2 NFS设计
17.3 虚拟交换机配置
17.4 挂载NFS存储
17.5 小结
第四部分 其他设计方案
第18章 其他虚拟交换机设计方案
18.1 导言
18.2 用例
18.3 两个网络适配器
18.4 4个网络端口
18.5 6个网络端口
18.6 8个网络适配器
18.7 小结
第19章 多NIC vMotion架构
19.1 导言
19.2 多NIC vMotion用例
19.3 配置多NIC vMotion
19.4 小结
附录 VMware用户组译者序
虚拟化技术堪称目前IT发展的基石。它充分利用过去十多年来高速
发展的计算、网络和存储技术,为企业带来更加灵活、高效的计算架
构,通过平台抽象,管理人员可以用软件的形式定义整个平台的各项资
源,从而简化管理任务。
正因为具有上述灵活性,虚拟化平台的供应商和许多管理人员热衷
于虚拟环境中的各项改进,因而忽略了物理环境,使两个世界产生了裂
缝,虚拟化供应商不断推出极其吸引眼球的新功能,管理人员则更多地
将目光集中在软件配置上,他们都忘记了一个事实:无论虚拟化技术中
的软件配置如何发达,网络流量仍然是由物理架构来完成传输,而决定
虚拟环境运营效果的,仍然是硬件架构的性能。
在虚拟化环境建设达到一定规模之后,虚拟化管理人员就会发现,需要和安全团队、硬件团队协作的环节越来越多,而物理世界和虚拟世
界的分离,给双方的沟通造成了障碍,从而大大影响了一些项目的推
进。为了改进这一状况,人们可能会翻阅市面上的许多参考书,但是常
常失望地发现,阐述虚拟化环境和物理环境之间有机联系,并提供基本
设计原则和实例的书籍少之又少。
本书的目的,正是弥合这两个世界之间的鸿沟,让虚拟化架构、设计、运营人员更好地理解物理环境,从而在构建虚拟化环境的时候,能
够根据需求选择基础架构,设计出更强大、更安全灵活的方案,并在基
础建设和日常运营中,更好地与IT架构中的其他团队合作,确保虚拟化
项目的顺利实施。本书的两个作者都是业界的资深专家,在虚拟化项目
实施方面有深厚的功底和丰富的经验,他们从网络模型、常见网络层次
的介绍开始,由浅入深地介绍现代网络的基本概念,并自然地过渡到虚
拟交换等虚拟化环境中与物理网络最为关联的部分,最后扩展到实际的
设计用例,详细介绍了不同实用场景、不同的硬件配置下,虚拟化环境
构建的考虑因素和具体实施方案。书中不仅有理论方面的介绍,也有具
体案例的演示,包括VMware环境中的具体配置,不管读者面对的是什
么样的用例,都能够从中获益,甚至在工作中可以直接利用书中的许多
配置方法。
在翻译过程中,我们看到了许多熟悉的概念,它们似乎显而易见,但是在实际工作中把握起来并不轻松,而细读之下,读者在不知不觉之
中会接受经典的设计理念,掌握VMware虚拟环境在网络和存储上提供
的灵活配置方法。物理世界和虚拟世界之间的鸿沟,也就在一个又一个
实例讲解中被填平。我们衷心地向广大读者推荐本书,希望它能为大家
的工作提供实际的帮助。
本书的翻译工作主要由姚军完成,徐锋、吴兰陟、陈志勇、刘建
林、白龙、方翊、陈霞、林耀成、宁懿等也为翻译工作做出了贡献。由于译者水平所限,书中难免出现一些错误,请广大读者批评指正。
译者序
长期以来虚拟网络都是服务器虚拟化中的“灰姑娘”,任何阅读
VMware发行说明的人都能够证明——每当新的vSphere版本发布,我们
都会收获大量新的CPURAM优化特性、高可用性改进和更好的存储连
接性的信息,可是却只能得到关于联网的很少的信息。
网络和虚拟化供应商之间的传统竞争,以及大型IT机构中虚拟化和
网络团队之间缺乏共识,都绝对没有好处。虚拟化供应商试图绕过传统
网络概念(例如,无视生成树协议(STP)和链接聚合组(LAG)的存
在),而总是要求一些不可能实现的功能,例如跨越多个数据中心的远
距离桥接。造成与网络团队缺乏合作的状况也就不足为奇了,虚拟化供
应商使用的不为人熟知的概念和术语也于事无补。
虚拟化出版生态系统也表现出这种心态——我们出版了关于服务器
虚拟化管理、故障排除、高可用性和DRS的出色图书,但是几乎没有关
于虚拟网络及其与外部物理世界交互的图书。这种疏忽最终会被改正
——我们已经为VMware联网专门写了一本书。
谁应该阅读本书? 我个人的意见是,本书是任何接近vSphere主机
的人都应该阅读的。服务器和虚拟化管理员将得到有助于理解网络团队
的同事们日常处理的复杂难题的基本网络知识,网络工程师最终也有机会理解vCenter图形界面上鼠标操作背后的玄机。如果能够说服公司中的
虚拟化和网络工程师阅读本书,他们就会有共同语言,能够讨论各自的
需求、优先顺序和挑战。
虽然本书从基本的主题开始,如网络的定义,但是很快就深入
vSphere虚拟网络复杂的细节之中。必须承认,尽管在创建VMware网络
技术深入研讨会时花了几个月阅读vSphere文档、研究ESXi的实际表
现,但有些细节对我来说仍是陌生的。
你将从本书中得到什么? 如果你是服务器或者虚拟化管理员,对
于网络没有太多了解,你将会学到理解数据中心网络和vSphere虚拟网
络如何与之互动所需要的知识。如果你是网络工程师,角度会有所不同
——从服务器端去看待问题,这些细节将帮助你调整网络边界,与
vSphere主机交互。
最后,一定要记住,组织中的其他工程师不是你的敌人——她有不
同的视角、不同的难题和不同的优先级及需求。“我们必须这样做”或
者“我们不能这么做”之类的话在这种环境中通常没有什么好处,更好的
方法是提出这样的问题“为什么需要这个?”或者“你试图解决什么样的
业务问题”——本书可能就是帮助你弥补沟通障碍的拼图中的一块。
Ivan Pepelnjak
CCIE1354(名誉)ipSpace.net前言
在许多组织中,仍然没有虚拟化团队,甚至没有专门的虚拟化人
员。vSphere环境的维护任务通常落在现有服务器或者存储管理员的肩
上,在他们的职务说明中增加了一条:“执行其他指定的任务”。
虚拟化是一个复杂的跨学科主题,真正地“理解”它,需要对服务
器、存储和网络有扎实的了解。但是因为新技术通常由新人管理,他们
在技能上有着很多缺陷。根据作者的经验,网络是承担vSphere环境的
管理员最不熟悉的领域。服务器团队和存储团队倾向于紧密协作,而网
络人员则往往隐藏在很多接线板后面。本书的意图是帮助vSphere管理
员跨越这一鸿沟。
本书不是想作为特定认证的学习指南。如果你的目标是Network+、CCENT或者其他认证,可以寻找其他更为全面的书籍。
第一部分旨在介绍基础网络知识,从非常简单的连接性和路由及交
换结构组件开始,为在扩大虚拟化工作范围时与网络团队有效沟通提供
必要的背景知识和术语。
在第二部分中,我们研究虚拟网络,解释它与第一部分中建立的物
理网络之间的区别。我们提供了构建虚拟网络的一个指南,从现实世界
的需求开始,研究满足这些需求必要的虚拟和物理网络配置步骤。在第三部分中,我们加入了存储,使用第二部分中的方法研究
iSCSI和NFS配置。
写作本书的动机
Chris:除了实现“写一本书”的宏愿之外,将某人的经验传给下一代
技术专家的想法显得有些浪漫。网络领域正如在黑暗的未知海域中航
行,知识就是沿路上的小岛。我认为,写一本游记,可以作为指南,看
看能不能帮助人们完成这一旅程,对自己来说,也可以在第二轮学习中
得到更多的心得。
Steve:我同意Chris的说法,但是没有像他那么好的文采,这确实
是个好的思路。
本书的目标读者
本书针对涉及VMware vSPhere环境维护的IT专业人员。这些管理员
通常有很强的服务器或者存储背景,但是缺乏核心的网络概念。由于虚
拟化的跨学科特性,vSphere管理员很有必要对支持其环境的技术有全
盘的了解。
如何阅读本书本书分为19章。
·第一部分
·第1章提供了网络概念的概述。
·第2章描述了网络模型的目的和两种主要的网络模型。
·第3章介绍以太网的基本知识。
·第4章以前面几章为基础,深入研究更高级的以太网概念,包括
VLAN、交换端口类型、生成树协议和链路聚合。
·第5章描述IP协议、第3层网络和支持应用。
·第6章提供融合式基础架构的简单概述,并说明示例平台。
·第二部分
·第7章重点介绍第一部分描述的物理交换机和本书其余部分关注
的虚拟交换机在机理和执行上的不同之处。
·第8章介绍vSphere标准交换机的功能。
·第9章介绍vSphere分布式交换机的功能。
·第10章介绍Cisco Nexus 1000v虚拟交换机的功能。·第11章介绍用于第12章和第13章的实验方案,指导读者进行设
计练习。
·第12章描述配置标准vSwitch以支持第11章定义的用例的必要步
骤。
·第13章描述配置分布式vSwitch支持第11章定义的用例的必要步
骤,重点介绍分布式和标准式虚拟交换机之间的功能差异。
·第三部分
·第14章介绍iSCSI的概念,描述一个用例。
·第15章描述配置iSCSI以支持第14章定义的用例的必要步骤。
·第16章介绍NFS的概念,描述一个用例。
·第17章描述配置NFS以支持第16章定义的用例的必要步骤。
·第四部分
·第18章描述不同硬件配置中可以考虑的不同设计选项。
·第19章介绍多NIC vMotion的概念,并描述为一个样板用例配置
它的必要步骤。
·附录A介绍VMware用户组,它可以作为利用更大的VMware社区能力的手段,我们鼓励读者参与社区。
致谢
Chris要感谢在职业生涯中帮助他的人,使他得以与技术社区分享虚
拟网络的知识。走到今天,经过了多年反复试验带来的无数次成功和失
败。在这期间,有许多人提供了指导和帮助,他要特别感谢过去的导师
Wayne Balogh、Sean Murphy、Matt Lattanzio和Pam Cox,以及他的父母
Dawn和Matt,感谢他们在技术生涯中的坚定支持。此外,感谢妻子
Jennifer每天带给他的正能量和启迪。
Steve要感谢他的妻子Kari和孩子们——Kurt、Avery和Ben——感谢
他们在日常生活和这个项目上的支持。还要感谢他的父母Don和Betty,感谢他们在20世纪90年代初就花钱购买电脑,而且任由他拆卸。还要特
别感谢Xfinity On-Demand,特别是Sprout and Disney Junior networks,感
谢他们在最近几个月承担了养育孩子的工作。
我们都要感谢Ahead公司的所有人,包括Mitch Northcutt、Eric
Kaplan、Paul Bostjancic和Mike Mills,感谢他们在技术上和后勤上的支
持。还要感谢我们了不起的技术评审Doug Baer、Scott Winger和Trevor
Roberts,以及VMware Press团队——Joan Murray、Ellie Bru和Seth
Kerney,感谢他们不懈的努力和对书稿的完善。关于作者
Chris Wahl在企业基础架构设计、实施和管理方面有10多年经验。
他已经在各种虚拟化、数据中心和私有云的建设中提供了架构和工程上
的专业指导,并与高性能技术团队进行层次化数据中心环境上的合作。
他目前拥有芝加哥的Ahead咨询公司高级技术架构师的头衔。
Chris拥有30多个行业认证,包括稀有的VMware认证设计专家
(VCDX104)以及VMware vExpert。他还努力回馈社区,是VMware
技术网络(VMTN)活跃的“大师”级用户和协调员,以及芝加哥
VMware用户组(VMUG)的领导人。
Chris的独立博客“Wahl Network”曾赢得大奖,他专注于创建围绕虚
拟化、融合式基础架构的内容,倡导有利于技术社区的产品和服务。在
过去的几年中,他已经发表了数百篇文章,并被vSphere-Land选为2012
年“最受欢迎独立博客作者”。Chris还在世界各地的行业活动上发表演
讲,提出专业的话题,并且以技术分析家的身份提出自己的看法。
Steve Pantol 14年以来承担过各种方面的技术任务,近7年以来专注
于VMware技术的组合。他拥有许多技术认证,正在向VCDX的方向努
力——只是为了摆脱Wahl的辖制。他是Ahead的高级技术架构师,致力
于建立更好的数据中心,推动云技术的采用。关于技术审校人员
Doug Baer是VMware Hands-on Labs团队的架构师。他在IT业有将近
20年的经验,担任过各种角色,包括咨询、软件开发、系统管理、网络
和存储基础架构解决方案、培训和实验室管理。Doug拥有亚利桑那州
Tucson市的亚利桑那大学的计算机科学学士学位,并且拥有多项顶级行
业认证,包括VCDX19以及HP的Master ASE Clond和数据中心架构授
权认证专家(14)。
你可以在VMware Hands-on Labs的大型活动、VMware用户组活动
以及VMware博客(http:blogs.vmware.com)上找到他,或者在
VMware社区论坛上回答问题。如果你觉得这样找太麻烦,可以在
Hands-on Labs网站上的视频中看到他(名叫Trevor)。在业余时间,Doug喜欢远离技术,和家人一起旅游,或者在亚利桑那州的公路上跑
步。
Trevor Roberts Jr.是Cisco的高级IT架构师,他很享受帮助客户成功
实现虚拟化和云解决方案的工作。在业余时间,Trevor在
www.VMTrooper.com上,通过Professional OpenStack和Professional
VMware播客以及Twitter账户@VMTrooper分享数据中心技术的见解。
Trevor目前正在撰写VMware管理员的开发运营方面的稿件。
Scott Winger是一位有抱负的作家,从1987年起就是中西部一所大学的计算机技术人员。他拥有数学学位,并且在威斯康星麦迪逊大学学
习过计算机架构、操作系统、编程语言和编译器、数据库管理系统、网
络和数字方法。他在附近的Cisco技术学院教授各种网络和计算机课
程。Scott于2013年5月通过了VMware认证专家考试,并在不断地追逐
Cisco、微软和VMware的其他认证。第一部分 物理网络入门
·第1章 入门知识
·第2章 两种网络模型的故事
·第3章 以太网
·第4章 第2层的高级知识
·第5章 第3层
·第6章 融合式基础架构第1章 入门知识
关键概念
·实体携行网络(sneakernet)
·网络效应
·访问层、分发层和核心层1.1 导言
如果你对网络只有肤浅的理解,或者你的Visio框图上显示,服务器
连接到一个写着“这里有恐龙”的大黑匣子,那么就从本章开始吧。如果
你对基础知识有所了解,能够熟练地使用TCPIP、以太网和交换机这些
术语,那么可以跳过本章。
如果你是服务器管理员,可能对网络有一些经验——你必须插入一
个网卡,分配IP地址。但是对这一主题的介绍常常是以用户为中心的,通过行动来进行——其他人告诉你应该插入哪个端口;另外一个人分配
IP地址。你只知其然,不知其所以然。此外,你的工作已经很多,没有
足够的时间去了解一切来龙去脉。但是,在越来越虚拟化的世界里,你
至少应该了解一点基础知识。1.2 重复的工作
为了打好基础,我们先来想象一下,一个和现在完全一样,但是网
络的概念还没有出现的世界。业务仍然在计算机(或者类似设备)上完
成,但是还没有产生要求它们连接起来交换数据的需求。在偶然的情况
下,数据需要从一个工作站转移到另一个工作站,这通过复制到可移动
媒体完成——可能是某种蜡筒唱片——然后带着它到另一个地方去。在
网络萌芽之后,这种方法被称作实体携行网络(sneakernet),因为数
据的载体是你的鞋子(sneaker)。
假设你的工作是桌面支持,所以比公司里的其他人更懂技术。在维
护工作的间歇,你和会计部的同事Bob喜欢交换猫的照片,有时候会给
照片写上傻气的标题。这不是什么高尚的追求,但是可以让日子过得好
一点。你和Bob有权使用带有扫描仪和打印机的电脑,所以可以在家里
拍照,带到公司扫描、编辑和打印,通过部门间信件交换打印输出。有
一天,高层下达了绿色倡议,严格限制在非关键业务上使用打印机。你
考虑要调整工作流程,使用蜡筒唱片,但是这并不理想——空闲的蜡筒
唱片本身越来越难得到,一定有更好的办法。
你想起了小时候玩的游戏——使用两个纸杯和一根细绳和远处的朋
友聊天。对着纸杯讲话,然后将它移到耳边听对方的回答。你的朋友更聪明,指出可以用两组纸杯,同时说话和听取回应——对着一个连接到
朋友耳边的纸杯说话,他则对着连接到你耳边的纸杯说话。你知道,这
时就可以利用上述概念——分离发送和接收线路,就可以允许双方同时
通信。在地下室的“疯狂科学家实验室”里,你开始着手。
第二天早上,你将成果带给Bob看。在每台计算机上安装一张卡,用两条交叉的线路连接,并且安装一个通过线路向其他计算机发送任何
文件的新应用程序。你带来一些猫的新照片进行测试,它们从你的计算
机顺利地传到了Bob的计算机。这样,你就建立了第一个两人间的网
络。
Bob大为震惊,为这一成果而兴奋不已。接下来的几周,你们两个
人快乐地相互传送文件,直到有一天,人力资源部的Paul偶然看到你们
的行为,他也想要加入。你停下来考虑这一情况,虽然Paul有些怪异
——他偏爱狗的照片——但是你看到了连接两个以上朋友的价值。
Metcalfe定律
你可能知道,人们之间的联系,两个比一个好,三个比两个好,依
次类推。以太网发明者Robert Metcalfe在Metcalfe定律中将这一个概念规
范为“网络效应”:网络的价值与连接的兼容通信设备数量的平方成正
比。将此与一般随着用户增加而呈线性增长的网络成本相比,就会发现
很快就能到达价值远超过成本的临界点。经过多年,“用户”代替了“连接的兼容通信设备”,Metcalfe定律常
被用于描述从传真机到社会化网络的各种情况。
Robert Metcalfe还曾预测,互联网将在1996年底因其自身的压力而
崩溃——人都有失算的时候。
但是,如何将第3台电脑加入到你的双人单连接网络中呢?你考虑
了3端电缆的想法,但是你知道网络的扩展不会止于Paul。因此,需要
一个具有扩展性的方案。你设计了一个有许多网络端口的盒子,接收你们发出的所有内容,然后将其重发到所有其他端口。回到实验室,你为
这个设备添加了一些智能——每个端口的第一条线路上接收的信息,将
会从第二条线路上发送给其他端口。现在,你不需要担心制作电缆时发
送和接收线路的交叉了。这个盒子还能够帮助你解决距离的限制。线路
上的信号随着距离而衰减,但是这个盒子能够将信号以最大强度重发,从而使传输距离加倍。你把这个盒子称作“集线器”(hub),这个名字
是根据作为开发背景的儿童电视频道而取的。
次日早上,你带着集线器,供Paul使用的网卡以及一些新电缆来到
公司。到午饭时分,一切已经就绪。你选择的照片毫无差错地发送到其
他两方。但是,法务部的Sharon注意到吊顶上的电缆,也希望加入。不
过,Sharon与Paul不和,她所要发送的照片可能冒犯Paul。显然,她不
希望Paul接收到这些照片。
你回到了制图板旁边。为了满足Sharon的需求,传输应用程序必须
有一定的针对性。但是集线器不假思索地将接收到的信息重发给连接的
各方。可能,问题并不在集线器上,而在连接的电脑上。你、Sharon和
Bob的电脑上的网卡都完全一样。可以在它们上面写入某种唯一的标识
符,然后改写传输应用程序,使用这个标识符。你拆下所有零件,重新
制作新的网卡,这时碰到了一个问题——集线器将会重发接收到的所有
信息,即使Sharon直接将照片发给你,数据也仍然会发回给Paul。好
了,既然要更换网卡,干脆对它们进行一些编程,使其忽略不是发给特定ID的数据。这样应该就行了。进入实验室之后,你发现需要制作许多
网卡。以后不知道谁会得到这些网卡,你决定为其编号。公司里只有大
约15个人左右需要网卡,所以可以使用2个数字的标识符00~99。在第一
张网卡上设置ID时,你认为不应该自找麻烦,所以将ID字段宽度加倍。
现在,你的网络可以支持多达10000个设备——这真难以想象,但是既
然做了,就得做好。
第二天,你带来了新硬件,向Bob、Paul和Sharon解释这个新的系
统。你的编号是0000,Bob是0001,Paul是0002,Sharon是0003。开始
一切正常,很快,在你的秘密网络里有了10个活跃的用户,你开始感到
紧张。用户们抱怨记不住人们的编号,Bob投诉说,自从你几天前更换
了他的电脑,就没有再收到猫的照片,他认为自己被忽视了。
Bob的问题一下子点醒了你——当你替换他的电脑时,他得到了一
张新网卡,不再是0001了,而是0010。你必须让每个人知道这一变化。
但是这将进一步招来编号系统难以使用的抱怨。你所需要的是一个能够
容纳友好名称——也就是人们容易记住的名称的系统。如果硬件ID变
化,必须自动更新友好名称与硬件ID的映射,这样就没有必要去麻烦每
个人。
你建立了一个查找表,列出每个人的名字,这是一个友好的名称
——你询问每个人,他们希望用什么名称来命名计算机——以及网络
ID。你决定每个晚上将这个文件分发给每个人,至少在没有想到名称解析问题的新解决方案之前这么做。传输应用也必须重写,除了向网络ID
发送文件之外,还能支持向友好名称发送文件。你做出了必要的更改,并分发新的文件和说明,风波暂时平息了。
你的小项目越来越为人所知。公司的CIO听说了你的事迹,要求了
解项目的进行情况。在你解释了目前的工作之后,他询问传输程序是否
能够传输任何类型的文件,还是只能传输那些傻气的照片。当你告诉
他,数据就是数据,任何文件都有效时,他若有所思。他对你所花的时
间表示感谢,然后走开了。
几周之后,CIO找到你,要求连接大楼里的所有电脑——分布在几
个楼层的500个工作站。他要求你考虑这一点,并且将细节反馈给他。
这真是一个挑战。你的集线器有16个端口,这立刻成了问题。你当然可
以制作有500个端口的集线器,但是如果它坏了怎么办?所有人都会离
线。你要把这个集线器放在哪里?大楼里没有一个地方能够使你在电缆
距离限制内连接到所有工作站,即使有这种地方,安装这么多长短不一
的线路在材料和工时上也很昂贵。
如果要求是CIO提出的,时间和钱可能不是问题,所以你开始着手
解决第一个问题——距离。一个500端口的集线器不可行,但是2个250
端口的集线器可以解决问题。因为集线器将接收到的东西全部重发,应
该可以毫无问题地将两个集线器连接起来。细想一下,因为所有信息都
被重发给所有端口,两台计算机不管是连接在同一个集线器还是连接许多集线器,都应该能够相互传输数据。较小的设备应该更容易制造,也
更容易在出现故障的时候更换。一番冥思苦想之后,你决定采用三层模
式。在第一层(核心层)上,一台集线器将连接第二层(分发层)中的
集线器。在每个楼层放置一个分发层集线器,这些集线器用于连接第三
层(访问层)。最终用户的工作站连接到分布在楼层各处的访问层集线
器。这样,你就可以确保电缆较短且结构化,并且提供扩展或者部署到
新的建筑物中的模式化方法。
你将方案提交给CIO,得到了他的批准,然后开始着手部署这个新
基础架构,不知不觉之间,网络连接成为了整个公司的信条,没有人记
得,在网络出现之前的日子是怎么过的。1.3 小结
恭喜!你已经建立了第一个网络。你可以在LinkedIn档案中的技能
中增加“网络”这个项目了。当然,本章的例子过于简单了,但是介绍了
前几章中所需要的基本概念。我们介绍了一些零星的部件——应用程
序、网卡、电缆和集线器——并且经历了设计中的一些挑战。下面的几
章将更加详细地介绍这些基本概念。第2章 两种网络模型的故事
关键概念
·网络模型
·网络架构
·分层
·封装
·OSI模型
·TCPIP模型2.1 导言
在前一章中,我们进行了一次思维实验,从头开始构建了一个公司
范围内的网络。这种方法不建议在现实世界中采用。
构建真正的网络时,你必须考虑部件的可用性、系统的可支持性以
及和其他系统的互操作性。如果世界上的每个公司都从头建立自己的网
络,在公司之间交换数据就会成为一场异乎寻常的梦魇。
幸运的是,我们没有必要这么做。我们可以购买遵循著名网络模型
的现成设备,以可预测和可支持的方式构建网络。
网络模型是网络功能的概念分解,它将通信过程分为多个层次,描
述它们之间的交互。网络架构(network architecture)是一组文档,每
个文档描述遵循网络模型的更大系统中的一部分。协议由某些文档定
义,这是一组描述设备通信方法的规则。另一个文档可能描述物理规范
——如连接器类型。还有一个文档可能规定两个其他部件交互的治理规
则。这些文档组成一个整体,描述了构建可用网络的各个必要方面。确
保系统中的设备正常通信的唯一方法是每个部件都遵循相同的规则。
最初,网络架构是专属的,每个主要供应商都各搞一套。后来,引
入了任何人都可以采用的开放标准。有两个值得一谈的开放标准——其中一个是用于传授网络概念的经典参考模型,而另一个是实际使用的模
型。
1977年,国际标准化组织启动了开放系统互连(OSI)项目。他们
的用意很好——集中来自全世界的代表,建立基于标准的系统,使世界
上的每一台计算机都能相互通信。当时,网络技术通常是政府赞助的
(如ARPANET)或者供应商驱动的专利技术(如IBM的系统软件架构
(SNA)和DEC的DECnet)。OSI是联合技术供应商和其他感兴趣的团
体,建立任何人都能实现的通用框架,从而实现互操作性的一次尝试。
OSI有两个主要组成部分——一个7层的抽象模型,和一组围绕该模型设
计的协议。
大约在同一个时期,为美国国防部高级研究计划局(Defense
Advanced Research Projects Agency,DARPA)提供支持的研究人员致力
于一种不同网络互联的开放架构方法。这一方法成长为互联网协议族,通常被称作TCPIP,该名称取自于其中的两个最重要的协议——传输控
制协议(TCP)和互联网协议(IP)。它很快得到采用。美国国防部于
1982年3月将TCPIP作为所有军用网络的标准,1989年6月,Unix
TCPIP栈成为自由版权,允许任何人访问,实际上也就断绝了其他协议
族(包括OSI)的支持。
虽然OSI从未真正投入使用,但是这种模型仍然是全世界的人们每
天使用的重要工具,它被用于传授网络概念,描述故障排除过程和设计问题。TCPIP模型作为当今使用的几乎所有通信设备的基础,同样值得
重视。2.2 模型行为
在深入研究两种模型的细节之前,我们先来了解理解模型工作原理
的几个关键概念。
2.2.1 分层
为了更好地理解组网过程,我们将它们分为更容易控制的层次,并
定义了层次之间交互的标准接口。这样做有如下好处:
·降低复杂度:通过将过程分解为容易理解的部分,整个过程更容
易学习、使用、支持和制造。在排除故障时,我们可以将重点放在各个
部分,而不是整个过程。
·模块化和互操作性:供应商可以编写实现某个层次功能的软件,只要遵循层次之间的标准化接口,该软件就可以和在其他层次上运行的
其他供应商软件并存。
电话系统是分层模型的一个例子。你所需要知道的就是电话的使用
方法。拨号,剩下的就是别人的问题了。你不需要知道线路交换、电话
线、微波传输、海底电缆、通信卫星或者蜂窝网络的任何细节。在你的
电话和基础架构其余部分之间已经实现了标准接口,你只需要关心自己的电话是否正常(是否有电,是否有信号)或者潜在的用户错误(拨号
是否正确)。
在分层模型中,每个层次提供了低层和高层之间的服务。打电话
时,你要求基础架构较低的层次路由呼叫,使另一端的电话响铃。电话
是一个端点——用户直接交互的设备。当两个端点通信时,相同层次交
换信息,将交换的细节外包给较低的层次。你只管打你的电话,开始和
另一端的人通话,更多时候,你和他们的语音信箱打交道,但是一切都
在掌握之中。
2.2.2 封装
封装(encapsulation)提供了实现层次之间隔离的机制。模型中的
每个层次都有一个对应的协议数据单元(PDU)。除了最低的层次之
外,每个层次都定义一个报头(header)。报头包含在该层操作的协议
使用的信息。PDU由与层次相关的报头和低层数据载荷组成。图2.1展
示了OSI模型中的封装过程。图2.1 封装2.3 OSI模型
OSI模型包含7层,如图2.2所示。
图2.2 OSI模型
图中的层次从下到上分别为:·第1层,物理层:这一层处理物理传输介质,以及数据注入介质的
方法,包括电缆类型、连接器、针脚、编码、调制、电流及激活和关闭
传输介质的过程。这一层通常引用定义物理技术的其他标准。
·第2层,数据链路层:这一层处理对物理介质的逻辑访问。在这一
层次上添加了一个包含帧检查序列域的报尾,便于进行错误校正。OSI
模型将这一层次的PDU称作L2PDU。在实际中,我们称它们为帧
(frame)。
·第3层,网络层:这一层定义逻辑编址、路由和转发以及路径确
定。逻辑编址为每个设备提供一个路由过程使用的唯一标识符。路由确
定设备如何向最终目标转发数据包。路径确定是路由器用于学习指定目
标所有可能路径,并确定最优路由的过程。在这一层中,我们将PDU称
作数据包(packet)。
·第4层,传输控制层:这一层定义数据交付,包括错误校正和流控
制。在这一层中,我们将PDU称作分段(segment)。
·第5层,会话层:这一层定义通信会话如何启动、管理和终止。
·第6层,表示层:这一层定义数据格式,并协商使用的格式。数据
压缩和加密在这一层中进行。
·第7层,应用层:这一层定义通信驱动程序和需要与底层网络通信的本地应用程序之间的接口。这一层还定义身份验证过程。
第8层
你可能在职业生涯中听说过“第8层”的说法。第8层往往是对非技术
性问题的批评性说法。在某些情况下,它的含义是,问题的根源是
PEBKAC(存在于键盘和椅子之间的问题)错误,常常被用于指代人、管理、策略或者钱。
第8层和第9层还被建设性地用来指任何过程。这听起来更符合分层
和封装的概念——过程定义了人们使用应用程序沿着协议栈向下执行的
规程。
除了PearsonVue考试中心之外,不太可能有人会强迫你按顺序背诵
这7个层次,但是如果你觉得需要记住它们,使用助记术会比较方便。
助记术是任何容易记忆的、能够提醒你想起难以记忆信息的方法。
常见的助记术包括用于记忆螺丝刀用法的“右紧左松”,彩虹颜色顺序
的“Roy G.Biv”,以及记住分类学的“King Philip Came Over From Great
Spain”(菲利普国王来自大西班牙)。
在搜索引擎中输入“OSI mnemonic”,将会返回一个可以选择许多助
记方法的网站,其中一些可能很滑稽、猥亵甚至两者皆有——这些性质
使其更吸引人。在G级助记方法中,我们喜欢“Please Do Not Take SalesPeople’s Advice”(不要听销售人员的建议),因为它还提供了人生中的
一个经验。2.4 TCPIP模型
和OSI模型类似,TCPIP模型使用分层方法分解和隔离功能,但是
用4层代替7层——分别是应用层、传输层、互联网层和网络接口层,如
图2.3所示。
图2.3 TCPIP模型
和OSI模型一样,我们从下往上研究各个层次。2.4.1 网络接口层
网络接口层定义了主机与网络的连接方法,包括物理连接本身和用
于数据传输的物理介质细节。有些令人困惑的是,以太网既是关键的网
络接口协议,也是我们所关心的物理介质。
以太网将在第3章中详细介绍。
2.4.2 互联网层
互联网层定义了整个网络中编址和数据交付的机制。在这一层中运
作的协议包括IP、ARP、ICMP和IGMP。
互联网协议(IP)定义了网络设备分配的逻辑地址。这一地址由网
络地址和主机地址组成。网络地址用于将数据发往合适的目标网络,主
机地址唯一标识目标网络中的主机。这些地址采用小数点格式,如
192.168.1.100,你在以前可能已经遇见过,并且无数次地将它们分配给
不同的设备。每个IP地址都定义一个子网掩码,可将地址解析为网络和
主机部分。
地址解析协议(ARP)用于将IP地址转换为硬件地址,以将帧发往
下一跳设备或者最终目标设备。ARP请求通过本地网络发送,询问那个
网络接口有某个特定的IP地址。具有该IP地址的网卡发送ARP响应,包含了其硬件地址。
互联网控制消息协议(ICMP)用于控制通过网络的数据流、报告
错误、进行诊断。最常用的ICMP命令是ping和tracert,用于验证连接
性、确定主机之间的路径。
ICMP允许一台主机同时向许多目标发送数据。这称为组播
(multicasting),这超出了本书讨论的范围,在此不做介绍。
互联网层将在第5章中更详细地研究。
2.4.3 传输层
传输层定义了主机间的连接类型,以及确认信息是否发送和如何发
送。从使用的角度,该层只有两个协议可供选择:传输控制协议
(TCP)和用户数据报协议(UDP)。
TCP是面向连接的协议,它建立、管理和终止网络连接。TCP保证
数据的交付,包括流控、错误校验的支持,以及通过确认和重传恢复丢
失的数据。
相反,UDP是无连接的协议,UDP数据不需要错误校正或者流控,因此不需要建立网络连接即可快速传输,也没有对数据到达指定目标作
出确认。这听起来很糟糕,但是实际上并非如此,因为UDP对于流媒体等应用非常有用,在这种应用中数据的丢失总比重传丢失的包而引起延
迟更好,在其他情况下,错误校正可以用更高层的应用,更有效地完
成。
2.4.4 应用层
TCPIP模型的应用层定义了端点运行的软件所使用的服务。当应用
程序需要访问底层网络时,这一层通过将其转换为网络可传输格式处理
请求。这时,通过合适的端口建立连接。
端口是分配给应用程序或者协议的一类地址。TCPUDP有65536个
端口。互联网名称与数字地址分配机构(ICANN)将端口1~1023保留
给著名的应用程序。端口1024~49151被称作“注册”端口,它们也在
ICANN注册。端口49152~65535是私有(动态)端口,由各种应用根据
需要使用。
端口0
如果你注意力很集中,可能会发现我们说有65536个端口,然而分
类中只有65535个。从技术上说,保留端口的范围是0~1023,但是端口0
被用于特定的目的,不被用于传递流量。端口0在Unix套接字编程中被
作为一个快捷方式使用,请求端口0时,系统指定下一个可用的动态端
口。这使编程人员省去了硬编码端口号或者编写代码确定可用动态端口的麻烦。
运行于这一层的协议包括用于请求和提供网页的HTTP(端口
80)、用于文件传输的FTP(端口20和21)以及用于电子邮件的
SMTP(端口25)。端口及其分配的完整列表可以在
www.iana.orgassignmentsport-numbers上找到。2.5 OSI和TCPIP模型的对比
OSI和TCPIP模型有很多共同之处,因为它们描述了同样的一组事
物,只不过是方式上不同。图2.4展示了两个模型之间层次的对比,相
互的映射,以及每层上协议的示例。
图2.4 OSI和TCPIP层次对比2.6 小结
本章从理论而非实践出发描述了网络,重点介绍了网络模型、分层
和封装等基本概念。从下一章开始到第一部分结束,我们将介绍更多的
实际应用,说明网络的实践特性。第3章 以太网
关键概念
·以太网
·MAC地址
·冲突域
·广播域
·中继器、集线器和交换机
·交换逻辑3.1 导言
现在,我们要脱离教室中的讨论,进入具体的细节中。虽然本书主
要关注虚拟网络,但是在某种程度上,如果你想要完成任何工作,流量
就必须进入物理链路。所以,理解物理网络至关重要。在本章中,我们
讨论以太网和相关的第1层和第2层技术,这些技术你可能会在数据中心
中遇到。我们从以太网历史的简单介绍开始,然后转向电缆连接技术、物理编址和设备互连以及在它们之间转发数据的技术。3.2 以太网
当谈到数据中心网络时,我们通常会讲到某种类型的以太网。以太
网(Ethernet)这一术语指的是一组描述典型局域网(LAN)的物理和
数据链路层标准,以及实现它们的技术。
3.2.1 历史和操作理论
以太网已经出现了一段时间——将近40年了。20世纪70年代中期,在Robert Metcalfe的领导下,Xerox PARC开发了以太网,1980年正式投
入商业使用,1985年正式标准化为IEEE 802.3。
以太网最初是围绕共享介质的思路构建的——当时,同轴电缆作为
共享的物理总线。在被用于夏威夷大学开发的AlohaNet无线电传输系统
之后,建立了一些通信规范,但是使用物理电缆作为通信传输的“以
太”(ether)——以太网的名称就是从这里得来,因为IT人士都难以抵
抗19世纪物理学引用的诱惑。图3.1展示了一个简单的共享总线LAN拓
扑。图3.1 共享总线以太网上的设备
共享通信介质带来了挑战。计算机被连接到共享物理总线上,它们
通过总线发送电信号传输信息,通过检测电信号接收信息。如果两台计
算机试图同时发送信息会发生什么情况?两个信号会重叠,在总线上的
其他设备会引起混乱和不连贯。这在以太网的术语中称作冲突
(collision)。
为了在共享连接上成功地进行通信,必须有一些机制来确保一次只
有一个设备传输数据。以太网通过带有冲突检测的载波侦听多路访问
(CSMACD)算法来实现这一机制。
即使缩写,这个术语也很拗口,让我们来进一步分解它。“载波侦
听”的意思是首先检查线路。如果另一个传输正在进行,在传输之前等待线路空闲。“多路访问”指的是多个设备共享总线——冲突是可能发生
的。“冲突检测”描述了检测冲突并作出反应的方法。由于冲突涉及多个
同时发出的信号,可以通过搜索高于预期的信号振幅发现。检测到这些
冲突之后,传输中的站点发送一个阻塞信号,确保所有站点意识到冲
突,然后对每个站点采用某种退回算法,等待随机的时间后再重新传
输。
3.2.2 以太标准和电缆类型
以太网有多种速度和形式。最近,在现代数据中心,你最可能碰到
的是千兆和万兆以太网,使用铜缆或者光纤。在数据中心之外,你可能
使用100Mbps连接,甚至无线连接,但是我们讨论的重点是数据中心内
的连接,那里是真正发生魔法的地方。
光纤线路(fiber)和光纤通道(fibre)
在美国,关于数据中心内光纤线路的讨论可能很快就引起困惑。美
国人使用“fiber”来指代光纤线路本身。有时候,这种光纤线路被用于使
用光纤通道协议(fibre channel protocol)的存储区域网络(SAN)。所
以,“光纤线路”是介质,而“光纤通道”是一种可以在该介质上使用的协
议。明白了吗?更复杂的是,光纤通道协议也可以运行于非屏蔽双绞线
(UTP)上。在美国之外,“fibre”常被用于指光纤介质,这导致了许多令人沮丧
的拼写问题。
更多有关光纤通道的信息,可以参见Mostafa Khalil的《Storage
Implementation in vSphere 5.0》。
[1]
千兆以太网使用铜缆,而它的前身10M和100M以太网使用UTP电
缆。这些电缆由4对线组成,沿着电缆长度方向铰接,两端由RJ45连接
器终结。
你知道的所有关于连接器的知识都是谎言
你可能对我的卖弄学问不屑一顾,但是我们不能再成为说谎者中的
一员了。你知道5类线末端的是什么东西?它并不是RJ45连接器。RJ45
连接器是带锁的,不适合于标准以太网NIC端口。用于标准UTP电缆的
连接器是8P8C(8位置,8触点)连接器。真正的RJ45连接器是8P2C(8
位置,2触点)连接器。真正的RJ45插头和插座标准从未被真正采用,而8P8C和RJ45连接器的外观很相似(除了锁以外),所以两者都被叫
做RJ45。
在铜缆千兆以太网络上,所有4对线路都被用于同时传输和接收。
这与早期的10M和100M标准不同,那两种标准定义了单独的发送和接
收线对。光纤上的千兆和万兆以太网使用两股光纤线路,一股用来传输,另
一股用于接收。相对短的距离上可以使用多模光纤,较长距离则使用单
模光纤。单模光纤只携带单一频率的激光信号(对人眼不安全),而多
模光纤携带的是多种频率、由LED驱动的光信号,如果你看到这一光
线,不会受到伤害。在数据中心应用中,光纤线路通常终止于SC或者
LC连接器。SC连接器是方形的,使用推进–拉出式连接机制,每对传
输接收线路通常用一个塑料夹固定在一起。LC连接器体型较小,使用
与RJ45连接器类似的翼片连接机制。
上游光纤线路连接一般使用可热插拔的收发器。千兆接口转换器
(GBIC)或者小型可插拔收发器(SFP)用于支持千兆以太网连接,增
强小型可插拔收发器(SPF+)用于万兆连接。
铜缆上的万兆以太网最常采用SFP+直接连接,在这种连接中双轴
铜缆由连接到电缆末端的SFP+外壳终结。有些供应商将这种电缆称作
直接连接铜缆(DAC)。这些电缆用于相当短的范围内,被动电缆为
1~7米,主动电缆最多为15米,后者从连接的设备上获得传输所需的电
力。现在也有在UTP上传输的万兆铜缆网络(10GBase-T),但是较少
见,因为升级基础架构以支持它的成本高于使用现有的SFP+端口。
表3.1列出了一些常见的物理以太网标准。
表3.1 常见以太网标准表3.2展示一些常见的电缆连接器及其型号。
表3.2 常见以太网电缆连接器及其型号
3.2.3 以太网编址
在共享总线上,所有站点都能看到所有传输。但是,正如我们在第
1章中所看到的,有些信息本意只用于一个站点,有些用于一组站点,有些则可供所有站点接收。所以,以太网定义了一个编址方案,允许针
对单个接收者、多个接收者或者总线上所有接收者进行通信。
这些第2层地址——在IEEE 802.3标准中称作MAC(Media Access
Control,媒体访问控制)地址——长度为6字节,通常以一个12个十六
进制数字的字符串表示。Cisco设备通常用句点将其分为4个数字的组
(如1234.5678.90AB)。其他供应商使用冒号或者破折号分隔2个数字
的组(12:34:56:78:90:AB或者12-34-56-78-90-AB)。VMware使用冒号
记法,所以我们也将使用这种记法。
这些地址分为3种。第一种是我们将要花最多时间说明的——单播
地址。单播地址用于指定发送者和以太帧的意向接收者。当网络适配器
观察到共享总线上的传输时,它会检查目标MAC地址是否匹配自身的
地址,如果匹配则处理该帧,否则该帧被忽略。
单播MAC地址要求在全球范围内保持唯一。为此,物理网卡的制
造商在工厂将MAC地址编码到以太网卡上——这个地址常常被称作“烧
录地址”。IEEE为每个制造商分配一个组织唯一标识符(OUI),这个
标识符占据MAC地址的前半部分。然后,制造商分配地址的另一半。
VMware有自己的OUI(00:50:56),用于构建虚拟机网络适配器的MAC
地址。
全球唯一的例外情况IEEE要求MAC地址全球统一的本意很好,但是制造商并不都能达
到这个要求。许多人都有过发现NIC有重复MAC地址的经历,现代NIC
往往可以将MAC地址修改为自定义值。全球唯一性实际上更多的是作
为一个指导原则。所以,只要你的MAC地址在2层域中保持唯一,就没
有关系。
其他两类MAC地址用于标识多个接收者。广播目标地址(MAC地
址FF:FF:FF:FF:FF:FF)用于表示共享总线上的所有网络适配器都应该处
理该帧。组播目标地址用于将帧发送给总线上的一组网络适配器。组播
MAC地址将使用OUI 01:00:5e,剩下的6字节由用户定义。
[1] 中文书名《vSphere 5.0 存储设计与实现》,由机械工业出版社出
版。——编辑注3.3 扩展以太网段:中继器、集线器和交换机
我们在表3.1中已经看到,每个物理以太网标准都有最大电缆长
度,这种距离限制的原因和穿越介质时电信号的衰减(attenuation)有
关。当你想要连接更远的设备时该怎么办?早期的解决方案是中继器
(repeater),这种设备连接两个网段,将其在一端侦听到的所有信号
发送到另一端。中继器在10BASE5和10BASE2的时代很常见,当时以太
网段通常是单一的共享同轴电缆。
当基于UTP的电缆技术推出时,中继器被集线器(hub)所代替,如图3.2所示。集线器实际上是一个多端口的中继器,网段上的每个设
备都连接到集线器,集线器将接收到的所有传输数据重发到其他各个端
口。如果8端口集线器接收到端口1上的传输数据,它将把传输数据重发
到端口2~8,而不会将其发到接收到传输数据的端口上。从集线器传输
的数据都是新鲜的,可以发到最大距离,从而重置了距离计数器。图3.2 连接到集线器的设备
通过堆叠集线器,你可以支持许多设备的互连。但是,因为每个集
线器盲目地重发信号,形成的网络仍然是单一的共享总线,很容易引起
冲突。这种网络上的所有设备被称为同一冲突域(collision domain)的
组成部分。而且,CSMACD要求一次只有一个设备传输。因此,可用
的带宽在所有连接的设备之间共享。最终,在基于集线器的以太网中,没有设备能够同时传输和接收。这被称为半双工(half-duplex)通信。
随着共享总线上的设备数量的增加,冲突的概率也会增加。最终,不断
的冲突使通信无法持续。
因为冲突的倾向和低下的带宽利用率,人们开发出了更智能的互连
设备——交换机(switch)。交换机不通过盲目的重新广播建立单一的
共享总线,而是检查每个帧的目标地址,只将其转发到相关的端口。如
果多个帧同时被发送到同一个目标地址,交换机可以缓存这些帧,一次发送一个,以避免冲突。所以,在交换机中,尽管背板的带宽是共享
的,但每个当前通信连接的带宽不是共享的,每组通信中的端口可以使
用全部带宽,仅受交换机背板的限制。
由于这些特性,每个交换端口自成冲突域。只要每个端口只连接一
个设备,就不会发生冲突。CSMACD算法可以禁用,允许连接的两端
同时发送和接收,实际上成倍提高了性能。这被称作全双工(full-
duplex)通信。
虽然交换机能为单播流量做出智能的转发决策,但是仍然必须支持
广播和组播流量,允许发送者传输到所有或者多个连接的设备。当一个
交换机端口接收到广播,它会被重传到所有其他端口,这就是交换机和
所连接设备被称作共享一个广播域(broadcast domain)的原因。当交换
端口接收到组播时,只向与该地址有关的端口转发。
交换逻辑
让我们更深入地探究一下交换机的魔法。交换机必须检查每个输入
帧,确定是转发它还是忽略它。为此,交换机必须学习与每个端口相关
的MAC地址。这一映射由交换机检查每个输入帧源MAC地址建立。知
道源端口和源MAC地址之后,交换机在设计用于快速搜索的特种内存
中建立一个查找表,这一内存被称作内容可寻址存储器(ContentAddressableMemory,CAM)。
检查输入帧源地址之后,交换机检查帧的目标地址,并搜索MAC
地址表中的匹配项。如果没有找到匹配项,交换机向所有其他端口发送
该帧,假设位置的目标地址将会响应,然后将其加入地址表。如果找到
匹配项,且匹配项不是源端口,交换机将该帧转发到目标地址对应的端
口。如果匹配项就是源端口,该帧被忽略。如果你将一个集线器连接到
交换机端口,就会看到这种情况。交换机将把连接到集线器的所有设备
的MAC地址关联到同一个交换机端口,集线器将会把它连接的设备接
收到的所有信号重发到交换端口上。3.4 小结
在本章中,我们深入研究了以太网,讨论了操作理论、物理信道和
物理编址。我们还介绍了交换机及其做出转发决策的方法。下一章在这
些思路的基础上,介绍高级的第2层概念。第4章 第2层的高级知识
关键概念
·虚拟LAN(VLAN)
·汇聚端口
·访问端口
·生成树协议(STP)
·链路聚合4.1 导言
在前面的几章中,我们主要围绕为各种网络对象创建标识展开讨
论,并描述了各种网络拓扑。这对于让流量从一个对象传送到另一个对
象来说很好,但是有一些高级主题,对将基本网络转换为高可用性和可
伸缩的网络来说是必不可少的。
在本章中,我们将介绍3个新概念:将物理局域网(LAN)从逻辑
上分为虚拟LAN(VLAN)的方法,用于防止第2层出现环路,从而防
止网络传输能力被严重降低的技术,以及对链路聚合的讨论。这3个主
题在现代数据中心中十分关键,特别是与第二部分讨论的虚拟网络概念
关联的时候。在本章中所要探索的这3个主题通常可以在你遇到的所有
网络中遇到——随着阅读的深入你就会看到原因。
4.1.1 概念
局域网是供所有连接设备消费的共享资源,目标是让每个设备都能
高效地通信。但是,有时候一个公司可能希望通过较小的网络,将网络
的各个部分分成不同的功能组。管理层可能希望将每个部门隔离到自己
的网络中,或者希望让一个网络专门用于推动业务收入的应用。
拥有多个VLAN能够给性能和安全带来很大的好处。想象一下这种情景:在人力资源部(HR)中的人,该部门相互发送和接收敏感的个
人文件。隔离的HR LAN可以确保没有人会无意或者恶意地窥探他们的
网络流量。隔离的LAN还能确保HR员工不会与网络上的其他用户共享
一个广播域,从而改进了性能。最后,单独的LAN限制了某些恶意软件
的传播。
我们来看一个公司使用两个不同LAN隔离HR与销售和市场部门的
例子(见图4.1)。注意这个网络需要两个不同的交换机。
图4.1 两个隔离的物理LAN
然而,购买全新的一组网络设备来隔离HR员工的成本效益不高。
这类似于一家航空公司购买一批宽体客机,每架飞机只让10个人登机
——浪费了许多容量,招致不必要的开销。为了代替这种做法,开发出了虚拟LAN的思路,它被作为IEEE 802.1Q开放标准,可以让物理交换
机从逻辑上分割,提供独立的虚拟LAN。
图4.2显示了一个以太网帧,重点是通常不用的4字节。在这4字节
中,12位专门保留用于VLAN ID。在VLAN ID字段中填入值,就可以标
记该帧,将其放在一个VLAN段中。
图4.2 以太网帧
VLAN通过在帧头添加4字节的标记定义,让所有交换机知道该帧
属于哪个逻辑LAN。交换机的端口被编程为只转发具有指定VLAN编号
的帧,忽略其他帧。这让网络管理员控制哪个端口属于特定的VLAN。
回到想要隔离HR和其他部门的那家公司,我们现在发现,只需要
一个物理交换机(见图4.3)。VLAN标记现在在逻辑层上处理这种隔
离。图4.3 用于HR和公用的两个VLAN
只允许单一VLAN帧的端口称作访问端口(access port)。进入该端
口的流量(称作入口操作)将由交换机在帧上添加VLAN标记。这使得
连接到该端口的服务器不会意识到所属的VLAN,从而让服务器向该交
换机发送无标记的帧。另一方面,从该端口转发的流量(称作出口操
作)将删除VLAN标记,以便使服务器不会看到该标记。
让我们花点时间看看示例VLAN ID(100)的标记过程。服务器生
成无标记流量(没有VLAN标记),并将帧发送到交换机端口。在帧进
入端口时,它是入口帧,交换机知道该端口配置为VLAN 100,并将
VLAN ID域更新为100。当该帧以后发送到下一个目标时,就使用
VLAN ID 100,如图4.4所示。图4.4 访问端口的入口和出口VLAN ID状态
记住,如果没有路由设备的帮助,VLAN之间不能互相通信。每个
VLAN都有自己的2层网络域。即使两个设备在物理上插入相邻的端
口,在每个端口上使用不同的VLAN,都会禁止两个端口相互通信,除
非有一个设备路由这些流量。
4.1.2 端口汇聚
在VLAN数量较少或者小型网络拓扑的情况下,你可以对所有端口
使用访问端口。如果你的网络开始扩展,这样做就不那么好了。例如,如果有100个VLAN,就必须至少配置100个不同的访问端口,来转发从
一个交换机通往下一个交换机的流量。但是,如果你允许一个端口传递
多个不同VLAN,会怎么样?这就是端口汇聚(trunking)的用武之地
——这个想法实际上很简单,端口汇聚就是让一个端口能够转发一系列
专门定义的VLAN的流量如果你不想创建这样的列表,还可以简单地转
发“所有VLAN”的流量。
图4.5展示了4个不同的VLAN——VLAN ID 100、200、300、400——被分配到一个汇聚端口的情况。这个端口现在有能力传递属于4个
VLAN中任何一个的标记流量。
图4.5 多个VLAN的汇聚模式端口
汇聚端口(trunk port)常用于交换机之间,可以扩展VLAN。如果
两个用户连接到办公楼不同部分的两台交换机上,且必须处于同一个
VLAN,就需要相互通信的手段。两台交换机可以使用一个汇聚端口,从两个场地传递802.1Q(VLAN标记)流量。
注意 虽然将服务器连接到访问端口相当常见,但有一些用例将服
务器连接到汇聚端口。我们将在第2部分讨论虚拟网络时介绍这种用
例,但是要记住,没有运行虚拟化管理器的物理服务器几乎总是连接到
访问端口。
原生VLAN我们在前面曾经说明过,连接到访问端口的服务器向交换机发送无
标记帧。然后,访问端口添加相关VLAN的标记。但是,如果未标记帧
被汇聚端口接收,会发生什么?由于汇聚端口可能属于数十个VLAN,交换机如何确定对帧应用哪个VLAN标记?
这时就要用到“原生VLAN”(native VLAN)的概念了。原生VLAN
是专门定义,用作任何未标记流量默认值的VLAN。当交换机看到一个
无标记的帧进入其端口,它查找原生VLAN编号,并在不标记任何
VLAN信息的情况下转发它。下一跳的交换机必须承认原生VLAN的编
号。4.2 避免环路和生成树
设备间的单一链路形成了单一故障点,所以很自然地会想到增加冗
余链路。只要预算允许,你还应该在交换机级别上引入冗余性,例如,访问层交换机到多个上游分发层交换机的双连接。这避免了任一个网络
设备故障造成整个系统停机的情况。但是,这样做也有危险,因为交换
机之间的冗余链路如果携带广播流量,可能造成所谓的“广播风暴”,在
这种情况下,交换机传输真实流量的能力将接近于0,因为它实际上传
输的是无限循环的广播帧。因为以太网没有存活时间之类的内部计数器
来使流量过期失效,进入环路的帧将永不休止——至少在网络管理员拔
除导致环路的电缆,或者在每个连接的交换机上开启生成树协议
(Spanning Tree Protocol,STP)之前。
4.2.1 生成树概述
生成树协议是一个非常深奥的主题,让许多专业的网络管理员都感
到头痛。我们将在本章的下一部分告诉你它究竟是什么,它的工作原
理,以及对于典型网络运作的重要性。
什么是生成树
STP——IEEE 802.1D开放标准设计用于避免环路,使网络管理员能在不形成流量环路的情况下引入冗余性。STP学习网络拓扑,有目的地
阻塞可能造成环路的冗余链接。如果一个活动链路失效,STP将解除必
要链路的阻塞,恢复连接性。
实例 上述的效果很容易演示。如果你有便宜的消费级网络交换
机,可以将两个端口连接在一起,插入你的笔记本或者桌面电脑,并且
Ping某个IP地址,生成ARP请求广播。由于低端交换机没有运行STP来
阻止环路,因此会观察到大量的活动,直到你拔掉环路为止,这就是交
换机上的广播风暴。
生成树是如何工作的
所有主动参与STP的交换机首先必须知道那个交换机是根网桥
(root bridge)。这通过选举完成——就像选举总理或者组长一样,但
是涉及的政策比较少。根网桥从网桥ID最低的交换机中确定。各个交换
机通过交换包含其网桥ID的网桥协议数据单元(BPDU)来确定根网
桥。
网桥ID由两部分组成:网桥优先级和MAC地址。默认情况下,所
有交换机的网桥优先级都为32768。管理员可以更改网桥优先级,以
4096的倍数增加或者减少,强制确定作为根网桥的交换机。如果所有交
换机都使用默认的优先级32768,则通过寻找MAC地址值最小的交换机
来打破僵局。在你希望作为根网桥的交换机上设置较低的网桥优先级是明智的,否则的话,根网桥的角色可能会落到一台能力不足或者过度使
用的交换机上,仅仅因为它恰好有最小的MAC地址。
确定根网桥之后,拓扑中剩下的非根网桥交换机进行一些计算,确
定将流量发回根网桥的最佳路径。它们交换BPDU,确定网络拓扑并跟
踪拓扑的变化。到根网桥的每条路径都有相关的成本。想象一下,你想
要从一个城市开车到下一个城市,会有许多不同的路径选择。你可能选
择州际公路,里程较远但是可以开快车;也可以选择地方公路,里程较
短,但是速度也慢得多。
交换机关注每条可能返回根网桥的链路的成本,搜索最低的总路径
成本。路径成本是基于数据传输率的每条路径成本总和。对于标准
STP(802.1D),成本如表4.1所示。
表4.1 STP成本值
从这些成本中可以看出,如果STP必须在一条100Mbps(成本19)
和4条1000Mbps链路(成本为4×4=16)之间做出选择,它将选择4条
1000Mbps链路。选择路径之后,连接到其他交换机的端口被分配如下
的STP角色:
·根端口(Root Port,RP):提供到根网桥最低成本路径的交换机端口。
·指定端口(Designated Port,DP):处于到根网桥最低成本路径下
一跳的上游交换机端口。
·阻塞端口(Blocked Port,BLK):根端口和指定端口之外的端
口,被阻止转发流量。
这些连接如图4.6所示。图4.6 样板拓扑中的生成树角色
当一个链路失效时,STP将完成一次重新收敛过程,确定应该激活
的阻塞端口。该端口将经历4个状态:
·阻塞:任何非DP或者RP端口的起始状态。不接收和发送用户数
据,但是发送和接收BPDU帧。
·监听:端口监听BPDU帧但是不转发,不更新其MAC表。这使得
过时的MAC地址可以失效,因为它们在STP拓扑变化之后不再有效。端
口持续监听可能使其返回阻塞状态的BPDU。不转发帧。
·学习:端口尚不转发帧,但是观察接收到的帧的源地址,并用它
们填写MAC表。
·转发:正常操作——端口正在发送和接收数据。
4.2.2 PortFast
STP默认阻塞端口,直到它监听和学习该端口上的流量,确定可以
在不造成环路的情况下转发流量。这对于交换机间链路是很好的,但是
网络上的终端设备——桌面电脑、服务器、打印机等——通常不会造成
网络环路。阻塞流量一段时间可能造成某些令人头疼的复杂性,特别是
在工作站或者服务器试图使用预启动执行环境(PXE)启动,或者请求IP地址的DHCP租约时。
对于这些终端设备,管理员可以在Cisco设备上启用PortFast,或者
在其他交换机供应商的产品上指定某个端口为边缘端口(edge port)或
者“快速上联”(fast uplink)端口。PortFast是802.1D的一种扩展,允许
端口跳过监听和学习状态,直接迁移到转发状态。实际上,这一设置告
诉交换机立刻信任该端口,不需要花费时间证明该端口不会造成环路。
实例 对连接到服务器上任何一个NIC的端口启用PortFast很常见,且常常受到厂商的推荐,因为它们不会形成环路。所有服务器NIC应该
得到允许,积极地转发流量。
当然,在交换机端口上启用PortFast必须小心,并且确保没有网络
设备插入该端口。有些人可能插入一个配置了不恰当的STP网桥优先级
的“流氓”网络设备,成为网络拓扑中的根网桥。但是,这些方面的内容
超出了本书的范围,BPDU Filtering和BPDU Guard等工具能够提供对这
类风险的防护。
4.2.3 快速生成树
虽然STP的效果和宣传的一样,但是它的收敛相当慢。如果网络拓
扑变化,STP可能花费30~50秒才能将端口从阻塞迁移到转发流量。大
部分环境都不能接受这样的停机时长。在当今“随时在线”技术的“超连接”世界里,你能够想象整个网络断开将近一分钟吗?
注意 大部分网络不运行传统的802.1D STP,它已经成为一个统
称,表示当今存在的任何STP变种,便于和你的同伴们谈论交换机端口
上的阻塞和转发流量。
快速生成树协议(Rapid Spanning Tree Protocol,RSTP)——IEEE
802.1W开放标准的推出,是为了更快的网络收敛。这种协议要求大约6
秒钟的收敛时间,使用的端口状态少于STP,这样的性能有多种原因,主要是源于该协议使用提议(proposal)和确认(agreement)来代替定
时器,并将端口状态与端口角色解耦。它所使用的3种端口状态是:
·丢弃(discarding):该端口状态代替STP的禁用、阻塞和监听状
态。端口丢弃帧,就像STP阻塞端口一样。
·学习(learning):此时,该端口检查流量以学习MAC地址,但是
不转发或者接收数据流量。
·转发(forwarding):交换端口转发和接收数据流量。
RTSP还引入了另外两种端口角色:
·替换端口(alternate port):这是通过不同于活动根端口的对等交
换机,提供到根网桥替换路径的阻塞端口。·备份端口(backup port):这是通过同一台对等交换机,提供通往
根网桥的备份路径的阻塞端口。4.3 链路聚合
并不是所有设备间冗余链路都会招来STP的麻烦。实际上,你可以
自由地使用一整组专门用于解决某些冗余链路需求的协议,我们接下来
将介绍它们。
4.3.1 什么是链路聚合
虽然STP之类的协议对于避免网络环路是必要的,但是让完好的网
络连接处于闲置,只在出现链路故障(这种故障可能永远不会发生)时
才投入使用,是令人羞耻的事情。我们可以使用链路聚合,在不违反
STP的情况下使用这些链路。
链路聚合(link aggregation)是将多个物理端口绑定为单一逻辑组
的行为。这避免了组的任何一个成员被阻塞,因为组对STP来说是一个
逻辑端口。
与STP管理的单独链路相比,链路聚合提供了两大好处:
·增加带宽和负载分担:因为一个逻辑组中的多条链路都是活跃
的,在各个通信会话中提供了更多可用带宽。在图4.7中,没有一个单
独的通信会话(如单个客户与单个服务器的通信)能够使用超过一个物理链路。你可以将它看作建造多个车道的高速公路:你可以在高速公路
上行驶更多的车辆,但是每辆车在同一时间内只能占用一个车道。
·改进冗余性和可用性:如果组中的一个链接失效,其他链接继续
传递流量,组不会离线。没有必要重新配置STP拓扑,或者由STP将一
个新的链路从阻塞迁移到活动。图4.7 从单一来源到单一目标的链路聚合数据流只通过一个聚合端口
链路聚合带来的挑战之一是,它以不同的名称、形式和标准出现。
不同供应商采用不同的术语,甚至在实施相同标准时都是如此。为了不
引起混乱,我们尝试用通用的术语链路聚合组(LAG)来描述一般概
念,在谈及具体实现时使用供应商特定的术语。
实现方法
构建LAG有许多不同的方法,每个供应商都决定使用略微不同的名
称或者方法,实现逻辑链路分组。这可能给网络新手带来疑惑和挫败
感,所以我们将介绍常见的术语和使用的技术。
802.3ad和802.1ax-IEEE开放标准
IEEE LANMAN标准委员会在他们的802.3ad开放标准中提出链路
聚合。该思路是为了通过非专利的手段达到许多链路聚合目标。后来,该标准被正式改为802.1ax发布,以避免与其他802.1层次之间的混淆。
802.1ax的正式定义如下:
链路聚合允许一个或者多个链路聚合在一起,组成链路聚合组,从
而使媒体访问控制(MAC)客户可以将链路聚合组视为单一链路。
在802.1ax开放标准中,IEEE还定义了链路聚合控制协议
(LACP)。这个协议的目的是使两个系统能够用标准的非专利协议协商LAG。
Cisco的EtherChannel
EtherChannel(以太网通道)是构建Cisco交换机之间LAG的专利方
法,它最多可以包含8个转发流量的活动端口,以及8个不活动端口(有
时称作故障切换端口),用于在活跃端口失效时接管。EtherChannel有
两种类型:
·静态EtherChannel,在Cisco IOS中称作“mode on”,它是人工配置
的,不使用协商协议来组建LAG。如果网络管理员在交换机中输入错误
的信息,LAG看上去仍然是活动的,但是可能不能正确转发流量。
·动态EtherChannel可以使用两种协议之一自动创建LAG:端口聚合
协议(PAgP)或者LACP。创建动态EtherChannel时,两个网络交换机
协商组建LAG。如果协商失败,不会建立LAG。
Etherchannel与Port Channel
在链路聚合的讨论中更为复杂的是,EtherChannel和Port Channnel
两个术语常常互换使用。但是,两者之间有微妙的差别。在两个交换机
之间配置EtherChannel时,在每个交换机上创建一个Port Channel接口,将物理接口绑定在一起。EtherChannel作为交换机之间的渠道,由一组
捆绑的电缆组成,而Port Channel是在两端终结EtherChannel的逻辑接口,由一组捆绑的接口组成。换句话说,当你改变EtherChannel的配置
时,是通过Port Channel的接口进行的。当这些更改提交时,它们自动
应用到组成EtherChannel的各个接口。
其他供应商的术语
下面是一些在讨论链路聚合时可能遇到的其他术语:
·Trunk(HP):HP网络设备的某些文档(以及支持这些设备的许
多网络工程师)将LAG称作Trunk(主干)。这可能造成LAG与传输
802.1Q VLAN标记的链路之间的混淆,后者被其他人称作“Trunk”。HP
的“Trunk”实现遵循802.1ad标准,而非HP的工程师称其为LAG。
·多机架链路聚合(Multi-Chassis Link Aggregation,不同供应商)
或者跨堆叠以太网通道(Cross-Stack EtherChannel,Cisco):多机架
LAG终结两个不同节点上的接口。这是具有更高可用性的实现方法,因
为LAG可以承受连接目标的故障。各个供应商都有特定的实现细节,超
出了本书的范围,但是你应该知道MC-LAG的存在,因为单一交换机目
标的故障并不意味着聚合链接的丢失,因此它更为健壮。具体的例子包
括虚拟端口通道(Cisco)和分布式主干(HP)。
·NIC Teaming(网卡捆绑):许多终端操作系统和虚拟化管理器能
够从逻辑上捆绑网络连接。这通常称作NIC Teaming或者NIC
bonding(网卡绑定)。在这些配置中,软件驱动程序必须确定如何在上联链路中分布流量,连接的物理交换机通常没有意识到捆绑的配置。
4.3.2 动态链路聚合
如前所述,802.3ad和Cisco的链路聚合实现都支持两种LAG构建方
法——静态和动态。它们实际上很简单。静态LAG是由管理员手工配置
的,在创建之后立刻显示为“启动”状态,即使线路另一端的对应端口没
有正确配置也是如此。动态LAG使用特定的协议与对应端口通信,询问
它们是否正确配置,可以组成LAG。
实例 在实践中,选择哪一种方法主要取决于网络设备的支持。例
如,VMware vSphere标准交换机(vSwitch)无法组成动态LAG,如果
需要链路聚合,必须使用静态LAG。其他硬件和虚拟交换机如HP
ProCurve、Cisco Nexus和VMware vSphere虚拟分布式交换机(5.1及更
高版本)支持使用LACP的动态LAG。大部分网络管理员倾向于尽可能
使用动态LAG,因为这有助于确保LAG正确配置。
在现代交换世界中,动态LAG协议实际上只有一个选择:LACP。
你想要使用的任何设备都支持它。尽管如此,使用Cisco PAgP的设备也
不少见。
链路聚合控制协议(LACP)LACP在IEEE 802.3ad开放标准中定义,后为802.1ax。理解该协议
更详细的工作原理并不很重要,但是你应该知道它所使用的一般过程:
1)配置为使用LACP的网络设备将在LAG所有成员端口上生成特殊
的LACPDU(LACP数据单元)帧。
2)对端设备将接收这些特殊帧,如果它们也配置了LACP,将用自
己的LACPDU帧响应。
3)网络设备将组成动态LAG。
真的很简单!
端口聚合协议(PAgP)
端口聚合协议(PAgP)是一个越来越不重要的LAG协议。该协议
由Cisco开发,作为动态组成LAG的方法。现在的Cisco设备不再支持
PAgP,因为其他厂商的设备都坚持使用LACP。
实例 和使用Cisco网络设备的人一起工作时,他可能将LACP说
成“mode active”(主动模式)。这是因为创建Cisco EtherChannel的CLI
命令需要设置该模式。LACP模式的选择为“active”(主动)
和“passive”(被动)。主动设备将寻找对端设备组成LAG,而被动设备
只会监听请求。两个设备中至少有一个必须是主动的,否则两者都只能
监听。将两个设备都设置成主动,以免担心设备设置方式的情况也很常见。
4.3.3 负载分布类型
使用LAG时,必须选择一种何种流量通过哪个物理端口的方法。两
个设备之间创建的每个会话都只能使用LAG内的单一端口。认为流量会
分布到多个端口是常见的错误——回到高速公路上的汽车的例子,你不
能将一辆车切成4块,同时占据4个车道。即使你能够这么做,这些分块
也不能带着你更快地到达目的地——谁能保证呢?
每个LAG,不管是静态还是动态,都使用某种负载分布方法,确定
流量会话与特定端口的映射。LAG可以检查帧和数据包的首部,寻找3
种信息:
·源信息(src)
·目标信息(dst)
·源和目标信息(src-dst)
负载分布逻辑可以提取如下信息:
·IP地址(ip)
·MAC地址(mac)·TCPUDP端口(port)
你可以根据特定流量负载的最佳分布方式来做出选择。典型的默认
方法是使用源和目标MAC地址(src-dst-mac)。这种方法在你不知道基
于源还是基于目标的分布更有好处的时候使用。从主机A到主机B、主
机A到主机C以及主机C到主机B的数据包都使用LAG中的不同端口。
下面是一些用例和负载分布方法:
·通往一组Web服务器的流量可能从使用源IP地址(src-ip)中得
益。使用这种方法,来自不同IP地址的数据包可能使用LAG中的不同端
口,但是来自同一个IP地址的数据包将使用LAG中的同一个端口。
·通往办公大楼中PC工作站的流文件传输可能从目标MAC地址
(dst-mac)中得益。使用这种方法,前往相同目标MAC的数据包通过
LAG中的相同端口转发,而前往不同目标的数据包通过LAG中的不同端
口发送。
·相互间必须传递流量的应用服务器可能从源和目标端口(src-dst-
port)中得益。使用这种方法,在主机之间发送的使用不同端口的数据
包将在LAG中的不同端口上转发,而主机间相同端口之间发送的数据包
将在LAG中的相同端口上转发。
陷阱 在vSphere 5.5之前,VMware vSphere分布式交换机只支持src-dst-ip负载分布。一定要告诉你的网络管理员使用这种方法,并将
VMware虚拟交换机上的分布算法设置为“基于IP散列的路由”(route
based on IP hash)。4.4 小结
现在,你已经进入第2层的高级主题,你可能认为,你最希望实现
的是消除逻辑环路。但是要记住,业界已经做出了很大的努力,用创造
性的方法使网络在实际拓扑中有多条物理通道时以为只有一条路径存
在。幸运的是,你在vSphere网络上所要处理的大部分事务完全不可能
形成环路——这将在第二部分中更详细地介绍。
对于你未来的高性能网络忍者职业生涯,更为重要的是VLAN的理
解、消费和配置。大部分vSphere环境依赖于正确的VLAN编号和描述,这样客户虚拟机(VM)才能正确地相互通信。此外,使用VLAN隔离
各种类型的流量,可能带来许多性能上的好处。最后,链路聚合提高了
vMotion和IP存储之类的关键大量负载的可靠性和容量。不用害怕:我
们接下来将用物理和逻辑配置的实际例子,更加深入地讨论这些主题。
参考文献
1.IEEE Standards Association.2013.802.1AX-2008-IEEE Standard for
Local and Metropolitan Area Networks—Link Aggregation.Available at:
http:standards.ieee.orgfindstdsstandard802.1AX-2008.html.第5章 第3层
关键概念
·路由
·IP地址
·子网
·默认网关
·DHCP
·DNS
·ARP
·Ping5.1 导言
我们已经学习了第1层和第2层,现在可以转向第3层——网络层
了。曾几何时,当每个数据包必须离开本地网段,进入浩瀚的世界
去“碰运气”时,我们只能含着眼泪目送它们,希望它们一路走好。在本
章中,我们将描述在不同的网络之间,数据从一个设备路由到另一个设
备的过程。我们将从网络层功能的概述开始,然后转向网络层的逻辑编
址,深入讨论路由机制,详细描述一些支持该层功能的工具。5.2 网络层
你可能记得在第2章中曾经提到,OSI第3层的功能是将数据包从发
送者传递到接收者,一路上可能经过许多“跳”(hop)。为了实现这种
功能,网络层协议支持转发数据包、设备逻辑编址的过程以及发现所连
接网络和到达网络的途径的方法。
5.2.1 路由和转发
网络上的每台主机在确定发送数据包的目标时,都使用一个简单的
两步过程。如果目标地址和主机在同一个子网,源主机简单地将数据包
直接发送到目标主机。如果目标地址在不同的子网,主机将数据包发往
子网上的路由器。路由器检查数据包,将目标地址与路由表比较,寻找
匹配项。如果找到匹配项,路由器将数据包重新发往对应的接口。
5.2.2 已连接、静态和动态路由
路由器将每个数据包的目标地址与路由表比较。路由表可以三种不
同的方式填充。首先考虑的是已连接路由(connected routes)。只要接
口上线且分配了互联网协议(IP)地址,路由器将自动将直连的子网路
由添加到路由表。如果路由器有一个IP地址为192.168.1.124的接口,它将把192.168.1.024添加到路由表,将该接口作为下一跳。
第二种方法是静态路由。对于没有直接连接的网络,管理员可以手
工输入路由语句,将某个网络导向某个接口。这在小规模或者静态环境
中工作得很好,但是在扩展或者新网络不断添加的时候难以管理。
第三种方法是动态路由,路由器可以通过路由协议学习路由。每个
路由器向拓扑中的其他路由器广播所知路由。当路由器监听到路由更新
时,它将更新信息添加到路由表。路由协议包括一些避免路由环路添加
到路由表的机制,并且包含某些路由器用于比较学习到的路由的指标,确保添加到某个位置的最佳路由。
5.2.3 最终网关
前面,我们曾经说过,如果路由表中找到匹配项,路由器将把数据
包发到对应的接口。那么,如果匹配项没有找到呢?路由器通常会配置
一个最终网关(gateway of last resort),也称默认路由或者默认网关。
这些术语可以互换使用,但是“最终网关”更直观。这是一种特殊的通配
静态路由,如果数据包在路由表中没有任何匹配项,则将其发送到这个
网关,它知道该怎么做。
注意 除非你使用Cisco路由器并使用no ip classless命令,否则上述
说明都成立。在这种配置下,最终网关可以设置,但是会被忽略。如果路由表中没有找到匹配项,该数据包会被抛弃。
这一概念也可以扩展到网络上的主机——每台主机都可以将其默认
网关配置成子网上的路由器。注意,因为默认网关是任何非局域网的通
配路由,每台主机只能有一个默认网关。即使主机是多连接的——也就
是说连接到多个网络——也仍然只能有一个默认网关。5.3 IP编址和子网
在网上通信的每个设备需要唯一的IP地址。IP地址是一个32位数
字,我们将其缩短为句点十进制记法,将32位序列的每个字节转换为一
个十进制值,并且用句点分割这些数字。所以,IP地址204.248.52.7实际
上是32位序列11001100111110000011010000000111。你常常会听到这些
十进制分块被称作octets,也就是一组8个二进制值。
IP地址被分组为连续的地址,每一组是一个IP网络或者子网。单一
子网中的地址在第一部分中有共同的数值串。整个IP地址分为两部分
——一个定义网络的网络前缀,和一个指定网络上主机的主机地址。共
享同一网络前缀的所有主机相互处于同一局域网——它们之间不能有任
何路由。同样,具有不同网络前缀的主机必须用路由器分隔。
5.3.1 分类编址
那么,对于204.248.52.7这样的地址值,你怎么知道网络地址结束
的地方和主机地址开始的地方呢?回到国防部高级研究计划局
(DARPA)设想IP的时候,互联网工程任务组(IETF)创建了RFC
791,描述主机用作单播地址的不同网络类别,其中定义了3类网络——
A类、B类和C类。每个类别的网络前缀长度不同。A类网络使用地址的第一个字节作为网络前缀。B类网络使用前两个字节作为网络前缀,C
类则使用前三个字节。在描述网络前缀时,通常是写出前缀中的数字,对主机部分使用0。例如,4.0.0.0是一个A类网络,128.123.0.0是一个B
类网络,192.123.231.0是一个C类网络。
每一类网络都能支持一定数量的主机。A类网络保留第一个字节作
为网络前缀,其余3个字节(24位)可以用于主机标识。可用主机的总
数是2^24减去每个网络中的两个保留地址,共有1600多万个主机地址。
地址范围中的最后一个保留作为广播地址,第一个地址在历史上保留用
作网络前缀,但是现在的路由和交换硬件允许使用该地址。B类地址支
持2^16减去2,共计65534台主机。至于C类网络,则是2^8-2=254台主
机。表5.1列出了各类网络的八位位组范围、网络编号、网络总数和每
个网络的主机数。
表5.1 分类网络描述
5.3.2 无类编址
分类编址并非没有限制。分类网络的供应很快被耗尽,路由表变得
难以管理。IETF设计了一个描述网络的新系统(RFC 1518和1519),称作无类域间路由(Classless Inter-Domain Routing,CIDR)。
和分类编址一样,IP地址由网络前缀和主机标识符组成。但是
CIDR的网络前缀没有被限制在一个字节的位数边界上,而是允许网络
前缀使用任何长度,这通过可变长度子网掩码(VLSM)实现。
CIDR引入了子网掩码的概念,这是另一个32位二进制数,和IP地
址配合起来,确定IP地址的网络和主机部分。子网掩码的二进制表现总
是一系列的1,后面跟上一系列0。路由器将IP地址的二进制值和子网掩
码作逻辑与(AND)运算,确定网络部分。另一种说法是,IP地址的网
络部分是对应于子网掩码中1的一组位。
我们来看几个例子。假设有一台主机的IP地址为10.20.30.40,采用
A类子网掩码255.0.0.0,网络地址是什么?
10.20.30.40的二进制表现形式是
00001010000101000001111000101000。255.0.0.0的二进制表现形式是
11111111000000000000000000000000。我们比较这两个数值:
IP:00001010000101000001111000101000
掩码:11111111000000000000000000000000
网络:00001010000000000000000000000000我们可以查看IP地址中的哪些位映射到子网地址中的1,然后在映
射到0的位上输入0,写出网络地址。这里,网络地址为
00001010000000000000000000000000,转换为10进制就是10.0.0.0。你
常常会看到子网掩码表达为其中1的个数——这称作CIDR标记法。我们
的网络的CIDR标记方式是10.0.0.08。
现在,我们来尝试更复杂的地址。我们使用相同的IP地址
10.20.30.40,但是这次子网掩码是255.255.255.224。
同样,10.20.30.40的二进制表现形式是
00001010000101000001111000101000。255.255.255.224的二进制表现形
式是11111111111111111111111111100000。我们比较这两个数值:
IP:00001010000101000001111000101000
掩码:11111111111111111111111111100000
网络:00001010000101000001111000100000
这次,我们的网络地址变成00001010000101000001111000100000,转换成十进制和CIDR标记法就是10.20.30.3237。
提示 www.subnet-calculator.comcidr.php上有一个方便的在线计算
器,可以将IP和子网掩码转换为其网络地址和网络范围。5.3.3 保留地址
有些IP地址最好避免使用,因为它们被保留用于特定的目的。这包
括每个子网中最小和最大的IP地址。最小的IP地址保留用作网络地址,而最大的则用于该网段的广播地址。其他常用的保留地址块是0.0.0.08
保留用作通配源IP地址,127.0.0.08保留用作环回地址,169.254.0.016
保留用作链路本地地址(你可能在Windows中看到它们被称作自动私有
IP地址[ARIPA]),D类(第一个字节为224~239)和E类(第一个字节
为240~255)地址被保留用作组播和试验性地址。
其他一些地址范围被保留用作私有IP地址,包括10.0.0.08、172.16.0.012和192.168.0.016。私有地址通常用于不需要公共IP地址的
组织内部。设置私有地址的设备仍然可以通过网络地址转换(NAT)访
问外部资源。保留地址范围的完整列表可以参见RFC 6890《Special
Purpose IP Address Registries》(特殊用途IP地址注册)。5.4 网络层支持应用
介绍了编址和转发机制之后,我们转向辅助网络层功能、保养和供
应的常见工具。
5.4.1 DHCP
网络上的每个设备都需要一个IP地址,但是随着网络的扩张,人工
为每台设备配置地址给后勤工作带来了挑战。某些重要的设备——例如
路由器、交换机和服务器——应该人工配置,使用不会变化的静态IP地
址,以确保这些设备总是可以在预期的地址上访问。其他设备(一般是
最终用户设备)可能采用的是临时性的链接,不需要固定、人工分配的
地址。对于这些设备,可以使用动态主机配置协议(HDCP),临时借
用或者租借IP地址。DHCP还使管理员能够配置其他信息,包括默认网
关地址、DNS服务器地址(下面会做详细介绍)以及域名。
使用DHCP时,DHCP服务器维护可用于各个子网的不同IP地址池
的列表。配置为使用DHCP的设备在其子网上广播DHCP Discover消息。
DHCP服务器指定池中的一个IP地址并向客户响应一个DHCP Offer消
息,包括指定的IP地址、子网掩码、租期和DHCP服务器的IP地址。然
后,客户端通过广播DHCP Request消息做出响应,表示它已经接受提供的地址。客户端可以从多个DHCP服务器接收地址,但是只能对一个做
出响应。任何其他发送地址的DHCP服务器将会看到广播请求,将提供
的地址返回到地址池中。然后,DHCP服务器向客户端发送DHCP
Acknowledgement消息,确认地址保留。确认消息包括可能指定的其他
配置参数。
5.4.2 DNS
虽然我们中的某些人还为能够回忆起20年前使用的IP地址(可是却
记不得妻子早上让他们做的事情)而痛苦,但是不能期待最终用户也能
做到这点。
域名服务(Domain Name Service,DNS)是将用户友好的名称映射
到IP地址的集中化机制。当主机配置为使用DNS服务器时,它将向指定
的服务器发送DNS请求,要求翻译。然后,DNS服务器用匹配友好名称
的IP地址响应。可以指定多个DNS服务器,所以如果客户端无法联系列
出的第一台DNS服务器,它将尝试列表中的下一台服务器,直到接收到
响应。
5.4.3 ARP
回忆一下,每个IP数据包必须封装在一个第2层帧中,才能够发送到下一跳设备。地址解析协议(ARP)用于确定该帧的目标媒体访问控
制(MAC)地址。
客户端将一个名称解析为IP地址之后,它确定该IP地址是不是在本
地子网上。如果是,则在该网段上发出一个ARP广播,要求该IP地址的
设备响应其MAC地址。如果目标主机不在本地子网上,客户端发出默
认网关IP地址的ARP请求。
并非每次通信都要发出ARP请求。在客户端发起请求时,响应被记
忆在ARP缓存中。每当客户端需要在一个帧里封装数据包,它会检查
ARP缓存,看看是否有目标IP的MAC匹配项。
5.4.4 Ping
Ping命令可以测试主机之间的基本IP连接性。它使用互联网控制消
息协议(ICMP),向目标主机发送一个ICMP回声(echo)请求,预期
该主机响应一个ICMP回声。成功时,你就确定网络可以从源主机向目
的主机发送一个数据包。
Ping的名称来自声纳,因为回声请求和回声响应类似于主动声纳的
处理过程。5.5 小结
在本章中,我们研究了第3层——网络层的功能。我们描述了网络
层功能、网络层编址、路由和转发过程以及在该层次上运行和提供支持
的一些工具程序。在下一章中,我们离开网络理论,研究一种相对新颖
的基础架构消费模式。第6章 融合式基础架构
关键概念
·融合式基础架构
·Cisco UCS
·HP BladeSystem
·Nutanix虚拟计算平台6.1 导言
在进入虚拟网络的讨论之前,我们先绕个小小的弯子。你可以把这
看作一次小憩,在接受了我们刚刚介绍的大量网络知识之后稍事休息的
机会。到目前为止,我们已经介绍了不少的网络基础知识。这种时候很
容易令人迷失方向,沉迷于各种互联设备的特性,而忘了那些设备的最
初目的是为了建立网络。类似的情况常常发生在服务器、存储、桌面电
脑方面的专业人士身上。当这些技术被看作孤岛,独立配备和采购,就
会出现“竖井”,大大降低效率。
融合式基础架构(converged infrastructure)是解决上述问题的方法
之一,这种解决方案将计算、网络和存储技术打包或者集成为一种易于
消费、部署和管理的解决方案。在本章中,我们将介绍融合解决方案的
基本概念,并提供一些常常会碰到的例子。6.2 概念
首先,我们先来看看具备传统数据中心组件——连接到网络交换机
和存储阵列的机架式服务器——的典型IT机构。管理和维护这些设备的
人员组合成不同团队——存储团队、网络团队和服务器团队——这些团
队共同组成基础架构团队。
当数据中心需要添加新服务器时,需要进行相当多的活动。除了政
策和采购商的把戏之外,这三个团队必须和谐共事,使新服务器进入投
产状态。
服务器团队必须“上架和堆叠”服务器。这是将服务器运送到数据中
心,拆包,然后寻找一个机架位置安装的过程。他们的任务还包括指定
服务器名称,应用IP地址,并完成服务器的其他个性化属性的设置。
网络团队将服务器连接到附近的交换机,询问服务器团队该服务器
端口的配置方式。他们询问的问题常常与VLAN配置、所需电缆数量和
确定端口与服务器通信的最大传输单元(MTU)有关。为了安全,他
们还可能想要对网卡(NIC)进行研究,验证交换机发现的MAC地址。
最后,存储团队可能需要检查主机总线适配器(HBA),为建立存
储区域网络(SAN)和对应的分区配置标识全球端口名称(WWPN)。然后,他们可以构建存储结构,例如逻辑单元号(LUN)或者卷,并向
服务器提供它们。
听起来很累,不是吗?涉及的人很多,即使有完美的沟通,仍然有
许多犯错的机会。虽然没有一项任务会花费太长的时间,但协调工作和
遵循更改控制策略所需的后勤工作可能造成延迟,将交付时间延长到疯
狂的地步。我们曾经遇到很多公司,他们认为能在90天内完成从交付到
投产的过程就很好了。
融合基础架构的好处
上述模式已经出现了多年,并且大部分都很有效。那么为什么要改
变呢?是的,如果每个月只添加一台或者两台服务器,进行多团队的目
标竞演就没有太大的必要。但是,如果你每个月要添加10、100甚至
1000台服务器,那又会怎么样呢?你需要一个工程师兵团,他们除了添
加服务器什么都不干。这种方法没有伸缩性,而且极其容易出错。
融合基础架构试图消除大量的人为因素,它的目标是将多种资源组
合成一个逻辑管理和控制面。网络当然是这一思路的核心,通常与计算
和存储相结合。融合机构不形成IT基础架构中的孤岛,而是支持打破这
些藩篱,组成统一的团队。
下面是融合基础架构带来的一些好处:·一次性连接线路:网络团队执行的大部分联网任务在解决方案的
初始配置期间完成。在数据中心添加更多服务器时,物理网络保持不
变。
·敏捷性和灵活性:大部分配置通过自动化和模板完成,消除了人
为配置相关的风险。
·可见性:整个解决方案可以从中央管理面板分析和配置,而不是
必须登录到跨学科的多个门户上。6.3 示例
在过去几年中,融合基础架构服务的数量激增。该市场顺应了数据
中心简化管理和增加灵活性的思路。每种服务在具体运营方式、针对的
市场和解决方案的伸缩性上各有不同的侧重。我们将提供几个在数据中
心上遇到的解决方案示例。这不是一个完整的列表,只用来作为各类融
合基础架构的例子。
6.3.1 Cisco UCS
Cisco统一计算系统(Unified Computing System,UCS)是一种“白
板”计算方法,试图回答“后虚拟世界应该使用什么样的计算平台?”的
问题。Cisco的方法在一个“围墙”中统一网络和存储网络结构,减少了管
理点的数量,并提供服务器置备的策略和基于池的方法。它还允许你选
择刀片或者机架式服务器。
UCS的智能存在于一对阵列互连(fabric interconnect)之中,该设
备运行UCS Manager软件,控制和管理整个计算域。每个阵列互连有到
外部网络的上游连接,并且可以选择到阵列扩展器的SAN和下游“服务
器端口”连接,这些连接的实现形式是刀片机箱中的IO模块或者柜顶式
Nexus 2000系列设备。每个阵列扩展器作为阵列互连的远程线卡使用。阵列扩展器完全依赖于阵列互连,它们本身不转发流量。流量通过上联
端口(uplink port)流入阵列互连,然后通过服务器端口(server port)
流向阵列扩展器,最后流向刀片服务器或者机架服务器。
清楚地说,UCS是融合空间中相当独特的一种服务——一般来说,融合基础架构的设计被限制在刀片或者“类似刀片”的机箱中,不允许使
用机架服务器。
为什么这很关键?不是所有工作负载都适合于刀片型系统。例子之
一是Apache Hadoop——这种大数据分析群集可以从每台服务器中许多
慢速的小型本地硬盘中获益,这种硬盘数量不适合于单一的刀片服务
器。
图6.1展示了一个UCS机架,其IO模块连接到一对阵列互连。图6.1 Cisco UCS架构
阵列互连作为终端主机(End-Host)设备使用——它们就像面向服
务器一端的交换机,而在面向网络的一端则像服务器网卡。这消除了传
统交换机的一些危险。终端主机设备不会形成环路,也就没有必要考虑
生成树。这意味着,从阵列互连到上游交换机的每条上游链路都可以是
活跃的。每个IO模块和阵列互连之间也可以有多个连接,无须担心环路
——根据你的配置,每个IO模块和阵列互连之间的链路被看作一个port-
channel绑定,或者将刀片与特定的上联链路绑定。这确保流量可以流向
所有上联链路。阵列互连不学习任何不在其控制之内的MAC地址。当交换流量时,任何未知的目标MAC地址都被转发到上联端口,期待上
游的全功能交换机对其进行处理。
服务器必需的所有网络配置都在UCS Manager中进行。你定义
VLAN、服务质量(quality of service)策略、MTU大小和每个服务器所
拥有的NIC数量。服务器通常配置为无状态——与物理刀片关联的服务
配置文件包含从池中拉取的MAC地址和全球名称(WWN)标识、网络
和SAN配置以及从SAN或者LAN启动的配置细节。这就可以在出现故障
时快速而轻松地更换——你可以替换失效的刀片,并且重新将服务配置
文件关联到替换的刀片。
Cisco提供了两个扩展管理能力的附加产品。UCS Central提供多个
UCS域(也就是多对阵列互连和连接的服务器)的集中化管理。UCS
Director提供了全面的管理和编排功能,不仅可用于Cisco UCS硬件,还
能用于其他Cisco交换设备及多供应商存储设备。
6.3.2 HP BladeSystem
HP BladeSystem多年来一直处于x86刀片架构的领先地位。
BladeSystem全力关注刀片服务,不会选择机架服务器。但是,BladeSystem提供广泛的特种刀片——如存储刀片、PCIe插槽刀片、桌
面刀片等。此外,这种架构设置为允许使用广泛的刀片交换机,甚至可以使用Cisco和Broacde等其他供应商的产品。
和用一对阵列互连组成包含所有刀片机箱的域的Cisco UCS不同,BladeSystem将相当部分控制和管理放入单独的刀片机箱。实际上,每
个机箱都有一个板载管理器(Onboard Administrator,OA)和8个用于
不同网络模块的插槽。这为管理员提供了灵活性,可以自定义每个机
箱,用于特定的需求(例如光纤通道、以太网或者两者组合的数量或者
用途)。得到这些灵活性的代价是每个点必须作为单独实体管理和维
护,但是可以使用管理软件,通过HP Virtual Connect Enterprise和HP
OneView等服务组合实体控制。Cisco UCS和HP BladeSystem两者之间的
重要差别是:“UCS使用一个逻辑管理点,而HP BladeSystem有多个”。
我们不准备评价孰优孰劣,这只是你在使用两种系统时应该注意的一个
要点而已。
从网络的角度看,HP BladeSystem的重点在于虚拟连接(Virtual
Connect,VC)技术,这是工作于透明模式(与UCS的终端主机模式很
类似)的交换模块。VC模块通常成对部署在机箱中相邻的位置。你可
以选择将模块配置为主动-被动,如果主动模式的模块失效,被动模块
将会接管,也可以配置为主动–主动,使底层vSphere虚拟化管理器可以
在故障的时候将流量转向主动模块。在主动–被动和主动–主动模式之间
选择的决策通常取决于流量和上联交换架构。HP的Cook Book介绍了两
种配置的构建方法——我们将从第11章开始介绍刀片服务器架构的一些细节。
HP BladeSystem在VC管理器中提供了定义VLAN、虚拟NIC、NIC
速度等能力。在VC域(VC Enterprise Manager中的单一或者多个机箱)
中完成一次配置,就可以重复地用于每个当前和附加的刀片。如果对你
的架构或者设计有利,也可以使用仅存在于BladeSystem中的VLAN,将
其用于本地流量(如vMotion或者Fault Tolerance)。当BladeSystem作为
HP CloudSystem Matrix解决方案一部分时,可以得到额外的自动化和自
服务功能。
图6.2展示了HP BladeSystem c7000机箱的业务端点。图6.2 HP BladeSystem后视图
6.3.3 Nutanix虚拟计算平台
Nutanix提供了将各种资源供应组——计算、存储和网络——融合
为单一的“超融合”平台的新方法。Nutanix的融合达到了最大的限度,不涉及任何远程存储阵列——所有资源都被合并到一个虚拟计算群集机架
(virtual computing cluster chassis)。
在专注于网络构造时,Nutanix提供了有趣的体验。因为全部的焦
点都在Nutanix群集进出流量的表现上。与该系统绑定的以太网连接为
虚拟机提供一个离开群集与其他实体通信的路径。群集中的每个
Nutanix节点提供一系列网络适配器,可以插入一个上游交换系统,带
宽的扩展变得很容易,只需要简单地添加节点的数量。这在某种程度上
与CiscoUCS小节中表达的概念类似,不同之处在于不是将UCS机架与
UCS阵列互连连接,而是将Nutanix节点连接到上游交换机,由其提供群
集功能和对节点的访问。剩下的节点间通信由系统处理。除了指定IP地
址,节点间通信对管理员是透明的。
图6.3展示了Nutanix虚拟计算平台的架构。图6.3 Nutanix虚拟计算平台架构6.4 小结
在本章中,我们介绍了融合架构的概念,说明了它相对传统部署模
式的优势,并描述了3种最常遇到的供应商实现。本章结束了我们在物
理基础架构上的讨论,在下一章中,我们将讨论虚拟网络概念。第二部分 虚拟交换
·第7章 虚拟交换与物理交换的不同
·第8章 vSphere标准交换机
·第9章 vSphere分布式交换机
·第10章 第三方交换机–1000V
·第11章 实验方案
·第12章 标准虚拟交换机设计
·第13章 分布式虚拟交换机设计第7章 虚拟交换与物理交换的不同
关键概念
·主机上联链路
·虚拟端口
·外部交换机标记
·虚拟交换机标记
·虚拟客户标记7.1 导言
虽然很容易指出物理和虚拟交换之间的明显差异——一个是硬件,另一个是软件——但还不仅于此。在交换流量和提供高级服务及功能的
过程上也有不同。在本章中,我们关注虚拟交换机如何在运行ESXi的
VMware vSphere主机上运营,以及虚拟交换机代表的逻辑对象的一些术
语。7.2 物理和虚拟交换机的比较
你的第一个问题可能是——虚拟交换机究竟是什么?毕竟,本书的
前一部分完全聚焦于交换的理论与实践,以及一些路由方面的知识,大
部分都集中在将电缆插入神奇的盒子当中,以传输数据的过程。
首先,我们将介绍物理和虚拟交换机之间基本功能的相似和不同之
处。你可能会吃惊于两类交换机的相似之处,它们之间的差异很微小,但是对虚拟环境的设计和配置有着深远的影响。
7.2.1 相似点
需要注意的是,顾名思义,VMware虚拟交换机(常称为vSwitch)
不对流量进行特殊或者专利的修改。所有流入虚拟交换机的帧遵循IEEE
802.3协议的相同标准,遵循OSI模型数据链路层的概念框架,以及
TCPIP网络接口层的实际应用。考虑这一点非常有意义——否则你就需
要特殊的设备来将流量传入或者传出ESXi主机及其虚拟交换机。
图7.1展示了IEEE 802.3帧格式。图7.1 IEEE 802.3帧格式
此外,ESXi主机有能力使用来自Qlogic、Emulex、Intel等公司的各
种现成网络适配器(NIC)——参考硬件兼容性列表,将其作为权威性
列表。这些NIC使用标准的连接器类型——RJ458p8c铜缆接口或者各种
标准的光纤连接器类型,和在运行其他操作系统或者虚拟化管理其的其
他服务器上所找到的NIC一样。然后,虚拟交换机开始使用这些网络适
配器,并连接电缆对流量进行交换处理。
7.2.2 不同点
因为虚拟交换机不是物理设备,在配置上有某些灵活性。如果你的
虚拟交换机需要大量虚拟端口,只需要编辑其属性并根据需要调整。对
于物理交换机,这可能需要繁重的交换机升级,添加新交换机,或者在
基于机架的交换机上添加线卡。
7.2.3 交换决策
另一个重要的差别是虚拟交换机处理第2层交换的方式。也就是
说,对网络上的MAC地址的确定以及数据的移动。物理交换机有很大
的MAC地址表,保存在内存中以便快速发现帧发送的目标。直接和远
程连接到交换机的节点地址都被记忆下来——也就是直接插到交换机端口的节点和连接到另一个交换机端口上的节点。
图7.2显示了连接到虚拟交换机的设备的MAC地址,这些地址是在
vSphere Web Client中找到的。
图7.2 虚拟交换机只跟踪其端口上的MAC地址
虚拟交换机不会关心不直接连接到它的节点的MAC地址。它只需
要知道消费虚拟交换机上虚拟端口的虚拟机和VMkernel端口设备(在本
章中将做进一步介绍)的MAC地址。除此之外,虚拟交换机对其他设
备没有任何线索。如果一个帧从外部进入虚拟交换机,目标是未知的MAC地址,它会被虚拟交换机忽略。这是一个重要的区别——物理交
换机将会向除了接收帧的端口之外的所有端口发出未知帧,作为其学习
MAC地址的过程的一部分。软件虚拟交换机不需要经历学习过程,由
此知道MAC地址属于哪个端口。类似地,如果一个帧从虚拟端口进入
虚拟交换机,例如从一个VM发出,目标是未知的MAC地址,它将通过
上联链路端口处理。这使得虚拟交换机的二层交换非常简单而轻松。总
结起来,交换逻辑如下:
1)以太网帧进入虚拟交换机。
2)如果目标是已知的MAC地址,将该帧交换到拥有该地址的虚拟
端口。
3)如果目标是未和的MAC地址:
a)如果来自外部源,抛弃该帧。
b)如果来自内部源,将其发到物理上联链路。
图7.3说明了这种虚拟交换逻辑。
记住,虚拟交换机只能进行2层交换。如果帧试图到达另一个
VLAN上的MAC地址,需要第3层交换,该帧将被发送到物理上联链
路,寄希望于高层交换机能够执行VLAN间路由。图7.3 虚拟交换机中的交换决策7.3 物理上联链路
但是,虚拟交换机上的端口并不都是虚拟的——毕竟,必须有某种
手段将流量送出主机!这就是物理网络适配器(NIC)的任务,它作为
进入物理网络的上联链路(uplink)。每个上联链路提供到上游物理交
换机的一条通信路径,以便数据能够进入和离开虚拟环境。
主机网络接口卡(NIC)
ESXi主机的NIC作为虚拟交换机的上联链路。也就是说,它们是流
量进入和离开vSphere主机的途径。如果需要,你可以配置大量的NIC
——在vSphere 5.1中最多为32个1GbE NIC——也可以只配置一个。我们
倾向于配置不少于两个NIC,为避免单点故障,至少配置两个NIC。如
果你不希望流量离开ESXi主机,可以创建一个没有上联链路的虚拟交换
机。
你还可以选择NIC的速度。这通常是每秒1G bit(1Gbps)或者10G
bit(10Gbps)。你甚至可能注意到这些值被表示
为“1GbE”和“10GbE”——大写字母E代表以太网。
不是所有流量都会使用物理上联链路。有时候一个VM(甚至主
机)希望与相同主机上同一个虚拟交换机内的同一个VLAN上的另一个VM通信。在这种情况下,流量没有必要离开虚拟交换机,使用上联链
路——交换机知道连接到它的两个实体,它将简单地在本地交换该帧。
过去,这有时候被称作“暗流量”(dark traffic),因为在开发出现代化
的虚拟感知工具和监控软件之前,很难跟踪和监控这些流量。
图7.4说明了本地虚拟交换机暗流量的概念。
图7.4 本地交换的流量(暗流量)7.4 虚拟端口
我们已经介绍了虚拟交换机的物理端——NIC提供的物理上联链
路,下面我们转向虚拟端。
虚拟交换机动态定义可用于VM和主机本身的虚拟端口数量。虚拟
端口计数是动态的,这一事实很重要,因为这使得交换机很敏捷,可以
满足新创建的VM和主机端口的需求,同时删除不使用的端口,保持主
机RAM消耗的合理性。
提示 vSphere 4分布式交换机使用静态的虚拟端口数量。当你耗尽
虚拟端口时,必须用图形用户界面(GUI)或者脚本增加该数量。这很
无趣!
然而,vSphere 5.x默认情况下使用的分布式虚拟端口是弹性端口
(elastic ports)。弹性意味着,虚拟交换机将自动管理虚拟端口的数量
——按需创建和删除——不需要用户的干预。
虚拟端口连接到3种不同类型的端口:VM NIC、VMkernel端口和服
务控制台端口。
7.4.1 虚拟机NIC在虚拟机中创建、连接和激活的每个虚拟网络适配器使用虚拟交换
机上的一个虚拟端口。这是VM NIC和虚拟交换机之间连接的实际方式
——虚拟端口是与物理网络之间的桥梁。
7.4.2 VMkernel端口
VMkernel端口是将vSPhere主机的VMkernel连接到虚拟交换机的特
殊端口。毕竟,主机也需要和其他主机、vCenter服务器和网络上的其他
重要设备通信,这些流量必须和其余流量一样通过虚拟交换机发送。
VMkernel端口可以有多种不同的用途,传输各类流量:
1)管理
2)vMotion
3)容错日志
4)iSCSI存储流量
5)NFS存储流量
7.4.3 服务控制台
在vSPhere 5之前,你实际上有两种ESX可以选择:ESX和ESXi。到了vSphere 5,就只有ESXi了。两者之间有何不同?ESX有时称作“经
典”虚拟管理器,实际上运行虚拟化内核(VMkernel)和一个控制台操
作系统(Console Operating System,COS)。ESX是个相对较大的安
装,导致了更大的攻击面,所以VMware最终搁置经典的ESX架构,现
在只提供精简的、仅包含VMkernel的ESXi。
不过,重要的是理解经典ESX不使用管理VMkenel端口,而是采用
特殊的接口——服务控制台来进行管理;这个接口归COS而不是
VMkernel所有。虽然深入讨论这一点超出了本书的范围,但是最好了解
这种经典的架构。7.5 VLAN
虚拟交换机最后一个(但很重要)组件是VLAN标记。你可能记得
第4章中介绍的IEEE 802.1q。虚拟交换机支持3种不同的方式,确定如何
以及在何处处理VLAN。
7.5.1 外部交换标记
顾名思义,外部交换标记(External Switch Tagging,EST)配置
中,虚拟交换机完全忽略VLAN标记,物理上联链路连接的外部交换机
处理所有VLAN,并在它们到达虚拟交换机之前删除标记。
这种配置通过将上游交换机上的物理交换端口设置为访问模式来实
现。当流量进入上游交换机的访问端口时,检查VLAN标记,并在端口
向下游的虚拟交换机发送流量之前删除标记。因此,虚拟交换机只处理
无标记流量。
而且,因为没有VLAN标记进入虚拟交换机,VM NIC或者
VMkernel端口不知道它们属于哪个VLAN,也从不会看到802.1Q VLAN
标记。虚拟交换机上的任何设备必须使用相同的VLAN——在上游交换
机访问端口上配置的那一个。7.5.2 虚拟交换机标记
虚拟交换机标记(Virtual Switch Tagging,VST)发生在虚拟交换
机本身检查和添加删除VLAN标记的时候。为此,连接到物理上联链路
的上游交换机端口必须配置为汇聚(trunk)端口。这使该端口可以传递
预订数量的VLAN标记流量到虚拟交换机,且保留标记。
当帧到达虚拟交换机时,交换机检查VLAN标记以了解帧属于哪个
VLAN以及目标MAC地址,假定它找到一个匹配VLAN和MAC地址的
VM NIC或者VMkernel端口,则删除VLAN标记并交付该帧。否则,该
帧被抛弃。当流量来自VM NIC或者VMkernel端口时,虚拟交换机确保
在将该帧发送到物理上联链路之前添加VLAN标记。
VM NIC或者VMkernel端口不知道802.1Q VLAN标记,这一点与
EST类似,因为虚拟交换机在交付帧之前删除该标记。
注意 VST是虚拟化管理员最欢迎和常用的方法,原因是多方面
的。VST非常易于管理和维护,因为上游交换机端口配置为汇聚端口,不需要网络管理员花费精力去维护。而且,它为虚拟化管理员提供了额
外的VLAN可见性,可以轻松地从vSphere Client上看到标记编号。最
后,它在可用于虚拟交换机的VLAN数量上比EST更灵活,EST只允许
每个物理上联链路使用一个VLAN。对了,这个方法也是VMware推荐
的首选方法。7.5.3 虚拟客户标记
最后一种标记类型是虚拟客户标记(Virtual Guest Tagging,VGT)。在这种配置中,上游交换机端口配置为汇聚端口,向虚拟交换
机传递VLAN标记。虚拟交换机将检查VLAN标记,确保它们匹配正确
的目标虚拟端口,但是保持标记不变。标记帧以不修改的方式传递到
VM和VMkernel端口。为了这种配置正常工作,VM必须读取和理解
VLAN标记,并标记自己发送出去的流量。
图7.5说明了VLAN标记如何从Windows VM中添加到NIC。图7.5 在Windows客户VM中配置VLAN
VGT是一种独特的配置,通常保留给监控或者“嗅探”流量、提供路
由服务或者其他需要看到带有VLAN标记的帧的VM。7.6 小结
在本章中,我们了解了物理和虚拟交换机之间的一些关键差别。我
们介绍了它们处理流量的不同方式、虚拟端口的不同类型以及处理
VLAN的不同方法。在下一章中,我们在这些不同点的基础上,实际地
探索vSphere标准交换机的配置选项。第8章 vSphere标准交换机
关键概念
·控制和数据平面
·虚拟端口
·虚拟交换机安全性
·流量整形
·网卡捆绑和故障切换
·VMkernel端口
·端口组8.1 导言
如果没有某种将网络流量发出和发往VM的手段,VMware ESXi服
务器也就没有多少意义。幸运的是,VMware实现了这种手段,并且为
这个问题提供了经过深思熟虑的两种解决方案——vSphere标准交换机
和vSphere分布式交换机。本章重点关注前者——在每种许可证级别都
包含的原始虚拟交换机方案。不要被标准交换机的“标准”一词所迷惑
——它包含一组很好的特性,能够帮助你将流量快速地送入网络。下面
我们先来看看VMware标准交换机的工作原理。8.2 vSphere标准交换机
VMware标准交换机(standard switch)的目标是在任何场景下使网
络可以通信。这可能意味着,ESXi主机完全没有连接到vCenter——所
谓的vSphere“独立”(standalone)或者“vSphere虚拟化管理器”(vSphere
hypervisor)安装。在这种情况下,没有比主机本身更高级的管理设
施,所以标准级别的交换机必须能够只在主机发出指令的情况下运作。
提示 如果更深入地去思考就会发现,当你第一次在服务器上安装
VMware时,它是一片空白——没有名称、IP或者DNS信息。虽然可以
编写安装脚本,自动分配这些标识,但是无法做出任何假设。这是标准
虚拟交换机必须能够在ESXi独立安装下工作的另一个原因。
8.2.1 基本术语
在了解标准交换机工作原理之前,我们必须介绍一些术语。描述交
换机功能时,我们常常使用控制平面(control plane)和数据平面(data
plane)这两个术语。控制平面的流量和功能可以看作是流向交换机的流
量,而数据平面流量可以看作是通过交换机的流量。和交换机相关的管
理、监控和配置流量是控制平面流量。从一个虚拟机发送给世界的其余
部分的帧是数据平面流量。在典型的柜顶式物理交换机中,控制和数据平面处于同一设备中。
对于虚拟交换机,这些功能是相互分离的。
8.2.2 控制平面
标准虚拟交换机的控制平面位于VMware主机上。也就是说,虚拟
交换机配置、端口数量和流量转移方式的操纵都由主机负责。更确切地
说,确保虚拟交换机配置和正常运作,是虚拟化管理器内核(称作
VMkernel)的任务。
同样,即使你聚集一组VMware主机,每台主机也负责自己的标准
虚拟交换机。在vCenter出现故障时,每台主机的标准虚拟交换机仍然可
以通过直接连接到主机的vSphere客户端配置。
8.2.3 数据平面
主机上的每个标准交换机负责交换帧,这意味着数据平面由主机负
责。在数据进入主机的网卡(NIC)时,这些网卡组成标准虚拟交换机
的上联链路,VMkernel确保帧到达正确的目标。有时候这意味着流量会
被忽略,特别是外部流量进入虚拟交换机时带有未知目标MAC地址的
情况。8.3 虚拟交换机属性
每个虚拟交换机有两个基本属性,可以配置它们来满足设计和网络
最大传输尺寸的需求。
8.3.1 端口数量
端口数量表示保存在内存中、被跟踪和可用于VM的虚拟端口、VMkernel端口以及主机上联链路的数量。标准虚拟交换机的弱点之一
是,如果你更改端口数量,ESXi主机必须重启。在vSphere 4.1之前,虚
拟交换机端口的默认数量仅为56,导致许多没有经验的VMware管理员
在遇到该限值之后,才知道这是可以修改的。随着时间的推移,VMware了解到虚拟化管理员们的痛苦,在vSphere 4.1中,分配给标准
虚拟交换机的默认端口数被改为128,提供了一些余地。管理员可以2的
幂次增加该数量,比如从128改为256,最多可以增加到4096个端口。
图8.1展示了vSphere Web Client中的默认虚拟交换机属性对话框。图8.1 默认虚拟交换机属性
实例 如果你在经典的vSphere客户端上查看端口计数,可能会注
意到显示的端口数比默认端口数少8(120个)。虚拟化管理器总是保留
8个端口用于网络发现、Cisco发现协议(CDP)流量和物理上联链路等
开销。在较新的vSphere Web客户端中,显示的是实际的端口计数。
8.3.2 最大传输单元(MTU)
你可以配置的另一个项目是MTU——可放入帧载荷部分的最大数
据量。默认情况下,MTU是1500字节,对于你所能购买的任何网络设
备都是如此。你可以合理地假设,所有处于虚拟交换机上游的物理设备
都支持1500或者更大的MTU,这样能够避免不必要的数据包碎片。还有一个选项可以增大MTU的大小,将其设置为“巨型帧”(jumbo
frame)。我们确实喜欢这个行业中的这些傻里傻气的名称。巨型帧就
是大于默认尺寸(1500字节)的帧。即使将MTU设置为1501,从技术
上讲也是启用了巨型帧。这种“强大”、尺寸稍大一些的帧令人望而生
畏。
不过,大部分时候,巨型帧一词指的是MTU为9000字节或者更大
的帧,但是ESXi所能支持的最大MTU为9000字节。如果你和网络工程
师交谈,希望知道在虚拟交换机上设置多大的MTU,就要询问MTU的
确切数值——不要只问他,是否采用巨型帧。这样可以避免任何混淆。
实例 我们曾经和希望启用巨型帧,认为较大的数值默认情况下会
提高性能的人一起做了大量的工作。情况并不总是如此,在某些情况
下,启用巨型帧可能影响性能。对于巨型帧,很难确保所有物理联网设
备都正确配置。在你考虑增大基础架构上的MTU尺寸时,一定要有可
靠的技术原因,并进行性能测试。8.4 安全性
虚拟交换机上的安全设置可能是虚拟交换机配置中最容易被误解的
地方。有3个设置可以调整:混杂模式(promiscuous mode)、MAC地
址更改(MAC address changes)和伪造传输(forgedt transmit),如图
8.2所示。
图8.2 虚拟交换机上的安全性设置
8.4.1 混杂模式
回想我们介绍物理交换的时候,你可能会想起它的一个主要好处:可以将流量直接交换到单一的目标MAC地址。除非流量泛滥、广播或
者专门为了一个目标,网络上的设备不会“看到”流过交换机的其他流
量。对于大部分用例来说,这都是很好的,因为它提供了更好的可伸缩
性和改进的网络性能,是标准虚拟交换机的默认行为。
在某些情况下,我们确实希望VM看到发给另一个设备的流量。想
象一下,某种监控VM需要嗅探流量。这时,混杂模式能够带来方便。
将其设置为Accept(接受),就可以要求虚拟交换机让每个VLAN的流
量与同一个VLAN上的其他VM共享。
陷阱 混杂模式不允许VM看到不是由端口组指定的VLAN上的流
量。它仍然可以看到所属VLAN的流量。这是非常常见的错误概念。
8.4.2 MAC地址更改
MAC地址更改的想法迷惑了许多人,所以我们将做深入的介绍。
首先,从虚拟交换机的角度看,究竟什么是MAC地址更改呢?要理解
这一点,你必须首先了解交换机是如何跟踪VM的MAC地址的。
首先,每个VM都有3种不同类型的MAC地址:Initial(初始)、Effective(有效)和Runtime(运行时)MAC地址:
·初始MAC地址是在VM中的虚拟网络适配器上配置的。这在虚拟网卡创建时由vSphere决定,或者通过更改vSphere提供的值,人工设
置。这和物理网卡的“烧录”MAC地址(BIA)非常类似。
·有效MAC地址在VM中由客户操作系统配置。一般来说,客户OS
只使用初始MAC地址,和你的PC默认使用BIA非常类似。
·运行时MAC地址是虚拟交换机端口真正看到的地址。
图8.3显示了vSphere Web Client中一个VM的运行时MAC地址。
图8.3 VM的运行时MAC
现在你已经是MAC地址的专家了,我们可以回到虚拟交换机管理
MAC地址更改的讨论中。
设置为“Accept”时,虚拟交换机允许初始MAC地址与有效MAC地
址不同,意味着客户OS可以自行更改MAC地址。一般来说,我们不希望发生这种情况,因为恶意用户可能尝试使用相同MAC地址来仿冒另
一个VM,但是有些用例,比如Microsoft网络负载平衡(NLB)中,这
样做是有意义的。
当设置为“Reject”(拒绝)时,虚拟交换机将在发现客户OS试图将
有效MAC地址更改为初始MAC地址之外的数值时,禁用该端口。该端
口不再接收流量,直到你更改安全策略,或者确保有效MAC地址与初
始MAC地址相同。
总结起来,MAC地址更改策略的重点完全在是否允许VM(甚至某
个VMkernel端口)更改用于接收流量的MAC地址。下一小节介绍发送
流量的情况。
8.4.3 伪造传输
伪造传输和MAC地址更改很类似,它与MAC地址更改有关,但是
关心的是传输流量。
如果设置为“Accept”(接受),VM可以将希望使用的任何MAC地
址放入2层帧的“源地址”字段中。虚拟交换机端口会让这些帧发往目
标。
如果该策略设置为“Reject”(拒绝),该端口将查询由VM生成的所有流量。该策略将检查源MAC地址字段是否被篡改。只要源MAC字段
与有效MAC地址相同,端口就允许该帧。然而,如果MAC地址不匹
配,该帧将被抛弃。
进行嵌套的虚拟化时,伪造传输策略的问题很常见。嵌套
(nesting)这一术语用于描述在VM内运行ESXi虚拟化管理器,然后由
该管理器运行其他具有自身唯一MAC地址的嵌套VM的情况。嵌套的虚
拟化管理器VM使用的端口将看到许多不同的MAC地址,因为嵌套的客
户VM会发送流量。在这种情况下,你必须将伪造传输策略设置
为“Accept”。
图8.4说明了这一过程。
图8.4 嵌套VM在没有接受伪造传输的情况下不能发送流量8.5 发现
当你的环境中有一个虚拟交换机时,可能想要确保能够使用几种不
同监控方法中的一种,确定交换机的复杂拓扑。我们有时候称之为交
换“邻居”。
大部分交换机都至少连接到一个其他交换机,组成一个能够相互通
信的交换机网络。使用发现协议,我们可以让这些交换机(物理和虚
拟)了解自己的邻居。
注意 与网络部门交朋友的简单方法之一是在虚拟交换机上启用发
现。我们发现,许多人都从未听说过这个功能,或者对启用它感到犹
豫。在开启这一功能之前,一定要确保安全团队允许你使用发现协议,一旦开启,每个人都可以非常轻松地了解物理和虚拟交换机的邻居!
Cisco发现协议(CDP)
VMware标准虚拟交换机只支持一种发现协议——Cisco发现协议
(Cisco Discovery Protocol,CDP)。你能猜到哪个交换机制造商使用
这种协议吗?给你个提示——不是Brocade。
CDP是一种专利协议,允许交换机相互通信,以了解它们与其他设备的连接情况。对于流量的传输来说这不是必需的,但是为管理员和工
程师提供了一种很好的手段,去了解插入端口的哪一端是什么设备。
CDP会实时更新,也就是说,它的价值远远不止于在一个数据表上或者
用其他手工方法记录配置。在标准虚拟交换机上,CDP默认启用。图8.5
展示了标准虚拟交换机连接的3550交换机上,show cdp neighbors命令的
输出。图8.5 连接到两个虚拟交换机上联端口的Cisco 3550交换机CDP信息8.6 流量整形
流量整形(traffic shaping)是控制允许流过链路流量的能力。也就
是说,你可以不让流量尽快通过,限制可发送的流量。
在标准虚拟交换机中,你只能对从一个对象——如VM或者
VMkernel端口——发送到另一个对象的输出流量进行流量整形。
VMware称此为“入口流量”(ingress traffic),指的是数据通过虚拟端口
进入虚拟交换机。在下一章我们开始讨论分布式交换机时,将介绍如何
设置“出口流量”(egress traffic)的整形,那是指端口组接收的发往VM
或者VMkernel端口的流量的控制。
流量整形包括3个不同的控制点,如图8.6所示。图8.6 流量整形控制一览
·Average bandwidth(平均带宽,kbps):允许交换机发送的平均带
宽值,单位为千位秒(Kbps)。流量可能会在短期内略微超过该值,因为这是一段时间的平均值。但是,在大部分情况下,将会强制流量不
超过这里设置的定义速度限值。
·Peak bandwidth(峰值带宽,Kbps):允许交换机通过的最大带
宽。峰值带宽的使用由我们达到平均带宽限值的频率决定。每当实际流
量低于平均带宽限值,我们就获得了所谓的“突发红利”(burst
bonus),这可能是最高为突发尺寸限值(下面将作介绍)的字节数。
突发红利可以在有受到抑制的流量时使用,按照突发尺寸值描述的数据
大小,让更多的流量通过交换机。·Burst Size(突发尺寸,KB):这个值经常被误解,所以我们将作
详细的介绍。突发尺寸是允许在峰值带宽上发送的“可突发”数据的实际
数量,以KB为单位。可以将突发红利看作流量的储蓄账户。突发尺寸
就是可以进入该“账户”的最大字节数。所以,当你需要发送超过平均带
宽允许值得数据时,可以进行突发传输,这时的带宽超过平均带宽。但
是突发传输总是保持在(或者低于)峰值带宽,在流量储蓄账户中的字
节数——突发红利为0时强制终止。
图8.7是一个例子,展示一段平均流量期间,在这一期间的中段采
用了突发峰值带宽。你可以将突发尺寸(KB)除以峰值带宽
(kbps),确定突发流量的时长。
图8.7 显示平均和峰值带宽的流量整形图表对流量整形值进行修改将会立刻在交换机上应用限制——不需要重
启或者预热。
流量整形的计算
下面是一个具体的例子,说明在最好的情况下,如何计算流量处于
峰值的时长:
·为了易于计算,假设你将平均带宽设置为1000Kbps。
·你还将峰值带宽设置为2000Kbps——平均带宽的2倍。
·最后,你将突发尺寸设置为1000KB。提示——不要忘记一个字节
有8位,也就是说,1000KB=8000Kb。大写的“B”指字节,小写的“b”指
位。
如果突发红利达到最大值,也就是突发尺寸值(8000Kb),你可
以在峰值带宽下传输4秒:8000Kb突发尺寸2000Kbps峰值带宽=82=4秒8.7 网卡捆绑
让我们离开网络计算,小憩片刻,然后转向网卡捆绑的美妙世界
中。捆绑(teaming)的概念被冠以不同的名称:绑定(bonding)、组
合(grouping)和汇聚(trunking)等。实际上,它的意思就是我们将某
台ESXi主机上的多个物理NIC组合在一起,组合成单一的逻辑链路,为
虚拟交换机提供带宽聚合和冗余性。你可能认为这和前面介绍的端口通
道(port channel)有些类似,没错——目标很相似,但是方法却有很大
的不同。
图8.8展示了绑定和故障切换的所有配置选项。图8.8 从vSphere Web Client查看捆绑和故障切换配置选项
我们先来看看虚拟交换机中所有网卡绑定的配置选项。这些选项在
虚拟交换机使用多个上联链路时比较关键,但是不管有多少上联链路,它们都是有效的配置点。
8.7.1 负载平衡
第一个有趣的配置是Load-balancing policy(负载平衡策略)。这实
际上是我们告诉虚拟交换机如何处理出站流量的方式,在标准虚拟交换
机上有4种选择:
1)Route based on the originating virtual port(基于原始虚拟端口的
路由)
2)Route based on IP hash(基于IP散列的路由)
3)Route based on source MAC hash(基于源MAC散列的路由)
4)Use explicit failover order(使用明确的故障切换顺序)
记住,我们不关心入站流量,因为它不在我们的控制之中。流量到
达哪个上联链路由上游交换机决定,虚拟交换机只负责确保它到达目
标。第一个选项Route based on the originating virtual port(基于原始虚拟
端口的路由)是新虚拟交换机的默认选择。虚拟交换机上的每个VM和
VMkernel端口连接到一个虚拟端口。当虚拟交换机接收来自这些对象的
流量,它为虚拟端口分配一个上联链路,并用其进行通信。选中的上联
链路通常不会变化,除非上联链路出现故障、VM电源状态改变或者
VM通过vMotion迁移。
第二个选项Route based on IP hash(基于IP散列的路由)用于和链
路聚合组(LAG,也称作EtherChannel或者Port channel)结合。当流量
进入虚拟交换机,负载平衡策略将在数据包创建一个源和目标IP地址的
散列值。生成的散列值描述了使用的上联链路。
第三个选项Route based on source MAC hash(基于源MAC散列的路
由)和IP散列方法很类似,但是策略只检查以太网帧中的源MAC地址。
老实说,我们很少看到在生产环境中使用这种策略,但是对于嵌套虚拟
化管理器VM很方便,有助于在多条上联链路中平衡嵌套的VM流量。
第四个选项(最后一个选项)Use explicit failover order(使用明确
的故障切换顺序)实际上不进行任何类型的负载平衡,而是使用列表上
的第一个活动(Active)网卡。如果这个网卡失效,则使用列表中的下
一个活动网卡,直到备用(Standby)网卡。记住,如果你选中了明确
故障切换选项,而且虚拟交换机有多条上联链路,在任何时候都只有一
条链路被激活使用。只在必须使用一条链路,而不是在所有链接上负载平衡的情况下,才使用这一策略。
注意 几乎在所有情况下,根据原始虚拟端口路由的策略都更为合
适。除非你发现了大部分流量都通过同一个上联链路发送,其他上联链
路相对空闲的问题,否则不要对奇特的负载平衡策略抱有幻想。记住我
们的格言——最简单的设计往往最好。
在大部分情况下,单个VM不会利用超过一个上联链路。如果你为
虚拟交换机提供一对1Gb以太网上联链路,VM一次仍然只会使用一条
上联链路。这一概念也有例外,比如在VM有多个连接到虚拟交换机的
虚拟NIC,使用IP散列策略,但是这种情况在生产环境中很少见到。
8.7.2 网络故障检测
当网络链路失效(且情况很明确),虚拟交换机会意识到故障,因
为链路状态报告链路离线。这通常可以通过检查是否有人被电缆绊倒,或者错误地拔下线路来验证。在大部分情况下,这一报告就足以满足你
的需求,默认的网络故障检测配置“link status only”(仅链路状态)就够
了。
但是,如果你打算进一步确定网络上的故障,比如超出所连接上游
交换机的范围,该怎么办?这时信标探查能够帮助你。信标探查
(beacon probing)是一个重要的术语,因为它名副其实。虚拟交换机通过其上联链路定期发出信标,看看其他上联链路是否能够“听”到它。
图8.9展示了具有三个上联链路的虚拟交换机示例。当上联链路1发
出一个信标,上联链路2接收而上联链路3没有接收,这是因为上游的聚
合交换机2离线,因此流量无法到达上联链路3。
图8.9 信标探查找到上游交换机故障的示例
你是否觉得好奇,为什么我们使用了有3个上联链路的例子?想象
一下只有两个上联链路,发送信标后另一个上联链路没有听到的情况。
是发送的上联链路有故障,还是接收的上联链路有故障?无从知晓。因
此,你需要至少三个上联链路,才能正常使用信标探查。
注意 信标探查在大部分环境中越来越没有价值,特别是因为融合
基础架构的出现,以及只有2个网卡或者夹层卡的10GbE刀片的使用。
大部分现代数据中心都以冗余方式连接所有服务器和交换机,上游交换
机故障对于网络流量没有影响。这并不是说信标探查没有用武之地,但是应用场景相对少了。而且,当上联链路连接到LAG时,不要开启信标
探查,因为散列算法可能将你的信标转移到错误的上联链路,从而触发
假阳性。
8.7.3 通知交换机
Notify Switches(通知交换机)配置有些神秘。究竟要向交换机发
送什么样的通知?默认情况下,该配置设置为“Yes”,正如我们在此介
绍的,默认设置几乎总是好的。
记住,你的所有上游物理交换机都有一个MAC地址表,用来将端
口映射到MAC地址。这避免了对端口发起洪泛的必要——洪泛
(flood)指的是向流量到达的端口之外的所有端口发送帧(这是帧的目
标MAC地址没有出现在交换机MAC地址表中时必需进行的操作)。
但是,当虚拟交换机上的一个上联链路失效,所有VM开始使用新
的上联链路时,该怎么办?上游物理交换机不知道VM现在使用哪一个
端口,必须诉诸端口洪泛,或者等待VM发送一些流量,以便重新学习
新端口。作为替代,通知交换机选项通过代表VM向上游物理交换机发
送反响地址解析协议(RARP)帧,使上游交换机能够更新其地址表。
这在帧开始从vMotion迁移的VM、新开机的VM或者出现故障且被替换
的上联链路端口之后的VM发出之前完成。这些RARP通知是一种奇妙的方法,说明ESXi主机将发出特殊的更
......
您现在查看是摘要介绍页, 详见PDF附件(19141KB,561页)。





