例:イングレスシングルレート2カラーポリサーを設定し、マルチフィールド分類子を設定することで、ネットワーク内のインバウンドトラフィックを制限する
この例では、シングルレートの 2 カラー ポリサーを使用して、ネットワーク内の顧客トラフィックを制限する方法を示します。ポリサーはトークン バケットと呼ばれる概念を使用して、ドロップするトラフィックを識別します。ポリサーは、イン契約トラフィックと契約外トラフィックのサービスクラス(CoS)戦略をインターフェイスレベルで適用します。単一レートの 2 カラー ポリサーを受信パケット、発信パケット、またはその両方に適用できます。この例では、ポリサーを受信トラフィックの入力(イングレス)ポリサーとして適用します。マルチフィールド分類子CoSキューイングオプションは、割り当てられたキューにトラフィックを配置します。これは、後でスケジューリングとシェーピングを適用することで、出力インターフェイスレベルでリソース使用率を管理するのに役立ちます。
トークン バケットの概念とその基盤となるアルゴリズムの徹底的な説明は、このドキュメントの範囲外です。トラフィックポリシングとCoSの一般的な詳細については、 QoS-Enabled Networks— Miguel BarreirosとPeter Lundqvistの「Tools and Foundations」を参照してください。このガイドは、多くのオンライン書籍販売業者や www.juniper.net/books で利用できます。
要件
この手順を確認するために、この例ではトラフィック ジェネレータを使用します。トラフィック ジェネレータは、ハードウェアベースで実行することも、サーバーまたはホスト マシン上で実行するソフトウェアにすることもできます。
この手順の機能は、Junos OS を実行するデバイスで幅広くサポートされています。ここに示す例は、Junos OSリリース10.4を実行しているMXシリーズルーターでテストと検証を行いました。
概要
ポリシング
シングルレートの2カラーポリシーは、制限に準拠しないトラフィックに暗示的または設定されたアクションを適用することで、特定のサービスレベルに設定されたトラフィックフローのレートを適用します。インターフェイスの入力または出力トラフィックに単一レートの 2 カラー ポリサーを適用すると、ポリサーはトラフィック フローを次のコンポーネントで定義されたレート制限まで計ります。
帯域幅制限—インターフェイスで受信または送信されたパケットで許可される1秒あたりのビット数の平均。帯域幅制限は、1秒あたりのビット数の絶対数として、または1~100の割合値として指定できます。パーセンテージ値を指定した場合、有効帯域幅制限は、物理インターフェイスメディアレートまたは論理インターフェイス設定シェーピングレートのいずれかの割合として計算されます。
バーストサイズ制限 — データのバーストで許可される最大サイズ。バースト サイズはバイト単位で測定されます。バースト サイズの計算には、2 つの公式が推奨されます。
バースト サイズ = 帯域幅 x バースト トラフィックの許容時間 / 8
または
バースト サイズ = インターフェイス mtu x 10
バースト サイズの設定については、 トラフィック ポリサーの適切なバースト サイズの決定を参照してください。
メモ:インターフェイスにはバッファ空間が有限です。一般に、インターフェイスの推定総バッファ深さは約125ミリ秒です。
設定された制限(緑のトラフィックに分類)に準拠したトラフィックフローの場合、パケットは暗黙的にPLP(パケット損失優先度)レベルが低くマークされ、無制限にインターフェイスを通過できます。
設定された制限(赤色のトラフィック)を超えるトラフィックフローの場合、パケットはポリサーに設定されたトラフィックポリシングアクションに従って処理されます。この例では、15 KBps 制限を超えるバーストパケットを破棄します。
レイヤー 3 トラフィックをレート制限するために、次の方法で 2 カラー ポリサーを適用できます。
特定のプロトコルレベルで、論理インターフェイスに直接。
論理インターフェイスに適用される標準ステートレスファイアウォールフィルターのアクションとして、特定のプロトコルレベルで実行されます。これは、この例で使用される技術です。
レイヤー 2 トラフィックをレート制限するために、2 色のポリサーを論理インターフェイス ポリサーとしてのみ適用できます。ファイアウォール フィルターを介してレイヤー 2 トラフィックに 2 カラー ポリサーを適用することはできません。
ポリサーは相互に排他的であるため、帯域幅制限または帯域幅パーセントのいずれかを選択できます。ポリサーがアグリゲート インターフェイス、トンネル インターフェイス、またはソフトウェア インターフェイスに帯域幅パーセントを使用するように設定することはできません。
この例では、ホストは Web サーバーをエミュレートするトラフィック ジェネレータです。デバイスR1およびR2はサービスプロバイダが所有しています。Webサーバーは、デバイスR2の背後にあるユーザーによってアクセスされます。ホストは、送信元ポートTCP HTTPポート80とソースポート12345を持つトラフィックをユーザーに送信します。シングルレートの2カラーポリサーは、ホストをデバイスR1に接続するデバイスR1のインターフェイスに設定および適用されます。ポリサーは、Webサーバーの所有者(この場合はホストでエミュレート)と、ホストとデバイスR1を接続するリンクを介して流れるWebトラフィック用にデバイスR1を所有するサービスプロバイダとの間で行われる帯域幅の可用性を強制します。
Web サーバーの所有者とデバイス R1 と R2 を所有するサービス プロバイダ間の契約帯域幅の可用性に従い、ポリサーは、ホストから発信される HTTP ポート 80 トラフィックとポート 12345 トラフィックを、利用可能な帯域幅の 700 Mbps(70%)を使用するように制限し、ホストとデバイス R1 の間でギガビット イーサネット インターフェースの MTU サイズ 10 x の許容バースト レートを使用します。
実際のシナリオでは、FTP、SFTP、SSH、TELNET、SMTP、IMAP、POP3 などのその他のさまざまなポートのトラフィックをレート制限することになるでしょう。これは、Web ホスティング サービスの追加サービスとして含まれることが多いためです。
ルーティング プロトコル、DNS、ネットワーク接続の運用を維持するために必要なその他のプロトコルなど、ネットワーク制御プロトコルにレート制限されない追加の帯域幅を残す必要があります。これが、ファイアウォールフィルターが最終的な受け入れ条件を持っている理由です。
トポロジ
この例では、 図 1 のトポロジーを使用しています。

