例:デフォルト DSCP 動作集約分類子の構成と適用
Junos OSの分類子は、トラフィックフローを識別して分離し、サービスクラス(CoS)プロセスの後半でトラフィックに優先度を設定する手段を提供します。
動作集約(BA)分類子は、既知のCoS値を転送クラスと損失の優先度と関連付けることで、この関数を実行します。デフォルトの分類子を有効にするには、デバイスインターフェイスに適用するだけです。デフォルトの分類子がインターフェイスに適用されていない場合、有効になりません。
Junos OSは、複数のデフォルトBA分類子タイプを提供します。これにより、トラフィック分類全体の目標を達成するために必要に応じて、カスタムBA分類子を組み合わせて、補足することができます。この例では、デフォルト(BA)の DiffServ コード ポイント(DSCP)分類子を適用し、その機能を検証する方法を示します。
要件
この手順を確認するために、この例ではトラフィック ジェネレータを使用します。トラフィック ジェネレータは、ハードウェアベースで実行することも、サーバーまたはホスト マシン上で実行するソフトウェアにすることもできます。トラフィック ジェネレータにアクセスできない場合は、拡張 ping を使用して検証できます。このアプローチも示しています。
この手順の機能は、Junos OS を実行するデバイスで幅広くサポートされています。ここに示す例は、Junos OSリリース10.4を実行しているMXシリーズルーターでテストと検証を行いました。
概要
Junos OS CoSの基本は、トラフィックの差別化です。異なるサービス クラスにトラフィックを割り当てることで、必要な差別化を図ることができます。ルーターの観点から、パケットに割り当てられたサービスクラスは、パケットに対するルーターの動作を定義します。トラフィックの差別化の概念はすべての CoS ツールに存在し、その結果、サービス クラスが CoS 設計全体に存在します。分類子には1つの入力と受信パケットがあり、 N の出力が可能です。 N はパケットを分類できるサービスクラスの数です。
BA 分類は、デバイスに送信されるトラフィックがパケット ヘッダーで信頼できる CoS 値をすでに持っている場合に使用されます。たとえば、デフォルトの DSCP BA 分類子は、コード ポイント 000000 を持つパケットがベストエフォート型転送クラスに割り当てられ、損失優先度が低い場合に指定します。
各既知の DSCP には、転送クラスと損失の優先度がデフォルトで割り当てられます。これを表示するには、 コマンドを show class-of-service classifier
実行します。
user@host> show class-of-service classifier type dscp Classifier: dscp-default, Code point type: dscp, Index: 7 Code point Forwarding class Loss priority 000000 best-effort low 000001 best-effort low 000010 best-effort low 000011 best-effort low 000100 best-effort low 000101 best-effort low 000110 best-effort low 000111 best-effort low 001000 best-effort low 001001 best-effort low 001010 assured-forwarding low 001011 best-effort low 001100 assured-forwarding high 001101 best-effort low 001110 assured-forwarding high 001111 best-effort low 010000 best-effort low 010001 best-effort low 010010 best-effort low 010011 best-effort low 010100 best-effort low 010101 best-effort low 010110 best-effort low 010111 best-effort low 011000 best-effort low 011001 best-effort low 011010 best-effort low 011011 best-effort low 011100 best-effort low 011101 best-effort low 011110 best-effort low 011111 best-effort low 100000 best-effort low 100001 best-effort low 100010 best-effort low 100011 best-effort low 100100 best-effort low 100101 best-effort low 100110 best-effort low 100111 best-effort low 101000 best-effort low 101001 best-effort low 101010 best-effort low 101011 best-effort low 101100 best-effort low 101101 best-effort low 101110 expedited-forwarding low 101111 best-effort low 110000 network-control low 110001 best-effort low 110010 best-effort low 110011 best-effort low 110100 best-effort low 110101 best-effort low 110110 best-effort low 110111 best-effort low 111000 network-control low 111001 best-effort low 111010 best-effort low 111011 best-effort low 111100 best-effort low 111101 best-effort low 111110 best-effort low 111111 best-effort low
転送クラスは、出力キューを決定します。デフォルトでは、すべてのベストエフォート型トラフィックはキュー 0 を使用します。
関連付けられているキューをデフォルトで、転送クラスごとに表示するには、 コマンドを show class-of-service forwarding-class
使用します。(明確にするために、出力の一部は除外されています。
user@host> show class-of-service forwarding-class Forwarding class ID Queue best-effort 0 0 expedited-forwarding 1 1 assured-forwarding 2 2 network-control 3 3
輻輳発生時にパケットの破棄を制御するために、スケジューラーがランダム早期検出(RED)アルゴリズムと組み合わせて、損失の優先度を使用します。損失の優先度を考えるときは、損失を設定しない限り、意味を持たないように注意してください。デフォルトのドロップ動作は、キューが 100% フルになるまで待機してから、パケットのドロップを無差別に開始することです。キューが 100% 未満になると、パケットのドロップが停止します。
デフォルトのドロップ動作は、 コマンドに show class-of-service drop-profile
表示されます。
user@host> show class-of-service drop-profile Drop profile: <default-drop-profile>, Type: discrete, Index: 1 Fill level Drop probability 100 100
さまざまな損失の優先度の意味を作成するには、カスタム ドロップ プロファイルを設定する必要があります。例えば、損失の優先度を低く定義すると、キューが 75% 満杯の場合はドロップ確率が 10%、キューのフィル レベルが 95% の場合はドロップ確率が 40% になります。フィル レベルが 25 パーセントの場合は 50 パーセントのドロップ確率を、フィル レベルが 50% の場合は 90% のドロップ確率を意味する高損失優先度を定義できます。この例ではカスタム ドロップ プロファイルは含まれていませんが、分類子が損失の優先度を割り当てるため、ここでは明確に説明します。ドロップ プロファイルを作成するまで、これらの割り当ては無意味であることを理解することが重要です。
デフォルトの分類子演算を 図 1 に示します。この図は、2 つの IPv4 パケットがインターフェイスに入り、パケット ヘッダー内の DSCP コード ポイントに従って分類されていることを示しています。
分類子については、次の Juniper Networks Learning Byte ビデオで詳しく説明します。
トポロジ
図 2 は、サンプル ネットワークを示しています。
単一のデバイスに適用するのではなく、トポロジ全体にサービス クラス設定を適用することが重要です。さらに、受信インターフェイスに分類が有効であっても、すべてのコアおよびコアに面するインターフェイスに BA 分類子を適用する必要があります。これは、トラフィックの方向に応じて、単一のインターフェイスが送受信される可能性があるためです。たとえば、ホスト 1 からホスト 2 へのトラフィック フローでは、受信インターフェイスはデバイス R2 の ge-1/0/7、デバイス R3 の ge-2/0/6 です。トラフィックは、ホスト 2 からホスト R1 に向けて流れるので、受信インターフェイスはデバイス R2 の ge-1/0/3、デバイス R1 の ge-1/0/7 です。
これらのインターフェイスはコアに面していないため、デバイスR1またはデバイスR3のge-2/0/5のge-1/0/1にはBA分類子は適用されません。一般的に、エッジに面したインターフェイスでは、BA分類子ではなく、マルチフィールドの分類子を使用します。
CLI クイック構成 は、ジュニパーネットワークスのすべてのデバイスの設定を 図 2 に示しています。セクション 手順 手順では、デバイス R2 の手順について説明します。
構成
手順
CLI クイックコンフィギュレーション
この例を迅速に設定するには、以下のコマンドをコピーしてテキスト ファイルに貼り付け、改行を削除し、ネットワーク設定に合わせて必要な詳細を変更してから、 階層レベルの CLI にコマンドを [edit]
コピー アンド ペーストします。
デバイス R1
set interfaces ge-1/0/1 unit 0 family inet address 172.16.50.2/30 set interfaces ge-1/0/7 unit 0 family inet address 10.30.0.1/30 set class-of-service interfaces ge-1/0/7 unit 0 classifiers dscp default
デバイスR2
set interfaces ge-1/0/3 unit 0 family inet address 10.40.0.1/30 set interfaces ge-1/0/7 unit 0 family inet address 10.30.0.2/30 set class-of-service interfaces ge-1/0/3 unit 0 classifiers dscp default set class-of-service interfaces ge-1/0/7 unit 0 classifiers dscp default
デバイスR3
set interfaces ge-2/0/5 unit 0 family inet address 172.16.70.2/30 set interfaces ge-2/0/6 unit 0 family inet address 10.40.0.2/30 set class-of-service interfaces ge-2/0/6 unit 0 classifiers dscp default
手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。その方法の詳細については、 CLIユーザーガイドの設定モードでのCLIエディターの使用を参照してください。
デフォルト DSCP 動作集約分類子を有効にするには:
-
デバイス インターフェイスを設定します。
[edit interfaces] user@R2# set ge-1/0/3 unit 0 family inet address 10.40.0.1/30 user@R2# set ge-1/0/7 unit 0 family inet address 10.30.0.2/30
-
インターフェイスでデフォルト DSCP 分類子を有効にします。
[edit class-of-service interfaces] user@R2# set ge-1/0/3 unit 0 classifiers dscp default user@R2# set ge-1/0/7 unit 0 classifiers dscp default
結果
設定モードから、 および show class-of-service
コマンドを入力して設定をshow interfaces
確認します。出力結果に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
user@R2# show interfaces ge-1/0/3 { unit 0 { family inet { address 10.40.0.1/30; } } } ge-1/0/7 { unit 0 { family inet { address 10.30.0.2/30; } } }
user@R2# show class-or-service interfaces { ge-1/0/3 { unit 0 { classifiers { dscp default; } } } ge-1/0/7 { unit 0 { classifiers { dscp default; } } } }
デバイスの設定が完了したら、設定モードから を入力します commit
。
検証
設定が正しく機能していることを確認します。
動作集約分類子の検証
目的
デバイスインターフェイスで、デフォルトの動作集約分類子が有効になっていることを確認します。分類子は受信パケットで動作しますが、結果として出力されるキューの割り当てを表示します。
アクション
デバイスR2のインターフェイス統計をクリアします。
user@R2> clear interface statistics ge-1/0/3
デバイス R1 からの拡張 ping またはホストまたはサーバー上で実行されているパケット ジェネレータを使用して、コード ポイントを 001010 に設定したパケットを送信します。
両方の方法をここに示します。使用されるパケット ジェネレータは hping です。
拡張 ping を使用して IPv4 パケット ヘッダーで DSCP コード ポイントを設定する場合、 コマンドのオプション
ping
でサービスタイプ(ToS)10 進値(この場合は 40)が必要tos
です。hping を使用して IPv4 パケット ヘッダーで DSCP コード ポイントを設定する場合、 コマンドの
hping
オプションで ToS hex 値(この場合は 28)が必要--tos
です。
2 進から 16 進への変換スキルや 2 進から 10 進への変換スキルが必要な場合は、 http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html などのオンライン カリキュレータを使用できます。
メモ:バイナリ DSCP コード ポイント値を変換する場合は、最後に必ず 2 つの余分なゼロを追加してください。そのため、001010 ではなく、00101000 を使用します。これらの 0 の値(7 ビット目と 8 ビット目)は予約されており、無視されますが、変換に値が含まれていない場合、16 進値と 10 進値は正しくありません。
デバイスR1から送信された拡張Ping
user@R1> ping 172.16.70.1 tos 40 rapid count 25 PING 172.16.70.1 (172.16.70.1): 56 data bytes !!!!!!!!!!!!!!!!!!!!!!!!! --- 172.16.70.1 ping statistics --- 25 packets transmitted, 25 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.430/0.477/0.847/0.079 ms
ホスト 1 から送信された hping
root@host1> hping 172.16.70.1 --tos 28 -c 25 HPING 172.16.70.1 (eth1 172.16.70.1): NO FLAGS are set, 40 headers + 0 data bytes len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.3 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=1 win=0 rtt=0.6 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=2 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=3 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=4 win=0 rtt=0.6 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=5 win=0 rtt=0.3 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=6 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=7 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=8 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=9 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=10 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=11 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=12 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=13 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=14 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=15 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=16 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=17 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=18 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=19 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=20 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=21 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=22 win=0 rtt=0.4 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=23 win=0 rtt=0.5 ms len=46 ip=172.16.70.1 ttl=61 DF id=0 sport=0 flags=RA seq=24 win=0 rtt=0.4 ms
デバイスR2で、キュー2が増加していることを確認します。
コード ポイント 001010 はアシュアランス転送に関連付けられています。デフォルトではキュー 2 が使用されます。
user@R2> show interfaces extensive ge-1/0/3 | find "queue counters" Queue counters: Queued packets Transmitted packets Dropped packets 0 0 0 0 1 0 0 0 2 50 25 0 3 3 3 0 Queue number: Mapped forwarding classes 0 best-effort 1 expedited-forwarding 2 assured-forwarding 3 network-control
意味
出力は、ルーターを介して50パケットを送信した後、キュー2が50パケット増加したことを示しています。