配置多达 16 个自定义转发类
默认情况下,在所有路由器上,四个转发类映射到四个输出队列,如主题 默认转发类所示。在 M120 和 M320 多服务边缘路由器、MX 系列 5G 通用路由平台、PTX 系列数据包传输路由器和 T 系列核心路由器上,您可以配置四个以上的转发等级和队列:您可以配置多达 16 个转发类和 8 个队列,并将多个转发类分配给单个队列。将多个转发类分配给队列的概念有时称为创建 转发类别名。
如果在设备上配置了 8 个以上的转发类,则无法使用基于 CoS 的转发功能。
将多个转发类映射到单个队列非常有用。例如,假设转发类是基于多域数据包分类设置的,而面向核心的接口和面向客户的接口的多域分类器则不同。假设一个面向核心的接口需要四个队列,一个面向客户的接口需要五个队列,其中fc0
fc4
通过对应面向客户的接口的分类器,fc5
通过fc8
与面向核心的接口的分类器对应,如图 1 所示。
在此示例中,您需要九个分类器,因此需要九个转发类。转发类到队列的映射如 表 1 所示。
转发类名称 |
队列编号 |
---|---|
|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
要配置多达 16 个转发类,请在 class
层次结构级别添加和 queue-num
语句 [edit class-of-service forwarding-classes]
:
[edit class-of-service forwarding-classes] class class-name queue-num queue-number;
您可以配置多达 16 个不同的转发类名称。相应的输出队列编号可以是 0 到 7。因此,您可以将多个转发类映射到单个队列。如果将多个转发类映射到一个队列,则多个转发类必须引用同一时间表(在 [edit class-of-service scheduler-maps map-name forwarding-class class-name scheduler scheduler-name]
层次结构级别)。
配置多达 16 个转发类时,您可以像使用其他任何转发类一样使用这些类 — 分类器、调度器、防火墙过滤器(多域分类器)、监管器以及重写规则。
配置多达 16 个转发类时,以下限制适用:
class
层次结构级别的和queue
语句[edit class-of-service forwarding-classes]
相互排斥。换句话说,您可以包括以下配置中的一种或另一种,但不能同时包括两种配置:[edit class-of-service forwarding-classes] queue queue-number class-name; [edit class-of-service forwarding-classes] class class-name queue-num queue-number;
使用基于 CoS 的转发功能时,不能使用转发策略配置 8 个以上的转发类。但是,如果尝试使用配置了 8 个以上的转发类来配置基于 CoS 的转发,提交失败并出现消息。因此,只能在转发等级为 8 个或 8 个以下的路由器上配置 CBF。在这种情况下,转发类到队列的映射可以是一对一或一对多。
将 8 个不同的转发类映射到 8 个不同的调度器,只能应用于支持 8 个队列的接口。如果将此类型的调度器映射应用于仅支持四个队列的接口,则提交失败。
建议将更改 PIC 的语句配置为支持八个队列,然后分两步应用八个队列计划器图。否则,提交可能会成功,但应用调度器图时 PIC 可能没有八个队列,从而生成错误。
您可以通过发出命令来确定分配给转发类的 show class-of-service forwarding-class
ID 编号。您可以通过发出 show class-of-service forwarding-table classifier mapping
命令来确定分类是否得到修复。在命令输出中 Table Type
,如果字段显示为 Fixed
,则分类是固定的。有关固定分类的更多信息,请参阅 将转发类应用于接口。
有关在 ATM2 IQ 接口上配置八个转发类的信息,请参阅 在 ATM 接口上启用八个队列。
在接口上启用八个队列
默认情况下,M320 和 T 系列路由器上的智能排队 (IQ)、智能排队 2 (IQ2)、智能排队增强型 (IQE) 和智能排队 2 增强型 (IQ2E) PIC 被限制为每个接口最多 4 个出口队列。以下过程介绍如何在这些接口上配置最多八个出口队列。
除了在层次结构级别配置八个 [edit chassis]
队列外,层级的配置 [edit class-of-service]
还必须支持每个接口八个队列。
每个 IQ PIC 的最大队列数可以为 4
或 8
。如果包括该 max-queues-per-interface
语句,则 IQ PIC 上的所有端口均会使用配置模式,而 IQ PIC 上的所有接口的最大队列数相同。
要在这些 PIC 上配置最多 8 个出口队列,
此过程介绍如何配置接口在 TX Matrix 或 TX Matrix Plus 路由器上支持的最大队列数。
除了在层次结构级别配置八个 [edit chassis]
队列外,层级的配置 [edit class-of-service]
还必须支持每个接口八个队列。
每个 IQ PIC 的最大队列数可以为 4
或 8
。如果包括该 max-queues-per-interface
语句,则 IQ PIC 上的所有端口均会使用配置模式,而 IQ PIC 上的所有接口的最大队列数相同。
要在这些 PIC 上配置最多 8 个出口队列,
[edit] user@host# edit chassis lcc number fpc slot-number pic pic-number
在这些接口上配置最多八个出口队列。
[edit chassis fpc slot-number pic pic-number] user@host# set max-queues-per-interface 8
数字值可以是
4
或8
。
要确定接口支持的队列数,请检查 CoS queues
命令的 show interfaces interface-name extensive
输出字段:
要查看接口支持的队列数:
user@host> show interfaces so-1/0/0 extensive CoS queues: 8 supported
如果包括该 max-queues-per-interface 4
语句,则可以配置所有四个端口,每个端口最多配置四个队列。
对于 M320 和 T 系列路由器上的 4 端口 OC3c/STM1 Type I 和 Type II PIC,在包括语句 max-queues-per-interface 8
时,可在端口 0 和 2 上配置最多 8 个队列。提交配置后,PIC 脱机并重新联机,仅端口 0 和 2 运行。端口 1 和 3 上无法配置任何接口。
对于四个 T3 和四 E3 PIC,在包括语句 max-queues-per-interface 8
时,您可以在端口 0 和 2 上配置最多 8 个队列。提交配置后,PIC 脱机并重新联机,仅端口 0 和 2 运行。端口 1 和 3 上无法配置任何接口。
包括 max-queues-per-interface
语句并提交配置时,IQ PIC 上的所有物理接口都会被删除并重新添加。此外,PIC 会脱机,然后立即联机。您不需要手动使 PIC 脱机和联机。只有在没有活动流量进入 IQ PIC 时,才应在四个队列和八个队列之间更改模式。
分配多个转发类和默认转发类
对于队列 0 到 3,如果将多个转发类分配给单个队列,则默认的转发类分配如下所示:
分配给队列 0 的第一个转发类将获取默认 BE 分类和调度。
分配给队列 1 的第一个转发类将获取默认的 EF 分类和调度。
分配给队列 2 的第一个转发类将获取默认的 AF 分类和调度。
分配给队列 3 的第一个转发类将获取默认 NC 分类和调度。
当然,您可以通过配置自定义分类和调度器来覆盖默认分类和计划。
如果未将转发类显式映射到队列 0 到 3,则各自的默认类会自动分配给这些队列。计算 16 个转发类时,必须包括自动分配给队列 0 到 3 的任何默认转发类总数。因此,当单个队列为队列 0、1、2 或 3 时,最多可将 13 个转发类映射到单个队列。当单个队列为队列 4、5、6 或 7 时,您最多可以将 12 个转发类映射到单个队列。总之,必须为每个队列 0 到 3 分配至少一个转发类(默认或其他),并且您可以将剩余的 12 个转发类 (16-4) 分配给任何队列。
例如,假设您为队列 0 分配两个转发类,而未为队列 1 到 3 分配任何转发类。软件会自动为队列 1 到 3 分配一个默认转发类。这意味着有 11 个转发类 (16-5) 可供您分配给队列 4 到 7。
有关转发类默认值的更多信息,请参阅 默认转发类。
示例:配置多达 16 个转发类
要配置 16 个转发类,请将两个转发类映射到每个队列。例如:
[edit] user@host# edit class-of-service forwarding-classes user@host# set class fc0 queue-num 0 user@host# set class fc1 queue-num 0 user@host# set class fc2 queue-num 1 user@host# set class fc3 queue-num 1 user@host# set class fc4 queue-num 2 user@host# set class fc5 queue-num 2 user@host# set class fc6 queue-num 3 user@host# set class fc7 queue-num 3 user@host# set class fc8 queue-num 4 user@host# set class fc9 queue-num 4 user@host# set class fc10 queue-num 5 user@host# set class fc11 queue-num 5 user@host# set class fc12 queue-num 6 user@host# set class fc13 queue-num 6 user@host# set class fc14 queue-num 7 user@host# set class fc15 queue-num 7
对于限制为四个队列的 PIC,将四个转发类映射到每个队列:
指定要映射的每个转发类和队列。
[edit] user@host# edit class-of-service restricted-queues user@host# set forwarding-class fc0 queue 0 user@host# set forwarding-class fc1 queue 0 user@host# set forwarding-class fc2 queue 0 user@host# set forwarding-class fc3 queue 0 user@host# set forwarding-class fc4 queue 1 user@host# set forwarding-class fc5 queue 1 user@host# set forwarding-class fc6 queue 1 user@host# set forwarding-class fc7 queue 1 user@host# set forwarding-class fc8 queue 2 user@host# set forwarding-class fc9 queue 2 user@host# set forwarding-class fc10 queue 2 user@host# set forwarding-class fc11 queue 2 user@host# set forwarding-class fc12 queue 3 user@host# set forwarding-class fc13 queue 3 user@host# set forwarding-class fc14 queue 3 user@host# set forwarding-class fc15 queue 3
如果将多个转发类映射到一个队列,则多个转发类必须引用同一时间表。要配置适用于限制为四个队列的接口的调度器图:
指定调度器映射名称,并将其与调度器配置和转发类相关联。
[edit] user@host# edit class-of-service scheduler-maps interface-restricted user@host# set forwarding-class be scheduler 00 user@host# set forwarding-class ef scheduler Q1 user@host# set forwarding-class ef1 scheduler Q1 user@host# set forwarding-class ef2 scheduler Q1 user@host# set forwarding-class af1 scheduler Q2 user@host# set forwarding-class af scheduler Q2 user@host# set forwarding-class nc scheduler Q3 user@host# set forwarding-class nc1 scheduler Q3
将转发类映射到受限制的队列。
[edit] user@host# edit class-of-service restricted-queues user@host# set forwarding-class be queue 0 user@host# set forwarding-class ef queue 1 user@host# set forwarding-class ef1 queue 1 user@host# set forwarding-class ef2 queue 1 user@host# set forwarding-class af queue 2 user@host# set forwarding-class af1 queue 2 user@host# set forwarding-class nc queue 3 user@host# set forwarding-class nc1 queue 3