コンテンツにスキップ

アーキテクチャ

ここでは、ポート 1 本がリンクアップに至るまでに通る要素を、SONiC 内部のコンポーネント単位で並べ直します。HLD 個別では「FEC」「auto-neg」「link training」「fast link up」が独立した提案として書かれていますが、実装上は同じ port bring-up シーケンスに乗っています。

Port bring-up の全体像

flowchart TD
  PC[port_config.ini / hwsku.json] --> PR[port profile init]
  CFG[CONFIG_DB PORT] --> PM[PortMgr]
  PR --> PM
  PM --> PS[portsyncd]
  PS --> OA[orchagent: PortsOrch]
  OA --> SAI[syncd / SAI]
  SAI -->|create port, set attrs| ASIC[ASIC / PHY]
  ASIC -->|notification| SAI
  SAI -->|STATE_DB| OA
  OA -->|oper_status| APP[APP_DB]

port_config.inihwsku.json で決まる初期プロファイルは port profile init HLD で詳細化されています。設定が CONFIG_DBPORT に入ると、PortMgrportsyncd を経由して orchagentPortsOrch に到達し、SAI 経由で ASIC に書かれます。

Dynamic breakout

1 つの物理ケージを複数の論理 port に分割する dynamic breakout は、運用中に PORT 行を削除・再生成する操作として実装されています。詳細は dynamic port breakout HLD を参照してください。breakout に伴って、buffer profile、queue、ACL bind は再構築されるため、QoS / ACL 章と影響範囲が重なります。

光モジュールやコパー DAC では、リンクパラメータをハード同士でネゴシエーションする auto-negotiation と、シリアルリンクの等化を行う link training が走ります。SONiC では、ユーザ設定 (autonegadv_speedsadv_interface_types など) を PORT テーブルから受け取り、SAI 属性に変換します。

FEC: 手動・自動・FLR

FEC (Forward Error Correction) は速度ごとに既定値があり、SONiC では fec カラムで明示するか、auto FEC に任せます。

運用上の「リンクは上がっているが errored」の切り分けは、これらの counter を読むところから始めます。

リンクのフラップ収束を速くするための fast link up は、port bring-up シーケンスを短縮する最適化です。詳細は SONiC fast link up を参照してください。一般運用では明示的に意識する必要はありませんが、再収束が遅いと感じたときに最初に確認する観点です。

Port configuration refactor の位置付け

port configuration refactor design は、ここまでの bring-up を支える「設定をどの順で何回 SAI に流すか」の再設計です。breakout、speed 変更、buffer 再構成のような重い更新で、整合の取りにくさを下げることが狙いです。

関連ページ