NVGRE_TUNNEL / NVGRE_TUNNEL_MAP テーブル¶
概要¶
NVGRE (Network Virtualization using GRE, RFC 7637) のトンネル端点と VLAN ↔ VSID マップを CONFIG_DB に保持する1。vxlanorch 系(NVGRE は VXLAN orch と一部実装を共有)が SAI 経由でカプセル化/デカプセル化を構成する。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>NVGRE_TUNNEL")]
DM["NvgreTunnelOrch"]
CDB --> DM
SAI["SAI<br/>sai_tunnel_api"]
DM --> SAI
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
NVGRE_TUNNEL フィールド¶
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
tunnel_name (key) |
string (1..255) | — | NVGRE トンネル名 |
src_ip |
inet:ip-address | yes | ソース VTEP IP |
NVGRE_TUNNEL_MAP フィールド¶
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
tunnel_name (key) |
leafref → NVGRE_TUNNEL.tunnel_name |
— | 親トンネル |
tunnel_map_name (key) |
string (1..255) | — | マップエントリ名 |
vlan_id |
uint16 (1..4094) | yes | VLAN ID |
vsid |
uint32 (0..16777214) | yes | NVGRE Virtual Subnet ID (24bit) |
制約¶
vsidは 24bit (0..16777214)、vlan_idは 1..4094
購読者¶
orchagent(vxlanorch / NVGRE 拡張) — SAI tunnel オブジェクト生成
関連 CONFIG_DB / YANG / CLI¶
値依存挙動マトリクス¶
NVGRE_TUNNEL フィールド¶
| フィールド | 値 / 範囲 | orchagent 挙動 |
|---|---|---|
src_ip |
任意の有効 IP アドレス | SAI sai_tunnel_api でトンネル端点として設定 |
src_ip |
フォーマット不正 / 未設定 | YANG validate 段階で reject |
NVGRE_TUNNEL_MAP フィールド¶
| フィールド | 値 / 範囲 | orchagent 挙動 |
|---|---|---|
vlan_id |
1..4094 | VLAN ID として SAI トンネルマップに登録 |
vlan_id |
範囲外 | WARN ログ後スキップ: VLAN ID doesn't exist: %d |
vsid |
0..16777214 | NVGRE VSID として SAI に反映 |
vsid |
範囲外 | WARN ログ後スキップ: VSID is invalid: %d |
tunnel_name |
存在する NVGRE_TUNNEL を参照 | MAP エントリ作成 |
tunnel_name |
存在しない親トンネルを参照 | WARN ログ: NVGRE tunnel '%s' doesn't exist |
enum なし — src_ip は inet:ip-address 型、vlan_id / vsid は数値範囲のみ。
例外条件・特殊挙動¶
YANG スキーマ検証¶
src_ipは mandatory (inet:ip-address)。未設定またはフォーマット不正は YANG validate で reject。vlan_idは uint16 (1..4094)、vsidは uint32 (0..16777214)。範囲外は YANG 段階で拒否。NVGRE_TUNNEL_MAP.tunnel_nameはNVGRE_TUNNELへの leafref。親トンネルが存在しない場合は reject。
consumer (nvgreorch) 例外動作¶
- 重複 SET:
NVGRE tunnel '%s' already exists→ WARN ログ、処理スキップ。 - 存在しない親トンネルへの MAP 追加:
NVGRE tunnel '%s' doesn't exist→ WARN。 vlan_id未登録:VLAN ID doesn't exist: %d→ WARN。vsid範囲外:VSID is invalid: %d→ WARN。- SAI オブジェクト生成失敗:
std::runtime_errorthrow → orchagent クラッシュ扱い。 - DEL で存在しない tunnel/map: WARN ログ、処理スキップ。
関連リファレンス¶
- YANG:
sonic-nvgre-tunnel - CLI:
config nvgre
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- key 形式:
NVGRE_TUNNEL|<name>/NVGRE_TUNNEL_MAP|<tunnel>|<map_entry>。 src_ip: ローカル VTEP の loopback アドレス。vsid: 24bit (0..16777214)、vlan_id: 1..4094。
よくある誤設定¶
src_ipがローカル IP として実在しない (Loopback 未設定) ためトンネルが up しない。VXLAN_TUNNELとNVGRE_TUNNELを同一スイッチで併用し、orch が想定外動作。