コンテンツにスキップ

DEVICE_METADATA テーブル

概要

装置全体のメタ情報を保持する CONFIG_DB テーブル。hostname、ベース MAC、BGP ASN、ハードウェア SKU、プラットフォーム、デバイス役割 (type)、サブタイプ (DualToR / SmartSwitch 等)、deployment ID、buffer model(dynamic / traditional)、synchronous mode、YANG 検証の有効化、syslog / FRR 関連スイッチなど、SONiC の起動時挙動を決める根本設定を 1 行 (localhost) にまとめる。bmc キーは BMC 接続情報を別ロウで持つ1

各 Orch / daemon は起動時に DEVICE_METADATA|localhost を読み出す。bgpcfgdbgp_asnfrr_mgmt_framework_config を、orchagentsynchronous_modeasync_swss_recbuffer_model を、hostcfgdhostnametimezone を、それぞれ依存リソースの初期化に用いる。

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

flowchart LR
  CDB[("CONFIG_DB<br/>DEVICE_METADATA")]
  DM["SwitchOrch"]
  CDB --> DM
  SAI["SAI<br/>sai_switch_api"]
  DM --> SAI

凡例

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

key 構造

DEVICE_METADATA|localhost
DEVICE_METADATA|bmc

key は固定文字列 localhost(必須)と任意の bmc

フィールド一覧 (localhost)

フィールド デフォルト 説明
hwsku string (stypes:hwsku) - ハードウェア SKU 識別子。ポートレイアウトと能力を決める
asic_id string (1..16) - SAI 初期化に使う ASIC 識別子
default_bgp_status enum up / down up 起動時の BGP daemon 既定状態
docker_routing_config_mode string separated/unified/split/split-unified unified FRR 設定生成モード
hostname string (stypes:hostname) - システムホスト名
platform string (1..255) - プラットフォーム識別子(vendor + model)
mac mac-address - システムベース MAC
default_pfcwd_status enum disable/enable disable 起動時の PFC watchdog 既定状態
bgp_asn as-number - BGP 自律システム番号
deployment_id uint32 - 同一ネットワークセグメントを括る deployment ID
type enum (ToRRouter / LeafRouter / SpineRouter / SmartSwitchDPU / 等) - デバイス役割
buffer_model string dynamic/traditional - バッファ計算モード。Mellanox 等は dynamic
frr_mgmt_framework_config boolean false true で sonic-frr-mgmt-frameworkFRR 設定を担当、false で bgpcfgd がテンプレ展開
synchronous_mode enum enable/disable enable orchagent ASIC 同期モード
yang_config_validation enum enable/disable disable config_db.json 直接ロード時の YANG 検証
cloudtype string - デプロイ先のクラウドタイプ
region string - 地理的リージョン
sub_role string - ASIC が FrontEnd か BackEnd かを示す
downstream_subrole string - 下流接続デバイスのサブ役割
resource_type string - リソースタイプ分類
mgmt_type string - 管理タイプ
cluster string - 所属クラスタ名
subtype string DualToR/SmartSwitch/Supervisor/UpstreamLC/DownstreamLC - 特殊トポロジ種別
peer_switch hostname - dual ToR 構成のピアホスト名
storage_device boolean - ストレージバックエンドに繋がるか
asic_name string - VoQ スイッチでグローバル DB key の修飾子に使う ASIC 名
switch_id uint16 - ベンダ固有スイッチ ID
switch_type string chassis-packet/fabric/npu/voq/dpu/dummy-sup - スイッチタイプ。既定は npu
max_cores uint8 - VoQ シャーシの最大 core 数
dhcp_server admin_mode - 組み込み DHCP サーバを有効化するか
bgp_adv_lo_prefix_as_128 boolean - true で Loopback0 IPv6 /128 をそのまま広告(既定は /64 化)
suppress-fib-pending enum enabled/disabled disabled BGP suppress-fib-pending。enabled には synchronous_mode = enable が必須
async_swss_rec enum enabled/disabled disabled orchagent の swss.rec 非同期記録
rack_mgmt_map string (0..128) - rack 管理マップ情報
timezone timezone-name (1..255) UTC TZ database name (Europe/Stockholm 等)
create_only_config_db_buffers boolean - true で CONFIG_DB のバッファ設定通り、false で SAI から読んだ最大バッファを生成
supporting_bulk_counter_groups leaf-list string - バルク操作対応のカウンタグループ名
bgp_router_id ipv4-address - BGP router-id
chassis_hostname hostname - このリニアカード/スーパバイザが属するシャーシ名
slice_type string - デバイスのメタデータタグ
location_type string - 場所タイプ
nexthop_group enum enabled/disabled disabled Nexthop Group 機能。boot 時のみ反映
ring_thread_enabled boolean false OrchDaemon の gRingMode
t2_group_asns leaf-list as-number - 同一グループ内の ASN
anchor_route_source leaf-list string - anchor route のソース
orch_northbond_dash_zmq_enabled boolean true APPL_DB DASH テーブル ZMQ
orch_northbond_route_zmq_enabled boolean false APPL_DB ROUTE テーブル ZMQ
syslog_with_osversion boolean false syslog に OS version を付加
syslog_counter boolean false syslog counter
has_sonic_dhcpv4_relay boolean_type false DHCPv4 relay プロセスを有効化
zebra_nexthop enum enabled/disabled enabled next-hop group サポート。boot 時のみ反映

