PORTCHANNEL テーブル
概要
LACP ベースの Link Aggregation Group (LAG) を定義する。teamd がこのテーブルから設定を読み、Linux teamd 経由で物理ポートを bond する。orchagent の PortsOrch / LagOrch が SAI LAG オブジェクトを構成する。
データフロー (自動生成)
flowchart LR
CDB[("CONFIG_DB<br/>PORTCHANNEL")]
DM["teammgrd"]
CDB --> DM
APPDB[("APP_DB<br/>APP_LAG_TABLE")]
DM --> APPDB
SYNCD["syncd"]
APPDB --> SYNCD
SAI["SAI<br/>sai_lag_api"]
SYNCD --> SAI
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造
<name> は PortChannel<0-9999> 形式。
フィールド一覧
| フィールド |
型 |
必須 |
デフォルト |
説明 |
name (key) |
string PortChannel\d{1,4} |
✅ |
- |
LAG 名 |
min_links |
uint16 (1..1024) |
- |
- |
Operational up に必要な最小メンバ数 |
mode |
switchport_mode |
- |
routed |
スイッチポートモード |
description |
string (1..255) |
- |
- |
説明 |
mtu |
uint16 (1..9216) |
- |
- |
MTU |
admin_status |
admin_status |
✅ |
- |
管理状態 |
lacp_key |
auto | uint16 (1..65535) |
- |
- |
LACP 集約キー。auto で名前末尾から導出 |
tpid |
tpid_type |
- |
- |
TPID(HW 対応時) |
fallback |
boolean |
- |
- |
LACP fallback |
fast_rate |
boolean |
- |
- |
LACP fast rate |
購読者
teammgrd: PORTCHANNEL を読み、Linux teamd を spawn
orchagent LagOrch: SAI LAG を生成、min_links でアップ判定
intfmgrd: mtu、admin_status 変化を Linux カーネルに反映
関連 CONFIG_DB / YANG / CLI
値依存挙動マトリクス
PORTCHANNEL.admin_status
| 値 |
intfmgrd / LagOrch 挙動 |
up |
LAG を admin up として SAI / Linux netdev に反映 |
down |
LAG を admin down に設定 |
PORTCHANNEL.mode (switchport_mode)
| 値 |
挙動 |
routed (デフォルト) |
L3 ルーテッド LAG として扱う |
access |
L2 access LAG (single VLAN) |
trunk |
L2 trunk LAG (複数 VLAN) |
PORTCHANNEL.lacp_key
| 値 |
teamd / LagOrch 挙動 |
auto |
PortChannel 名末尾の数字から LACP key を自動生成 |
1..65535 (uint16) |
指定値を LACP key として使用 |
PORTCHANNEL.fallback
| 値 |
teamd 挙動 |
true |
LACP 対向未応答時に fallback (単独メンバで up) |
false / 未設定 |
LACP ネゴシエーション完了まで LAG が down のまま |
PORTCHANNEL.fast_rate
| 値 |
LACP 挙動 |
true |
LACP PDU を 1 秒間隔 (fast) で送受信 |
false / 未設定 |
30 秒間隔 (slow) で送受信 |
PORTCHANNEL.tpid
| 値 |
SAI 挙動 |
0x8100 |
802.1Q TPID |
0x9100 / 0x9200 / 0x88a8 / 0x88A8 |
Q-in-Q / 802.1ad (HW 対応必須) |
| 不正 / 非対応値 |
Failed to set TPID 0x%x to LAG pid: SWSS_LOG_ERROR |
min_links は uint16 (1..1024)。メンバ数以上に設定すると LAG が常時 down。
例外条件・特殊挙動
YANG スキーマ検証
name pattern: PortChannel[0-9]{1,4} — 名前形式不正は reject。
admin_status は mandatory。min_links range: 1..1024。mtu range: 1..9216。
lacp_key: auto または uint16 (1..65535)。
tpid: stypes:tpid_type (0x8100 / 0x9100 / 0x9200 / 0x88a8 / 0x88A8) のみ許容。
consumer (portsorch / teammgr) 例外動作
- LAG ID 払い出し失敗:
Failed to allocate unique LAG id for local lag %s rv:%d → SWSS_LOG_ERROR。
- SAI LAG create 失敗:
Failed to create LAG %s lid: → SWSS_LOG_ERROR。
- 非空 LAG の DEL:
Failed to remove non-empty LAG %s → SWSS_LOG_ERROR。
- VLAN 所属 LAG の DEL:
Failed to remove LAG %s, it is still in VLAN → SWSS_LOG_ERROR。
ref_count > 0 の LAG DEL: Failed to remove ref count %d LAG %s → SWSS_LOG_ERROR。
- TPID 設定失敗:
Failed to set TPID 0x%x to LAG pid: → SWSS_LOG_ERROR。
- teamd SIGTERM 送信失敗:
Failed to send SIGTERM to port channel %s pid %d → SWSS_LOG_ERROR。
関連リファレンス
引用元
関連 Topics
運用ヒント
典型値
- key 形式:
PORTCHANNEL|PortChannel0001。
admin_status: up。
mtu: 9100。
min_links: 1〜2(メンバ 4 本構成で 2 等)。
lacp_key: auto または明示数値。
よくある誤設定
min_links をメンバ総数以上にすると LAG が常時 down。
fallback: true を未設定で対向が LACP 未対応だと PortChannel が永遠に down。
- メンバ間で
speed/mtu を揃えないと teamd が LAG を組まない。
確認コマンド
sonic-db-cli CONFIG_DB hgetall 'PORTCHANNEL|PortChannel0001'
show interfaces portchannel
teamdctl PortChannel0001 state