什么是三层交换机


一、什么是三层交换机
在92年 , 就已经有三层交换机诞生 , 那么到底什么是三层交换机呢?在早期 , 人们想把二层交换和三层路由功能结合在一台设备上 , 以减少 设备数量 。那时第三层交换是基于软件的 , 转发速度很慢 , 后来才发展到以硬件来实现三层交换 。从今天来看 , 三层交换机实质就是一种非凡的路由器 , 是一种在性能上侧重于交换(二层和三层) , 有很强交换能力而价格低廉的路由器 。它以ASIC实现IP包的三层交换 , 其交换能力都在MPPS以上 , 而传统的路由器一般不超过10万包/秒(这里指的是单块板的转发能力 , 不是指采用分布式转发情况多块板的总的转发能力 , 也不包括现在采用昂贵的网络处理器构成的GSR等 , 此外现在有更高速CPU推出 , 但也很难超过1MPPS 【3】) 。网络处理器价格高昂在于它除了三层交换部分本身比较复杂外 , 它还有很强的QOS , POLICY等功能 。以IBM的Rainer处理器为例:它的 硬件可治理上千个流 , 软件配置不同流的带宽 , 内嵌 PowerPC 处理器; 拥有大量的协处理器和硬件加速器 , 可以并行地处理数据 。而三层交换机的转发部分为了降低成本 , 根本不可能线速支持上千个流并有能力进行带宽分配 。原来有人有一种观点 , 那就是用最长匹配实现大路由表查找的CAM很贵 , 换句话说用硬件来实现大路由表的最长匹配搜索成本很高 , 从调查资料来看 , 这种观点看来并不一定对 。路由表的搜索采用CAM实现成本也并不高 。以 Kawasaki LSI公司的支持最长匹配搜索的的CAM芯片KE5BLME064为例 , 它支持64K的路由前缀项 , 每个ENTRY 40bit 宽 , 包搜索速度可达6.7Mpps , 时延为数百个纳秒 , 而价格不到60美元【6】 。当然减少支持的路由表项无疑能降低成本 , 而且就三层交换机通常的应用环境来看不需要太多的路由表项 , 因此一般三层交换机支持的路由表项比GSR要少 , 例如CISCO 4000系列只支持到16K--32K路由表项 , 北电的ACCLER 1000支持32K 。不过CISCO应用在6500系列上的SUPER ENGINES 2已经支持到128K , 已经可以和骨干网路由器的表项相当了 。CISCO设计的转发引擎上支持的路由表越来越大和CISCO考虑到三层交换机往城域网和骨干网上应用有关 。总的来看 , 网络处理器之所以贵 , 应该还是贵在它的灵活性上 , 贵在支持QOS , POLICY , 以及多种协议 , 尤其是有些协议还没有完全形成标准 , 网络处理器可能只需修改软件就可以支持(多数三层交换机就有困难 , 这也导致有很多厂家早期三层交换机与现在的协议不兼容) , 网络处理器要对包内容进行更多的识别 , 更复杂的调度 , 为了达到线速处理 , 里面常集合多个微引擎 , 支持多线程处理 。这些也许才是导致网络处理器价格急剧上升的主要原因 。相比起来三层交换机在这方面能力就很弱 , 例如CISCO 6000系列只支持16个QOS队列 , 4000只支持一个 , 5500支持两个 , 而Extreme的 三层引擎只支持4个队列 。
因为是采用硬件实现三层交换 , 所以交换速度能做到很高 , 但要想同时支持大量三层协议 , 如IP, IPX , AppleTalk, DECnet等等 , 这些协议的封包格式不一样 , 用软件实现起来轻易 , 用硬件实现却非常困难 , 用硬件实现转发的协议太多 , 只会带来成本的急剧上升 , 因此三层交换机上一般只考虑支持较为常用的IP , IPX协议 , IP多播 。也有的三层交换机支持其它的 , 但那是用软件实现的 , 转发速率较低 , 例如 CISCO 的CATALYST 6000系列就在MSFC上用软件实现AppleTalk等 , 转发速率在10万-20万包/秒【4】 。
三层交换机现在主要提供以太网接口 。以太网技术简单 , 价格低廉 , 在企业网里应用最为普遍 , 三层交换机采用以太网接口 , 能为企业网提供廉价而高速交换的设备 , 替代价格高昂而性能却上不去的的路由器 。三层交换机的ASIC同时提供IP的二层和三层交换 , 把原来二层以太网交换机和路由器的功能熔为一体 , 极大的降低了用户的成本 。随着宽带业务的兴起 , 三层交换机的应用范围不断拓展 , 尤其是GE和10G以太网技术的迅速发展 , 导致三层交换机从企业网已经逐步走向了城域网 , 而应用范围的拓展也促进了其设计的革新 。例如原来在三层交换机广泛采用的是CACHE技术 , 在三层交换机往城域网和骨干网上应用时 , 业务流无规则性越来越强 , 网络拓扑变更也有增加 , 因为视频语言业务的增加 , QOS等也有需求 , 采用这种技术的弊病越来越明显;三层交换机在向城域网和骨干网上发展时要求三层交换机需要支持的协议也越来越多 , 如有的厂家三层交换机已经支持OSPF, BGP , MPLS等协议 , 有的甚至采用可编程ASIC,支持IPV6 。
三层交换机上支持的接口种类也越来越多 , 有的已经支持广域网口 , 例如CISCO 6000系列就提供广域网模块 flexWAN , 可提供各种广域网接口 。如ATM , POS , 幀中继,PPP等 。但这部分也是和传统路由器一样 , 用软件来处理的, flexWAN上有两个263M的RM7000处理器来处理这些广域网接口协议 , 接口速度上不去 , 目前只支持到OC-3 ATM或OC-3 POS 。这些广域网接口的适配器和CISCO 7200/7500系列兼容; 但可以肯定 , 假如你想在三层交换机上选用广域网接口 , 那和普通路由器上的广域网接口价格应该差不多 , 因为在接口上采用的技术是一样的 。但这样一来 , 三层交换机导致了一向引以提供广域网接口而作为卖点的诸如CISCO 7000这类路由器就鲜有出路 , 有评论说这类路由器正在走向终结 。
三层交换机一般不支持广域网口还有一个原因就是因为不同的广域网口 , 其MTU可能不一样 , 这样假如要达到线速转发的话 , 就必须在硬件上支持分片 , 这会导致设计很繁琐 , 目前的三层交换机都不支持分片 , 而交换机上全部采用以太网接口就不存在这一问题 。但这些厂家只是为了增强三层交换机的卖点而提供的多种广域网接口和协议模块 , 不能从硬件上就提供二层高速转发 , 而纯利用三层交换机的三层交换交换功能 , 不能充分发挥三层交换机的功能 。增加广域网接口有个好处就是假如三层交换机需要和广域网相连上internet的话 , 就比较灵活 , 不一定在出口处非加一级路由器 , 而目前很多厂家三层交换机对广域网口不支持 , 结果在组网时上连internet都要增加一个路由器 , 当然这里不完全是因为接口的原因 , 还有这些三层交换机支持协议有限 , 例如不支持BGP协议 , 支持的路由表项不足 , 防火墙功能不完善有关系 。
三层交换机根据应用场合分多种档次 , 性能和价格都不一样 , 不能一概而论 。在城域网甚至骨干网上应用的三层交换机 , 要求在三层交换机上增加的功能也多 , 性能的提高伴随着设计复杂度的增大 , 必然带来价格的上升 , 非凡高端的三层交换机实际就和GSR没有区别了 。应该说 , 假如达到这个档次的三层交换机实际已经不能叫三层交换机 , 就象JUNIPER的高端路由器一样 , 它的主要部件都是以ASIC设计的 , 我们称之为三层交换机也不是不可以 , 但它的ASIC实现的功能太复杂 , 太强大 , 价格很高昂 , 还是称之为高端路由器更合适 。通常的三层交换机之所以被称为交换机就是因为它的功能有限 , 主要以面向交换为目的 , 所以才称之为交换机 。它的设计主要以面向企业网和城域网而设计的 , 在这个层面上需求的数量达 , 对这个层面上的用户而言 , 在达到满足主要性能的前提下 , 成本是最重要的考虑因素 , 它以够用为准则 , 不强调在三层交换机上实现过多的协议 , 提供过多根本用不上的功能【5】 。例如 , 在三层交换机上实现很强大的QOS , 支持BGP协议等 , 这些在绝大多数用户那儿实际并没有用处 。在目前国内建设城域网时 , 它实际也不一定要考虑太多QOS , 目前主要还是上NTERNET 。这实际也符合中国的国情 , 就拿视频点播来说 , 在中国租一张碟片只需一两块钱甚至几角钱 , VCD机在城市用户几乎普及 , 有多少人愿意去点播呢?
理解三层交换机的应用范围和要达到低成本的要求 , 就能理解为什么三层交换机在Cos, POLICY等方面功能较弱 , 主要提供以太网口 , 支持有限服务 , 有限协议 , 有限路由功能 。三层交换机主要提供以太网接口 , 各种速率的以太网接口其帧格式都相似 , 很轻易用硬件实现二层的高速转发 , 一般其二层转发功能远远超过三层功能 , 很多三层交换机二层转发能力都在100MPPS , 而三层转发能力只有几个MPPS 。GE和10GE以其低廉的价格 , 为三层交换机在广域网上的应用提供了很好的条件 。
三层交换机在交换网上采用的技术和路由器都一样 , 没有什么差别 。例如CISCO 6500系列就采用CROSS BAR技术 。

