鸡眼草别名:3层交换、一次路由,多次转发、MLS 二、三、四层交换机的区别。

来源:百度文库 编辑:九乡新闻网 时间:2024/03/28 17:41:56

1.引言

  在今天的网络建设中,新出现的三层交换机已成为我们的首选。它以其高效的性能、优良的性能价格比得到用户的认可和赞许。目前,三层交换机在企业网/校园网建设、智能社区接入等等许多场合中得到了大量的应用,市场的需求和技术的更新推动这种应用向纵深发展。 

  2.传统交换技术

  传统的局域网交换机是一种二层网络设备,它在操作过程中不断收集信息去建立起它本身的一个MAC地址表。这个表相当简单,基本上说明了某个MAC 地址是在哪个端口上被发现的。这样当交换机收到一个以太网包时,它便会查看一下该以太网包的目的MAC地址,核对一下自己的地址表以确认该从哪个端口把包发出去。但当交换机收到一个不认识的包时,也就是说如果目的MAC地址不在MAC地址表中,交换机便会把该包“扩散”出去,即从所有端口发出去,就如同交换机收到一个广播包一样,这就暴露出传统局域网交换机的弱点:不能有效的解决广播、异种网络互连、安全性控制等问题。因此,产生了交换机上的VLAN(虚拟局域网)技术。

  3.第三层交换技术

  三层交换(也称多层交换技术,或IP交换技术)是相对于传统交换概念而提出的。众所周知,传统的交换技术是在OSI网络标准模型中的第二层??数据链路层进行操作的,而三层交换技术在网络模型中的第三层实现了分组的高速转发。简单的说,三层交换技术就是“二层交换技术 + 三层转发”。三层交换技术的出现,解决了局域网中网段划分之后网段中的子网必须依赖路由器进行管理的局面,解决了传统路由器低速、复杂所造成的网络瓶颈问题。

  一个具有三层交换功能的设备,是一个带有第三层路由功能的第二层交换机,但它是两者的有机结合,而不是简单地把路由器设备的硬件及软件叠加在局域网交换机上。我们可以通过以下例子说明三层交换机是如何工作的。

  假设两个使用IP协议的站点A、B通过第三层交换机进行通信,发送站点A在开始发送时,会先拿自己的IP地址与B站的IP地址进行比较,判断B站是否与自己在同一子网内。若目的站B与发送站A在同一子网内,则进行二层的转发。具体步骤如下:为了得到站点B的 MAC地址,站点A首先发一个ARP广播报文,请求站点B的MAC地址。该ARP请求报文进入交换机后,首先进行源MAC地址学习,芯片自动把站点A的MAC地址以及进入交换机的端口号等信息填入到芯片的MAC地址表中,然后在MAC地址表中进行目的地址查找。由于此时是一个广播报文,交换机则会把这个广播报文从进入交换机端口所属的VLAN中进行广播。B站点收到这个ARP请求报文之后,会立刻发送一个ARP回复报文,这个报文是一个单播报文,目的地址为站点A的MAC地址。该包进入交换机后,同样,首先进行源MAC地址学习,然后进行目的地址查找,由于此时MAC地址表中已经存在了A站点MAC地址的匹配条目,所以交换机直接把此报文从相应的端口中转发出去。通过以上一次ARP过程,交换芯片就把站点A和B的信息保存在其MAC地址表中。以后A、B之间进行通信或者同一网段的其它站点想要与A或B通信,交换机就知道该把报文从哪个端口送出。还必须说明的一点是,当查找MAC地址表的时候发现找不到匹配表项,该报文又不是广播或多播报文,此时此报文被称为DLF(Destination Lookup Failure)报文,交换机对此类报文的处理就象对收到一个广播报文处理一样,将此报文从进入端口所属的VLAN中扩散出去。从以上过程可以看出,所有二层转发都是由硬件完成的,无论是MAC地址表的学习过程还是目的地址查找确定输出端口过程都没有软件进行干预。

  下面我们看一下两个站点通过三层交换机实现跨网段通信是怎样一个过程。

  如上例,站点A、B通过三层交换机进行通信。站点A和B所在网段都属于交换机上的直连网段,若站点A和站点B不在同一子网内,发送站A首先要向其“缺省网关”发出ARP请求报文,而“缺省网关”的IP地址其实就是三层交换机上站点A所属VLAN的IP地址。当发送站A对“缺省网关”的IP地址广播出一个ARP请求时,交换机就向发送站A回一个ARP回复报文,告诉站点A交换机此VLAN的MAC地址,同时可以通过软件把站点A的IP地址、MAC地址、与交换机直接相连的端口号等信息设置到交换芯片的三层硬件表项中。站点A收到这个ARP回复报文之后,进行目的MAC地址替换,把要发给B的包首先发给交换机。交换机收到这个包以后,同样首先进行源MAC地址学习,目的MAC地址查找,由于此时目的MAC地址为交换机的MAC地址,在这种情况下将会把该报文送到交换芯片的三层引擎处理。一般来说,三层引擎会有两个表,一个是主机路由表,这个表是以IP地址为索引的,里面存放目的IP地址、下一跳MAC地址、端口号等信息。若找到一条匹配表项,就会在对报文进行一些操作(例如目的MAC与源MAC替换、TTL减1等)之后将报文从表中指定的端口转发出去。若主机路由表中没有找到匹配条目,则会继续查找另一个表??网段路由表。这个表存放网段地址、下一跳MAC地址、端口号等信息。一般来说这个表的条目要少得多,但覆盖的范围很大,只要设置得当,基本上可以保证大部分进入交换机的报文都走硬件转发,这样不仅大大提高转发速度,同时也减轻了CPU的负荷。若查找网段路由表也没有找到匹配表项,则交换芯片会把包送给CPU处理,进行软路由。由于站点B属于交换机的直连网段之一,CPU收到这个IP报文以后,会直接以B的IP为索引检查ARP缓存,若没有站点B的MAC地址,则根据路由信息向B站广播一个ARP请求,B站得到此ARP请求后向交换机回复其MAC地址,CPU在收到这个ARP回复报文的同时,同样可以通过软件把站点B的IP地址、MAC地址、进入交换机的端口号等信息设置到交换芯片的三层硬件表项中,然后把由站点A发来的IP报文转发给站点B,这样就完成了站点A到站点B的第一次单向通信。由于芯片内部的三层引擎中已经保存站点A、B的路由信息,以后站点A、B之间进行通信或其它网段的站点想要与A、B进行通信,交换芯片则会直接把包从三层硬件表项中指定的端口转发出去,而不必再把包交给CPU处理。这种通过“一次路由,多次交换”的方式,大大提高了转发速度。需要说明的是,三层引擎中的路由表项大都是通过软件设置的。至于何时设置、怎么设置并不存在一个固定的标准,我们在此也不详细讨论。一个单波IP报文从进入三层交换机到转发出去一般来说走以下流程:

  通过以上流程我们可以了解报文在交换机中的执行过程,同时我们也可以清楚的看出三层交换机是如何充分把传统交换机和路由器的优势有机的结合在一起。



