例:CoS戦略を実施するために、ネットワーク境界でのCoS情報の書き換え
この例では、ネットワーク境界で(リマーキング)サービスクラス(CoS)値を書き換えて、内部CoS戦略を実施する方法を示しています。これは通常、ネットワーク境界のインバウンド トラフィックの CoS 値が信頼できない場合、または値が内部ネットワークの CoS 戦略と一致しない場合に行われます。
CoS の書き換えとその基礎となるアルゴリズムの徹底的な解説は、本書の範囲外です。トラフィックポリシングとCoSの一般的な詳細については、 QoS-Enabled Networks— Miguel BarreirosとPeter Lundqvistの「Tools and Foundations」を参照してください。このガイドは、多くのオンライン書籍販売業者や www.juniper.net/books で利用できます。
要件
この手順を確認するために、この例ではトラフィック ジェネレータを使用します。トラフィック ジェネレータは、ハードウェアベースで実行することも、サーバーまたはホスト マシン上で実行するソフトウェアにすることもできます。
この手順の機能は、Junos OS を実行するデバイスで幅広くサポートされています。ここに示す例は、Junos OSリリース10.4を実行しているMXシリーズルーターでテストと検証を行いました。
概要
この例の目的は、トラフィックに割り当てられた転送クラスとPLP(パケット損失の優先度)に基づいて、トラフィックのCoSプロファイルをネクストホップルーターに伝えるために、ネットワーク境界でのCoS書き換えをデモンストレーションすることです。CoS情報の書き換えは、パケットがエグレスネットワークに送信される前の最後のステップとして実行されます。
この例では、デバイスR1に接続されたホストからデバイスR2に接続されたホストにトラフィックを送信する場合に、書き換えが行われます。この例では、CoS パラメータを逆方向に書き換えるのに必要な情報は含まれていません。ただし、デバイスR1で書き換え情報を使用し(使用されるインターフェイスに変更を加える)、デバイスR2に適用して、双方向CoS書き換えを実現できます。
Junos OS には、要件を満たす場合があるいくつかのデフォルト書き換えルールが含まれています。コマンドで show class-of-service rewrite-rule 表示します。 表 1 は、デフォルトの書き換えルール マッピングの一部を示しています。
| 転送クラスからのマップ |
PLP 値 |
DSCP/DSCP へのマッピング IPv6/EXP/IP コード ポイントエイリアス |
|---|---|---|
| expedited-forwarding |
低 |
Ef |
| expedited-forwarding |
高 |
Ef |
| 保証された転送 |
低 |
af11 |
| 保証された転送 |
高 |
af12(DSCP/DSCP IPv6/EXP) |
| ベストエフォート |
低 |
Bve |
| ベストエフォート |
高 |
Bve |
| ネットワーク制御 |
低 |
nc1/cs6 |
| ネットワーク制御 |
高 |
nc2/cs7 |
独自のカスタム書き換えルールテーブルを定義したり、作成するデフォルトの書き換えルールとカスタムテーブルを組み合わせて使用することもできます。この例では、デフォルトの書き換えルールを使用しています。
トポロジ
この例では、 図 1 のトポロジーを使用しています。
このビデオでは、この例で使用するトピックについて説明します。続行する前にビデオを見てください。
構成
手順
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 class-of-service forwarding-classes queue 0 BE-data set class-of-service forwarding-classes queue 1 Premium-data set class-of-service forwarding-classes queue 2 voice set class-of-service forwarding-classes queue 3 NC set class-of-service interfaces ge-2/0/8 scheduler-map test-map set class-of-service interfaces ge-2/0/8 unit 0 rewrite-rules dscp IPv4-rewrite-table set class-of-service rewrite-rules dscp IPv4-rewrite-table forwarding-class BE-data loss-priority low code-point be set class-of-service rewrite-rules dscp IPv4-rewrite-table forwarding-class Premium-data loss-priority low code-point ef set class-of-service scheduler-maps test-map forwarding-class BE-data scheduler BE-data set class-of-service scheduler-maps test-map forwarding-class Premium-data scheduler Prem-data set class-of-service schedulers BE-data transmit-rate 1m set class-of-service schedulers BE-data buffer-size percent 25 set class-of-service schedulers BE-data priority low set class-of-service schedulers Prem-data transmit-rate 1m set class-of-service schedulers Prem-data buffer-size percent 25 set class-of-service schedulers Prem-data priority high 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 80 set firewall family inet filter mf-classifier term BE-data then count BE-data set firewall family inet filter mf-classifier term BE-data then forwarding-class BE-data set firewall family inet filter mf-classifier term Prem-data from protocol tcp set firewall family inet filter mf-classifier term Prem-data from port 12345 set firewall family inet filter mf-classifier term Prem-data then count Prem-data set firewall family inet filter mf-classifier term Prem-data then forwarding-class Premium-data 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.1/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 ge-2/0/8 unit 0 family inet filter input mf-classifier set interfaces unit 0 description looback-interface set interfaces unit 0 family inet address 192.168.14.1/32 set firewall family inet filter mf-classifier term BE-data from dscp be set firewall family inet filter mf-classifier term BE-data then count BE-data set firewall family inet filter mf-classifier term Premium-data from dscp ef set firewall family inet filter mf-classifier term Premium-data then count Premium-data set firewall family inet filter mf-classifier term accept then accept 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 ] user@R1# set interfaces ge-2/0/5 description to-Host user@R1# set interfaces ge-2/0/5 unit 0 family inet address 172.16.70.2/30 user@R1# set interfaces ge-2/0/5 unit 0 family inet filter input mf-classifier user@R1# set interfaces ge-2/0/8 description to-R2 user@R1# set interfaces ge-2/0/8 unit 0 family inet address 10.50.0.1/30 user@R1# set interfaces lo0 unit 0 description looback-interface user@R1# set interfaces lo0 unit 0 family inet address 192.168.13.1/32
ファイアウォールパラメータを設定します。
[edit ] user@R1# set firewall family inet filter mf-classifier term BE-data from protocol tcp user@R1# set firewall family inet filter mf-classifier term BE-data from port 80 user@R1# set firewall family inet filter mf-classifier term BE-data then count BE-data user@R1# set firewall family inet filter mf-classifier term BE-data then forwarding-class BE-data user@R1# set firewall family inet filter mf-classifier term Prem-data from protocol tcp user@R1# set firewall family inet filter mf-classifier term Prem-data from port 12345 user@R1# set firewall family inet filter mf-classifier term Prem-data then count Prem-data user@R1# set firewall family inet filter mf-classifier term Prem-data then forwarding-class Premium-data user@R1# set firewall family inet filter mf-classifier term accept then accept
サービス クラス パラメーターを設定します。
[edit ] user@R1# set class-of-service forwarding-classes queue 0 BE-data user@R1# set class-of-service forwarding-classes queue 1 Premium-data user@R1# set class-of-service forwarding-classes queue 2 voice user@R1# set class-of-service forwarding-classes queue 3 NC user@R1# set class-of-service interfaces ge-2/0/8 scheduler-map test-map user@R1# set class-of-service interfaces ge-2/0/8 unit 0 rewrite-rules dscp IPv4-rewrite-table user@R1# set class-of-service rewrite-rules dscp IPv4-rewrite-table forwarding-class BE-data loss-priority low code-point be user@R1# set class-of-service rewrite-rules dscp IPv4-rewrite-table forwarding-class Premium-data loss-priority low code-point ef user@R1# set class-of-service scheduler-maps test-map forwarding-class BE-data scheduler BE-data user@R1# set class-of-service scheduler-maps test-map forwarding-class Premium-data scheduler Prem-data user@R1# set class-of-service schedulers BE-data transmit-rate 1m user@R1# set class-of-service schedulers BE-data buffer-size percent 25 user@R1# set class-of-service schedulers BE-data priority low user@R1# set class-of-service schedulers Prem-data transmit-rate 1m user@R1# set class-of-service schedulers Prem-data buffer-size percent 25 user@R1# set class-of-service schedulers Prem-data priority high
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 ] user@R1# set interfaces ge-2/0/7 description to-Host user@R1# set interfaces ge-2/0/7 unit 0 family inet address 172.16.80.1/30 user@R1# set interfaces ge-2/0/8 description to-R1 user@R1# set interfaces ge-2/0/8 unit 0 family inet address 10.50.0.2/30 user@R2# set interfaces ge-2/0/8 unit 0 family inet filter input mf-classifier user@R1# set interfaces unit 0 description looback-interface user@R1# set interfaces unit 0 family inet address 192.168.14.1/32
ファイアウォールパラメータを設定します。
[edit ] user@R2# set firewall family inet filter mf-classifier term BE-data from dscp be user@R2# set firewall family inet filter mf-classifier term BE-data then count BE-data user@R2# set firewall family inet filter mf-classifier term Premium-data from dscp ef user@R2# set firewall family inet filter mf-classifier term Premium-data then count Premium-data user@R2# set firewall family inet filter mf-classifier term accept then accept
OSPFを設定します。
[edit protocols ospf] user@R1# set area 0.0.0.0 interface ge-2/0/7.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
結果
設定モードから、 、 show class-of-service show firewallおよび のコマンドを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 firewall
family inet {
filter mf-classifier {
term BE-data {
from {
protocol tcp;
port 80;
}
then {
count BE-data;
forwarding-class BE-data;
}
}
term Prem-data {
from {
protocol tcp;
port 12345;
}
then {
count Prem-data;
forwarding-class Premium-data;
}
}
term accept {
then accept;
}
}
}
user@R1 show class-of-service
forwarding-classes {
queue 0 BE-data;
queue 1 Premium-data;
queue 2 voice;
queue 3 NC;
}
interfaces {
ge-2/0/8 {
scheduler-map test-map;
unit 0 {
rewrite-rules {
dscp IPv4-rewrite-table;
}
}
}
}
rewrite-rules {
dscp IPv4-rewrite-table {
forwarding-class BE-data {
loss-priority low code-point be;
}
forwarding-class Premium-data {
loss-priority low code-point ef;
}
}
}
scheduler-maps {
test-map {
forwarding-class BE-data scheduler BE-data;
forwarding-class Premium-data scheduler Prem-data;
}
}
schedulers {
BE-data {
transmit-rate 1m;
buffer-size percent 25;
priority low;
}
Prem-data {
transmit-rate 1m;
buffer-size percent 25;
priority high;
}
}
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 {
unit 0 {
description to-Host;
family inet {
address 172.16.80.2;
}
}
}
ge-2/0/8 {
description to-R1;
unit 0 {
family inet {
filter {
input mf-classifier;
}
address 10.50.0.2/30;
}
}
}
lo0 {
unit 0 {
description looback-interface;
family inet {
address 192.168.14.1/32;
}
}
}
user@R2# show firewall
family inet {
filter mf-classifier {
term BE-data {
from {
dscp be;
}
then count BE-data;
}
term Premium-data {
from {
dscp ef;
}
then count Premium-data;
}
term accept {
then accept;
}
}
}
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 。
検証
設定が正しく機能していることを確認します。
ファイアウォール カウンターのクリア
目的
ファイアウォールカウンターがクリアされていることを確認します。
アクション
デバイスR1とR2で、 コマンドを clear firewall all 実行して、ファイアウォールカウンターを0にリセットします。
user@R1> clear firewall all user@R2> clear firewall all
TCP HTTP ポート 80 および 12345 からネットワークにトラフィックを送信し、結果を監視する
目的
デバイスR1とデバイスR2のファイアウォールで監視できるように、デバイス1に接続されたホストからネットワークにトラフィックを送信します。
アクション
トラフィック ジェネレータを使用して、送信元ポートが 80 の 20 個の TCP パケットをネットワークに送信します。
s フラグは、送信元ポートを設定します。k フラグは、ソース ポートがインクリメントされるのではなく、80 で安定した状態を維持します。c フラグは、パケット数を 20 に設定します。d フラグは、パケットサイズを設定します。
[User@host]# hping 172.16.80.1 -c 20 -s 80 -k -d 300 HPING 172.16.80.1 (eth1 172.16.80.1): NO FLAGS are set, 40 headers + 0 data bytes len=46 ip=172.16.80.1 ttl=62 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.9 ms . . . --- 172.16.80.1 hping statistic --- 20 packets transmitted, 20 packets received, 0% packet loss round-trip min/avg/max = 0.9/9501.4/19002.4 ms
トラフィック ジェネレータを使用して、送信元ポートが 12345 の 20 個の TCP パケットをネットワークに送信します。
[User@host]# hping 172.16.80.1 -c 20 -s 12345 -k -d 300 HPING 172.16.80.1 (eth1 172.16.80.1): NO FLAGS are set, 40 headers + 0 data bytes len=46 ip=172.16.80.1 ttl=62 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.3 ms . . . --- 172.16.80.1 hping statistic --- 20 packets transmitted, 20 packets received, 0% packet loss round-trip min/avg/max = 0.3/9501.5/19002.7 ms
デバイスR1で、 コマンドを使用してファイアウォールカウンターを
show firewall確認します。user@R1> show firewall Filter: mf-classifier Counters: Name Bytes Packets BE-data 800 20 Prem-data 800 20
デバイスR2で、 コマンドを使用してファイアウォールカウンターを
show firewall確認します。user@R2> show firewall Filter: mf-classifier Counters: Name Bytes Packets BE-data 800 20 Premium-data 800 20
意味
デバイスR1は、TCPパケットのコードポイントをポート12345からbfに正しく設定しています。デバイス R1 は、TCP パケットのコード ポイントをポート 80 に ef に正しく設定します。デバイスR2は、ポート12345へのTCPパケットのコードポイントをbfとして正しく認識しました。デバイス R2 は、ポート 80 への TCP パケットのコード ポイントを ef として正しく認識しました。