図 2 は、ポリシングの動作を示しています。

マルチフィールド分類
分類子とは、ポリシー実行が設定されている場合、ルーターまたはスイッチがパケットの検出と分類に使用するソフトウェア操作です。分類中に、パケット ヘッダーの内容が検査され、この検査によって、アウトバウンド インターフェースが忙しくなり、すべてのパケットを処理するためにあまりにも忙しくなり、デバイスがパケットを無差別に破棄するのではなく、インテリジェントにパケットをドロップしたい場合に、パケットがどのように処理されるかが決定されます。関心のあるパケットを検出する一般的な方法の 1 つは、送信元ポート番号です。この例では、TCP 送信元ポート番号 80 と 12345 を使用していますが、ファイアウォール フィルターの一致条件を使用して、パケット検出の他の多くの一致条件をマルチフィールドの分類子で使用できます。この例の設定では、送信元ポート80を持つTCPパケットは、BEデータ転送クラスとキュー番号0に分類され、送信元ポート12345を持つTCPパケットはプレミアムデータ転送クラスとキュー番号1に分類されることを指定しています。両方のポート番号からのトラフィックは、まずポリサーによって監視されます。トラフィックがポリサーを通過すると、割り当てられたキューのアウトバウンドインターフェイスに送信が渡されます。
通常、マルチフィールドの分類子は、パケットが自律システム(AS)に入る際に、ネットワークエッジで使用されます。
この例では、ファイアウォールフィルターmfの分類子を設定し、デバイスR1にいくつかのカスタム転送クラスを指定します。カスタム転送クラスを指定する際には、各クラスをキューに関連付けます。
分類子演算を 図 3 に示します。

