MCLAG_DOMAIN / MCLAG_INTERFACE / MCLAG_UNIQUE_IP テーブル¶
概要¶
MC-LAG (Multi-Chassis Link Aggregation) のドメイン設定とメンバー / unique-IP 設定を CONFIG_DB に保持する 3 テーブル1。iccpd (docker-iccpd) がこれらを購読し、ICCP セッションと MC-LAG メンバー LAG の同期を制御する。
MCLAG_DOMAIN— 1 ドメインの基本パラメータ(最大 1 エントリ)MCLAG_INTERFACE— ドメインに紐づく MC-LAG メンバー PortChannelMCLAG_UNIQUE_IP— MC-LAG ピア間で VLAN インターフェースに 異なる IP を持たせる対象 VLAN
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>MCLAG_DOMAIN")]
DM["MlagOrch"]
CDB --> DM
SAI["SAI<br/>sai_fdb_api"]
DM --> SAI
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
MCLAG_DOMAIN フィールド¶
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
domain_id (key) |
uint16 (1..4095) | — | MC-LAG ドメイン ID |
source_ip |
inet:ipv4-address | — | ICCP セッションのソース IP |
peer_ip |
inet:ipv4-address | — | ICCP セッションのピア IP |
peer_link |
union leafref → PORT.name または PORTCHANNEL.name |
— | ピアリンク(バックアップデータパス) |
keepalive_interval |
uint16 (1..60) [秒] | 1 | ICCP keepalive 間隔 |
session_timeout |
uint16 (1..3600) [秒] | 30 | ICCP セッションタイムアウト |
must 制約: keepalive_interval * 3 <= session_timeout
max-elements: 1 — ドメインは 1 件のみ
MCLAG_INTERFACE フィールド¶
| フィールド | 型 | 説明 |
|---|---|---|
domain_id (key) |
leafref → MCLAG_DOMAIN.domain_id |
所属ドメイン |
if_name (key) |
leafref → PORTCHANNEL.name |
MC-LAG メンバー LAG |
if_type |
string | プレースホルダ(インスタンス作成用) |
MCLAG_UNIQUE_IP フィールド¶
| フィールド | 型 | 説明 |
|---|---|---|
if_name (key) |
string パターン Vlan<id> |
unique-ip を許可する VLAN インターフェース名 |
unique_ip |
enum enable |
有効化フラグ(無効時はエントリ削除) |
must 制約: MCLAG_DOMAIN_LIST が少なくとも 1 つ存在すること
YANG コメントによれば、本来 MCLAG_UNIQUE_IP.if_name は VLAN.name への leafref にしたいが libyang back-links の制約で plain string になっている。
購読者¶
iccpd(docker-iccpd) — MC-LAG 制御プレーン- 間接的に
teamd(PortChannel のメンバー同期)
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
PORTCHANNEL、PORTCHANNEL_MEMBER、VLAN、VLAN_INTERFACE、PORT - 関連 YANG:
sonic-mclag、sonic-portchannel、sonic-port - 関連 CLI:
config mclag
関連リファレンス¶
- YANG:
sonic-mclag - CLI:
config mclag
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- key 形式:
MCLAG_DOMAIN|<domain-id>(1..4095)。 source_ip/peer_ip: keepalive 用 IP(Loopback 推奨)。peer_link:PortChannel0001等の ICL/peer-link。mclag_system_mac: 両 ToR で同一 MAC。
よくある誤設定¶
mclag_system_macを両 ToR で別値にすると LACP system-id が異なり MC-LAG が組まれない。peer_linkを VLAN trunk にしないと peer 間の MAC 同期が動かない。
確認コマンド¶
例外条件・特殊挙動¶
- domain_id が 1-4095 の範囲外: YANG
range "1..4095"/error-message "MCLAG Domain ID out of range"により拒否される。 - keepalive_interval が 1-60 の範囲外 (デフォルト 1): YANG
range "1..60"で制約。 - session_timeout が 1-3600 の範囲外 (デフォルト 30): YANG
range "1..3600"で制約。 - keepalive_interval × 3 > session_timeout → YANG must 制約違反: YANG
must "(keepalive_interval * 3) <= session_timeout"に違反するとバリデーション段階で拒否される。 - 変更差分なし → 重複更新を無視:
!attrBmap && !attrDelBmapの場合"no change - duplicate update"を SWSS_LOG_NOTICE してリターン。iccpd への送信は行われない (mclaglink.cppL812)。 - 存在しないドメインの DEL → SWSS_LOG_WARN + スキップ:
"Domain [%d] deletion - domain not found"を WARN ログして処理を終了。iccpd へは送信されない (mclaglink.cppL836)。 - 既存エントリへの SET 時の差分更新:
source_ip・peer_ip・peer_linkは既存値との差分のみを iccpd へ通知。空文字列で上書きした場合はMCLAG_CFG_OPER_ATTR_DELを発行する (mclaglink.cppL749-L795)。
値依存挙動マトリクス¶
| フィールド | 値 | 挙動 |
|---|---|---|
keepalive_interval |
1 (default) | 1秒ごとに ICCP keepalive 送信 |
keepalive_interval |
N (1..60) | N 秒ごとに送信。session_timeout >= N*3 が YANG must 制約で必須 |
session_timeout |
30 (default) | 30秒 ICCP 応答なしでセッション断 |
session_timeout |
< keepalive_interval*3 | YANG must 制約違反 → バリデーション拒否 |
unique_ip |
enable |
当該 VLAN IF に対してピア ToR 間で異なる IP アドレスを許可 |
if_type (MCLAG_INTERFACE) |
任意文字列 | プレースホルダ。実際の制御動作に影響なし (エントリ存在でメンバー登録) |
enum: unique_ip = enable のみ (無効化はエントリ削除)。