コンテンツにスキップ

DEVICE_NEIGHBOR テーブル

概要

直接接続される隣接機器(cable 配線レベル)と自スイッチの port を紐付けるテーブル1LLDP の正解値 (expected neighbor) として lldp / lldpmgrd が利用するほか、minigraph 取り込み時にも生成される。隣接機器の hwsku 等のメタデータは DEVICE_NEIGHBOR_METADATA 側で管理する。

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

flowchart LR
  CDB[("CONFIG_DB<br/>DEVICE_NEIGHBOR")]
  DM["lldpmgrd"]
  CDB --> DM

凡例

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

key 構造

DEVICE_NEIGHBOR|<peer_name>
  • <peer_name>: 自由文字列(length 1..255)。通常は隣接機器のホスト名と同値だが、key 重複回避のための識別子として独立して使われる。

フィールド

フィールド 説明
peer_name string (1..255) エントリ識別子(key)
name string (1..255) 隣接機器のホスト名
mgmt_addr inet:ip-address 隣接機器の管理 IP
local_port leafref → PORT.name 自スイッチ側ポート名
port string (1..255) 隣接側ポート名
type string (1..255) 隣接機器タイプ(ToRRouterLeafRouter 等の運用ロール文字列)

値依存挙動マトリクス

local_port (leafref → PORT.name)

挙動
存在する PORT.name lldpmgrd が期待 neighbor の照合に使用
存在しない PORT.name YANG leafref 違反で reject

type (string: 制約なし)

値の例 挙動
ToRRouter / LeafRouter lldpmgrd や BGP テンプレが参照することがある
任意の文字列 YANG 上 string 型で制約なし

フィールドに明示的な enum 制約なし。local_port の leafref 違反のみ YANG レベルで reject。

制約

  • local_portPORT_LIST.name への leafref。存在しないポートを指定するとバリデーションで弾かれる
  • nameDEVICE_NEIGHBOR_METADATA_LIST.name と慣習的に一致させ、メタデータ側を joins する運用が一般的(YANG レベルでは leafref 化されていない)

購読者

  • lldpmgrd: 期待 neighbor として LLDP の判定に利用
  • minigraph パーサ (sonic-cfggen): minigraph.xml から生成

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: DEVICE_NEIGHBOR_METADATAPORT
  • 関連 YANG: sonic-device_neighborsonic-device_neighbor_metadata
  • 関連 CLI: なし(minigraph または config_db.json 経由で投入)

関連リファレンス

  • YANG: sonic-device_neighbor

引用元

運用ヒント

典型値

  • key 形式: DEVICE_NEIGHBOR|Ethernet0
  • name: 対向ホスト名(minigraph 由来)。
  • port: 対向ポート名。

よくある誤設定

  • nameDEVICE_NEIGHBOR_METADATA に未登録だと BGP の neighbor 名解決が失敗。

確認コマンド

sonic-db-cli CONFIG_DB keys 'DEVICE_NEIGHBOR|*'
show lldp neighbors

例外条件・特殊挙動

consumer 条件 挙動
minigraph.py port_config.ini に存在しないインターフェイスがエントリに含まれる Warning: ignore interface '%s' in DEVICE_NEIGHBOR... を stderr に出力してスキップ(minigraph.py:2635)
show interfaces DEVICE_NEIGHBOR テーブルが空 "DEVICE_NEIGHBOR information is not present." を表示して継続。エラーにはならない(show/interfaces/init.py:318)
pfcwd DEVICE_NEIGHBOR テーブルが空 全ポートを内部ポートとして扱い、外部ポート判定を行わない(pfcwd/main.py:413)

Evidence: sonic-buildimage src/sonic-config-engine/minigraph.py:2635; sonic-utilities show/interfaces/__init__.py:318, pfcwd/main.py:413