• 文章搜索:
  • 目录

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    交换基础知识

    作者:  |  上传时间:2009-11-16  |  关键字:

     “交换一词最初来源于电话交换,在电话网中使用程控交换机来完成线路的选择和连接,这是一种电路交换技术。本文中的交换是指数据通信领域的数据报交换技术,主要通过储存/转发的方式来完成数据报文的传输。

    根据国际标准化组织(ISO)提出的开放系统互联参考模型(OSI-RM),依据二层(链路层)信息进行数据帧转发的称为二层交换,仅支持二层交换的交换机称为二层交换机;依据三层(网络层)信息进行数据包转发的称为三层交换,支持三层交换的交换机称为三层交换机。本文主要根据以太网互连技术的演进来介绍二、三层交换的相关基础知识。

    1         共享式以太网互连

    以太网采用CSMA/CD机制,这种冲突检测方法使得以太网可以使用共享总线型的连接方式。最初的局域网搭建采用HUB或者同轴电缆将同一网络的主机互连起来,如图1所示。

                                                                                                                                                                          图1 共享式以太网互连

    HUB与同轴电缆都是典型的物理层设备,所有互连的设备位于一个冲突域中,当网络流量较小时,冲突较少发生,利用冲突检测机制已经可以较好的保证通信质量;但是当网络流量增加到一定程度时,将导致冲突不断,网络的吞吐量受到严重影响,数据也可能频繁的由于冲突而被拒绝发送。二层交换机的出现有效的解决了这个问题,大大的减小了冲突域的范围。

    2         二层交换原理

    二层交换机工作在OSI模型的第二层,即数据链路层,它对数据包的转发是建立在链路层信息——MACMedia Access Control )地址基础之上的,它的内部一般使用称为ASICApplication Specific Integrated Circuit )的硬件芯片来实现转发,同时由于是硬件转发,其转发性能非常高。二层交换机不同的端口发送和接收数据独立,各端口属于不同的冲突域,因此有效地隔离了网络中物理层冲突域,使得通过它互连的主机(或网络)之间不必再担心流量大小对于数据发送冲突的影响,典型的组网结构如图2所示。

                                                                                                                                                           图2 多台主机通过二层交换机互连

    由于二层交换机的转发依据是MAC地址,下面先简单介绍一下这个概念。

    2.1        MAC地址简介

    在每个以太网帧的帧头,都包含有一个目的MAC地址和一个源MAC地址,它的作用是标志帧的源节点和目的节点的物理地址。一个MAC地址有48bit6个字节),从应用上可以分为单播地址、组播地址、广播地址:

    (1)              单播地址:第1字节的最低位为0,比如0000-0EF3-0038,一般用于标志唯一的设备;

    (2)              组播地址:第1字节的最低位为1,比如0100-5E00-0001,一般用于标志同属一组的多个设备;

    (3)              广播地址:所有48bit全为1,即FFFF-FFFF-FFFF,它用于标志同一网段中的所有设备。

    在常用的以太网帧结构中,目的、源MAC的位置如图3所示。

       

                                                                                                                                                                       图3 常见的以太网帧结构

    2.2        二层交换基本原理

    二层交换机通过解析和学习以太网帧的源MAC来维护MAC地址与端口的对应关系(保存MAC与端口对应关系的表称为MAC表),通过其目的MAC来查找MAC表决定向哪个端口转发,基本流程如下:

    (1)             二层交换机收到以太网帧,将其源MAC与接收端口的对应关系写入MAC表,作为以后的二层转发依据。如果MAC表中已有相同表项,那么就刷新该表项的老化时间。MAC表表项采取一定的老化更新机制,老化时间内未得到刷新的表项将被删除掉;

    (2)             根据以太网帧的目的MAC去查找MAC表,如果没有找到匹配表项,那么向所有端口转发(接收端口除外);如果目的MAC是广播地址,那么向所有端口转发(接收端口除外);如果能够找到匹配表项,则向表项所示的对应端口转发,但是如果表项所示端口与收到以太网帧的端口相同,则丢弃该帧。

    从上述流程可以看出,二层交换通过维护MAC表以及根据目的MAC查表转发,有效的利用了网络带宽,改善了网络性能。图4是一个二层交换的示例。

                                                                                                                                                                                图4 二层交换示例

    二层交换机的MAC地址老化和刷新通常直接由硬件ASIC芯片来完成,这里顺便介绍一下其通常采用的机制:

    (1)              在芯片中储存的每一个动态添加的MAC地址表项都有一个 1 bit 长度的老化标志,同时芯片有一个老化定时器用于控制地址老化;

    (2)              对于新学习到的MAC地址表项,其老化标志位置1;对于已经学习到的MAC表项,如果后续有报文的源MAC与表项相同,那么将其老化标志位刷新为1

    (3)              每当芯片的老化定时器超时后,将MAC地址表中老化标志位等于1的项目,修改其老化标志位等于0;对于MAC地址表中老化标志位等于0的项目,直接删除。

    在这样的老化更新机制下,MAC地址的实际老化时间并不是精确的,而是一个范围:12倍的老化定时器时间。

    二层交换机虽然能够隔离冲突域,但是它并不能有效的划分广播域。因为从前面介绍的二层交换机转发流程可以看出,广播报文以及目的MAC查找失败的报文会向所有端口转发,当网络中的主机数量增多时,这种情况会消耗大量的网络带宽,并且在安全性方面也带来一系列问题。当然,通过路由器来隔离广播域是一个办法,但是由于路由器的高成本以及转发性能低的特点使得这一方法应用有限。基于这些情况,二层交换中出现了VLAN技术。

    2.3        支持VLAN的二层交换机

    2.3.1       VLAN简介

    VLAN,即Virtual Local Area Network(虚拟局域网),遵循IEEE802.1Q标准,它在原来的以太网帧源MAC字段的后面加入了4个字节的VLAN Tag,这4字节的结构如图5所示。

                                                                                                                                                                          图5 VLAN Tag示意图

    VLAN Tag中各字段的含义如下:

    Type:取固定值0x8100,用于标志VLAN Tag

    User Priority:用户优先级,用于流量的等级划分;

    Flag:该bit在以太网中固定取0

    VLAN-ID:取值为04095,用于标志不同VLAN

    由于不同VLAN之间是二层隔离的,通过将不同的主机划分到不同的VLAN中去,就有效的控制了广播域的范围。我们知道,通常情况下主机发出的报文都是不带VLAN Tag的(称为Untagged报文),那么如何将这样的报文划分到某个VLAN中去呢。VLAN划分的方法有多种,包括基于端口划分、基于MAC划分、基于IP划分、基于协议划分等等。目前,基于端口来划分VLAN是使用最为广泛的,也就是通过收到报文的端口来决定Untagged报文属于哪个VLAN。当Untagged报文进入交换机内部以后,会根据VLAN划分被加上VLAN Tag,然后进行后续转发处理。当然,如果报文本身是带了VLAN Tag的,就直接根据其中的VLAN ID来决定了。图6是一个VLAN应用的示意图。

                                                                                                                                                                          图6 VLAN应用示意图

    6中,两台二层交换机之间的链路一般称为Trunk链路,其上传输的一般都是带VLAN Tag的报文(称为Tagged报文),这样的报文进入交换机以后直接根据其VLAN ID来区分VLAN

    交换机引入VLAN后,带来了以下好处:

    (1)      有效控制广播域范围,广播流量仅在VLAN内转发;

    (2)      配置灵活,虚拟局域网的范围可根据需要随时调整;

    (3)      由于不同VLAN之间二层隔离,带来了更高的安全性。

    有关VLAN的内容这里不再深入讨论,感兴趣的同学可参考其他VLAN相关文档。

    支持VLAN的二层交换机,其二层转发和MAC地址维护方式都发生了一定的变化,下面分别讨论两种不同的MAC地址维护方式的交换机。

    2.3.2       SVL方式的二层交换机

    SVLShared VLAN Learning)方式的二层交换机在学习MAC地址并建立MAC地址表的过程中并不附加VLAN ID,或者说它的MAC地址表是为所有VLAN共享使用的。它的二层转发基本流程如下:

    (1)      根据接收到的以太网帧的源MAC信息添加或刷新MAC地址表项;

    (2)      根据目的MAC信息查找MAC地址表,如果没有找到匹配项,那么在报文对应的VLAN内广播;

    (3)      如果找到匹配项,但是表项对应的端口并不属于报文对应的VLAN,那么丢弃该帧;

    (4)      如果找到匹配项,且表项对应的端口属于报文对应的VLAN,那么将报文转发到该端口,但是如果表项对应端口与收到以太网帧的端口相同,则丢弃该帧。

    这种类型的二层交换机转发与普通二层交换机转发基本相同,只是多了转发过程中的VLAN检查。这样的交换机可能遇到下述问题:位于不同VLAN的主机(或网络设备)具有相同的MAC地址,由于SVL交换机所有VLAN共享一个MAC表,这样对应的MAC表项中端口就会不断的变化,而且两个VLAN的报文转发也会受到影响,这种情况如图7所示。

                                                                                                                                                                      图7 SVL二层交换示意图

    7中,VLAN 10PC A发送给PC B的报文由于MAC地址表查找结果与VLAN不符而被丢弃了;同理,当MAC B学习到PORT 2时,VLAN 20PC DPC C之间的通信就会出现问题。这样,虽然不同的主机被隔离在了不同的冲突域和广播域中,但是MAC地址却可能导致不同VLAN的通信相互影响。

    在实际应用中,SVL方式的二层交换机已经比较少见了。

    2.3.3       IVL方式的二层交换机

    IVLIndependent VLAN Learning)方式的交换机在学习MAC地址并建立MAC地址表的过程中同时附加VLAN ID,同一个MAC地址可以出现在不同的VLAN中,这样的方式也可以理解为每个VLAN都有自己独立的MAC地址表。它的二层转发基本流程如下:

    (1)      根据接收到的以太网帧的源MACVLAN-ID信息添加或刷新MAC地址表项;

    (2)      根据目的MACVLAN-ID查找MAC地址表项,如果没有找到匹配项,那么在VLAN-ID对应的VLAN内广播;

    (3)      如果能够找到匹配表项,则向表项所示的对应端口转发,但是如果表项所示端口与收到以太网帧的端口相同,则丢弃该帧。

    SVL方式交换机上可能遇到的转发问题,在IVL交换机中得以解决,如图8所示。

                                                                                                                                                                        图8 IVL二层交换示意图

    IVL方式的二层交换机转发流程更加清晰,VLAN之间不会互相影响,目前实际应用中的二层交换机大多采用这种方式。

    3         三层交换基本原理

    早期的网络中一般使用二层交换机来搭建局域网,而不同局域网之间的网络互通由路由器来完成。那时的网络流量,局域网内部的流量占了绝大部分,而网络间的通信访问量比较少,使用少量路由器已经足够应付了。通常的组网结构如图9

                                                                                                                                                                 图9 二层交换机+路由器组网

    但是,随着数据通信网络范围的不断扩大,网络业务的不断丰富,网络间互访的需求越来越大,而路由器由于自身成本高、转发性能低、端口数量少等特点无法很好的满足网络发展的需求。我们知道,路由器主要是通过IP转发(三层转发)来实现不同网络间的互连,那么是否能够将交换机的高性能应用到三层转发中去呢?答案是肯定的,三层交换机就是这样一种实现了高速三层转发的设备。大多数三层交换机采用ASIC硬件芯片来完成转发,ASIC芯片内部集成了IP三层转发的功能,包括检查IP报文头、修改存活时间(TTL)参数、重新计算IP头校验和、IP包的数据链路封装等等。三层交换机的组网结构如图10所示。

                                                                                                                                                                    图10 三层交换机组网结构

    路由器的三层转发主要依靠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(网段)中的主机互访时属于这种情况,这时用于互连的交换机作三层交换转发。

    3.1        三层交换机硬件结构

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

       

                                                                                                                                                                    图11 三层交换机硬件结构

    根据图11,三层交换机内部的两大部分是ASICCPU,它们的作用分别如下:

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

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

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

    3.2        三层交换原理

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

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

                                                                                                                                                                           图12 三层转发组网1

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

    (1)             根据前面的描述,PC A首先检查出目的IP地址2.1.1.2PC B)与自己不在同一网段,因此它发出请求网关地址1.1.1.1对应MACARP请求;

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

    (3)             PC A得到网关(L3_SW)的ARP应答后,组装ICMP请求报文并发送,报文的目的MACMAC S、源MACMAC A、源IP1.1.1.2、目的IP2.1.1.2

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

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

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

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

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

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

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

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

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

          

                                                                                                                                                                           图13 三层转发组网2

    13中标明了两台主机的MACIP地址、网关,以及两台三层交换机的MAC、不同VLAN配置的三层接口IP。假设L3_SW1上配置了静态路由:ip route 2.1.1.0 255.255.255.0 3.1.1.2L3_SW2上配置了静态路由:ip route 1.1.1.0 255.255.255.0 3.1.1.1。当然,路由信息也可以通过动态路由协议的交互来获得,有关路由的知识请查阅相关文档。

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

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

    (2)            L3_SW1收到报文后,首先根据报文的源MAC+VID更新MAC地址表。然后,根据报文的目的MACVID查找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对应的VLAN 4内发起ARP请求,并得到L3_SW2的回应,从而得到IPMAC对应关系(3.1.1.2<==>MAC S2);

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

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

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

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

     

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

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

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

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

    3.3        三层交换的其他一些技术细节

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

    3.3.1       三层表项的精确匹配和最长匹配

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

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

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

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

    3.3.2       三层表项的出口信息

    4.2节描述的交换机三层转发流程中,曾经提到,硬件三层表项由目的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地址表中就可以了,硬件三层表项无需频繁更新。

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

    4         结束语

    通过了解交换机的基本转发原理,可以帮助技术人员更深入的理解交换机产品应用特点、更好的进行网络规划、更快的定位网络故障。本文所介绍的只是交换机转发方面的一些基础知识,不同的交换机(芯片)的内部实现细节千差万别,当然也各有优劣,因此更加深入详细的内容还需要针对具体产品的进一步研究。