コンテンツにスキップ

STATIC_ROUTE テーブル

概要

STATIC_ROUTE は静的経路を CONFIG_DB に保持するテーブル。YANG では template 形式 (STATIC_ROUTE|<prefix>) と VRF-aware 形式 (STATIC_ROUTE|<vrf_name>|<prefix>) の 2 つの list が定義されている1。nexthop、出力 interface、BGP への advertise、BFD、administrative distance、nexthop VRF、blackhole 指定を扱う。テーブル名の実装側定数は schema.h も参照する2

データフロー (自動生成)

flowchart LR
  CDB[("CONFIG_DB<br/>STATIC_ROUTE")]
  DM["fpmsyncd"]
  CDB --> DM
  APPDB[("APP_DB<br/>APP_ROUTE_TABLE")]
  DM --> APPDB
  SYNCD["syncd"]
  APPDB --> SYNCD
  SAI["SAI<br/>sai_route_api"]
  SYNCD --> SAI

凡例

CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。

key 構造

STATIC_ROUTE|<prefix>
STATIC_ROUTE|<vrf_name>|<prefix>

<prefix> は IPv4 / IPv6 prefix。<vrf_name>defaultmgmt、または Vrf... 形式。

主要フィールド

フィールド 既定値 説明
nexthop string - nexthop IP。interface route では 0.0.0.0 を指定する想定
ifname string - 出力 interface
advertise comma-separated boolean string false BGP へ広告するか。nexthop ごとに指定可能
bfd comma-separated boolean string false nexthop ごとの BFD 監視有効化。template 形式のみ
distance comma-separated uint8 string 0 administrative distance。VRF-aware 形式のみ
nexthop-vrf comma-separated VRF string - VRF leaking 用 nexthop VRF。VRF-aware 形式のみ
blackhole comma-separated boolean string false 一致パケットを破棄する blackhole route。VRF-aware 形式のみ

制約

  • advertisebfdblackholetrue / false のカンマ区切り文字列。
  • distance は 0..255 のカンマ区切り文字列。
  • nexthop-vrfdefaultmgmtVrf... のカンマ区切り文字列。
  • YANG の VRF-aware key は vrf_name prefix。template 形式には vrf_name が無い。

購読者

  • staticd / zebra (FRR): SONiC の設定生成パスを通じて static route を FRR に反映する。
  • bgpcfgd / routing config パス: advertise が有効な static route を BGP 広告対象として扱う。
  • orchagent / route orch: kernel / FRR から APPL_DB 経由で転送経路を SAI route へ反映する。

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: VRFINTERFACEPORTCHANNEL_INTERFACEVLAN_INTERFACELOOPBACK_INTERFACE
  • 関連 CLI: config route
  • 関連 YANG: sonic-static-route

関連リファレンス

引用元

運用ヒント

典型値

  • key 形式: STATIC_ROUTE|<vrf>|<prefix> (例 STATIC_ROUTE|default|10.0.0.0/24)。
  • nexthop: カンマ区切り(ECMP 可)。
  • distance: 1(規定)。
  • ifname: 出力 IF(直接接続経路向け)。

よくある誤設定

  • nexthop の IP が到達不可だと FRR が経路を選択せず、show ip route で表示されない。
  • BGP 学習経路と同じ prefix を static で入れると AD 値次第で意図しない切り替わり。

確認コマンド

sonic-db-cli CONFIG_DB keys 'STATIC_ROUTE|*'
show ip route static
vtysh -c 'show ip route'

値依存挙動マトリクス

挙動
false BGP 広告なし(デフォルト)。ROUTE_ADVERTISE_DISABLE_TAG を付与して FRR に渡す。
true BGP に経路広告。ROUTE_ADVERTISE_ENABLE_TAG を付与。

bfd 値別挙動

挙動
true staticroutebfdBFD セッションを監視。全セッション down で APPL_DB から経路削除。bgpcfgd の StaticRouteMgr は処理をスキップ(staticroutebfd 側が担う)。
false BFD 監視なし(デフォルト)。bgpcfgd が通常処理。

blackhole 値別挙動

挙動
true blackhole route(パケット破棄)。nexthop / ifname 不要。FRR に blackhole で展開。
false 通常経路(デフォルト)。nexthop が必要。

distance 値別挙動

挙動
0 デフォルト AD(FRR は static デフォルト AD = 1 を使用)。
1..255 指定の AD で FRR 経路テーブルに挿入。値が小さいほど優先度高。

例外条件・特殊挙動

  • IpNextHopSet 構築例外: ネクストホップ解析中に例外が発生した場合 log_crit を出して return False でスキップ。その静的経路は FRR に設定されない。2
  • APPL_DB の key フォーマット不正: APPL_DB の key で VRF を含む場合 <vrf>:<prefix> 形式を期待し、コロン区切りで 2 要素に分割できない場合は ValueError で処理中断。2
  • BFD 有効時の APPL_DB 削除スキップ: bfd=true の静的経路で APPL_DB から削除イベントが来ても、CONFIG_DB に経路が残っている場合は FRR からの削除をスキップする(staticroutebfd との race condition 防止)。2
  • BGP ASN 未設定時の redistribute 保留: 最初の静的経路設定時に bgp_asn が DEVICE_METADATA に存在しない場合、redistribute static コマンドは vrf_pending_redistribution に保留されて後で適用される。2
  • BFD セッション全断時の自動削除: BFD が有効な nexthop のすべての BFD セッションが down になると APPL_DB から経路エントリが削除されて FRR からも経路が削除される。2