配置基于 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
。有关配置策略语句的更多信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南。
在 M 系列路由器(M120 和 M320 路由器除外)上,如果已使用输入接口上的多域过滤器设置转发类,则基于转发等级的匹配和 CBF 无法按预期工作。
从 Junos OS 17.2 版开始,具有 MPC 或 MS-DPC、VMX、PTX3000 路由器和 PTX5000 路由器的 MX 路由器支持为多达 16 个转发等级配置基于 CoS 的转发 (CBF)。所有其他平台最多支持 8 个转发类的 CBF。要为 MX 路由器上的 CBF 支持多达 16 个转发等级,请启用 enhanced-ip
层级 [edit chassis network-services]
。
您可以在支持的转发类数量或更少加上默认转发类的设备上配置 CBF。在这种情况下,转发类到队列的映射可以是一对一或一对多。但是,当配置的转发类数量超过支持的数量时,您无法配置 CBF。同样,配置 CBF 后,配置不能超过支持的转发类数量加上默认转发类。
要指定 CoS 下一跃点映射,请在 forwarding-policy
层级添加语句 [edit class-of-service]
:
[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-in 中的路由。在这种情况下,您在层次结构级别包含的route-filter
[edit policy-options policy-statement my-cos-forwarding from]
语句无效,因为策略检查的是bgp.l3vpn.0
表,而不是vrf.inet.0
表。
Junos OS 将 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
lsp-next-hop4
应用了路由map1
的有效下一跃点,则转发表仅包含条目lsp-next-hop4
。如果未
next-hop-map
指定所有可能的转发类,则默认转发类将被选为默认值。 default-forwarding class 为不满足下一跃点图中任何转发类的流量定义下一跃点。如果未在下一跃点映射中指定默认转发类,则随机指定默认值。默认转发类是与队列 0 关联的类。对于 LSP 下一跃点,Junos OS 使用 UNIX
regex(3)
样式正则表达式。例如,如果存在以下标签:、、lsp3
、语句lsp-next-hop lsp
匹配lsp
、lsp1
和lsp3
lsp2
。lsp2
lsp1
lsp
如果您不希望此行为,则必须使用锚点字符lsp-next-hop " ^lsp$"
(仅匹配lsp
)。路由过滤器不起作用,因为策略会
bgp.l3vpn.0
根据表而不是vrf.inet.0
表进行检查。
最后一步是将路由过滤器应用于导出到转发引擎的路由。以下示例中显示了这一点:
routing-options { forwarding-table { export my-cos-forwarding; } }
此配置指示路由进程将路由插入到与相关下一跃点 CBF 规则匹配 my-cos-forwarding
的转发引擎。
将配置应用于路由时,使用以下算法:
如果路由是单个下一跃点路由,则所有流量均会进入该路由;也就是说,没有 CBF 生效
对于每个下一跃点,关联适当的转发类。如果路由中出现了下一跃点,但未在地图上
cos-next-hop
,则它不会显示在转发表条目中。如果下一跃点映射中未指定所有转发类,则使用默认转发类。如果未指定默认值,则默认设置将分配给在下一跃点映射中定义的最低类。