二三层交换机与路由器的比较

来源:诚隆伟业      发布时间:2014-5-21       阅读次数:

为了适应网络应用深化带来的挑战,网络在规模和速度方向都在急剧发展,局域网的速度已从最初的10Mbit/s 提高到100Mbit/s,目前千兆以太网技术已得到普遍应用。在网络结构方面也从早期的共享介质的局域网发展到目前的交换式局域网。交换式局域网技术使专用的带宽为用户所独享,极大的提高了局域网传输的效率。可以说,在网络系统集成的技术中,直接面向用户的第一层接口和第二层交换技术方面已得到令人满意的答案。但是,作为网络核心、起到网间互连作用的路由器技术却没有质的突破。在这种情况下,一各新的路由技术应运而生,这就是第三层交换技术:说它是路由器,因为它可操作在网络协议的第三层,是一种路由理解设备并可起到路由决定的作用;说它是交换器,是因为它的速度极快,几乎达到第二层交换的速度。二层交换机、三层交换机和路由器这三种技术究竟谁优谁劣,它们各自适用在什么环境?为了解答这问题,我们先从这三种技术的工作原理入手。

1. 二层交换技术

二层交换机是数据链路层的设备,它能够读取数据包中的MAC地址信息并根据MAC地址来进行交换。交换机内部有一个地址表,这个地址表标明了MAC地址和交换机端口的对应关系。当交换机从某个端口收到一个数据包,它首先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的,它再去读取包头中的目的MAC地址,并在地址表中查找相应的端口,如果表中有与这目的MAC地址对应的端口,则把数据包直接复制到这端口上,如果在表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。二层交换机就是这样建立和维护它自己的地址表。由于二层交换机一般具有很宽的交换总线带宽,所以可以同时为很多端口进行数据交换。如果二层交换机有N个端口,每个端口的带宽是M,而它的交换机总线带宽超过N×M,那么这交换机就可以实现线速交换。

二层交换机对广播包是不做限制的,把广播包复制到所有端口上。

二层交换机一般都含有专门用于处理数据包转发的ASIC (Application specific Integrated Circuit)芯片,因此转发速度可以做到非常快。

2. 路由技术

路由器是在OSI七层网络模型中的第三层——网络层操作的。路由器内部有一个路由表,这表标明了如果要去某个地方,下一步应该往哪走。路由器从某个端口收到一个数据包,它首先把链路层的包头去掉(拆包),读取目的IP地址,然后查找路由表,若能确定下一步往哪送,则再加上链路层的包头(打包),把该数据包转发出去如果不能确定下一步的地址,则向源地址返回一个信息,并把这个数据包丢掉。

路由技术和二层交换看起来有点相似,其实路由和交换之间的主要区别就是交换发生在OSI参考模型的第二层(数据链路层),而路由发生在第三层。这一区别决定了路由和交换在传送数据的过程中需要使用不同的控制信息,所以两者实现各自功能的方式是不同的。

路由技术其实是由两项最基本的活动组成,即决定最优路径和传输数据包。其中,数据包的传输相对较为简单和直接,而路由的确定则更加复杂一些。路由算法在路由表中写入各种不同的信息,路由器会根据数据包所要到达的目的地选择最佳路径把数据包发送到可以到达该目的地的下一台路由器处。当下一台路由器接收到该数据包时,也会查看其目标地址,并使用合适的路径继续传送给后面的路由器。依次类推,直到数据包到达最终目的地。

路由器之间可以进行相互通讯,而且可以通过传送不同类型的信息维护各自的路由表。路由更新信息主是这样一种信息,一般是由部分或全部路由表组成。通过分析其它路由器发出的路由更新信息,路由器可以掌握整个网络的拓扑结构。链路状态广播是另外一种在路由器之间传递的信息,它可以把信息发送方的链路状态及时的通知给其它路由器。

3. 三层交换技术

一个具有第三层交换功能的设备是一个带有第三层路由功能的第二层交换机,但它是二者的有机结合,并不是简单的把路由器设备的硬件及软件简单地叠加在局域网交换机上。

从硬件上看,第二层交换机的接口模块都是通过高速背板/总线(速率可高达几十Gbit/s)交换数据的,在第三层交换机中,与路由器有关的第三层路由硬件模块也插接在高速背板/总线上,这种方式使得路由模块可以与需要路由的其他模块间高速的交换数据,从而突破了传统的外接路由器接口速率的限制。

