深入剖析三层交换机的工作过程

工控仪表

18人已加入

描述

  一、第三层交换机的工作原理

  要论述第三层交换机的工作原理,我们可以从传统交换机和路由器的实现原理中入手。简单地说,传统的局域网交换机是从网桥发展来的,属于第二层设备。它是一个可以将发信方源地址与收信方目的地址连接起来的网络设备,该设备可以根据数据单元中的头信息,将来自一个或多个输入端口的信元或帧移动到一个或多个输出端口,完成信息发送过程的交换。显然,第二层交换机的最大好处是数据传输快,因为它仅需要识别数据帧中的MAC地址,而直接根据MAC地址产生选择转发端口的算法又十分简单,非常便于采用ASIC芯片实现。所以,第二层交换的解决方案实际上是一个“处处交换”的廉价方案,虽然也能支持子网划分和广播限制等基本功能,但控制能力较小。

  传统的第三层路由器属于第三层设备,它是根据IP地址寻址和通过路由表路由协议来实现路由功能的。在局域网中的作用主要是路由转发、网络安全和隔离广播等,即在完成子网的网间连接的同时,还可以隔离子网间的广播风暴,可以控制一个网络非法信息进入到另一个网络中。由于在路由转发中,路由器普遍采用的技术是最长匹配方式,而该方式实现起来非常复杂,所以只能利用软件来完成,自然会对网络带来一定的延迟。

  由此可见,传统交换机是同一网络系统中主机之间端口连接的网络设备,传统路由器是同类或异类网络系统中各子网之间连接的网络设备。再来看一下第三层交换机。第三层交换机实际上是将传统交换器与传统路由器结合起来的网络设备,它既可以完成传统交换机的端口交换功能,又可完成部分路由器的路由功能。当然,这种二层设备与三层设备的结合,并不是简单的物理结合,而是各取所长的逻辑结合。

  其中最重要的表现是,当某一信息源的第一个数据流进入第三层交换机后,其中的路由系统将会产生一个MAC地址与IP地址映射表,并将该表存储起来,当同一信息源的后续数据流再次进入第三层交换机时,交换机将根据第一次产生并保存的地址映射表,直接从第二层由源地址传输到目的地址,而不再需要经过第三层路由系统处理,从而消除了路由选择时造成的网络延迟,提高了数据包的转发效率,解决了网间传输信息时路由产生的速率瓶颈。

  如上所述,第三层交换机是将第二层交换机和第三层路由器两者优势结合成一个有机、灵活并可在各层次提供线速性能的整体交换方案。在第三层交换这种集成化结构中所支持的策略管理属性,不仅使第二层与第三层相互关联起来,而且还提供了流量优先化处理、安全以及Trunking、虚拟网和Intranet的动态部署等多种功能。另外,第三层交换的目标也非常明确,即只需在源地址和目的地址之间建立一条更为直接快捷的第二层通路,而不必经过路由器来转发同一信息的每个数据包。

  事实上,第三层交换方案是一个能够支持分类所有层次动态集成的解决方案,虽然这种多层次动态集成也能够由传统路由器和第二层交换机搭载一起完成,但这种搭载方案与采用第三层交换机相比,不仅需要更多的设备配置、更大的空间、更多的布线和更高的成本,而且数据传输性能也要差得多,因为在海量数据传输中,搭载方案中的路由器无法克服传输速率瓶颈。

  二、第三层交换机的优势

  在与一些朋友交谈中,经常会听到类似“既然第三层交换机能实现路由器的功能,那么它会不会取代路由器?”这样的疑问。的确,第三层交换机的技术越来越成熟,应用也越来越普及,在一定范围内,其比路由器有很大的优势,但第三层交换机与路由器还是有很大区别,在局域网领域,第三层交换机具有明显优势。

  1.子网间传输带宽可任意分配 传统路由器的每个串口都可以连接一个子网,而这种通过路由器进行传输的子网速率就会受到接口带宽的直接限制。第三层交换机则不同,它可以把多个端口定义成一个虚拟网(VLAN),把多个端口组成的虚拟网作为虚拟网接口,该虚拟网内的信息可通过组成虚拟网的端口发给第三层交换机,由于端口数可任意指定,子网间的传输带宽便没有限制了。

  2.合理配置信息资源 因利用第三层交换机连接的网络系统,其访问子网内资源速率和访问全局网中资源速率没有区别,子网设置单独服务器便没有什么意义了。这样,直接通过在全局网中来设置服务器群,在保证内联网宽带传输速率的前提下,不仅可以节省费用,利用服务器集群的软硬件资源优势,更可以做到合理配置和管理所有信息资源。这一点是路由器组网很难办到的。

  3.降低成本 在企业网络设计中,由于人们通常只用二层交换机构成同一广播域子网,用路由器进行各子网间的互联,使企业网络形成一个内联网,而路由器的价钱较高,所以支持内联网的企业网络无法在设备上降低成本。目前,人们采用第三层交换机进行内联网络系统设计时,既可以进行任意虚拟子网划分,又可以通过交换机三层路由功能完成子网间的通信,即建立子网与内联子网都可以用交换机完成,大大节省了价格昂贵的路由器。

  4.交换机之间连接灵活 在计算机网络通信设备中,交换机之间是不允许存在任何回路的,而作为路由器,可以采用多条通路(如主备路由)来提高网络的可靠性和负载平衡。为了解决这类矛盾,在第三层交换机中,一方面采用生成树算法来阻塞造成回路的端口,在进行路由选择时,又能依然把阻塞掉的通路作为可以选择的路径来参与路由选择,从而极大地提高了交换机连接的灵活性。

  从上面的介绍可以看出,不管是第二层交换机还是第三层交换机,它们终究总属于网桥类,是数据链路层的设备,第三层交换也只是实现路由器的部份第三层路由功能,使其具有线速转发报文能力。因此,它们都只用于LAN-WAN的连接。路由器则能用于WAN-WAN之间的连接,作用于网络层中的分组交换设备,具有协议交换能力,主要功能是可以解决异构网络之间的数据包的分组转发,这种分组转发原理只是从一条线路上接受输入分组,然后向另一条线路转发,这两条线路可能分属于不同拓扑网络,并采用不同协议,这点又是第三层交换机无法做到的,也是与路由器的主要区别。

  综上所述,第三层交换机非常适应局域网,而路由器可在广域网中尽显英雄本色,也就是说,第三层交换机无法适应网络拓扑各异,传输协议不同的广域网环境。但近年来,随着第三层交换技术的不断发展与创新,第三层交换机的应用已从企业网络环境的骨干层、汇聚层,开始渗透到网络边缘接入层,尤其是小区宽带网络的发展,第三层交换机完全适合放置在小区中心和多个小区的汇聚层位置。所以说,第三层交换机虽然无法替代路由器,但却完全动摇了企业路由器的地位,即在企业内联网络系统,第三层交换机正在取代路由器。

  三、第三层交换机的应用领域

  目前,普遍应用于企业网络中的第三层交换技术,主要是VLAN,因为VLAN打破了传统网络许多固有观念,可使网络结构更加灵活、多变、方便和随心所欲。所谓VLAN就是不需考虑用户的物理位置,而根据信息端的IP地址、用户名等直接与用户联系的特定标志及应用因素就可将用户在逻辑上划分为一个个功能相对独立的工作组,且每个用户主机都连接在一个支持VLAN的交换机端口上,并属于一个VLAN。同一个VLAN中的成员都共享广播,不同VLAN之间的广播信息是相互隔离的。这就相当于将整个网络分割成了多个不同的广播域,从而加强了企业内联网络的管理与维护。因此,第三层交换机最适合于那些无需远程接入或以远程接入为辅的企业内联网络,或者大部分子网系统集中,而只有部分远程接入子网的企业内联网络。

  交换机从诞生到现在已经历了三代。第一代产品是一种由分立电子元件和原语式软件相结合的简单混合体,设备体积大、重量大、功耗高,所需散热风扇功率高、体积大,但性能较差。这样,运行在一个固定内存处理机上的软件系统,虽然在管理和协议功能方面有许多改善,但当用户的日常业务更加依赖于网络,使得网络流量不断增加时,网络设备便成了传输瓶颈。第二代产品的硬件引进了专门用于优化第二层处理的专用集成电路ASIC(Application Specific Integrated Circuit)芯片,体积、功耗和性能都得到了极大改善,并降低了系统的整体成本,这就是传统的第二层交换机。第三代交换机并不是简单地建立在第二代交换设备上,而是在第三层路由、组播及用户可选策略等方面提供了线速性能,在硬件方面也采用了性能与功能更先进的ASIC芯片,也正是我们这个专题中的主题:第三代交换机。

  四、三层交换机的工作过程

  路由器的三层转发主要依靠CPU进行,而三层交换机的三层转发依靠ASIC芯片完成,这就决定了两者在转发性能上的巨大差别。当然,三层交换机并不能完全替代路由器,路由器所具备的丰富的接口类型、良好的流量服务等级控制、强大的路有能力等仍然是三层交换机的薄弱环节。目前的三层交换机一般是通过VLAN来划分二层网络并实现二层交换的,同时能够实现不同VLAN间的三层IP互访。在讨论三层交换机的转发原理之前有必要交代一下不同网络的主机之间互访时的行为:

  (1)源主机在发起通信之前,将主机的IP与目的主机的IP进行比较,如果两者位于同一个网段(用网络掩码计算后具有相同的网络号),那么源主机直接向目的主机发送ARP请求,在收到目的主机的ARP应答后获得对方的物理层(MAC)地址,然后用对方MAC作为报文的目的MAC进行报文发送。位于同一VLAN(网段)中的主机互访时属于这种情况,这时用于互连的交换机作二层交换转发;

  (2)档源主机判断目的主机与主机位于不同的网段时,它会通过网关(Gateway)来递交报文,即发送ARP请求来获取网关IP地址对应的MAC,在得到网关的ARP应答后,用网关MAC作为报文的目的MAC进行报文发送。注意,发送报文的源IP是源主机的IP,目的IP仍然是目的主机的IP。位于不同VLAN(网段)中的主机互访时属于这种情况,这时用于互连的交换机作三层交换转发。

  为了后续讨论的三层交换原理便于理解,这里简单介绍一下三层交换机内部结构,如图1所示:

  三层交换机

  图1 三层交换机硬件结构

  三层交换机内部的两大部分是ASID和CPU,它们的作用分别如下:

  1.ASIC:完成主要的二三层转发功能,内部包含用于二层转发的MAC地址表以及用于IP转发的三层转发表;

  2.CPU:用于转发的控制,主要维护一些软件表项(包括软件路由表、软件ARP表等等),并根据软件表项的转发信息来配置ASIC的硬件三层转发表。当然,CPU本身也可以完成软件三层转发。

  从三层交换机的结构和各部分作用可以看出,真正决定高速交换转发的是ASIC中的二三层硬件表项,而ASIC的硬件表项来源于CPU维护的软件表项。

  下面分别以两种组网情况下主机间的通信来解释三层交换机的转发原理。

  组网1如图2所示,通信的源、目的主机连接在同一台三层交换机上,但它们位于不同VLAN(网段)。对于三层交换机来说,这两台主机都位于它的直连网段内,它们的IP对应的路由都是直连路由。

  三层交换机

  图2 三层转发组网

  图2中标明了两台主机的MAC、IP地址、网关,以及三层交换机的MAC、不同VLAN配置的三层接口IP。当PCA向PCB 发起ICMP请求时,流程如下:(假设三层交换机上还未建立任何硬件转发表项)

  1.PCA首先检查出目的IP地址2.1.1.2(PCB)与自己不在同一个网段,因此它发出请求网关地址1.1.1.1对应MAC的ARP请求;

  2.L3_SW收到PCA的ARP请求后,检查请求报文,发现被请求IP是自己的三层接口IP,因此发送ARP应答并将自己的三层接口MAC(MAC S)包含在其中。同时它还会把PCA的IP 地址与MAC地址对应起来(1.1.1.2《==》MAC A)关系记录到自己的ARP表项中去(因为ARP请求报文中包含了发送者的IP和MAC);

  3.PCA得到网关(L3_SW)的ARP应答后,组装ICMP请求报文并发送,报文的目的MAC = MAC S 、源MAC = MAC A 、源IP=1。1。1。2、目的IP = 2.1.1.2;

  4.L3_SW收到报文后,首先根据报文的源MAC+VID(即VLAN ID)更新MAC地址表。然后,根据报文的目的MAC+VID查找MAC地址表,发现匹配了自己三层接口MAC的表项。这里说明一下,三层交换机为VLAN配置三层接口IP后,会在交换芯片的MAC地址表中添加三层接口MAC+VID的表项,并且为表项的三层转发标志置位。当报文的目的MAC匹配这样的表项以后,说明需要作三层转发,于是继续查找交换芯片的三层表项;

  5。芯片根据报文的目的IP去查找其三层表项,由于之前未建立任何表项,因此查找失败,于是将报文送到CPU去进行软件处理;

  6.CPU根据报文的目的IP去查找其软件路由表,发现匹配了一个直连网段(PCB对应的网段),于是继续查找其软件ARP表,仍然查找失败。然后L3_SW会在目的网段对应的VLAN3的所有端口发送请求地址2.1.1.2对应MAC的ARP请求;

  7.PCB收到L3_SW发送的ARP请求后,检查发现被请求IP是自己的IP,因此发送ARP应答并将自己的MAC(MAC B)包含在其中。同时,将L3_SW的IP与MAC的对应关系(2。1。1。1<==>MAC S)记录到自己的ARP表中去;

  8。L3_SW收到PCB的ARP应答后,将其IP和MAC对应关系(2.1.1.2《==》MAC B)记录到自己的ARP表中去,并将PCA的ICMP请求报文发送给PCB,报文的目的MAC修改为PCB 的MAC(MAC B),源MAC修改为自己的MAC(MAC S)。同时,在交换芯片的三层表项中根据刚才得到的三层转发信息添加表项(内容包括IP、MAC、出口VLAN、出端口等),这样后续的PC A发送PCB的报文就可以通过该硬件三层表项直接转发了;

  9.PCB收到L3_SW转发过来的ICMP请求报文以后,回应ICMP应答给PC A。ICMP应答报文的转发过程与前面类似,只是由于L3_SW在之前已经得到PCA的IP和MAC对应关系了,也同时在交换芯片中添加了相关的三层表项,因此这个报文直接由交换芯片硬件转发给PCA;

  这样,后续的往返报文都经过查MAC表=>查三层转发表的过程由交换芯片直接进行硬件转发了。

  从上述流程可以看书,三层交换正是充分利用了“一次路由(首包CPU转发并建立三层转发硬件表项)、多次交换(后续包芯片硬件转发)”的原理实现了转发性能与三层交换的完美统一。

  下面介绍另一种组网情况的三层转发流程,如图3所示。

  三层交换机

  如图3 三层转发组网2

  图3中标明了两台主机的MAC、IP地址、网关,以及两台三层交换机的MAC、不同VLAN配置的三层接口IP。假设L3_SW1上配置了静态路由:IP route2。1。1。0 255。255。255。0 3。1。1。2;L3_SW2上配置了静态路由:IP route1。1。1。0 255。255。255。0 3。1。1。1。当然,路由信息也可以通过动态路由协议的交互来获得,有关路由的知识请查阅相关文档。

  这种组网情况下的转发过程与图2的组网1情况是类似的,下面的流程讲解中降省略部分前面已经分析过的细节问题。当PCA向PCB发起ICMP请求时,流程如下:(假设三层交换机上还未建立任何硬件转发表项)

  1.PC A首先检查出目的IP地址2。1。1。2(PCB)与自己不在同一个网段,因此它通过ARP解析得到网关地址1。1。1。1对应的MAC(MAC S1)。然后,PCA组装ICMP请求报文并发送,报文的目的MAC=MAC S1、源MAC=MAC A、源IP=1.1.1.2、目的IP=2.1.1.2;

  2.L3_SW1收到报文后,首先根据报文的源MAC+VID更新MAC地址表。然后,根据报文的目的MAC+VID查找MAC地址表,发现匹配了自己三层接口MAC的表项,于是继续查找芯片的三层转发表;

  3.由于之前未建立任何表项,因此三层转发表查找失败,于是将报文送到CPU去进行软件处理;

  4.CPU根据报文的目的IP去查找其路由软件表,发现匹配路由2。1。1。0/24,其下一跳IP地址为3。1。1。2,于是继续查找3。1。1。2是否有对应的ARP,仍然查找失败。然后L3_SW1在下一跳地址3。1。1。2对应的VLAN4内发起ARP请求,并得到L3_SW2的回应,从而得到I和MAC对应关系(3。1。1。2<==>MAC S2);

  5。L3_SW1将Pc A发出的ICMP请求报文转发给L3_Sw2,报文的目的MAC修改为L3_SW2的MAC(MAC S2),源MAC修改为自己的MAC(MAC S1)。同时,将刚刚用到的转发信息添加到交换芯片的三成转发表中去,包括匹配的网段2。1。1。0/24、下一跳地址的MAC(MAC S2)、出口VLAN、出端口。这样,后续发往2。1。1。2的报文就可以直接通过交换芯片硬件转发了;

  6。L3_SW2收到报文后,与组网1中的处理类似,经过查MAC表=>查三层转发表=>送CPU=>匹配直连路由=>ARP解析=>转发报文同时添加硬件表项的过程,将报文转发给PCB,此时报文的目的MAC修改为PCB的MAC(MAC B),源MAC修改为L3_SW2的MAC(MAC S2)。这样后续发往2。1。1。2的报文就直接由交换芯片硬件转发了;

  7。PCB收到来自PCA的ICMP请求报文后进行ICMP应答。由于在ICMP请求报文转发的过程中,每个网段的两端节点都已经通过ARP解析得到了对方的IP和MAC对应关系,因此应答报文的转发完全由交换芯片完成(查MAC表=>查三层转发表=>发送);

  这样,后续的往返报文都经过查MAC表=>查三层转发表的过程由交换芯片直接进行硬件转发了。

  从上述两种组网情况下的转发流程可以看出,三层交换机的转发具有以下特点:

  1。首包通过CPU转发,同时建立交换芯片硬件表项;后续包由交换芯片直接硬件转发,即常说的“一次路由、多次交换”;

  2。交换芯片的硬件转发并不关心路由的具体下一跳IP地址是多少,硬件三层表项中只包含了目的地址(或网段)、目的IP(或下一跳IP)对应的MAC、出口VLAN、出端口;(这里说明一下,并不是所有的三层交换机的硬件三层表项都会包含“出端口”的。)

  3。IP报文每经过一次三层转发,它的源、目的MAC都会变化,但是源IP、目的IP是始终不变。

  在三层交换转发中,交换芯片(ASIC)起到了至关重要的作用,因此三层交换机的性能和转发特点主要取决于交换芯片的实现机制。在三层交换原理一节中讲解的三层交换原理只是一个大致的转发流程,对于使用了不同交换芯片的三层交换机,其硬件转发过程中的一些细节内容是有所区别的。本节主要就硬件三层表项的结构和查表方式介绍几种不同的实现。

  从前面的描述可以看出,三层转发是必然需要路由信息的,而转发过程中的路由选择决定了报文的最终出口如何,三层交换机只是将这种路由功能整合到交换芯片中去了。路由选择存在精确匹配和最长匹配两种方式,精确匹配即目的IP地址与路由的地址信息必须完全吻合,而最长匹配则是选择所有包含了目的地址的路由中掩码最长的一条。

  早期的三层交换机上,其交换芯片多采用精确匹配的方式,它们的硬件三层表项中只包含其目的IP地址,并不带掩码信息。比如在转发目的IP为2。1。1。2的报文时,通过软件查找匹配了非直路由2。1。1。0/24,那么就将2。1。1。2的转发信息添加到交换芯片中去,如果继续来了目的IP为2。1。1。3的报文需要转发,则需要重新进行软件查找,并在交换芯片中为2。1。1。3增加新的表项。这样的选录方式表项结构对交换芯片的硬件资源要求很高,因为芯片中集成的表项存储空间是有限的,如果要发大量目的IP地址不同的报文那么就需要添加大量的硬件表项。曾经泛滥一时的冲击波病毒,就导致了当时大量的只支持精确匹配的三层交换机资源耗尽。因为冲击波病毒的手段之一就是发送巨数量的网段扫描报文,而多数三层交换机上都配置了缺省路由,这样所有的报文在CPU软件查找都能够找到匹配路由,进而针对每一个病毒报文的目的IP都需要新增硬件表项并迅速将硬件资源满。这样,大部分用户的正常数据流由于转发资源耗尽而得不到高速处理了。

  由于精确匹配方式的三层交换机的这种缺陷,后期的三层交换机增加了对最长匹配方式的支持,即硬件三层表项中可同时包含IP地址和掩码,在查找时遵循最长匹配原则。这种类型的三层交换机,一般在软件路由表建立时就将路由信息添加到硬件三层表中去,包括直连路由和非直连路由。对于直连路由,对应的硬件三层表项的“to CUP”标志位始终置1,报文的目的IP匹配这样的表项被送往CPU处理,CPU软件会在直连网段发送ARP请求,并将获取的ARP信息作为主机路由添加到硬件表项中(对应的“to CUP”标志位置0),这样后续的同样目的IP的报文就直接通过新添加的硬件表项转发了;对于非直连路由,当下一跳地址对应ARP信息还未获得时,对应的硬件三层表项的“to CUP”标志位置1,报文的目的IP匹配这样的表项以后被送往CPU处理,CPU软件会在下一跳地址对应的直连网段发送ARP请求,并使用获取的ARP信息中的下一跳MAC、出口VLAN等信息更新对应的硬件三层表项,然后将其“to CUP”标志位置0,这样后续的目的IP匹配该非直连路由的报文就能够直接通过修改后的硬件表项转发了。

  目前,大多数的三层交换机均能够同时支持精确匹配表项和最长匹配表项,一般来说精确匹配表项对应于软件中的ARP表,最长匹配表项对应于软件中的直连路由和非直连路由。

  在交换机三层转发流程中,曾经提到,硬件三层表项由目的IP(或网段)、目的IP(或下一跳IP)对应MAC、出口VLAN、出端口组成,采用这样表项的三层交换芯片一般直接通过查找三层转发表项就能够完成转发。这种处理机制流程简单、转发效率高,但是也使得CPU软件对硬件表项的配置控制比较复杂,因为每当IP地址对应的MAC和物理端口出现变化,就必须对三层转发表项进行更新。而在交换机上二层信息变化的可能性是比较大的,特别是交换机支持链路聚合、生成树等冗余机制,所以在某些应用环境中CPU不得不经常的对三层转发表进行更新,一旦更新出现问题(特别是出端口错误)必然对转发造成严重的不利影响。

  不过,并不是所有的三层交换机的硬件三层表项都带有出端口信息,部分交换芯片使用的硬件表项只包括目的IP(或网段)、目的IP(或下一跳IP)对应的MAC、出口VLAN,从转发流程上来说有以下变化:根据报文的目的IP查找三层转发表后,只得到了目的IP(或下一跳IP)对应的MAC和出口VLAN;然后继续根据MAC+VID去查找MAC地址表,并最终获得出端口信息,如果查找MAC表失败的话会在出口VLAN进行广播。这样的处理机制虽然增加了芯片处理复杂度,但是流程更加清晰合理,CPU的处理更加简单,因为物理出口的变化只需要反映在MAC地址表中就可以了,硬件三层表项无需频繁更新。

  这两种处理方式的交换芯片各有优势,不同厂商会根据成本、可靠性、产品定位等各方面因素来进行选择,这也使得不同型号的三层交换机在同一应用环境中可能有不同的表现。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分