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ステートメントを含めることで、サンプリングする論理インターフェイスに適用するファイアウォールフィルターを作成します。filterthenステートメントでは、アクション修飾子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ルーターに以下の前提条件が適用されます。
-
forwarding-optionsを設定せずに、インターフェイス上の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ステートメントも含める必要があります。同様に、[edit firewall family inet6 filter filter-name term term-name]階層レベルで thensampleステートメントを使用して、IPv6 パケットのファイアウォールフィルターでサンプルアクションを指定する場合、[edit forwarding-options sampling]階層レベルにfamily inet6ステートメントを、[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ベースのフロー監視操作を組み合わせると、望ましくないフロー監視動作が発生し、1つのパケットのサンプリングが繰り返される可能性があるために発生します。PICベースのフロー監視が有効になっている ms- 論理インターフェイスでは、イングレスサンプリングを設定しないでください。
rate ステートメントは、サンプリングされるパケットの比率を指定します。たとえば、レートを 10 に設定した場合、x=ランレングス + 1 x、10 個ごとのパケット数がサンプリングされます。デフォルトでは、レートは 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;
一度サンプリング
アクティブ監視用のパケットを一度だけ明示的にサンプリングするには、[edit forwarding-options sampling]階層レベルでsample-onceステートメントを含めます。
sample-once;
このオプションを設定すると、イングレス インターフェイスとエグレス インターフェイスの両方でサンプリングが有効になっている場合にパケットの重複が回避され、サンプリングされたトラフィックの分析が簡素化されます。
エグレス サンプリングまたはミラーリングされたパケットの事前書き換え 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-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-id および engine-type ステートメントは、インターフェイスのIDとタイプ番号を指定します。これらは、FPC(フレキシブルPICコンセントレータ)、PIC、スロット番号とシャーシタイプに基づいて動的に生成されます。 source-address ステートメントは、トラフィック ソースを指定します。
Junos OS リリース 19.3R1以降、Juniper Advanced Threat Prevention Cloud(ATP Cloud)でインラインフロー監視を設定するには、[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 インターフェイスのサンプリング
次の設定では、1 つの 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;
}
}
}
}
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer を使用します。
[edit forwarding-options sampling]階層レベルで
pre-rewrite-tosステートメントを含めます。