1、交换机技术白皮书一 不同层次上的交换机首先我们对一个很普通的网络结构进行讲解,以大概描述在不同层次上的交换机应该具备的功能;1 接入型 2 层交换机接入型 2 层交换机直接接入用户的 PC 机,为了避免因为办公室内用户的增加而再添加 2 层交换机,办公室内的 2 层交换机最好具备 16 或者 24 个 10/100M以太网接口,然后使用百兆或者千兆以太网接口与汇聚层的 3 层交换机进行连接;从安全上考虑,交换机、路由器并不会产生恶意的数据,为了最大限度的保护用户 PC 的安全,需要网络内的 2 层具备多种功能。比如,如果 2 层交换机不支持广播速率限制功能,那么办公室内的某台 PC 因为出故障
2、或者因为故意的破坏而向交换机发出大量的广播数据,那么这些数据就将会被其它 PC 接收到,从而会浪费其它 PC 大量的 cpu 资源而导致 PC 的速度严重变慢,并且会浪费 2 层交换机与 3 层交换机之间的带宽,导致其它 PC 机上网速度严重下降;再比如,现在网络病毒泛滥,为了保护其它 PC 不受感染,如果在 2 层交换机上使能各种ACL 策略,也可以使其它 PC 受到保护、同时也节约了带宽; 为了管理上的方便,2 层交换机也应该支持可被远程管理;在有些场合,需要对接入的用户进行认证,如果接入交换机不支持认证功能,那么就需要将认证功能交给汇聚层的交换机或者更上层的设备进行,那么未被认证的用户就
3、有可能对其它用户进行恶意的攻击;因此,2 层交换机虽然性能不是很高,然而在网络中,对它的要求也是很高2 层交换机office2 层交换机office3 层交换机核心交换机或路由器的,因为它可以在很大程度上保证网络的正常运行。2 汇聚层 3 层以太网交换机根据网络的大小,汇聚层 3 层以太网交换机的数量上可能不一样,它的功能主要是完成多个子网之间数据的转发(不使用路由器而使用 3 层交换机的原因主要是价格以及转发性能的原因) 。需要 3 层交换机来进行子网间数据转发的原因是:一个 LAN 就是一个广播域,如果不划分多个 LAN,就会导致 LAN 内的广播数据报过多而降低网络的性能,导致 LAN
4、内通信变得很缓慢。从 3 层交换机在网络中的层次以及功能上看,3 层交换机首要的任务是完成多个子网间数据的快速转发、以及 3 层交换机之间的数据转发。不使用 2 层交换机作为汇聚交换机的目的是:随着网络的增大,如果 3 层交换仅仅由核心层设备完成,那么就需要核心层的设备可以带动数量众多的 PC,比如为每个 PC 维护一个 ARP 表项,那么如果网络有 5000 个用户,那么该核心设备就需要至少支持 5000 个 ARP 条目,并且更严重的问题是,每个 PC 机都可能在发送广播数据报(ARP 请求、查找网上邻居等等) ,如果用每台 PC 机每秒产生2 个广播数据报计算,核心层设备每秒种就得处理
5、5000210000 个广播包,这将大大的耗费核心层设备的 CPU 资源,那么用户与核心层设备之间的通信速度将变得很慢、并且延迟很大,如果核心层设备还运行了 OSPF 等路由协议,那么还可能导致网络内路由的振荡。因此汇聚层 3 层交换机还在这方面分担了核心层设备的压力。综上所述,汇聚层设备应该具备较多的接口以便可以接入多个 2 层交换机,它还应该具备 3 层交换的能力并至少应该能够带动一个 1000 台 PC 左右的网络,并且在数据转发上应该是线速的。3 核心层设备核心层设备可以采用核心交换机或者核心路由器来实现,不管是哪种设备,对它的主要要求都是对大量数据快速的转发、维护网络内路由的正确性。
6、因为汇聚层设备与核心层设备的连接线路一般都在千兆,因此,核心层设备应该具备大量的千兆以太网接口。核心层设备同时还需要与外面的 WAN 进行连接,如果核心层设备支持防火墙的功能、就可以直接与 WAN 进行连接,如果没有,那么需要外接防火墙之后再与 WAN 连接。总之,核心层设备需要具备多个高速接口、支持大容量数据的线速转发、运行路由协议来保证网络内的数据转发正确性。二 相关技术原理在前面简单的介绍了各层次上的交换机应该具备的功能,现在对交换机上的一些技术(主要在数据链路层)进行简单的描述。1 VLAN 的概念Vlan 就是指虚拟的 LAN,下面结合图例来解释该概念端口 1 端口 2 端口 3 端
7、口 4 端口 5 端口 6 端口 7 端口 8上面是一个具备 8 个接口的交换机,当端口 1 收到广播数据报时,交换机将把数据转发到端口 27,而用户出于管理的需要,又不希望端口 58 可以接收到来自 14 的数据,那么就只能购买 2 个交换机,1 个接入端口 14 上的 PC,另 1 个接入端口 58 上的 PC;而这就导致 2 个交换机上都有接口闲置。而实现 vlan 功能后,可以在同一个交换机上划分不同的 vlan,位于不同 vlan间的端口不会接收到其它 vlan 的数据(这里所说的不会收到来自其它 vlan 的数据是针对 2 层交换而言) ,就好像这些接口位于没有互连的 2 个交换机
8、上一样。因此,VLAN 功能可以实现端口之间数据的隔离。VLAN 在交换机上的实现方法,可以大致划分为 3 类:(1) 基于端口划分 vlan这种划分 VLAN 的方法是根据以太网交换机的端口来划分,比如将交换机的 14 端口为 VLAN 10,517 为 VLAN 20,1824 为 VLAN 30,当然,这些属于同一 VLAN 的端口可以不连续,如何配置,由管理员决定,如果有多个交换机,例如,可以指定交换机 1 的 16 端口和交换机 2 的 14 端口为同一 VLAN,即同一 VLAN 可以跨越数个以太网交换机,根据端口划分是目前定义 VLAN 的最广泛的方法,IEEE 802.1Q 规
9、定了依据以太网交换机的端口来划分 VLAN 的国际标准。 这种划分的方法的优点是定义 VLAN 成员时非常简单,只要将所有的端口都指定义一下就可以了。它的缺点是如果 VLAN A 的用户离开了原来的端口,到了一个新的交换机的某个端口,那么对交换机就必须重新进行配置。 (2) 基于 MAC 地址划分 vlan这种划分 VLAN 的方法是根据每个主机的 MAC 地址来划分,即对每个MAC 地址的主机都配置他属于哪个组。这种划分 VLAN 的方法的最大优点就是当用户物理位置移动时,即从一个交换机换到其他的交换机时,VLAN 不用重新配置,所以,可以认为这种根据 MAC 地址的划分方法是基于用户的VL
10、AN,这种方法的缺点是初始化时,所有的用户都必须进行配置,如果有几百个甚至上千个用户的话,配置是非常累的。而且这种划分的方法也导致了交换机执行效率的降低,因为在每一个交换机的端口都可能存在很多个VLAN 组的成员,这样就无法限制广播包了。另外,对于使用笔记本电脑的用户来说,他们的网卡可能经常更换,这样,VLAN 就必须不停的配置。(3) 基于子网划分 vlan这种划分 VLAN 的方法是根据每个主机的网络层地址或协议类型(如果支持多协议)划分的,虽然这种划分方法是根据网络地址,比如 IP 地址。它虽然查看每个数据包的 IP 地址,但由于不是路由,所以,没有 RIP,OSPF等路由协议,而是根据
11、生成树算法进行桥交换, 这种方法的优点是用户的物理位置改变了,不需要重新配置所属的VLAN,而且可以根据协议类型来划分 VLAN,这对网络管理者来说很重要,还有,这种方法不需要附加的帧标签来识别 VLAN,这样可以减少网络的通信量。 这种方法的缺点是效率低,因为检查每一个数据包的网络层地址是需要消耗处理时间的(相对于前面两种方法 ),一般的交换机芯片都可以自动检查网络上数据包的以太网祯头,但要让芯片能检查 IP 帧头,需要更高的技术,同时也更费时。当然,这与各个厂商的实现方法有关。 2 2 层交换的实现2 层交换是交换机需要具备的基本功能之一,因此,先对 2 层交换进行简单的介绍。在以太网网络
12、中,每个网络终端(比如 PC 的以太网网卡)都需要具备一个不同于其它终端的标识:MAC 地址;每个网络终端发送的数据都包含有 目的终端的 MAC 地址以及发送者的 MAC 地址;每个网络终端都监听网络上的所有数据,如果目的 MAC 地址为广播地址、或者目的 MAC 地址是自己的 MAC 地址、或者目的 MAC 地址是组播地址并且自己是这个组的成员,那么就需要将该数据发送到自己的 CPU 进行处理,否则就将收到的数据丢弃。交换机对接收到的数据的处理流程为:如果接收到广播数据,那么就将该数据发送到该 VLAN 内除了接收该数据接口外的所有其它端口,以让该 VLAN 内的其余 PC 可以接收到该数据
13、;如果接收到组播数据,首先根据目的 MAC 查找在该 vlan 内是否存在组播条目,如果有,则只向位于该组的成员接口发送(排除掉接收该数据的接口) ;如果不存在相应的组播条目则向该 vlan 内的所有其它接口发送该数据;如果接收到单播数据,那么交换机根据目的 MAC 在该 vlan 内查找是否存在相应的 MAC 条目,如果有,则只向目的端口发送,如果没有,则在 vlan 内广播该数据;不管是接收到哪种类型的数据,交换机都需要进行 MAC 地址学习(学习是通过原 MAC 学习的) ,即在交换机中添加一条 MAC 地址记录,其中包含这个MAC 地址的值、从哪个接口接收到、属于哪个 vlan;MAC
14、 地址学习的目的是为了在转发单播 2 层数据时,可以只发送到特定的端口,而不是向 vlan 内的所有接口广播。3 生成树协议它具有一定的冗余备份作用,下面以一个图例进行说明3 层交换机假设上图中每个 2 层交换机具有 16 个 10/100M 以太网接口,因为 LAN 上有很多 PC,因此使用了 4 个 2 层交换机进行级联之后接入这些 PC;如果只选用上面的一个 2 层交换机的接口与 3 层交换机进行连接,那么如果这根线路出现故障,那么将会导致这 4 个 2 层交换机接入的用户都无法与其它 LAN 进行通信;因此,网络设计者就希望能够采用如上图所示的结构,即采用多个 2 层以太网交换机与3
15、层交换机进行连接,这样假如其中的一个链路发生故障也可以保证用户可以与其它的 LAN 进行通信。但是,这样的拓扑将会导致一个问题,前面已经介绍了 2 层交换的过程,因为 4 个 2 层交换机与 3 层交换机的 2 个接口属于同一个 vlan,因此,只要 2 层交换机 A 接收到 1 个广播数据报,它就会将该数据报发送到其它任何接口,而 5 个交换机组成了一个环,因此交换机 A 就会从其它接口接收到自己以前发送的这个数据,就导致数据报在交换机之间不停的交换、永不停止,随着堆积的数据越来越多,最后交换机之间的连接链路的带宽会被这些数据耗尽,用户就不能与外界进行通信。因此生成树协议就被开发出来解决这种
16、情况的出现,生成树协议运行后,会将环中的某些链路置为 blocking 状态,这个接口就不会再收发数据,从而将环解除,也就不会发生数据在交换机之间永不消失的情况。4 Trunk交换机之间进行数据通信,可以使用网线将交换机之间的 2 个接口互相连接起来实现,比如,用网线一边连接 1 个交换机的百兆接口,但是如果交换机之间需要交换的数据超过 100M(比如是 150M) ,那么超出的数据就会被丢弃,因此,用户就希望可以使用多个接口来在交换机之间进行连接、来使得交换机之间的带宽可以是多个接口速率的和,但是对于交换机而言,在交换机之间使用多个接口进行连接,就会导致广播风暴,而使能生成树协议又会将其中的
17、多个接口设置为 block、而使得只有 1 个接口可以转发数据,也就是说,针对本例而言交换机之间的带宽仍然是 100M。针对此,在交换机上提出了 Trunk 的概念,目的就是将多个接口捆绑起来之后在逻辑上当成一个接口使用,从而提高交换机之间的交换带宽;并且,trunk 还有一个很好的应用,不光是可以增加带宽,还可以用来实现线路冗余备份,下面用图例进行描述:交换机 A 交换机 B图例中,交换机 A 与 B 之间的实际流量是 120M,在交换机 A 与 B 之间使用 2 个百兆以太网接口进行连接以实现交换机之间转发数据不发生丢包现象。假设其中的一条线路发生故障,比如被老鼠咬断,那么交换机之间的流量
18、会通过其余的那跟线路进行转发,从而可以保证交换机之间的通信仍然畅通,于是这 2 跟线路就实现了互相备份的功能。注:trunk 逻辑上是一个接口,因此即使运行生成树协议,也不会将其中的物理线路设置为 block 状态。5 端口镜像交换机大多支持端口镜像功能,它可以让一个接口上接收到的或者发送的数据可以从镜像的端口上发送出来。这个功能的主要目的是为了监测网络上的数据,比如,交换机的一个接口连接了一台 PC 机,管理员当前希望看看这台 PC 机到底发送了什么样的数据,或者交换机发送了什么数据给这个用户,就可以为这个接口配置镜像接口,然后在镜像接口上用专门的截包工具来进行数据分析。6 IEEE802.
19、1Q我们先考虑下面的一种情况:1 1K L其中用户 A 属于 vlan1,用户 B 属于 vlan 2,用户 C 属于 vlan 2,用户 D 属于 vlan 1,交换机 K 使用接口 1 与交换机 L 的接口 1 进行连接;并且我们希望用户 A 与 D 能通信,B 与 C 能通信,但是 A、D 不能与 B、C 通信。我们怎么来实现上面的需求呢?假设把 K 的 1 端口以及 L 的 1 端口都设置为属于 VLAN 1 以及 VLAN 2,以实现 A/B 的数据可以发送到 L(同样,C/D 的数据也可以发送给 K) ,但是,L 收到 K 的数据(比如一个广播数据报)的时候,L 已经不知道数据是从
20、 vlan 1 来的还是 vlan 2 来的,因此在转发时就不知道这个广播数据报发给 C还是发给 D。于是 IEEE802.1Q 被开发出来,当一个接口使能了 IEEE802.1q 后,从这个接口发出的数据报中都带有 VLAN 标识,以让该数据报的接收者知道这个数据报所属于的 VLAN。以上图为例,A 发送给 D 的数据报从交换机 K 发出时,数据报中指明了属于VLAN 1,于是交换机 L 知道这个数据报属于 VLAN 1,然后就将其发送给了 D,就实现了 A 与 D 能够通信,但是 A/D 与 B/C 之间不能通信;注:有的厂商有 Vlan Trunk 的概念,就是说一个接口可以承载多个 v
21、lan 的数据,因此 IEEE802.1Q 是 Vlan Trunk 的一种技术。7 PVIDPVID 是指端口的缺省 vlan id,当交换机的一个接口收到不带 VLAN 标记的数据报时,交换机认为这个数据报就是属于这个 vlan 的,从而在转发该数据时只在这个VLAN 内进行。8 GARPGARP的英文全称是Generic Attribute Registration Protocol,它提供一种通用的属性分发能力,GARP的应用都可以通过GARP来在一个LAN中实现属性的登记与解除登记,因此GARP 只是一个属性的承载与分发协议,具体的属性需要专门的协议来进行定义,目前使用到GARP的协
22、议包括GVRP与GMRP。下面用一个图来简单的讲解一下 GARPBA CD首先图中的左下的交换机收到了属性 A 的声明,于是这个交换机在收到这个声明的端口进行属性登记,然后将转发该声明,于是 LAN3 上的交换机将收到属性 A 的声明,同时进行登记,然后再次转发该属性声明。不难看到,通过这种方法,LAN 上的所有交换机都知道了属性 A 的存在。这其实也就是 GARP 的目的所在,不需要网管的配置而达到网络内所有交换机都知道某个属性的存在。9 GMRPGMRP的英文全称为GARP (Generic Attribute Registration Protocol) Multicast Regist
23、ration Protocol,GMRP提供一种机制来使得同一个LAN 上的桥(bridge )与终端(end station)可以动态的注册(register)组成员信息与解除组成员信息的注册,这样就可以让LAN上的桥(也就是我们所的交换机)收到目的为组的数据时知道发送到哪些接口而不是广播这样的数据,这些就避免了不必要的交换,同时也降低了网络的流量。10 GVRPGVRP 的英文全称为 GARP Vlan Registration Protocol,它也是使用 GARP 协议来实现 VLAN 在 LAN 上的动态登记与解除登记,这样当 LAN 上的一个交换机 A 创建一个 VLAN 之后,能
24、够使 LAN 上的所有交换机都知道这个 VLAN 的存在(并且在这些交换机上也会创建这个 vlan) ,那么其它交换机收到这个 VLAN 的数据报后,就可以把数据报转发到 A 上来。如果不使用 GVRP,那么实现同样的功能就需要对所有的交换机都进行配置,就增加了管理的工作量。不过 GARP 协议本身很耗费资源,安全性也不是很好,所以如果希望网络的拓扑稳定,还是推荐使用静态的配置。11 IEEE802.1x该文档的名称为 Port-based Network Access Control(基于端口的网络接入控制) ,IEEE802.1X 的功能就是提供一种功能来实现对交换机端口的认证机制,如果认
25、证通过,那么这个接口就可以使用;如果认证不通过,那么这个接口收到的数据就会被交换机给丢弃掉。这个功能需要在 PC 机上安装 IEEE802.1x 的客户端软件,然后让客户端软件与交换机进行 IEEE802.1X 协议的通信。IEEE802.1X 是基于端口认证的,因此该功能最好是在直接连接客户的交换机上使能。 。但是网络管理员可能更喜欢集中的认证机制,即用户通过 2 层交换机连接起来,然后再把这些 2 层交换机连接到一个功能强大的交换机,认证功能都由这台交换机实现。我们可以比较一下集中认证与分散认证的优缺点:1 集中认证在配置上简单一些,只需要配置一台设备即可;而分散认证配置就比较麻烦,需要在
26、多个交换机上进行配置,因此工作量大;2 分散认证的好处在于,如果一个用户是非法用户(即通过不了认证) ,那么这个用户就对网络造不成什么影响,这个非法用户的数据不会到达其它交换机或者其它 PC;而集中认证,只是这个非法用户的数据在集中认证交换机处被终结,但是这个非法用户可以对网络造成影响,比如他可以向网络发送大量的垃圾数据报让网络变得很繁忙、从而导致其它用户也不能上网,或者对网络发送病毒而让其它 PC 机被感染。因此可以看见,分散认证在安全性方面要比集中认证要好,而在配置方面则是集中认证好一些,网络管理员可以根据自己的需要进行选择。IEEE802.1X 虽然是基于端口进行认证的,但是目前很多的厂
27、商都将其进行了扩展,让它可以针对 MAC 地址或者 VLAN+MAN 进行认证,目的就是让IEEE802.1X 具备集中认证的能力。12 RSTPRSTP 是指快速生成树,它的提出是因为 STP(标准生成树)的收敛时间比较长(接近 1 分钟) 。假设两台交换机之间通过 2 根链路进行连接,那么通过 STP 的作用,其中的一根链路将会处于 block 状态(即不转发数据) ,而另外一根链路正常的转发数据,当这根转发数据的链路坏掉时(不管是由于什么原因) ,需要几十秒的时间那根处于 block 状态的链路才会进行数据的转发,而这几十秒的时间中,两台交换机之间都不能进行数据转发,用户就会感觉到网络中
28、断(因为用户 PC 机上的所有TCP 连接都将被关闭) ,因此 STP 在网络恢复速度上不很令人满意。RSTP 修改了 STP 的一些相关部分,从而使得链路从 blocking 进入forwarding 状态的时间在几秒钟内实现,这样网络的恢复时间很快,用户对网络中断的感觉就不是很明显。13 2 层交换机、3 层交换机、路由器的区别2 层交换机:2 层交换机只实现 VLAN 内 2 层数据的转发,即收到数据之后通过数据报的目的 MAC 进行转发判断;3 层交换机:除了支持 2 层数据(数据链路层)在同一 vlan 的转发外,还支持不同 VLAN间数据的转发(通过目的 IP 查找路由来实现转发)
29、 ;路由器:路由器只支持 3 层数据转发,不支持 2 层数据的转发。所以,从功能上看,3 层交换机比 2 层交换机以及路由器都要强大一些。14 3 层交换机 2 层交换与 3 层交换的判断标准3 层交换机既然支持 2 层交换与 3 层交换,那么 3 层交换机是如何判别对收到的数据是进行 2 层交换还是 3 层交换呢?下面我们进行一个简单的讲解。当 3 层交换机进行 3 层交换时,对于用户而言,这个 3 层交换机就表现为用户的网关,因此需要为 3 层交换机配置 IP 地址、以及指明子网规模(通过子网掩码获知) ,同时为了能够收到用户的数据,3 层交换机需要有一个物理接口与这个用户位于同一vlan
30、。当用户 A 发送数据给位于同一 VLAN 的用户 B 时,数据报的目的 MAC 地址是B 的 mac 地址, 3 层交换机收到这样的数据报时,通过查找 MAC 地址表,就知道将数据发送到 B,因此只做 2 层交换。当用户 A 发送数据给位于另一个 VLAN 的用户 C 时,数据报的目的 MAC 地址将是网关的 mac 地址(即 3 层交换机为这个 vlan 所指定的 MAC 地址,通过 ARP 告知用户 A) ,3 层交换机收到这样的数据时,发现目的 MAC 地址是自己的 3 层 MAC 地址,于是转入 3 层转发流程,通过查找数据报中的目的 IP 来决定将数据报转发到 C所位于的 VLAN
31、。所以,3 层交换机进行 3 层交换的依据是:收到的数据报的目的 MAC 地址是 3 层交换机在这个 VLAN 上的 3 层 MAC 地址。三 典型组网方案1 小型企业网接入的用户在 600 左右的为小型企业网。对于这种小型网络,我们的组网方案为:在此方案中,把各个办公室划分为独立的 lan 并设置一个单独的子网,使用 2 层交换机来进行接入与汇聚,使用中型 3 层交换机作为核心交换设备来在各个子网间进行数据转发,防火墙运行 NAT 转换后连接到互联网;每个 2 层交换机接入 1020 个用户,并把中型 3 层交换机的每个接口都设置到不同的vlan 之间去,这样做的目的是使各个办公室之间的数据不互相干扰,相应也就提高了每个办公室的上网速度;每个办公室之间的数据都是通过中型 3 层交换机进行 3 层转发的,因为交换机的线速转发性能,办公室之间的数据交换并不会出现丢包现象。图中的 2 层交换机建议使用具有 24 个 10/100M 以太网接口或者更多接口的交换机,这样,当网络升级的时候这些交换机仍然可以使用,如果使用端口数小的 2 层交换机,那么在网络升级时如果不把原有的 2 层交换机扔掉,就会出现太多的 2 层交换机而难于管理与维护。该组网方案中并没有出现汇聚层的设备,因为网络的规模太小,就没有必要了。 2 层交换机互联网2 层交换机 2 层交换机 2 层交换机3 层交换机防火墙