QoS / Buffer / PFC / Watermark¶
この章は、SONiC の「ASIC のバッファをどう分けるか」「キューをどの順で出すか」「混んだら誰に止まってもらうか」「混み具合をどう測るか」を、読み手の質問順にまとめ直したものです。既存ページは buffer 計算、scheduler、PFC、watermark、reclaim といった単独 HLD に分かれていて、互いの関係が見えづらいので、ここでは「設定 → 流れ → 観測」を一本の地図にします。
BUFFER_POOL / BUFFER_PROFILE / BUFFER_PG / BUFFER_QUEUE / QUEUE / SCHEDULER / WRED_PROFILE / DSCP_TO_TC_MAP / TC_TO_QUEUE_MAP / PORT_QOS_MAP / PFC_WD といったテーブルは、最終的には SAI の buffer profile、queue、scheduler、PG オブジェクトに落ちます。PFC は受信側の輻輳通知、watermark / PFCWD はその記録と暴走停止です。同じ「輻輳」を別角度から見ているだけで、設定面は意外と直線的につながっています。
この章で答える質問¶
- Buffer pool / profile / PG / queue はどのテーブルから読み始めるのか。
- WRED / ECN、scheduler / shaper、PFC、watermark はどこで交わるのか。
- Reclaim reserved buffer と dynamic headroom は何の問題を解決しているのか。
show buffer、show queue、show priority-group、show pfcは何を見せてくれるのか。- 輻輳で困ったとき、どの順番で観測コマンドを叩けばよいのか。
読み進め方¶
- 概念: pool / PG / queue / scheduler / WRED の登場順と境界。
- アーキテクチャ: BufferOrch / QosOrch / PfcWdOrch / FlexCounter と SAI への変換。
- 設定: lossless / lossy の代表設定、PFC、PFCWD、WRED の最小例。
- 運用: 輻輳・PFC storm・drop counter 調査の順序。
- 内部実装: reclaim、dynamic headroom、port add/del での再計算。
- 発展トピック: asymmetric PFC、historical PFC stats、watermark alignment、他章との境界。
関連ページ¶
- SONiC QoS scheduler / shaping
- Watermark counters in SONiC
- Port buffer drop counters
- Reclaim reserved buffer
- Dynamic headroom calculation
- 上流章 ACL / CoPP / Mirror — packet classification と action の前段。
- 下流章 Telemetry / SNMP / Observability — counter / watermark の収集ルート。
章構成と進捗¶
| ページ | 状態 | verification |
|---|---|---|
| concept | ✅ 完成 (173 行) | meta |
| setup | ✅ 完成 (217 行) | meta |
| operations | ✅ 完成 (183 行) | meta |
| internals | ✅ 完成 (139 行) | meta |
| advanced | ✅ 完成 (100 行) | meta |
次に読むべき記事¶
この章を読み進める順
- 概要: QoS / Buffer の概念地図
- アーキテクチャ: QoS / Buffer のアーキテクチャ
- 設定: QoS / Buffer の設定
- 運用: QoS / Buffer の運用
- 内部実装: QoS / Buffer の内部実装
- 発展トピック: QoS / Buffer の発展トピック
関連する HLD 7 件
- Dynamic Headroom Calculation(buffer_model = dynamic)
- Asymmetric PFC テストプラン(PTF + sonic-mgmt fixtures)
- 未使用ポートの予約バッファ回収(reclaim reserved buffer)シーケンス
- Reclaim Reserved Buffer(admin-down ポートの zero_profile)
- バッファ Watermark カウンタ(PG / queue 占有量の最大値追跡)
- 設定可能な Drop Counter(DEBUG_COUNTER と SAI debug counter)
- show acl 強化(STATE_DB.ACL_TABLE_TABLE / ACL_RULE_TABLE の status)
関連トラブルシュート 5 件
- PFC で帯域が出ない / Buffer overflow
- counter が更新されない (FLEX_COUNTER)
- 経路は RIB にあるが FIB / ASIC に降りない
- APP_DB → ASIC_DB の反映が遅延・停止する
- ARP / Neighbor エントリが古い IP-MAC を保持し続ける
関連する章¶
前提として読むべき章
派生で読むべき章
補完的に読む章