本文档介绍数据包的寿命。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
思科低端路由器包括1xxx、25xx、26xx、3600、3800、4000、4500和4700系列。使用这些路由器,某人通过电线发送消息,另一个系统中的控制器接收消息。该控制器在大多数系统上直接将数据包存储到缓冲区内存中。当消息被完全接收时,控制器存储一些指针信息以便入口驱动程序可以找到它,然后提供接收中断。
注意:如果控制器没有用于存储消息的缓冲区,则它此时会记录“ignore”,并且不会接收消息。
在将来的某个时刻,驱动程序会变为活动状态,通常以微秒为单位。驱动程序首先检查传输队列,然后检查接收队列。目前,我们将重点介绍接收队列处理。驱动程序检查队列的必要方面,确定有消息,从队列中删除消息,并补充控制器的接收缓冲列表。然后,它决定转发者(如IP或Internet分组交换(IPX))将消息转发给哪些转发者。
对于此解释,假设它是IP消息。驱动程序将希望将IP消息转发给已配置的IP快速路径。它首先从消息中删除链路层报头,然后确定是否在入口接口上配置了快速路径。如果未配置,则将数据包放置(标记)在“输入保持队列”中,并检查计数器。如果计数器为零,则“输入保持队列”将耗尽并丢弃数据包。如果计数器不为零,则会递减该计数器,并将消息列入进程路径。
注意:“输入保持队列”不是文字意义上的队列。它是接口上已接收且未完全处理的一组数据包(通过将消息转发到出口接口或释放缓冲区)。 但是,如果有已配置的快速路径,并且通常有,则消息会被传送到快速路径。
现在,快速路径将验证消息并将一些功能应用到未路由的消息。此步骤包括解密或解压缩,或同时执行(如有必要)网络地址转换(NAT)、应用输入承诺访问速率(CAR)测试、应用策略路由测试等。
策略路由(如果使用)实际选择出口接口。如果未使用策略路由,则下一步是在路由缓存中查找目的地址,即称为“交换数据包”的过程。 根据快速交换模式,该缓存的结构和内容会有所不同。在标准快速交换中,缓存包含最近使用的目标前缀路由或目标主机路由,并且偶尔没有缓存条目。在这种情况下,消息会突发到进程级别,再次标记为处于“输入保持队列”中。 在思科快速转发交换中,缓存(称为转发信息库或FIB)是完整的路由表,因此不会发生该过程。
如果找到路由,路由缓存条目(或“邻接”,在思科快速转发中称为)将指示输出软件和硬件接口以及消息上要放置的报头(下一相关跃点)。 对于多路复用接口,这将是下一个相关的虚电路或虚拟通道。
在该软件接口上,可能存在许多问题。例如,接口可能配置了小于消息大小的最大传输单位(MTU)。由于快速路径中没有分段,因此此特定事件将成为“跳到”进程级别的原因。此外,接口可能已配置为NAT处理、输出CAR等。此时,在消息处理过程中,将应用这些功能。最后,输出接口的链路层报头被固定到消息上,并交给输出驱动程序。
该消息将呈现给执行以下步骤的驱动程序中的快速发送例程。
驱动程序会询问许多问题,例如“Do I me to copy the message to a new buffer before transfire?”
它确定流量整形是否处于活动状态。如果流量整形处于活动状态,它会将消息到达速率与指示的消息类的消息传输速率进行比较。如果子接口上形成整形队列或队列不存在,但速率已超过,则会将消息放入软件接口上的队列。
如果流量整形不处于活动状态、不适用于此消息或速率尚未超过,则驱动程序现在会询问输出控制器的传输队列深度是否低于tx-queue-limit。如果低于限制,驱动程序只需将消息排入队列即可传输。遵循此路径的消息被视为已在输入时快速切换和输出时快速切换。
但是,如果无法快速交换,驱动程序会将消息转移到软件队列,通常称为“输出保持队列”。 此类保持队列的示例包括先进先出(FIFO)队列、优先级队列、自定义队列和加权公平队列(WFQ)。
由于这也是跟随进程路径的消息的目的地,因此此类消息被视为已在输入时快速切换和输出时进程切换。请注意,实际上,它们不是进程交换的。在快速路径中交换数据包时做出交换决策。但是,消息被转移到与进程路径共享的队列。当消息从保持队列中删除并入队到发送控制器时,该消息会被视为在稍后进行进程交换。
当消息无法在快速路径中传输时,会发生进程交换。这意味着消息已发送到此系统,最终(理想情况下)将被路由进程、链路维护进程、网络管理进程等消耗。但是,某些流量确实通过进程路径,例如使用链路分段和交织(LFI)在跳帧的网段之间交织语音的流量、X.25流量、需要分段的流量以及没有快速路径路由条目的流量。进程路径上的处理在概念上与快速路径相同,但由于各种原因在实施上不同。其中一个区别是,在输出中,“输入保持队列”标志被清除,并且输入接口上的计数器递增(从输入保持队列中删除消息),并且消息被入队到输出保持队列中。然后,模拟中断,该中断可触发在输出接口上的消息传输。由于流程开销,它比快速交换要慢;在收到此类消息时,可能会运行一些其他进程,而且还有一些更复杂的数据结构需要处理。