二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。具体的工作流程如下: 

(1) 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的; 

(2) 再去读取包头中的目的MAC地址,并在地址表中查找相应的端口; 

(3) 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上; 

(4) 如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。 

   不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。 

   从二层交换机的工作原理可以推知以下三点: 

(1) 由于交换机对多数端口的数据进行同时交换,这就要求具有很宽的交换总线带宽,如果二层交换机有N个端口,每个端口的带宽是M,交换机总线带宽超过N×M,那么这交换机就可以实现线速交换; 

(2) 学习端口连接的机器的MAC地址,写入地址表,地址表的大小(一般两种表示方式:一为BEFFER RAM,一为MAC表项数值),地址表大小影响交换机的接入容量; 

(3) 还有一个就是二层交换机一般都含有专门用于处理数据包转发的ASIC (Application specific Integrated Circuit)芯片,因此转发速度可以做到非常快。由于各个厂家采用ASIC不同,直接影响产品性能。 

   以上三点也是评判二三层交换机性能优劣的主要技术参数,这一点请大家在考虑设备选型时注意比较。

(二)路由技术 

   路由器工作在OSI模型的第三层---网络层操作,其工作模式与二层交换相似,但路由器工作在第三层,这个区别决定了路由和交换在传递包时使用不同的控制信息,实现功能的方式就不同。工作原理是在路由器的内部也有一个表,这个表所标示的是如果要去某一个地方,下一步应该向那里走,如果能从路由表中找到数据包下一步往那里走,把链路层信息加上转发出去;如果不能知道下一步走向那里,则将此包丢弃,然后返回一个信息交给源地址。 

   路由技术实质上来说不过两种功能:决定最优路由和转发数据包。路由表中写入各种信息,由路由算法计算出到达目的地址的最佳路径,然后由相对简单直接的转发机制发送数据包。接受数据的下一台路由器依照相同的工作方式继续转发,依次类推,直到数据包到达目的路由器。 

   而路由表的维护,也有两种不同的方式。一种是路由信息的更新,将部分或者全部的路由信息公布出去,路由器通过互相学习路由信息,就掌握了全网的拓扑结构,这一类的路由协议称为距离矢量路由协议;另一种是路由器将自己的链路状态信息进行广播,通过互相学习掌握全网的路由信息,进而计算出最佳的转发路径,这类路由协议称为链路状态路由协议。 

   由于路由器需要做大量的路径计算工作,一般处理器的工作能力直接决定其性能的优劣。当然这一判断还是对中低端路由器而言,因为高端路由器往往采用分布式处理系统体系设计。 

