SAI 拡張属性追加系¶
概要¶
SAI (Switch Abstraction Interface) は OCP が定義する ASIC 抽象 API で、SONiC は libsairedis + syncd を経由して SAI を叩き、orchagent がアプリケーション層との橋渡しをします。SAI は version ごとに新しい属性 / API が追加されるため、SONiC 側でも capability 問い合わせ(sai_query_attribute_enum_values_capability / sai_query_stats_capability / sai_query_api_version)や 失敗時のハンドリング(handleSai*Status / ERROR_DB / dump 取得)が独立した HLD として整備されています。
このカテゴリは、SAI そのものを横断するページを集めます。capability 問い合わせ系(ACL action / counter capability / API version check)・failure handling(dump-on-failure・virtual handleSaiStatus)・SAI POST(MACsec FIPS)・Generic SAI Extension の CRM・SAI bulk API 系(Port Profile Init / Auto FEC)が中心です。
SAI 拡張の HLD は sonic-net/SONiC の doc/ 配下に多く、対応する実装が swss / sairedis / syncd / sonic-platform-common にまたがります。たとえば egress mirroring + action capability check は aclorch が SAI capability を見てフォールバックする実装で、sai_query_stats_capability は counter caps を CounterCheck 系から呼びます。
主要キーワード: SAI, attribute, capability, API, failure handling, POST, CRM
関連ページ¶
capability / API version¶
- ACL の egress mirror 対応と SAI ベース action capability 問い合わせ (area:
acl-qos, verification:code-verified) - sai_query_stats_capability による Counter Capability 一括取得 (area:
platform, verification:code-verified) - SAI API バージョン整合チェック(sai_query_api_version + ビルド時検査) (area:
platform, verification:code-verified)
bulk API / Port¶
- Port Profile Init(SAI bulk port API による fast-boot 高速化) (area:
architecture, verification:code-verified) - Port Auto FEC(SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE / FEC=auto) (area:
architecture, verification:hld-only)
failure handling / POST / CRM¶
- SAI 失敗ハンドリング(handleSai*Status virtual + ERROR_DB) (area:
platform, verification:discrepancy-found) - SAI 失敗時の dump 取得(syncd_dump.sh / SAI_REDIS_NOTIFY_SYNCD_INVOKE_DUMP) (area:
platform, verification:discrepancy-found) - FIPS 向け MACsec SAI POST(FIPS_MACSEC_POST_TABLE) (area:
switching, verification:code-verified) - Generic SAI Extension テーブルの CRM(CRM_EXT_TABLE) (area:
system, verification:code-verified)
典型的な読み進め方¶
- SAI と SONiC の境界 → 隣接カテゴリ Container / Build system 関連 の前に、まず Topics 20 を見ると syncd / sairedis の役割が掴める
- capability →
egress-mirroring-support-and-acl-action-capability-check.mdで「ASIC ごとに何ができるか」を見る方法を学ぶ - API version 検査 →
sai-api-version-check.mdでビルド時の整合性検査 - bulk API →
port-profile-init-hld.mdで fast-boot 高速化、sonic-port-auto-fec-design.mdで Auto FEC - 失敗時の挙動 →
hld-for-handling-sai-failures.md→dump-on-sai-failure.md - 拡張テーブルの監視 →
generic-sai-extension-critical-resource-monitoring-crm.mdで CRM 経由の使用量監視 - MACsec POST →
sonic-sai-post-support-for-macsec.md(FIPS 環境)
関連 Topics 章¶
- Topics 20: SWSS / SAI / Redis — SWSS / SAI / Redis を段階的に学ぶ章
- Topics 14: Platform / Port / Optics — SAI ポート属性の前提
verification ステータス注意点¶
- hld-only:
sonic-port-auto-fec-design.md - discrepancy-found:
hld-for-handling-sai-failures.md,dump-on-sai-failure.md— handleSai*Status の派生クラスや syncd_dump 経路が実コードと差異