type の取りうる値は YANG の正規表現で 30 種以上が列挙されている (ToRRouter|LeafRouter|SpineChassisFrontendRouter|...|UpperRegionalHub)。詳細は sonic-device_metadata.yang を直接参照1

フィールド一覧 (bmc)

フィールド 説明
bmc_if_name string (1..64) BMC インタフェース名
bmc_if_addr ipv4-address BMC インタフェース IP
bmc_addr ipv4-address BMC IP
bmc_net_mask ipv4-address BMC ネットマスク

値依存挙動マトリクス (v2 — 全 enum 値網羅)

default_bgp_status 値別挙動

挙動 evidence
up (デフォルト) teamd_increase_retry_count.py:150defaultBgpStatus = True → BGP ネイバーを admin-up として扱い、PortChannel 起動完了後に BGP セッションを開始 sonic-utilities/scripts/teamd_increase_retry_count.py:150
down defaultBgpStatus = False → PortChannel 昇格後も BGP ネイバーを admin-down のままにする(メンテナンス時の設定ローリング用途) sonic-utilities/scripts/teamd_increase_retry_count.py:150

docker_routing_config_mode 値別挙動

挙動 evidence
separated (デフォルト) minigraph.py:1630 でデフォルト設定。frrcfgd.py:2170 else 節で config_mode = "separated" 扱い。bgpcfgd が J2 テンプレを展開して frr.conf を生成 sonic-buildimage/src/sonic-config-engine/minigraph.py:1630; sonic-buildimage/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py:2170
unified frrcfgd.py:2344 if self.config_mode == "unified": → 起動時に全 BGP テーブルをリプレイしてから変更を監視するモード sonic-buildimage/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py:2344
split frrcfgd に専用分岐なし → separated と同等動作(unified にマッチしないため) sonic-buildimage/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py:2167-2170
split-unified 同上、separated 同等動作 sonic-buildimage/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py:2167-2170
未設定 frrcfgd.py:2170 else 節で separated として扱う sonic-buildimage/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py:2170

db_migrator: db_migrator.py:742-754migrate_routing_config_mode() が DB 移行時に旧→新 DB へ値を引き継ぐ(既存値は上書きしない)。

default_pfcwd_status 値別挙動

挙動 evidence
disable (デフォルト) config reload 後に pfcwd start_default を呼び出さない sonic-utilities/config/main.py:2427-2434
enable config reload 後に pfcwd start_default を自動実行 sonic-utilities/config/main.py:2434

複合条件: typeMgmtToRRouter / MgmtTsToR / BmcMgmtToRRouter / EPMS のいずれかのとき、config/main.py:2425 でチェック自体をスキップ → pfcwd 呼び出し無し(default_pfcwd_status の値に関係なし)。

type 値別挙動 (全 35 値)

