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

为了适应网络应用深化带来的挑战 , 网络在规模和速度方向都在急剧发展 , 局域网的速度已从最初的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地址封装 , 数据转发过程全部交给第二层交换处理 , 信息得以高速交换 。既所谓的一次选路 , 多次交换 。