示例:在 MPLS 标记的 IP 数据包中编写不同的 DSCP 和 EXP 值
在瞻博网络 M320 多服务边缘路由器和 T 系列核心路由器上,您可以选择性地将 MPLS 标记的 IPv4 和 IPv6 数据包的 DSCP 字段设置为 000000
。在同一数据包中,您可以根据配置的重写表设置 MPLS EXP 字段,该表基于您使用 BA 或多域分类器在传入数据包中设置的转发等级。
队列选择基于您在调度器图中分配的转发等级。这意味着,无论 DSCP 字段不变还是改写为 000000
,都可以将流量定向到单个输出队列。为此,必须配置匹配所选数据包的多域分类器,并使用操作对其进行修改 dscp 0
。
将 DSCP 字段选择性地标记到 0
,而不会影响输出队列分配,可能会很有用。例如,假设您需要使用 MPLS EXP 值为核心提供商路由器配置 CoS 应用程序。在移除 MPLS 标签的倒数第二个出口提供商边缘 (PE) 路由器上,CoS 位需要由另一个值提供,例如 DSCP 代码点。此案例说明了为什么在数据包中同时标记 DSCP 和 MPLS EXP 字段很有用。此外,能够以不同的方式标记这两个字段也很有用,因为核心提供商路由器的 CoS 规则可能与出口倒数倒数第二路由器的 CoS 规则不同。在出口处,与往常一样,您可以使用重写表来重写与需要设置的转发类对应的 MPLS EXP 值。
如果同时存在面向客户的接口和面向核心的接口,则可以按以下优先级顺序导出 EXP 值,同时添加 MPLS 标签:
CoS 重写操作提供的 EXP 值。
从堆栈的上一个标签派生的 EXP 值(MPLS 标签堆栈)。
IPv4 或 IPv6 优先级(第 3 层 VPN、第 2 层 VPN 和 VPLS 场景)。
对于 IPv4 流量, dscp 0
层级的操作 [edit firewall family inet filter filter-name term term-name then]
修改符有效。但是,对于 IPv6 流量,您可以在层次结构级别包含 traffic-class 0
操作修改符 [edit firewall family inet6 filter filter-name term term-name then]
来配置此功能。
在以下 IPv4 示例中,多域分类器术语 1
匹配来自特定 VRF 的 DSCP 001100
代码点的数据包,将位重写为 DSCP000000
,并将转发类 best-effort
设置为。术语 2
中,分类器匹配带有 DSCP 010110
代码点的数据包,并将转发类设置为 best-effort
。由于术语 2
不包含 dscp 0
操作修改符,因此 DSCP 010110
位保持不变。由于分类器将两个代码点 best-effort
的转发类设置为,因此两种流量类型都定向到同一输出队列。
如果在防火墙过滤器的 DSCP 匹配条件中配置位字符串,则必须在字符串前面添加字母“b”,否则匹配规则在提交时创建失败。
[edit] firewall { family inet { filter vrf-rewrite { term 1 { from { dscp b001100; } then { dscp 0; forwarding-class best-effort; } } term 2 { from { dscp b010110; } then { forwarding-class best-effort; } } } } }
应用多域分类器
将过滤器应用于与 VRF 对应的输入接口:
[edit] interfaces { so-0/1/0 { unit 0 { family inet { filter input vrf-rewrite; } } } }
dscp 0
输入和输出过滤器均支持该操作。您可以对非 MPLS 数据包以及进入 MPLS 网络的 IPv4 和 IPv6 数据包使用此功能。操作支持dscp 0
所有 IPv4 和 IPv6 防火墙过滤器匹配条件。
以下限制适用:
您可以使用多域分类器将 DSCP 字段重写为仅值 0。不支持其他值。
如果数据包与具有操作的
dscp 0
过滤器匹配,则数据包的传出 DSCP 值为0
,即使该数据包与重写规则匹配,并且重写规则配置为将数据包标记为非零值。该dscp 0
操作将覆盖路由器上配置的任何其他重写规则操作。尽管您可以对输入过滤器使用
dscp 0
操作,但输出过滤器和其他分类器不会看到已标记dscp 0
的数据包。相反,它们会根据数据包的原始传入 DSCP 值对数据包进行分类。数据包的 DSCP 值设置为0
在对数据包执行所有其他分类操作之后。