VLAN_INTERFACE テーブル¶
概要¶
VLAN を L3 IF (SVI) として扱う設定を保持する。VRF / VNET binding、IP アサイン、NAT zone、MPLS、IPv6 link-local、grat ARP / proxy ARP、loopback action、MAC を持つ3。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>VLAN_INTERFACE")]
DM["intfmgrd"]
CDB --> DM
APPDB[("APP_DB<br/>APP_INTF_TABLE")]
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> は VLAN.name への leafref(例: Vlan100)。
属性ロウのフィールド一覧¶
| フィールド | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
name (key) |
leafref VLAN.name |
✅ | - | VLAN 名 |
vrf_name |
leafref VRF.name |
- | - | バインドする VRF |
vnet_name |
leafref VNET.name |
- | - | バインドする VNET |
nat_zone |
uint8 (0..3) | - | 0 |
NAT zone |
mpls |
enum enable/disable |
- | - | MPLS routing |
grat_arp |
string enabled/disabled |
- | - | gratuitous ARP |
proxy_arp |
string enabled/disabled |
- | - | proxy ARP |
ipv6_use_link_local_only |
mode-status |
- | disable |
IPv6 link-local のみ |
mac_addr |
mac-address | - | - | 管理者指定 MAC |
loopback_action |
loopback_action |
- | - | ingress→same-IF routing 動作 |
IP プレフィクスロウ¶
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name (key) |
leafref VLAN.name |
✅ | VLAN 名(VLAN_INTERFACE_LIST に存在することを must で要求) |
ip-prefix (key) |
union (v4/v6 prefix) | ✅ | IP/プレフィクス |
scope |
enum global/local |
- | アドレススコープ |
family |
ip-family |
- | family。ip-prefix と整合する must |
secondary |
boolean | - | secondary subnet フラグ |
購読者¶
intfmgrd: VRF / MAC / MPLS / IPv6 LL / proxy_arp / grat_arp を Linux に反映orchagentIntfsOrch: SAI ルータインタフェースを生成arpresponder等: proxy ARP / grat ARP を扱う
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
VLAN、VLAN_MEMBER、VRF、VNET - 関連 CLI:
config interface ip add/remove Vlan<id>、config vlan proxy_arp - 関連 YANG:
sonic-vlan
値依存挙動マトリクス¶
| フィールド | 値 | 実挙動 |
|---|---|---|
mpls |
enable |
sysctl -w net.mpls.conf.<IF>.input=1 (intfmgr.cpp) |
mpls |
disable または空 |
sysctl -w net.mpls.conf.<IF>.input=0 |
proxy_arp |
enabled |
/proc/sys/net/ipv4/conf/<IF>/proxy_arp / proxy_arp_pvlan に 1 |
proxy_arp |
disabled |
同ファイルに 0 |
proxy_arp |
その他 | SWSS_LOG_ERROR("Proxy ARP state is invalid") で処理中断 |
grat_arp |
enabled |
/proc/sys/net/ipv4/conf/<IF>/arp_accept に 1 |
grat_arp |
disabled |
同ファイルに 0 |
grat_arp |
その他 | SWSS_LOG_ERROR("GARP state is invalid") で処理中断 |
ipv6_use_link_local_only |
enable |
IPv6 link-local アドレスのみ付与。グローバル IPv6 アドレス付与不可 |
ipv6_use_link_local_only |
disable |
通常の IPv6 アドレス割当(デフォルト) |
loopback_action |
drop |
同一 IF に ingress/egress するパケットをドロップ |
loopback_action |
forward |
同一 IF に ingress/egress するパケットを転送 |
nat_zone |
0 |
NAT zone なし(デフォルト) |
nat_zone |
1〜3 |
該当 NAT zone へのバインド |
vrf_name |
変更 (既存 IF) | isIntfChangeVrf() で検出しエラー。削除後再 add が必要 |
例外条件・特殊挙動 ¶
- VRF 変更禁止:
intfmgrdは既存 IF の VRF 変更をisIntfChangeVrf()で検出しSWSS_LOG_ERROR("%s can not change to %s directly, skipping")を記録してエントリを破棄する1。 - インタフェース未 ready:
isIntfStateOk()が false の場合リトライ待ち("Interface is not ready, skipping")1。 - VRF 未 ready: VRF が STATE_DB に未登録の場合もリトライ待ち1。
proxy_arp/grat_arp/mpls不正値: 不正値の場合SWSS_LOG_ERROR("... state is invalid")を記録して処理を中断1。- デフォルト補完:
admin_status省略時は"up"が補完される1。YANG ではnat_zoneのデフォルト0、ipv6_use_link_local_onlyのデフォルトdisable2。
関連リファレンス¶
- YANG:
sonic-vlan - CLI:
config interface
引用元¶
関連 Topics¶
運用ヒント¶
典型値¶
- key 形式:
VLAN_INTERFACE|Vlan100(L3 enable 行) とVLAN_INTERFACE|Vlan100|10.0.0.1/24(IP 行) の 2 段。 vrf_name:VrfdefaultまたはVrf<name>。
よくある誤設定¶
- L3 enable 行を作らずに IP 行だけ投入すると IntfMgr が IP を作らない。
vrf_nameを後から変更しても既存 IP は古い VRF に残る。一旦 del してから再 add。
確認コマンド¶
-
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.yanghttps://github.com/sonic-net/sonic-buildimage/blob/master/src/sonic-yang-models/yang-models/sonic-vlan.yang ↩ -
YANG 定義:
sonic-vlan.yang内VLAN_INTERFACE。https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-vlan.yang#L71 ↩