マルチフィールド分類子のファイアウォールフィルターを、フィルターを必要とする各顧客対応またはホスト対応インターフェイスの入力フィルターとして適用します。この例では、デバイスR1の受信インターフェイスge-2/0/5が使用されています。トラフィックが送信されるインターフェイス上のキューの動作を監視します。この例では、 コマンドの オプションを使用して extensive
、キューのサービスを提供する方法を決定するために、インターフェイスge-2/0/8でトラフィック統計を show interfaces
調べます。
構成
手順
CLI クイックコンフィギュレーション
この例を迅速に設定するには、以下のコマンドをコピーしてテキスト ファイルに貼り付け、改行を削除し、ネットワーク設定に合わせて必要な詳細を変更してから、 階層レベルの CLI にコマンドを [edit]
コピー アンド ペーストします。
デバイス R1
set interfaces ge-2/0/5 description to-Host set interfaces ge-2/0/5 unit 0 family inet address 172.16.70.2/30 set interfaces ge-2/0/5 unit 0 family inet filter input mf-classifier set interfaces ge-2/0/8 description to-R2 set interfaces ge-2/0/8 unit 0 family inet address 10.50.0.1/30 set interfaces lo0 unit 0 description looback-interface set interfaces lo0 unit 0 family inet address 192.168.13.1/32 set firewall policer discard if-exceeding bandwidth-limit 700m set firewall policer discard if-exceeding burst-size-limit 15k set firewall policer discard then discard set class-of-service forwarding-classes class BE-data queue-num 0 set class-of-service forwarding-classes class Premium-data queue-num 1 set class-of-service forwarding-classes class Voice queue-num 2 set class-of-service forwarding-classes class NC queue-num 3 set firewall family inet filter mf-classifier term BE-data from protocol tcp set firewall family inet filter mf-classifier term BE-data from port http set firewall family inet filter mf-classifier term BE-data then forwarding-class BE-data set firewall family inet filter mf-classifier term BE-data then policer discard set firewall family inet filter mf-classifier term Premium-data from protocol tcp set firewall family inet filter mf-classifier term Premium-data from port 12345 set firewall family inet filter mf-classifier term Premium-data then forwarding-class Premium-data set firewall family inet filter mf-classifier term Premium-data then policer discard set firewall family inet filter mf-classifier term accept then accept set protocols ospf area 0.0.0.0 interface ge-2/0/5.0 passive set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface ge-2/0/8.0
デバイスR2
set interfaces ge-2/0/7 description to-Host set interfaces ge-2/0/7 unit 0 family inet address 172.16.80.2/30 set interfaces ge-2/0/8 description to-R1 set interfaces ge-2/0/8 unit 0 family inet address 10.50.0.2/30 set interfaces lo0 unit 0 description looback-interface set interfaces lo0 unit 0 family inet address 192.168.14.1/32 set protocols ospf area 0.0.0.0 interface ge-2/0/7.0 passive set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface ge-2/0/8.0
手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。その方法の詳細については、 Junos OS CLIユーザーガイドの 設定モードでのCLIエディターの使用を参照してください。
デバイスR1を設定するには:
デバイス インターフェイスを設定します。
[edit interfaces] user@R1#set ge-2/0/5 description to-Host user@R1#set ge-2/0/5 unit 0 family inet address 172.16.70.2/30 user@R1#set ge-2/0/8 description to-R2 user@R1#set ge-2/0/8 unit 0 family inet address 10.50.0.1/30 user@R1# set lo0 unit 0 description looback-interface user@R1#set lo0 unit 0 family inet address 192.168.13.1/32
ポリサーを、700 Mbps の帯域幅と 15 KBps のバースト サイズにレート制限するように設定します。
[edit firewall policer discard] user@R1# set if-exceeding bandwidth-limit 700m user@R1# set if-exceeding burst-size-limit 15k
赤色のトラフィック フローでパケットを破棄するようにポリサーを設定します。
[edit firewall policer discard] user@R1# set then discard
カスタム転送クラスと関連するキュー番号を設定します。
[edit class-of-service forwarding-classes] user@R1# set class BE-data queue-num 0 user@R1# set class Premium-data queue-num 1 user@R1# set class Voice queue-num 2 user@R1# set class NC queue-num 3
送信元ポート80(HTTPトラフィック)を持つTCPトラフィックを、キュー0に関連付けられた BE データ転送クラスに配置するファイアウォールフィルター条件を設定します。
[edit firewall family inet filter mf-classifier] user@R1# set term BE-data from protocol tcp user@R1# set term BE-data from port http user@R1# set term BE-data then forwarding-class BE-data user@R1# set term BE-data then policer discard
送信元ポートが12345のTCPトラフィックを、キュー1に関連付けられたプレミアムデータ転送クラスに配置するファイアウォールフィルター条件を設定します。
[edit firewall family inet filter mf-classifier] user@R1# set term Premium-data from protocol tcp user@R1# set term Premium-data from port 12345 user@R1# set term Premium-data then forwarding-class Premium-data user@R1# set term Premium-data then policer discard
ファイアウォールフィルターの最後に、他のすべてのトラフィックを受け入れるデフォルト条件を設定します。
それ以外の場合、インターフェイスに到着し、ファイアウォールフィルターによって明示的に受け入れられないすべてのトラフィックは破棄されます。
[edit firewall family inet filter mf-classifier] user@R1# set term accept then accept
ファイアウォールフィルターを、入力フィルターとしてge-2/0/5インターフェイスに適用します。
[edit interfaces] user@R1# set ge-2/0/5 unit 0 family inet filter input mf-classifier
OSPFを設定します。
[edit protocols ospf] user@R1# set area 0.0.0.0 interface ge-2/0/5.0 passive user@R1# set area 0.0.0.0 interface lo0.0 passive user@R1# set area 0.0.0.0 interface ge-2/0/8.0
手順
デバイスR2を設定するには:
デバイス インターフェイスを設定します。
[edit interfaces] user@R2# set ge-2/0/7 description to-Host user@R2# set ge-2/0/7 unit 0 family inet address 172.16.80.2/30 user@R2# set ge-2/0/8 description to-R1 user@R2# set ge-2/0/8 unit 0 family inet address 10.50.0.2/30 user@R2# set lo0 unit 0 description looback-interface user@R2# set lo0 unit 0 family inet address 192.168.14.1/32
OSPFを設定します。
[edit protocols ospf] user@R2# set area 0.0.0.0 interface ge-2/0/7.0 passive user@R2# set area 0.0.0.0 interface lo0.0 passive user@R2# set area 0.0.0.0 interface ge-2/0/8.0
結果
設定モードから、 、show firewall
show class-of-service
および のコマンドをshow interfaces
入力して設定をshow protocols ospf
確認します。出力結果に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
user@R1# show interfaces ge-2/0/5 { description to-Host; unit 0 { family inet { filter { input mf-classifier; } address 172.16.70.2/30; } } } ge-2/0/8 { description to-R2; unit 0 { family inet { address 10.50.0.1/30; } } } lo0 { unit 0 { description looback-interface; family inet { address 192.168.13.1/32; } } }
user@R1# show class-of-service forwarding-classes { class BE-data queue-num 0; class Premium-data queue-num 1; class Voice queue-num 2; class NC queue-num 3; }
user@R1# show firewall family inet { filter mf-classifier { term BE-data { from { protocol tcp; port http; } then { policer discard; forwarding-class BE-data; } } term Premium-data { from { protocol tcp; port 12345; } then { policer discard; forwarding-class Premium-data; } } term accept { then accept; } } } policer discard { if-exceeding { bandwidth-limit 700m; burst-size-limit 15k; } then discard; }
user@R1# show protocols ospf area 0.0.0.0 { interface ge-2/0/5.0 { passive; } interface lo0.0 { passive; } interface ge-2/0/8.0; }
デバイスR1の設定が完了したら、設定モードから を入力します commit
。
user@R2# show interfaces ge-2/0/7 { description to-Host; unit 0 { family inet { address 172.16.80.2/30; } } } ge-2/0/8 { description to-R1; unit 0 { family inet { address 10.50.0.2/30; } } } lo0 { unit 0 { description looback-interface; family inet { address 192.168.14.1/32; } } }
user@R2# show protocols ospf area 0.0.0.0 { interface ge-2/0/7.0 { passive; } interface lo0.0 { passive; } interface ge-2/0/8.0; }
デバイスR2の設定が完了したら、設定モードから を入力します commit
。
検証
設定が正しく機能していることを確認します。
- CoS 設定の確認
- カウンターのクリア
- TCP HTTP ポート 80 からネットワークにトラフィックを送信し、結果を監視する
- TCPポート12345からネットワークにトラフィックを送信し、結果を監視
CoS 設定の確認
目的
転送クラスが正しく設定されていることを確認します。
アクション
デバイスR1から、 コマンドを show class-of-service forwarding-class
実行します。
user@R1> show class-of-service forwarding-class Forwarding class ID Queue Restricted queue Fabric priority Policing priority SPU priority BE-data 0 0 0 low normal low Premium-data 1 1 1 low normal low Voice 2 2 2 low normal low NC 3 3 3 low normal low
意味
出力には、構成済みのカスタム分類子設定が表示されます。
カウンターのクリア
目的
ファイアウォールとインターフェイスカウンターがクリアされていることを確認します。
アクション
デバイスR1で、 コマンドを
clear firewall all
実行して、ファイアウォールカウンターを0にリセットします。user@R1> clear firewall all
デバイスR1で、 コマンドを
clear interface statistics ge-2/0/5
実行して、インターフェイスカウンターを0にリセットします。user@R1> clear interface statistics ge-2/0/8
TCP HTTP ポート 80 からネットワークにトラフィックを送信し、結果を監視する
目的
ポリサーおよびカスタム キュー レベルで監視できるトラフィックを送信します。
アクション
トラフィック ジェネレータを使用して、送信元ポートが 80 の 20 個の TCP パケットをネットワークに送信します。
s フラグは、送信元ポートを設定します。k フラグは、ソース ポートがインクリメントされるのではなく、80 で安定した状態を維持します。c フラグは、パケット数を 20 に設定します。d フラグは、パケットサイズを設定します。
メモ:この例では、ポリサー数は帯域幅制限の 8 Kbps に、バースト サイズ制限は 1500 KBps に減り、一部のパケットがドロップされることを確認しています。
[User@host]# hping 172.16.80.1 -c 20 -s 80 -k -d 300 [root@host]# hping 172.16.80.1 -s 80 -k -c 20 -d 300 HPING 172.16.80.1 (eth1 172.16.80.1): NO FLAGS are set, 40 headers + 300 data bytes len=46 ip=172.16.80.1 ttl=62 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=1.4 ms . . . --- 172.16.80.1 hping statistic --- 20 packets transmitted, 16 packets received, 20% packet loss round-trip min/avg/max = 1.4/8688.9/17002.3 ms
デバイスR1で、 コマンドを使用してファイアウォールカウンターを
show firewall
確認します。user@R1> show firewall Filter: mf-classifier Policers: Name Bytes Packets discard-BE-data 1360 4 discard-Premium-data 0 0
hping の出力では、 コマンドの出力に示すように、パケットロスが 20%(20 のうち 4 パケット)であり、同じ数の
show firewall
パケットがポリサーによってドロップされたことを示しています。また、ドロップは、ファイアウォール設定の mf 分類子で指定されたキュー BE データに関連付けられていることに注意してください。デバイスR1で、 コマンドを使用してキューカウンターを
show interfaces extensive ge-2/0/8| find "Queue counters"
確認します。user@R1> show interfaces extensive ge-2/0/8| find "Queue counters" Queue counters: Queued packets Transmitted packets Dropped packets 0 16 16 0 1 0 0 0 2 0 0 0 3 4 4 0 Queue number: Mapped forwarding classes 0 BE-data 1 Premium-data 2 Voice 3 NC
ファイアウォール設定の mf 分類子で指定されたとおり、キュー BE データを使用して 16 個のパケットがインターフェイス 2/0/8 から送信されました。残りの 4 つのパケットは、前述のようにポリサーによってドロップされました。キュー 3 に送信された 4 つのパケットは、ネットワーク制御トラフィックです。ルーティング プロトコルの更新である可能性があります。
意味
両方のデバイスからの出力は、4 つのパケットが破棄されたことを示しています。これは、少なくとも 8 Kbps の緑(契約内 HTTP ポート 80)トラフィックが存在し、赤い契約外 HTTP ポート 80 トラフィックの 1500 KBps バースト オプションを超えていたことを示しています。ステップ2および3では、正しいキューを使用して、残りのトラフィックをインターフェイス2/0/8に送信していることがわかります。
TCPポート12345からネットワークにトラフィックを送信し、結果を監視
目的
ポリサーおよびカスタム キュー レベルで監視できるトラフィックを送信します。
アクション
セクション「カウンターをクリアする」に示すように、 カウンタをもう一度クリアします。
トラフィック ジェネレータを使用して、送信元ポートが 12345 の 20 個の TCP パケットをネットワークに送信します。
s フラグは、送信元ポートを設定します。k フラグを指定すると、ソース ポートは増加する代わりに 12345 で安定した状態を維持します。c フラグは、パケット数を 20 に設定します。d フラグは、パケットサイズを設定します。
[User@host]# hping 172.16.80.1 -c 20 -s 12345 -k -d 300 [root@tp-host]# hping 172.16.80.1 -s 12345 -k -c 20 -d 300 HPING 172.16.80.1 (eth1 172.16.80.1): NO FLAGS are set, 40 headers + 300 data bytes len=46 ip=172.16.80.1 ttl=62 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.4 ms . . . --- 172.16.80.1 hping statistic --- 20 packets transmitted, 16 packets received, 20% packet loss round-trip min/avg/max = 0.4/9126.3/18002.4 ms
デバイスR1で、 コマンドを使用してファイアウォールカウンターを
show firewall
確認します。user@R1> show firewall Filter: mf-classifier Policers: Name Bytes Packets discard-BE-data 0 0 discard-Premium-data 1360 4
hping の出力では、 コマンドの出力に示すように、パケットロスが 20%(20 のうち 4 パケット)であり、同じ数の
show firewall
パケットがポリサーによってドロップされたことを示しています。また、ドロップは、ファイアウォール設定の mf 分類子で指定されているように、キューのプレミアムデータに関連付けられていることに注意してください。デバイスR1で、 コマンドを使用してキューカウンターを
show interfaces extensive ge-2/0/8| find "Queue counters"
確認します。user@R1> show interfaces extensive ge-2/0/8| find "Queue counters" Queue counters: Queued packets Transmitted packets Dropped packets 0 0 0 0 1 16 16 0 2 0 0 0 3 19 19 0 Queue number: Mapped forwarding classes 0 BE-data 1 Premium-data 2 Voice 3 NC
mf-分類子ファイアウォール設定で指定されたとおり、プレミアムデータ キューを使用して 16 個のパケットがインターフェイス 2/0/8 で送信されたことがわかります。残りの 4 つのパケットは、前述のようにポリサーによってドロップされました。キュー 3 に送信された 19 個のパケットは、ネットワーク制御トラフィックです。ルーティング プロトコルの更新である可能性があります。
意味
両方のデバイスからの出力は、4つのパケットが破棄されたことを示しています。これは、緑(契約内 HTTP ポート 80)トラフィックが少なくとも 8 Kbps あり、赤い契約外 HTTP ポート 80 トラフィックの 1500 KBps バースト オプションを超えていたことを意味します。手順 3 と 4 では、正しいキューを使用して、残りのトラフィックをインターフェイス 2/0/8 に送信していることがわかります。