在软件方面,第三层交换机也有重大的举措,它将传统的基于软件的路由器软件进行了界定,其做法是:

对于数据包的转发:如IP/IPX包的转发,这些 规律的过程通过硬件得以高速实现。

对于第三层路由软件:如路由信息的更新、路由表维护、路由计算、路由的确定等功能,用优化、高效的软件实现。

假设两个使用IP协议的机器通过第三层交换机进行通信的过程,机器A在开始发送时,已知目的IP地址,但尚不知道在局域网上发送所需要的MAC地址。要采用地址解析(ARP)来确定目的MAC地址。机器A把自己的IP地址与目的IP地址比较,彩其软件中配置的子网掩码提取出网络地址来确定目的机器是否与自己在同一子网内。若目的机器B与机器A在同一子网内,A广播一个ARP请求,B返回其MAC地址,A得到目的机器B的MAC地址后将这一地址缓存起来,并用此MAC地址封包转发数据,第二层交换模块查找MAC地址表确定将数据包发向目的端口。若两个机器不在同一子网内,如发送机器A要与目的机器C通信,发送机器A要向“缺省网关”发出ARP包,而“缺省网关”的IP地址已经在系统软件中设置。这个IP地址实际上对应第三层交换机的第三层交换模块。所以当发送机器A对“缺省网关”的IP地址广播出一个ARP请求时,若第三层交换模块在以往的通信过程中已得到目的机器C的MAC地址,则向发送机器A回复C的MAC地址;否则第三层交换模块根据路由信息向目的机器广播一个ARP请求,目的机器C得到此ARP请示后向第三层交换模块回复其MAC地址,第三层交换模块保存此地址并回复给发送机器A。以后,当再进行A与C之间数据包转发进,将用最终的目的机器的MAC地址封装,数据转发过程全部交给第二层交换处理,信息得以高速交换。

第三层交换具有以下突出特点:

有机的硬件结合使得数据交换加速;

优化的路由软件使 得路由过程效率提高;

除了必要的路由决定过程外,大部分数据转发过程由第二层交换处理 ;

多个子网互连时只是与第三层交换模块的逻辑连接,不象传统的外接路由器那样需增加端口,保护了用户的投资。

4. 三种技术的对比

可以看出,二层交换机主要用在小型局域网中,机器数量在二、三十台以下,这样的网络环境下,广播包影响不大,二层交换机的快速交换功能、多个接入端口和低谦价格为小型网络用户提供了很完善的解决方案。在这种小型网络中根本没必要引入路由功能从而增加管理的难度和费用,所以没有必要使用路由器,当然也没有必要使用三层交换机。

三层交换机是为IP设计的,接口类型简单,拥有很强二层包处理能力,所以适用于大型局域网,为了减小广播风暴的危害,必须把大型局域网按功能或地域等因素划他成一个一个的小局域网,也就是一个一个的小网段,这样必然导致不同网段这间存在大量的互访,单纯使用二层交换机没办法实现网间的互访而单纯使用路由器,则由于端口数量有限,路由速度较慢,而限制了网络的规模和访问速度,所以这种环境下,由二层交换技术和路由技术有机结合而成的三层交换机就最为适合。

路由器端口类型多,支持的三层协议多,路由能力强,所以适合于在大型网络之间的互连,虽然不少三层交换机甚至二层交换机都有异质网络的互连端口,但一般大型网络的互连端口不多,互连设备的主要功能不在于在端口之间进行快速交换,而是要选择最佳路径,进行负载分担,链路备份和最重要的与其它网络进行路由信息交换,所有这些都是路由完成的功能。在这种情况下,自然不可能使用二层交换机,但是否使用三层交换机,则视具体情况而下。影响的因素主要有网络流量、响应速度要求和投资预算等。三层交换机的最重要目的是加快大型局域网内部的数据交换,揉合进去的路由功能也是为这目的服务的,所以它的路由功能没有同一档次的专业路由器强。在网络流量很大的情况下,如果三层交换机既做网内的交换,又做网间的路由,必然会大大加重了它的负担,影响响应速度。在网络流量很大,但又要求响应速度很高的情况下由三层交换机做网内的交换,由路由器专门负责网间的路由工作,这样可以充分发挥不同设备的优势,是一个很好的配合。当然,如果受到投资预算的限制,由三层交换机兼做网间互连,也是个不错的选择。

