VLAN_SUB_INTERFACE テーブル¶
概要¶
VLAN_SUB_INTERFACE は物理 port または PortChannel 上の 802.1Q sub-interface を定義する CONFIG_DB テーブル。Ethernet0.100 や PortChannel10.100 のような親 interface + VLAN ID 形式をキーに、admin state、VRF / VNET binding、loopback action、encapsulation VLAN、IP prefix を持つ3。schema.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 構造¶
<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 形式では
vlanleaf が必要。 vrf_nameとvnet_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:
PORT、PORTCHANNEL、VRF、VNET - 関連 CLI:
config interface - 関連 YANG:
sonic-vlan-sub-interface、sonic-port、sonic-portchannel、sonic-vrf、sonic-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 |
1〜4094 |
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()チェック:intfmgrdがsubIntf::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:up、vlan:<vid>。物理 IF の sub-interface として L3 を運ぶ。
よくある誤設定¶
- 親 IF を
switchport設定にしたまま sub-interface を生やすと L3 が立ち上がらない。
確認コマンド¶
-
sonic-swss/cfgmgr/intfmgr.cpphttps://github.com/sonic-net/sonic-swss/blob/master/cfgmgr/intfmgr.cpp ↩↩↩↩ -
sonic-buildimage/src/sonic-yang-models/yang-models/sonic-vlan-sub-interface.yanghttps://github.com/sonic-net/sonic-buildimage/blob/master/src/sonic-yang-models/yang-models/sonic-vlan-sub-interface.yang ↩↩↩ -
YANG 定義:
sonic-vlan-sub-interface.yang. https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-vlan-sub-interface.yang ↩ -
テーブル名定数:
schema.h. https://github.com/sonic-net/sonic-swss-common/blob/158de8d3463ff4b841653f6d57190bb142b80d9c/common/schema.h ↩