コンテンツにスキップ

INTERFACE テーブル

概要

物理 Ethernet ポート (PORT) を L3 IF として扱う設定を保持する。VRF / VNET binding、IP アサイン、NAT zone、MPLS、IPv6 link-local モード、MAC を持つ1。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: PORTVRFVNETVLAN_MEMBER(排他)
  • 関連 CLI: config interface ip add/removeconfig interface vrf bind/unbind
  • 関連 YANG: sonic-interface

関連リファレンス

引用元

関連ページ

関連 Topics

運用ヒント

典型値

  • key 形式: INTERFACE|EthernetN (L3 enable 行) と INTERFACE|EthernetN|<ip/prefix> (IP 行)。
  • vrf_name: VrfdefaultVrf<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") → 設定適用されない
挙動
enable IPv6 link-local only モード有効化。m_ipv6LinkLocalModeList に追加
disable(デフォルト) link-local only モード解除。グローバルアドレス割り当て可能

admin_status

挙動
up インタフェース UP
down インタフェース DOWN
その他 SWSS_LOG_WARNup にデフォルト(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_statusup/down 以外の値 SWSS_LOG_WARNup にデフォルト(intfmgr.cpp L867)
mplsenable/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 のまま継続