三层交换机分析

什么是三层交换机?在92年,就已经有三层交换机诞生,那么到底什么是三层交换机呢?在早期,人们想把二层交换和三层路由功能结合在一台设备上,以减少 设备数量。那时第三层交换是基于软件的,转发速度很慢,后来才发展到以硬件来实现三层交换。从今天来看,三层交换机实质就是一种特殊的路由器,是一种在性能上侧重于交换(二层和三层),有很强交换能力而价格低廉的路由器。它以ASIC实现IP包的三层交换,其交换能力都在MPPS以上,而传统的路由器一般不超过10万包/秒(这里指的是单块板的转发能力,不是指采用分布式转发情况多块板的总的转发能力,也不包括现在采用昂贵的网络处理器构成的GSR等,此外现在有更高速CPU推出,但也很难超过1MPPS)。网络处理器价格高昂在于它除了三层交换部分本身比较复杂外,它还有很强的QOS,POLICY等功能。以IBM的Rainer处理器为例:它的 硬件可管理上千个流,软件配置不同流的带宽,内嵌 PowerPC 处理器; 拥有大量的协处理器和硬件加速器,可以并行地处理数据。而三层交换机的转发部分为了降低成本,根本不可能线速支持上千个流并有能力进行带宽分配。原来有人有一种观点,那就是用最长匹配实现大路由表查找的CAM很贵,换句话说用硬件来实现大路由表的最长匹配搜索成本很高,从调查资料来看,这种观点看来并不一定对。路由表的搜索采用CAM实现成本也并不高。以 Kawasaki LSI公司的支持最长匹配搜索的的CAM芯片KE5BLME064为例,它支持64K的路由前缀项,每个ENTRY 40bit 宽,包搜索速度可达6.7Mpps,时延为数百个纳秒,而价格不到60美元。当然减少支持的路由表项无疑能降低成本,而且就三层交换机通常的应用环境来看不需要太多的路由表项,因此一般三层交换机支持的路由表项比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万包/秒。

三层交换机现在主要提供以太网接口。以太网技术简单,价格低廉,在企业网里应用最为普遍,三层交换机采用以太网接口,能为企业网提供廉价而高速交换的设备,替代价格高昂而性能却上不去的的路由器。三层交换机的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实现的功能太复杂,太强大,价格很高昂,还是称之为高端路由器更合适。通常的三层交换机之所以被称为交换机就是因为它的功能有限,主要以面向交换为目的,所以才称之为交换机。它的设计主要以面向企业网和城域网而设计的,在这个层面上需求的数量达,对这个层面上的用户而言,在达到满足主要性能的前提下,成本是最重要的考虑因素,它以够用为准则,不强调在三层交换机上实现过多的协议,提供过多根本用不上的功能。例如,在三层交换机上实现很强大的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等其它功能就很弱,这类交换机成本较低,随着网络流的无规则性越来越强,这种技术现在已经较少采用。

另一类是用特别设计的硬件来实现PACKET BY PACKET 查找,它的特点是每一包都要进行查找。例如有的用CAM技术实现转发查找;有的用硬件实现一些特殊的查找算法;有的在ASIC里面还集成CPU来协助硬件查找,以增强灵活性。这类有 CISCO 6000系列的CEF转发,INTEL的express 550T , 3com的基于FIRE体系的CoreBuilder 3500, 9000,NORTEL Accelar1000系列 ,Extreme的Summit1,Summit2等。很多厂家技术太过保密,无从推测它的实现技术。采用这类技术的体系结构差别很大,性能和价格相差也较大,采用这样技术的一般在硬件上都支持少量输入输出队列,有的可以搜索到包的第四层,对QOS,POLICY有一点支持。

 

三层交换机为了达到线处转发的目的,以下几项都要用硬件来实现:

1、检查报文头的有效性,包括长度,校验和版本类型

2、识别输入的TTL信息

3、识别目的地址和下一跳

4、创建新的MAC地址头

5、将TTL计数器减1并更新校验和信息

总之,我们已经看出,实际上三层交换机和路由器并没有绝对的区别,往高端上其技术是融合的。