(三)三层交换技术 

   近年来的对三层技术的宣传,耳朵都能起茧子,到处都在喊三层技术,有人说这是个非常新的技术,也有人说,三层交换嘛,不就是路由器和二层交换机的堆叠,也没有什么新的玩意,事实果真如此吗?下面先来通过一个简单的网络来看看三层交换机的工作过程。 


   组网比较简单 

   使用IP的设备A------------------------三层交换机------------------------使用IP的设备B 

   比如A要给B发送数据,已知目的IP,那么A就用子网掩码取得网络地址,判断目的IP是否与自己在同一网段。 

   如果在同一网段,但不知道转发数据所需的MAC地址,A就发送一个ARP请求,B返回其MAC地址,A用此MAC封装数据包并发送给交换机,交换机起用二层交换模块,查找MAC地址表,将数据包转发到相应的端口。 

   如果目的IP地址显示不是同一网段的,那么A要实现和B的通讯,在流缓存条目中没有对应MAC地址条目,就将第一个正常数据包发送向一个缺省网关,这个缺省网关一般在操作系统中已经设好,对应第三层路由模块,所以可见对于不是同一子网的数据,最先在MAC表中放的是缺省网关的MAC地址;然后就由三层模块接收到此数据包,查询路由表以确定到达B的路由,将构造一个新的帧头,其中以缺省网关的MAC地址为源MAC地址,以主机B的MAC地址为目的MAC地址。通过一定的识别触发机制,确立主机A与B的MAC地址及转发端口的对应关 
系,并记录进流缓存条目表,以后的A到B的数据,就直接交由二层交换模块完成。这就通常所说的一次路由多次转发。 

   以上就是三层交换机工作过程的简单概括,可以看出三层交换的特点: 
由硬件结合实现数据的高速转发。 

   这就不是简单的二层交换机和路由器的叠加,三层路由模块直接叠加在二层交换的高速背板总线上,突破了传统路由器的接口速率限制,速率可达几十Gbit/s。算上背板带宽,这些是三层交换机性能的两个重要参数。 

   简洁的路由软件使路由过程简化。 

   大部分的数据转发,除了必要的路由选择交由路由软件处理,都是又二层模块高速转发,路由软件大多都是经过处理的高效优化软件,并不是简单照搬路由器中的软件。 

