示例:为多域分类器配置和应用防火墙过滤器
此示例说明如何配置防火墙过滤器,以便使用多域分类器对流量进行分类。分类器会检测到服务等级 (CoS) 到达接口时感兴趣的数据包。当简单行为聚合 (BA) 分类器不足以对数据包进行分类时,当对等路由器没有标记 CoS 位或对等路由器的标记不受信任时,将使用多域分类器。
要求
要验证此过程,此示例使用流量生成器。流量生成器可以是基于硬件的,也可以是服务器或主机上运行的软件。
此过程中的功能在运行 Junos OS 的设备上得到广泛支持。此示例在运行 Junos OS 版本 10.4 的 MX 系列路由器上经过测试和验证。
概述
分类器是一种软件操作,用于在数据包进入路由器或交换机时对其进行检查。对数据包标头内容进行检查,此检查将确定当网络变得太忙而无法处理所有数据包时如何处理数据包,并且您希望您的设备智能地丢弃数据包,而不是不分青红皂白地丢弃数据包。检测兴趣数据包的一种常见方法是按源端口号。此示例中使用了 TCP 端口编号 80 和 12345,但使用防火墙过滤器匹配条件的多域分类器提供了许多其他数据包检测匹配标准。此示例中的配置指定具有源端口 80 的 TCP 数据包分类为 BE-数据转发类和队列编号 0。带源端口 12345 的 TCP 数据包分类为 Premium 数据转发类和队列编号 1。
多域分类器通常在网络边缘使用,因为数据包进入自治系统 (AS)。
在此示例中,您可配置防火墙过滤器 mf 分类器,并在设备 R1 上指定一些自定义转发类。在指定自定义转发类时,您还会将每个班级与一个队列相关联。
分类器操作如 图 1 所示。