grep hits 主要挙動 evidence
ToRRouter 35 BGP graceful-restart 有効化 (constants 有効時); BGP peer-group に allowas-in 1 設定; dhcp_relay feature 無効化対象 bgpd.main.conf.j2:118; peer-group.conf.j2:7,22; init_cfg.json.j2:76
LeafRouter 42 BGP peer-group の IPv4/IPv6 で BBR 有効時 allowas-in 1; Broadcom 限定で IPinIP 追加エントリ生成; restapi feature 無効化; 下流 ToR ネイバーとの uplink/downlink バッファ・QoS 設定 peer-group.conf.j2:9,24; ipinip.json.j2:12; init_cfg.json.j2:85; qos_config.j2:109
SpineChassisFrontendRouter 2 FRR BGP iBGP ピア設定 (bgpd.conf.j2) および FRR instance 設定 (instance.conf.j2) を有効化 sonic-buildimage/dockers/docker-fpm-frr/frr/bgpd/bgpd.conf.j2:17; templates/general/instance.conf.j2:38
ChassisBackendRouter 1 minigraph.py:49chassis_backend_role 定数として定義のみ(直接的なコード分岐はその定数経由) sonic-buildimage/src/sonic-config-engine/minigraph.py:49
ASIC 14 minigraph.py:95,109 で ASIC 名生成 (ASIC{N} 形式); hardware_checker.py でハードウェア種別判定 sonic-buildimage/src/sonic-config-engine/minigraph.py:95,109
MgmtToRRouter 3 pfcwd 呼び出しスキップ; dhcp_relay feature 無効化; mgmt_device_types グループ config/main.py:2425; init_cfg.json.j2:76; minigraph.py:54
MgmtLeafRouter 0 コード参照なし(YANG 定義のみ)→ 該当なし
MgmtSpineRouter 0 コード参照なし → 該当なし
MgmtAccessRouter 0 コード参照なし → 該当なし
LowerMgmtAggregator 0 コード参照なし → 該当なし
UpperMgmtAggregator 0 コード参照なし → 該当なし
SpineRouter 16 pmon の has_per_asic_scope=False 設定 (SpineRouter は per-ASIC scope なし); macsec feature 有効化対象 (MACSEC_SUPPORTED 必須); type==SpineRouter AND subtype==UpstreamLC のとき table-map 適用 init_cfg.json.j2:69,90; peer-group.conf.j2:17,32
UpperSpineRouter 4 SpineRouter+UpstreamLC と同等の table-map 適用 (SELECTIVE_ROUTE_DOWNLOAD); macsec 有効化対象 peer-group.conf.j2:17,32; init_cfg.json.j2:90
FabricSpineRouter 0 bgpd.main.conf.j2:20 の lowercase 比較 in ['lowerspinerouter', 'upperspinerouter', 'fabricspinerouter']disagg_t2=true が設定される(コード中の単体参照はなし) sonic-buildimage/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2:20
LowerSpineRouter 0 同上 disagg_t2=true → FRR に disaggregated T2 フラグが立つ bgpd.main.conf.j2:20
BackEndToRRouter 12 backend_device_types グループ; AND storage_device IN DEVICE_METADATA のとき ACL を特殊バインド; AND storage_device NOT IN DEVICE_METADATA のとき IPinIP decap エントリ生成スキップ; QoS backend 設定 minigraph.py:1828; ipinip.json.j2:68-69; qos_config.j2:164
BackEndLeafRouter 13 backend_device_types グループ; IPinIP decap エントリ生成スキップ; restapi feature 無効化; QoS backend 設定 minigraph.py:51; ipinip.json.j2:68; init_cfg.json.j2:85
EPMS 2 pfcwd 呼び出しスキップ; dhcp_relay feature 無効化 config/main.py:2425; init_cfg.json.j2:76
MgmtTsToR 4 pfcwd 呼び出しスキップ; dhcp_relay feature 無効化; console_device_types グループ (minigraph.py:52); mgmt_device_types グループ config/main.py:2425; minigraph.py:52,54
BmcMgmtToRRouter 5 pfcwd 呼び出しスキップ; dhcp_relay feature 無効化; dhcp_server_enabled_device_types グループ → minigraph 経由で dhcp_server 設定が有効化; mgmt_device_types グループ config/main.py:2425; minigraph.py:53,54; init_cfg.json.j2:76
MiniTs 0 コード参照なし → 該当なし
LeafTs 0 コード参照なし → 該当なし
SpineTs 0 コード参照なし → 該当なし
CoreTs 0 コード参照なし → 該当なし
ConsoleServer 0 コード参照なし → 該当なし
TerminalServer 0 コード参照なし → 該当なし
SonicHost 0 コード参照なし → 該当なし
SmartSwitchDPU 2 config_samples.py:155switch_type='dpu' と一緒に設定される典型パターン; chrony.conf.j2:58subtype=='SmartSwitch' AND type != 'SmartSwitchDPU' のとき追加 chrony 設定 sonic-buildimage/src/sonic-config-engine/config_samples.py:155; files/image_config/chrony/chrony.conf.j2:58
FilterLeaf 0 コード参照なし → 該当なし
NetworkBmc 0 コード参照なし → 該当なし
MseeRouter 0 コード参照なし → 該当なし
not-provisioned 0 コード参照なし → 該当なし
LowerRegionalHub 1 bgpd.main.conf.j2:27 lowercase 比較で disagg_rh=true → Regional Hub FRR フラグ; init_cfg.json.j2:90 macsec 有効化対象 bgpd.main.conf.j2:27; init_cfg.json.j2:90
FabricRegionalHub 0 bgpd.main.conf.j2:27 の lowercase 比較 in ['lowerregionalhub', 'fabricregionalhub', 'upperregionalhub']disagg_rh=true bgpd.main.conf.j2:27
UpperRegionalHub 0 同上 disagg_rh=true bgpd.main.conf.j2:27

