当前位置: 过滤机 >> 过滤机资源 >> 以太网交换机原理及应用
1.以太网交换机原理
以太网交换机,作为今天我们广为使用的局域网硬件设备,一直为大家所熟悉。它的普及程度其实是由于以太网的广泛使用,作为今天以太网的主流设备,几乎所有的局域网中都会有这种设备的存在。看看以下的拓扑,大家会发现,在使用星型拓扑的情况下,以太网中必然会有交换机的存在,因为所有的主机都是使用电缆集中连接到交换机上从而能够互相连接的:
其实在最早的星型拓扑中,标准的线缆集中连接设备是“HUB(集线器)”,但是集线器存在着:共享带宽、端口间冲突等问题,因为大家都知道,标准的以太网是一个“冲突的网络”,也就是说在一个所谓“冲突域”里面,最多只有两个节点可以互相通讯。而且,虽然集线器有很多端口,但是其内部结构完全是以太网所谓的“总线结构”,也就是说其内部只有一条“线路”来进行通信。如果上图中的设备是集线器的话,举个例子来说,假如端口1和2之间的节点正在通信,其它端口是需要等待的。直接造成的现象也就是,比如端口1和2所连接节点之间传送数据需要10分钟,端口3和4所在的节点在此同时也开始通过此集线器传输数据,互相间冲突,造成大家所需的时间都会变久,时间可能会达到20分钟才能传送完毕。也就是说集线器上互相通讯的端口越多,冲突越严重,传送数据所需的时间越久。
这种问题在小型以太网中并不会造成很大问题,并且可以很好的工作,但是如果网络上的通讯量有增加,或者连接的节点数目很多的时候,“冲突”会严重影响网络的性能,比如我们在第一章中讲解以太网原理的时候就解释过优化“冲突域”的问题,这时候我们需要能够隔离“冲突”的设备,交换机就可以完成这个功能了。
交换机在连接的时候,各个端口之间都可以同时通讯,也就是说端口间是不冲突的,也可以用来隔离冲突。那么,什么样的原理造成交换机可以达成这个能力呢?我们来看看下图:
我们可以发现,交换机内部存在着桥接的环境,理论上每个端口之间都有独立的通路,而不是像集线器一样共享带宽。所以,当1口与2口间正在通讯的时候,3口与4口也可以同时进行通讯。这样一来理论上不会发生冲突,也就是说不会造成效率的降低。因为这个原因,交换机才会在今天非常的普及。
刚才我们说交换机理论上可以让所有端口通讯互不影响,为什么强调理论上呢?因为,事实上出于造价,很少有交换机可以达到我们上图中的所谓“矩阵式交换”的能力,因为大家从图上也可以看到,为了让端口间绝对的存在可利用通路,每个端口都要预留到任何一个端口的线路,这种全矩阵交换机的模型实现起来造价非常昂贵,因为要利用大量的CPU和内存,这种工作方式的交换机动辄要价会达到几十万人民币,普通网络环境根本无法使用。所以造成今天大部分的交换机其实是利用所谓“宽总线式交换”,牺牲带宽来换取造价,其原理如下图:
宽总线式交换机是在交换机主板上预留一条“数据总线”,就像一条大家公用的公路,每个端口都可以利用其其中一部分带宽,假如这个总线带宽为兆的话,也就是说最多同时是允许2组兆端口同时可以通讯,其余端口如果也要通讯还是需要等待的,因为带宽已经分配完毕了。所以,这种方式的设备比较理想工作状态还有一点差距,但是因为几乎不会有普通交换机的端口会都在同时通讯,总会有些端口处在闲置的状态,所以满足绝大部分的网络要求是可以满足的。因此,交换机有一项性能参数,叫做“交换容量”,也叫做“背板带宽”,指的是“交换机可以同时进出所有端口数据量的总合”,其实也就是数据的吞吐能力。
当然,处在网络核心的一些交换机对这个参数是有要求的。大家不妨考虑下这种状况:某台核心交换机用16个千兆端口连接16栋楼宇内的交换机,这台交换机绝对会要求16个端口同时通信,并可能带宽达到饱和状态,也就是说它需要至少16G的交换总容量,才能满足网络需求,这也是我们以后选择交换机交换容量的一种参考。同时我们还要为未来升级预留扩展,那么为其准备1倍的升级空间,即此设备最好有32G的交换总容量。为了让大家对交换机的这个能力有个印象,我们举一些例子,如一般厂商的系列交换机中,低端部门工作组级交换机的交换容量一般是2G左右,汇聚层设备一般为20G左右,核心设备从30G到G不等。
交换机同时还支持全双工,有学习、过滤和转发的工作原理来优化工作环境,那么什么是“学习、过滤和转发”呢?我们来看下图
在图中,如果设备是集线器的话,PC1想要寻找PC2并进行通讯,会经历以下过程:首先PC1发送的寻址请求(目标地址是PC2的MAC地址)会交由集线器设备,设备会在所有的端口“广播”,也就是发送寻址广播到所有端口所连接的主机,目标PC2获取到之后发现目标是自己,就回应一个数据给PC1,从而让PC1知道了PC2所在的位置是端口5,并能够进行通讯。
但是很多时候这种广播会消耗一定的网络带宽,交换机在这种寻址过程中的原理和集线器不一样,会经历以下过程:在交换机初始化加电之后,PC1发送的寻址请求(目标地址是PC2的MAC地址)会交由交换机,交换机会在所有的端口“广播”,目标PC2获取到之后发现目标是自己,就回应一个数据给PC1,从而让PC1知道了PC2所在的位置,并能够进行通讯。也就是说初次寻址的时候,其原理还是“广播寻址”
但是,只要有过成功通讯后,交换机会把来源节点的MAC地址和端口对应关系记录在本机的“MAC地址表”中,也就是会把PC1的MAC地址对应端口1的关系记录下来,同理PC2的MAC地址也会记录对应端口5。表项类似:“ba(PC1的MAC地址)=端口1”、“ba(PC2的MAC地址)=端口5”。这就是所谓的“学习”能力。之后,如果PC1又要和PC2通讯,寻找目标PC2的MAC地址的请求会进入交换机,交换机首先会比对自己的“MAC地址表”,发现目标PC2的MAC地址已经在表中存在,也就不会再“广播”寻址,而是凭借端口对应关系,直接从端口1向端口5转发数据,从而减少了网络上的寻址广播。这就是所谓的“转发”。
那么“过滤”呢?既然交换机会“学习”MAC地址和端口的对应关系,并凭借它来“转发”数据,人为的也可以作出一些策略,比如禁止某个地址与端口的转发关系,从而可以“过滤”数据。
从上面我们看到,交换机的名称由来,其实就是所谓数据“转发”过程。这个转发过程其实还有一些差异,主要有:直通式交换式、存储转发式、碎片隔离式三种。
所谓直通式交换,也就是交换机在收到帧后,只要查看到此帧的目的MAC地址,马上凭借MAC地址表向相应的端口转发;这种方式的好处是速度快,转发所需时间短,但问题是可能同时把一些错误的、无用的帧也同时转发向目地端。
所以各大厂商出于形象考虑,大部分设备使用的是存储转发机制,也就是交换机的每个端口被分配到一定的缓冲区(内存空间,一般为64k大),数据在进入交换机后读取完目标MAC地址,凭借MAC地址表掌握到转发关系后,数据会一直在此端口的缓冲区内存储,直到数据填满缓冲区然后一次把所有数据转发到目的,在数据存储在缓冲区期间,交换机会对数据作出简单效验,如果此时发现错误的数据,就不会转发到目地端,而是在这里直接丢弃掉了;当然这种方式可以提供更好的数据转发质量,但是相对的转发所需时间就会比直通交换要长一点。
碎片隔离式也叫改进型直通式交换,利用到直通式的优势就是转发迟延小,同时会检查每个数据帧的长度。因为原理上,每个以太网帧不可能小于64字节,大于字节。如果交换机检查到有小过64字节或大于字节的帧,它都会认为这些帧是“残缺帧”或“超长帧”,那么也会在转发前丢弃掉。这种方式综合了直通交换和存储转发的优势,很多高速交换机会采用,但是并没有存储转发方式来的普及。
以下是这三种方式的比较图:
另外,由于交换机的工作原理和特性,以及今天的普及程度,交换机上还存在着很多的应用技术,如VLAN(虚拟局域网划分)等等,这些技术的实现是我们后面配置调试设备的重点内容。所以其实交换机还分为所谓“智能可网管交换机”和“非网管交换机(也就是普通交换机)”,像类似VLAN这些技术实现是需要通过管理员的配置实施的,所以“非网管交换机”是不能实现交换机上的应用的,当然如果用来连接各个客户端还是没有问题的。
前面我们讲到的原理诸如:交换容量(有些设备叫做背板带宽)、转发方式(存储转发或碎片隔离)等都会出现在设备的说明书或技术说明中,了解这些原理就是为了满足我们日后选择交换机型号的重要依据。
1.1.多层交换原理
前面一节我们讲述的是普通交换机设备,也叫做二层交换机,从OSI模型来讲,二层交换机实现的就是网络的底层连接,所以也就是以太网联网设备,用来实施以太网这种局域网络。而我们也知道局域网的大小是有限制的(节点数目、距离等),如果要把几个局域网络连接在一起,就需要“路由”功能了,而多层交换机(常见的是三层交换机)可以实现“路由”的能力。并且,二层交换机只能识别所谓“以太网帧”这种二层数据类型,不能识别诸如“IP报文”、“IPX数据包”等这些高层数据,如果有高层数据识别应用要求(如基于IP地址的策略)是无法实现的。这时候,多层交换机就是我们的选择了。
首先大家注意一点,多层交换机并不是路由器,因为它上面大部分的端口还是以太网端口(常见双绞线和光纤接口),一般并不能够连接到专用广域网络(如ISDN、Frame-Relay等)。不过由于今天以太网络的普及,大部分的园区网内部是不需要广域网技术的,也就是全部使用以太网来实施,那么在这种网络中使用多层交换机是非常合适的。同时,由于国内ISP(如电信和网通)的接入技术起步晚所以比较新,大部分的场合甚至直接使用以太网接入到INTERNET,所以也可以使用多层交换机。简单点说,如果网络是以太网、又要划分诸如IP子网、实施路由的话,就可以使用多层交换机。
多层交换机今天的使用一样很普遍,那么它二层以太网交换机部分的原理和普通二层交换机并没有差别,有区别的部分是它内部同时还拥有“路由引擎”和高层模块。路由的原理我们在前面有过说明,这里就不做解释了,不过多层交换机的路由速度会比普通的中低端路由器快很多,这个是使用到了所谓“一次选路,多次交换”的原理:
二层交换机的转发速度非常快,是因为其原理是二层以太网设备,数据转发是利用硬件芯片来实施,存在“学习、过滤和转发”原理,数据帧在进入设备后只会读取目标MAC地址,并凭借MAC地址表中的记录快速向目标端口转发,所以转发速度可以达到线速如百兆。但是路由器设备是一般是凭借软件来实现路由数据转发,每个数据包进入路由器端口,路由器会读取其目标网络地址,查看本地路由表,凭借软件路由算法决定数据转发,所以速度永远不会得到太高提升,一般的路由器设备只能达到20兆左右的转发速率。
如何提高路由转发速率呢?各个厂商都宣称拥有一些多层交换技术,其实是大同小异的。基本的工作原理是比如有一组数据要进入交换机准备转发,头一个数据是必须需要经由路由功能,因为现在还不知道这些数据要如何才能寻找路径到达目标,所以第一个数据包会经由路由计算,发现实际路径是从端口1向端口2转发。路径发现之后,后续的数据包就不需要再进行路由计算了,因为这些包的目的是一致的,所以后续数据会利用交换机的端口转发能力,由端口1高速交换到端口2,这就是所谓的“一次选路(路由),多次交换”,如下图:
大家现在应该了解到为什么多层交换机的转发速度比传统路由器快了吧,多层交换机的应用还不止如此,前面我们也有说到,由于多层交换可以识别到第三层以上的数据包格式,所以可以实施基于三层以上的功能,如IP地址翻译、包过滤防火墙等。在后面的章节我们来描述具体的实施细节。
1.2.交换机电缆和连线
交换机上的端口属于以太网端口,端口类型无非是要配合电缆类型,以我们常见的电缆来讲,基本上有双绞线、光纤两种,所以存在的端口类型有RJ45型,用来配合10BASE-T、BASE-TX、0BASE-T的标准,也就是五类以上双绞线,当然端口速率也就有10兆、兆、0兆几种了。光纤的种类多了一些,有多模(一般为62.5/微米直径)、单模之分(一般9微米直径)之分,端口有SC、ST、MT-RJ几种。
我们来看一下这些端口,以D-LINK的DES-交换机面板为例:
在使用这些电缆的时候有一些距离、带宽等注意事项,下表供大家参考:
双绞线外观如下图:
常见的光纤电缆与接口外观如下:
了解了电缆和连接距离后,我们来看一下如何将交换机连接在一起,目前常用的方式有两种:“级连”和“堆叠”。
首先我们了解一下“级连”,这种方式很好理解,也就是使用网络电缆如双绞线、光纤等在交换机之间连接起来,使用的端口也就是普通的网络接口如RJ45、MT-RJ等。“级连”方式是交换机之间连接的基本方式,绝大部分的交换机间连接都采用这种方式,连接时有一些注意事项:交换机间的距离受限于网络电缆的距离长度要求(指两台交换机之间遵从前面列表中双绞线、光纤等距离长度限制)、交换机“级连”个数理论上不得超过7级(受以太网和交换机原理限制,有经验的管理员不会级连交换机超过7级也就是7个)、未使用“生成树协议”不能在拓扑中将设备中接连成环路(此原理我们在后续章节中详细讲解)。
在使用双绞线级连时,还应当注意直通电缆和交叉电缆的使用,原因是这样的:双绞线虽然从外观上看是一条电缆,但是其实内部有8根线缆每2根绞合,即4对线缆,RJ45接口的针脚线序从1到8中,1、2针脚是1对线缆,3、6针脚是一对线缆,4、5一对、7、8一对,图例如下:
在10/兆网络中,其实只用到2对,即1对用来接收、一对用来发送数据(1、2一对和3、6一对)。而所谓直通电缆,即电缆两端线序完全一致,直通电缆的图例如下:
按EIA/TIAB规范,两端做法完全一交叉电缆的两端收发线序相反,图例如下:
一端EIA/TIAA规范,另一端维持B规范。在连接PC端的网卡到交换机端口时可以直接使用直通电缆,这是因为,交换机端口的线序和PC网卡的线序不一致(A规范和B规范),刚好可以收发对应,也就是说PC网卡的端口1、2一对用来发送,3、6一对用来接收;而交换机的端口1、2一对用来接收,3、6一对用来发送;刚好实现PC网卡端发送交换机端接收,PC网卡端接受交换机端发送。
类似的原理可以查看下图:
另一种情况是,交换机端口间的连接,由于两边端口都是A规范,收发直接对应,就需要我们手动跳线了,也就是所谓的交叉线。图解如下:
当然,如果两端的端口都是PC网卡的接口,两端同样是B规范,也就是说一样需要手动跳线,即使用交叉线连接,这里就不给出图例了。
为了能使用直通线连接两台交换机,绝大部分设备上都有一种叫做“UpLink”的端口,此端口原始的作用是“上连”,但今天大部分国内厂商只使用到了它级连的作用,原理是此端口的线序标准是B,而交换机的普通端口是A,所以可以使用此端口用直通线缆级连交换机。
前面我们描述了很多的原理,对应下来级连交换机时有以下几种情况:
UpLink到另一设备的普通端口,可使用直通线缆。
UpLink到另一设备的UpLink端口,需使用交叉线。
普通端口到普通端口,也需要交叉线。
此外还要注意,处于造价考虑,大部分厂商的UpLink端口和相邻端口有“共用”关系,也就是说比如UpLink与1口相邻,UpLink端口连线后1口就不能使用了,图解如下:
由于光纤尾纤直接就是2条线缆,已有收发之分,一般不会出错,所以这里就不提出了。