Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

OpenConfig QoS コマンドの Junos 設定へのマッピング

手記:

サポートされているデータモデルのバージョンと、対応するJunos OSまたはJunos Evolved OSリリースについては、 OpenConfigデータモデルのバージョン を参照してください。

転送クラスの設定

以下の OpenConfig パスの構成マッピングについては、 表 1 を参照してください。

  • /qos/forwarding-groups/forwarding-group/name
  • /qos/forwarding-groups/forwarding-group/config/name
  • /qos/forwarding-groups/forwarding-group/config/fabric-priority
  • /qos/forwarding-groups/forwarding-group/config/output-queue
表 1: 転送クラスの設定

OpenConfig Configuration

Junos の設定

openconfig-qos:qos {
       forwarding-groups {
              forwarding-group {
                    name af1;
                    config {
                          name <>;
                          fabric-priority 0;
                          output-queue <>;
                    }
              }
              forwarding-group {
                    name nc;
                    config {
                          name <>;
                          fabric-priority 1;
                          output-queue <>;
                    }
              }
       }
}
class-of-service {
    forwarding-classes {
        class <name> queue-num <num> priority low;
        class <name> queue-num <num> priority high;
   }
}

OpenConfig fabric-priority 値 0 は、優先度が低いことを示します。0 以外の値は、優先度が高いことを示します。 fabric-priority 値は、PTXプラットフォームではサポートされていません。

BA 分類子の設定

以下のOpenConfigパスの設定マッピングについては、を参照してください。

  • /qos/classifiers/classifier/name
  • /qos/classifiers/classifiers/terms/term/id
  • /qos/classifiers/classifier/config/name
  • /qos/classifiers/classifier/config/type
  • /qos/classifiers/classifiers/terms/term/id
  • /qos/classifiers/classifier/terms/term/config
  • /qos/classifiers/classifier/terms/term/config/id
  • /qos/classifiers/classifier/terms/term/conditions/ipv4/config/dscp-set
  • /qos/classifiers/classifier/terms/term/conditions/ipv6/config/dscp-set
  • /qos/classifiers/classifier/terms/term/actions/config/target-group
手記:

以下の OpenConfig の例をより簡単に実行するために、上記の OpenConfig 構成ツリーで変数が使用されています。

表 2: BA 分類子の構成

OpenConfig Configuration

Junos の設定