结论 

   二层交换机用于小型的局域网络。这个就不用多言了,在小型局域网中,广播包影响不大,二层交换机的快速交换功能、多个接入端口和低谦价格为小型网络用户提供了很完善的解决方案。 

   路由器的优点在于接口类型丰富,支持的三层功能强大,路由能力强大,适合用于大型的网络间的路由,它的优势在于选择最佳路由,负荷分担,链路备份及和其他网络进行路由信息的交换等等路由器所具有功能。 

   三层交换机的最重要的功能是加快大型局域网络内部的数据的快速转发,加入路由功能也是为这个目的服务的。如果把大型网络按照部门,地域等等因素划分成一个个小局域网,这将导致大量的网际互访,单纯的使用二层交换机不能实现网际互访;如单纯的使用路由器,由于接口数量有限和路由转发速度慢,将限制网络的速度和网络规模,采用具有路由功能的快速转发的三层交换机就成为首选。 

   一般来说,在内网数据流量大,要求快速转发响应的网络中,如全部由三层交换机来做这个工作,会造成三层交换机负担过重,响应速度受影响,将网间的路由交由路由器去完成,充分发挥不同设备的优点,不失为一种好的组网策略,当然,前提是客户的腰包很鼓,不然就退而求其次,让三层交换机也兼为网际互连。 

   第四层交换的一个简单定义是:它是一种功能,它决定传输不仅仅依据MAC地址(第二层网桥)或源/目标IP地址(第三层路由),而且依据TCP/UDP(第四层) 应用端口号。第四层交换功能就象是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。 

   在第四层交换中为每个供搜寻使用的服务器组设立虚IP地址(VIP),每组服务器支持某种应用。在域名服务器(DNS)中存储的每个应用服务器地址是VIP,而不是真实的服务器地址。 

   当某用户申请应用时,一个带有目标服务器组的VIP连接请求(例如一个TCP SYN包)发给服务器交换机。服务器交换机在组中选取最好的服务器,将终端地址中的VIP用实际服务器的IP取代,并将连接请求传给服务器。这样,同一区间所有的包由服务器交换机进行映射,在用户和同一服务器间进行传输。 

第四层交换的原理 

   OSI模型的第四层是传输层。传输层负责端对端通信,即在网络源和目标系统之间协调通信。在IP协议栈中这是TCP(一种传输协议)和UDP(用户数据包协议)所在的协议层。 

   在第四层中,TCP和UDP标题包含端口号(portnumber),它们可以唯一区分每个数据包包含哪些应用协议(例如HTTP、FTP等)。端点系统利用这种信息来区分包中的数据,尤其是端口号使一个接收端计算机系统能够确定它所收到的IP包类型,并把它交给合适的高层软件。端口号和设备IP地址的组合通常称作“插口(socket)”。 1和255之间的端口号被保留,他们称为“熟知”端口,也就是说,在所有主机TCP/IP协议栈实现中,这些端口号是相同的。除了“熟知”端口外,标准UNIX服务分配在256到1024端口范围,定制的应用一般在1024以上分配端口号. 分配端口号的最近清单可以在RFc1700”Assigned Numbers”上找到。TCP/UDP端口号提供的附加信息可以为网络交换机所利用,这是第4层交换的基础。 

    "熟知"端口号举例: 

     应用协议     端口号 
     FTP        20(数据) 
                  21(控制) 
     TELNET    23 
     SMTP      25 
     HTTP       80 
     NNTP      119 
     NNMP      16 
                  162(SNMP traps) 
   TCP/UDP端口号提供的附加信息可以为网络交换机所利用,这是第四层交换的基础。 

具有第四层功能的交换机能够起到与服务器相连接的“虚拟IP”(VIP)前端的作用。 

   每台服务器和支持单一或通用应用的服务器组都配置一个VIP地址。这个VIP地址被发送出去并在域名系统上注册。 

   在发出一个服务请求时,第四层交换机通过判定TCP开始,来识别一次会话的开始。然后它利用复杂的算法来确定处理这个请求的最佳服务器。一旦做出这种决定,交换机就将会话与一个具体的IP地址联系在一起,并用该服务器真正的IP地址来代替服务器上的VIP地址。 

   每台第四层交换机都保存一个与被选择的服务器相配的源IP地址以及源TCP 端口相关联的连接表。然后第四层交换机向这台服务器转发连接请求。所有后续包在客户机与服务器之间重新影射和转发,直到交换机发现 
