示例:为多域分类器配置和应用防火墙过滤器
此示例说明如何配置防火墙过滤器,以使用多域分类器对流量进行分类。分类器在到达接口时检测到感兴趣的服务等级 (CoS) 数据包。当简单行为聚合 (BA) 分类器不足以对数据包进行分类、对等路由器未标记 CoS 位或对等路由器的标记不可信时,使用多域分类器。
要求
为了验证此过程,此示例使用流量生成器。流量生成器可以是基于硬件的,也可以是基于服务器或主机上运行的软件。
运行 Junos OS 的设备上广泛支持此过程中的功能。此处展示的示例已在运行 Junos OS 10.4 版的 MX 系列路由器上进行了测试和验证。
概述
分类器是在数据包进入路由器或交换机时进行检测的软件操作。将检查数据包标头内容,此检查将确定当网络变得太忙,难以处理所有数据包,您希望您的设备智能地丢弃数据包,而不是不分青红皂白地丢弃数据包时,如何处理数据包。检测感兴趣数据包的一种常用方法是通过源端口号。此示例使用 TCP 端口号 80 和 12345,但多域分类器可以使用防火墙过滤器匹配条件来使用数据包检测的许多其他匹配标准。此示例中的配置指定将具有源端口 80 的 TCP 数据包分类为 BE-data 转发类和队列编号 0。源端口 12345 的 TCP 数据包分为高级数据转发类和队列编号 1。
当数据包进入自治系统 (AS) 时,多域分类器通常用于网络边缘。
在此示例中,您将配置防火墙过滤器 mf-分类器,并在设备 R1 上指定一些自定义转发类。在指定自定义转发类时,还需将每个类与一个队列相关联。
分类器操作如图 1 所示。
您可以在每个面向客户或面向主机且需要过滤器的接口上应用多域分类器的防火墙过滤器作为输入过滤器。设备 R1 上的传入接口为 ge-1/0/1。在传出接口上验证分类和队列分配。传出接口是设备 R1 的 ge-1/0/9 接口。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层级的 [edit]
CLI 中,然后从配置模式进入 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 的 TCP 流量(HTTP 流量)放入与队列 0 关联的 BE-data 转发类中。
[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 关联的高级数据转发类中。
[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 class-of-service
show firewall
命令以确认show interfaces
您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以更正配置。
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 将递增。