如今,终端设备接入有线局域网的方式存在着惊人的同质性:对于步入这个行业时间不长的技术人员来说,似乎除了用一根线缆(多为铜线)连接终端设备适配器和二层交换机的某个端口之外,从来没有过其他方法能够把一台个人计算机通过有线的方式连接到以太网当中。这种接入方式的垄断地位,恰恰证明了交换型以太网提供的效率和效益是多年以来其他局域网技术所无法企及的。
然而,这种交换型以太网并不是局域网或以太网最初的形式。无论是交换机,还是通过交换机连接而建立的交换型以太网,它们都是由很多年前一些效率更低的技术演进而来的。这个演进的过程,可以用来佐证交换机与交换型以太网的工作原理和技术优势。
这些内容我们大多都已经在《网络基础》的第1章和第4章中进行过介绍,鉴于本书要在前3章中深入介绍与交换技术相关的知识,因此复习和强化这些知识正是本节的重点。
最初的以太网采用的拓扑结构是总线型拓扑,搭建这个网络的具体做法是将一系列终端设备采用粗同轴电缆连接在一起。因为所有终端都是通过一根同轴电缆相互连接的,所以当多台设备同时发送数据时,这些终端用来描述数据的电信号就会在共享的传输介质上相互叠加干扰。通过《网络基础》第 4 章的学习,我们知道这种发送方数据相互干扰的现象称为冲突,冲突的后果是每个发送方所发送的数据均无法被接收方正确识别,因为接收方无法通过叠加后的电信号还原出发送过来的原始数据,冲突产生的过程如图1-1所示。
注释:
同时发送数据就会造成冲突的设备即处于同一个冲突域(Collision Domain)中。
显然,在这种以太网环境中,要想保证发送方发送的数据能够不受干扰地传送给接收方,必须通过一种机制来确保整个网络在同一时间只有一台设备在发送数据。这个为了避免冲突而诞生的机制称为载波侦听多路访问/冲突检测,简称CSMA/CD,其中MA(多路访问)即指这种多个节点通过竞争的方式共享相同传输媒介的网络通信方式。通过这种通信方式搭建以太网,意味着在这个网络中所有设备都会使用相同的介质来发送数据,同时由某一台设备发送给另一台设备的数据,会被连接到网络中的所有设备接收到,因此这种以太网称为共享型以太网。
图1-1 冲突的产生
集线器(Hub)的问世让星型网络成为流行的以太网物理连接方式。但由于 集线器只会不加区分地将数据向所有连接设备进行转发, 因此用集线器搭建的以太网在数据转发层面上,与同轴电缆以太网那种总线型网络没有任何区别。这种网络依旧没有摆脱共享型以太网的窠臼,因为通过集线器相连的终端设备依旧处于同一个冲突域中,也依旧只能通过CSMA/CD来避免因同时发送数据造成的冲突。在逻辑上,只能将数据盲目转发给(除始发设备之外的)所有连接设备的集线器,只不过集线器取代总线成为这种网络中的新共享介质,而通过集线器搭建的星型拓扑,也更像是一个装在盒子中的总线型网络,如图1-2所示。
图1-2 共享型以太网(就像一个装在盒子中的总线型网络)
在以太网日渐普及的过程中,这种共享型以太网的限制不可避免地被突显出来。随着这种网络连接的终端的增加,多台设备需要同时发送数据的概率也会随之增加,而在共享型以太网中,同时只能有一台设备发送数据,因此共享型以太网的数据传输效率势必会随着网络的规模递减。
这种限制无疑让局域网的可扩展性遭遇了严重的瓶颈。当人们开始越来越多地需要将两个甚至多个局域网互联在一起时,这个问题就体现得淋漓尽致。因为将两个局域网相连势必引入更多的集线器,并且导致合并之后的冲突域规模变得更大,其中也包含更多的终端。
要想突破局域网扩展性方面的限制,就要设法让连接以太网各个节点的设备有能力将节点隔离在不同的冲突域中。于是,一种叫作网桥(Bridge)的设备应运而生,这种拥有两个端口的设备采用了一种不同于集线器的数据转发方式,因此可以将每个端口隔离为一个独立的冲突域,两个冲突域中的设备同时发送数据而不会形成冲突。在网桥问世之后,连接两个局域网的问题暂时得到了解决。
图1-3为用网桥连接两个局域网的示意图。
图1-3 网桥连接两个局域网的环境
如图1-3所示,当终端第一次向网桥发送数据帧时,网桥会记录下数据帧的源MAC地址和接收到这个数据帧的端口,并为它们之间建立对应关系,这样做是为了方便网桥处理后面的数据转发:若网桥发现数据帧的目的MAC地址所对应的端口正是接收这个数据帧的端口,那么网桥就不会对这个数据帧进行转发处理,而是直接将其丢弃。这样一来,在图1-3中的客户端2向客户端3发送数据帧时,只有同一个冲突域中的客户端1和客户端3会接收到客户端2发来的数据帧,当网桥通过端口1接收到数据帧之后,它会查看自己的数据表,发现客户端3所对应的端口也是端口1,于是它就不会将数据帧通过端口2转发出去,所以客户端4、客户端5和客户端6都不会接收到这个数据帧。基于网桥的工作方式,即使在客户端2向客户端3发送数据帧的同时,客户端5也在向客户端6发送数据帧,也不会造成冲突,这就实现了将冲突域隔离在端口的范围内,即 网桥上每个端口所连接的环境单独构成一个冲突域 的目标。
如果在客户端2向客户端3发送数据的同时,客户端6也在向客户端1发送数据,那么网桥在接收到客户端6发送给客户端1的数据时会查询MAC地址表,发现这个以客户端1的MAC地址作为目的MAC地址的数据应该通过自己的端口1转发出去,但端口1通过载波侦听多路访问机制发现自己所在的媒介,即冲突域1信号正忙——这当然是因为客户端2正在给客户端3发送数据,此时,网桥的端口1会将客户端6发送给客户端1 的数据缓存下来,等待自己所连接的媒介空闲之后再将数据发送出去。所以,网桥的工作机制确保了只要发送数据的网络适配器(即网卡或网络接口卡)没有连接在同一个冲突域中(即网桥的同一个端口上),冲突就不会发生。
1990 年,Kalpana 公司推出了第一款带有 7 个端口的网桥,这类多端口网桥被Kalpana公司命名为“交换机(Switch)”。这款交换机产品的名称为EtherSwitch,这个名称实际上就是以太网交换机(Ethernet Switch)的缩合词。自此以后,交换机这种既像集线器一样拥有大量端口,又可以像网桥一样以端口分割冲突域的设备,开始成为组建以太网的新宠。
随着终端设备在办公环境中的普及、网络间互联需求的增加和用户对网络转发效率需求的提高,不仅交换机在网络中的使用日渐频繁并最终取代了低效的集线器成为当今连接有线局域网的不二选择,而且交换机自身的端口数量、功能特性、转发效率,甚至外观都已经和EtherSwitch呈现出了显著的差别。在1.1.2小节中,我们会以一款华为二层交换机为例,对交换机的面板及一些常用性能参数进行说明。
自EtherSwitch问世以来,以太网交换机已经发生了翻天覆地的变化。图1-4所示为一台华为园区网接入层交换机的前面板。
如图1-4所示,交换机前面板中常常包含交换机提供的大多数接口(包括上行接口、下行接口和管理接口[如Console接口])和对应的LED指示灯。此外,有些交换机前面板中也包含电源插头。对于模块化交换机来说,前面板中也会包含模块的插槽。
对于一台交换机来说,它的重要性能参数包括端口的数量与带宽、交换容量、转发性能,以及是否支持PoE+(以太网接口供电技术)等。
图1-4 华为S2700-52P-EI-AC交换机前面板
以图1-4所示的华为S2700-52P-EI-AC交换机为例,它的基本参数见表1-1。
表1-1 华为S2700-52P-EI-AC交换机基本参数
通过表1-1我们可以看出,这台交换机拥有48个下行接口,且这些接口皆为十兆/百兆以太网接口(10/100Base-TX)。同时,这台交换机的上行接口配置有4个千兆SFP端口。SFP端口需要连接SFP模块使用,后者的作用是执行光信号与电信号之间的相互转换,实现光纤线缆对交换机的接入。
表1-1中的交换容量是指整机交换容量,所谓整机交换容量是指交换机内部总线的传输容量。一台交换机所有端口都在工作时,它们的双向数据传输速率之和称为这台交换机的接口交换容量。在设计交换机时,交换机的整机交换容量总是大于交换机的接口交换容量。
以图1-4中的S2700-52P-EI-AC交换机为例,因为这台交换机有48个百兆端口和4个千兆端口,所以它的接口交换容量等于 48×2×100 Mbit/s + 4×2×1000 Mbit/s =17600 Mbit/s = 17.6 Gbit/s。如表1-1第3行所示,华为S2700-52P-EI-AC型交换机的交换容量为32 Gbit/s,大于这台交换机的接口交换容量17.6 Gbit/s。
同理,表1-1中的包转发率是指这台交换机每秒可以转发数据包的数量,即整机包转发率。而一台交换机所有端口都在工作时,它们每秒可以转发的数据包数量之和称为这台交换机的接口包转发率。 通过本系列教程《网络基础》第4章的4.4.2小节(以太网数据帧封装格式)可知,一个以太网数据帧包含数据部分和前导码在内,最小长度为72字节。此外,在传输过程中,每个数据帧还有12字节的数据帧间隙。因此,最小的可传输数据帧长度为84字节,即672比特。在最极端的情况下,如果一个网络中传输的全部都是最小的数据帧,那么1个百兆接口的包转发率为100M/672=0.1488 Mpps,即每秒转发 148809 个数据帧。同理,一个千兆接口的包转发率则为 1000M/672=1.488 Mpps,即每秒转发 1488090 个数据帧,以此类推。所以,我们可以由此计算出S2700-52P-EI-A交换机的接口包转发率为每秒148809×48 + 1488090×4 = 13095192个,即13.1 Mpps。交换机的整机包转发率同样必须大于这台交换机的接口包转发率,如表 1-1 所示,这台交换机的包转发率为 17.7 Mpps,确实大于其接口包转发率13.1Mpps。
除了上述基本参数之外,交换机的其他技术规格参数大都与目前尚未进行介绍的功能特性有关。因此,我们会将这些内容留至介绍这些功能的章节再进行说明。
通过本章的1.1.1小节(共享型以太网与冲突域)学习所知,由于集线器只能将一台物理设备发送过来的信息不加区分地转发给所有它连接的设备,因此使用集线器连接的局域网,尽管在物理上采用的是星型连接,但它仍然拥有总线型连接的所有弊端,这是因为 集线器所连接的设备全都处于同一个冲突域中 。
我们可以通过图1-5再来复习一下使用集线器连接终端的情形:尽管终端1只希望将数据传输给终端3,但由于整个网络通过集线器相连,所有设备处于同一个冲突域中,因此与本次通信无关的终端2和终端4也无法在同时发送信息。这样的网络规模越大,当一台设备需要使用共享资源(即集线器)时,共享资源(即集线器)被占用的概率也就越大。
图1-5 使用集线器连接的以太网
取代集线器的交换机有能力查看数据帧的源和目的MAC地址,并且将数据帧从与目的设备相连的端口转发出去,而不会像集线器那样向不需要这个数据帧的接口发送数据帧。换言之,在使用交换机连接终端设备所组成的星型连接中,交换机的每个接口和它所连的设备之间会构成一个独立的冲突域,网络转发的效率由此得到了极大的提升,而星型拓扑的优越性也因而获得了充分的发挥,如图1-6所示。
图1-6 交换机以端口隔离冲突域形成的交换型以太网
当然,交换机可以通过自己的接口隔离冲突域,并不表示交换型以太网中连接的设备之间只能实现一对一的数据交互。有时,局域网中的一台终端设备确实需要向局域网中的所有其他终端设备发送消息。在《网络基础》的6.3.1小节(地址解析协议)中我们曾经提到,当局域网中的一台设备需要了解同处一个局域网中另一台设备的硬件地址时,这台设备就会以那台设备的IP地址作为目的IP地址,以广播MAC地址FF-FF-FF-FF-FF-FF作为目的MAC地址封装一个ARP请求数据包并发送出去,而交换机在接收到以这样的MAC地址作为目的MAC地址的数据帧时,就会将这个数据帧从所有其他接口发送出去。那么,诸如ARP请求这种 一台设备向同一个网络中所有其他设备发送消息的数据发送方式称为广播(Broadcast),为了实现这种转发方式而以网络层或数据链路层广播地址封装的数据称为广播数据包或广播帧,而广播帧可达的区域则称为广播域(Broadcast Domain) 。广播域有二层广播域和三层广播域,二层广播域是指广播帧可达的范围,我们在这一章只针对二层广播域进行讨论。由于广播可达的区域传统上就是一个局域网的范围,因此一个局域网往往就是一个广播域。
交换机与广播域和冲突域之间的关系如图1-7所示。
注释:
有一点值得注意,那就是交换机并非没有能力分割广播域。实际上,一台交换机可以通过逻辑的方法,按照管理员的配置将自己的接口划分到多个不同的广播域。关于这种技术,我们会在第2章中用一章的篇幅进行详细介绍。
图1-7 广播帧、广播域与冲突域
在《网络基础》6.3.1小节(地址解析协议)中我们介绍MAC地址和IP地址的异同时曾经提到,MAC 地址的扁平结构决定了这类地址难以实现大范围的寻址,而层级化的IP地址更适合用来满足这类需求。关于这一点,我们在本书的第4章中还会继续进行解释说明。这两类地址的区别决定了人们会通过交换机将不同的设备连接成为一个局域网,但是在需要实现网络与网络间的通信时,人们则会使用路由器通过查询IP路由表的方式为往返于不同网络间的数据提供转发服务。
由上介绍可知,一个局域网往往就是一个广播域,因此路由器作为局域网连接其他网络的出口,势必起到了隔离广播域,也就是将广播域的范围限定在局域网之内的效果,如图1-8所示。
通过本小节并结合《网络基础》中曾经提到的内容,我们帮助读者复习了交换型以太网的概念及其与传统共享型以太网之间的区别,借助多张图片再次对冲突、冲突域、广播和广播域的概念进行了解释说明。在1.1.4小节中,为了详细解释交换型以太网的运行方式,我们会在图1-3的基础上,进一步挖掘交换机转发数据的操作方式。
图1-8 使用路由器连接网络
在前文中,我们曾经借助图1-3介绍了网桥转发数据帧的方式,并且解释了这种方式是如何实现以端口隔离冲突域这一设想的。在本小节中,我们会对这部分内容进行扩充,详细解释交换机是如何对数据帧进行转发的。
交换机与网桥的工作原理基本相同。在初始状态下,它的MAC地址表为空,其中并不包含任何条目。每当交换机通过自己的某个接口接收到一个数据帧时,它就会将这个数据帧的源MAC地址、接收到这个数据帧的接口编号作为一个条目保存在自己的MAC地址表中,同时在接收到这个数据帧时重置老化计时器的时间。这就是交换机为自己的MAC 地址表动态添加条目的方式。图1-9所示为交换机将入站数据帧的源MAC地址保存到了自己的MAC地址表中。
图1-9 交换机添加MAC地址条目
在记录了这样一条MAC地址条目后,如果交换机再次通过同一个接口接收到以相同MAC地址为源MAC地址的数据帧,它就会用新的时间来更新这个MAC地址条目,确保这个目前仍然活跃的条目不会老化。但如果交换机在老化时间之内都没有通过这个接口再次接收到这个MAC地址发来的数据帧,它就会将这个老化的条目从自己的MAC地址表中删除。图 1-10 所示为交换机长期没有再次接收到终端 1 发送的数据帧,因此将图 1-9中记录的MAC地址条目进行了删除。
图1-10 MAC地址条目老化
管理员也可以手动在交换机的MAC地址表中添加条目。管理员静态添加的MAC地址条目不仅优先级高于交换机通过自己的接口动态学习到的条目,而且不受老化时间的影响,会一直保存在交换机的MAC地址表中。
在了解了交换机是如何添加、更新和删除MAC地址表条目之后,接下来我们来介绍交换机如何使用自己学习到的MAC地址表条目来指导数据帧的转发操作。
当一台交换机通过自己的某个接口接收到一个单播数据帧时,它会查看这个数据帧的二层头部信息。这样做,一方面是因为交换机需要用数据帧的源 MAC 地址与其他相关信息来填充自己的 MAC 地址表;另一方面也是为了查看数据帧的目的 MAC地址,并且根据数据帧的目的 MAC 地址来查找自己的 MAC 地址表。在查找 MAC 地址表之后,交换机就会根据查找的结果对数据帧进行处理,这可以分为以下 3 种情形。
(1)交换机没有在自己的MAC地址表中找到这个数据帧的目的MAC地址。
由于交换机的MAC地址表中没有记录这个数据帧的目的MAC地址,因此交换机不知道以这个地址作为适配器地址的那台设备连接在自己的哪个接口上,甚至不知道自己目前是否连接了这样一台设备。这让交换机无法对以这个MAC地址作为目的地址的数据帧执行有针对性的转发操作。于是,交换机只能将这个数据帧从除了接收到它的那个接口之外的所有接口泛洪出去,期待这些接口当中也包含了连接有这台设备的那个接口。这个过程如图1-11所示。
图1-11 交换机上找不到目的MAC地址的情形
注释:
上面的描述为交换机处理未知单播数据帧的一般方式,并不排除有些交换机执行某种特殊特性,会直接丢弃未知单播。
(2)交换机的MAC地址表中拥有这个数据帧的目的MAC地址,且其对应的接口并不是接收到这个数据帧的接口。
在这种情况下,交换机确定地知道目的设备连接在自己的哪个接口上,因此交换机会根据MAC地址表中的条目将这个数据帧从与其目的MAC地址相对应的那个端口转发出去,而其他与这台交换机相连的设备则不会接收到这个数据帧。这个过程如图1-12所示。
图1-12 交换机按照MAC地址表执行数据交换
(3)交换机的MAC地址表中拥有这个数据帧的目的MAC地址,且其对应的接口正是接收到这个数据帧的接口
在图1-3所示的环境中,如果客户端1向客户端3发送数据帧,就会出现这种情形。如果出现了这种情况,交换机会认为这个数据帧的目的地址就在这个接口所连接的范围之内,因此目的设备应该已经接收到了这个数据帧。这个数据帧与其他接口的设备无关,没有必要将这个数据帧从其他接口转发出去。于是,交换机会丢弃这个数据帧。这个过程如图1-13所示。
在上面的介绍中,我们对交换机根据MAC地址表转发数据帧的方式进行了详细的介绍。但当今局域网环境的复杂程度远远超过本章中的示例,在更加复杂的需求和环境面前,我们不能仅仅依靠本章中介绍的MAC地址表来解决局域网中的所有问题。在后面几章关于交换的内容中,我们会介绍交换机在面对这些需求和问题时,所提供的更多基本技术与机制。
图1-13 交换机按照MAC地址表丢弃数据帧
在设计企业网络时,对于规模相对不大的局域网,很多机构会采用图 1-14 所示的方法来扩展局域网。
图1-14 采用平面设计的局域网
当网络规模进一步增加时,最常用的做法是采用分层设计(Hierarchical Design),将一个企业园区网按照图1-15所示的方式,划分为以下3个层级,每个层级的交换机均采用星型连接的方式与下一层级的交换机建立连接。
• 核心层 (Core Layer):使用高性能的核心层交换机提供流量快速转发。同时,为了避免单点故障,核心层常常需要部署一定程度的冗余。
• 汇聚层 (Aggregation Layer):也称为分布层(Distribution Layer),这一层的交换机需要将接入层各个交换机发来的流量进行汇聚,并通过流量控制策略,对园区网中的流量转发进行优化。
• 接入层 (Access Layer):为终端设备提供接入和转发。大型园区网往往拥有数量相当庞大的终端设备,所以接入层往往会部署那种端口密度很大的低端二层交换机,其目的纯粹是为了将这些终端设备连接到园区网中。
图1-15 大型分层的企业园区网示意
使用这种三层模型部署园区交换网络,既可以为将来进一步扩展网络提供方便,同时也能够更好地对流量实施管理和控制,还可以将网络的故障隔离在一定的范围内,图1-15所示即为这样的一个分层大型园区局域网。
通过图 1-15 可以看到,在这种大型园区网环境中,终端设备首先与园区网中的接入层交换机相连,之后接入层交换机通过汇聚层交换机、核心层交换机层层连接到与数据网络运营商相连的路由器,这两台路由器则可以通过数据网络运营商连接到远端的分支机构和Internet公共网络环境中。目前院校所搭建的网络,大致都可以抽象成为这样的一个网络环境。当然,也有一些中等规模网络采用的是两层设计方案,即不部署中间的汇聚层,让提供高密度端口连接的接入层交换机直接连接提供高性能流量处理的核心层交换机。关于企业网设计的具体内容,包括各层在功能上的区分,以及不同分层中的设备选型等问题,我们将在后续第 3册教材的第1章中进行深入介绍,这里仅做简单概述。