STUDY · NETWORK GUIDE

2-7 EtherChannel

複数の物理リンクを論理的に 1 つに束ねる EtherChannel の仕組み。LACP で 2 リンクを Port-channel に集約する動作を iosvl2 で実機検証する。

1. EtherChannel とは

EtherChannel (イーサチャネル) は、複数の物理リンクをまとめて 1 つの論理ポート (Port-channel) として扱う技術です。Cisco の呼称が EtherChannel、IEEE 標準としては Link Aggregation (IEEE 802.1AX、元は IEEE 802.3ad)、業界一般語としては LAG (Link Aggregation Group) と呼びます。中身はいずれも「複数の物理リンクを束ねて 1 本に見せる」仕組みです。

下図のように、SW1 と SW2 の間を Gi0/1 と Gi0/2 の 2 本のリンクで結び、その 2 本を Port-channel1 (Po1) という 1 つの論理ポートに束ねます。スイッチ自身も、上位プロトコル (STP / トランク / SVI / 経路) も、Po1 という 1 本のリンクとして扱います。物理的にはケーブル 2 本でも、論理的には 1 本のリンクとなります。

EtherChannel 検証トポロジ

EtherChannel の帯域は単純合算で、1 Gbps × 2 本なら 2 Gbps の論理リンクになります。後述の show 出力で BW 2000000 Kbit/sec と表示されるのがその合算結果です。物理リンクが 1 本ダウンしても、Port-channel そのものは生き残り、残ったリンクで通信を継続します。STP は Po1 を 1 ポートとして扱うため、リンクを 2 本に増やしてもループ計算は走らず、Blocking ポートも生まれません。


2. EtherChannel の利点

EtherChannel は、スイッチ間の帯域を 2 倍、4 倍、8 倍と素直に伸ばしたいときに最も一般的に使われる手段です。10 Gbps SFP+ を 4 本束ねて 40 Gbps の論理リンクを作る、といった構成は現代のデータセンタや業務 LAN の集約区間で広く採用されています。回線種別を変えずにそのまま帯域を増やせる点が大きな利点です。

EtherChannel は冗長性の観点でも有利です。STP がループのある物理トポロジから 1 本を Blocking で殺してループを断つ仕組みであり、3 本のリンクで三角形を作ると 1 本は普段使われない予備路に回るのに対し、EtherChannel は最初から「太い 1 本」として束ねるため、全リンクを常時稼働させたまま冗長化できます。1 本切れた場合は残りの本数で稼働を継続し、収束時間は STP の数秒よりさらに短く、ほぼ瞬時に切り替わります。

EtherChannel は STP との相性も良好です。STP は EtherChannel で束ねた複数本のリンクを 1 ポート として認識します。「3 角形のうち 1 辺が Blocking」のような複雑なツリー計算が、束ねた区間では走りません。Root Port と Designated Port の選出も、束ねた論理ポート 1 つに対して行われます。STP の計算量とトポロジ変更時の収束範囲が、束ねたぶんだけ素直に減ります。

EtherChannel の利点は、帯域集約・冗長性・STP の単純化を同時に手に入れられる点に集約されます。


3. 3 つのバンドル方式

EtherChannel の束ね方には 3 種類あります。違いは「両端が動的にネゴシエーションするかどうか」「ネゴシエーションのプロトコルが標準か Cisco 独自か」の 2 軸です。

  • LACP (Link Aggregation Control Protocol, IEEE 802.1AX / 元は 802.3ad): IEEE 標準の動的バンドル方式。両端で LACPDU (LACP Data Unit) という制御フレームを交換し、相手の能力を見ながらバンドルを組み立てる。channel-group N mode activemode passive で有効化。標準準拠のため Cisco とそれ以外のベンダ (HPE / Arista / Juniper / Linux bonding 等) の混在でも動作可能。
  • PAgP (Port Aggregation Protocol): Cisco 独自の動的バンドル方式。LACP より前から存在し、mode desirable または mode auto で有効化。Cisco 同士の閉じた環境専用で、マルチベンダ相互運用性なし。
  • Static (on): プロトコルでのネゴシエーションをせず、両端で mode on を入れた瞬間にバンドルを組む方式。両端の設定が完全に一致していないとフレーム破棄やループの恐れがあり、運用上の事故率が高い。

