Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

配置调度器缓冲区大小以管理出口拥塞

流量突发很常见,可能会在几毫秒或更短的时间内超额订阅队列或端口,从而导致关键数据包丢失。可配置的深度缓冲使队列能够处理突发流量,并在短时间内缓冲关键数据包,从而减少关键数据包的丢失。

要控制输出阶段的拥塞,可以配置延迟缓冲带宽。延迟缓冲带宽提供数据包缓冲区空间,以吸收猝发流量,直至达到指定的延迟持续时间。指定的延迟缓冲区已满后,丢弃概率为 100% 的数据包将从缓冲区头部丢弃。

队列 0 到 7 的默认调度器传输速率为可用带宽总带宽的 95%、0%、0、0%、0%、0% 和 5%。

队列 0 到 7 的默认缓冲区大小百分比分别为可用缓冲区总数的 95%、0%、0%、0%、0%、0% 和 5%。每个队列的总可用缓冲区因 PIC 类型而异。

要配置缓冲区大小,请在[edit class-of-service schedulers scheduler-name]层次结构级别包含语buffer-size句:

对于每个调度器,您可以将缓冲区大小配置为以下选项之一:

  • 总缓冲区的百分比。每个队列的总缓冲区基于微秒,并且因路由设备类型而异。

  • 剩余缓冲区可用。其余部分是未分配给其他队列的缓冲区百分比。

  • 从接口的缓冲池共享。在 PTX 系列路由器上,将队列的缓冲区设置为高达接口缓冲区的 100%。此选项允许队列的缓冲区增长到接口缓冲区的 100%,当且仅当它是接口的唯一活动队列时。

  • 时间值,以微秒为单位。对于时间设置,当排队算法排队超过计算出的字节数时,排队算法将开始丢弃数据包。此最大值是通过将队列的传输速率乘以配置的时间值来计算的。

    注意:

    通常,默认时间缓冲区值与接口的速度或整形速率成反比。随着接口速度的提高,接口需要的缓冲区来保存数据越来越少,因为接口可以发送越来越多的数据。

    由于用于配置临时缓冲区设置的可用硬件资源有限,因此建议尽可能使用通用临时缓冲区配置。

通常,您可以为端口调度器和分层调度器配置调度器缓冲区大小。对于端口调度器,Junos 会根据以下几点计算共享缓冲区大小:

  • 如果配置了端口整形器,Junos 将根据端口整形器计算缓冲区大小。

  • 如果未配置端口整形程序,Junos 将根据端口速度计算缓冲区大小。

对于分层调度程序,Junos 会根据以下几点计算共享缓冲区大小:

  • 如果在逻辑接口上配置了整形器,Junos 将根据逻辑接口端口整形器计算缓冲区大小。

  • 如果配置了端口整形器,但没有逻辑接口整形器,则 Junos 将基于端口整形器计算缓冲区大小。

  • 如果未配置整形器,Junos 将根据端口速度计算缓冲区大小。

示例:配置调度程序的延迟缓冲区值

您可以为物理或逻辑接口分配一个由不同调度器(或队列)组成的调度器图。可以使用层次结构级别的和 buffer-size 语句[edit class-of-service schedulers scheduler-name]将物理接口的大延迟缓冲区分发给不同的调度器(或队列)。transmit-rate

此示例显示了两个调度程序和 sched-best sched-exped,其延迟缓冲区大小分别配置为百分比(20%)和时间值(300,000 微秒)。 sched-best 调度程序的传输速率为 10%。 sched-exped 调度程序的传输速率为 20%。

sched-best调度程序的延迟缓冲区是指定传输速率 10% 的两倍。假设sched-best调度程序已分配给 T1 接口,则此调度程序将接收 T1 接口延迟缓冲区总 500,000 微秒的 20%。因此,调度程序接收 18,750 字节的延迟缓冲区:

假设 sched-exped 将调度程序分配给 T1 接口,则此调度程序将接收 300,000 微秒的 T1 接口的 500,000 微秒延迟缓冲区,流量速率为 20%。因此,调度程序接收 11,250 字节的延迟缓冲区:

