コンテンツにスキップ

PORTCHANNEL テーブル

概要

LACP ベースの Link Aggregation Group (LAG) を定義する。teamd がこのテーブルから設定を読み、Linux teamd 経由で物理ポートを bond する1orchagentPortsOrch / LagOrchSAI 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 構造

PORTCHANNEL|<name>

<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: mtuadmin_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