type フィールドの複合条件 (要注意):

  1. type='BackEndToRRouter' AND 'storage_device' IN DEVICE_METADATA → ACL テーブルを filter_acl_table_for_backend() で特殊バインド(minigraph.py:1828
  2. type IN ['BackEndToRRouter','BackEndLeafRouter','BackEndSpineRouter'] AND 'storage_device' NOT IN DEVICE_METADATA → IPinIP decap エントリ生成スキップ(ipinip.json.j2:69
  3. type='SpineRouter' AND subtype='UpstreamLC' → BGP peer-group に SELECTIVE_ROUTE_DOWNLOAD table-map 適用(peer-group.conf.j2:17,32
  4. type='ToRRouter' AND constants.bgp.graceful_restart.enabled → FRR BGP graceful-restart 設定(bgpd.main.conf.j2:118
  5. type='LeafRouter' AND neighbor.type='ToRRouter' → downlink バッファ・QoS 設定を生成(buffers_config.j2:209; qos_config.j2:150
  6. type NOT IN ['ToRRouter','EPMS','MgmtTsToR','MgmtToRRouter','BmcMgmtToRRouter'] → dhcp_relay feature 有効化(init_cfg.json.j2:76

buffer_model 値別挙動

挙動 evidence
dynamic buffermgr が CONFIG_DB の BUFFER_POOL/PROFILE 変更を無視し、Mellanox/BRCM の dynamic buffer manager が SAI を直接更新 sonic-buildimage: orchagent/buffermgr.cpp:476-478 (参照); files/build_templates/buffers_config.j2
traditional (またはその他) buffermgr が CONFIG_DB の BUFFER_POOL/PROFILE を APPL_DB に転写 sonic-buildimage/files/build_templates/buffers_config.j2

synchronous_mode 値別挙動

挙動 evidence
enable (デフォルト) orchagent.sh:40ORCHAGENT_ARGS+="-s" → orchagent を synchronous mode で起動(SAI 操作がブロッキング) sonic-buildimage/dockers/docker-orchagent/orchagent.sh:37-40
disable -s フラグなし → orchagent を非同期 SAI モードで起動 sonic-buildimage/dockers/docker-orchagent/orchagent.sh:37-40

複合条件: switch_type='dpu' のとき orchagent.sh:38-39-z zmq_sync -k 65536 を設定。この場合 synchronous_mode の値に関係なく ZMQ synchronous mode が強制される。

subtype 値別挙動 (全 5 値)

挙動 evidence
DualToR BGP coalesce-time 10000 設定; DHCPv4 relay に -U Loopback0 -dt フラグ追加; DHCPv6 relay に -u Loopback0 フラグ追加; mux feature を enabled に設定; DHCP relay モニタに Loopback0 フラグ; pmon で mux_manager 起動 bgpd.main.conf.j2:110; dockers/docker-dhcp-relay/dhcpv4-relay.agents.j2:14; init_cfg.json.j2:81; dockers/docker-platform-monitor/docker-pmon.supervisord.conf.j2:157
SmartSwitch type != 'SmartSwitchDPU' との複合条件のとき chrony 追加時刻同期設定; interfaces.j2:145,147 でネットワークインタフェース設定 sonic-buildimage/files/image_config/chrony/chrony.conf.j2:58; files/image_config/interfaces/interfaces.j2:145,147
Supervisor コード参照なし(YANG 定義のみ)→ 該当なし
UpstreamLC type=='SpineRouter' AND subtype=='UpstreamLC' の複合条件で BGP table-map 適用; voq_chassis/policies.conf.j2:19,54 で fallback community を deny する route-map 設定 peer-group.conf.j2:17,32; dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/policies.conf.j2:19,54
DownstreamLC internal/policies.conf.j2:42,67 で FROM_VOQ route-map の local-pref/community 設定が DownstreamLC 向けに分岐 dockers/docker-fpm-frr/frr/bgpd/templates/internal/policies.conf.j2:42,67

switch_type 値別挙動 (全 6 値)

挙動 evidence
npu / 未設定 通常スイッチとして起動。synchronous_mode 値に従い -s フラグ制御 sonic-buildimage/dockers/docker-orchagent/orchagent.sh
voq minigraph.py:2221 で switch_id を SAI に渡す VoQ モード; qos_config.j2:28 で voq 向け QoS 設定 sonic-buildimage/src/sonic-config-engine/minigraph.py:2221,2227; files/build_templates/qos_config.j2:28
fabric minigraph.py:2233switch_type='fabric' を設定 → SAI_SWITCH_TYPE_FABRIC として作成 sonic-buildimage/src/sonic-config-engine/minigraph.py:2233
chassis-packet minigraph.py:2229 で sub_role を fabric にしない; bgpd.main.conf.j2:63,141,170,176,198 で multi-ASIC chassis 向け BGP 設定を有効化; fpmsyncd.cpp で suppress-fib-pending の suppress-fib-pending フィールド更新をスキップ minigraph.py:2229; bgpd.main.conf.j2:63; sonic-swss/fpmsyncd/fpmsyncd.cpp:278
dpu orchagent.sh:38-39-z zmq_sync -k 65536 を強制 (synchronous_mode 無視); bfdmon.py:25 で BFD 監視スキップ; ipinip.json.j2:1 で DPU 専用エントリ生成; enable_counters.py:43 で counter 設定分岐 sonic-buildimage/dockers/docker-orchagent/orchagent.sh:27,38-39; src/sonic-bgpcfgd/bfdmon/bfdmon.py:24-25; dockers/docker-orchagent/ipinip.json.j2:1; dockers/docker-orchagent/enable_counters.py:43
dummy-sup コード参照なし(YANG 定義のみ)→ 該当なし

suppress-fib-pending 値別挙動

挙動 evidence
enabled bgpcfgd managers_bgp.py:502 で FRR に bgp suppress-fib-pending コマンドを適用; fpmsyncd.cpp:114 でルート FIB インストール待機モードに入る; route_check.py:387 でルートチェック時に抑制状態を考慮 sonic-buildimage/src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py:502; sonic-swss/fpmsyncd/fpmsyncd.cpp:113-114; sonic-utilities/scripts/route_check.py:387
disabled (デフォルト) suppress-fib-pending 無効; fpmsyncd.cpp:278 でルートを即座に通知 sonic-swss/fpmsyncd/fpmsyncd.cpp:278

YANG must 制約: sonic-device_metadata.yang:250 must "(current() = 'disabled') or (current() = 'enabled' and ../synchronous_mode = 'enable')"enabled かつ synchronous_mode != 'enable' のとき YANG バリデーションで reject。

async_swss_rec 値別挙動

挙動 evidence
disabled (デフォルト) swss.rec を同期書き込み sonic-buildimage/dockers/docker-orchagent/orchagent.sh:66 (else 節)
enabled orchagent.sh:66 で非同期書き込みフラグを設定 → 高トラフィック時の遅延軽減 sonic-buildimage/dockers/docker-orchagent/orchagent.sh:66

nexthop_group 値別挙動

挙動 evidence
disabled / 未設定 (デフォルト) zebra.conf.j2:22-23no fpm use-next-hop-groups → FPM が next-hop 情報を RTM_NEWROUTE に埋め込む従来方式 sonic-buildimage/dockers/docker-fpm-frr/frr/zebra/zebra.conf.j2:19-25
enabled zebra.conf.j2:20-22fpm use-next-hop-groups → FPM が next-hop group を使用(boot 時のみ反映) sonic-buildimage/dockers/docker-fpm-frr/frr/zebra/zebra.conf.j2:20-22

zebra_nexthop 値別挙動

挙動 evidence
enabled / 未設定 (デフォルト) zebra.conf.j2:15zebra nexthop kernel enable → カーネル nexthop を有効化 sonic-buildimage/dockers/docker-fpm-frr/frr/zebra/zebra.conf.j2:9-16
disabled zebra.conf.j2:12no zebra nexthop kernel enable → カーネル nexthop を無効化(boot 時のみ反映) sonic-buildimage/dockers/docker-fpm-frr/frr/zebra/zebra.conf.j2:11

複合条件一覧 (全フィールド)

# 条件 挙動 evidence
1 type='BackEndToRRouter' AND 'storage_device' IN DEVICE_METADATA ACL テーブルを filter_acl_table_for_backend() で特殊バインド minigraph.py:1828
2 type IN ['BackEndToRRouter','BackEndLeafRouter','BackEndSpineRouter'] AND 'storage_device' NOT IN DEVICE_METADATA IPinIP decap エントリ生成をスキップ ipinip.json.j2:69
3 type='SpineRouter' AND subtype='UpstreamLC' BGP peer-group に SELECTIVE_ROUTE_DOWNLOAD table-map 適用 peer-group.conf.j2:17,32
4 type='ToRRouter' AND constants.bgp.graceful_restart.enabled FRR BGP graceful-restart 設定 bgpd.main.conf.j2:118
5 type IN ['SpineRouter','UpperSpineRouter','LowerRegionalHub'] AND MACSEC_SUPPORTED macsec feature 有効化 init_cfg.json.j2:90
6 switch_type='dpu' (いかなる synchronous_mode 値でも) -z zmq_sync -k 65536 強制 → ZMQ synchronous mode orchagent.sh:38-39
7 suppress-fib-pending='enabled' AND synchronous_mode != 'enable' YANG must 違反 → reject sonic-device_metadata.yang:250
8 subtype='DualToR' mux feature 有効、DHCP relay Loopback0 フラグ、BGP coalesce-time 10000 bgpd.main.conf.j2:110; init_cfg.json.j2:81
9 type='LeafRouter' AND neighbor.type='ToRRouter' downlink バッファ・QoS 設定を適用 buffers_config.j2:209; qos_config.j2:150
10 subtype='SmartSwitch' AND type != 'SmartSwitchDPU' chrony 追加時刻同期設定 chrony.conf.j2:58
11 type IN ['MgmtToRRouter','MgmtTsToR','BmcMgmtToRRouter','EPMS'] pfcwd 呼び出しスキップ config/main.py:2425
12 type NOT IN ['ToRRouter','EPMS','MgmtTsToR','MgmtToRRouter','BmcMgmtToRRouter'] dhcp_relay feature 有効化 init_cfg.json.j2:76
13 subtype='UpstreamLC' (voq chassis) FROM_VOQ route-map で fallback community を deny voq_chassis/policies.conf.j2:19,54
14 type='SpineRouter' AND switch_type='voq' VoQ chassis BGP 設定を有効化 bgpd.main.conf.j2:59

値別 grep カバレッジサマリ

  • 対象フィールド数: 12
  • 合計 enum 値数: 35 (type) + 2+4+2+2+2+5+6+2+2+2+2 = 68 値
  • コード参照あり値: 35 値 (50%)
  • grep 0 ヒット値: 33 値 (50%) — 主に MgmtLeafRouter / MgmtSpineRouter 等の将来予約値および FabricSpineRouter/LowerRegionalHub 等 J2 lowercase 比較のみの値
  • 最頻ファイル TOP 5:
  • sonic-buildimage/files/build_templates/init_cfg.json.j2 — type/subtype で 5+ 分岐
  • sonic-buildimage/dockers/docker-fpm-frr/frr/bgpd/templates/general/peer-group.conf.j2 — type/subtype で 4 分岐
  • sonic-buildimage/src/sonic-config-engine/minigraph.py — type/switch_type で多数分岐
  • sonic-buildimage/dockers/docker-orchagent/orchagent.sh — switch_type/synchronous_mode/async_swss_rec
  • sonic-buildimage/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 — type/subtype/switch_type

購読者

  • bgpcfgd / sonic-frr-mgmt-framework: bgp_asnbgp_router_idfrr_mgmt_framework_configdocker_routing_config_modedefault_bgp_statussuppress-fib-pendingbgp_adv_lo_prefix_as_128
  • orchagent: synchronous_modeasync_swss_recbuffer_modelcreate_only_config_db_buffersswitch_typeasic_nameswitch_idring_thread_enablednexthop_groupzebra_nexthop
  • hostcfgd: hostnametimezonesyslog_*
  • pfcwd / pfcwd_init: default_pfcwd_status
  • dhcp_server 系: dhcp_serverhas_sonic_dhcpv4_relay

制約

  • suppress-fib-pending = enabled のとき synchronous_mode = enable が必須(YANG must
  • subtype = DualToR のときは peer_switch の指定が運用上必要(HLD 由来、YANG では強制されない)
  • type は enum パターンに合致する文字列のみ受理

関連 CONFIG_DB テーブル / YANG / CLI

  • 関連 CONFIG_DB: BGP_DEVICE_GLOBALbgp_asn と独立した装置全体 BGP スイッチ)、MGMT_PORT(管理ポート設定)、FEATURE(docker on/off)
  • 関連 CLI: config bgpconfig hostname
  • 関連 YANG: sonic-device_metadatahostnamehwskumode-status などの typedef を当該モジュール内で定義)

関連リファレンス

引用元

📋 検証エビデンス: sonic-net/sonic-buildimage/src/sonic-yang-models/yang-models/sonic-device_metadata.yang#L37-L411 (sha: 9ea932ec2e18f35e58268ec2e4456b1d4afd65cd)

出典:

sonic-net/sonic-buildimage/src/sonic-yang-models/yang-models/sonic-device_metadata.yang#L37-L411 (sha: 9ea932ec2e18f35e58268ec2e4456b1d4afd65cd)

抜粋:

container DEVICE_METADATA {
    container localhost { ... 50+ leafs ... }
    container bmc { bmc_if_name, bmc_if_addr, bmc_addr, bmc_net_mask }
}

判断根拠: フィールド一覧と型・デフォルト・enum 値はこのモジュールの leaf 宣言から抽出

運用ヒント

典型値

  • key 形式: DEVICE_METADATA|localhost
  • hostnamehwskuplatformmactype (ToRRouter/LeafRouter/SpineRouter)。
  • bgp_asndefault_bgp_status: updefault_pfcwd_status: enable

よくある誤設定

  • hwsku を実機と異なる値にすると sonic-buildimage 起動時に platform plugin が読み込まれず orchagent が起動しない。
  • type を誤ると generic_config_updater のチェックや MC-LAG の role 判定で誤動作。

確認コマンド

sonic-db-cli CONFIG_DB hgetall 'DEVICE_METADATA|localhost'
show platform summary

例外条件・特殊挙動

consumer 条件 挙動
bgpcfgd bgp_asnlocalhost に存在しない BGP ピア追加を return False で延期・再試行待ち(managers_bgp.py:192)
bgpcfgd bgp_router_id も未設定かつ Loopback IPv4 未取得 ピア追加待機、log_warn を出力(managers_bgp.py:186-188)
bgpcfgd type (switch_role) が未設定 switch_role=None のまま継続、デフォルト補完なし(managers_device_global.py:53-54)
syncd switch_typehget で取得できない 空文字のまま続行、例外なし(Syncd.cpp:167-169)
dhcprelayd has_sonic_dhcpv4_relay = "True" 旧来 dhcrelay プロセスを起動しない(新 dhcpv4-relay サービスに委譲)(dhcprelayd.py:112-113)
linkmgrd mac フィールドのフォーマット不正 MUX_ERROR(ConfigNotFound) 例外を throw し linkmgrd が起動失敗(DbInterface.cpp:576)
db_migrator synchronous_mode キーが存在しない 移行元から取得して補完、既存値は上書きしない(db_migrator.py:676-677)

Evidence: sonic-buildimage src/sonic-bgpcfgd/bgpcfgd/managers_bgp.py, managers_device_global.py; sonic-sairedis syncd/Syncd.cpp:167; sonic-buildimage src/sonic-dhcp-utilities/dhcp_utilities/dhcprelayd/dhcprelayd.py:112; sonic-linkmgrd src/DbInterface.cpp:576; sonic-utilities scripts/db_migrator.py:676


  1. YANG 定義: sonic-buildimage/src/sonic-yang-models/yang-models/sonic-device_metadata.yang (sha 9ea932ec2e18f35e58268ec2e4456b1d4afd65cd)。https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-device_metadata.yang