現代の Cisco 機器では LACP が事実上の標準です。マルチベンダ環境でも動作し、設定不一致時には bundle に組み込まれないという safety net (後述の suspended 状態) も働きます。本ラボも LACP で検証します。PAgP と Static は仕様としては存在しますが、新規設計で選ぶ理由は基本的にありません。


4. LACP の active と passive

LACP には 2 つの動作モードがあります。

  • active: 自分から LACPDU を送り出してバンドル交渉を能動的に開始するモード。
  • passive: 自分からは LACPDU を送らず、相手から来たら応答するモード。

両端の組合せで動作可否が変わります。

SW1 側SW2 側結果
activeactiveOK
activepassiveOK
passivepassiveNG (誰も発議しない)

passive-passive は、両端とも「相手から話しかけられたら応答する」モードのため、誰もきっかけを作りません。LACPDU の交換が始まらず、バンドルは永久に組まれません。新規設計では片側だけでも必ず active にしておくのが原則です。両端 active にしておけば、どちらが先に上がっても確実に交渉が走るため、ラボでも本番でもこれが推奨されます。

なお、LACP (動的バンドル) と Static (mode on) の混在も成立しません。動的側は LACPDU を送り続けるのに対し、Static 側は LACPDU を理解せず無視するためです。両端のモードが一致していることが大前提となります。

本ラボでは SW1 / SW2 とも LACP active で設定しています。


5. CML での検証

検証は CML (Cisco Modeling Labs) 上の iosvl2 で行います。SW1 ↔ SW2 を Gi0/1 と Gi0/2 の 2 本のトランクで結び、その 2 本を Port-channel1 に束ねる構成です。両端の day0 config から EtherChannel 関連部分を抜くと、以下のとおりです (SW1 / SW2 で完全に対称、ホスト名以外同一)。

snippet
interface Port-channel1
 description Bundle to peer
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface GigabitEthernet0/1
 description Bundle member 1
 switchport trunk encapsulation dot1q
 switchport mode trunk
 channel-group 1 mode active
!
interface GigabitEthernet0/2
 description Bundle member 2
 switchport trunk encapsulation dot1q
 switchport mode trunk
 channel-group 1 mode active

設計上、押さえておくべき点は以下の 3 つです。

1 つ目は channel-group 1 mode active が物理ポート Gi0/1 / Gi0/2 の側に入る点です。channel-group N の N が、束ね先の Port-channel 番号を指します。SW1 と SW2 で番号を揃える必要はありません (Po1 同士でなくとも動作可能) が、運用上は対称にしておくのが一般的です。mode active の部分が LACP active を指定しています。

2 つ目は トランク設定が Port-channel1 側に入る ことです。switchport trunk encapsulation dot1qswitchport mode trunk は論理ポート Po1 に設定するもので、物理メンバ Gi0/1 / Gi0/2 にも同じ設定が並んでいるのは、channel-group で束ねた瞬間に整合性チェックが走るためです。両端の物理メンバの設定が一致していないとバンドルが形成されません (後述の落とし穴参照)。

3 つ目は 束ねる各メンバの速度・duplex・trunk allowed vlan などの属性が両端でそろっていること です。これらが食い違うポートはバンドルに加われません。なお両端のメンバ本数が違っても Port-channel 全体が不成立になるわけではなく、相手とマッチしない余剰ポートは standalone(個別リンク)として扱われ、整合する残りのポートでバンドルは稼働します(min-links を設定した場合のみ、最低本数に満たないと Port-channel が up しません)。本ラボでは Gi0/1 と Gi0/2 が両端とも 1 Gbps full duplex で、許可 VLAN も同一 (制限なし = all) のため、整合します。


6. show etherchannel summary — バンドル状態の確認

