MX、M、T Seriesルーターでのトラフィックサンプリングの設定
トラフィックサンプリングにより、ルーターがパケットを元の宛先に転送している間に、フローアカウンティングを実行する物理インターフェイスカード(PIC)にトラフィックをコピーできます。以下の3つの場所のいずれかでサンプリングを実行するようにルーターを設定できます。
-
ルーティングエンジンで、サンプル化されたプロセスを使用します。この方法を選択するには、
then sampleステートメントを含む一致する用語を持つフィルター(入力または出力)を使用します。 -
監視サービス、アダプティブ サービス、またはマルチサービス PIC について。
-
サービスを必要としないインラインデータパス上の高密度ポートコンセントレータ(DPC)。このインラインアクティブサンプリングを行うには、特定のプロパティを持つサンプリングインスタンスを定義します。1つのフレキシブルPICコンセントレータ(FPC)は、1つのインスタンスのみをサポートできます。各インスタンスについて、サービスPICベースのサンプリングまたはインラインサンプリングのいずれかがファミリーごとにサポートされます。インラインサンプリングは、バージョン9とIPFIXフロー収集テンプレートをサポートします。
ルーティングエンジンベースのサンプリングは、VPNルーティングおよび転送(VRF)インスタンスではサポートされていません。
トラフィックサンプリング用のファイアウォールフィルターの設定
トラフィックサンプリング用のファイアウォールフィルターを設定するには、以下のタスクを実行する必要があります。
-
[edit firewall family family-name]階層レベルでfilterステートメントを含めることで、サンプリングされる論理インターフェイスに適用するファイアウォールフィルターを作成します。フィルターthenステートメントでは、アクション修飾子sampleとアクションacceptを指定する必要があります。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に送信されます。
-
IPv4パケットのファイアウォールフィルターでサンプルアクションを指定するために
[edit firewall family inet filter filter-name term term-name]階層レベルでthen sampleステートメントを含める場合、[edit forwarding-options sampling]階層レベルにfamily inetステートメントまたは[edit forwarding-options sampling]階層レベルにinstance instance-name family inetステートメントを含める必要があります。同様に、IPv6 パケットのファイアウォールフィルターでサンプルアクションを指定するために、[edit firewall family inet6 filter filter-name term term-name]階層レベルに thensampleステートメントを含める場合、[edit forwarding-options sampling]階層レベルにfamily inet6then ステートメントを含めるか、[edit forwarding-options sampling]階層レベルにinstance instance-name family inet6ステートメントを含める必要があります。そうしないと、設定をコミットしようとするとコミットエラーが発生します。 -
また、
[edit interface interface-name unit logical-unit-number]階層レベルでサンプリング入力またはサンプリング出力ステートメントを含めることで、論理インターフェイス上でトラフィックサンプリングを設定する場合、[edit forwarding-options sampling]階層レベルにfamily inet | inet6ステートメントを、[edit forwarding-options sampling]階層レベルにinstance instance-name family inet | inet6ステートメントを含める必要があります。
論理インターフェイスでのトラフィックサンプリングの設定
任意の論理インターフェイスでトラフィックサンプリングを設定するには、サンプリングを有効にし、 [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 値は無視されます。
rateとrun-lengthの値を設定してサンプリングレートを指定します(図1を参照)。
の設定
PICベースのフロー監視が有効になっている ms- 論理インターフェイスには、イングレスサンプリングを設定しないでください。これは、望ましくないフロー監視動作を引き起こし、単一のパケットのサンプリングを繰り返す可能性があります。Junos OSリリース15.1以降、そのインターフェイスでイングレストラフィックサンプリングを設定しようとすると、コミットエラーが発生します。Junos OSリリース14.2以前では、コミットエラーは発生しませんが、そのインターフェイスでイングレストラフィックサンプリングを設定しないでください。
MS-fpc/pic/port.logical-unit インターフェイスでPICベースのフロー監視が有効になっている場合、そのインターフェイスでイングレストラフィックサンプリングを設定しようとすると、コミットチェックエラーが発生します。このエラーは、 ms- 論理インターフェイス上でイングレスサンプリングとPICベースのフロー監視操作の組み合わせが、望ましくないフロー監視動作を引き起こし、単一のパケットのサンプリングが繰り返される可能性があるために発生します。PICベースのフロー監視が有効になっている ms- 論理インターフェイスには、イングレスサンプリングを設定しないでください。
rateステートメントは、サンプリングするパケットの割合を指定します。例えば、レートを 10 に設定した場合、10 個xパケットのうちのパケット数がサンプリングされます。これは x=実行長さ + 1 です。デフォルトでは、レートは0であり、トラフィックはサンプリングされません。
run-lengthステートメントは、最初の1パケットトリガーイベントの後にサンプリングする一致パケットの数を指定します。デフォルトでは、実行長は0であり、トリガーイベント後にそれ以上のトラフィックはサンプリングされません。範囲は 0 から 20 です。ラン長を 0 より大きく設定すると、すでにサンプリングされているパケットに続いてサンプリングできます。
run-lengthおよびmaximum-packet-length設定ステートメントは、MX80ルーターではサポートされていません。
inputステートメントを含めない場合、サンプリングは無効になります。
サンプリングされたパケットをファイルに収集するには、[edit forwarding-options sampling output]階層レベルでfileステートメントを含めます。出力ファイルの形式については、この章の後半で説明します。
トラフィックサンプリングの無効化
ルーターでトラフィックサンプリングを明示的に無効にするには、[edit forwarding-options sampling]階層レベルでdisableステートメントを含めます。
disable;
1回のサンプリング
アクティブ監視用にパケットを 1 回だけ明示的にサンプリングするには、[edit forwarding-options sampling]階層レベルで sample-once ステートメントを含めます。
sample-once;
このオプションを設定すると、ingressインターフェイスとegressインターフェイスの両方でサンプリングが有効になっている場合のパケットの重複が回避され、サンプリングされたトラフィックの分析が簡素化されます。
Egressサンプリングまたはミラーリングされたパケットの書き換え前ToS値の保持
Junos OSリリース14.1以降、エグレスサンプリングまたはミラーリングされたパケットで、事前正規化されたサービスタイプ(ToS)値を保持できます。[edit forwarding-options sampling]階層レベルにpre-rewrite-tosステートメントを含めます。
MPCベースのインターフェイスでは、[edit class-of-service interfaces interface-name unit logical-unit-number]階層レベルにrewrite-rules dscp rule_name ステートメントを含めることでサービスクラス(CoS)設定を使用するか、[edit firewall family family-name filter filter-name term term-name then]階層レベルにdscpステートメントを含めることでファイアウォールフィルター設定を使用して、設定ToS書き換えることができます。ToS書き換えが設定されている場合、エグレスのミラーリングまたはサンプリングされたコピーには、デフォルトで書き換え後のToS値が含まれます。pre-rewrite-tos設定では、サンプリングまたはミラーリングされたパケットに書き換え前のToS値を保持できます。
-
ToS書き換えがCoSフィルター設定とファイアウォールフィルター設定の両方を使用してエグレスインターフェイス上で設定され、
pre-rewrite-tosステートメントも設定されている場合、エグレスサンプリングパケットには、ファイアウォールフィルタ設定を使用して設定されたDSCP値が含まれます。ただし、pre-rewrite-tosステートメントが設定されていない場合、エグレスサンプリングパケットには、CoS設定で設定されたDSCP値が含まれます。 -
pre-rewrite-tosステートメントを使用すると、family inetおよびfamily inet6で行われたサンプリングに対してのみ、事前正規化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シリーズルーターでインラインフロー監視を設定するには、[edit forwarding-options sampling instance instance-name family (inet | inet6 | mpls) output]階層レベルでinline-jflowステートメントを含めます。インラインサンプリングは、トランスポートプロトコルとしてUDPを使用するIP_FIXと呼ばれる新しい形式のみをサポートします。インラインサンプリングを設定する場合、[edit forwarding-options sampling instance instance-name family (inet | inet6 | mpls) output flow-server address]階層レベルと[edit services flow-monitoring]階層レベルにversion-ipfixステートメントを含める必要があります。インラインフロー監視の設定の詳細については、「ルーター、スイッチ、またはNFX250を使用したインラインアクティブフロー監視の設定」を参照してください。
サンプル化されたトラフィックをフロー監視インターフェイスに誘導するには、 interface ステートメントを含めます。 engine-id および engine-type ステートメントは、インターフェイスのIDとタイプ番号を指定します。FPC(フレキシブルPICコンセントレータ)、PIC、スロット番号、シャーシタイプに基づいて動的に生成されます。 source-address ステートメントは、トラフィックソースを指定します。
Junos OS Release 19.3R1以降、ジュニパー Advanced Threat Prevention Cloud(ATPクラウド)でインラインフロー監視を設定するには、[edit forwarding-options sampling instance instance-name family (inet | inet6 | mpls) output]階層レベルにflow-serverステートメントを含めます。インラインサンプリングは、トランスポートプロトコルとしてUDPを使用するIP_FIXと呼ばれる新しい形式のみをサポートします。インラインサンプリングを設定する場合、[edit forwarding-options sampling instance instance-name family (inet | inet6 | mpls) output flow-server address]階層レベルと[edit services flow-monitoring]階層レベルにもversion-ipfixステートメントを含める必要があります。
フローサンプリングバージョン9の出力を設定するには、[edit forwarding-options sampling output version9]階層レベルでtemplateステートメントを含める必要があります。cflowdについては、フローアグリゲーションの有効化を参照してください。
aggregate-export-intervalステートメントは破棄アカウンティングの設定で説明されており、flow-active-timeoutおよび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 ディレクトリ内のファイルに保存されたトラフィックサンプリング出力の例です。出力ファイルの各行には、1つのサンプルパケットの情報が含まれています。オプションで、各行のタイムスタンプを表示することができます。
列ヘッダーは、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アドレスからのすべてのトラフィックをサンプリングする
以下の設定では、 172.16.92.31の単一の送信元IPアドレスから発信される特定のギガビットイーサネットポート上でルーターに入るすべてのパケットに関する統計情報を収集し、 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ステートメントを含めます。