MX、M、Tシリーズルーターでのトラフィックサンプリングの設定
トラフィックサンプリングにより、ルーターがパケットを元の宛先に転送する間、フローアカウンティングを実行する物理インターフェイスカード(PIC)にトラフィックをコピーできます。ルーターを設定して、次の 3 つの場所のいずれかでサンプリングを実行できます。
ルーティング エンジンで、サンプル化されたプロセスを使用します。この方法を選択するには、 ステートメントを含む一致する条件を持つフィルター(入力または出力)を
then sample
使用します。監視サービス、適応サービス、またはマルチサービスPIC上。
サービスDPC(Dense Port Concentrator)を必要としないインラインデータパス上。このインラインアクティブサンプリングを行うには、特定のプロパティでサンプリングインスタンスを定義します。1つのフレキシブルPICコンセントレータ(FPC)は、1つのインスタンスのみをサポートできます。各インスタンスでは、サービスPICベースのサンプリングまたはインラインサンプリングのいずれかがファミリーごとにサポートされています。インライン・サンプリングは、バージョン 9 および IPFIX フロー収集テンプレートをサポートします。
ルーティングエンジンベースのサンプリングは、VPNルーティングおよび転送(VRF)インスタンスではサポートされていません。
トラフィックサンプリングのためのファイアウォールフィルターの設定
トラフィックサンプリング用のファイアウォールフィルターを設定するには、以下のタスクを実行する必要があります。
階層レベルで ステートメントを含めることで、サンプリングされる論理インターフェイスに適用する
filter
ファイアウォールフィルターを[edit firewall family family-name]
作成します。フィルターthen
ステートメントでは、アクション修飾子sample
と アクションを指定するaccept
必要があります。filter filter-name { term term-name { then { sample; accept; } } }
ファイアウォールフィルターアクションとアクション修飾子の詳細については、 ルーティングポリシー、ファイアウォールフィルター、およびトラフィックポリサーユーザーガイドを参照してください。
階層レベルで および
filter
ステートメントを含address
めることで、トラフィックをサンプリングするインターフェイスにフィルターを[edit interfaces interface-name unit logical-unit-number family family-name]
適用します。address address { } filter { input filter-name; }
インターフェイスとファイアウォールフィルターでトラフィックサンプリングを設定する場合、M、MX、およびTシリーズルーターには、以下の前提条件が適用されます。
転送オプションの設定を行わずにインターフェイス上のinetまたはinet6ファミリーのファイアウォールフィルターでサンプルアクションを設定した場合、ポートミラーリングやフロータップ機能も設定すると、運用上の問題が発生する可能性があります。このようなシナリオでは、ファイアウォール フィルターに一致するすべてのパケットがサービス PIC に正しく送信されません。
IPv4パケットの
then sample
ファイアウォールフィルターに[edit firewall family inet filter filter-name term term-name]
サンプルアクションを指定するために 階層レベルに ステートメントを含める場合、 階層レベルまたは 階層レベルのinstance instance-name family inet
ステートメント[edit forwarding-options sampling]
も含める[edit forwarding-options sampling]
family inet
必要があります。同様に、 階層レベルに[edit firewall family inet6 filter filter-name term term-name]
thensample
ステートメントを含めて、IPv6 パケットのファイアウォールフィルターにサンプルアクションを指定する場合は、 階層レベルに ステートメント[edit forwarding-options sampling]
を含めるか、 階層レベルに ステートメントを[edit forwarding-options sampling]
instance instance-name family inet6
含めるfamily inet6
必要があります。それ以外の場合、設定のコミットを試みると、コミットエラーが発生します。また、 階層レベルでサンプリング入力またはサンプリング出力ステートメントを含めて論理インターフェイス上でトラフィックサンプリングを
[edit interface interface-name unit logical-unit-number]
設定する場合は、 階層レベルに[edit forwarding-options sampling]
ステートメント、または 階層レベルに ステートメントをinstance instance-name family inet | inet6
[edit forwarding-options sampling]
含める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です。
アクティブな監視を設定し、 ステートメントで監視サービス、適応サービス、またはマルチサービスPICを output
指定する場合、またはインラインサンプリングを設定する場合、 max-packets-per-second
値は無視されます。
および の値を設定してサンプリングレートをrate
指定します(図1を参照)。run-length
PIC ベースの ms-
フロー監視が有効になっている論理インターフェイスではイングレス サンプリングを設定しないでください。このため、望ましくないフロー監視動作が発生し、1 つのパケットのサンプリングが繰り返される可能性があります。Junos OS リリース 15.1 以降、そのインターフェイスでイングレス トラフィック サンプリングを設定しようとすると、コミット エラーが発生します。Junos OSリリース14.2以前では、コミットエラーは発生しませんが、そのインターフェイスでイングレストラフィックサンプリングを設定しないでください。
MS-fpc/pic/port.logical-unit インターフェイスで PIC ベースのフロー監視が有効になっている場合、そのインターフェイスでイングレス トラフィック サンプリングを設定しようとすると、コミット チェック エラーが発生します。このエラーは、論理インターフェイスでイングレス サンプリングと PIC ベースのフロー監視操作を組み合わせた場合、 ms-
望ましくないフロー監視動作が発生し、1 つのパケットのサンプリングを繰り返す結果になる可能性があるために発生します。PIC ベースの ms-
フロー監視が有効になっている論理インターフェイスでは、イングレス サンプリングを設定しないでください。
ステートメントは rate
、サンプリングされるパケットの比率を指定します。例えば、レートを 10 に設定すると、 x 10 ごとにパケット数がサンプリングされ、ここで x=run length + 1 になります。デフォルトでは、レートは 0 であり、トラフィックはサンプリングされません。
ステートメントは run-length
、最初の 1 パケット トリガー イベントの後にサンプリングする一致するパケットの数を指定します。デフォルトでは、実行長は 0 であり、トリガー・イベントの後にサンプリングされるトラフィックはこれ以上ありません。範囲は0~20です。ラン長を 0 より大きく設定すると、すでにサンプリングされているパケットに続くパケットをサンプリングできます。
run-length
および maximum-packet-length
設定ステートメントは、MX80ルーターではサポートされていません。
ステートメントを input
含まない場合、サンプリングは無効になります。
サンプルされたパケットをファイルに収集するには、 階層レベルに file
ステートメントを [edit forwarding-options sampling output]
含めます。出力ファイル形式については、章の後半で説明します。
トラフィック サンプリングの無効化
ルーターでトラフィックサンプリングを明示的に無効にするには、 階層レベルに disable
ステートメントを [edit forwarding-options sampling]
含めます。
disable;
サンプリングを 1 回
アクティブ監視用のパケットを 1 回だけ明示的にサンプリングするには、 階層レベルに sample-once
ステートメントを [edit forwarding-options sampling]
含めます。
sample-once;
このオプションを設定することで、イングレスインターフェイスとエグレスインターフェイスの両方でサンプリングが有効になっている場合に、パケットの重複を回避し、サンプリングされたトラフィックの分析を簡素化します。
エグレスサンプリングまたはミラーリングされたパケットの事前書き込み toS 値を保持する
Junos OSリリース14.1以降、サンプリングされたエグレスまたはミラーリングされたパケットに、正規化されたサービスタイプ(ToS)値を保持できます。階層レベルに pre-rewrite-tos
ステートメントを [edit forwarding-options sampling]
含めます。
MPCベースのインターフェイスでは、 階層レベルで ステートメントを含めるか、 階層レベルに ステートメント[edit class-of-service interfaces interface-name unit logical-unit-number]
を含rewrite-rules dscp rule_name
めてdscp
[edit firewall family family-name filter filter-name term term-name then]
ファイアウォールフィルター設定を使用することで、サービスクラス(CoS)設定のいずれかを使用して、ToS書き換えを設定できます。ToS書き換えが設定されている場合、ミラーリングまたはサンプルされたエグレスコピーには、デフォルトで書き換え後の ToS 値が含まれます。設定pre-rewrite-tos
を使用すると、サンプルまたはミラーリングされたパケットに、プリリライト ToS 値を保持できます。
ToS書き換えがCoSとファイアウォールフィルターの両方の設定を使用してエグレスインターフェイス上で設定され、 ステートメントも設定されている場合
pre-rewrite-tos
、エグレスサンプリングパケットには、ファイアウォールフィルター設定を使用して設定されたDSCP値が含まれます。ただし、 ステートメントがpre-rewrite-tos
設定されていない場合、エグレスサンプリングパケットには、CoS設定によって設定されたDSCP値が含まれます。ステートメントでは
pre-rewrite-tos
、 およびfamily inet6
の下family inet
で行われるサンプリングに対してのみ、プレ正規化 ToS 値の保持を設定できます。この機能は、 階層レベルでは
[edit logical-systems]
設定できません。設定のグローバルforwarding-option
レベルでのみ設定できます。イングレスインターフェイスとエグレスインターフェイスの両方でファイアウォールフィルターを使用してToS書き換えが設定されている場合、エグレスサンプリングパケットには、イングレスToS書き換え設定によって設定されたDSCP値が
pre-rewrite-tos
含まれます。ただし、 ステートメントが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
めます。インラインサンプリングは、トランスポートプロトコルとして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-type
ステートメントはengine-id
、インターフェイスのIDとタイプ番号を指定します。FPC(フレキシブルPICコンセントレータ)、PIC、スロット番号、シャーシタイプに基づいて動的に生成されます。ステートメントはsource-address
、トラフィックソースを指定します。
Junos OSリリース19.3R1以降、Juniper Sky Advanced Threat Prevention(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 の出力を設定するには、 階層レベルに ステートメントを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 ディレクトリー内のファイルに保存されるトラフィック・サンプリング出力の例を示します。出力ファイルの各行には、サンプルされた 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; } } } }
例:1 つの 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]
含めます。