会话为止。 

   在使用第四层交换的情况下,接入可以与真正的服务器连接在一起来满足用户制定的规则,诸如使每台服务器上有相等数量的接入或根据不同服务器的容量来分配传输流。 

   如何选用合适的第四层交换 

   a,速度 

   为了在企业网中行之有效,第四层交换必须提供与第三层线速路由器可比拟的性能。也就是说,第四层交换必须在所有端口以全介质速度操作,即使在多个千兆以太网连接上亦如此。千兆以太网速度等于以每秒488000 个数据包的最大速度路由(假定最坏的情形,即所有包为以及网定义的最小尺寸,长64字节)。 

   b,服务器容量平衡算法 


   依据所希望的容量平衡间隔尺寸,第四层交换机将应用分配给服务器的算法有很多种,有简单的检测环路最近的连接、检测环路时延或检测服务器本身的闭环反馈。在所有的预测中,闭环反馈提供反映服务器现有业务量的最精确的检测。 

   c,表容量 

   应注意的是,进行第四层交换的交换机需要有区分和存贮大量发送表项的能力。交换机在一个企业网的核心时尤其如此。许多第二/ 三层交换机倾向发送表的大小与网络设备的数量成正比。对第四层交换机,这个数量必须乘以网络中使用的不同应用协议和会话的数量。因而发送表的大小随端点设备和应用类型数量的增长而迅速增长。第四层交换机设计者在设计其产品时需要考虑表的这种增长。大的表容量对制造支持线速发送第四层流量的高性能交换机至关重要. 

   d,冗余 

   第四层交换机内部有支持冗余拓扑结构的功能。在具有双链路的网卡容错连接时,就可能建立从一个服务器到网卡,链路和服务器交换器的完全冗余系统。 

二、三、四层交换机的区别。

3层交换、一次路由,多次转发、MLS 其实都是一个东西。CEF是比MLS更高级的东西,思科目前的新型交换产品都默认使用基于CEF的MLS了,所以实际上原有的一次路由,多次转发3层交换技术已经开始在渐渐被淘汰了,但搞清楚MLS原理还是有必要的。CEF通过提前构建FIB和邻接表,因此可以实现无需路由,永久交换。有时间我再把CEF整理一下。

另外,网上流传的“一次路由,多次转发”是通过ARP将接收数据的客户机MAC通告给发送数据的客户机,这个说法其实是错误的,不管怎么说发送数据的PC都只知道3层交换的网关MAC,也就是说一次路由,多次转发其后的交换过程,3层交换机仍然是要修改数据包的2层MAC地址的,而不是发送数据的PC在发送数据时就封装上接收PC的目的MAC!即便是CEF也要进行第2层的MAC地址重新封装。

MLS(MultiLayer Switching,多层交换)为交换机提供基于硬件的第三层高性能交换。它采用先进的专用集成电路(ASIC)交换部件完成子网间的IP包交换,可以大大减轻路由器在处理数据包时所引起的过高系统开销。

  MLS是一种用硬件处理包交换和重写帧头,从而提高IP路由性能的技术。Cisco多层交换技术支持所有传统路由协议,而原来由路由器完成的帧转发和重写功能现在已经由交换机的硬件完成。MLS将传统路由器的包交换功能迁移到第三层交换机上。当然,这首先要求交换的路径必须存在。

  MLS由以下三个部分组成:

  1. 多层路由处理器 (MLS-RP) 它相当于网络中的路由器,负责处理每个数据流的第一个数据包,协助MLS交换引擎 (MLS-SE)在第三层的CAM (Content-Addressable Memory)中建立捷径条目(Shortcut Entry)。MLS-RP可以是一个外部的路由器,也可以由三层交换机的路由交换模块(RSM)来实现。

  2. 多层交换的交换引擎 (MLS-SE) 它是负责处理转发和重写数据包功能的交换实体。

  3. 多层交换协议 (MLSP) 它是一个轻型协议,用来通过多层路由处理器 (MLS-RP)对多层交换的交换引擎进行初始化。

  下面以图1所示的网络为例,阐述多层交换实现的步骤。

  第一步:发送MLSP Hello 信息

  当路由器激活后,多层路由处理器每15秒发送一个MLSP Hello包,这些包内含路由器接口所使用的VLAN标识和MAC地址信息。MLS-SE通过这些信息掌握具备多层交换能力的路由器的第二层属性。如果交换机连接了多个MLS-RP,MLS-SE通过为它们的MAC地址分配XTAG值的方法来区分每个MLS-RP的MAC地址条目。如果MLSP帧从同一个 MLS-RP得到所有MAC地址,MLS-SE则为其附加相同的XTAG值,具体如图2所示。这些关联的记录都存放在CAM中。由于Hello包是周期性发送的,所以,这种方法可以保证相关值动态地跟踪网络的变化,并可实现一定的淘汰机制。 Hello包是在第二层发布的,它使用多播地址01-00-0C-DD-DD-DD.