Open-Config-QoS:QoS:classifiers:classifier {
   name DSCP;
   terms {
      term {
         id 0;
         conditions {
            ipv6 {
               config {
                  dscp-set [ 2 3 ];                                                       }
         }
         actions {
            config {
               target-group best-effort;
            }
         }
      }
   }
}
[edit class-of-service]
classifiers {
   dscp DSCP {
term-id {
term-id 0;
   forwarding-class best-effort {
      loss-priority low code-points [ 000100 000010 ];
   }
}

Junos OSは、 loss-priority 値を想定しています。ただし、OpenConfig 構成ではこれは提供されません。デフォルトでは、 loss-priority 値は low と見なされます。

OpenConfig code-point 値は、ビット形式をオクテットとして、10 進数値を 10 進数として指定します。混乱を避けるために、 code-point 値を 10 進形式で指定すると、スクリプトはそれらを 6 ビット・パターンに変換して管理デーモンに送信します。例えば:

set openconfig-qos:qos classifiers classifier DSCP terms term 0 conditions ipv4 config dscp-set [2 3]

MPLS分類子の設定

以下の OpenConfig パスの構成マッピングについては、 表 3 を参照してください。

  • /qos/classifiers/classifier/terms/term/conditions/mpls
  • /qos/classifiers/classifier/terms/term/conditions/mpls/config
  • /qos/classifiers/classifier/terms/term/conditions/mpls/config/traffic-class
  • /qos/classifiers/classifier/terms/term/actions/config/target-group
表 3: MPLS 分類子の構成

OpenConfig Configuration

Junos の設定

openconfig-qos:qos {
    classifiers {
        classifier <> {
            config {
                name <>;
                type <>;
            }
            terms {
                term {
                    id <>;
                    conditions {
                        mpls {
                            config {
                                traffic-class <>;
                            }
                        }
                    }
                    actions {
                        config {
                            target-group <>;
                            }
                        }
                    }
                 }
                term {
                    id <>;
                    conditions {
                        mpls {
                            config {
                                traffic-class <>;
                            }
                        }
                    }
                    actions {
                        config {
                            target-group <>;
                            }
                        }
                    }
                 }
             }
         }
    }
}
class-of-service {
    classifiers {
        exp <> {
            forwarding-class <> {
                loss-priority low code-points <>;
            }
            forwarding-class <> {
                loss-priority low code-points <>;
            }
        }
    }
}

Junos OS は、 loss-priority 値を想定しています。OpenConfig 構成では、これは提供されません。デフォルトでは、 loss-priority 値は low です。

OpenConfig code-point 値は、ビット形式をオクテットとして、10 進数値を 10 進数として指定します。混乱を避けるため、 code-point 値は 10 進形式で指定します。

ルール設定の書き換え

以下の OpenConfig パスの構成マッピングについては、 表 4 を参照してください。

  • /qos/classifiers/classifier/terms/term/actions/remark
  • /qos/classifiers/classifiers/terms/term/actions/remark/config
  • /qos/classifiers/classifier/terms/term/actions/remark/config/set-dscp
  • /qos/classifiers/classifiers/terms/term/actions/remark/config/set-dot1p
  • /qos/classifiers/classifier/terms/term/actions/remark/config/set-mpls-tc
表 4: ルール設定の書き換え

OpenConfig Configuration

Junos の設定

openconfig-qos:qos {
    classifiers {
        classifier <> {
            config {
                name <>;
                type IPV4;
            }
            terms {
                term 0 {
                    actions {
                        config {
                            target-group <>;
                        }
                        remark {
                            config {
                                set-dscp 5;
                            }
                        }
                    }
                }
                term 1 {
                    actions {
                        config {
                            target-group <>;
                        }
                        remark {
                            config {
                                set-dscp 6;
                            }
                        }
                    }
                }
            }
        }
    }
}
class-of-service {
    rewrite-rules {
        dscp <> {
            forwarding-class <> {
                loss-priority low code-point 000101 term-id 0;
            }
            forwarding-class <> {
                loss-priority low code-point 000110 term-id 1;
            }
        }
    }
}
openconfig-qos:qos {
    classifiers {
        classifier <> {
            config {
                name <>;
                type IPV6;
            }
            terms {
                term 0 {
                    actions {
                        config {
                            target-group <>;
                        }
                        remark {
                            config {
                                set-dscp 7;
                            }
                        }
                    }
                }
                term 1 {
                    actions {
                        config {
                            target-group <>;
                        }
                        remark {
                            config {
                                set-dscp 8;
                            }
                        }
                    }
                }
            }
        }
    }
}
class-of-service {
    rewrite-rules {
        dscp-ipv6 <> {
            forwarding-class <> {
                loss-priority low code-point 000111 term-id 0;
            }
            forwarding-class <> {
                loss-priority low code-point 001000 term-id 1;
            }
        }
    }
}
openconfig-qos:qos {
    classifiers {
        classifier <> {
            config {
                name <>;
                type MPLS;
            }
            terms {
                term 0 {
                    actions {
                        config {
                            target-group <>;
                        }
                        remark {
                            config {
                                set-mpls-tc 5;
                            }
                        }
                    }
                }
                term 1 {
                    actions {
                        config {
                            target-group <>;
                        }
                        remark {
                            config {
                                set-mpls-tc 6;
                            }
                        }
                    }
                }
            }
        }
    }
}
class-of-service {
    rewrite-rules {
        exp <> {
            forwarding-class <> {
                loss-priority low code-point 101 term-id 0;
            }
            forwarding-class <> {
                loss-priority low code-point 110 term-id 1;
            }
        }
    }
}

書き換えルールの設定に使用される転送グループを以下に示します。

openconfig-qos:qos {
    forwarding-groups {
        forwarding-group <> {
            config {
                name <>;
                output-queue 0;
            }
        }
        forwarding-group <> {
              config {
                  name <>;
                  output-queue 1;
             }
        }
    }
}
class-of-service {
    forwarding-classes {
        class <> queue-num 0;
        class <> queue-num 1;
    }
}

分類子バインディングの構成

以下の OpenConfig パスの構成マッピングについては、 表 5 を参照してください。

  • /qos/interfaces/interface/interface-id
  • /qos/interfaces/interface/interface-ref/config/interface
  • /qos/interfaces/interface/interface-ref/config/subinterface
  • /qos/interfaces/interface/input/classifiers/classifiers/type
  • /qos/interfaces/interface/input/classifiers/classifier/config/name
  • /qos/interfaces/interface/input/classifiers/classifier/config/type
手記:

以下の OpenConfig の例をより簡単に実行するために、変数は OpenConfig 構成ツリーで使用されます。

表 5: 分類子バインディングの構成

OpenConfig Configuration

Junos の設定

openconfig-qos:qos {
    interfaces {
        interface {
            interface-id et-0/0/1.0;
                input {
                    classifiers {
                        classifier {
                            type <>;  
                            config {
                                name <>;
                                type <>;
                            }
                        }
                    }
                }
            }
        }
        interface {  
               interface-id ae0;  
            interface-ref { 
                config { 
                    subinterface <>; 
                } 
            } 
                 input {  
                        classifiers {  
                                classifier {  
                                    type <>;    
                                        config {  
                                            name <>;  
                                                type <>;
                                    }  
                              }
                        } 
            }
        }
    }
}
class-of-service {
    et-0/0/1 {
        unit 0 {
            classifiers {
                dscp <>;
             }
        }
    }
    ae0 { 
        unit <> { 
            classifiers { 
                exp <>;  
            } 
        } 
    }  
}

