何晓明
广东省电信公司科学技术研究院
摘 要 分析第三层交换技术基本特征,并深入解析第三层交换技术分类、工作原理及实现方法,比较了两类第三层交换技术报文转发特点。对目前局域网互联中第三层交换机“路由一次,处处交换”或“基于目的MAC地址的第二层交换”这一观点提出质疑。
关键词 第三层交换技术 传统路由器 三层交换机 报文到报文交换 流交换
随着当今网络业务流量呈几何级数爆炸式增长,并且业务流模式改变为更多的业务流跨越子网边界,穿越路由器的业务流也大大增加,传统路由器低速、复杂所造成的网络瓶颈凸现出来。第三层交换技术的出现,很好地解决了局域网中业务流跨网段引起的低转发速率、高延时等网络瓶颈问题。第三层交换设备的应用领域也从最初的骨干层、汇聚层一直渗透到边缘的接入层。第三层交换设备在网络互联中的应用日益普及。然而,人们对第三层交换技术及其设备的理解却存在较大差异。一些专业杂志和科普文摘对第三层交换技术原理的不准确介绍容易引起误导。第三层交换作为新一代局域网路由和交换技术,其产品在体系结构、所实现的功能和性能上都有别于二层以太网交换机和传统路由器。本文分析第三层交换技术的基本特征、分类及实现原理,希望能对人们进一步理解和使用第三层交换设备有所裨益。
1 第三层交换技术基本特征
第三层交换技术也称为IP交换技术。它将第二层交换机和第三层路由器两者的优势结合成为一个有机的整体,是一种利用第三层协议中的信息来加强第二层交换功能的机制,是新一代局域网路由和交换技术。第三层交换技术具有以当前系统1/10的代价获得传输性能于过去10倍的能力。既然第三层交换机能够代替路由器执行传统路由器的大多数功能,它应该具有路由的基本特征。我们知道,路由的核心功能主要包括数据报文转发和路由处理两方面。数据报文转发是路由器和第三层交换机最基本的功能,用来在子网间传送数据报文;路由处理子功能包括创建和维护路由表,完成这一功能需要启用路由协议如RIP或OSPF来发现和建立网络拓扑结构视图,形成路由表。路由处理一旦完成,将数据报文发送至目的地就是报文转发子功能的任务了。报文转发子功能的工作包括检查IP报文头、IP数据包的分片和重组、修改存活时间(TTL)参数、重新计算IP头校验和、MAC地址解析、IP包的数据链路封装以及IP包的差错与控制处理(ICMP)等等。第三层交换也包括一系列特别服务功能,如数据包的格式转换,信息流优先级别划分,用户身份验证及报文过滤等安全服务,IP地址管理,局域网协议和广域网协议之间的转换。当第三层交换机仅用于局域网中子网间或VLAN间转发业务流时可以不执行路由处理,只作第三层业务流转发,这种情况下设备可以不需要路由功能。
由于传统路由器是一种软件驱动型设备,所有的数据包交换、路由和特殊服务功能,包括处理多种底层技术和多种第三层协议几乎都由软件来实现,并可通过软件升级增强设备功能,因而具有良好的扩展性和灵活性。但它也具有配置复杂、价格高、相对较低的吞吐量和相对较高的吞吐量变化等缺点。第三层交换技术在很大程度上弥补了传统路由器这些缺点。在设计第三层交换产品时通常使用下面一些方法:
·削减处理的协议数,常常只对IP;
·只完成交换和路由功能,限制特殊服务;
·使用专用集成电路(ASIC)构造更多功能,而不是采用RSIC处理器之上的软件运行这些功能。
第三层交换产品采用结构化、模块化的设计方法,体系结构具有很好的层次感。软件模块和硬件模块分工明确、配合协调,信息可为整个设备集中保存、完全分布或高速缓存。例如,IP报文的第三层目的地址在帧中的位置是确定的,地址位就可被硬件提取,并由硬件完成路由计算或地址查找;另一方面,路由表构造和维护则可继续由RSIC芯片中的软件完成。总之,第三层交换技术及产品的实现归功于现代芯片技术特别是ASIC技术的迅速发展。
2 第三层交换技术分类、原理及实现方法
目前主要存在两类第三层交换技术:第一类是报文到报文交换,每一个报文都要经历第三层处理(即至少是路由处理),并且数据流转发是基于第三层地址的;第二类是流交换,它不在第三层处理所有报文,而只分析流中的第一个报文,完成路由处理,并基于第三层地址转发该报文,流中的后续报文使用一种或多种捷径技术进行处理,此类技术的设计目的是方便线速路由。理解第三层交换技术的关键首先需要区分这两类报文的不同转发方式。
报文到报文处理方法的一个显著特征是其能够适应路由的拓扑变化。通过运行标准协议并维护路由表,报文到报文交换设备可动态地重新路由报文,绕过网络故障点和拥塞点而无需等待高层的协议检测报文丢失。流交换方法没有这些特征,因为后续报文走捷径而无需第三层处理,这样,它就不能识别标准协议对路由表的改变。因此,流交换方法可能需要另外的协议取得拓扑变化或拥塞信息,以便到达交换系统正确的地方。
2.1 报文到报文交换技术原理及实现方法
报文到报文交换遵循这样一个数据流过程:报文进入系统中OSI参考模型的第一层,即物理接口,然后在第二层接受目的MAC检查,若在第二层能交换则进行二层交换,否则进入到第三层,即网络层。在第三层,报文要经过路径确定、地址解析及某些特殊服务。处理完毕后报文已更新,确定合适的输出端口后,报文通过第一层传送到物理介质上。传统路由器是一种典型的符合第三层报文到报文交换技术的设备,它的完全基于软件的工作机制所产生的固有缺陷已被现代基于硬件的第三层交换设备所克服。
目前各个厂商所提供的第三层交换设备在体系结构上几乎具有相同的硬件结构。
中央硅交换阵列通过CPU接口总线连接CPU模块,通过I/O接口总线连接I/O接口模块,是设备各端口流量汇聚和交换的集中点,由它提供设备各进出端口的并行交换路径,所有跨I/O接口模块的数据流都要通过硅交换阵列进行转发。每个I/O接口模块包含一个或多个转发引擎,其上的ASIC完成所有的报文操作,包括路由查找、报文分类、第三层转发和业务流决策,这一将报文转发分布于每一个I/O端口的ASIC的方法是第三层交换设备能够线速路由的关键部分。CPU模块主要完成设备的背景操作,如运行与路由处理相关的各种路由协议、创建和维护路由表、系统配置等,并把路由表信息导入每一个I/O接口模块分布式转发引擎的ASIC中。这样,各接口模块的分布式转发引擎ASIC直接根据路由表做出报文的转发策略,无需像传统路由器那样所有报文必须经过CPU的处理。
2.2 流交换技术原理及实现方法
在流交换中,第一个报文被分析以确定其是否标识一个“流”或者一组具有相同源地址或目的地址的报文。流交换节省了检查每一个报文要花费的处理时间。同一流中的后续报文被交换到基于第二层的目的地址。流交换需要两个技巧,第一个技巧是要识别第一个报文的哪一个特征标识一个流,这个流可以使其余报文走捷径,即第二层路径。第二个技巧是,一旦建立穿过网络的路径,就让流足够长以便利用捷径的优点。怎样检测流、识别属于特定流的报文以及建立通过网络的流通路随实现机制的变化而不同。目前出现了多种流交换技术,如3Com公司的快速IP、由Cisco提交给IETF的多协议标记交换(MPLS)、ATM论坛的多协议(MPOA)以及Ipsilon公司的IP交换。我们可将其划分成两个主要类型:端系统驱动流交换和网络中心式流交换。限于篇幅,现只简单介绍3Com公司的快速IP工作原理。
3Com公司的快速IP属于端系统驱动流交换技术,其工作原理基于NHRP标准(草案)。源端主机发送一个快速IP连接请求,该请求就像数据报文一样被路由穿过网络,如果目的端主机也运行快速IP,则它发送一个包含其MAC地址的NHRP应答报文给源端主机,如果源端主机和目的端主机存在二层交换通路,当NHRP应答报文到达源端主机时将在经过的交换机中建立目的端主机MAC地址和端口的映射表,随后源端主机可根据目的端主机MAC地址直接通过交换机二层通路交换数据报文,不再经过路由器;如果两端主机之间没有交换路径而无NHRP应答返回,则报文如前进行路由。
快速IP软件主要运行在源、目的端主机的网络接口卡(NIC)的驱动程序之上。它与主机的IP协议栈和NIC驱动程序接口,以协调NHRP交换。总之,快速IP试图改善在交换网络上完成路由的转发性能,但它没有潜在的灵活性,也不能通过报文过滤提供任何安全保障,而且需要在参与快速IP交换的主机上安装NHRP协议软件。实际上增加了设备的维护工作量。
多种流交换技术最初是在路由选择比较慢和代价比较大的前提下开发的。报文到报文交换产品已经证明了情况不再如此。与报文到报文交换产品相比,流交换方法显得更复杂和难以理解。在动态网络环境下,成功地标识、建立、管理和撤消大量的流需要哪些措施,仍然是一个有待研究的问题。目前应用在局域网互联的第三层交换设备多是基于报文到报文交换技术。流交换更可能在广域网中找到其位置。
3 对第三层交换机“路由一次,处处交换”或“基于目的MAC地址的第二层交换”这一观点提出质疑
当前,很多文章对三层交换机的工作原理进行过介绍,在交换机对三层报文转发机制上基本趋向一致观点,那就是“路由一次,处处交换”或“基于目的MAC地址的第二层交换”。现摘录这些文章中比较有代表性的原文如下:
“第三层交换的原理是,假设两个使用IP的主机A、B通过第三层交换机进行通信。发送站点A在开始发送时,把自己的IP地址与B站的IP地址比较,判断B站是否与自己在同一子网内。若目的站B与发送站A在同一子网内,则进行二层的转发。若两个站点不在同一子网内,如发送站A要与目的站B通信,发送站A要向“缺省网关”发出ARP请求(地址解析)封包,而“缺省网关”的IP地址其实是三层交换机的三层交换模块。当发送站A对“缺省网关”的IP地址广播出一个ARP请求时,如果三层交换模块在以前的通信过程中已经知道B站的MAC地址,则向发送站A回复B的MAC地址。否则三层交换模块根据路由信息向B站广播一个ARP请求,B站得到此ARP请求后向三层交换模块回复其MAC地址,三层交换模块保存此地址并回复给发送站A,同时将B站的MAC地址发送到二层交换引擎的MAC地址表中。从这以后,A向B发送的数据包便全部交给二层交换处理,信息得以高速交换。由于仅仅在路由过程中才需要三层处理,绝大部分数据都通过二层交换转发,因此第三层交换机的速度很快,接近第二层交换机的速度,同时比相同路由器的价格低很多”。
分析上面这段文章,笔者认为这种观点违背了主机与缺省网关通信的基本原理。文章提到“当发送站A对“缺省网关”的IP地址广播出一个ARP请求时,如果三层交换模块在以前的通信过程中已经知道B站的MAC地址,则向发送站A回复B的MAC地址。否则三层交换模块根据路由信息向B站广播一个ARP请求”。实际上,A站向三层交换模块发送网关IP地址的ARP请求时,ARP请求报文并不包含B站IP地址,三层交换模块只会把自己IP地址对应的MAC地址回复给A站,根本不会向发送站A回复B的MAC地址。这是错误之一。
退一步说,即便三层交换模块回复B站的MAC地址,由于B站和A站不在同一子网,A站也不会把B站的目的MAC地址封装在A站要发送的以太网帧中。这是错误之二。
再者,三层交换模块接收A站发送到B站的以太网帧,三层交换模块从以太网帧的IP包中提取B站的IP地址,通过查找路由表,寻找到B站的下一跳,若B站与第三层交换机某一接口在同一网段,第三层交换机向B站IP地址广播ARP请求,从B站的ARP应答中可得知B站的MAC地址;若B站与三层交换机某一接口不在同一网段,中间相隔了好几跳,三层交换模块只会向下一跳IP地址广播ARP请求,下一跳ARP应答的应是下一跳IP地址的MAC地址,三层交换模块无从得知B站的MAC地址。这是错误之三。
要达到“路由一次,处处交换”或“基于目的MAC地址的第二层交换”的目的,必须改变现存主机与缺省网关的通信机制或第三层交换机的路由规则,换句话说,以一种新的主机与缺省网关的通信机制替代现有的通信机制。就像前面描述的3Com公司的快速IP技术一样。实际网络中主机和第三层交换机都工作得很好,无需主机做任何改变,也无需改变原有的网络设施。在第三层交换机替代传统路由器的场合,子网间的流量转发性能却得到了空前的提高。这并不是改变了交换机对三层报文转发机制的结果,即“路由一次,处处交换”或“基于目的MAC地址的第二层交换”的结果,而是第三层交换机基于硬件快速转发三层报文的结果。
----《中国数据通信》
|