在 MX、M 和 T Series 路由器上配置流量采样
通过流量采样,您可以将流量复制到物理接口卡 (PIC),该物理接口卡会在路由器将数据包转发到其原始目标时执行流量记账。您可以将路由器配置为在以下三个位置之一执行采样:
-
在路由引擎上,使用采样进程。要选择此方法,请将过滤器(输入或输出)与包含语句的
then sample匹配术语一起使用。 -
在监控服务、自适应服务或多服务 PIC 上。
-
在内联数据路径上,无需服务密集端口集中器 (DPC)。要执行此内联活动采样,请定义具有特定属性的采样实例。一个灵活 PIC 集中器 (FPC) 只能支持一个实例;对于每个实例,每个系列都支持基于服务 PIC 的采样或内联采样。内联采样支持版本 9 和 IPFIX 流收集模板。
VPN 路由和转发 (VRF) 实例不支持基于路由引擎的采样。
配置用于流量采样的防火墙过滤器
要为流量采样配置防火墙过滤器,您必须执行以下作:
-
通过在层次结构级别包含
filter[edit firewall family family-name]语句,创建要应用于要采样的逻辑接口的防火墙过滤器。在 filterthen语句中,必须指定 action 修饰符sample和 actionaccept。filter filter-name { term term-name { then { sample; accept; } } }
有关防火墙过滤器作和作修改器的详细信息,请参阅路由 策略、防火墙过滤器和流量监管器用户指南。
-
通过在层次结构级别包含
[edit interfaces interface-name unit logical-unit-number family family-name]andaddressfilter语句,将过滤器应用于要对流量进行采样的接口:address address { } filter { input filter-name; }
在接口和防火墙过滤器中配置流量采样时,以下先决条件适用于 M、MX 和 T Series 路由器:
-
如果在接口上的 inet 或 inet6 系列的防火墙过滤器中配置示例作,但未配置转发选项设置,则同时配置端口镜像或流监测功能时,可能会出现作问题。在这种情况下,与防火墙过滤器匹配的所有数据包都会被错误地发送到服务 PIC。
-
如果在层次结构级别包含
then sample[edit firewall family inet filter filter-name term term-name]该语句以在 IPv4 数据包的防火墙过滤器中指定示例作,则还必须在层次结构级别包含[edit forwarding-options sampling]该family inet语句或在层次结构级别包含[edit forwarding-options sampling]该instance instance-name family inet语句。同样,如果您在层次结构级别包含[edit firewall family inet6 filter filter-name term term-name]thensample语句以在防火墙过滤器中为 IPv6 数据包指定示例作,则还必须在层次结构级别包含 said 语句[edit forwarding-options sampling]或instance instance-name family inet6在层次结构级别添加family inet6[edit forwarding-options sampling]该语句。否则,当您尝试提交配置时,将发生提交错误。 -
此外,如果通过在层次结构级别上
[edit interface interface-name unit logical-unit-number]包含 sampling input 或 sampling output 语句来配置逻辑接口上的流量采样,则还必须在层次结构级别包含[edit forwarding-options sampling]该family inet | inet6语句,或instance instance-name family inet | inet6在层次结构级别包含[edit forwarding-options sampling]该语句。
在逻辑接口上配置流量采样
要在任何逻辑接口上配置流量采样,请启用采样并通过在层次结构级别上 [edit forwarding-options] 包含 sampling 语句来指定非零采样率:
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 路由器上不支持 and maximum-packet-length configuration 语句。
如果未包含该 input 语句,则采样将被禁用。
要在文件中收集采样数据包,请在层次结构级别包含[edit forwarding-options sampling output]该file语句。本章稍后将讨论输出文件格式。
一次采样
要仅对数据包进行一次显式采样以进行主动监控,请在层次结构级别包含[edit forwarding-options sampling]该sample-once语句:
sample-once;
在入口接口和出口接口上都启用了采样时,设置此选项可避免重复数据包,并简化对采样流量的分析。
保留出口采样或镜像数据包的预重写 ToS 值
从 Junos OS 14.1 版开始,您可以在出口采样或镜像数据包中保留预标准化服务类型 (ToS) 值。在层次结构级别包括[edit forwarding-options sampling]该pre-rewrite-tos语句。
在基于 MPC 的接口上,您可以使用服务等级 (CoS) 配置rewrite-rules dscp rule_name 配置 ToS 重写(方法是在层次结构级别包含[edit class-of-service interfaces interface-name unit logical-unit-number]该语句),或者使用防火墙过滤器配置(在层次结构级别包含[edit firewall family family-name filter filter-name term term-name then]该语句)。dscp如果配置了 ToS 重写,则默认情况下,出口镜像或采样副本包含重写后的 ToS 值。通过此pre-rewrite-tos配置,您可以在采样或镜像数据包中保留预重写 ToS 值。
-
如果同时使用 CoS 和防火墙过滤器配置在出口接口上配置了 ToS 重写,并且还配置了该
pre-rewrite-tos语句,则出口采样数据包将包含使用防火墙过滤器配置设置的 DSCP 值。但是,如果未配置该pre-rewrite-tos语句,则出口采样数据包将包含 CoS 配置设置的 DSCP 值。 -
使用该
pre-rewrite-tos语句,您可以配置仅为在 和family inet6下family inet完成的采样保留预规范化 ToS 值。 -
不能在层次结构级别配置
[edit logical-systems]此功能。只能在配置下的forwarding-option全局级别进行配置。 -
当在入口和出口接口上使用防火墙过滤器配置 ToS 重写时,如果配置了该语句,则
pre-rewrite-tos出口采样数据包将包含入口 ToS 重写配置设置的 DSCP 值。但是,如果未配置该pre-rewrite-tos语句,则出口采样数据包将包含由出口防火墙过滤器的 ToS 重写配置设置的 DSCP 值。 -
如果已配置该
pre-rewrite-tos语句,并在层次结构级别执行[edit forwarding-options]停用或删除作,pre-rewrite-tos则配置仍保持活动状态。要在这种情况下禁用配置pre-rewrite-tos,必须先在层次结构级别显[edit forwarding-options sampling]式停用或删除该pre-rewrite-tos语句,然后才能在层次结构级别执行[edit forwarding-options]停用或删除作。
配置流量采样输出
要配置流量采样输出,请在 [edit forwarding-options sampling family (inet | inet6 | mpls) output] 层次结构级别包含以下语句:
aggregate-export-intervalseconds; flow-active-timeoutseconds; flow-inactive-timeoutseconds; extension-serviceservice-name; flow-serverhostname { aggregation { autonomous-system; destination-prefix; protocol-port; source-destination-prefix { caida-compliant; } source-prefix; } autonomous-system-type (origin | peer); (local-dump | no-local-dump); portport-number; source-address address; versionformat; version9 { template template-name; } } interfaceinterface-name { engine-idnumber; engine-typenumber; source-addressaddress; } file { disable; filenamefilename; filesnumber; sizebytes; (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 and engine-type 语句指定接口的标识号和类型号;它们是根据灵活 PIC 集中器 (FPC)、PIC 和插槽编号以及机箱类型动态生成的。该 source-address 语句指定流量来源。
从 Junos OS 19.3R1 版开始,要在瞻博网络高级威胁防御云(ATP 云)上配置内联流监控,请在层次结构级别包含[edit forwarding-options sampling instance instance-name family (inet | inet6 | mpls) output]该flow-server语句。内联采样专门支持一种称为 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 个文件。
要跟踪流量采样作,请在层次结构级别包含[edit forwarding-options sampling]以下traceoptions语句:
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;
}
}
}
}
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。
[edit forwarding-options sampling]该
pre-rewrite-tos语句。