VLAN_MEMBER テーブル¶
概要¶
VLAN とポート (PORT または PORTCHANNEL) のメンバ関係、および各メンバが tagged / untagged のいずれで参加するかを保持する。VLAN_MEMBER のエントリ追加で vlanmgrd が Linux bridge にメンバを add し、orchagent が SAI 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_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 へのメンバ操作orchagentのVlanMgr: SAI VLAN member を生成
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
VLAN、PORT、PORTCHANNEL、PORTCHANNEL_MEMBER、INTERFACE、MIRROR_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。
関連リファレンス¶
- YANG:
sonic-vlan - CLI:
config vlan member
引用元¶
関連ページ¶
関連 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-swss/cfgmgr/vlanmgr.cpphttps://github.com/sonic-net/sonic-swss/blob/master/cfgmgr/vlanmgr.cpp ↩↩↩↩↩↩ -
YANG 定義:
sonic-vlan.yang内VLAN_MEMBERコンテナ。https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-vlan.yang#L273 ↩