INTERFACE テーブル
概要
物理 Ethernet ポート (PORT) を L3 IF として扱う設定を保持する。VRF / VNET binding、IP アサイン、NAT zone、MPLS、IPv6 link-local モード、MAC を持つ。VLAN_MEMBER に登録された port は L2 として扱われるため INTERFACE には登録できない(VLAN_MEMBER 側の must で除外される)。
データフロー (自動生成)
flowchart LR
CDB[("CONFIG_DB<br/>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 構造
INTERFACE|<name> # 属性ロウ
INTERFACE|<name>|<ip_prefix> # IP プレフィクス
<name> は PORT.name への leafref。
属性ロウのフィールド一覧
| フィールド |
型 |
必須 |
デフォルト |
説明 |
name (key) |
leafref PORT.name |
✅ |
- |
物理ポート名 |
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 |
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 PORT.name |
✅ |
ポート名 (INTERFACE_LIST に存在することが must で要求) |
ip-prefix (key) |
union (v4/v6 prefix) |
✅ |
IP/プレフィクス |
scope |
enum global/local |
- |
アドレススコープ |
family |
ip-family (IPv4/IPv6) |
- |
アドレスファミリ。ip-prefix の : / . と整合する must |
購読者
intfmgrd: VRF / MAC / MPLS / IPv6 LL を Linux に反映
orchagent IntfsOrch: SAI ルータインタフェースを生成
natmgrd: nat_zone を利用
関連 CONFIG_DB / YANG / CLI
- 関連 CONFIG_DB:
PORT、VRF、VNET、VLAN_MEMBER(排他)
- 関連 CLI:
config interface ip add/remove、config interface vrf bind/unbind
- 関連 YANG:
sonic-interface
関連リファレンス
引用元
関連ページ
関連 Topics
運用ヒント
典型値
- key 形式:
INTERFACE|EthernetN (L3 enable 行) と INTERFACE|EthernetN|<ip/prefix> (IP 行)。
vrf_name: Vrfdefault か Vrf<name>。
よくある誤設定
- VLAN メンバになっているポートを
INTERFACE で L3 化すると orchagent が拒否する。VLAN_MEMBER から外してから。
- IPv6 link-local だけ欲しい場合でも L3 enable 行が必要。
確認コマンド
sonic-db-cli CONFIG_DB keys 'INTERFACE|Ethernet0*'
show ip interfaces
値依存挙動マトリクス
mpls
| 値 |
挙動 |
enable |
ip link set mpls on → Linux MPLS ルーティングを有効化 |
disable(または空) |
MPLS 無効化 |
| その他 |
SWSS_LOG_ERROR("MPLS state is invalid") → 設定適用されない |
ipv6_use_link_local_only
| 値 |
挙動 |
enable |
IPv6 link-local only モード有効化。m_ipv6LinkLocalModeList に追加 |
disable(デフォルト) |
link-local only モード解除。グローバルアドレス割り当て可能 |
admin_status
| 値 |
挙動 |
up |
インタフェース UP |
down |
インタフェース DOWN |
| その他 |
SWSS_LOG_WARN → up にデフォルト(intfmgr.cpp L867) |
loopback_action
| 値 |
挙動 |
drop |
SAI_PACKET_ACTION_DROP:ingress → 同 IF 宛パケットを破棄 |
forward |
SAI_PACKET_ACTION_FORWARD:通常転送 |
| 未設定 |
SAI プラットフォームデフォルト動作 |
scope(IP プレフィクスロウ)
| 値 |
挙動 |
global |
グローバルスコープアドレス(intfmgrd が APP_DB に scope=global を書く) |
local |
ローカルスコープアドレス |
例外条件・特殊挙動
| 条件 |
挙動 |
| IPv6 有効化失敗 |
SWSS_LOG_ERROR("Failed to enable IPv6 on interface %s") → 処理継続・再試行あり |
admin_status に up/down 以外の値 |
SWSS_LOG_WARN → up にデフォルト(intfmgr.cpp L867) |
mpls に enable/disable 以外の値 |
SWSS_LOG_ERROR("MPLS state is invalid") → MPLS 設定適用されない |
| 別 VRF への直接変更 |
SWSS_LOG_ERROR("%s can not change to %s directly, skipping") → VRF 除去 → 再設定の 2 ステップが必要 |
| interface / VRF が未 ready |
SWSS_LOG_DEBUG("Interface is not ready, skipping %s") → Consumer キューに残り再試行 |
grat_arp / proxy_arp に不正値 |
SWSS_LOG_ERROR("GARP state is invalid") / "Proxy ARP state is invalid" → 設定適用されない |
| サブインターフェース名が不正 |
SWSS_LOG_ERROR("Invalid subnitf: %s") → エントリスキップ |
| MTU 設定コマンド失敗 |
SWSS_LOG_WARN("Setting mtu to %s netdev failed") → warn のみ、旧 MTU のまま継続 |