「2024-03-13 Catalyst3850 9000 スイッチ QoS 設定・検証」の版間の差分
細 Hkatou がページ「2023-11-30 Catalyst3850 QoS テスト設計」を「2023-11-30 Catalyst3850 QoS 設計」に移動しました |
|||
1行目: | 1行目: | ||
タイトルは Catalyst3850 ですが、同じ系統の ASIC であるため Catalyst9000 でもほぼ同じ内容が通用します。 | |||
UADP 3.0 から変更がある機能もあるため、全く同じでは無いです。 | |||
== 目的 == | == 目的 == | ||
44行目: | 47行目: | ||
== サンプル要件 == | == サンプル要件 == | ||
QoS で差別化するトラフィックを、以下の通り定義します。 | QoS を正確に設計・検証・設定するには、設定対象のネットワークの使用状況を元にした要件定義が必要です。 | ||
ここでは QoS で差別化するトラフィックを、以下の通り定義します。 | |||
=== 通常ユーザ : NET === | === 通常ユーザ : NET === | ||
51行目: | 56行目: | ||
* 優先度は最低とする | * 優先度は最低とする | ||
* バッファリングを行い、TCP 再送が起きにくくする | * バッファリングを行い、TCP 再送が起きにくくする | ||
* IP セグメントは 10.0.0.0/8 を持つ | |||
=== 管理トラフィック : MGMT === | === 管理トラフィック : MGMT === | ||
* ルーティング | * ルーティング プロトコルや、プロビジョニング用プロトコルの DHCP と ARP を優先する | ||
* Internetwork Control として、NET よりも優先して転送させる | * Internetwork Control として、NET よりも優先して転送させる | ||
* NET でパケットが埋まっていても、優先して処理されること | * NET でパケットが埋まっていても、優先して処理されること | ||
62行目: | 68行目: | ||
* 音声を 200ms 以内の遅延で転送するため、絶対優先させる | * 音声を 200ms 以内の遅延で転送するため、絶対優先させる | ||
* 他の ToS / DSCP で帯域幅が埋まっていても、パケットドロップが起きないこと | * 他の ToS / DSCP で帯域幅が埋まっていても、パケットドロップが起きないこと | ||
* IP セグメントは 192.168.0.0/16 を持つ | |||
=== その他 : class-default === | === その他 : class-default === | ||
79行目: | 86行目: | ||
! | ! | ||
ip access-list extended ACL_MGMT | ip access-list extended ACL_MGMT | ||
permit | 10 permit udp any eq bootpc any | ||
20 permit udp any eq bootps any | |||
30 permit udp any any eq bootpc | |||
40 permit udp any any eq bootps | |||
50 permit ospf any any | |||
! | |||
mac access-list extended ACL_L2MGMT | |||
permit any any 0x806 0x0 | |||
! | ! | ||
ip access-list extended ACL_VoIP | ip access-list extended ACL_VoIP | ||
permit ip 192. | permit ip 192.168.0.0 0.0.255.255 any | ||
! | ! | ||
class-map CMAP_NET_MARKING | class-map match-any CMAP_NET_MARKING | ||
match access-group name ACL_NET | match access-group name ACL_NET | ||
! | ! | ||
class-map CMAP_MGMT_MARKING | class-map match-any CMAP_MGMT_MARKING | ||
match access-group name ACL_MGMT | match access-group name ACL_MGMT | ||
match access-group name ACL_L2MGMT | |||
! | ! | ||
class-map CMAP_VoIP_MARKING | class-map match-any CMAP_VoIP_MARKING | ||
match access-group name ACL_VoIP | match access-group name ACL_VoIP | ||
! | ! | ||
106行目: | 121行目: | ||
end | end | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== ARP ==== | |||
ARP は L2 フレームで IP ヘッダが存在しないため、MAC ACL で定義する必要があります。 | |||
==== OSPF ==== | |||
Cisco IOS ではデフォルトで OSPF に ToS がついているため、上記のようにあえてマーキングする必要はありません。 | |||
== トラフィック生成 == | == トラフィック生成 == | ||
色々な機器やアプリケーションが存在しますが、おすすめは以下です。 | |||
=== トラフィックジェネレータ === | |||
==== IXIA ==== | |||
* IxNetwork だと尚良し、4 ポートはほしい | |||
** 例) DSCP=0 でワイヤレートを双方向印加中に、DSCP=46 で PQ に双方向印加した時、DSCP=46 でドロップ無し・DSCP=0 でドロップが発生するか | |||
==== Ciscoi Trex ==== | |||
* 負荷を印加する分には困らない | |||
* 安定性やショートパケット時の送信間隔の精度などはいまいち | |||
==== iperf ==== | |||
* PC が 2 台あればとりあえず動かせる気軽さが良き | |||
=== ping 系 === | |||
==== Cisco IOS / IOS-XE ==== | |||
* ping でもそれなりの pps が出る | |||
* ToS を指定して連続実施できるのはレア | |||
== TIPS == | == TIPS == | ||
121行目: | 166行目: | ||
end | end | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== オーバーサブ (帯域超過) させるには === | |||
LAG のメンバーを 2 -> 1 にするなど、帯域幅を減らしてトラフィックを印加しましょう。 | |||
=== ラクなマーキング方法ってある ? === | |||
ACL よりも Vlan で match させるとラクな場合が多いです。 | |||
* IP アドレスを変更しても QoS 用 ACL のメンテナンスが必要ない | |||
* Catalyst3850 から対応、3750 / 4500 / 6500 系は対応しません | |||
拠点ごとに Vlan が共通化されている場合は、特に効果が高いです。 | |||
dot1q タグが付いていないフレームでも、マーキングの対象になります。 | |||
* access ポートでも設定した Vlan に match できる | |||
=== 絶対優先キューはポリシングとセットで設定する === | |||
PQ は絶対優先されるため、L2 ループでトラフィックが溢れる、意図せず大量にパケットが流れる、といった事象が発生するとネットワークが完全に停止してしまいます。 | |||
使用する VoIP プロトコルの 1 ユーザあたりの帯域幅 x ユーザ数などからサイジングして、適切な帯域幅でポリシングを設定するのを推奨します。 | |||
== ハマりポイント == | == ハマりポイント == | ||
=== QoS を設定したら、ToS=0 のパケットドロップが多くなったんだけど ? === | === QoS を設定したら、ToS=0 のパケットドロップが多くなったんだけど ? === | ||
正常な動作です。QoS そのものはパケット ドロップを減らす機能ではありません。 | |||
* ToS=0 のパケットは、重みが低いため他の ToS を持つパケットの犠牲になります | |||
* キューの数が 2 -> 8 つに増えるため、キューあたりのパケットバッファも割当量が減少します | |||
=== Catalyst3850 に ToS=5 のトラフィックを転送しても、絶対優先されないぞ ? 3750 の頃はできたのに・・・ === | |||
正常な動作です。 | |||
* Catalyst3850 以降は DSCP ベースで動作するため、DSCP=46(EF) が絶対優先されます。 | |||
** EF = Expedited Forwarding | |||
=== Windows の ping で ToS を指定しても反映されないんだけど・・・ === | |||
仕様です。 | |||
* Cisco IOS は指定できるので、ルータかスイッチを用意して ToS 指定 ping を打つのがおすすめです ただし hex で指定する必要があります | |||
==== Windows ping ==== | |||
<syntaxhighlight lang="diff"> | |||
C:\Windows\System32>ping /? | |||
<snip> | |||
Options: | |||
-v TOS Type Of Service (IPv4-only. This setting has been deprecated | |||
and has no effect on the type of service field in the IP | |||
Header). | |||
</syntaxhighlight> | |||
==== Cisco IOS ping ==== | |||
<syntaxhighlight lang="diff"> | |||
ping 1.1.1.1 tos ? | |||
<1-255> Type of | |||
</syntaxhighlight> | |||
== 参考 URL == | == 参考 URL == | ||
139行目: | 226行目: | ||
[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への変換の設定] | ||
[[カテゴリ:Catalyst]] |
2023年11月30日 (木) 19:52時点における版
タイトルは Catalyst3850 ですが、同じ系統の ASIC であるため Catalyst9000 でもほぼ同じ内容が通用します。
UADP 3.0 から変更がある機能もあるため、全く同じでは無いです。
目的
Catalyst3850 の QoS を検証する際に、注意するべき点をまとめます。
注意点
QoS は動作検証で意図した結果を得られたものが正しいコンフィグです。
検証で確認されていないコンフィグは、すべてゴミです。
トラブル時のエスカレーションも、検証結果を元に行います。
構成
Cat3850-1
Gi1/0/1
|
|
|
Gi1/0/24
Cat3850-2 (DUT)
Gi1/0/1
|
|
|
Gi1/0/24
Cat3850-3
入力機能
分類
ポリシング
マーキング
出力機能
シェーピング
帯域幅制限
プライオリティ キュー
サンプル要件
QoS を正確に設計・検証・設定するには、設定対象のネットワークの使用状況を元にした要件定義が必要です。
ここでは QoS で差別化するトラフィックを、以下の通り定義します。
通常ユーザ : NET
- 帯域幅を最大に確保
- 優先度は最低とする
- バッファリングを行い、TCP 再送が起きにくくする
- IP セグメントは 10.0.0.0/8 を持つ
管理トラフィック : MGMT
- ルーティング プロトコルや、プロビジョニング用プロトコルの DHCP と ARP を優先する
- Internetwork Control として、NET よりも優先して転送させる
- NET でパケットが埋まっていても、優先して処理されること
音声トラフィック : VoIP
- 音声を 200ms 以内の遅延で転送するため、絶対優先させる
- 他の ToS / DSCP で帯域幅が埋まっていても、パケットドロップが起きないこと
- IP セグメントは 192.168.0.0/16 を持つ
その他 : class-default
- その他の ToS / DSCP を転送する
- アプリケーションのデフォルトで ToS=1-4 などが付与されている場合に使用される
サンプル コンフィグ
入力マーキング
!!! Cat3850-2 !!!
configure terminal
!
ip access-list extended ACL_NET
permit ip 10.0.0.0 0.255.255.255 any
!
ip access-list extended ACL_MGMT
10 permit udp any eq bootpc any
20 permit udp any eq bootps any
30 permit udp any any eq bootpc
40 permit udp any any eq bootps
50 permit ospf any any
!
mac access-list extended ACL_L2MGMT
permit any any 0x806 0x0
!
ip access-list extended ACL_VoIP
permit ip 192.168.0.0 0.0.255.255 any
!
class-map match-any CMAP_NET_MARKING
match access-group name ACL_NET
!
class-map match-any CMAP_MGMT_MARKING
match access-group name ACL_MGMT
match access-group name ACL_L2MGMT
!
class-map match-any CMAP_VoIP_MARKING
match access-group name ACL_VoIP
!
policy-map PMAP_MARKING
class CMAP_NET_MARKING
set precedence 0
class CMAP_MGMT_MARKING
set precedence 6
class CMAP_VoIP_MARKING
set dscp 46
!
interface GigabitEthernet1/0/1
service-policy input PMAP_MARKING
!
end
ARP
ARP は L2 フレームで IP ヘッダが存在しないため、MAC ACL で定義する必要があります。
OSPF
Cisco IOS ではデフォルトで OSPF に ToS がついているため、上記のようにあえてマーキングする必要はありません。
トラフィック生成
色々な機器やアプリケーションが存在しますが、おすすめは以下です。
トラフィックジェネレータ
IXIA
- IxNetwork だと尚良し、4 ポートはほしい
- 例) DSCP=0 でワイヤレートを双方向印加中に、DSCP=46 で PQ に双方向印加した時、DSCP=46 でドロップ無し・DSCP=0 でドロップが発生するか
Ciscoi Trex
- 負荷を印加する分には困らない
- 安定性やショートパケット時の送信間隔の精度などはいまいち
iperf
- PC が 2 台あればとりあえず動かせる気軽さが良き
ping 系
Cisco IOS / IOS-XE
- ping でもそれなりの pps が出る
- ToS を指定して連続実施できるのはレア
TIPS
rate 値の算出間隔を変更
デフォルトでは 5 分あたりのトラフィック量が show interface の rate 値に反映されます。
load-interval を 300 秒 -> 30 秒に変更することで、リアルタイムに近い値を得られるようになります。
configure terminal
interface GigabitEthernet1/0/1
load-interval 30
end
オーバーサブ (帯域超過) させるには
LAG のメンバーを 2 -> 1 にするなど、帯域幅を減らしてトラフィックを印加しましょう。
ラクなマーキング方法ってある ?
ACL よりも Vlan で match させるとラクな場合が多いです。
- IP アドレスを変更しても QoS 用 ACL のメンテナンスが必要ない
- Catalyst3850 から対応、3750 / 4500 / 6500 系は対応しません
拠点ごとに Vlan が共通化されている場合は、特に効果が高いです。
dot1q タグが付いていないフレームでも、マーキングの対象になります。
- access ポートでも設定した Vlan に match できる
絶対優先キューはポリシングとセットで設定する
PQ は絶対優先されるため、L2 ループでトラフィックが溢れる、意図せず大量にパケットが流れる、といった事象が発生するとネットワークが完全に停止してしまいます。
使用する VoIP プロトコルの 1 ユーザあたりの帯域幅 x ユーザ数などからサイジングして、適切な帯域幅でポリシングを設定するのを推奨します。
ハマりポイント
QoS を設定したら、ToS=0 のパケットドロップが多くなったんだけど ?
正常な動作です。QoS そのものはパケット ドロップを減らす機能ではありません。
- ToS=0 のパケットは、重みが低いため他の ToS を持つパケットの犠牲になります
- キューの数が 2 -> 8 つに増えるため、キューあたりのパケットバッファも割当量が減少します
Catalyst3850 に ToS=5 のトラフィックを転送しても、絶対優先されないぞ ? 3750 の頃はできたのに・・・
正常な動作です。
- Catalyst3850 以降は DSCP ベースで動作するため、DSCP=46(EF) が絶対優先されます。
- EF = Expedited Forwarding
Windows の ping で ToS を指定しても反映されないんだけど・・・
仕様です。
- Cisco IOS は指定できるので、ルータかスイッチを用意して ToS 指定 ping を打つのがおすすめです ただし hex で指定する必要があります
Windows ping
C:\Windows\System32>ping /?
<snip>
Options:
-v TOS Type Of Service (IPv4-only. This setting has been deprecated
and has no effect on the type of service field in the IP
Header).
Cisco IOS ping
ping 1.1.1.1 tos ?
<1-255> Type of
参考 URL
Cisco IOS XE Gibraltar 16.12.x(Catalyst 3850 スイッチ)Quality of Service(QoS)コンフィギュレーション ガイド