コンテンツにスキップ

VLAN_SUB_INTERFACE テーブル

概要

VLAN_SUB_INTERFACE は物理 port または PortChannel 上の 802.1Q sub-interface を定義する CONFIG_DB テーブル。Ethernet0.100PortChannel10.100 のような親 interface + VLAN ID 形式をキーに、admin state、VRF / VNET binding、loopback action、encapsulation VLAN、IP prefix を持つ3schema.h では CONFIG_DB テーブル名として CFG_VLAN_SUB_INTF_TABLE_NAME が定義されている4

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

flowchart LR
  CDB[("CONFIG_DB<br/>VLAN_SUB_INTERFACE")]
  DM["intfmgrd"]
  CDB --> DM
  APPDB[("APP_DB<br/>APP_DB")]
  DM --> APPDB
  SYNCD["syncd"]
  APPDB --> SYNCD
  SAI["SAI<br/>sai_router_intf_api"]
  SYNCD --> SAI

凡例

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

key 構造

VLAN_SUB_INTERFACE|<name>
VLAN_SUB_INTERFACE|<name>|<ip-prefix>

<name>ParentInterface.VlanID 形式。IP prefix 行は同じテーブル名で <name><ip-prefix> を複合キーにする。

主要フィールド

VLAN_SUB_INTERFACE_LIST

フィールド 説明
admin_status admin_status sub-interface の管理状態
vrf_name leafref VRF.name binding する VRF
vnet_name leafref VNET.name binding する VNET
loopback_action loopback_action ingress packet が同じ L3 interface へ routed される場合の action
vlan uint16 1..4094 short-name 形式で明示する encapsulation VLAN

VLAN_SUB_INTERFACE_IPPREFIX_LIST

フィールド 説明
ip-prefix sonic-ip-prefix sub-interface に割り当てる IPv4 / IPv6 prefix

制約

  • name は最大 15 文字で、<port>.<vlan_id> / Eth<n>.<vlan_id> / <PortChannel>.<vlan_id> / Po<n>.<vlan_id> の形式。
  • parent は PORT または PORTCHANNEL に存在する必要がある。
  • short-name 形式では vlan leaf が必要。
  • vrf_namevnet_name はそれぞれ既存 VRF / VNET への leafref。
  • IP prefix 行の name は親 VLAN_SUB_INTERFACE_LIST.name への leafref。

購読者

  • intfmgrd: CONFIG_DB の sub-interface と IP prefix を APPL_DB 側の interface 設定へ展開する。
  • orchagent / intfsorch: APPL_DB 経由で router interface、IP address、VRF / VNET binding を SAI / kernel へ反映する。

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: PORTPORTCHANNELVRFVNET
  • 関連 CLI: config interface
  • 関連 YANG: sonic-vlan-sub-interfacesonic-portsonic-portchannelsonic-vrfsonic-vnet

値依存挙動マトリクス

フィールド 実挙動
admin_status up ip link set <sub-if> up
admin_status down ip link set <sub-if> down
admin_status 省略 "up" が自動補完(ただし親 IF の admin_status で実効値が決定)
vlan 14094 encapsulation VLAN ID として設定
vlan 0 または空 SWSS_LOG_INFO("Vlan ID not configured") でリトライ待ち (intfmgr.cpp)
loopback_action drop 同一 IF に戻るパケットをドロップ
loopback_action forward 同一 IF に戻るパケットを転送
mtu 省略 MTU_INHERITANCE(親 IF の MTU を継承)
mtu 明示指定 ip link set <sub-if> mtu <val>

例外条件・特殊挙動

  • 名前長制限 (YANG): 15 文字超の場合 YANG must 制約で "please follow vlan sub interface naming convention" エラー2
  • 親インタフェース存在 (YANG): ドット前部分が PORT_LIST または PORTCHANNEL_LIST に存在しない場合 YANG が reject2
  • VLAN ID 範囲 (YANG): ドット後 ID は 1〜4094 の範囲が必要2。short-name 形式では vlan フィールドも必須。
  • isValid() チェック: intfmgrdsubIntf::isValid() で不正と判定した場合 SWSS_LOG_ERROR("Invalid subnitf") を記録してスキップ1
  • VLAN ID 未設定スキップ: short-name 形式で vlan"0" または空の場合リトライ待ち1
  • netdev コマンド失敗: ip link add / MTU / admin_status 設定で runtime_error 発生時は SWSS_LOG_NOTICE を記録してリトライ待ち1
  • デフォルト補完: mtu 省略時は MTU_INHERITANCE(親継承)、admin_status 省略時は "up"(親の admin status で実効値が決定)1

関連リファレンス

引用元

関連 Topics

運用ヒント

典型値

  • key 形式: VLAN_SUB_INTERFACE|<Ethernet|PortChannel>.<vid>
  • admin_status: upvlan: <vid>。物理 IF の sub-interface として L3 を運ぶ。

よくある誤設定

  • 親 IF を switchport 設定にしたまま sub-interface を生やすと L3 が立ち上がらない。

確認コマンド

sonic-db-cli CONFIG_DB keys 'VLAN_SUB_INTERFACE|*'
show subinterface status