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 和 5%。

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

要配置缓冲区大小,请在 buffer-size 层级添加语句 [edit class-of-service schedulers scheduler-name]

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

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

  • 剩余可用缓冲区。剩余部分是未分配给其他队列的缓冲区百分比。例如,如果将 40% 的延迟缓冲区分配给队列 0,则允许队列 3 保留 5% 的默认分配,并将剩余的分配分配给队列 7,那么队列 7 会使用大约 55% 的延迟缓冲区。

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

  • 一个时间值,以微秒为单位。对于时间设置,当队列算法对队列的字节数超过计算得出的字节数时,会开始丢弃数据包。此最大值是通过将队列的传输速率乘以配置的时间值计算得出的。每个队列的缓冲区大小时间值因路由设备类型而异,如 表 1 所示。最大值适用于逻辑接口,而不是每个队列。

    注意:

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

表 1:按路由设备类型分列的缓冲区大小时间值范围

路由设备

时间值范围

M320 和 T 系列路由器 FPC,1 类和 2 类

1 到 80,000 微秒

M320 和 T 系列路由器 FPC,类型 3。所有 ES 卡(类型 1、2、3 和 4)。

1 到 50,000 微秒

对于总带宽超过 40 Gbps 的 PIC,可以为调度程序配置的最大时间缓冲区大小为 40,000 微秒,而非 50,000 微秒。

M120 路由器 FEB 和 MX 系列路由器无增强队列 DPC,以及 EX 系列交换机

1 到 100,000 微秒

M5、M7i、M10 和 M10i 路由器 FPC

1 到 100,000 微秒

其他 M 系列路由器 FPC

1 到 200,000 微秒

PTX 系列数据包传输路由器

1 到 100,000 微秒

所有路由器上的 IQ PIC

1 到 100,000 微秒

支持大缓冲区大小

所有路由器上的 IQ PIC

1 到 500,000 微秒

千兆以太网 IQ VLAN

整形速率高达 10 Mbps

1 到 400,000 微秒

整形速率高达 20 Mbps

1 到 300,000 微秒

整形速率高达 30 Mbps

1 到 200,000 微秒

整形速率高达 40 Mbps

1 至 150,000 微秒

整形速率超过 40 Mbps

1 到 100,000 微秒

有关配置延迟缓冲区的更多信息,请参阅以下子主题:

为速度较慢的接口配置大延迟缓冲区

默认情况下,在通道化 IQ PIC 上配置的 T1、E1 和 NxDS0 接口和 DLCI 被限制为 100,000 微秒的延迟缓冲区。(IQ PIC 上的默认平均数据包大小为 40 字节。)对于这些接口,可能需要配置更大的缓冲区大小,以防止拥塞和丢包。您可以对以下 PIC 进行上述操作:

  • 通道化 IQ

  • 4 端口 E3 IQ

  • 千兆以太网 IQ 和 IQ2

较慢的接口收到大量突发流量时,会出现拥塞和丢包的情况。当较快的接口将流量传递到较慢的接口时就会发生这种情况,而当边缘设备从网络核心接收流量时,通常会发生这种情况。例如,100,000 微秒的 T1 延迟缓冲区只能吸收来自上游 OC3 接口的 5000 微秒突发流量的 20%。在这种情况下,80% 的突发流量被丢弃。

表 2 显示了吸收各种上游接口类型的典型突发大小所需的一些建议缓冲区大小。

表 2:建议的延迟缓冲区大小

突发长度

上游接口

下游接口

下行接口上的建议缓冲区

5000 微秒

OC3

E1 或 T1

500,000 微秒

5000 微秒

E1 或 T1

E1 或 T1

100,000 微秒

1000 微秒

T3

E1 或 T1

100,000 微秒

为了确保流量在 E1、T1 N和 xDS0 接口及 DCI 上正确排队传输,您可以配置大于默认最大值的缓冲区大小。要配置更大的缓冲区大小:

q-pic-large-buffer (large-scale | small-scale)层次结构级别包括语句[edit chassis fpc slot-number pic pic-number]

如果指定选项 large-scale ,则功能支持更多接口。如果指定 small-scale,默认设置,则功能支持的接口数量较少。

在配置中包含语句 q-pic-large-buffer 时,更大的缓冲区显然可以分配给调度器队列。较大的缓冲区最大值因接口类型而异,如 表 3 所示。

表 3:通过接口启用 q-pic-large 缓冲区的最大延迟缓冲区

