Junos OS CoSプロセスを通した基本的なパケットフローの設定
図 1 と 図 2 は、Junos OS CoS 機能のコンポーネントを示し、それらが対話するシーケンスを示しています。
を通るパケット フロー
以下の設定は、CoS プロセスを通過するパケット フローを示しています。
分類子の定義
パケット ヘッダーの CoS 値を信頼できる場合、動作集約分類を使用して、それらの値を転送クラスにマッピングし、優先度をドロップできます。例えば:
[edit class-of-service]
classifiers {
exp exp_classifier {
forwarding-class data-queue {
loss-priority high code-points 001;
loss-priority low code-points 000;
}
forwarding-class nc-queue {
loss-priority high code-points 111;
loss-priority low code-points 110;
}
forwarding-class video-queue {
loss-priority high code-points 011;
loss-priority low code-points 010;
}
forwarding-class voice-queue {
loss-priority high code-points 101;
loss-priority low code-points 100;
}
}
パケット ヘッダーの CoS 値を信頼できない場合、より複雑なマルチフィールド分類を使用して、イングレス トラフィックを転送クラスにマッピングし、優先度を落とすことができます。例えば:
[edit firewall]
family inet {
filter classify {
term sip {
from {
protocol [ udp tcp ];
port 5060;
}
then {
forwarding-class nc-queue;
loss-priority low;
accept;
}
}
}
}
「」も参照
インターフェイス上の受信パケットに分類子を適用する
階層レベルで、動作集約分類子を論理インターフェイスに [edit class-of-service interfaces] 適用します。例えば:
[edit class-of-service]
interfaces {
so-* {
unit 0 {
classifiers {
exp exp_classifier;
}
}
}
t3-* {
unit 0 {
classifiers {
exp exp_classifier;
}
}
}
}
階層レベルの論理インターフェイスに、入力フィルターとしてマルチフィールドの分類子を [edit interfaces] 適用します。例えば:
[edit interfaces]
fe-0/0/2 {
unit 0 {
family inet {
filter {
input classify;
}
address 10.12.0.13/30;
}
}
}
ポリサーを定義してトラフィックを制限し、輻輳を制御する
トラフィックフローをレート制限する必要がある場合は、過剰なトラフィック(ハードポリシング)を破棄するか、過剰なトラフィックを別の転送クラスや損失優先度(ソフトポリシング)に再割り当てすることで、ポリサーを定義し、そのトラフィックフローのファイアウォールフィルターにポリサーを適用します。例えば:
[edit firewall]
policer be-lp {
if-exceeding {
bandwidth-limit 10m;
burst-size-limit 62500;
}
then loss-priority high;
}
family inet {
filter be-lp {
term t1 {
from {
protocol tcp;
port 80;
}
then policer be-lp;
then loss-priority low;
then accept;
}
}
}
「」も参照
ドロッププロファイルの定義
ドロッププロファイルを使用して、遅延バッファの占有範囲全体のドロップ確率を定義し、ランダム早期検出(RED)プロセスをサポートします。
[edit class-of-service]
drop-profiles {
be-red {
fill-level 20 drop-probability 25;
fill-level 30 drop-probability 50;
fill-level 40 drop-probability 75;
fill-level 50 drop-probability 100;
}
}
「」も参照
各転送クラスをキューに割り当てる
各転送クラスに差別化されたサービスを提供するには、各転送クラスを独自の出力キューに割り当てます。例えば:
[edit class-of-service]
forwarding-classes {
queue 0 data-queue;
queue 1 video-queue;
queue 2 voice-queue;
queue 3 nc-queue;
}
「」も参照
スケジューラの定義
各転送クラスのスケジューラ特性を定義します。例えば:
[edit class-of-service]
schedulers { #
data-scheduler {
buffer-size percent 50;
drop-profile-map loss-priority high protocol any drop-profile be-red;
priority low;
transmit-rate percent 50;
}
nc-scheduler {
buffer-size percent 5;
priority high;
transmit-rate percent 5;
}
video-scheduler {
buffer-size percent 25;
priority strict-high;
transmit-rate percent 25;
}
voice-scheduler {
buffer-size percent 20;
priority high;
transmit-rate percent 20;
}
}
「」も参照
スケジューラ マップの定義
スケジューラ マップを使用して、スケジューラを転送クラスにマッピングします。例えば:
[edit class-of-service]
scheduler-maps {
sched1 {
forwarding-class data-queue scheduler data-scheduler;
forwarding-class nc-queue scheduler nc-scheduler;
forwarding-class video-queue scheduler video-scheduler;
forwarding-class voice-queue scheduler voice-scheduler;
}
}
「」も参照
CoS ヘッダー書き換えルールの定義
書き換えルールを使用して、発信パケットの CoS ビット パターンを再定義します。例えば:
[edit class-of-service]
rewrite-rules {
inet-precedence inet-rewrite {
forwarding-class data-queue {
loss-priority high code-point 001;
loss-priority low code-point 000;
}
forwarding-class nc-queue {
loss-priority high code-point 111;
loss-priority low code-point 110;
}
forwarding-class video-queue {
loss-priority high code-point 101;
loss-priority low code-point 100;
}
forwarding-class voice-queue {
loss-priority high code-point 011;
loss-priority low code-point 010;
}
}
}
「」も参照
スケジューラ マップを適用し、エグレス インターフェイスにルールを書き換える
[edit class-of-service]
interfaces {
ge-* {
scheduler-map sched1;
unit * {
rewrite-rules {
inet-precedence inet-rewrite;
}
}
}
}