第二步:标识候选包(Candidate Packet)

  在了解具有多层交换能力的路由器的相关地址后,MLS-SE可以对进入交换机的数据包进行匹配判断。对于一个流中的数据包,如果MLS缓存中含有与之匹配的捷径条目,则MLS-SE就旁路路由器而直接转发该数据包;如果MLS中不含与该数据包相匹配的捷径条目,则MLS-SE将它归为候选包,并在缓存中建立部分捷径(Partial shortcut)。这样的包采用传统的第二层交换机处理方式处理,并发往与之相连的路由器接口(网关),具体见图3所示。

  这里要注意,候选包(帧)必须满足两个标准:目标地址经过MLSP所列的路由器接口的一个MAC地址;不存在捷径条目。

  第三步:标识使能包(Enable Packet)

  路由器收到并以传统的方式转发数据包。通过数据包的目标地址路由表得知,这个包应从Fast Ethernet1/0的第二个接口转出,并将包封装为VLAN2帧通过ISL链路送回。具体过程如图4所示。

  此时,路由器已经重写第二层帧的帧头。同时,路由器不仅改写了ISL头的VLAN号,而且也修改了两个MAC 地址域:源MAC改为路由器出口的MAC地址,目标MAC改为主机B的MAC地址。虽然数据包的IP地址未改写,但IP包头的生存时间(TTL)值被减1,故 IP包头的校验和也需要做相应的修改。

这个修改后的数据包称为使能包(Enable Packet),当这个数据包从路由器送出并穿过交换机到达目的地主机B时,要履行下列五个功能:

  第二层交换机根据使能包的目的地MAC地址,知道该数据包应该从PORT3/1口转发出去;

  MLS-SE得知使能包的帧头上源地址是通过Hello过程建立的地址记录之一;

  MLS-SE根据使能包目的IP地址查寻在第二步中建立的部分捷径条目;

  MLS-SE将与使能包源MAC地址相关联的XTAG值和部分捷径条目的对应XTAG值相比较,如果匹配,则表明这个使能包与第二步中的候选包来自同一个路由器;

  MLS-SE完成该捷径条目的建立过程,该捷径记录将包含重写数据流中的后续包帧头所需的所有信息。

  第四步:直接交换(转发)数据流中的后续包

  当后续的数据包被主机A送出后,MLS-SE利用数据包中的目标IP地址查找在第三步建立的完整捷径。地址匹配后,MLS-SE利用重写引擎修改帧头信息,然后直接转发给主机B(数据包不发给路由器)。重写操作修改帧头域,其值同第一个被路由器修改的数据包的域值一样。详见图5所示。这里需要解释的是, NFFC(NetFlow Feature Card)是装备在三层交换机中的网络流性能卡,它维护第三层交换数据包流的交换表(MLS Cache),作为多层交换的交换引擎部分。

  上述这个过程被称为“一次路由,多次交换”。交换机利用专业化硬件ASIC来处理数据包,速度相当快,可以达到100Mbps甚至1000Mbps.