DEVICE_NEIGHBOR テーブル¶
概要¶
直接接続される隣接機器(cable 配線レベル)と自スイッチの port を紐付けるテーブル1。LLDP の正解値 (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 構造¶
<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) | 隣接機器タイプ(ToRRouter、LeafRouter 等の運用ロール文字列) |
値依存挙動マトリクス¶
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_portはPORT_LIST.nameへの leafref。存在しないポートを指定するとバリデーションで弾かれるnameはDEVICE_NEIGHBOR_METADATA_LIST.nameと慣習的に一致させ、メタデータ側を joins する運用が一般的(YANG レベルでは leafref 化されていない)
購読者¶
lldpmgrd: 期待 neighbor として LLDP の判定に利用- minigraph パーサ (sonic-cfggen):
minigraph.xmlから生成
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
DEVICE_NEIGHBOR_METADATA、PORT - 関連 YANG:
sonic-device_neighbor、sonic-device_neighbor_metadata - 関連 CLI: なし(minigraph または
config_db.json経由で投入)
関連リファレンス¶
- YANG:
sonic-device_neighbor
引用元¶
運用ヒント¶
典型値¶
- key 形式:
DEVICE_NEIGHBOR|Ethernet0。 name: 対向ホスト名(minigraph 由来)。port: 対向ポート名。
よくある誤設定¶
nameがDEVICE_NEIGHBOR_METADATAに未登録だと BGP の neighbor 名解決が失敗。
確認コマンド¶
例外条件・特殊挙動¶
| 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-utilitiesshow/interfaces/__init__.py:318,pfcwd/main.py:413