コンテンツにスキップ

TUNNEL_DECAP_TABLE

YANG 未定義

TUNNEL_DECAP_TABLE は CONFIG_DB ではなく APPL_DB / STATE_DB のテーブルであり、sonic-yang-models には対応モジュールが存在しない。本ページは schema.h のテーブル名定数と tunneldecaporch.cpp の実装からフィールドを起こしたもの。CONFIG_DB に同名テーブルを直接書くことは想定されていない。

概要

tunneldecaporch が消費する アプリケーション層テーブルCONFIG_DBTUNNELtunnelmgrdAPPL_DB に投影する形で生成され、SAI tunnel/tunnel-term オブジェクトに反映される1STATE_DB にも同名のミラーがある。

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

flowchart LR
  CDB[("CONFIG_DB<br/>TUNNEL_DECAP_TABLE")]
  DM["tunneldecaporch"]
  CDB --> DM
  APPDB[("APP_DB<br/>APP_TUNNEL_DECAP_TABLE")]
  DM --> APPDB
  SYNCD["syncd"]
  APPDB --> SYNCD
  SAI["SAI<br/>sai_tunnel_api"]
  SYNCD --> SAI

凡例

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

DB / key

APPL_DB:   TUNNEL_DECAP_TABLE:<tunnel_name>
STATE_DB:  TUNNEL_DECAP_TABLE|<tunnel_name>
APPL_DB:   TUNNEL_DECAP_TERM_TABLE:<tunnel_name>:<dst_ip>   # 終端 IP の管理用 sub テーブル

テーブル名定数は schema.hAPP_TUNNEL_DECAP_TABLE_NAME / APP_TUNNEL_DECAP_TERM_TABLE_NAME / STATE_TUNNEL_DECAP_TABLE_NAME / STATE_TUNNEL_DECAP_TERM_TABLE_NAME2

フィールド

フィールド 説明
tunnel_type string IPINIP カプセル化種別。それ以外はエラー
src_ip IPv4 アドレス トンネル送信元 IP
dst_ip IPv4 アドレスのカンマ区切りリスト 終端 IP 群(TUNNEL_DECAP_TERM_TABLE で個別管理)
dscp_mode string uniform/pipe DSCP 継承
ecn_mode string copy_from_outer/standard ECN モード(create-only)
encap_ecn_mode string standard カプセル時 ECN
ttl_mode string uniform/pipe TTL モード
decap_dscp_to_tc_map string DSCP→TC マップ名(OID 解決)
decap_tc_to_pg_map string TC→PG マップ名
encap_tc_to_dscp_map string TC→DSCP マップ名
encap_tc_to_queue_map string TC→Queue マップ名

制約

  • tunnel_typeIPINIP のみ受け入れる(tunneldecaporch.cpp でハードコード)
  • ecn_modeSAI SAI_TUNNEL_ATTR_DECAP_ECN_MODE が create-only のため、生成後の更新はスキップされる旨が WARN ログで残る

購読者

  • tunneldecaporch (orchagent): SAI tunnel / tunnel-term オブジェクト作成
  • STATE_DB 側はモニタリング用ミラー

関連 CONFIG_DB / YANG / CLI

関連リファレンス

  • (関連リンクなし)

引用元

値依存挙動マトリクス

tunnel_type / dscp_mode / ecn_mode / ttl_modeYANG 未定義 (APPL_DB テーブル) のため string 型。制約は tunneldecaporch.cpp のコード判定。

フィールド 挙動
tunnel_type IPINIP SAI tunnel + tunnel-term オブジェクトを作成
tunnel_type IPINIP 以外 LOG_ERROR してエントリをスキップ
dscp_mode uniform 外側 DSCP を内側にコピー
dscp_mode pipe 内側 DSCP を保持
dscp_mode 上記以外 LOG_ERROR してエントリをスキップ
ecn_mode copy_from_outer 外側 ECN を内側にコピー
ecn_mode standard RFC 6040 ECN 処理
encap_ecn_mode standard 以外 LOG_ERROR して拒否
ecn_mode 作成後に変更 SAI create-only 属性のため変更スキップ (WARN ログ)
ttl_mode uniform 外側 TTL を内側にコピー
ttl_mode pipe 内側 TTL を保持
src_ip 作成後に変更 LOG_ERROR して拒否。削除→再作成が必要

例外条件・特殊挙動

  • src_ip の変更不可: 既存トンネルの src_ip を変更しようとすると "cannot modify src ip for existing tunnel" を LOG_ERROR して拒否する。変更するにはトンネルを削除して再作成する必要がある。
  • 無効な tunnel_type / dscp_mode / ecn_mode / ttl_mode: 有効値以外の文字列が来ると "Invalid tunnel type/dscp mode/ecn mode/ttl mode <value>" を LOG_ERROR してエントリをスキップする。
  • encap_ecn_mode は standard のみ対応: ecn_modestandard 以外の場合 "Only standard encap ecn mode is supported currently" を LOG_ERROR して拒否。
  • 存在しないトンネルの DEL: 未作成のトンネルへの DEL は "Tunnel <key> cannot be removed since it doesn't exist." を LOG_ERROR する。
  • subnet decap 制約: subnet decap の decap term は MP2MP タイプのトンネルにのみ許可される。src_ip / src_ip_v6 なしで subnet decap term を追加しようとするとそれぞれ "no source IP is provided." を LOG_ERROR。
  • subnet decap 無効時の decap term: subnet_decap が無効な状態で decap term を追加しようとすると "subnet decap is disabled, ignored." を LOG_ERROR してスキップ。
  • ASIC_DB 操作失敗: トンネルや decap term の ASIC_DB 追加/削除が失敗するとそれぞれエラーを LOG_ERROR する。

運用ヒント

典型値

  • key 形式: TUNNEL_DECAP_TABLE|<tunnel-name>
  • tunnel_type: IPINIP / VXLANdst_ip: 自 Loopback、ttl_mode/dscp_mode: uniform

よくある誤設定

  • dst_ip を物理 IF アドレスに向けてしまい、IF down で decap も停止する。Loopback を使う。

確認コマンド

sonic-db-cli CONFIG_DB keys 'TUNNEL_DECAP_TABLE|*'