分類子バインディングは、分類子とインターフェイスをマッピングすることによって、インターフェイステーブルから形成できます。

この設定では、ワイルドカード (*) もサポートされています。例えば:

set openconfig-qos:qos interfaces interface et-*/*/*.0 interface-ref config interface et-*/*/*

set openconfig-qos:qos interfaces interface et-*/*/*.0 interface-ref config subinterface 0

set openconfig-qos:qos interfaces interface et-*/*/*.0 input classifiers classifier IPV4 config name DSCP

openconfig-qos:qos {
   interfaces interface <> {
       interface-ref {
           config interface <>;
       }
       output scheduler-policy {
            config name <>;
       }
   }
}
class-of-service {
    interfaces <> {
        output-traffic-control-profile <>;
    }
}

スケジューラ設定

以下の OpenConfig パスの構成マッピングについては、 表 6 を参照してください。

  • /qos/scheduler-policies/scheduler-policy/name
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/sequence
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/priority
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/output/config/output-fwd-group
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/sequence
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/bc
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/cir
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/cir-pct
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/pir
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/pir-pct
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/id
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/id
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/input-type
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/queue
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/weight
  • /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/priority
手記:

以下の OpenConfig の例をより簡単に実行するために、以下の OpenConfig 構成ツリーで変数が使用されています。

表 6: スケジューラの構成

OpenConfig Configuration

Junos の設定

openconfig-qos:qos { 
    scheduler-policies { 
        scheduler-policy { 
             name smap; 
             schedulers {
                 scheduler { 
                     sequence:4 
                     two-rate-three-color { 
                       config {
                          cir-pct:10
                       } 
                     } 
                 } 
                 scheduler { 
                     sequence:1 
                     two-rate-three-color { 
                      config {
                         cir-pct:1 
                      }
                     } 
                 }
                 scheduler { 
                     sequence:5  
                     two-rate-three-color { 
                       config {
                         cir-pct:1 
                       }
                     } 
                 }
                 scheduler { 
                     sequence:2 
                     priority: STRICT
                     two-rate-three-color { 
                      config {
                         cir-pct:1 
                       }
                     } 
                 }
                 scheduler { 
                     sequence:0 
                     two-rate-three-color { 
                       config {
                          cir-pct:1 
                      }
                     } 
                 }
                 scheduler { 
                     sequence:3 
                     two-rate-three-color { 
                       config {
                        cir-pct:1 
                      }
                     }
                 } 
           } 
       } 
    } 
} 
class-of-service {
 scheduler-maps { 
    smap { 
        forwarding-class af1 scheduler sched_af1; 
        forwarding-class af2 scheduler sched_af2; 
        forwarding-class af3 scheduler sched_af3; 
        forwarding-class af4 scheduler sched_af4; 
        forwarding-class be1 scheduler sched_be1; 
        forwarding-class nc1 scheduler sched_nc1; 
    } 
 } 
 schedulers { 
    sched_af1 { 
        transmit-rate percent 10; 
        buffer-size shared; 
        priority low; 
    } 
    sched_af2 { 
        transmit-rate percent 1; 
        buffer-size shared; 
        priority low; 
    } 
    sched_af3 { 
        transmit-rate percent 1; 
        buffer-size shared; 
        priority low; 
    } 
    sched_af4 { 
    transmit-rate percent 1; 
        buffer-size shared; 
        priority strict-high; 
    } 
    sched_be1 { 
        transmit-rate percent 1; 
        buffer-size shared; 
        priority low; 
    } 
    sched_nc1 { 
   transmit-rate percent 1; 
        buffer-size shared; 
        priority low; 
    } 
 } 
}

scheduler コマンドでサポートされていない OpenConfig パラメーターには、buffer-sizeexcess-rates、および excess priorities があります。STRICT-HIGH優先度のみがサポートされます。プライオリティを設定すると、プライオリティとして扱われSTRICT-HIGH。それ以外の場合、優先度はデフォルトで LOW です。

scheduler コマンドでサポートされていないフィールドである OpenConfig フィールドは、cir-pct-remainingpir-pct-remainingbe(超過バースト サイズ)、および bc(認定バースト サイズ)です。これらのフィールドは、PTXプラットフォームではサポートされていませんが、MXプラットフォームではサポートされています。

OpenConfig でスケジューラ名を構成するパラメーターはありません。代わりに、Junos scheduler-map の名前と forwarding groupを組み合わせて名前を推定します。たとえば、次のパラメーターはスケジューラ名 sched_smap_assured-forwarding を作成します。

<schedulers> {
       <name> “sched” _ “_” _$smap_name _ "_" _ $out_fwd_group;
   }
手記:

スケジューラー名の長さは 64 文字です。スケジューラマップと転送クラス名はOpenConfig設定で連結されるため、それらを提供する際には注意が必要です。

OpenConfig sequence番号は、転送グループが表す queuenum 値と同じである必要があります。たとえば、assured-forwarding がキュー 2 に接続されている場合、sequence番号は 2 である必要があります。状態のエクスポート時に、target-groupがアタッチされているqueuenumsequence番号としてエクスポートされます。

set openconfig-qos:qos scheduler-policies scheduler-policy smap schedulers scheduler 2 output config output-fwd-group assured-forwarding

openconfig-qos:qos { 
   scheduler-policies scheduler-policy sp1 {
       schedulers scheduler 0 {
	   inputs {
	       input AF4 {
                 config id AF4;
	          input-type QUEUE;
	          queue 2;
	          weight 60;
	       }
	   }
       }
   }
}
class-of-service {
    scheduler-maps sp1{
        forwarding-class AF4 scheduler sched_scheduler_AF4;
    }
    traffic-control-profiles {
        tcp_sp1
             schedule-map sp1;
        }
    }
}
// If STRICT priority is configured:
class-of-service {
    schedulers {
        scheduler_AF4{
            transmit-rate percent 100;
            excess-rate percent 60;
            priority high;
        }
    }
}
// If *not* STRICT priority, use Weighted Round Robin (WRR)mode:
class-of-service {
    schedulers {
        scheduler_AF4{
            transmit-rate percent 0;
            excess-rate percent 60;
            priority low;
        }
    }
}

手記:マッピングをよりよく理解するために、上記の構成に値が追加されます。

キューリーフの値は、スケジューラマップ内で同等の転送クラス値として変換されます。

厳密なスケジューラ プライオリティを設定する場合:

  • 各転送クラスに対して transmit-rate 値を 100% として設定します。

  • 転送クラス priority は、OpenConfig転送クラスの重みを昇順で下します。

  • 転送クラス priority は、「厳密-高:高:中-高:中-低:低」の順で割り当てられます。

厳密なスケジューラ プライオリティが設定されていない場合(WRR モード):

  • 各転送クラスに対して transmit-rate 値を 0% として設定します。

  • excess-rate各OpenConfig転送クラスの重みと同じ値で値を設定します。100を超える重量値は許可されていません。

OpenConfig パス /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/input/config/input-type を持つ input-type にのみQUEUE値を使用できます。これは、QUEUE が Junos OS にマッピングできる唯一の列挙値だからです。 同様に、リソース パス /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/state/input-type をサブスクライブすると、常に列挙QUEUEリーフがコレクターにストリーミングされます。

Junos OSから、スケジューラマップ設定用のトラフィック制御プロファイル(TCP)を作成し、TCPを使用して設定をインターフェイスにバインドします。上記のJunos OS設定では、TCP tcp_sp1 とスケジューラマップ sp1を使用しています。

スケジューラ マップの構成

以下の OpenConfig パスの構成マッピングについては、 表 7 を参照してください。

  • /qos/interfaces/interface/interface-id
  • /qos/interfaces/interface/output/scheduler-policy/config/name
手記:

以下の OpenConfig の例をより簡単に実行するために、以下の OpenConfig 構成ツリーで変数が使用されています。

表 7: スケジューラ マップの構成

OpenConfig Configuration

Junos の設定

openconfig-qos:qos {
   interfaces {
      interface {
         interface-id et-0/0/1;
            output {
               scheduler-policy {
                  config {
                     name <>;
                  }
               }
            }
         }
      }
   }
}
class-of-service {
   interfaces et-0/0/1{
      output-traffic-control-profile tcp_sp1;
   }
}

スケジューラ マップは、物理(IFD)インターフェイスにのみバインドできます。

ワイルドカードもサポートされています。例えば:

set openconfig-qos:qos interfaces interface et-*/*/* interface-ref config interface et-*/*/*

set openconfig-qos:qos interfaces interface et-*/*/* output scheduler-policy config name smap

ドロッププロファイル設定

以下の OpenConfig パスの構成マッピングについては、 表 8 を参照してください。

  • /qos/queue-management-profiles/queue-management-profile/config/name
  • /qos/queue-management-profiles/queue-management-profile/wred/uniform/config/min-threshold
  • /qos/queue-management-profiles/queue-management-profile/wred/uniform/config/max-threshold
  • /qos/queue-management-profiles/queue-management-profile/wred/uniform/config/max-drop-probability-percent
  • /qos/queue-management-profiles/queue-management-profile/wred/uniform/config/enable-ecn
  • /qos/queue-management-profiles/queue-management-profile/wred/
  • /qos/interfaces/interface/output/queues/queue/config/name

  • /qos/interfaces/interface/output/queues/queue/config/queue-management-profile

表 8: ドロップ プロファイルの設定

OpenConfig Configuration

Junos の設定

openconfig-qos:qos {
   queue-management-profiles {
      queue-management-profile <> {
         wred {
            uniform {
               config {
                  min-threshold; (not for MX Series)
                  max-threshold; (not for MX Series)
                  enable-ecn <true | false>; (not for MX Series)
                  max-drop-probability-percent <>;
               }
            }
         }
      }
   }
}
class-of-service {
   drop-profiles {
       <profile-name> {
           fill-level <> drop-probability <>;
       }
   schedulers {
      <scheduler-name> {
         explicit-congestion-notification;
      }
   }
}

OpenConfig では、最小および最大のしきい値レベルをバイト単位で構成します。Junos では、各しきい値をキュー充満率の割合として設定します。 fill-level ステートメントを drop-probability ステートメントと組み合わせて繰り返して、最小しきい値と最大しきい値を設定できます。

openconfig-qos:qos { 
   queue-management-profile {
      config {
         name <>; 
   }
   wred {
      uniform {
         config {
           min-threshold-percent <>;
	    max-threshold-percent <>;
	    max-drop-probability-percent <>;
	 }
      }
   }
}
class-of-service {
    drop-profiles {
        <profile-name> {
        interpolate {
            fill-level [ <> <> ];
            drop-probability <>;
        }
    }
}
openconfig-qos:qos {
    interfaces interface <> {
        interface-ref {
            config interface <>;
        }
        output queues <> {
            config {
                name <>;
                queue-management-profile <>;
            }
        }
    }
}
interfaces {
    <interface-name>{
        scheduler-map <>;
    }
}
scheduler-maps {
    <scheduler-map-name> {
        forwarding-class best-effort scheduler <>;
    }
}
schedulers {
    <scheduler-name> {
        drop-profile-map loss-priority any protocol any drop-profile <>;
    }
} 
openconfig-qos:qos {
    scheduler-policies scheduler-policy <> {
        schedulers scheduler <> { 
    }
}
class-of-service {
    schedulers {
        <scheduler> {
            priority strict-high;
        }
    }
}

インターフェイス設定下のキューにqueue-managementプロファイルをバインドすると、Junos OSサービスクラスモデルは、同じインターフェイス出力の下にすでに存在するスケジューラマップにdropプロファイルをアタッチします。インターフェイスにdropプロファイルをアタッチするには、インターフェイスの/qos/interfaces/interface/output/scheduler-policy/の下の出力にscheduler-policyがアタッチされている必要があります。