2.11 交换机中的数据包复制过程
几乎所有设备上要求能够支持的组播转发都是开放标准的,由IETF之类的组织起草的标准。但网络设备中数据包的实际转发行为则没有对应的开放标准。对于单播数据包传输也是如此。每个厂商,或者有时是每条产品线,实施的转发机制是区分每个平台的标准。
IP组播转发的核心内容是数据包复制过程。数据包复制指的是在物理上复制某个数据包,并把复制的数据包从转发路径上的目的接口发送出去。
在每个平台上,复制过程的区别在于网络设备是在哪里完成的复制。Cisco的每个网络平台在处理这个过程时都有一些小区别。很多路由器都是用中心处理器来执行复制任务。其他拥有分布处理器的更高级路由器和交换机需要特殊的ASIC(专用集成电路)来执行数据包复制,并在线卡之间转发复制的数据包。在Internet形成之初,数据包处理的关键任务就是简单的数据包转发。
要想实现线速数据包转发,需要特殊的ASIC进行处理。随着路由器和交换机上内置的特性和应用的发展(包括现代网络中的重要组成部分,比如QoS、MPLS、组播、SNMP、流报告等),以线速速率实现数据包复制和处理也成为了网络设备需要实现的功能。不使用ASIC的话,路由器的处理器会被数据包处理请求淹没。Cisco花费了25年多的时间开发自定义的ASIC,大部分用于实现数据包复制需求。在理解了这些内容后,路由器厂商必须决定在哪里,以及使用哪个(或哪些)ASIC来复制数据包;尤其对于那些分布式路由和交换平台。分布式平台在设备中使用ASIC,在尽可能靠近接口的位置做出转发决策。
有些分布式平台可能会把入站组播数据包转发到中心处理卡。这个卡可能会对数据包执行特殊行为,复制数据包或将其转发到其他线卡进行复制。如果由中心处理器执行复制,那么这种复制模型就称为中心复制,工作模式类似于传统总线。在中心复制模型中,资源压力出现在中心处理器和中心资源上,比如内存。根据组播部署的规模或需要复制的数据包数量,这种模型有可能会对控制平面的流量带来严重的性能问题。
其他分布式平台可能会使用与入向接口或线卡相关联的ASIC来执行数据包复制。这种模型称为入向复制。在这种模型中,入站接口线卡会负责复制组播数据包,并通过交换环境将复制的数据包发送到路径中的出站接口。入向复制将资源压力分布到多个处理器上,但根据启用的特性,仍可能需要中心处理器偶尔地执行转发。
与出接口相关联的ASIC也可以执行数据包复制,这也称为出向复制。在有些情况中,只在出向接口执行复制意味着效率的降低;但很多模型中的出向线卡终结了去往某些域的组播数据包。这意味着在出向线卡执行数据包复制是个理想的选择,因为线卡可能会有多个接口连接着下游组播接收方。
注释
下游是指从发送方去往接收方的数据流方向。这些线卡上面向交换环境的ASIC将负责执行数据包复制。
硬件平台上可能综合了这些复制方式:中心、入向和出向。这种模式称为分布式复制。入站接口ASIC可能会执行一个级别的复制,然后分别向转发路径树中连接着出站接口的每个线卡发送一个复制的数据包。出向线卡可以再次复制更多的数据包,向转发路径中的每个接口发送一个复制的数据包。这种方式进一步将资源压力分布在更多的ASIC上。图2-11中展示了一个基本的分布式复制模型,其中入站线卡和出站线卡提供了复制功能(这是Cisco设备上常见的模型,比如Catalyst 6500系列交换机)。
一定要记住这件很重要的事:每个厂商和每个设备平台处理数据包复制的方式都不一样。要想具备竞争力,每个厂商都必须以一种安全且高效的方式执行数据包复制。也就是说硬件平台必须尽可能快地转发数据包,同时还要防止环路并且保护宝贵的控制平面资源。任何想要部署IP组播技术的架构师和工程师都应该着重关注网络路径中每个硬件平台执行复制的过程,以及它们使用的增强型专用硬件和软件特性。