show etherchannel summary が EtherChannel 検証の中心コマンドです。SW1 で実行した結果は以下のとおりです。

snippet
SW1#show etherchannel summary
Flags:  D - down        P - bundled in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      N - not in use, no aggregation
        f - failed to allocate aggregator

        M - not in use, minimum links not met
        m - not in use, port not aggregated due to minimum links not met
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port

        A - formed by Auto LAG


Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)         LACP      Gi0/1(P)    Gi0/2(P)

下段の集計行 1 行に、このノードのバンドル状況がすべて凝縮されています。読み方は以下のとおり。

  • Group 1: channel-group 番号。day0 で channel-group 1 mode active と書いた 1 がそのまま表示される。
  • Po1(SU): 論理ポート名 Port-channel1 と、その状態フラグ。S は Layer2 (L2 トランク)、U は in use (実際に使用中) の意味。L2 トランクとして組み立てられ、転送に使われている最良の状態。
  • Protocol LACP: バンドル交渉プロトコルが LACP であることを示す。
  • Gi0/1(P) Gi0/2(P): 物理メンバとそのフラグ。P は bundled in port-channel、すなわち「Po1 に束ねられて稼働中」を意味する。

冒頭の Flag 凡例には D / I / s / H / R / S / U / N / P / f / M / m / u / w / d / A と多くの記号が並びますが、健全に動作している状態で現れるのは S / U / P の 3 つだけです。それ以外、特に s (suspended) / I (stand-alone) / w (waiting to be aggregated) が出た場合は、両端の設定不一致や相手不在を疑います。

SW1 のこの結果は、Po1 が L2 トランクとして使用中 (SU)、Gi0/1 と Gi0/2 の両方がバンドルされて稼働中 (P) の状態を示します。LACP の交渉が正常に成立し、2 本の物理リンクが 1 本の論理リンクに束ねられた直後の理想状態です。


7. show etherchannel detail / LACP neighbor

show etherchannel 1 detail では、より詳細なバンドル状態を確認できます。

snippet
SW1#show etherchannel 1 detail
Group state = L2 
Ports: 2   Maxports = 4
Port-channels: 1 Max Port-channels = 4
Protocol:   LACP
Minimum Links: 0


		Ports in the group:
		-------------------
Port: Gi0/1
------------

Port state    = Up Mstr Assoc In-Bndl 
Channel group = 1           Mode = Active          Gcchange = -
Port-channel  = Po1         GC   =   -             Pseudo port-channel = Po1
Port index    = 0           Load = 0x00            Protocol =   LACP

Flags:  S - Device is sending Slow LACPDUs   F - Device is sending fast LACPDUs.
        A - Device is in active mode.        P - Device is in passive mode.

Local information:
                            LACP port     Admin     Oper    Port        Port
Port      Flags   State     Priority      Key       Key     Number      State
Gi0/1     SA      bndl      32768         0x1       0x1     0x2         0x3D  

Partner's information:

                  LACP port                        Admin  Oper   Port    Port
Port      Flags   Priority  Dev ID          Age    key    Key    Number  State
Gi0/1     SA      32768     5254.00e0.8000  21s    0x0    0x1    0x2     0x3D  

Age of the port in the current state: 0d:00h:03m:25s

Port: Gi0/2
------------

Port state    = Up Mstr Assoc In-Bndl 
Channel group = 1           Mode = Active          Gcchange = -
Port-channel  = Po1         GC   =   -             Pseudo port-channel = Po1
Port index    = 0           Load = 0x00            Protocol =   LACP

Flags:  S - Device is sending Slow LACPDUs   F - Device is sending fast LACPDUs.
        A - Device is in active mode.        P - Device is in passive mode.

Local information:
                            LACP port     Admin     Oper    Port        Port
Port      Flags   State     Priority      Key       Key     Number      State
Gi0/2     SA      bndl      32768         0x1       0x1     0x3         0x3D  

Partner's information:

                  LACP port                        Admin  Oper   Port    Port
Port      Flags   Priority  Dev ID          Age    key    Key    Number  State
Gi0/2     SA      32768     5254.00e0.8000  26s    0x0    0x1    0x3     0x3D  

