原文网址:http://blog.163.com/s_zhchluo/blog/static/1501470820118259244838/

三层交换技术—LPM+HD技术  



1.1 三层交换技术的概念


交换技术是随着交换设备的出现而出现的一种数据转发技术,主要分为二层交换技术、三层交换技术和四层交换技术。


二层交换技术是最传统的交换技术,为了实现二层交换,交换机需要维护一张“MAC地址、交换机端口”的硬件转发表,当交换机接收到数据时,根据数据包中的“目的MAC地址”查询硬件转发表,匹配到相同“目的MAC地址”表项时根据对应的“交换机端口”进行线速的数据转发,由于“MAC地址”属于OSI网络参考模型中的第二层——数据链路层的地址,所以称为二层交换技术。


而为了实现三层交换技术,交换机将维护一张至少包括“目的IP地址,下一跳MAC地址”在内的硬件转发表,当交换机接收到数据时,根据数据包中的“目的IP地址”查询硬件转发表,根据匹配结果进行相应的数据转发,并且采用硬件芯片或高速缓存支持,可以达到线速。由于“IP地址”属于OSI网络参考模型中的第三层——网络层的地址,所以称为三层交换技术。


除了三层交换技术,在三层数据转发技术中还有路由技术的概念,该技术在中低端路由器和早期交换机中采用,进行数据的转发时通过检测数据包中的“目的IP地址”来判断应该如何进行数据包的转发,但不采用硬件芯片或高速缓存支持,而只是通过CPU进行软件计算转发,所以在大流量数据条件下无法线速。由于数据处理能力的限制,该技术在高端路由器已经不被采用,高端路由器和三层交换机一样大量地使用了三层交换技术。


如果在三层交换技术的转发过程中增加对四层TCP/UDP端口的检测和硬件转发表匹配,则成为四层交换技术,由于四层交换技术在局域网中应用极少,所以该技术并不成为交换机处理性能的衡量标准。


1.2 三层交换技术带来的影响


在早期网络中,交换机只具备二层交换功能,所有的跨网段通信或跨广域网通信都通过采用路由技术的路由器设备(后来局域网内部短暂出现过采用路由技术的三层交换机),由于CPU实现路由技术的处理能力限制,当初的局域网基本不部署跨网段的网络应用,绝大部分的局域网甚至不进行任何网段的划分,不仅网络的安全性降低,网络的可管理性降低,而且由于广播的全网泛滥极大地降低了局域网的性能,无法组建大规模的网络。同样,路由技术的性能限制也影响了早期网络跨广域网的应用发展。在三层交换技术出现以后,所有的这一切都发生了改变,局域网可以随意部署大量的跨网段应用,网络的安全性和可管理性得到了极大的提升,可以通过三层交换技术构建大规模的各种网络,而广域网的应用也随着采用三层交换技术的高端路由器和高端路由交换机的出现而不断丰富。


2 三层交换技术的代表


网络设备在进行数据跨网段转发前需要查询路由转发表,然后才能做出数据转发的决定,路由转发表由非主机路由表(包括直连路由、静态路由、动态学习到的路由)和主机路由表(二层用户直接连接到三层设备时的路由或由系统管理员设定的某指定主机路由)两大部分组成,路由转发表的概念有助于更好地了解后文提到的三层交换技术。


技术1:一次路由、多次交换


在一次路由、多次交换的技术中,有一个非常重要的概念——数据流。


流是具有相同数据特征的数据包的集合,相同数据特征可以指相同的源/目的MAC地址、相同的源/目的IP地址,以及相同的四层协议和四层端口号。但在三层交换技术里,流的概念是指具有相同的源/目的IP地址的数据包的集合。


例如表1(流精确匹配硬件表):


所有源IP地址为192.168.1.1,目的IP地址为192.168.2.1的数据包都属于同一个数据流,但源IP地址为192.168.1.1,目的IP地址为192.168.2.2的数据包属于不同的数据流。


一次路由,多次交换的工作机制:


数据流的第一个数据包采用CPU软件实现三层路由,然后交换机把数据流三层转发需要的相关信息表项(源IP地址、目的IP地址、下一跳MAC地址、数据转发出口MAC地址)下载到ASIC芯片,该数据流后续数据包的三层转发就可以直接通过ASIC芯片采用流精确匹配来硬件实现。当另一个不同的数据流需要进行三层交换的时候需要重复同一个过程:一次路由、多次交换。


表一:流精确匹配硬件表


三层交换技术——精确匹配、最长前缀匹配与最长前缀匹配+主机直接路由_三层交换 精确匹配 最长匹配


