1行目: |
1行目: |
− | タイトルは Catalyst3850 ですが、同じ系統の ASIC である Catalyst9000 でもほぼ同じ内容が通用します。
| + | == 目的 == |
| + | Catalyst3850 / 9000 の QoS を設定・検証する際に、注意するべき点をまとめます。 |
| + | |
| + | == 対象 == |
| + | |
| + | === 対象機器 === |
| + | UADP ASIC を搭載した Cisco Catalyst スイッチが、このドキュメントの対象です。 |
| + | |
| + | * Catalyst 3650 / 3850 |
| + | * Catalyst 9200 / 9300 / 9400 Sup-1,2 / 9500 / 9500 High Performance / 9600 Sup-1 |
| + | |
| + | 9500X , 9600X は Silicon One ASIC 搭載のため、非対象です。 |
| + | |
| + | 有線 LAN の QoS を対象とし、無線 LAN QoS は扱いません。 |
| + | |
| + | * Catalyst 3850 では無線 LAN の AP をコントロールする機能があり、無線 LAN QoS の設定も存在する |
| + | |
| + | === 対象機能 === |
| + | 信頼・分類・マーキング・入力キュー・出力キューをメインに扱います。 |
| | | |
− | == 目的 ==
| + | まずは上記を扱えれば、他の機能は応用で扱えるようになるでしょう。 |
− | Catalyst3850 の QoS を検証する際に、注意するべき点をまとめます。
| |
| | | |
| == 注意点 == | | == 注意点 == |
8行目: |
25行目: |
| | | |
| 検証で確認されていないコンフィグは、'''すべてゴミ'''です。 | | 検証で確認されていないコンフィグは、'''すべてゴミ'''です。 |
| + | |
| + | * 思ったとおりには動作しません 設定したとおりに動作します |
| + | * 設定内容が正しいことを証明できる、テストケース作成の重要度が高いです |
| | | |
| トラブル時のエスカレーションも、検証結果を元に行います。 | | トラブル時のエスカレーションも、検証結果を元に行います。 |
| | | |
| == UADP ASIC QoS の全体像 == | | == UADP ASIC QoS の全体像 == |
− | 以下の全体像を頭に入れて、自分がどの部分をコンフィグしているのか、把握しながら進めましょう。
| + | QoS は非常に機能が多く、どの機能を設定しているのか分からなくなるケースがあります。 |
| + | |
| + | 以下の全体像を頭に入れて、自分がどの部分を設計・コンフィグ・検証しているのか、把握しながら進めましょう。 |
| [[ファイル:UADP ASIC QoS Overview.png|代替文=UADP ASIC QoS Overview|なし|サムネイル|1200x1200ピクセル|UADP ASIC QoS Overview]] | | [[ファイル:UADP ASIC QoS Overview.png|代替文=UADP ASIC QoS Overview|なし|サムネイル|1200x1200ピクセル|UADP ASIC QoS Overview]] |
| + | |
| + | === デフォルト 出力キュー設定 === |
| + | QoS を設定していないポートの場合、入力されたパケットの CoS / ToS / DSCP が信頼され、出力ポートのキューは以下で動作します。 |
| + | [[ファイル:3850 9000 QoS default traffic mapping.png|代替文=3850 9000 QoS default traffic mapping|なし|サムネイル|570x570ピクセル|3850 9000 QoS default traffic mapping]] |
| + | |
| + | === 2P6Q3T 出力キュー設定 === |
| + | 3850 / 9000 スイッチはキューの数を可変で設定できます。 |
| + | |
| + | キューの数を最大限設定した場合、入力されたパケットに対し、以下の通り出力キューへ割り当てられます。 |
| + | |
| + | * 信頼するか手動で分類するかは設定が可能なため、下記は信頼した場合の割当になります |
| + | |
| + | [[ファイル:3850 9000 QoS 2P6Q3T.png|代替文=3850 9000 QoS 2P6Q3T|なし|サムネイル|1200x1200ピクセル|3850 9000 QoS 2P6Q3T]] |
| + | |
| + | == QoS の設計 == |
| + | お客様のネットワークで使用されるプロトコル・Vlan・IP セグメントを分類し、ビジネス要件を満たす適切なポリシーを策定します。 |
| + | |
| + | 一般的に以下のような方針でポリシーを定義しますが、お客様で使用されているトラフィックを調査してアレンジします。 |
| + | |
| + | * 音声 : IP 電話の遅延をなくすため、絶対優先を行う 帯域幅を埋め尽くさないようにポリシングを行う |
| + | * 映像 : 音声の次に優先する 帯域幅を埋め尽くさないようにポリシングを行う |
| + | * 管理 : ルーティング プロトコルなど、ネットワークの維持に使用する |
| + | * その他 : インターネット アクセスなど、OA 系のトラフィックを割り当てる バッファリングを多く割り当ててドロップが起きにくくする |
| + | |
| + | === トラフィックの種類に対して CoS / ToS / DSCP を割当 === |
| + | RFC で定義されているため、好き勝手に割り当てるのは非推奨です。 |
| + | |
| + | だめな例としては、「優先度が高いからと考えてしまい、音声に ToS=6 や 7 を割り当ててしまう」といった例があります。 |
| + | |
| + | これはデフォルトで割り当てられている優先度を無視してしまい、一貫性がなくなってしまいます。 |
| + | |
| + | * ToS=6 はインターネット、ToS=7 はネットワーク用の用途向けとなっており、絶対優先されません |
| + | * デフォルト設定でルーティング プロトコルである OSPF Hello は、ToS=6 を使用して送信している |
| + | |
| + | 以下を参考に割り当てましょう。 |
| + | |
| + | * [https://www.cisco.com/c/ja_jp/support/docs/quality-of-service-qos/qos-packet-marking/10103-dscpvalues.html DiffServ コードポイントを使用したサービス品質ポリシーの実装] |
| + | * [https://www.cisco.com/c/ja_jp/td/docs/sw/dcswt/nex1000vswt/cg/003/n1000v-qos-cfg/qos-6dscp-val.pdf DSCP 値と優先順位値] |
| | | |
| == 入力機能 == | | == 入力機能 == |
| | | |
| === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_359473EBF99C489697FB146963ED74D5 信頼] === | | === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_359473EBF99C489697FB146963ED74D5 信頼] === |
− | Catalyst 3850 では trust dscp がデフォルト設定になっており、IP ヘッダの Differentiated Services フィールドの値をパケットの差別化に使用します。 | + | Catalyst 3850 / 9000 では trust dscp がデフォルト設定になっており、IP ヘッダの Differentiated Services フィールドの値をパケットの差別化に使用します。 |
| + | |
| + | ポートの設定がレイヤ 2 や 3 か、着信したパケットの種類によって、信頼するフィールドが CoS / ToS / DSCP なのか異なります。 |
| + | |
| + | 詳細は [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_359473EBF99C489697FB146963ED74D5 有線ポートの信頼動作] を参照してください。 |
| | | |
| === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_BCB3F3F337284C1995E7A1D104B41524 クラシフィケーション (分類)] === | | === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_BCB3F3F337284C1995E7A1D104B41524 クラシフィケーション (分類)] === |
39行目: |
103行目: |
| | | |
| === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_46787FAB600941AC9769403AC4A0C7EC スケジューリング] === | | === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_46787FAB600941AC9769403AC4A0C7EC スケジューリング] === |
− | スケジューリング自体は、優先度に応じて自動的に行われます。ユーザはキューの種類や内容を設定します。
| + | スケジューリング自体は、WRR によって優先度に応じて自動的に行われます。 |
| + | |
| + | 基本的に CoS / ToS / MPLS EXP の値が高いものが (基本的には) 高優先度となり送信され、低優先度のフレーム・パケットはドロップされやすいです。 |
| + | |
| + | ユーザはキューの種類や内容を設定し、意図するキューへトラフィックの割り当てを行います。 |
| | | |
| * PQ : 優先キュー | | * PQ : 優先キュー |
48行目: |
116行目: |
| | | |
| class を設定した数が、合計のキューの数になります。 | | class を設定した数が、合計のキューの数になります。 |
| + | |
| + | =====[https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_7571E51176D048A090ABFDEACF0760E2 プライオリティ キュー (PQ)]===== |
| + | Catalyst 3850 / 9000 では、2 つのキューをプライオリティ (優先) キューとして設定できます。 |
| + | |
| + | 優先キューは他のパケットを無視して絶対優先で送信するため、遅延が小さいことが求められる音声やビデオのパケットに使用されます。 |
| + | |
| + | 絶対優先が帯域幅を埋め尽くさないように、ポリシングやキュー制限とセットで設定するのが推奨されます。 |
| | | |
| === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_12D6ABD04BB945D4AE3E242E5BD1E350 クラシフィケーション (分類)] === | | === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_12D6ABD04BB945D4AE3E242E5BD1E350 クラシフィケーション (分類)] === |
− | 入力側と同じように、出力側でもパケットを識別します。
| + | 入力側と同じように、出力側でもパケットを識別します。入力側と異なり、ACL は使用できません。 |
| | | |
| 通常出力側では入力側で信頼 or セットした、CoS / ToS / DSCP / MPLS EXP フィールドを使って分類します。 | | 通常出力側では入力側で信頼 or セットした、CoS / ToS / DSCP / MPLS EXP フィールドを使って分類します。 |
| + | |
| + | === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_3C8CF6ECF9634FE882006FDDB10F8667 ポリシング] === |
| + | 出力側でも使用可能です。 |
| | | |
| === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_53FE327EBFE141D88A4ABEF889E143ED シェーピング] === | | === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_53FE327EBFE141D88A4ABEF889E143ED シェーピング] === |
− | 設定したレートに収まるように、帯域幅を制限します。
| + | 設定したレートに収まるように、指定した帯域幅に'''キュー全体の帯域幅'''を制限します。 |
| | | |
− | ポリシングと異なる点は、バッファリングするために若干の遅延が起きて、TCP 再送が起きにくくなるため、バースト トラフィックをドロップしにくくなる点です。
| + | ポリシングと異なる点は、バッファリングするために若干の遅延があるものの、TCP 再送が起きにくくなるため、バースト トラフィックをドロップしにくくなる利点があります。 |
| | | |
− | CoS / ToS / DSCP / MPLS EXP フィールドの値を元にドロップが判定されるため、通常トラフィックの 0 は非常にドロップしやすい点に注意が必要です。 | + | 詳細は [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_EC3CAB24147A4D66905494ED7CEEDBF6 表 4. ポリシングとシェーピングの機能の比較] を参照してください。 |
| + | |
| + | CoS / ToS / DSCP / MPLS EXP フィールドの値を元にドロップが判定されるため、通常トラフィックで使用される 0 は非常にドロップしやすい点に注意が必要です。 |
| | | |
| === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#task_76777AC787C84236AD681BB964B6DBD7 キュー制限] === | | === [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#task_76777AC787C84236AD681BB964B6DBD7 キュー制限] === |
| + | [https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_C0D82F44D8964628B78EBA62CCF27724 ウェイテッド テール ドロップ (WTD)] を使用して、指定した帯域幅に'''キュー内の帯域幅'''を制限できます。 |
| | | |
− | === プライオリティ キュー ===
| + | CoS / ToS / DSCP / MPLS EXP の値に応じてドロップされる量が、[https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_04158E3441124716A0C78B35E5567FDE しきい値ごとに異なるよう] に制御します。 |
| + | |
| + | ここまで細分化して制御する要件は少ないため、あまり使われていません。 |
| | | |
| == 構成 == | | == 構成 == |
83行目: |
166行目: |
| | | |
| == サンプル要件 == | | == サンプル要件 == |
− | QoS を正確に設計・検証・設定するには、設定対象のネットワークの使用状況を元にした要件定義が必要です。 | + | QoS を設計・検証・設定するには、設定対象のネットワークの使用状況を元にした要件定義が必要です。 |
| | | |
| ここでは QoS で差別化するトラフィックを 4 種類に分類し、以下の通り定義します。 | | ここでは QoS で差別化するトラフィックを 4 種類に分類し、以下の通り定義します。 |
100行目: |
183行目: |
| * ルーティング プロトコルや、プロビジョニング用プロトコルの DHCP と ARP を優先する | | * ルーティング プロトコルや、プロビジョニング用プロトコルの DHCP と ARP を優先する |
| * Internetwork Control として、NET よりも優先して転送させる | | * Internetwork Control として、NET よりも優先して転送させる |
− | * NET でパケットが埋まっていても、優先して処理されること | + | * NET でパケットが埋まっていても、優先して処理されパケットドロップが起きないこと |
| | | |
| === 音声トラフィック : VoIP === | | === 音声トラフィック : VoIP === |
| | | |
− | * 音声を 200ms 以内の遅延で転送するため、絶対優先させる | + | * 音声を 150ms - 400ms 以内の遅延で転送するため、絶対優先させる |
| + | ** プライマリ電話 <ref>[https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AEIP%E9%9B%BB%E8%A9%B1#%E3%83%97%E3%83%A9%E3%82%A4%E3%83%9E%E3%83%AA%E9%9B%BB%E8%A9%B1 プライマリ電話] |
| + | |
| + | 端末設備等相互間の平均遅延 |
| + | |
| + | ・150ミリ秒未満</ref> : 150ms |
| + | ** セカンダリ電話 <ref>[https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AEIP%E9%9B%BB%E8%A9%B1#%E3%82%BB%E3%82%AB%E3%83%B3%E3%83%80%E3%83%AA%E9%9B%BB%E8%A9%B1 セカンダリ電話] |
| + | |
| + | ・400ミリ秒未満</ref> : 400ms |
| * 他の ToS / DSCP で帯域幅が埋まっていても、パケットドロップが起きないこと | | * 他の ToS / DSCP で帯域幅が埋まっていても、パケットドロップが起きないこと |
| * IP セグメントは 192.168.0.0/16 を持つ | | * IP セグメントは 192.168.0.0/16 を持つ |
117行目: |
208行目: |
| === 入力マーキング === | | === 入力マーキング === |
| <syntaxhighlight lang="diff"> | | <syntaxhighlight lang="diff"> |
− | !!! Cat3850-2 !!! | + | !!! Cat3850-2 Ingress Marking !!! |
| configure terminal | | configure terminal |
| ! | | ! |
129行目: |
220行目: |
| 40 permit udp any any eq bootps | | 40 permit udp any any eq bootps |
| 50 permit ospf any any | | 50 permit ospf any any |
| + | 60 permit ip 172.16.0.0 0.0.0.255 any |
| ! | | ! |
| mac access-list extended ACL_L2MGMT | | mac access-list extended ACL_L2MGMT |
136行目: |
228行目: |
| permit ip 192.168.0.0 0.0.255.255 any | | permit ip 192.168.0.0 0.0.255.255 any |
| ! | | ! |
− | class-map match-any CMAP_NET_MARKING | + | class-map match-any CM_NET_MARKING |
| match access-group name ACL_NET | | match access-group name ACL_NET |
| ! | | ! |
− | class-map match-any CMAP_MGMT_MARKING | + | class-map match-any CM_MGMT_MARKING |
| match access-group name ACL_MGMT | | match access-group name ACL_MGMT |
| match access-group name ACL_L2MGMT | | match access-group name ACL_L2MGMT |
| ! | | ! |
− | class-map match-any CMAP_VoIP_MARKING | + | class-map match-any CM_VoIP_MARKING |
| match access-group name ACL_VoIP | | match access-group name ACL_VoIP |
| ! | | ! |
− | policy-map PMAP_MARKING | + | policy-map PM_MARKING |
− | class CMAP_NET_MARKING | + | class CM_VoIP_MARKING |
| + | set dscp 46 |
| + | class CM_MGMT_MARKING |
| + | set precedence 6 |
| + | class CM_NET_MARKING |
| set precedence 0 | | set precedence 0 |
− | class CMAP_MGMT_MARKING
| |
− | set precedence 6
| |
− | class CMAP_VoIP_MARKING
| |
− | set dscp 46
| |
| ! | | ! |
| interface GigabitEthernet1/0/1 | | interface GigabitEthernet1/0/1 |
− | service-policy input PMAP_MARKING | + | service-policy input PM_MARKING |
| ! | | ! |
| end | | end |
164行目: |
256行目: |
| | | |
| ==== OSPF ==== | | ==== OSPF ==== |
− | Cisco IOS ではデフォルトで OSPF に ToS がついているため、上記のようにあえてマーキングする必要はありません。 | + | Cisco IOS ではデフォルトで OSPF に ToS がついているため、trust ポートであれば上記のように手動でマーキングする必要はありません。 |
| + | |
| + | === 出力キューイング === |
| + | 入力側でパケットにマーキングしたので、出力側で match させて優先度や帯域幅をコントロールします。<syntaxhighlight lang="diff"> |
| + | !!! Cat3850-2 !!! |
| + | configure terminal |
| + | ! |
| + | class-map match-any CM_NET_QUEUEING |
| + | match precedence 0 |
| + | ! |
| + | class-map match-any CM_MGMT_QUEUEING |
| + | match precedence 6 |
| + | ! |
| + | class-map match-any CM_VoIP_QUEUEING |
| + | match dscp 46 |
| + | ! |
| + | policy-map PM_QUEUEING |
| + | class CM_VoIP_QUEUEING |
| + | priority level 1 |
| + | queue-buffers ratio 2 |
| + | class CM_MGMT_QUEUEING |
| + | shape average percent 1 |
| + | queue-buffers ratio 1 |
| + | class CM_NET_QUEUEING |
| + | shape average percent 9 |
| + | queue-buffers ratio 92 |
| + | class class-default |
| + | shape average percent 5 |
| + | queue-buffers ratio 5 |
| + | ! |
| + | interface GigabitEthernet1/0/19 |
| + | service-policy output PM_QUEUEING |
| + | ! |
| + | end |
| + | </syntaxhighlight> |
| + | |
| + | == 確認コマンド (IOS-XE 16.x-) == |
| + | IOS-XE 15.x など古い Version の場合、fed switch や active の指定が要らない場合があります。 |
| + | |
| + | === show platform hardware fed switch <active|standby|switch_num> qos queue config interface <int_num> === |
| + | バッファ量や優先度などが確認できるコマンド。 |
| + | |
| + | qos queue-softmax-multiplier や queue-buffers ratio を変更した際に、差分を確認すると良いです。<syntaxhighlight lang="diff"> |
| + | show platform hardware fed switch active qos queue config interface Gi1/0/1 |
| + | |
| + | Asic:0 Core:0 DATA Port:5 GPN:1 LinkSpeed:0x1 |
| + | AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 40 - 47 |
| + | DrainFast:Disabled PortSoftStart:2 - 1080 |
| + | DTS Hardmax Softmax PortSMin GlblSMin PortStEnd |
| + | ----- -------- -------- -------- -------- --------- |
| + | 0 1 6 120 3 480 7 320 0 0 3 1440 |
| + | 1 1 5 0 7 720 4 480 2 180 3 1440 |
| + | 2 1 5 0 6 0 6 0 0 0 3 1440 |
| + | 3 1 5 0 6 0 6 0 0 0 3 1440 |
| + | 4 1 5 0 6 0 6 0 0 0 3 1440 |
| + | 5 1 5 0 6 0 6 0 0 0 3 1440 |
| + | 6 1 5 0 6 0 6 0 0 0 3 1440 |
| + | 7 1 5 0 6 0 6 0 0 0 3 1440 |
| + | Priority Shaped/shared weight shaping_step sharpedWeight |
| + | -------- ------------- ------ ------------ ------------- |
| + | 0 0 Shared 50 0 0 |
| + | 1 0 Shared 75 0 0 |
| + | 2 0 Shared 10000 0 0 |
| + | 3 0 Shared 10000 0 0 |
| + | 4 0 Shared 10000 0 0 |
| + | 5 0 Shared 10000 0 0 |
| + | 6 0 Shared 10000 0 0 |
| + | 7 0 Shared 10000 0 0 |
| + | Port Port Port Port |
| + | Priority Shaped/shared weight shaping_step |
| + | -------- ------------- ------ ------------ |
| + | 2 Shaped 254 255 |
| + | |
| + | Weight0 Max_Th0 Min_Th0 Weigth1 Max_Th1 Min_Th1 Weight2 Max_Th2 Min_Th2 |
| + | ------- ------- ------- ------- ------- ------- ------- ------- ------ |
| + | 0 0 478 0 0 534 0 0 600 0 |
| + | 1 0 573 0 0 641 0 0 720 0 |
| + | 2 0 0 0 0 0 0 0 0 0 |
| + | 3 0 0 0 0 0 0 0 0 0 |
| + | 4 0 0 0 0 0 0 0 0 0 |
| + | 5 0 0 0 0 0 0 0 0 0 |
| + | 6 0 0 0 0 0 0 0 0 0 |
| + | 7 0 0 0 0 0 0 0 0 0 |
| + | |
| + | </syntaxhighlight> |
| + | |
| + | === show platform hardware fed switch <active|standby|switch_num> qos queue stats interface <int_num> === |
| + | キューレベルでパケットを送信した数とドロップ数を確認できるコマンド。 |
| + | |
| + | この出力例では、qos queue-stats-frame-count でバイト数からフレーム数へ変更してあります。<syntaxhighlight lang="diff"> |
| + | #show platform hardware fed switch active qos queue stats interface Gi1/0/1 |
| + | |
| + | ---------------------------------------------------------------------------------------------- |
| + | AQM Global counters |
| + | GlobalHardLimit: 5773 | GlobalHardBufCount: 0 |
| + | GlobalSoftLimit: 7539 | GlobalSoftBufCount: 0 |
| + | |
| + | ---------------------------------------------------------------------------------------------- |
| + | Asic:0 Core:0 Port:5 Hardware Enqueue Counters |
| + | ---------------------------------------------------------------------------------------------- |
| + | Q Buffers Enqueue-TH0 Enqueue-TH1 Enqueue-TH2 Qpolicer |
| + | (Count) (Frames) (Frames) (Frames) (Frames) |
| + | -- ------- -------------------- -------------------- -------------------- -------------------- |
| + | 0 0 0 0 0 0 |
| + | 1 0 0 0 0 0 |
| + | 2 0 0 0 0 0 |
| + | 3 0 0 0 0 0 |
| + | 4 0 0 0 0 0 |
| + | 5 0 0 0 0 0 |
| + | 6 0 0 0 0 0 |
| + | 7 0 0 0 0 0 |
| + | Asic:0 Core:0 Port:5 Hardware Drop Counters |
| + | -------------------------------------------------------------------------------------------------------------------------------- |
| + | Q Drop-TH0 Drop-TH1 Drop-TH2 SBufDrop QebDrop QpolicerDrop |
| + | (Frames) (Frames) (Frames) (Frames) (Frames) (Frames) |
| + | -- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- |
| + | 0 0 0 0 0 0 0 |
| + | 1 0 0 0 0 0 0 |
| + | 2 0 0 0 0 0 0 |
| + | 3 0 0 0 0 0 0 |
| + | 4 0 0 0 0 0 0 |
| + | 5 0 0 0 0 0 0 |
| + | 6 0 0 0 0 0 0 |
| + | 7 0 0 0 0 0 0 |
| + | |
| + | </syntaxhighlight> |
| + | |
| + | === show platform hardware fed switch active qos queue dscp-cos interface <int_num> === |
| + | インターフェースの DSCP-CoS ごとのカウンタを表示できるコマンド。<syntaxhighlight lang="diff"> |
| + | # show platform hardware fed switch active qos dscp-cos counters interface Gi1/0/1 |
| + | |
| + | Ingress DSCP0 0 0 |
| + | Ingress DSCP1 0 0 |
| + | Ingress DSCP2 0 0 |
| + | Ingress DSCP3 0 0 |
| + | Ingress DSCP4 0 0 |
| + | Ingress DSCP5 0 0 |
| + | Ingress DSCP6 0 0 |
| + | Ingress DSCP7 0 0 |
| + | Ingress DSCP8 0 0 |
| + | Ingress DSCP9 0 0 |
| + | Ingress DSCP10 0 0 |
| + | Ingress DSCP11 0 0 |
| + | Ingress DSCP12 0 0 |
| + | Ingress DSCP13 0 0 |
| + | Ingress DSCP14 0 0 |
| + | Ingress DSCP15 0 0 |
| + | Ingress DSCP16 0 0 |
| + | Ingress DSCP17 0 0 |
| + | Ingress DSCP18 0 0 |
| + | Ingress DSCP19 0 0 |
| + | Ingress DSCP20 0 0 |
| + | Ingress DSCP21 0 0 |
| + | Ingress DSCP22 0 0 |
| + | Ingress DSCP23 0 0 |
| + | Ingress DSCP24 0 0 |
| + | Ingress DSCP25 0 0 |
| + | Ingress DSCP26 0 0 |
| + | Ingress DSCP27 0 0 |
| + | Ingress DSCP28 0 0 |
| + | Ingress DSCP29 0 0 |
| + | Ingress DSCP30 0 0 |
| + | Ingress DSCP31 0 0 |
| + | Ingress DSCP32 0 0 |
| + | Ingress DSCP33 0 0 |
| + | Ingress DSCP34 0 0 |
| + | Ingress DSCP35 0 0 |
| + | Ingress DSCP36 0 0 |
| + | Ingress DSCP37 0 0 |
| + | Ingress DSCP38 0 0 |
| + | Ingress DSCP39 0 0 |
| + | Ingress DSCP40 0 0 |
| + | Ingress DSCP41 0 0 |
| + | Ingress DSCP42 0 0 |
| + | Ingress DSCP43 0 0 |
| + | Ingress DSCP44 0 0 |
| + | Ingress DSCP45 0 0 |
| + | Ingress DSCP46 0 0 |
| + | Ingress DSCP47 0 0 |
| + | Ingress DSCP48 0 0 |
| + | Ingress DSCP49 0 0 |
| + | Ingress DSCP50 0 0 |
| + | Ingress DSCP51 0 0 |
| + | Ingress DSCP52 0 0 |
| + | Ingress DSCP53 0 0 |
| + | Ingress DSCP54 0 0 |
| + | Ingress DSCP55 0 0 |
| + | Ingress DSCP56 0 0 |
| + | Ingress DSCP57 0 0 |
| + | Ingress DSCP58 0 0 |
| + | Ingress DSCP59 0 0 |
| + | Ingress DSCP60 0 0 |
| + | Ingress DSCP61 0 0 |
| + | Ingress DSCP62 0 0 |
| + | Ingress DSCP63 0 0 |
| + | Ingress COS0 0 0 |
| + | Ingress COS1 0 0 |
| + | Ingress COS2 0 0 |
| + | Ingress COS3 0 0 |
| + | Ingress COS4 0 0 |
| + | Ingress COS5 0 0 |
| + | Ingress COS6 0 0 |
| + | Ingress COS7 0 0 |
| + | Egress DSCP0 0 0 |
| + | Egress DSCP1 0 0 |
| + | Egress DSCP2 0 0 |
| + | Egress DSCP3 0 0 |
| + | Egress DSCP4 0 0 |
| + | Egress DSCP5 0 0 |
| + | Egress DSCP6 0 0 |
| + | Egress DSCP7 0 0 |
| + | Egress DSCP8 0 0 |
| + | Egress DSCP9 0 0 |
| + | Egress DSCP10 0 0 |
| + | Egress DSCP11 0 0 |
| + | Egress DSCP12 0 0 |
| + | Egress DSCP13 0 0 |
| + | Egress DSCP14 0 0 |
| + | Egress DSCP15 0 0 |
| + | Egress DSCP16 0 0 |
| + | Egress DSCP17 0 0 |
| + | Egress DSCP18 0 0 |
| + | Egress DSCP19 0 0 |
| + | Egress DSCP20 0 0 |
| + | Egress DSCP21 0 0 |
| + | Egress DSCP22 0 0 |
| + | Egress DSCP23 0 0 |
| + | Egress DSCP24 0 0 |
| + | Egress DSCP25 0 0 |
| + | Egress DSCP26 0 0 |
| + | Egress DSCP27 0 0 |
| + | Egress DSCP28 0 0 |
| + | Egress DSCP29 0 0 |
| + | Egress DSCP30 0 0 |
| + | Egress DSCP31 0 0 |
| + | Egress DSCP32 0 0 |
| + | Egress DSCP33 0 0 |
| + | Egress DSCP34 0 0 |
| + | Egress DSCP35 0 0 |
| + | Egress DSCP36 0 0 |
| + | Egress DSCP37 0 0 |
| + | Egress DSCP38 0 0 |
| + | Egress DSCP39 0 0 |
| + | Egress DSCP40 0 0 |
| + | Egress DSCP41 0 0 |
| + | Egress DSCP42 0 0 |
| + | Egress DSCP43 0 0 |
| + | Egress DSCP44 0 0 |
| + | Egress DSCP45 0 0 |
| + | Egress DSCP46 0 0 |
| + | Egress DSCP47 0 0 |
| + | Egress DSCP48 0 0 |
| + | Egress DSCP49 0 0 |
| + | Egress DSCP50 0 0 |
| + | Egress DSCP51 0 0 |
| + | Egress DSCP52 0 0 |
| + | Egress DSCP53 0 0 |
| + | Egress DSCP54 0 0 |
| + | Egress DSCP55 0 0 |
| + | Egress DSCP56 0 0 |
| + | Egress DSCP57 0 0 |
| + | Egress DSCP58 0 0 |
| + | Egress DSCP59 0 0 |
| + | Egress DSCP60 0 0 |
| + | Egress DSCP61 0 0 |
| + | Egress DSCP62 0 0 |
| + | Egress DSCP63 0 0 |
| + | Egress COS0 0 0 |
| + | Egress COS1 0 0 |
| + | Egress COS2 0 0 |
| + | Egress COS3 0 0 |
| + | Egress COS4 0 0 |
| + | Egress COS5 0 0 |
| + | Egress COS6 0 0 |
| + | Egress COS7 0 0 |
| + | </syntaxhighlight> |
| + | |
| + | === show policy-map interface <int_num> === |
| + | キューの設定とカウンターが確認できます。ただし、カウンターは一部動作しません。<syntaxhighlight lang="diff"> |
| + | #show policy-map int Gi1/0/19 |
| + | |
| + | GigabitEthernet1/0/19 |
| + | |
| + | Service-policy output: PM_QUEUEING |
| + | |
| + | queue stats for all priority classes: |
| + | Queueing |
| + | priority level 1 |
| + | |
| + | (total drops) 0 |
| + | (pkts output) 0 |
| + | |
| + | Class-map: CM_VoIP_QUEUEING (match-any) |
| + | 0 packets |
| + | Match: dscp ef (46) |
| + | Priority: Strict, |
| + | |
| + | Priority Level: 1 |
| + | queue-buffers ratio 2 |
| + | |
| + | Class-map: CM_MGMT_QUEUEING (match-any) |
| + | 0 packets |
| + | Match: precedence 6 |
| + | Queueing |
| + | |
| + | (total drops) 0 |
| + | (pkts output) 0 |
| + | shape (average) cir 10000000, bc 100000, be 100000 |
| + | target shape rate 10000000 |
| + | queue-buffers ratio 1 |
| + | |
| + | Class-map: CM_NET_QUEUEING (match-any) |
| + | 0 packets |
| + | Match: precedence 0 |
| + | Queueing |
| + | |
| + | (total drops) 0 |
| + | (pkts output) 0 |
| + | shape (average) cir 920000000, bc 9200000, be 9200000 |
| + | target shape rate 920000000 |
| + | queue-buffers ratio 92 |
| + | |
| + | Class-map: class-default (match-any) |
| + | 0 packets |
| + | Match: any |
| + | Queueing |
| + | |
| + | (total drops) 0 |
| + | (pkts output) 0 |
| + | shape (average) cir 50000000, bc 500000, be 500000 |
| + | target shape rate 50000000 |
| + | queue-buffers ratio 5 |
| + | </syntaxhighlight> |
| + | |
| + | == カウンタのクリア == |
| + | Gi1/0/1 を例にしたコマンドです。 |
| + | |
| + | ==== clear platform hardware fed switch active qos statistics interface Gi1/0/1 ==== |
| + | show platform で取得できる、QoS のカウンタをクリアする。 |
| + | |
| + | ==== clear platform hardware fed switch active qos dscp-cos counters interface Gi1/0/1 ==== |
| + | show platform で取得できる、QoS の DSCP-CoS のカウンタをクリアする。 |
| + | |
| + | ==== clear counters Gi1/0/1 ==== |
| + | show interfaces で取得できる、インターフェースのカウンタをクリアする。 |
| + | |
| + | == キューの動作確認例 == |
| + | トラフィックの印加前後で、キューのフレーム カウンタの差分を取りましょう。 |
| + | |
| + | 以下の例では、4 つのキューの内 1 つのキューを確認します。 |
| + | |
| + | === 構成 === |
| + | <syntaxhighlight lang="diff"> |
| + | l3sw91 |
| + | |Gi1/0/19 Vlan10 10.0.0.91 |
| + | | |
| + | |Gi1/0/19 |
| + | l3sw92 Vlan10 10.0.0.92 |
| + | |Gi1/0/1 |
| + | | |
| + | |Gi1/0/23 Vlan10 10.0.0.93 |
| + | l3sw93 |
| + | </syntaxhighlight> |
| + | |
| + | === トラフィック === |
| + | l3sw93 から l3sw91 へ ping 100 発を送信し、l3sw92 で QoS の動作確認を行う。<syntaxhighlight lang="diff"> |
| + | ping 10.0.0.91 repeat 100 |
| + | </syntaxhighlight> |
| + | |
| + | === Modular QoS CLI とは ? === |
| + | 3850 / 9000 では、MQC (Modular QoS CLI) を使用して設定します。2960 / 3750 / 6500 の MLS QoS は使用できません。 |
| + | |
| + | クラスマップ・ポリシーマップ・インターフェースに適用、という順に構造化して設定する仕組みのこと。 |
| + | |
| + | 複数のインターフェースに対して共通化したクラスマップ・ポリシーマップを設定することで、コンフィグが簡素化できるメリットがあります。 |
| + | |
| + | === 設定 === |
| + | {| class="wikitable" |
| + | ! |
| + | !基本設定 |
| + | !入力 QoS 設定 (NET のみ) |
| + | !出力 QoS 設定 (NET のみ) |
| + | ! |
| + | |- |
| + | |l3sw91 |
| + | |<nowiki>l3sw91#show run | s net1/0/19$|Vlan10|vlan 10</nowiki> |
| + | vlan 10 |
| + | |
| + | name NET |
| + | |
| + | |
| + | interface GigabitEthernet1/0/19 |
| + | |
| + | description tky-l3sw92_Gi1/0/19 |
| + | |
| + | switchport trunk allowed vlan 10,20,30 |
| + | |
| + | switchport mode trunk |
| + | |
| + | switchport nonegotiate |
| + | |
| + | load-interval 30 |
| + | |
| + | no cdp enable |
| + | |
| + | no keepalive |
| + | |
| + | no lldp transmit |
| + | |
| + | no lldp receive |
| + | |
| + | |
| + | interface Vlan10 |
| + | |
| + | description NET |
| + | |
| + | ip address '''10.0.0.91''' 255.255.255.0 |
| + | | |
| + | | |
| + | |l3sw91 が持つ 10.0.0.91 を ping 宛先とする |
| + | |- |
| + | |l3sw92 |
| + | (DUT) |
| + | |<nowiki>l3sw92#show run | s qos|vlan 10|Vlan10|net1/0/1$|net1/0/19$</nowiki> |
| + | qos queue-stats-frame-count |
| + | |
| + | |
| + | vlan 10 |
| + | |
| + | name NET |
| + | |
| + | |
| + | interface GigabitEthernet1/0/1 |
| + | |
| + | description tky-l3sw93_Gi1/0/23 |
| + | |
| + | switchport trunk allowed vlan 10,20,30 |
| + | |
| + | switchport mode trunk |
| + | |
| + | switchport nonegotiate |
| + | |
| + | load-interval 30 |
| + | |
| + | no cdp enable |
| + | |
| + | no keepalive |
| + | |
| + | no lldp transmit |
| + | |
| + | no lldp receive |
| + | |
| + | service-policy input PM_MARKING |
| + | |
| + | |
| + | interface GigabitEthernet1/0/19 |
| + | |
| + | description tky-l3sw91_Gi1/0/19 |
| + | |
| + | switchport trunk allowed vlan 10,20,30 |
| + | |
| + | switchport mode trunk |
| + | |
| + | switchport nonegotiate |
| + | |
| + | load-interval 30 |
| + | |
| + | no cdp enable |
| + | |
| + | no keepalive |
| + | |
| + | no lldp transmit |
| + | |
| + | no lldp receive |
| + | |
| + | service-policy output PM_QUEUEING |
| + | |
| + | |
| + | interface Vlan10 |
| + | |
| + | description NET |
| + | |
| + | ip address 10.0.0.92 255.255.255.0 |
| + | |ip access-list extended '''ACL_NET''' |
| + | 10 permit ip 10.0.0.0 0.255.255.255 any |
| + | |
| + | |
| + | class-map match-any '''CM_NET_MARKING''' |
| + | |
| + | match access-group name '''ACL_NET''' |
| + | |
| + | |
| + | policy-map '''PM_MARKING''' |
| + | |
| + | class '''CM_NET_MARKING''' |
| + | |
| + | set precedence 0 |
| + | |
| + | class CM_MGMT_MARKING |
| + | |
| + | set precedence 6 |
| + | |
| + | class CM_VoIP_MARKING |
| + | |
| + | set dscp ef |
| + | |
| + | |
| + | interface GigabitEthernet1/0/1 |
| + | |
| + | description tky-l3sw93_Gi1/0/23 |
| + | |
| + | switchport trunk allowed vlan 10,20,30 |
| + | |
| + | switchport mode trunk |
| + | |
| + | switchport nonegotiate |
| + | |
| + | load-interval 30 |
| + | |
| + | no cdp enable |
| + | |
| + | no keepalive |
| + | |
| + | no lldp transmit |
| + | |
| + | no lldp receive |
| + | |
| + | service-policy input '''PM_MARKING''' |
| + | |class-map match-any '''CM_NET_QUEUEING''' |
| + | match precedence '''0''' |
| + | |
| + | |
| + | policy-map '''PM_QUEUEING''' |
| + | |
| + | class CM_VoIP_QUEUEING |
| + | |
| + | priority level 1 |
| + | |
| + | queue-buffers ratio 2 |
| + | |
| + | class CM_MGMT_QUEUEING |
| + | |
| + | shape average percent 1 |
| + | |
| + | queue-buffers ratio 1 |
| + | |
| + | class '''CM_NET_QUEUEING''' |
| + | |
| + | shape average percent 92 |
| + | |
| + | queue-buffers ratio 92 |
| + | |
| + | class class-default |
| + | |
| + | shape average percent 5 |
| + | |
| + | queue-buffers ratio 5 |
| + | |
| + | |
| + | interface GigabitEthernet1/0/19 |
| + | |
| + | description tky-l3sw91_Gi1/0/19 |
| + | |
| + | switchport trunk allowed vlan 10,20,30 |
| + | |
| + | switchport mode trunk |
| + | |
| + | switchport nonegotiate |
| + | |
| + | load-interval 30 |
| + | |
| + | no cdp enable |
| + | |
| + | no keepalive |
| + | |
| + | no lldp transmit |
| + | |
| + | no lldp receive |
| + | |
| + | service-policy output '''PM_QUEUEING''' |
| + | |QoS 設定を行う機器 |
| + | この例では |
| + | |
| + | *'''入力 QoS''' : Gi1/0/1 で受信し ToS=0 へマーキング |
| + | ** フレームを受信する Gi1/0/1 に適用した、入力ポリシーマップが呼び出される |
| + | ** ポリシーマップからクラスマップを呼び出し |
| + | ** クラスマップから ACL を呼び出し |
| + | ** クラスマップの ACL_NET にマッチ |
| + | ** ACL_NET の 10.0.0.0/24 に該当 |
| + | ** ポリシーマップで DSCP0 にマーキング |
| + | *'''出力 QoS''' : ToS=0 を Gi1/0/19 のキュー 2 から送信 |
| + | ** フレームを送信する Gi1/0/19 に適用した、出力ポリシーマップが呼び出される |
| + | ** ポリシーマップからクラスマップを呼び出し |
| + | ** クラスマップの DSCP=0 にマッチ |
| + | ** ポリシーマップで以下のキューイングを行う |
| + | *** 92% シェーピング |
| + | *** ポートの 92% バッファを割り当て |
| + | |
| + | する設定にしている |
| + | |
| + | |
| + | 3850 / 9000 では、class-map を設定した順に、 |
| + | |
| + | キュー 0-7 までが可変で割り当てられる |
| + | |
| + | |
| + | この例では VoIP , MGMT , NET , class-default で 4 つのキューを設定している |
| + | |- |
| + | |l3sw93 |
| + | |<nowiki>l3sw93#show run | s net1/0/23$|Vlan10|vlan 10</nowiki> |
| + | vlan 10 |
| + | |
| + | name NET |
| + | |
| + | |
| + | interface GigabitEthernet1/0/23 |
| + | |
| + | description tky-l3sw92_Gi1/0/1 |
| + | |
| + | switchport trunk allowed vlan 10,20,30 |
| + | |
| + | switchport mode trunk |
| + | |
| + | switchport nonegotiate |
| + | |
| + | load-interval 30 |
| + | |
| + | no cdp enable |
| + | |
| + | no keepalive |
| + | |
| + | no lldp transmit |
| + | |
| + | no lldp receive |
| + | |
| + | |
| + | interface Vlan10 |
| + | |
| + | description NET |
| + | |
| + | ip address '''10.0.0.93''' 255.255.255.0 |
| + | | |
| + | | |
| + | |l3sw93 から l3sw91 の 10.0.0.91 へ ping する |
| + | |} |
| + | |
| + | === キューカウンター確認 === |
| + | ping を 100 発打った後、NET に割り当てたキュー 2 でカウントが 100 増加していることがわかります。 |
| + | {| class="wikitable" |
| + | ! |
| + | !事前 |
| + | !ping・事後 |
| + | |- |
| + | |l3sw93 |
| + | | - |
| + | |l3sw93#ping 10.0.0.91 repeat '''100''' |
| + | Type escape sequence to abort. |
| + | |
| + | Sending 100, 100-byte ICMP Echos to 10.0.0.91, timeout is 2 seconds: |
| + | |
| + | <nowiki>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</nowiki> |
| + | |
| + | <nowiki>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</nowiki> |
| + | |
| + | Success rate is 100 percent (100/100), round-trip min/avg/max = 2/2/3 ms |
| + | |- |
| + | |l3sw92 |
| + | |l3sw92#show platform hardware fed switch active qos queue stats interface Gi1/0/19 |
| + | <nowiki>----------------------------------------------------------------------------------------------</nowiki> |
| + | |
| + | AQM Global counters |
| + | |
| + | GlobalHardLimit: 5773 | GlobalHardBufCount: 0 |
| + | |
| + | GlobalSoftLimit: 7539 | GlobalSoftBufCount: 0 |
| + | |
| + | <nowiki>----------------------------------------------------------------------------------------------</nowiki> |
| + | |
| + | Asic:0 Core:0 Port:23 Hardware Enqueue Counters |
| + | |
| + | <nowiki>----------------------------------------------------------------------------------------------</nowiki> |
| + | |
| + | Q Buffers Enqueue-TH0 Enqueue-TH1 Enqueue-TH2 Qpolicer |
| + | |
| + | (Count) (Frames) (Frames) (Frames) (Frames) |
| + | |
| + | -- ------- -------------------- -------------------- -------------------- -------------------- |
| + | |
| + | 0 0 0 0 0 0 |
| + | |
| + | 1 0 0 0 0 0 |
| + | |
| + | 2 0 0 0 0 0 |
| + | |
| + | 3 0 0 0 0 0 |
| + | |
| + | 4 0 0 0 0 0 |
| + | |
| + | 5 0 0 0 0 0 |
| + | |
| + | 6 0 0 0 0 0 |
| + | |
| + | 7 0 0 0 0 0 |
| + | |
| + | Asic:0 Core:0 Port:23 Hardware Drop Counters |
| + | |
| + | <nowiki>--------------------------------------------------------------------------------------------------------------------------------</nowiki> |
| + | |
| + | Q Drop-TH0 Drop-TH1 Drop-TH2 SBufDrop QebDrop QpolicerDrop |
| + | |
| + | (Frames) (Frames) (Frames) (Frames) (Frames) (Frames) |
| + | |
| + | -- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- |
| + | |
| + | 0 0 0 0 0 0 0 |
| + | |
| + | 1 0 0 0 0 0 0 |
| + | |
| + | 2 0 0 0 0 0 0 |
| + | |
| + | 3 0 0 0 0 0 0 |
| + | |
| + | 4 0 0 0 0 0 0 |
| + | |
| + | 5 0 0 0 0 0 0 |
| + | |
| + | 6 0 0 0 0 0 0 |
| + | |
| + | 7 0 0 0 0 0 0 |
| + | |
| + | |
| + | l3sw92#show policy-map int Gi1/0/19 |
| + | |
| + | GigabitEthernet1/0/19 |
| + | |
| + | Service-policy output: PM_QUEUEING |
| + | |
| + | queue stats for all priority classes: |
| + | |
| + | Queueing |
| + | |
| + | priority level 1 |
| + | |
| + | (total drops) 0 |
| + | |
| + | (pkts output) 0 |
| + | |
| + | Class-map: CM_VoIP_QUEUEING (match-any) |
| + | |
| + | 0 packets |
| + | |
| + | Match: dscp ef (46) |
| + | |
| + | Priority: Strict, |
| + | |
| + | Priority Level: 1 |
| + | |
| + | queue-buffers ratio 2 |
| + | |
| + | Class-map: CM_MGMT_QUEUEING (match-any) |
| + | |
| + | 0 packets |
| + | |
| + | Match: precedence 6 |
| + | |
| + | Queueing |
| + | |
| + | (total drops) 0 |
| + | |
| + | (pkts output) 1 |
| + | |
| + | shape (average) cir 10000000, bc 100000, be 100000 |
| + | |
| + | target shape rate 10000000 |
| + | |
| + | queue-buffers ratio 1 |
| + | |
| + | Class-map: CM_NET_QUEUEING (match-any) |
| + | |
| + | 0 packets |
| + | |
| + | Match: precedence 0 |
| + | |
| + | Queueing |
| + | |
| + | (total drops) 0 |
| + | |
| + | (pkts output) 0 |
| + | |
| + | shape (average) cir 920000000, bc 9200000, be 9200000 |
| + | |
| + | target shape rate 920000000 |
| + | |
| + | queue-buffers ratio 92 |
| + | |
| + | Class-map: class-default (match-any) |
| + | |
| + | 0 packets |
| + | |
| + | Match: any |
| + | |
| + | Queueing |
| + | |
| + | (total drops) 0 |
| + | |
| + | (pkts output) 0 |
| + | |
| + | shape (average) cir 50000000, bc 500000, be 500000 |
| + | |
| + | target shape rate 50000000 |
| + | |
| + | queue-buffers ratio 5 |
| + | |
| + | |
| + | l3sw92#show platform hardware fed switch active qos dscp-cos counters interface Gi1/0/1 | in DSCP0 |
| + | |
| + | Ingress DSCP0 0 0 |
| + | |
| + | Egress DSCP0 0 0 |
| + | |
| + | |
| + | l3sw92#show platform hardware fed switch active qos dscp-cos counters interface Gi1/0/19 | in DSCP0 |
| + | |
| + | Ingress DSCP0 0 0 |
| + | |
| + | Egress DSCP0 0 0 |
| + | |l3sw92#show platform hardware fed switch active qos queue stats interface Gi1/0/19 |
| + | <nowiki>----------------------------------------------------------------------------------------------</nowiki> |
| + | |
| + | AQM Global counters |
| + | |
| + | GlobalHardLimit: 5773 | GlobalHardBufCount: 0 |
| + | |
| + | GlobalSoftLimit: 7539 | GlobalSoftBufCount: 0 |
| + | |
| + | <nowiki>----------------------------------------------------------------------------------------------</nowiki> |
| + | |
| + | Asic:0 Core:0 Port:23 Hardware Enqueue Counters |
| + | |
| + | <nowiki>----------------------------------------------------------------------------------------------</nowiki> |
| + | |
| + | Q Buffers Enqueue-TH0 Enqueue-TH1 Enqueue-TH2 Qpolicer |
| + | |
| + | (Count) (Frames) (Frames) (Frames) (Frames) |
| + | |
| + | -- ------- -------------------- -------------------- -------------------- -------------------- |
| + | |
| + | 0 0 0 0 0 0 |
| + | |
| + | 1 0 0 0 0 0 |
| + | |
| + | 2 0 0 0 '''100''' 0 |
| + | |
| + | 3 0 0 0 0 0 |
| + | |
| + | 4 0 0 0 0 0 |
| + | |
| + | 5 0 0 0 0 0 |
| + | |
| + | 6 0 0 0 0 0 |
| + | |
| + | 7 0 0 0 0 0 |
| + | |
| + | Asic:0 Core:0 Port:23 Hardware Drop Counters |
| + | |
| + | <nowiki>--------------------------------------------------------------------------------------------------------------------------------</nowiki> |
| + | |
| + | Q Drop-TH0 Drop-TH1 Drop-TH2 SBufDrop QebDrop QpolicerDrop |
| + | |
| + | (Frames) (Frames) (Frames) (Frames) (Frames) (Frames) |
| + | |
| + | -- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- |
| + | |
| + | 0 0 0 0 0 0 0 |
| + | |
| + | 1 0 0 0 0 0 0 |
| + | |
| + | 2 0 0 0 0 0 0 |
| + | |
| + | 3 0 0 0 0 0 0 |
| + | |
| + | 4 0 0 0 0 0 0 |
| + | |
| + | 5 0 0 0 0 0 0 |
| + | |
| + | 6 0 0 0 0 0 0 |
| + | |
| + | 7 0 0 0 0 0 0 |
| + | |
| + | |
| + | l3sw92#show policy-map int Gi1/0/19 |
| + | |
| + | GigabitEthernet1/0/19 |
| + | |
| + | Service-policy output: PM_QUEUEING |
| + | |
| + | queue stats for all priority classes: |
| + | |
| + | Queueing |
| + | |
| + | priority level 1 |
| + | |
| + | (total drops) 0 |
| + | |
| + | (pkts output) 0 |
| + | |
| + | Class-map: CM_VoIP_QUEUEING (match-any) |
| + | |
| + | 0 packets |
| + | |
| + | Match: dscp ef (46) |
| + | |
| + | Priority: Strict, |
| + | |
| + | Priority Level: 1 |
| + | |
| + | queue-buffers ratio 2 |
| + | |
| + | Class-map: CM_MGMT_QUEUEING (match-any) |
| + | |
| + | 0 packets |
| + | |
| + | Match: precedence 6 |
| + | |
| + | Queueing |
| + | |
| + | (total drops) 0 |
| + | |
| + | (pkts output) 1 |
| + | |
| + | shape (average) cir 10000000, bc 100000, be 100000 |
| + | |
| + | target shape rate 10000000 |
| + | |
| + | queue-buffers ratio 1 |
| + | |
| + | Class-map: CM_NET_QUEUEING (match-any) |
| + | |
| + | 0 packets |
| + | |
| + | Match: precedence 0 |
| + | |
| + | Queueing |
| + | |
| + | (total drops) 0 |
| + | |
| + | (pkts output) '''100''' |
| + | |
| + | shape (average) cir 920000000, bc 9200000, be 9200000 |
| + | |
| + | target shape rate 920000000 |
| + | |
| + | queue-buffers ratio 92 |
| + | |
| + | Class-map: class-default (match-any) |
| + | |
| + | 0 packets |
| + | |
| + | Match: any |
| + | |
| + | Queueing |
| + | |
| + | (total drops) 0 |
| + | |
| + | (pkts output) 0 |
| + | |
| + | shape (average) cir 50000000, bc 500000, be 500000 |
| + | |
| + | target shape rate 50000000 |
| + | |
| + | queue-buffers ratio 5 |
| + | |
| + | |
| + | l3sw92#show platform hardware fed switch active qos dscp-cos counters interface Gi1/0/1 | in DSCP0 |
| + | |
| + | Ingress DSCP0 '''100''' 0 |
| + | |
| + | Egress DSCP0 '''100''' 0 |
| + | |
| + | |
| + | l3sw92#show platform hardware fed switch active qos dscp-cos counters interface Gi1/0/19 | in DSCP0 |
| + | |
| + | Ingress DSCP0 '''100''' 0 |
| + | |
| + | Egress DSCP0 '''100''' 0 |
| + | |} |
| | | |
| == トラフィック生成 == | | == トラフィック生成 == |
− |
| |
| 色々な機器やアプリケーションが存在しますが、おすすめは以下です。 | | 色々な機器やアプリケーションが存在しますが、おすすめは以下です。 |
| | | |
175行目: |
1,251行目: |
| | | |
| * IxNetwork だと尚良し、4 ポートはほしい | | * IxNetwork だと尚良し、4 ポートはほしい |
− | ** 例) DSCP=0 でワイヤレートを双方向印加中に、DSCP=46 で PQ に双方向印加した時、DSCP=46 でドロップ無し・DSCP=0 でドロップが発生するか | + | ** 例) DSCP=0 でワイヤレートを通常キューに双方向印加中に、DSCP=46 で PQ に双方向印加した時、DSCP=46 でドロップ無し・DSCP=0 でドロップが発生するか |
| + | * 保守で校正を行っている場合は精度が高く、ドロップ数を厳密に確認できる |
| + | * メーカーにエスカレーションする場合、IXIA じゃないと受け付けてくれません |
| | | |
− | ==== Ciscoi Trex ==== | + | ==== Cisco Trex ==== |
| | | |
| * 負荷を印加する分には困らない | | * 負荷を印加する分には困らない |
− | * 安定性やショートパケット時の送信間隔の精度などはいまいち | + | * 安定性やショートパケット時の送信間隔の精度などはいまいちと考えられる |
| | | |
| ==== iperf ==== | | ==== iperf ==== |
191行目: |
1,269行目: |
| | | |
| * ping でもそれなりの pps が出る | | * ping でもそれなりの pps が出る |
− | * ToS を指定して連続実施できるのはレア | + | * ToS を指定して連続実施できるのが良い |
| | | |
| == TIPS == | | == TIPS == |
| + | |
| + | === 不要なフレーム・プロトコルを止める === |
| + | カウンタを取得する際、余計なプロトコルが動いていると、QoS の計測用に印加したトラフィックと混ざってカウントされてしまいます。 |
| + | |
| + | 以下のプロトコルは止めて試験したほうが良いケースがあります。 |
| + | |
| + | * Loopback フレーム : no keepalive |
| + | * DTP フレーム : switchport nonegotiate |
| + | * CDP フレーム : no cdp enable |
| + | * VTP フレーム : vtp mode transparent |
| + | * LLDP フレーム : no lldp transmit , no lldp receive |
| + | * STP BPDU フレーム : no spanning-tree vlan <Vlan-ID> |
| + | |
| + | === 印加するトラフィックについて === |
| + | 以下のように実施すると、レートやドロップの割合が計算しやすくなるため、推奨します。 |
| + | |
| + | # カウンタをクリア |
| + | # カウンタの事前ログを取得 |
| + | # トラフィックを 100 フレームなどキリが良い数字で印加 |
| + | # カウンタの事後ログを取得 |
| + | |
| + | 例えば 1000 バイト 1000 フレームを印加すると 1M バイトになります。 |
| + | |
| + | ビットで揃えたければ、125 バイト 1000 フレームを印加すれば 1M ビットになります。 |
| + | |
| + | 1000 フレーム中 50 フレームがドロップした場合、 |
| + | |
| + | * 50 ドロップ フレーム / 1000 送信フレーム * 100 = 5% のドロップ率 |
| + | |
| + | ということになり、ドロップ割合を計算しなくても見て判別が可能となります。 |
| | | |
| === rate 値の算出間隔を変更 === | | === rate 値の算出間隔を変更 === |
206行目: |
1,314行目: |
| | | |
| === オーバーサブ (帯域超過) させるには === | | === オーバーサブ (帯域超過) させるには === |
− | LAG のメンバーを 2 -> 1 にするなど、帯域幅を減らしてトラフィックを印加しましょう。 | + | QoS を動作確認する場合、帯域超過させないと優先されるか確認できないケースが多いです。 |
| + | |
| + | この場合は帯域幅を減らして、トラフィックを印加しましょう。 |
| + | |
| + | * LAG のメンバーを 2 -> 1 にする |
| + | * 1000Mbps のポートにトラフィックを印加 -> 100Mbps のポートから出力させる |
| | | |
| === ラクなマーキング方法ってある ? === | | === ラクなマーキング方法ってある ? === |
− | ACL よりも Vlan で match させるとラクな場合が多いです。 | + | IP ACL よりも Vlan で match させるとラクな場合が多いです。 |
| | | |
| * IP アドレスを変更しても QoS 用 ACL のメンテナンスが必要ない | | * IP アドレスを変更しても QoS 用 ACL のメンテナンスが必要ない |
− | * Catalyst3850 から対応、3750 / 4500 / 6500 系は対応しません | + | * Catalyst3850 から対応し、2960 / 3750 / 4500 / 6500 系は対応しません |
| | | |
| 拠点ごとに Vlan が共通化されている場合は、特に効果が高いです。 | | 拠点ごとに Vlan が共通化されている場合は、特に効果が高いです。 |
223行目: |
1,336行目: |
| PQ は絶対優先されるため、L2 ループでトラフィックが溢れる、意図せず大量にパケットが流れる、といった事象が発生するとネットワークが完全に停止してしまいます。 | | PQ は絶対優先されるため、L2 ループでトラフィックが溢れる、意図せず大量にパケットが流れる、といった事象が発生するとネットワークが完全に停止してしまいます。 |
| | | |
− | 使用する VoIP プロトコルの 1 ユーザあたりの帯域幅 x ユーザ数などからサイジングして、適切な帯域幅でポリシングを設定するのを推奨します。 | + | 使用する VoIP プロトコルの 1 ユーザあたりの帯域幅 x ユーザ数などからサイジングして、適切な帯域幅でポリシングを設定することを推奨します。 |
| + | |
| + | === qos の統計情報がバイト単位で値がデカい + 他のプロダクトのフレーム/パケット単位と違っていて使いにくいんだけど・・・ === |
| + | IOS-XE 16.6.3 以降では、qos queue-stats-frame-count でフレーム単位に変更可能 <ref>[https://community.cisco.com/t5/tkb-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9-%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88/catalyst-3650-catalyst-3850-catalyst-9000-qos-queue-stats-frame/ta-p/4270480 Catalyst 3650 / Catalyst 3850 / Catalyst 9000 :「qos queue-stats-frame-count」コマンドについて]</ref> です。 |
| + | |
| + | すでに監視システムから値を取得している Catalyst に設定すると、今までと異なる挙動になり過去のグラフが読み取りづらくなったり、単位を書き換え忘れたりする可能性があることに注意が必要です。 |
| | | |
| == ハマりポイント == | | == ハマりポイント == |
| | | |
| === QoS を商用環境に設定したら、ToS=0 のパケットドロップが多くなったんだけど ? === | | === QoS を商用環境に設定したら、ToS=0 のパケットドロップが多くなったんだけど ? === |
− | 正常な動作です。QoS そのものはパケット ドロップを減らす機能ではありません。
| + | '''正常な動作です。'''QoS そのものはパケット ドロップを減らす機能ではありません。 |
| + | |
| + | むしろ優先度の低いパケットは積極的にドロップさせて、高いパケットをドロップさせないようにする、'''パケットを差別化する + 帯域幅を制御する技術'''です。 |
| * ToS=0 のパケットは、重みが低いため他の ToS を持つパケットの犠牲になります | | * ToS=0 のパケットは、重みが低いため他の ToS を持つパケットの犠牲になります |
| * ポートあたりのキューの数がデフォルトの 2 つよりも増えるため、キューあたりのパケットバッファも割当量が減少します | | * ポートあたりのキューの数がデフォルトの 2 つよりも増えるため、キューあたりのパケットバッファも割当量が減少します |
| + | qos queue-softmax-multiplier や buffers-ratio コマンドでバッファ割り当てを増やすことで、ドロップを減らすことも可能です。 |
| + | |
| + | ただし、パケットがドロップしにくくなるため、WRED や WFQ などの Early Drop も発生しにくくなり、パケット差別化がしにくくなるトレードオフがあります。 |
| + | |
| + | * CoS / ToS / DSCP の値が低いほど、ドロップ率が上昇するため、高優先度のトラフィックを保護しやすくなる |
| + | |
| + | === Catalyst3850 / 9000 に ToS=5 のトラフィックを転送しても、絶対優先されないぞ ? 3750 の頃はできたのに・・・ === |
| + | '''正常な動作です。'''3750 は ToS ベースなため ToS=5 = DSCP=40 が PQ に入りますが、'''3850 は DSCP ベースのため PQ に入りません'''。 |
| | | |
− | === Catalyst3850 に ToS=5 のトラフィックを転送しても、絶対優先されないぞ ? 3750 の頃はできたのに・・・ === | + | DSCP で音声として定義されているのは、DSCP = 46 の Expedited Forwarding です。 |
− | 正常な動作です。
| + | * Catalyst3850 以降の UADP ASIC 搭載機では DSCP ベースで動作するため、DSCP=46(EF) が絶対優先されます。 |
− | * Catalyst3850 以降は DSCP ベースで動作するため、DSCP=46(EF) が絶対優先されます。 | |
| ** EF = Expedited Forwarding | | ** EF = Expedited Forwarding |
| | | |
| === Windows の ping で ToS を指定しても反映されないんだけど・・・ === | | === Windows の ping で ToS を指定しても反映されないんだけど・・・ === |
− | 仕様です。-v オプションは廃止されています。 | + | '''仕様です。'''-v オプションは廃止されています。 |
| | | |
| * Cisco IOS は指定できるので、ルータかスイッチを用意して ToS 指定 ping を打つのがおすすめです ただし hex で指定する必要があります | | * Cisco IOS は指定できるので、ルータかスイッチを用意して ToS 指定 ping を打つのがおすすめです ただし hex で指定する必要があります |
250行目: |
1,377行目: |
| and has no effect on the type of service field in the IP | | and has no effect on the type of service field in the IP |
| Header). | | Header). |
− | </syntaxhighlight>deprecated とあり、廃止されている。 | + | </syntaxhighlight>deprecated とあり、廃止されています。 |
| | | |
| ==== Cisco IOS ping ==== | | ==== Cisco IOS ping ==== |
256行目: |
1,383行目: |
| ping 1.1.1.1 tos ? | | ping 1.1.1.1 tos ? |
| <1-255> Type of | | <1-255> Type of |
− | </syntaxhighlight>ToS は Hex で指定する必要がある。例えば DSCP=46 なら 184 を指定する。 | + | </syntaxhighlight>ToS は Hex で指定する必要があります。例えば DSCP=46 なら 184 を指定します。 |
| | | |
| 参考サイト : [https://wiki.innovaphone.com/index.php?title=Howto:Calculate_Values_for_Type_of_Service_(ToS)_from_DiffServ_or_DSCP_Values Howto:Calculate Values for Type of Service (ToS) from DiffServ or DSCP Values] | | 参考サイト : [https://wiki.innovaphone.com/index.php?title=Howto:Calculate_Values_for_Type_of_Service_(ToS)_from_DiffServ_or_DSCP_Values Howto:Calculate Values for Type of Service (ToS) from DiffServ or DSCP Values] |
| | | |
| === 優先キューのレベル 2 って使える ? === | | === 優先キューのレベル 2 って使える ? === |
− | 筆者が使う限り、意図した通り動きませんでした。筆者は非推奨としています。
| + | '''筆者は非推奨としています。'''検証した限りでは意図した通りに動きませんでした。 |
| + | |
| + | * PQ1 ToS=5 と Q ToS=0 にワイヤレート、PQ2 にシェーピングレート以下で印加した場合、PQ2 でドロップが発生した |
| + | * 期待する動作としては、PQ2 はドロップなし、Q ToS=0 でドロップが増加だった |
| + | |
| + | CS4,5 / AF41-43 を PQ レベル 2 へ割り当てれば、まともに動くかもしれません。 |
| | | |
− | === ToS=5 を絶対優先キューに流しているときに、StackWise Virtual Link (SVL) を通るように Failover すると、絶対優先されません === | + | === VoIP ToS=5 を絶対優先キューに流しているときに、StackWise Virtual Link (SVL) を通るように Failover すると、絶対優先されません === |
− | SVL のキュー設定は変更できないため、ToS=5 を優先キューに流せません。 | + | '''仕様です。'''SVL のキュー設定は変更できないため、ToS=5 を優先キューに流せません。 |
| | | |
| StackWise Virtual を使用する場合は、通常ポートで DSCP=46 を PQ level 1 に流すことで、SVL と同様の設定になるようにします。 | | StackWise Virtual を使用する場合は、通常ポートで DSCP=46 を PQ level 1 に流すことで、SVL と同様の設定になるようにします。 |
| | | |
− | 以下は後継機 Catalyst9000 シリーズの SVL キュー割当です。
| + | 以下は Catalyst9000 シリーズの SVL キュー割当です。 |
| | | |
| ==== 参考資料 ==== | | ==== 参考資料 ==== |
| [[ファイル:Nb-06-cat-9k-stack-wp-cte-en 23.png|なし|サムネイル|900x900ピクセル|Catalyst 9000 SVL Queue]] | | [[ファイル:Nb-06-cat-9k-stack-wp-cte-en 23.png|なし|サムネイル|900x900ピクセル|Catalyst 9000 SVL Queue]] |
| | | |
− | == 出力 QoS を未設定のデフォルト キュー設定 == | + | === class-map で意図したとおりに match しないんだけど・・・ === |
− | キューは 2 つに設定されています。DSCP とキューの割当は以下になります。
| + | '''match-all を使用していませんか ?''' match-all は '''and 条件'''を意味するため、すべての条件に当てはまったときのみ、そのクラスが割り当てられます。 |
− | [[ファイル:White-paper-c11-742388 22.png|代替文=Catalyst 9000 Default queue traffic mapping|なし|サムネイル|450x450ピクセル|Catalyst 9000 Default queue traffic mapping]] | + | |
| + | 通常は match-any で '''or 条件'''とする場合が多いです。 |
| + | |
| + | === PQ を設定したらラインレートが出なくなったんだけど・・・ === |
| + | '''仕様です。'''<ref>[https://www.cisco.com/c/ja_jp/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/qos/b_1612_qos_3850_cg/configuring_qos.html#concept_7571E51176D048A090ABFDEACF0760E2 プライオリティ キュー] |
| + | |
| + | プライオリティキューが設定されている場合は、100% のラインレートトラフィックを送信できません。プライオリティキューが設定されている場合、ラインレートトラフィックは 99.6% にしかならないため、遅延は 20 マイクロ秒未満になります。</ref> 99.6% までに制限されます。 |
| + | |
| + | === その他 === |
| + | [[Catalyst_9000_トラブルシューティング#QoS]] にもあります |
| + | |
| + | == バッファチューニング == |
| + | 今後加筆予定 |
| + | |
| + | == バッファ チューニングの測定方法と増加量確認 == |
| + | オーバーサブスクリプション (帯域幅超過) されるトラフィックフローを作成・印加し、設定変更による追加でバッファリングされる量を測定しましょう。<syntaxhighlight lang="diff"> |
| + | Gi1/0/1 Gi1/0/24 |
| + | ->->->-> 3850 ->->->-> |
| + | 1000Mbps 100Mbps |
| + | </syntaxhighlight>例えば 1,000 バイト 1,000,000 フレームの合計 1GB をワイヤレートで印加し、ドロップされたフレーム数を確認します。 |
| + | |
| + | * 1K バイト x 100 万フレーム = 1GB |
| + | |
| + | バッファ チューニング前のドロップ数を'''基準値'''として、チューニング後に何フレームがドロップしなくなったか確認します。 |
| + | |
| + | 1,000 フレーム ドロップ数が減少した場合、1K バイト x 1,000 フレーム = 1M バイトのバッファが追加されたことになります。 |
| | | |
| == 参考 URL == | | == 参考 URL == |
283行目: |
1,440行目: |
| | | |
| [https://www.cisco.com/c/ja_jp/support/docs/switches/catalyst-3850-series-switches/118629-technote-qos-00.html QoSの3750 MLSから3850 MQCへの変換の設定] | | [https://www.cisco.com/c/ja_jp/support/docs/switches/catalyst-3850-series-switches/118629-technote-qos-00.html QoSの3750 MLSから3850 MQCへの変換の設定] |
| + | |
| + | [https://community.cisco.com/t5/tkb-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9-%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88/catalyst-9000-qos-%E6%A6%82%E8%A6%81/ta-p/4821689 Catalyst 9000 QoS 概要] |
| + | |
| + | [https://www.cisco.com/c/en/us/support/docs/switches/catalyst-9500-series-switches/218444-understand-queue-buffer-allocation-on-ca.html Understand Queue Buffer Allocation on Catalyst 9000 Switches] |
| + | |
| + | [https://www.cisco.com/c/ja_jp/support/docs/switches/catalyst-9200-series-switches/218446-understand-qos-hardware-resources-on-cat.html Catalyst 9000スイッチのQoSハードウェアリソースについて] |
| + | |
| + | == 引用 == |
| [[カテゴリ:Catalyst]] | | [[カテゴリ:Catalyst]] |