Age of the port in the current state: 0d:00h:03m:23s

注目すべき行を順に確認します。

冒頭 Group state = L2 で、このグループが L2 トランク用であることが明示されます。Ports: 2 Maxports = 4 は、現在 2 ポートが束ねられており、最大 4 ポートまで束ねられる仕様を示します (iosvl2 の制限。実機では 8 ポートまでが一般的)。Protocol: LACP で動作プロトコル、Minimum Links: 0 で「最小何本のリンクが上がっていればバンドルを稼働させるか」のしきい値が 0 (無制限) であることが分かります。

各物理ポートのブロックでは、Port state = Up Mstr Assoc In-BndlIn-Bndl が「バンドルに組み込まれて稼働中」を意味します。Mode = Active が LACP active モードを、Pseudo port-channel = Po1 が束ね先を示します。

Local information の Flags SAState bndl が、先の Gi0/1(P) を裏付けるさらに詳しい情報です。S は Slow LACPDU 送信中 (30 秒間隔、LACP 既定)、A は active モードbndl は bundled を意味します。Partner’s information にも同じ SA が出ているため、対向 (SW2) も同じく active で Slow LACPDU を送信しており、両端で対称に動作していることが確認できます。

LACP の隣接情報だけに絞って見る場合は show lacp neighbor を使用します。

snippet
SW1#show lacp neighbor
Flags:  S - Device is requesting Slow LACPDUs 
        F - Device is requesting Fast LACPDUs
        A - Device is in Active mode       P - Device is in Passive mode     

Channel group 1 neighbors

Partner's information:

                  LACP port                        Admin  Oper   Port    Port
Port      Flags   Priority  Dev ID          Age    key    Key    Number  State
Gi0/1     SA      32768     5254.00e0.8000  21s    0x0    0x1    0x2     0x3D  
Gi0/2     SA      32768     5254.00e0.8000   0s    0x0    0x1    0x3     0x3D

Dev ID 5254.00e0.8000 が対向 SW2 のシステム MAC で、Gi0/1 / Gi0/2 のどちらの隣接も同一 Dev ID を示しています。これは「Gi0/1 の対向と Gi0/2 の対向が同じスイッチである」ことを LACP が認識している状態を意味します。LACP の重要な安全機構であり、別々のスイッチに繋いだ物理リンクを誤って 1 つの Port-channel に束ねようとした場合、Dev ID が一致せずバンドルが形成されません。

LACPDU の送受信カウンタは show lacp counters で確認できます。

snippet
SW1#show lacp counters
             LACPDUs         Marker      Marker Response    LACPDUs
Port       Sent   Recv     Sent   Recv     Sent   Recv      Pkts Err
---------------------------------------------------------------------
Channel group: 1
Gi0/1       18     13       0      0        0      0         0     
Gi0/2       18     14       0      0        0      0         0

Sent / Recv のカウンタが両ポートで増え続けていれば、LACPDU の交換が継続しているということで、バンドルが「死んでいない」確認になります。Slow LACPDU は 30 秒間隔で送信されるため、上の Sent 18 前後という値は、バンドル成立までの初期交渉ぶんと、その後 30 秒ごとに積み上がった分の合計です。カウンタが時間とともに増えていく事実そのものが、交換が続いているサインだと捉えれば十分です。Pkts Err 列が増えていれば LACPDU の不整合が発生しているサインで、設定ミスを疑う指標です。

論理ポートとしての Port-channel1 自体の状態は show interfaces Port-channel1 で確認できます。

snippet
SW1#show interfaces Port-channel1
Port-channel1 is up, line protocol is up (connected) 
  Hardware is EtherChannel, address is 5254.0093.2991 (bia 5254.0093.2991)
  Description: Bundle to peer
  MTU 1500 bytes, BW 2000000 Kbit/sec, DLY 10 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set