从表1的内容可以看到,虽然例子中数据三层转发的下一跳地址和数据转发出口都相同(也就是数据转发目的属于同一网段),但由于属于不同的数据流,分别占用了一个硬件表项。因此,在一次路由、多次交换的三层交换工作模式下,存在两个明显的缺点:首先,每种数据流的第一数据包采用CPU软件实现路由,在大型网络、应用繁多或病毒和攻击泛滥的数据流复杂环境下,数据的三层转发将大量耗费CPU资源,不仅影响了效率,而且CPU利用率过高后有可能导致设备死机;其次,由于采用了流精确匹配的硬件转发方式,在大型网络、应用繁多等数据流复杂的环境下对交换机硬件转发表的存储空间是一个极大的挑战,尤其在病毒和攻击网络环境下,由于每个数据包都有可能是一个独立的数据流,能在很短时间内就使硬件存储空间溢出,从而导致其它的数据流只能使用纯CPU软件实现三层路由,交换机将迅速因为资源耗竭而瘫痪直接死机。


一次路由、多次交换的缺点可以简单概括为:


1. 一次路由:采用CPU软件实现,CPU利用率高


2. 多次交换:流精确匹配,硬件存储空间承受巨大压力


技术2:最长前缀匹配硬件三层交换(LPM:Longest Prefix Matching)


在最长前缀匹配硬件三层交换技术中,三层硬件转发表里存储着和软件路由表一样的转发表项(主机路由表和网段路由表,不是流形式存在的转发表),而且可以支持网段相互包容的网络规划,在硬件转发过程中利用最长匹配技术进行准确的表项查询。


LPM实现机制:


1. 三层交换机刚启动完毕


表二:最长匹配硬件转发表——刚启动完毕


三层交换技术——精确匹配、最长前缀匹配与最长前缀匹配+主机直接路由_三层交换 精确匹配 最长匹配_02


在交换机刚启动完毕时,交换机就把设备的软件路由表下载到ASIC芯片,但由于MAC地址是未知的,无法同时下载MAC地址,此时的硬件转发表是无效的。


2. 下载和工作机制


在需要进行三层交换的数据包到达交换机以后,交换机首先会查询最长匹配硬件转发表,但由于MAC地址未知,所以无法进行硬件数据转发。所以交换机将利用CPU对数据进行软件路由转发,交换机在数据的转发过程中获取下一跳和数据转发出口的MAC地址,然后会自动下载到三层硬件转发表,此时包含了下一跳和数据转发出口MAC地址的硬件转发表项才真正生效。在这之后,发往相同目的IP网段的数据包到达交换机都可以直接通过最长匹配硬件转发表进行硬件转发,而其它网段的数据转发需要重复上述的同一过程。


由于只有下载了MAC地址以后硬件表项才真正生效,业界通常把下载MAC地址的动作为真正意义上的下载三层转发表。


表三:最长匹配硬件转发表——正常运行


三层交换技术——精确匹配、最长前缀匹配与最长前缀匹配+主机直接路由_三层交换 精确匹配 最长匹配_03


当数据是发往三层交换机的直连网段(该网段的主机直接二层连接到三层交换机),三层交换机除了把发往这些主机的数据发往对应的三层网关,交换机还负责把数据直接发往这些主机,交换机需要知道“主机IP地址”对应的“主机MAC地址”,为了提高转发效率,交换机将生成主机转发表,直接进行数据的转发,但表项匹配部分内容只有“目的IP地址”字段,不是数据流的存储形式,因此依然节约了非常大量的存储空间。假设表三例子中的192.168.2.0/24是直连路由,生成的最长匹配硬件转发表将为“表四”的形式。
表四:最长匹配硬件转发表——正常运行(包含直连网段)


三层交换技术——精确匹配、最长前缀匹配与最长前缀匹配+主机直接路由_三层交换 精确匹配 最长匹配_04


最长匹配(LPM)三层交换技术可以解决传统方式“多次交换”中采用“流精确匹配”而带来存储空间压力过大的问题。最长匹配(LPM)技术支持静态路由、动态学习到的路由都直接以网段形式存储于硬件转发表,一个目的网段使用一个转发表项,而直连网段仅生成表项内容为“目的IP地址”的主机转发表,对于其它不明目的网段IP地址的数据包直接通过硬件缺省路由转发。因此,LPM技术的优点是极大地节约存储空间,病毒和攻击数据可以通过硬件网段路由或缺省路由进行转发,不增加额外的硬件表项,避免了存储溢出问题,保障设备的正常运行。


技术3:最长前缀匹配硬件三层交换的优化(LPM+HDR)


在LPM技术中依然保留了CPU参与一次路由的需要,虽然每个网段只有一次CPU参与的需要,但是在三层设备拥有直连网段,主机转发表数量比较多的情况下,CPU的第一次参与依然会对三层转发的处理效率产生一些影响,HDR技术可以进一步优化LPM技术的处理效率,主机直接路由(HDR:Host direct Route)用于解决CPU参与“一次路由”的不足。主机直接路由(HDR)支持三层设备在最长匹配硬件转发中的下一跳节点和数据转发出口运行ARP协议时把对应的MAC地址直接下载到硬件转发表。因此,没有了第一次CPU参与路由的效率影响,网络中的所有主机(Host)都可以通过最长匹配硬件转发表进行直接的三层转发。


LPM+HDR三层交换技术不需要CPU参与、节约了缓存空间,不仅极大地提高了路由效率,而且避免了病毒和攻击对网络设备本身的影响,提高设备的稳定性。