config vlan サブコマンド¶
概要¶
config vlan は VLAN の作成・削除、メンバ追加・削除、Proxy-ARP のオン/オフを担当する。config/vlan.py に実装が分離されており、config/main.py 末尾の config.add_command(vlan.vlan) で登録される構造1。
新規 VLAN 作成時は VLAN テーブルだけでなく DHCP_RELAY テーブルにも空エントリを書き込む仕様。これは dhcp_relay の対象 VLAN が VLAN テーブルではなく DHCP_RELAY テーブルから引かれるための互換的な設計。
コマンド一覧¶
| コマンド | 用途 |
|---|---|
config vlan add <vid> |
VLAN を作成 |
config vlan del <vid> |
VLAN を削除 |
config vlan proxy_arp <vid> <enabled\|disabled> |
VLAN_INTERFACE の proxy ARP を切替 |
config vlan member add <vid> <port> |
VLAN にポートをメンバ追加 |
config vlan member del <vid> <port> |
VLAN メンバを削除 |
各コマンドの詳細¶
config vlan add <vid> [-m|--multiple]¶
用法:
引数:
<vid>... 単一 VLAN ID(2-4094 の整数)。-m指定時は100,200,300や100-110のような複数指定が可能
動作:
is_vlanid_in_rangeで VLAN ID が2-4094であることを検証(1は default として弾く)- 既存
VLANエントリ・DHCP_RELAYエントリと衝突しないか確認 - PVST がグローバルに有効なら
stp.vlan_enable_stpでSTP_VLANを埋める set_dhcp_relay_table('VLAN', ...)でVLANテーブルとDHCP_RELAYテーブル両方にVlan<vid>のエントリを作成
📋 検証エビデンス: sonic-net/sonic-utilities/config/vlan.py#L95-L141 (sha: 39732bceb8bdefe706518ab40623bbbba6ff33b9)
出典:
sonic-net/sonic-utilities/config/vlan.py#L95-L141 (sha: 39732bceb8bdefe706518ab40623bbbba6ff33b9)
抜粋:
config vlan del <vid> [-m|--multiple] [--no_restart_dhcp_relay]¶
用法:
動作:
VLAN_MEMBER 配下の関連エントリ、VLAN_INTERFACE、STP_VLAN / STP_VLAN_PORT、最後に VLAN 本体を順に削除する。--no_restart_dhcp_relay 指定時は dhcp_relay サービスの再起動を抑制(DHCPv6 Relay 設定が空であることが前提)。
config vlan proxy_arp <vid> <enabled|disabled>¶
動作:
VLAN_INTERFACE|Vlan<vid> の proxy_arp フィールドを enabled / disabled で書き換え、その後 restart_ndppd() で ndppd を再起動する2。
config vlan member add <vid> <port> [-u] [-m] [-e]¶
オプション:
-u, --untagged... untagged メンバとして登録-m, --multiple...<vid>をカンマ区切り or 範囲で複数指定-e, --except_flag... 指定 vlan 以外の全 VLAN にメンバ追加
動作:
VLAN_MEMBER|<vlan>|<port> を tagging_mode: untagged|tagged で作成。多数の事前チェックを行う:
- VLAN が存在するか
- ポート (
PORTまたはPORTCHANNEL) が存在し、PORTCHANNEL_MEMBER に既に組み込まれていないか - ポートが mirror destination ではないか
- ポートの
modeがroutedでないか(access/trunkの整合性も確認) - グローバル STP 有効時は
enable_stp_on_portでSTP_PORTを埋める
config vlan member del <vid> <port> [-m] [-e]¶
動作:
VLAN_MEMBER|<vlan>|<port> を削除し、グローバル STP が有効なら disable_stp_on_vlan_port で STP_VLAN_PORT / STP_PORT を整理。さらに STATE_DB の DHCPv6_COUNTER_TABLE|<port> / DHCP_COUNTER_TABLE|<port> も掃除する。
関連する CONFIG_DB¶
| テーブル | 書き換え内容 | 操作するコマンド |
|---|---|---|
VLAN |
エントリ作成・削除 | add / del |
DHCP_RELAY |
vlanid 付きエントリ作成・削除 |
add / del |
VLAN_INTERFACE |
proxy_arp フィールド |
proxy_arp |
VLAN_MEMBER |
<vlan>|<port> の tagging_mode |
member add / del |
STP_VLAN / STP_VLAN_PORT / STP_PORT |
PVST 有効時の追従 | add / del / member ... |
関連リファレンス¶
- CONFIG_DB:
VLAN/VLAN_MEMBER/VLAN_INTERFACE/DHCP_RELAY/STP_VLAN/STP_VLAN_PORT/STP_PORT
引用元¶
運用ヒント¶
典型的な利用シーン¶
- VLAN 新設・メンバ追加・IP 付与の典型フロー。
- DHCP relay や VRF 紐付けの前段としての VLAN セットアップ。
よくある落とし穴¶
config vlan member delはメンバを外すのみで VLAN 本体は残る。config vlan delで本体削除。- VLAN に IP を付けた状態で
config vlan delするとエラー。先にconfig interface ip removeが必要。
関連する show / debug¶
関連 CLI コマンド¶
show vlan— show vlan サブコマンドshow lldp— show lldp サブコマンドshow mac— show mac サブコマンドshow storm control— show storm-control サブコマンドconfig interface— config interface サブコマンド
関連ページ¶
実行例¶
典型的な使い方¶
よくある引数の組み合わせ¶
# untagged member として追加(-u)
sudo config vlan member add -u 100 Ethernet4
# DHCP relay を VLAN 100 に追加
sudo config vlan dhcp_relay add 100 10.0.0.1
# proxy-arp を有効化
sudo config vlan proxy_arp 100 enabled
期待される出力 (抜粋)¶
データフロー (自動生成)¶
flowchart LR
CLI["config vlan"]
SC["sonic-cfggen<br/>(config CLI のみ)"]
CLI --> SC
CDB0[("CONFIG_DB<br/>VLAN")]
SC --> CDB0
DM0["vlanmgrd"]
CDB0 --> DM0
CDB1[("CONFIG_DB<br/>VLAN_MEMBER")]
SC --> CDB1
DM1["vlanmgrd"]
CDB1 --> DM1
CDB2[("CONFIG_DB<br/>VLAN_INTERFACE")]
SC --> CDB2
DM2["intfmgrd"]
CDB2 --> DM2
CDB3[("CONFIG_DB<br/>DHCP_RELAY")]
SC --> CDB3
DM3["dhcrelay"]
CDB3 --> DM3
凡例
config 系 (CLI → CONFIG_DB → daemon) のミニ図。テーブル → daemon 対応は docs/reference/config-db-orch-map.md から機械生成。
関連 Topics¶
-
vlanグループはconfig/vlan.pyで定義され、config/main.py末尾でconfig.add_command(vlan.vlan)相当の登録が行われる。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/vlan.py ↩ -
proxy_arpは VLAN そのものではなくVLAN_INTERFACEテーブルに書き込まれる(L3 SVI 機能のため)。config/vlan.pyL302-L320。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/vlan.py#L302 ↩