在 MX、M 和 T 系列路由器上配置流量采样
通过流量采样,您可以将流量复制到物理接口卡 (PIC),当路由器将数据包转发至原始目标时,该物理接口卡会执行流量核算。您可以将路由器配置为在以下三个位置之一执行采样:
在路由引擎上,使用取样进程。要选择此方法,请使用过滤器(输入或输出)与包含语句的
then sample
匹配术语。在监控服务、自适应服务或多服务 PIC 上。
在内联数据路径上,无需服务密集端口集中器 (DPC)。要实现内联主动采样,请定义一个具有特定属性的采样实例。一个灵活的 PIC 集中器 (FPC) 仅支持一个实例:对于每个实例,每个系列都支持基于服务 PIC 的采样或内联采样。内联采样支持版本 9 和 IPFIX 流收集模板。
VPN 路由和转发 (VRF) 实例不支持基于路由引擎的采样。
配置防火墙过滤器进行流量采样
要为流量采样配置防火墙过滤器,必须执行以下任务:
创建一个防火墙过滤器,通过在层次结构级别包含
filter
语句来应用于要取样的[edit firewall family family-name]
逻辑接口。在 filterthen
语句中,必须指定操作修改符sample
和操作accept
。filter filter-name { term term-name { then { sample; accept; } } }
有关防火墙过滤器操作和操作修改器的详细信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南。
在层次结构级别包括
address
andfilter
语句,从而将过滤器应用于要采样流量的[edit interfaces interface-name unit logical-unit-number family family-name]
接口:address address { } filter { input filter-name; }
当您在接口和防火墙过滤器中配置流量采样时,以下先决条件适用于 M、MX 和 T 系列路由器:
如果在接口上的防火墙过滤器中为 inet 或 inet6 系列配置示例操作,而未配置转发选项设置,则如果同时配置端口镜像或流分流功能,则可能会发生操作问题。在这种情况下,与防火墙过滤器匹配的所有数据包都会被错误地发送到服务 PIC。
如果在层次结构级别包含
then sample
语句[edit firewall family inet filter filter-name term term-name]
以在防火墙过滤器中为 IPv4 数据包指定示例操作,则还必须在[edit forwarding-options sampling]
层次结构级别或instance instance-name family inet
层次结构级别包括family inet
语句[edit forwarding-options sampling]
。同样,如果在层次结构级别包含 thensample
语句[edit firewall family inet6 filter filter-name term term-name]
以在防火墙过滤器中为 IPv6 数据包指定示例操作,则还必须在[edit forwarding-options sampling]
层次结构级别或层次结构级别instance instance-name family inet6
包含family inet6
语句[edit forwarding-options sampling]
。否则,当您尝试提交配置时,将发生提交错误。此外,如果在逻辑接口上配置流量采样,包括层次结构级别的采样输入或采样输出语句
[edit interface interface-name unit logical-unit-number]
,则还必须在family inet | inet6
[edit forwarding-options sampling]
层次结构级别或instance instance-name family inet | inet6
层次结构级别包含语句[edit forwarding-options sampling]
。
在逻辑接口上配置流量采样
要在任何逻辑接口上配置流量采样,请在层级包含采样语句 [edit forwarding-options]
,以启用采样并指定非零采样速率:
sampling { input { rate number; run-length number; max-packets-per-second number; maximum-packet-length bytes; }
使用基于路由引擎的采样时,请通过包含 max-packets-per-second
语句来指定阈值流量值。值是要采样的最大数据包数,超过此数,采样机制开始丢弃数据包。范围从 0 到 65,535。值 0 指示数据包转发引擎不采样任何数据包。默认值为 1000。
配置活动监控并在语句中 output
指定监控服务、自适应服务或多服务 PIC 时,或者配置内联采样时, max-packets-per-second
将忽略该值。
通过设置和 run-length
的值rate
来指定采样率(请参阅图 1)。

请勿在启用了基于 PIC 的流监控的逻辑接口上 ms-
配置入口采样,这会导致不希望的流监控行为,并可能导致对单个数据包进行重复采样。从 Junos OS 15.1 版开始,当您尝试在此接口上配置入口流量采样时,将发生提交错误。在 Junos OS 14.2 及更早版本中,不会发生提交错误,但不应在此接口上配置入口流量采样。
如果在 ms-fpc/pic/port.logical-unit 接口上启用了基于 PIC 的流监控,则当您尝试在此接口上配置入口流量采样时,将发生提交检查错误。之所以出错,是因为逻辑接口上的 ms-
入口采样和基于 PIC 的流监控操作组合会导致意外的流监控行为,并可能导致对单个数据包进行重复采样。您不得在启用了基于 PIC 的流监控的逻辑接口上 ms-
配置入口采样。
该 rate
语句指定要采样的数据包比例。例如,如果配置速率为 10, x 则每 10 个中的数据包数将取样,其中 x=运行长度 + 1。默认情况下,速率为 0,这意味着不会对流量进行采样。
该 run-length
语句指定初始单数据包触发事件后要取样的匹配数据包数。默认情况下,运行长度为 0,这意味着在触发事件后不再采样流量。范围从 0 到 20。配置大于 0 的运行长度后,您就可以根据已取样的数据包进行取样。
run-length
MX80 路由器不支持和maximum-packet-length
配置语句。
如果未包含语句 input
,则禁用采样。
要收集文件中的取样数据包,请将语句file
[edit forwarding-options sampling output]
包含在层次结构级别。输出文件格式在本章后面将讨论。
采样一次
要仅对数据包进行显式采样一次用于主动监控,请将语句sample-once
[edit forwarding-options sampling]
包含在层次结构级别:
sample-once;
设置此选项可避免在入口接口和出口接口均启用采样的情况下重复数据包,并简化对取样流量的分析。
保留出口取样或镜像数据包的预写 ToS 值
从 Junos OS 14.1 版开始,您可以在出口取样或镜像数据包中保留预规范化服务类型 (ToS) 值。在 pre-rewrite-tos
层次结构级别包括语句 [edit forwarding-options sampling]
。
在基于 MPC 的接口上,您可以配置 ToS 重写,包括使用服务类 (CoS) 配置在 rewrite-rules dscp rule_name
层次结构级别包含语句 [edit class-of-service interfaces interface-name unit logical-unit-number]
,或者在层次结构级别包含该 dscp
语句 [edit firewall family family-name filter filter-name term term-name then]
来使用防火墙过滤器配置。如果配置了 ToS 重写,则默认情况下,出口镜像或取样副本将包含重写后的 ToS 值。 pre-rewrite-tos
通过配置,您可以在取样或镜像的数据包中保留预写 ToS 值。
如果在出口接口上同时使用 CoS 和防火墙过滤器配置配置 ToS 重写,并且
pre-rewrite-tos
同时配置了语句,则出口取样数据包将包含使用防火墙过滤器配置设置的 DSCP 值。但是,如果未配置语句pre-rewrite-tos
,则出口取样数据包将包含由 CoS 配置设置的 DSCP 值。pre-rewrite-tos
使用语句,您可以配置保留预规范化 ToS 值,仅用于在和family inet6
下family inet
完成的采样。无法在层级配置
[edit logical-systems]
此功能。只能在配置下的forwarding-option
全局级别进行配置。在入口接口和出口接口上使用防火墙过滤器配置 ToS 重写时,出口取样数据包包含入口 ToS 重写配置(如果配置了语句)设置的
pre-rewrite-tos
DSCP 值。但是,如果未配置语句pre-rewrite-tos
,则出口取样数据包将包含由出口防火墙过滤器的 ToS 重写配置设置的 DSCP 值。如果配置了
pre-rewrite-tos
语句,并在层次结构级别执行[edit forwarding-options]
停用或删除操作,pre-rewrite-tos
则配置仍将处于活动状态。要禁用此类情况的配置pre-rewrite-tos
,必须在层次结构级别上显式停用或删除pre-rewrite-tos
语句[edit forwarding-options sampling]
,然后才能在[edit forwarding-options]
层次结构级别执行停用或删除操作。
配置流量采样输出
要配置流量采样输出,请在层级添加 [edit forwarding-options sampling family (inet | inet6 | mpls) output]
以下语句:
aggregate-export-interval seconds; flow-active-timeout seconds; flow-inactive-timeout seconds; extension-service service-name; flow-server hostname { aggregation { autonomous-system; destination-prefix; protocol-port; source-destination-prefix { caida-compliant; } source-prefix; } autonomous-system-type (origin | peer); (local-dump | no-local-dump); port port-number; source-address address; version format; version9 { template template-name; } } interface interface-name { engine-id number; engine-type number; source-address address; } file { disable; filename filename; files number; size bytes; (stamp | no-stamp); (world-readable | no-world-readable); }
要配置 MX 系列路由器上的内联流监控,请在inline-jflow
层级添加语句[edit forwarding-options sampling instance instance-name family (inet | inet6 | mpls) output]
。内联采样仅支持一种称为 IP_FIX 的新格式,该格式使用 UDP 作为传输协议。配置内联采样时,必须在层次结构级别和[edit services flow-monitoring]
层次结构级别包括version-ipfix
语句[edit forwarding-options sampling instance instance-name family (inet | inet6 | mpls) output flow-server address]
。有关配置内联流监控的更多信息,请参阅使用路由器、交换机或 NFX250 配置内联活动流监控。
要将取样流量定向到流监控接口,请添加语句 interface
。 engine-id
和 engine-type
语句指定接口的标识和类型编号;它们基于灵活 PIC 集中器 (FPC)、PIC 和插槽编号以及机箱类型动态生成。语句 source-address
用于指定流量源。
从 Junos OS 19.3R1 版开始,要配置瞻博网络 Sky Advanced Threat Prevention (ATP) 的内联流监控,请将语句flow-server
[edit forwarding-options sampling instance instance-name family (inet | inet6 | mpls) output]
包含在层次结构级别。内联采样仅支持一种称为 IP_FIX 的新格式,该格式使用 UDP 作为传输协议。配置内联采样时,必须在层次结构级别和[edit services flow-monitoring]
层次结构级别包括version-ipfix
语句[edit forwarding-options sampling instance instance-name family (inet | inet6 | mpls) output flow-server address]
。
要配置流采样第 9 版输出,需要在层次结构级别包含 template
语句 [edit forwarding-options sampling output version9]
。有关 cflowd 的信息,请参阅 启用流聚合。
配置aggregate-export-interval
丢弃核算介绍了该语句,配置流监控中介绍了 flow-active-timeout
和flow-inactive-timeout
语句。
流量采样结果会自动保存到/var/tmp 目录中的文件中。要收集文件中的取样数据包,请将语句file
[edit forwarding-options sampling family inet output]
包含在层次结构级别:
file { disable; filename filename; files number; size bytes; (stamp | no-stamp); (world-readable | no-world-readable); }
流量采样输出格式
流量采样输出保存到 ASCII 文本文件中。以下是保存到/var/tmp 目录中文件的流量采样输出的示例。输出文件中的每一行都包含一个取样数据包的信息。您可以选择为每行显示时间戳。
每组 1000 个数据包之后重复列标头。
# Apr 7 15:48:50 Time Dest Src Dest Src Proto TOS Pkt Intf IP TCP addr addr port port len num frag flags Apr 7 15:48:54 192.168.9.194 192.168.9.195 0 0 1 0x0 84 8 0x0 0x0 Apr 7 15:48:55 192.168.9.194 192.168.9.195 0 0 1 0x0 84 8 0x0 0x0 Apr 7 15:48:56 192.168.9.194 192.168.9.195 0 0 1 0x0 84 8 0x0 0x0 Apr 7 15:48:57 192.168.9.194 192.168.9.195 0 0 1 0x0 84 8 0x0 0x0 Apr 7 15:48:58 192.168.9.194 192.168.9.195 0 0 1 0x0 84 8 0x0 0x0
要为文件 my-sample
设置时间戳选项,请输入以下内容:
[edit forwarding-options sampling output file] user@host# set filename my-sample files 5 size 2m world-readable stamp;
每当切换时间戳选项时,文件中会包含一个新标头。如果设置选项 stamp
,将显示 Time
字段。
# Apr 7 15:48:50 # Time Dest Src Dest Src Proto TOS Pkt Intf IP TCP # addr addr port port len num frag flags # Feb 1 20:31:21 # Dest Src Dest Src Proto TOS Pkt Intf IP TCP # addr addr port port len num frag flags
跟踪流量采样操作
跟踪操作跟踪所有流量采样操作,并将其记录在/var/log 目录中的日志文件中。默认情况下,此文件名为 /var/log/sampled。默认文件为 128K,10 个文件先创建,第一个文件将被覆盖。
要跟踪流量采样操作,请将语句traceoptions
[edit forwarding-options sampling]
包含在层次结构级别:
traceoptions { no-remote-trace; file filename <files number> <size bytes> <match expression> <world-readable | no-world-readable>; }
流量采样示例
示例:对单个 SONET/SDH 接口进行采样
以下配置从单个 SONET/SDH 接口上所有流量的一小部分收集统计抽样信息,并收集到名为的 sonet-samples.txt
文件中。
创建过滤器:
[edit firewall family inet] filter { input sample-sonet { then { sample; accept; } } }
将过滤器应用于 SONET/SDH 接口:
[edit interfaces] so-0/0/1 { unit 0 { family inet { filter { input sample-sonet; } address 10.127.68.254/32 { destination 172.16.74.7; } } } }
最后,配置流量采样:
[edit forwarding-options] sampling { input { family inet { rate 100; run-length 2; } } family inet { output { file { filename sonet-samples.txt; files 40; size 5m; } } } }
示例:对来自单个 IP 地址的所有流量进行采样
以下配置会收集有关进入特定千兆以太网端口(源自单一源 IP 地址)上路由器的每个数据包的 172.16.92.31
统计信息,并将其收集到名为的 samples-172-16-92-31.txt
文件中。
创建过滤器:
[edit firewall family inet] filter one-ip { term get-ip { from { source-address 172.16.92.31; } then { sample; accept; } } }
将过滤器应用于千兆以太网接口:
[edit interfaces] ge-4/1/1 { unit 0 { family inet { filter { input one-ip; } address 10.45.92.254; } } }
最后,收集所有候选样本的统计数据;在本案例中,请收集所有统计数据:
[edit forwarding-options] sampling { input { family inet { rate 1; } } family inet { output { file { filename samples-172-16-92-31.txt; files 100; size 100k; } } } }
示例:对所有 FTP 流量进行采样
以下配置在特定 T3 接口的输出路径中使用 FTP 数据传输协议收集一定百分比的数据包统计信息,并在名为 t3-ftp-traffic.txt
的文件中收集信息。
创建过滤器:
[edit firewall family inet] filter ftp-stats { term ftp-usage { from { destination-port [ftp ftp-data]; } then { sample; accept; } } }
将过滤器应用于 T3 接口:
[edit interfaces] t3-7/0/2 { unit 0 { family inet { filter { input ftp-stats; } address 10.35.78.254/32 { destination 10.35.78.4; } } } }
最后,收集 10% 的候选样本的统计数据:
[edit forwarding-options] sampling { input { family inet { rate 10; } } family inet { output { file { filename t3-ftp-traffic.txt; files 50; size 1m; } } } }
pre-rewrite-tos
层次结构级别包括语句
[edit forwarding-options sampling]
。