Hardware is EtherChannel という表記がそのまま現れ、BW 2000000 Kbit/sec で帯域が 2 Gbps (1 Gbps × 2 本) に合算されていることが分かります。リンクを 3 本に増やせば 3 Gbps、4 本なら 4 Gbps と素直に伸びていきます。物理メンバが 1 本ダウンしても、Port-channel そのものは line protocol is up を維持し、BW だけが残り本数ぶんに減る挙動となります。


8. SW2 側も対称的に動作

LACP は双方向のプロトコルのため、両端で対称的に動作していることを確認する必要があります。SW2 の show etherchannel summary の結果は以下のとおりです。

snippet
SW2#show etherchannel summary
Flags:  D - down        P - bundled in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      N - not in use, no aggregation
        f - failed to allocate aggregator

        M - not in use, minimum links not met
        m - not in use, port not aggregated due to minimum links not met
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port

        A - formed by Auto LAG


Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)         LACP      Gi0/1(P)    Gi0/2(P)

SW2 でも SW1 とまったく同じ Po1(SU) LACP Gi0/1(P) Gi0/2(P) の状態となっています。両端で対称にバンドルが組まれていることがこれで確定します。LACP は「両端の合意が取れて初めて bundle される」プロトコルのため、片側だけが SU で他方が w (waiting) や s (suspended) になることはあっても、両側で SU が揃った時点で双方向の交渉が完全に成立しています。

念のため SW2 の show interfaces Port-channel1 も確認します。

snippet
SW2#show interfaces Port-channel1
Port-channel1 is up, line protocol is up (connected) 
  Hardware is EtherChannel, address is 5254.00fb.dec7 (bia 5254.00fb.dec7)
  Description: Bundle to peer
  MTU 1500 bytes, BW 2000000 Kbit/sec, DLY 10 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set

BW 2000000 Kbit/sec も対称的に 2 Gbps、line protocol is up (connected) で論理ポートが活線です。これで SW1 ↔ SW2 間の 2 本のリンクが、論理的に 1 本 2 Gbps のリンクとして使える状態が両端から確認できました。


9. 片系断 — メンバが 1 本落ちても Po は生き残る

EtherChannel の冗長性の核心は、束ねた物理メンバの 1 本がダウンしても、Port-channel そのものは生き残り、残ったリンクで通信を継続する点にあります。これを SW1 の Gi0/2 を shutdown して実機で確認します。

snippet
SW1(config)#interface GigabitEthernet0/2
SW1(config-if)#shutdown

メンバを 1 本落とした直後の show etherchannel summary は以下のとおりです。

snippet
SW1#show etherchannel summary
Flags:  D - down        P - bundled in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      N - not in use, no aggregation
        f - failed to allocate aggregator

        M - not in use, minimum links not met
        m - not in use, port not aggregated due to minimum links not met
        u - unsuitable for bundling
        w - waiting to be aggregated
        d - default port

        A - formed by Auto LAG


Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)         LACP      Gi0/1(P)    Gi0/2(D)

集計行が Po1(SU) Gi0/1(P) Gi0/2(D) に変化しました。落とした Gi0/2 のフラグが P (bundled) から D (down) に変わっただけで、Po1 自体は SU (Layer2 / in use) を維持し、残った Gi0/1 は P のまま稼働を続けています。バンドルは崩れず、生き残ったメンバだけで転送が継続しているということです。

論理ポートの帯域がどう変化したかは show interfaces Port-channel1 で確認します。

snippet
SW1#show interfaces Port-channel1
Port-channel1 is up, line protocol is up (connected) 
  Hardware is EtherChannel, address is 5254.0072.036a (bia 5254.0072.036a)
  Description: Bundle to peer
  MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set

line protocol is up (connected) は変わらず活線のままで、BW だけが 2000000 Kbit/sec (2 Gbps) から 1000000 Kbit/sec (1 Gbps) へ、残った 1 本ぶんに減っています。「リンクが切れても落ちず、帯域だけが残り本数に減る」という §1・§7 で予告した挙動が、そのまま実機の出力に現れています。

落としたメンバ自身の状態は show interfaces GigabitEthernet0/2administratively down です。