平台、PIC 或接口类型

最大缓冲区大小

未启用大缓冲区时

M320 和 T 系列路由器 FPC,1 类和 2 类

80,000 微秒

M320 和 T 系列路由器 FPC,类型 3

50,000 微秒

其他 M 系列路由器 FPC

200,000 微秒

所有路由器上的 IQ PIC

100,000 微秒

支持大缓冲区大小

通道化 T3 和通道化 OC3 DLCI — 最大大小因整形速率而异:

整形速率从 64,000 到 255,999 bps

4,000,000 微秒

整形速率从 256,000 到 511,999 bps

2,000,000 微秒

整形速率从 512,000 到 1,023,999 bps

1,000,000 微秒

整形速率从 1,024,000 到 2,048,000 bps

500,000 微秒

整形速率从 2,048,001 bps 到 10 Mbps

400,000 微秒

整形速率从 10,000,001 bps 到 20 Mbps

300,000 微秒

整形速率从 20,000,001 bps 到 30 Mbps

200,000 微秒

整形速率从 30,000,001 bps 到 40 Mbps

150,000 微秒

整形速率从 40,000,001 bps 及以上

100,000 微秒

NxDS0 IQ 接口 — 最大大小因通道大小而异:

1 个 DSO 到 3 个DS0

4,000,000 微秒

4 个 DSO 到 7 个DS0

2,000,000 微秒

8xDSO 至 15xDS0

1,000,000 微秒

16 个 DSO 到 32 个DS0

500,000 微秒

其他 IQ 接口

500,000 微秒

如果配置的延迟缓冲区大于新的最大值,则可以成功提交候选配置。但是,设置将被数据包转发组件拒绝,并会生成系统日志警告消息。

对于支持 DLCI 队列的接口,其配置的整形速率小于或等于物理接口带宽的 DLCI 支持大缓冲区。例如,当您在通道化 T3 IQ PIC 上配置帧中继 DLCI,并将整形速率配置为 1.5 Mbps 时,可分配给 DLCI 的延迟缓冲区为 500,000 微秒,相当于 T1 延迟缓冲区。有关 DLCI 队列的更多信息,请参阅 对 LCI 和 VLAN 应用调度器图和整形速率

对于 NxDS0 接口,较大的缓冲区大小最高可达 4,000,000 微秒,具体取决于 xDS0 接口中的 NDS0 通道数量。对于通道较少且速度较慢 N的 xDS0 接口,延迟缓冲区可以相对大于通道数较快 N的 xDS0 接口的延迟缓冲区。 表 5 显示了这一点。

您可以将延迟缓冲区分配为百分比或时间值。生成的延迟缓冲区的计算方式取决于延迟缓冲区的配置方式,如 表 4 所示。

表 4:延迟缓冲区计算

延迟缓冲区配置

公式

例子

百分比

available interface bandwidth * configured percentage buffer-size * maximum buffer = queue buffer

如果将 T1 接口上的队列配置为使用 30% 的可用延迟缓冲区,则队列将收到 28,125 字节的延迟缓冲区:

sched-expedited {
    transmit-rate percent 30;
    buffer-size percent 30;
}

1.5 Mbps * 0.3 * 500,000 microseconds = 225,000 bits = 28,125 bytes

时间

available interface bandwidth * configured percentage transmit-rate * configured temporal buffer-size = queue buffer

如果将 T1 接口上的队列配置为使用 500,000 微秒的延迟缓冲区,并将传输速率配置为 20%,则队列将收到 18,750 字节的延迟缓冲区:

sched-best { 											
    transmit-rate percent 20;
    buffer-size temporal 500000; 										
}

1.5 Mbps * 0.2 * 500,000 microseconds = 150,000 bits = 18,750 bytes

百分比,缓冲区大小大于传输速率

 

在此示例中,延迟缓冲区的分配是传输速率的两倍。如果队列的传输速率不能超过分配的传输速率,则最大延迟缓冲区延迟可高达 500,000 微秒的两倍。

sched-extra-buffer {
    transmit-rate percent 10;
    buffer-size percent 20;
}

FRF.16 LSQ 捆绑包

对于总捆绑带宽< T1 带宽,延迟缓冲区速率为 1 秒。

对于总捆绑带宽 >= T1 带宽,延迟缓冲区速率为 200 毫秒 (ms)。

 

为 NxDS0 接口配置最大延迟缓冲区

