FEC FLR 設定・運用¶
このページは FEC FLR Support in SONiC(概要ハブ) の派生で、CONFIG_DB / CLI / 確認手順 に絞る。概念・公式は fec-flr-support-in-sonic-concepts.md、内部実装は fec-flr-support-in-sonic-internals.md、制限事項は fec-flr-support-in-sonic-limitations.md を参照。
1. 関連する CONFIG_DB¶
| Table | Key | フィールド |
|---|---|---|
FLEX_COUNTER_TABLE |
PORT |
FLR_INTERVAL_FACTOR(HLD 提案。FlexCounterOrch が CONFIG_DB → FLEX_COUNTER_DB に伝搬する想定)1 |
実装では
FLR_INTERVAL_FACTORは CLI / CONFIG_DB 経由で動的に変更できない(limitations 参照)。lua 側のハードコード値120が使われる。
2. CLI¶
| Command | 用途 |
|---|---|
counterpoll port flr-interval-factor <factor> |
計算周期(デフォルト 120)の設定1(HLD 提案、未実装) |
show interfaces counters fec-stats |
FLR(O) / FLR(P) カラム追加1 |
portstat -f |
上記の内部呼び出し(CLI が叩く形)1 |
3. 設定例(HLD 提案ベース)¶
# 60 秒に 1 回計算(port_stat poll 1s 前提なら 60 倍)
counterpoll port flr-interval-factor 60
# 表示
show interfaces counters fec-stats
期待表示1:
IFACE STATE FEC_CORR FEC_UNCORR FEC_SYMBOL_ERR ... FLR(O) FLR(P) (Accuracy)
Ethernet72 U 28,531 0 31 0 2.68e-09 (79%)
Ethernet80 U 25,890 0 25 0 6.03e-09 (79%)
Ethernet104 U 21,141 0 7 0 7.08e-09 (79%)
FLR(P) は predicted FLR、Accuracy は線形回帰の決定係数 R² から派生する精度指標。
4. COUNTER_DB の確認¶
port_flr.lua は COUNTER_DB:RATES に以下を書く1。redis-cli で直接確認できる:
| Entry | 説明 |
|---|---|
FEC_FLR |
observed FEC FLR(float) |
FEC_FLR_PREDICTED |
predicted FEC FLR(float) |
FEC_FLR_R_SQUARED |
predicted の決定係数 |
SAI_PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES_last |
直前値(次回 Δ 計算用) |
SAI_PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES_last |
直前値 |
SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_Si_last |
直前値(i=0..15) |
5. 運用フロー¶
- 健全リンクでは
FLR(O)がほぼ 0、FLR(P)が低 BER 領域の外挿値を出す。 FLR(P)の経時的な上昇が 劣化傾向の早期サイン。例: 1e-12 → 1e-9 へ 3 桁悪化したら点検対象。FLR(O)が0でなくなった時点で すでに観測レベルの欠落 が発生。FEC_UNCORRの増加と組み合わせて即時対応。Accuracy列が極端に低い場合は外挿の信頼度が低いのでFLR(P)の値を厳密には使わない。
関連ページ¶
- FEC FLR Support in SONiC(概要ハブ)
- fec-flr-support-in-sonic-concepts.md
- fec-flr-support-in-sonic-internals.md
- fec-flr-support-in-sonic-limitations.md
制限事項¶
- poll 周期は固定 120 秒:
FLR_INTERVAL_FACTORがport_flr.lua内のハードコードで、CONFIG_DB / CLI からの動的変更は不可。短周期化には image リビルドが必要 (limitations)。 counterpoll port flr-interval-factorCLI は未取り込み: HLD で提案された CLI フラグは現行 master のsonic-utilitiesに存在しない。設定の見える化はshow counterpollではなくport_flr.lua内の定数値の grep で行う。Accuracy列が低い区間でFLR(P)を信用しない: 外挿の信頼度が低いとき Predicted FLR の絶対値を運用閾値に使うと誤警報の原因になる。傾きの相対変化を見るのが安全。- SAI counter 依存: ASIC が
SAI_PORT_STAT_IF_IN_FEC_*を返さないと FLR(O) / FLR(P) ともに値が出ない。プラットフォーム SAI の対応状況により利用可否が変わる。 FLR(O) > 0は既に欠落発生済み: Observed は事後指標。早期検知は Predicted の経時変化を主軸にする。
確認コマンド¶
運用フロー (5. 運用フロー) で示した手順を master 上で実走するための具体的な
コマンド列。HLD で提案された動的設定 CLI が未実装である点も併せて再確認できる。
# 1. portstat で FLR(O) / FLR(P) / Accuracy を観測(運用での主要 view)
show interfaces counters | head -3
show interfaces counters -f Ethernet0 | grep -iE 'FLR|FEC'
# 2. COUNTER_DB:RATES に FEC_FLR / FEC_FLR_PREDICTED / FEC_FLR_R_SQUARED が
# 書かれていることを直接確認
for oid in $(redis-cli -n 2 hvals 'COUNTERS_PORT_NAME_MAP' | head); do
echo "--- $oid ---"
redis-cli -n 2 hgetall "RATES:$oid" | grep -A1 -iE 'FEC_FLR'
done
# 3. lua 内のハードコード値(POLL_INTERVAL/BIN_FILTER/MFC)と
# sonic-utilities 側に flr-interval-factor サブコマンドが無いことを確認
docker exec swss grep -nE 'FEC_FLR_POLL_INTERVAL|BIN_FILTER_VALUE|MFC' /usr/share/swss/port_flr.lua
counterpoll --help 2>&1 | grep -iE 'flr|fec' || echo 'flr-interval-factor: 未取り込み'
これらを実行すると、HLD で記述された counterpoll port flr-interval-factor
が実機の counterpoll CLI に存在しないことが具体的に確認できる。
引用元¶
このページを読んだ後の次アクション¶
読み手向け
- 本機能を実運用で使う場合: 実装は存在するが本 HLD の記述と乖離。最新 master の動作を別途確認した上で適用する
- upstream 動向を追う場合: 関連 issue / PR を sonic-net/SONiC で検索(HLD タイトル / CONFIG_DB テーブル名 / Orch クラス名で grep するのが速い)
- 代替手段 / 関連 reference:
本ドキュメントの追跡
- monitor:
evolved_beyond_hld/ last_verified:2026-05-11 - 次回再裏取りトリガ: quarterly。一覧は discrepancy-index を参照(運用詳細は repo の
meta/discrepancy-operations.md)