コンテンツにスキップ

VLAN_MEMBER テーブル

概要

VLAN とポート (PORT または PORTCHANNEL) のメンバ関係、および各メンバが tagged / untagged のいずれで参加するかを保持する。VLAN_MEMBER のエントリ追加で vlanmgrd が Linux bridge にメンバを add し、orchagentSAI VLAN member を生成する2

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

flowchart LR
  CDB[("CONFIG_DB<br/>VLAN")]
  DM["vlanmgrd"]
  CDB --> DM
  APPDB[("APP_DB<br/>APP_VLAN_TABLE")]
  DM --> APPDB
  SYNCD["syncd"]
  APPDB --> SYNCD
  SAI["SAI<br/>sai_vlan_api"]
  SYNCD --> SAI

凡例

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

key 構造

VLAN_MEMBER|<vlan_name>|<port>

<vlan_name>VLAN テーブルへの leafref、<port> は PORT または PORTCHANNEL への leafref(union)。

フィールド一覧

フィールド 必須 デフォルト 説明
name (key) leafref VLAN.name - VLAN
port (key) leafref PORT.name | PORTCHANNEL.name - メンバポート / LAG
tagging_mode vlan_tagging_mode (tagged/untagged/priority_tagged) - タグ付与モード

制約 (must)

  • メンバ port が他の mirror session の dst_port であってはならない
  • メンバ port が PORTCHANNEL_MEMBER のメンバ port になっていてはならない(同一物理ポートの二重所属防止)
  • メンバ port が INTERFACE (L3) として登録されていてはならない
  • 同一 port を untagged で登録できる VLAN は最大 1 つ

購読者

  • vlanmgrd: Linux bridge へのメンバ操作
  • orchagentVlanMgr: SAI VLAN member を生成

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: VLANPORTPORTCHANNELPORTCHANNEL_MEMBERINTERFACEMIRROR_SESSION
  • 関連 CLI: config vlan member add/del
  • 関連 YANG: sonic-vlan

値依存挙動マトリクス

フィールド 実挙動
tagging_mode untagged bridge vlan add ... pvid untagged。ポートの PVID として扱われる (vlanmgr.cpp:238)
tagging_mode priority_tagged bridge vlan add ... pvid untagged(untagged と同一の bridge コマンド) (vlanmgr.cpp:238)
tagging_mode tagged bridge vlan add(タグあり、pvid/untagged オプションなし)
tagging_mode 省略 "untagged" が自動補完される (vlanmgr.cpp:873)
tagging_mode その他 SWSS_LOG_ERROR("Wrong tagging_mode") で破棄 (vlanmgr.cpp:659)

例外条件・特殊挙動

  • キー形式検証: Vlan<id>|<port> 形式必須。Vlan プレフィクスがない、またはポート名が含まれない場合 vlanmgrd はエントリを破棄する1
  • tagging_mode 検証: untagged / tagged / priority_tagged 以外の値は SWSS_LOG_ERROR("Wrong tagging_mode") で破棄される1
  • VLAN / ポート未 ready: isVlanStateOk() または isMemberStateOk() が false の場合リトライ待ち("not ready, delaying")1
  • 重複エントリ: STATE_DB に既存の場合は m_vlanMemberReplay から削除のみ("already set")1
  • 重複キー: consumer pipe 内の重複キーは SWSS_LOG_WARN("Duplicate key found") でスキップ1
  • デフォルト補完: tagging_mode 省略時は "untagged" が補完される1

関連リファレンス

引用元

関連ページ

関連 Topics

運用ヒント

典型値

  • key 形式: VLAN_MEMBER|Vlan100|Ethernet0
  • tagging_mode: tagged / untagged / priority_tagged

よくある誤設定

  • tagging_mode: untagged を 1 ポート上の複数 VLAN に重複指定すると先勝ちで残りが silently 反映されない。
  • PortChannel メンバを VLAN_MEMBER に直付けすると L2 が壊れる。LAG 親 (PortChannelN) を入れる。

確認コマンド

sonic-db-cli CONFIG_DB hgetall 'VLAN_MEMBER|Vlan100|Ethernet0'
show vlan brief