二 、三层交换机实现技术分析
提供有限功能的三层交换机其设计难度不是很大 , 目前市场上能提供三层交换机的厂家太多了 , 主要以 3COM、CISCO、Nortel、Intel、LUCent、Cabletron 、foundry 、extreme等厂家为主 。从资料分析来看 , 三层交换技术主要分两大类:一类是以流为基础的 , 这种技术就是早期的CACHE技术 , 一次路由多次交换 , 它的特点是一旦查找一次路由后 , 就把查找结果存放在CACHE里 , 以后同样目的地址的包就不用重新查找 , 直接采用类似二层交换的技术 , 直接转发到目的端口去 。这里和MPLS等一次路由多次交换的技术不要混合 。因为MPLS是基于全网解决的 , 它是指在一个边缘标签路由器上找到目的路由 , 打上路由标签 , 以后经过其它路由器就不用再查找 , 而直接交换 。这里指的是一台路由器上怎么找出路由 。这种方式下路由查找本质还是用软件实现 , 它主要用于局域网中 , 在业务流无规则性较强和网络拓扑变化比较频繁的环境如城域网、骨干网上应用效果不好 , 这类的有CISCO CATALYS 5000系列(尽管它的资料声称它是PACKET BY PACKET转发 , 但资料显示它并非这种方式) , FOUNDRY的NetIron,TurboIron;3com的早期采用Fast IP技术的三层交换机 , 推测CoreBuilder 2500, 6000 应该就是采用这种技术 。由于这种技术的特点 , 要实现QOS等其它功能就很弱 , 这类交换机成本较低【8】 , 随着网络流的无规则性越来越强 , 这种技术现在已经较少采用 。
另一类是用非凡设计的硬件来实现PACKET BY PACKET 查找 , 它的特点是每一包都要进行查找 。例如有的用CAM技术实现转发查找;有的用硬件实现一些非凡的查找算法;有的在ASIC里面还集成CPU来协助硬件查找 , 以增强灵活性 。这类有 CISCO 6000系列的CEF转发 , INTEL的eXPress 550T 【9】 , 3com的基于FIRE体系的CoreBuilder 3500, 9000 , NORTEL Accelar1000系列 , Extreme的Summit1,Summit2等 。很多厂家技术太过保密 , 无从推测它的实现技术 。采用这类技术的体系结构差别很大 , 性能和价格相差也较大 , 采用这样技术的一般在硬件上都支持少量输入输出队列 , 有的可以搜索到包的第四层 , 对QOS , POLICY有一点支持 。
 三层交换机为了达到线处转发的目的 , 以下几项都要用硬件来实现:
 1、检查报文头的有效性 , 包括长度 , 校验和版本类型
 2、识别 输入的TTL信息
 3、识别目的地址和下一跳
 4、创建新的MAC地址头
 5、将TTL计数器减1并更新校验和信息 
总之 , 我们已经看出 , 实际上三层交换机和路由器并没有绝对的区别 , 往高端上其技术是融合的 。