您可在需要过滤器的每个面向客户或面向主机的接口上应用多域分类器的防火墙过滤器作为输入过滤器。传入接口在设备 R1 上为 ge-1/0/1。传出接口上将验证分类和队列分配。传出接口是设备 R1 的 ge-1/0/9 接口。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改与网络配置匹配所需的任何详细信息,将命令复制并粘贴到层级的 CLI 中 [edit]
,然后从配置模式进入 commit
。
设备 R1
set interfaces ge-1/0/1 description to-host set interfaces ge-1/0/1 unit 0 family inet filter input mf-classifier set interfaces ge-1/0/1 unit 0 family inet address 172.16.50.2/30 set interfaces ge-1/0/9 description to-R2 set interfaces ge-1/0/9 unit 0 family inet address 10.30.0.1/30 set class-of-service forwarding-classes class BE-data queue-num 0 set class-of-service forwarding-classes class Premium-data queue-num 1 set class-of-service forwarding-classes class Voice queue-num 2 set class-of-service forwarding-classes class NC queue-num 3 set firewall family inet filter mf-classifier term BE-data from protocol tcp set firewall family inet filter mf-classifier term BE-data from port 80 set firewall family inet filter mf-classifier term BE-data then forwarding-class BE-data set firewall family inet filter mf-classifier term Premium-data from protocol tcp set firewall family inet filter mf-classifier term Premium-data from port 12345 set firewall family inet filter mf-classifier term Premium-data then forwarding-class Premium-data set firewall family inet filter mf-classifier term accept-all-else then accept
设备 R2
set interfaces ge-1/0/9 description to-R1 set interfaces ge-1/0/9 unit 0 family inet address 10.30.0.2/30
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 Junos OS CLI 用户指南中的配置模式下使用 CLI 编辑器。
要配置设备 R1:
-
配置设备接口。
[edit interfaces] user@R1# set ge-1/0/1 description to-host user@R1# set ge-1/0/1 unit 0 family inet address 172.16.50.2/30 user@R1# set ge-1/0/9 description to-R2 user@R1# set ge-1/0/9 unit 0 family inet address 10.30.0.1/30
-
配置自定义转发类和相关队列编号。
[edit class-of-service forwarding-classes] user@R1# set BE-data queue-num 0 user@R1# set Premium-data queue-num 1 user@R1# set Voice queue-num 2 user@R1# set NC queue-num 3
-
配置防火墙过滤器术语,将带有 80 源端口 (HTTP 流量)的 TCP 流量放入与队列 0 相关联的 BE 数据转发类。
[edit firewall family inet filter mf-classifier] user@R1# set term BE-data from protocol tcp user@R1# set term BE-data from port 80 user@R1# set term BE-data then forwarding-class BE-data
-
配置防火墙过滤器术语,将带有 12345 源端口的 TCP 流量放入与队列 1 相关联的 Premium 数据转发类。
[edit firewall family inet filter mf-classifier] user@R1# set term Premium-data from protocol tcp user@R1# set term Premium-data from port 12345 user@R1# set term Premium-data then forwarding-class Premium-data
-
在防火墙过滤器末尾配置接受所有其他流量的默认术语。
否则,到达接口且未被防火墙过滤器明确接受的所有流量将被丢弃。
[edit firewall family inet filter mf-classifier] user@R1# set term accept-all-else then accept
-
将防火墙过滤器应用到 ge-1/0/1 接口作为输入过滤器。
[edit interfaces] user@R1# set ge-1/0/1 unit 0 family inet filter input mf-classifier
结果
在配置模式下,输入 show interfaces
、 命令show class-of-service
show firewall
以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@R1# show interfaces ge-1/0/1 { description to-host; unit 0 { family inet { filter { input mf-classifier; } address 172.16.50.2/30; } } } ge-1/0/9 { description to-R2; unit 0 { family inet { address 10.30.0.1/30; } } }
user@R1# show class-of-service forwarding-classes { class BE-data queue-num 0; class Premium-data queue-num 1; class Voice queue-num 2; class NC queue-num 3; }
user@R1# show firewall family inet { filter mf-classifier { term BE-data { from { protocol tcp; port 80; } then forwarding-class BE-data; } term Premium-data { from { protocol tcp; port 12345; } then forwarding-class Premium-data; } term accept-all-else { then accept; } } }
如果完成设备配置,请在配置模式下输入 commit
。
验证
确认配置工作正常。
检查 CoS 设置
目的
确认转发类配置正确。
行动
从设备 R1 运行 show class-of-service forwardng-classes
命令。
user@R1> show class-of-service forwarding-class Forwarding class ID Queue Restricted queue Fabric priority Policing priority SPU priority BE-data 0 0 0 low normal low Premium-data 1 1 1 low normal low Voice 2 2 2 low normal low NC 3 3 3 low normal low
意义
输出显示已配置的自定义分类器设置。
将 TCP 流量发送到网络中并监控队列放置
目的
请确保感兴趣的信息流发送出预期的队列。
行动
清除设备 R1 传出接口上的接口统计信息。
user@R1> clear interfaces statistics ge-1/0/9
使用流量生成器将 50 TCP 端口 80 数据包发送至设备 R2 或其他某些下游设备。
在设备 R1 上,检查队列计数器。
请注意,检查下游输出接口上的队列计数器,而不是传入接口上的计数器。
user@R1> show interfaces extensive ge-1/0/9 | find "Queue counters" Queue counters: Queued packets Transmitted packets Dropped packets 0 50 50 0 1 0 57 0 2 0 0 0 3 0 0 0
使用流量生成器将 50 TCP 端口 12345 数据包发送至设备 R2 或其他某些下游设备。
[root@host]# hping 172.16.60.1 -c 50 -s 12345 -k
在设备 R1 上,检查队列计数器。
user@R1> show interfaces extensive ge-1/0/9 | find "Queue counters" Queue counters: Queued packets Transmitted packets Dropped packets 0 50 50 0 1 50 57 0 2 0 0 0 3 0 0 0
意义
输出显示数据包分类正确。在 TCP 数据包中使用端口 80 时,队列 0 将递增。使用端口 12345 时,队列 1 将递增。