示例:为出站路由引擎和分布式协议处理者流量配置不同的队列和标记默认值
此示例说明如何在 IPv4 网络中配置受支持的路由器,以便路由引擎生成的流量和分布式协议处理方生成的流量被分配给不同的非默认队列,并在所有出口接口上用不同的非默认 DiffServ 代码点 (DSCP) 位进行标记。
借助此配置,您可以配置网络范围的优先级,以控制由路由器生成的平面协议 hello 数据包和保持激活数据包。M320 路由器中托管的 MX 系列路由器、M120 路由器和增强型 III FPC 上的出口接口支持此功能。
要求
此示例使用以下硬件和软件组件:
两台 MX80 路由器(R1 和 R2)均配备一个 20 端口千兆以太网 MIC 和 SFP。两个路由器通过 IPv4 网络直接连接。
Junos OS 13.2 或更高版本。
配置此示例之前,请在路由器 R1 上从端口 ge-1/0/19 和路由器 R2 上配置端口 ge-1/1/0 的双向转发检测 (BFD) 会话。
概述
在此示例中,您可以在 IPv4 网络中配置 MX80 路由器,以便将路由引擎生成的流量和分布式协议处理方生成的流量分配给不同的非默认队列,并用不同的非默认 DSCP 位标记。
分布式协议处理者源流量被放置在所有出口接口上的队列 7 中。在这些数据包中,第 3 层数据包在出口处使用 DSCP 位 001010 进行标记。
路由引擎源流量被置于所有出口接口上的队列 6 中。在这些数据包中,第 3 层数据包在出口处使用 DSCP 位000011标记。
由于此示例中的 MX80 路由器的接口托管在具有 SFP 的 20 端口千兆以太网 MIC 上,因此可以通过在 [edit class-of-service host-outbound-traffic]
层次结构级别包括配置语句来覆盖主机出站流量的默认队列和 DSCP 标记行为。在此示例中,您将使用 forwarding-class
and dscp-code-point
语句为分布式协议处理者生成的流量指定覆盖值。
此配置还会影响路由引擎生成的流量。
要配置路由引擎源流量的不同队列和 DSCP 标记,必须应用第二个覆盖配置。您可以配置一个 IPv4 防火墙过滤器,该过滤器使用 forwarding-class
和 dscp
操作指定覆盖值,并将该过滤器连接到路由器环路地址的出口。此配置会影响路由引擎源流量,但不会影响分布式协议处理者源流量。
配置
要为出口路由引擎和分布式协议处理器流量配置不同的队列和 DSCP 标记默认值,请执行以下操作:
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到层级的 [edit]
CLI 中。
路由器 R1
set firewall family inet filter f_bfd_source term 1 from forwarding-class control-traffic then count c_sent_bfd set firewall family inet filter f_bfd_source term 1 then accept set firewall family inet filter f_bfd_source term 2 from forwarding-class-except control-traffic then count c_sent_other set firewall family inet filter f_bfd_source term 2 then accept set forwarding-options family inet filter output bfd_source
路由器 R2
set class-of-service forwarding-classes queue-num 7 bfd_keepalive set class-of-service host-outbound-traffic forwarding-class bfd_keepalive set class-of-service host-outbound-traffic dscp-code-point 110000 set class-of-service forwarding-classes queue-num 6 re_control set firewall family inet filter f_out_loopback term 1 then forwarding-class re_control set firewall family inet filter f_out_loopback term 1 then dscp 001010 set firewall family inet filter f_out_loopback term 1 then accept set interfaces lo0 unit 0 family inet filter output f_out_loopback
配置 R1 数据包计数
逐步过程
要配置路由器 R1 以计算到达的数据包,标记为 network-control
转发类:
配置 IPv4 防火墙过滤器术语,用于对为转发类标记的
network-control
数据包进行计数。[edit] user@R1# set firewall family inet filter f_bfd_source term 1 from forwarding-class control-traffic then count c_sent_bfd user@R1# set firewall family inet filter f_bfd_source term 1 then accept
配置将所有其他数据包计算在一起的 IPv4 防火墙过滤器术语。
[edit] user@R1# set firewall family inet filter f_bfd_source term 2 from forwarding-class-except control-traffic then count c_sent_other user@R1# set firewall family inet filter f_bfd_source term 2 then accept
将防火墙过滤器应用于所有出口数据包。
[edit] user@R1# set forwarding-options family inet filter output bfd_source
配置 R2 队列以及主机出站流量的重新标记
逐步过程
要配置路由器 R2 以将主机出站流量置于队列 7 中并使用 DSCP 位 110000 重新标记第 3 层数据包:
bfd_keepalive
定义转发类并将其映射到队列 7。[edit] user@R2# set class-of-service forwarding-classes queue-num 7 bfd_keepalive
配置路由器,将所有出口接口上的分布式协议处理者源流量(以及路由引擎源的流量)置于队列 7 中。
[edit] user@R2# set class-of-service host-outbound-traffic forwarding-class bfd_keepalive
配置路由器,以使用 DSCP 位 110000 重新标记第 3 层分布式协议处理者源流量(以及路由引擎源流量),这与 ToS 位 1100 000 兼容。
[edit] user@R2# set class-of-service host-outbound-traffic dscp-code-point 110000
配置 R2 队列和路由引擎源流量的重新标记
逐步过程
要配置路由器 R2 以将路由引擎源的流量仅放置在队列 6 中并使用 DSCP 位 001010 重新标记第 3 层数据包:
re_control
定义转发类并将其映射到队列 6。[edit] user@R2# set class-of-service forwarding-classes queue-num 6 re_control
定义 IPv4 防火墙过滤器
f_out_loopback
,将匹配的数据包放在队列 6 中,使用 DSCP 位 001010 对匹配的第 3 层数据包进行重新标记,并接受所有匹配的数据包。[edit] user@R2# set firewall family inet filter f_out_loopback term 1 then forwarding-class re_control user@R2# set firewall family inet filter f_out_loopback term 1 then dscp 001010 user@R2# set firewall family inet filter f_out_loopback term 1 then accept
将过滤器连接到路由器的环路地址输出,以便过滤器操作仅适用于路由引擎源流量。
[edit] user@R2# set interfaces lo0 unit 0 family inet filter output f_out_loopback
完成设备配置后,提交配置。
[edit] user@R2# commit
结果
在配置模式下,输入 show class-of-service
、 show firewall
、 show forwarding-options
和 show interfaces
命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。
路由器 R1
user@R1# show firewall family inet { filter f_bfd_source { term 1 { from { forwarding-class control-traffic; } then { count c_sent_bfd; accept; } } term 2 { from { forwarding-class-except control-traffic; } then { count c_sent_other; accept; } } } }
user@R1# show forwarding-options family inet { filter { output bfd_source; } }
路由器 R2
user@R2# show class-of-service forwarding-classes { queue-num 6 re_control; queue-num 7 bfd_keepalive; } host-outbound-traffic { forwarding-class bfd_keepalive; dscp-code-point 110000; }
user@R2# show firewall family inet { filter f_out_loopback { term 1 { then { forwarding-class re_control; dscp 001010; accept; } } } }
user@R2# show interfaces lo0 { unit 0 { family inet { filter { output f_out_loopback; } } } }
验证
开始验证之前,在两个路由器上启用 BFD 会话。
确认配置工作正常。
验证 R1 在 BFD 会话中发送的流量的队列分配
目的
验证服务等级 (CoS) 转发类分配和从路由器 R1 上的 BFD 源端点发送的流量类型。
行动
在路由器 R1 的操作模式下,检查 BFD 数据包是否从路由器 R1 上的会话端点发送。如果没有 CoS 配置,命令输出会显示四个正在使用的转发类和四个出口队列的排队和传输流量统计信息。
user@R1> show interfaces queue ge-1/0/19 egress Physical interface: ge-1/0/19, Enabled, Physical link is Up Interface index: 175, SNMP ifIndex: 121 Forwarding classes: 8 supported, 4 in use Egress queues: 4 supported, 4 in use Queue: 0, Forwarding classes: best-effort Queued: ... Transmitted: ... Queue: 1, Forwarding classes: expedited-forwarding Queued: ... Transmitted: ... Queue: 2, Forwarding classes: assured-forwarding Queued: ... Transmitted: ... Queue: 3, Forwarding classes: network-control Queued: ... Transmitted: ...
意义
出口队列 3 的统计信息反映了发送至路由器 R2 的 BFD 会话流量。
验证路由器 R1 是否正在发送 BFD 流量
目的
验证路由器 R1 是否正在从其 BFD 会话端点发送 BFD 数据包。
行动
在路由器 R1 的操作模式下,检查 R1 发送 BFD 会话端点的 BFD 数据包计数是否继续递增。
user@R1> clear firewall filter f_bfd_source user@R1> show firewall filter f_bfd_source Filter: bfd_source Counters: Name Bytes Packets c_sent_bfd 2770 70 c_sent_other 0 0
user@R1> show firewall filter f_bfd_source Filter: bfd_source Counters: Name Bytes Packets c_sent_bfd 2182022 39482 c_sent_other 0 0
验证路由器 R2 是否正在接收 BFD 流量
目的
验证路由器 R2 是否在其 BFD 会话端点接收 BFD 数据包。
行动
在路由器 R2 的操作模式下,检查 BFD 会话端点是否接收发往路由引擎且 DSCP 位设置为 110000 的数据包,这是转发类的默认 DSCP CoS 值 network-control
。DSCP 位 110000 映射到 ToS 位 1100 0000,或 0xC0。
user@R2> monitor traffic extensive ge-1/1/0 layer2-headers Address resolution is ON. Use <no-resolve> to avoid any reverse lookup delay. Address resolution timeout is 4s. Listening on ge-1/1/0, capture size 1514 bytes 03:23:10.830472 bpf_flags 0x83, In Juniper PCAP Flags [Ext, no-L2, In], PCAP Extension(s) total length 16 Device Media Type Extension TLV #3, length 1, value: Ethernet (1) Logical Interface Encapsulation Extension TLV #6, length 1, value: Ethernet (14) Device Interface Index Extension TLV #1, length 2, value: 132 Logical Interface Index Extension TLV #4, length 4, value: 68 -----original packet----- PFE proto 2 (ipv4): (tos 0xc0, ttl 255, id 1511, offset 0, flags [none], proto: UDP (17), length: 52) 10.1.1.1.bfd-src > 10.1.1.2.bfd-ip: [udp sum ok] BFDv1, length: 24 One-hop Control, State Up, Flags: [Control Plane Independent], Diagnostic: No Diagnostic (0x00) Detection Timer Multiplier: 3 (30000 ms Detection time), BFD Length: 24 My Discriminator: 0x00000002, Your Discriminator: 0x00000001 Desired min Tx Interval: 10000 ms Required min Rx Interval: 10000 ms Required min Echo Interval: 0 ms
意义
示例输入数据包条目确认原始数据包被标记为 tos 0xC0
,这与默认转发类 network-control
相关联。