snippet
SW1#show interfaces GigabitEthernet0/2
GigabitEthernet0/2 is administratively down, line protocol is down (disabled) 
  Hardware is iGbE, address is 5254.00fa.4ac2 (bia 5254.00fa.4ac2)
  Description: Bundle member 2
  MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec, 
     reliability 255/255, txload 1/255, rxload 1/255

メンバ単体は administratively down (手動 shut による停止) ですが、それでも Po1 が落ちないのが EtherChannel です。続いて Gi0/2 を戻します。

snippet
SW1(config)#interface GigabitEthernet0/2
SW1(config-if)#no shutdown

no shutdown の後、LACP が再交渉して Gi0/2 がバンドルに復帰します。

snippet
SW1#show etherchannel summary
...
Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)         LACP      Gi0/1(P)    Gi0/2(P)
SW1#show interfaces Port-channel1
Port-channel1 is up, line protocol is up (connected) 
  Hardware is EtherChannel, address is 5254.0072.036a (bia 5254.0072.036a)
  Description: Bundle to peer
  MTU 1500 bytes, BW 2000000 Kbit/sec, DLY 10 usec, 
     reliability 255/255, txload 1/255, rxload 1/255

Gi0/2 のフラグが D から P に戻り、BW1000000 Kbit/sec から 2000000 Kbit/sec (2 Gbps) へ復帰しました。リンクの抜き差しに合わせて、Po1 が落ちることなく帯域だけが本数に応じて伸縮するさまが、shut → no shut の往復で確認できます。実運用でケーブル 1 本が断線・抜去された場合も、これと同じく Po は生き残り、復旧すれば自動で帯域が戻ります。

なお本ラボの検証は shutdown による管理的なリンク停止で、メンバが down になったあと Po がどう振る舞うかを示すものです。物理的なケーブル断線や対向機器の停止では、ダウンを検知するまでの時間や検知の経路(リンクダウン検知か、LACP の応答途絶によるタイムアウトか)が変わるため、実際の切り替わりにかかる時間はこの実測とは別の観点になります。本節で確認できたのは「メンバが 1 本失われても Po は up を保ち、帯域が残り本数に減る」という結果そのものです。


10. 落とし穴・補足

