在 MX、M 和 T Series 路由器上配置流量采样
通过流量采样,您可以将流量复制到物理接口卡 (PIC),该接口卡在路由器将数据包转发到其原始目的地时执行流计费。您可以将路由器配置为在以下三个位置之一执行采样:
-
在路由引擎上,使用采样进程。若要选择此方法,请使用筛选器(输入或输出)和包含
then sample语句的匹配术语。 -
在监控服务、自适应服务或多服务 PIC 上。
-
在不需要服务的内联数据路径上 密集端口集中器 (DPC)。若要执行此内联主动采样,请定义具有特定属性的采样实例。一个灵活的 PIC 集中器 (FPC) 只能支持一个实例;对于每个实例,每个系列都支持基于服务的 PIC 采样或内联采样。内联采样支持版本 9 和 IPFIX 流收集模板。
VPN 路由和转发 (VRF) 实例不支持基于路由引擎的采样。
配置防火墙过滤器以进行流量采样
要为流量采样配置防火墙过滤器,必须执行以下作:
-
通过在
[edit firewall family family-name]层次结构级别包含filter语句,创建防火墙过滤器以应用于要采样的逻辑接口。在 filterthen语句中,必须指定 action 修饰符sample和 actionaccept。filter filter-name { term term-name { then { sample; accept; } } }
有关防火墙过滤器作和作修饰符的详细信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南。
-
通过在
[edit interfaces interface-name unit logical-unit-number family family-name]层次结构级别包含address和filter语句,将过滤器应用于要对其进行流量采样的接口:address address { } filter { input filter-name; }
在接口和防火墙过滤器上配置流量采样时,以下先决条件适用于 M、MX 和 T Series 路由器:
-
如果在防火墙过滤器中为接口上的 inet 或 inet6 家族配置示例作,而未配置转发选项设置,则在同时配置端口镜像或流监测功能时,可能会出现作问题。在这种情况下,与防火墙过滤器匹配的所有数据包都会错误地发送到服务 PIC。
-
如果在
[edit firewall family inet filter filter-name term term-name]层次结构级别包含then sample语句以在 IPv4 数据包的防火墙过滤器中指定示例作,则还必须在[edit forwarding-options sampling]层次结构级别包含语family inet句或instance instance-name family inet在[edit forwarding-options sampling]层次结构级别包含语句。同样,如果在层次结构级别包含 thensample语句以在 IPv6 数据包的防火墙过滤器中指定示例作,则还必须在[edit forwarding-options sampling]层次结构级别包含语句或instance instance-name family inet6在层次结构级别包含family inet6语句[edit forwarding-options sampling]。[edit firewall family inet6 filter filter-name term term-name]否则,当您尝试提交配置时,将发生提交错误。 -
此外,如果通过在
[edit interface interface-name unit logical-unit-number]层次结构级别包含采样输入或采样输出语句来在逻辑接口上配置流量采样,则还必须在[edit forwarding-options sampling]层次结构级别包括该family inet | inet6语句,或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 版及更低版本中,不会发生提交错误,但不应在该接口上配置入口流量采样。
如果在 msfpc/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 语句,则禁用采样。
要在文件中收集采样数据包,请在[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) 配置(通过在[edit class-of-service interfaces interface-name unit logical-unit-number]层次结构级别包含rewrite-rules dscp rule_name 语句)来配置 ToS 重写,或者通过在[edit firewall family family-name filter filter-name term term-name then]层次结构级别包含dscp语句来使用防火墙过滤器配置来配置 ToS 重写。如果配置了 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 重写时,如果配置了语句,出口采样数据包将包含入口 ToS 重写配置
pre-rewrite-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-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 系列路由器上配置内联流监控,请在[edit forwarding-options sampling instance instance-name family (inet | inet6 | mpls) output]层次结构级别包含语inline-jflow句。内联采样以独占方式支持一种称为 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 版开始,要在瞻博网络高级威胁防御云(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 输出,您需要在[edit forwarding-options sampling output version9]层次结构级别包含template语句。有关 cflowd 的信息,请参阅启用流聚合。
aggregate-export-interval该语句在配置丢弃计费中进行了说明,low-active-timeoutf 和flow-inactive-timeout语句在配置流监控中进行了说明。
流量采样结果会自动保存到 /var/tmp 目录中的文件中。要在文件中收集采样的数据包,请在[edit forwarding-options sampling family inet output]层次结构级别包含语file句:
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语句。