コンテンツにスキップ

config vlan サブコマンド

概要

config vlanVLAN の作成・削除、メンバ追加・削除、Proxy-ARP のオン/オフを担当する。config/vlan.py に実装が分離されており、config/main.py 末尾の config.add_command(vlan.vlan) で登録される構造1

新規 VLAN 作成時は VLAN テーブルだけでなく DHCP_RELAY テーブルにも空エントリを書き込む仕様。これは dhcp_relay の対象 VLANVLAN テーブルではなく 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]

用法:

config vlan add <vid> [-m|--multiple]

引数:

  • <vid> ... 単一 VLAN ID(2-4094 の整数)。-m 指定時は 100,200,300100-110 のような複数指定が可能

動作:

  1. is_vlanid_in_range で VLAN ID が 2-4094 であることを検証(1 は default として弾く)
  2. 既存 VLAN エントリ・DHCP_RELAY エントリと衝突しないか確認
  3. PVST がグローバルに有効なら stp.vlan_enable_stpSTP_VLAN を埋める
  4. 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)

抜粋:

@vlan.command('add')
def add_vlan(ctx, vid, multiple):
    ...
    stp.vlan_enable_stp(config_db, vlan)
    set_dhcp_relay_table('VLAN', config_db, vlan, {'vlanid': str(vid)})

config vlan del <vid> [-m|--multiple] [--no_restart_dhcp_relay]

用法:

config vlan del <vid> [-m|--multiple] [--no_restart_dhcp_relay]

動作: VLAN_MEMBER 配下の関連エントリ、VLAN_INTERFACESTP_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 ではないか
  • ポートの moderouted でないか(access / trunk の整合性も確認)
  • グローバル STP 有効時は enable_stp_on_portSTP_PORT を埋める

config vlan member del <vid> <port> [-m] [-e]

動作: VLAN_MEMBER|<vlan>|<port> を削除し、グローバル STP が有効なら disable_stp_on_vlan_portSTP_VLAN_PORT / STP_PORT を整理。さらに STATE_DBDHCPv6_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 ...

関連リファレンス

引用元

運用ヒント

典型的な利用シーン

  • 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

show vlan brief
show vlan config
show interfaces status

関連 CLI コマンド

関連ページ

実行例

典型的な使い方

# 例 1: VLAN を作成して member を追加
sudo config vlan add 100
sudo config vlan member add 100 Ethernet0

よくある引数の組み合わせ

# 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

期待される出力 (抜粋)

Restarting DHCP relay service ...

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

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


  1. vlan グループは config/vlan.py で定義され、config/main.py 末尾で config.add_command(vlan.vlan) 相当の登録が行われる。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/vlan.py 

  2. proxy_arp は VLAN そのものではなく VLAN_INTERFACE テーブルに書き込まれる(L3 SVI 機能のため)。config/vlan.py L302-L320。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/vlan.py#L302