要配置此示例,请执行以下作:

  1. 配置sched-best调度程序。
  2. 指定 10% 的传输速率。
  3. 将缓冲区大小指定为 20%。
  4. 配置sched-exped调度程序。
  5. 指定 20% 的传输速率。
  6. 指定缓冲区大小时间值(300,000 微秒)。
  7. 验证配置。
  8. 保存配置。

示例:配置物理接口整形速率

通常,物理接口速度是计算延迟缓冲区大小的基础。但是,当您包含 shaping-rate 语句时,整形速率将成为计算延迟缓冲区大小的基础。

此示例将 T1 接口上的整形速率配置为 200 Kbps,这意味着 T1 接口带宽设置为 200 Kbps,而不是 1.5 Mbps。由于 200 Kbps 小于 4xDS0,因此此接口接收 4 秒的延迟缓冲区,或 800 Kbps 的流量,即整秒钟 800 KB。

  1. 指定要在其上配置整形速率的接口。
  2. 指定整形速率。
  3. 验证配置。
  4. 保存配置。

完整配置

此示例显示了 FPC 插槽 0、PIC 插槽 0 中的通道化 OC12 IQ PIC 以及采用帧中继封装的通道化 T1 接口。它还显示了物理接口上的调度器图配置。

启用和禁用每个队列的动态内存分配

在 Junos OS 中,动态内存分配 (MAD) 是一种机制,当队列使用的带宽多于传输速率设置中分配的带宽时,该机制会动态调配额外的延迟缓冲区。借助这种额外的缓冲区,队列可以更轻松地吸收突发流量,从而避免数据包丢弃。仅当队列使用额外传输带宽时,MAD 机制才能配置额外的延迟缓冲区。这意味着,如果没有多余的传输带宽可用,队列可能会出现数据包丢弃的情况。

仅对于瞻博网络 MX 系列 5G 通用路由平台和 EX 系列以太网交换机,除非为给定队列的延迟缓冲区配置了临时设置,否则会启用 MAD 机制。MAD 机制对于转发类传输不受延迟影响的流量特别有用,因为这些类的首要要求是实现最大带宽利用率。相比之下,对于延迟敏感型流量,您可能希望禁用 MAD 机制,因为较大的延迟缓冲区不是最佳选择。

MAD 支持取决于 FPC 和数据包转发引擎,而非 PIC。没有模块化端口集中器 (MPC) 和 IQ、IQ2、IQ2E 或 IQE PIC 支持 MAD。

要在支持的硬件上启用 MAD 机制,请执行以下作:

[edit class-of-service schedulers scheduler-name]层次结构级别包括语buffer-size percent句:

分配给任何队列的最小缓冲区为 18,432 字节。如果队列配置为缓冲区大小小于 18,000,则队列将保留 18,432 字节的缓冲区大小。

如果需要,可以配置大于配置传输速率的缓冲区大小。如果有足够的多余带宽可用,缓冲区可以容纳超过配置传输速率的数据包突发。例如:

如前所述,您可以使用临时延迟缓冲区配置禁用队列上的 MAD 机制,从而限制延迟缓冲区的大小。但是,临时队列的有效缓冲区延迟不仅受缓冲区大小值的限制,还受关联的丢弃配置文件的限制。如果丢弃配置文件在填充级别小于 100% 时指定丢弃概率为 100%,则有效最大缓冲区延迟小于缓冲区大小设置。这是因为丢弃配置文件指定队列在队列的延迟缓冲区 100% 满之前丢弃数据包。

此类配置可能类似于以下示例:

特定于平台的缓冲区大小配置行为

使用 功能浏览器 确认平台和版本对缓冲区大小配置的支持。

使用下表查看您的平台特定于平台的行为:

平台 差异

ACX7000 系列路由器

buffer-size对于 ,请使用temporal选项配置共享缓冲区。percent使用和 remainder 选项配置有保证的缓冲区。

PTX 系列路由器

PTX 系列路由器支持 shared 的选项,通过此选项 buffer-size,您可以将队列的缓冲区设置为高达接口缓冲区的 100%。此选项允许队列的缓冲区增长到接口缓冲区的 100%,当且仅当它是接口的唯一活动队列时。