EtherChannel は設定の対称性に敏感です。実運用で踏みやすい落とし穴と、関連する補足を 5 つ挙げます。

  • メンバの属性不一致 → suspended (s): 1 つの Port-channel に束ねる物理メンバどうし、または物理メンバと Port-channel の間で、速度・duplex・トランクモード・native VLAN・許可 VLAN といった属性が食い違うと、その物理ポートは bundle に組み込まれず s (suspended) 状態になります。show etherchannel summaryPo1(SD) Gi0/1(s) のように表示されたら、まず show running-config interface で各メンバと Po1 の設定を突き合わせて差分を探します。ここで注意したいのは、この整合性チェックは自スイッチ内の束ね対象どうしの比較であって、LACP が対向と照合しているわけではない点です。LACP が対向と交換するのは System ID・Port ID・Key・State といった情報で、トランクの許可 VLAN 一覧を対向と突き合わせるプロトコルではありません。そのため、両端で switchport trunk allowed vlan が食い違っていても Port-channel 自体は up のまま組まれてしまい、特定の VLAN だけ疎通しないという事故は起こり得ます。許可 VLAN の対称性は LACP に任せず、両端の show interfaces trunk を人間が突き合わせて確認する必要があります。

  • passive-passive は組まれない: §4 で触れたとおり、両端 passive にすると LACPDU の発議者がいないため bundle されません。show etherchannel summaryw (waiting to be aggregated) が永続して出る場合、対向が passive のまま動いていない可能性を疑います。

  • STP との関係: STP は集約した Port-channel を 1 ポート として扱います。SW1 の show spanning-tree vlan 1 の interface 一覧でこれを実機確認できます。

    snippet
    SW1#show spanning-tree vlan 1
    
    VLAN0001
      Spanning tree enabled protocol ieee
      Root ID    Priority    32769
                 Address     5254.0036.39cf
                 Cost        3
                 Port        65 (Port-channel1)
                 Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
    
      Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
                 Address     5254.00cf.b5f5
                 Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
                 Aging Time  300 sec
    
    Interface           Role Sts Cost      Prio.Nbr Type
    ------------------- ---- --- --------- -------- --------------------------------
    Gi0/0               Desg FWD 4         128.1    P2p
    Po1                 Root FWD 3         128.65   P2p

    Interface 一覧に現れるのは Po1 だけで、物理メンバの Gi0/1 / Gi0/2 は STP からは一切見えません。Po1 は Root ID の Port 65 (Port-channel1) が指すとおり Root Port (Role Root) として 1 ポート分だけ木に組み込まれており、Cost 3 も論理ポート 1 つに対する値です。「3 角形のうち 1 辺が Blocking」という発想ではなく、最初からループにならない太い 1 本のリンクとして木に組み込まれる、というイメージになります。

  • 負荷分散アルゴリズム: バンドル内のどの物理ポートに各フレームを流すかは、ハッシュベースで決まります。show etherchannel load-balance で現在の方式を確認できます。本ラボの iosvl2 で取得した既定値は以下のとおりです。

    snippet
    SW1#show etherchannel load-balance
    EtherChannel Load-Balancing Configuration:
            src-dst-ip
    
    EtherChannel Load-Balancing Addresses Used Per-Protocol:
    Non-IP: Source XOR Destination MAC address
      IPv4: Source XOR Destination IP address
      IPv6: Source XOR Destination IP address

    この iosvl2 の既定は src-dst-ip (送信元 IP と宛先 IP の XOR を取るハッシュ) で、Non-IP フレームに限っては送信元・宛先 MAC の XOR が使われます。既定値は Cisco の機種・IOS バージョンによって src-mac だったり src-dst-ip だったりと差があるため、実際に流れる経路を確かめたいときは推測でなくこのコマンドで実機の設定を確認するのが確実です。方式は port-channel load-balance src-dst-mac 等で変更できます。同じ「フロー」のフレームは同じ物理リンクを通る設計になっているため、フレームの順序逆転は発生しない代わりに、フロー数が少ない環境では特定の 1 本に偏ることがあります。

  • トランク設定は Port-channel 側に: VLAN・トランク・SVI・STP コスト等の論理設定はすべて Port-channel1 に対して行うのが正しい運用です。物理メンバの Gi0/1 / Gi0/2 に対する switchport mode trunk 等の設定は、channel-group で束ねた瞬間に Port-channel 側の設定で上書きされると理解しておくのがよいです。本ラボでは両方に同じ設定を入れてありますが、運用上は Po1 側だけに集約しても動作は同じです。minimum-links を設定すれば「最低 N 本上がっていないとバンドル全体を down にする」帯域保証も可能で、重要な区間ではこのオプションを使うことがあります。


11. 次節

本節では、複数の物理リンクを 1 つの論理ポート Port-channel に束ねる EtherChannel の仕組み、LACP active / passive の役割、show etherchannel summaryPo1(SU) Gi0/1(P) Gi0/2(P) で確認できるバンドル成立状態、両端での対称的な動作、そしてメンバを 1 本落としても Po は生き残り帯域だけが減る片系断の挙動を扱いました。STP に Blocking させてループを断つのとは別の発想で、最初からループにならない「太い 1 本」を作って帯域と冗長性を確保するのが EtherChannel の本質です。

次節 2-8 L2 セキュリティ では、L2 ドメインを守るための代表的な機能をまとめて見ていきましょう。Port Security によるアクセスポート単位の MAC 制限、DHCP Snooping による不正 DHCP サーバの遮断、Dynamic ARP Inspection (DAI) による ARP スプーフィング対策、Storm Control によるブロードキャスト暴走の抑制、といった内容が中心となります。第 2 章 L2 編の最後の節として、ここまでで扱った VLAN / トランク / STP / EtherChannel の上に「攻撃や事故から L2 を守る」レイヤを重ねていきます。