配置基于 CoS 的转发
您只能将基于 CoS 的转发 (CBF) 应用于一组定义的路由。因此,您必须配置策略语句,如以下示例所示:
[edit policy-options]
policy-statement my-cos-forwarding {
from {
route-filter destination-prefix match-type;
}
then {
cos-next-hop-map map-name;
}
}
此配置指定与路由过滤器匹配的路由受 指定的 CoS 下一跃点映射 map-name的约束。有关配置策略语句的详细信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南。
您可以在设备上配置 CBF,其中包含支持的转发类数量或更少数量以及仅默认转发类。在这种情况下,转发类到队列的映射可以是一对一,也可以是一对多。但是,当配置的转发类数量超过支持的数量时,无法配置 CBF。同样,在配置了 CBF 的情况下,配置的转发类数量不能超过支持数量加上默认转发类。
要指定 CoS 下一跃点映射,请在层次结构级别包含[edit class-of-service]该forwarding-policy语句:
[edit class-of-service] forwarding-policy { next-hop-map map-name { forwarding-class class-name { discard; lsp-next-hop [ lsp-regular-expression ]; next-hop [ next-hop-name ]; non-lsp-next-hop; } forwarding-class-default { discard; lsp-next-hop [ lsp-regular-expression ]; next-hop [next-hop-name]; non-lsp-next-hop; } } }
将 CBF 配置为 OSPF 作为内部网关协议 (IGP) 时,必须将下一跃点指定为接口名称或下一跃点别名,而不是 IPv4 或 IPv6 地址。之所以如此,是因为 OSPF 会添加路由,其中接口作为点对点接口的下一跃点;下一跃点不包含 IP 地址。有关示例配置,请参阅 示例:配置基于 CoS 的转发。
对于第 3 层 VPN,当您对从 VRF 实例中的远端提供商边缘 (PE) 路由器接收的路由使用基于类的转发时,软件只能根据收到的路由附带的属性来匹配路由。换句话说,可以基于 RIB 输入中的路由进行匹配。在这种情况下,route-filter您在层次结构级别中包含的[edit policy-options policy-statement my-cos-forwarding from]语句无效,因为策略检查的是bgp.l3vpn.0表,而不是表。vrf.inet.0
Junos 将 CoS 下一跃点映射应用于之前定义的下一跃点集;下一跃点本身可以位于路由设备上的任何传出接口上。例如,以下配置将一组转发类和下一跃点标识符相关联:
[edit class-of-service forwarding-policy]
next-hop-map map1 {
forwarding-class expedited-forwarding {
next-hop next-hop1;
next-hop next-hop2;
}
forwarding-class best-effort {
next-hop next-hop3;
lsp-next-hop lsp-next-hop4;
}
forwarding-class-default {
lsp-next-hop lsp-next-hop5;
}
}
在此示例中,是 next-hop N 某个下一跃点的 IP 地址或出口接口,并且 lsp-next-hop N 是与具有该标签的任何下一跃点相对应的正则表达式。Q1 到 QN 是一组映射到特定下一跃点的转发类。也就是说,当数据包与 Q1 到 QN 进行交换时,该数据包将通过与关联的下一跃点关联的接口转发出。
此配置具有以下含义:
-
单个转发类可以映射到多个标准下一跃点或 LSP 下一跃点。这意味着负载共享是在标准下一跃点或服务相同类值的 LSP 下一跃点之间完成的。为了使该方法正常工作,Junos OS 会创建等价下一跃点列表,并根据该转发类的标准负载共享规则转发数据包。
-
如果转发类配置包括 LSP 下一跃点和标准下一跃点,则 LSP 下一跃点优先于标准下一跃点。在前面的示例中,如果 和 都是
next-hop3应用到map1的路由的有效下一跃点,则转发表仅包含条目lsp-next-hop4。lsp-next-hop4 -
如果未指定所有可能的转发类,则
next-hop-map默认转发类将被选为默认 default-forwarding class 。 为下一跃点映射中不满足任何转发类的流量定义下一跃点。如果下一跳映射中未指定默认转发类,则会随机指定默认值。默认转发类是与队列 0 关联的类。 -
对于 LSP 下一跃点,Junos 使用 UNIX
regex(3)样式的正则表达式。例如,如果存在以下标签:lsp、lsp1、lsp2、lsp3语句lsp-next-hop lsp匹配lsp、lsp2lsp1、lsp3和 。如果您不希望出现此行为,则必须使用仅匹配lsp的锚字符lsp-next-hop " ^lsp$"。 -
路由过滤器不起作用,因为策略是针对表而不是
vrf.inet.0表进行bgp.l3vpn.0检查。
最后一步是将路由过滤器应用于导出到转发引擎的路由。这如以下示例所示:
routing-options {
forwarding-table {
export my-cos-forwarding;
}
}
此配置指示路由进程将路由插入与关联的下一跳 CBF 规则匹配 my-cos-forwarding 的转发引擎。
将配置应用于路由时,将使用以下算法:
-
如果路由是单个下一跃点路由,则所有流量都将流向该路由;也就是说,没有 CBF 生效。
-
对于每个下一跃点,关联相应的转发类。如果下一跃点显示在路由中,但未显示在映射中
cos-next-hop,则不会显示在转发表条目中。 -
如果下一跃点映射中未指定所有转发类,则使用默认转发类。如果未指定默认值,则默认值将分配给下一跃点映射中定义的最低类。
特定于平台的 CBF 行为
使用下表查看平台的特定于平台的行为。
| 平台 |
差异 |
|---|---|
| MX 系列 |
|
| PTX 系列 |
|