由于 NxDS0 接口的带宽比 T1 或 E1 接口少,因此 xDS0 接口上的 N缓冲区大小可能相对较大,具体取决于组合的 DS0 通道数。最大延迟缓冲区大小使用以下公式计算:

例如,1 个 DS0 接口的速度为每秒 64 千位 (Kbps)。在此速率下,最大延迟缓冲区时间为 4,000,000 微秒。因此,延迟缓冲区大小为 32 KB:

表 5 显示了 1xDS0 到 32xDS0 接口的延迟缓冲区计算。

表 5:NxDS0 传输速率和延迟缓冲区

接口速度

延迟缓冲区大小

1xDS0 至 4xDS0:最大延迟缓冲区时间为 4,000,000 微秒

1xDS0:64 Kbps

32 KB

2xDS0:128 Kbps

64 KB

3xDS0:192 Kbps

96 KB

4xDS0 至 7xDS0:最大延迟缓冲区时间为 2,000,000 微秒

4xDS0:256 Kbps

64 KB

5xDS0:320 Kbps

80 KB

6xDS0:384 Kbps

96 KB

7xDS0:448 Kbps

112 KB

8xDS0 至 15xDS0:最大延迟缓冲区时间为 1,000,000 微秒

8xDS0:512 Kbps

64 KB

9xDS0:576 Kbps

72 KB

10xDS0:640 Kbps

80 KB

11xDS0:704 Kbps

88 KB

12xDS0:768 Kbps

96 KB

13xDS0:832 Kbps

104 KB

14xDS0:896vKbps

112 KB

15xDS0:960 Kbps

120 KB

16xDS0 至 32xDS0:最大延迟缓冲区时间为 500,000 微秒

16xDS0:1024 Kbps

64 KB

17xDS0:1088 Kbps

68 KB

18xDS0:1152 Kbps

72 KB

19xDS0:1216 Kbps

76 KB

20xDS0:1280 Kbps

80 KB

21xDS0:1344 Kbps

84 KB

22xDS0:1408 Kbps

88 KB

23xDS0:1472 Kbps

92 KB

24xDS0:1536 Kbps

96 KB

25xDS0:1600 Kbps

100 KB

26xDS0:1664 Kbps

104 KB

27xDS0:1728 Kbps

108 KB

28xDS0:1792 Kbps

112 KB

29xDS0:1856 Kbps

116 KB

30xDS0:1920 Kbps

120 KB

31xDS0:1984 Kbps

124 KB

32xDS0:2048 Kbps

128 KB

示例:为较慢的接口配置大延迟缓冲区

在通道化 OC12 IQ PIC 上配置的接口上设置大延迟缓冲区。CoS 配置会将调度器图绑定到机箱配置中指定的接口。有关此示例中的延迟缓冲区计算的信息,请参阅 表 4

要配置大延迟缓冲区:

  1. 指定要为其配置大延迟缓冲区的 FPC 和 PIC。
  2. 启用大延迟缓冲。
  3. 指定每个接口的最大队列数。
  4. 验证配置。
  5. 保存配置。

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

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

此示例显示了两个调度器, 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 接口,则此调度器接收 T1 接口 500,000 微秒的 300,000 微秒延迟缓冲区,流量速率为 20%。因此,调度程序会收到 11,250 字节的延迟缓冲区:

要配置此示例:

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

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

通常,物理接口速度是计算延迟缓冲区大小的基础。但是,在包括 shaping-rate 语句时,整形速率将成为计算延迟缓冲区大小的基础。有关更多信息,请参阅 表 5

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

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

完整配置

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

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

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

仅限瞻博网络 M320 多服务边缘路由器、MX 系列 5G 通用路由平台、T 系列核心路由器和 EX 系列以太网交换机,除非为给定队列配置了延迟缓冲区的时间设置,否则将启用 MAD 机制。MAD 机制对于承载延迟免疫流量的转发类特别有用,这些类的主要要求是最大带宽利用率。相比之下,对于延迟敏感型流量,您可能希望禁用 MAD 机制,因为大延迟缓冲区不是最佳选择。

MAD 支持依赖于 FPC 和数据包转发引擎,而不是 PIC。所有 M320、MX 系列和 T 系列路由器以及 EX 系列交换机的 FPC 和数据包转发引擎都支持 MAD。无模块化端口集中器 (MPC) 和 IQ、IQ2、IQ2E 或 IQE PIC 支持 MAD。

在支持的硬件上启用 MAD 机制:

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

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

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

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

这样的配置可能类似于以下示例: