重写数据包标头以确保转发行为
当数据包进入或退出网络时,边缘路由器可能需要更改数据包的服务等级 (CoS) 设置。 重写规则 设置数据包标头中 CoS 位的值。每个重写规则都会读取与数据包关联的当前转发类和丢失优先级信息,从表中定位所选的 CoS 值,并将此 CoS 值写入数据包标头。
实际上,重写规则会执行与数据包进入路由设备时使用的行为聚合 (BA) 分类器相反的功能。当数据包离开路由平台时,最终 CoS 操作通常是应用重写规则。
您可以配置重写规则以更改边缘路由器出站接口上传出数据包中的 CoS 值,以满足目标对等方的策略。这样,相邻网络中的下游路由设备就可以将每个数据包分类到相应的服务组中。
此外,您通常需要重写边缘路由器的入站接口上的给定标记(IP 优先级、差异化服务代码点 [DSCP]、IEEE 802.1p 或 MPLS EXP 设置),以便适应核心设备的 BA 分类。
图 1 显示了通过四个路由设备的数据包流。路由器 A 重写传入数据包中的 CoS 位,以适应由路由器 B 和 C 执行的 BA 分类。路由器 D 会更改数据包的 CoS 位,然后再将其传输到相邻网络。
对于每个传入数据包,入口分类器都会将入口 CoS 位解码为转发类和数据包丢失优先级 (PLP) 组合。出口 CoS 信息取决于处于活动状态的重写标记类型,如下所示:
-
对于多协议标签交换 (MPLS) EXP 和 IEEE 802.1 重写标记,值源自转发类和 重写规则中的 PLP 值。MPLS EXP 和 IEEE 802.1 标记不会保留,因为它们属于第 2 层封装的一部分。
-
对于 IP 优先级和 DiffServ 代码点 (DSCP) 重写标记,标记会更改服务类型 (ToS) 字节上的前三位,而后三位保持不变。
要配置 CoS 重写规则,请定义重写规则并将其应用于接口。在层次结构级别包括 [edit class-of-service]
以下语句:
[edit class-of-service] interfaces { interface-name { unit logical-unit-number { rewrite-rules { dscp (rewrite-name | default)protocol protocol-types; dscp-ipv6 (rewrite-name | default); exp (rewrite-name | default)protocol protocol-types; exp-push-push-push default; exp-swap-push-push default; ieee-802.1 (rewrite-name | default) vlan-tag (outer | outer-and-inner); ieee-802.1ad (rewrite-name | default) vlan-tag (outer | outer-and-inner); inet-precedence (rewrite-name | default)protocol protocol-types; } } } } rewrite-rules { (dscp | dscp-ipv6 | exp | frame-relay-de | ieee-802.1 | inet-precedence) rewrite-name { import (rewrite-name | default); forwarding-class class-name { loss-priority level code-point (alias | bits); } } }