EtherChannelとは何か
EtherChannelは、複数の物理リンクをまとめて1つの論理的なリンクとして扱う技術です。一般的には「リンクアグリゲーション」と呼ばれますが、Cisco機器ではEtherChannelという名前で実装されています。
例えば、1Gbpsのリンクを2本まとめれば2Gbpsの帯域幅として利用でき、10Gbpsリンクを2本まとめれば20Gbpsに拡張できます。さらに、スパニングツリーにおいても1本のリンクとして認識されるため、ループ防止のために一方のリンクがブロックされることもなく、冗長構成を取りながら帯域を有効活用できます。もし1本のリンクが故障しても、残りのリンクで通信が継続されるため、耐障害性も向上します。
機種によっては2本だけでなく、4本や8本といったより多くのリンクを束ねることも可能です。FastEthernet、GigabitEthernet、10GigabitEthernetの各インターフェースで利用できます。
L2 EtherChannel と L3 EtherChannel
EtherChannelには2つの種類があります。
| 種類 | スイッチポート設定 | 説明 |
|---|---|---|
| L2 EtherChannel | switchport | 複数のスイッチポートをまとめて1つの論理的なL2ポートとする |
| L3 EtherChannel | no switchport | 複数のルーテッドポートをまとめて1つのL3インターフェースとする |
L3 EtherChannelを使用すると、ルーティングプロトコルも1つのリンクとして扱ってくれるため、EtherChannelの中の1本に障害があってもルーティングの再収束は不要です。
Port-Channelとは
Port-Channelとは、EtherChannelで束ねられた論理ポートのことです。設定を行うときには、物理ポートごとではなくPort-Channelに対して設定を適用します。例えば、VLANやトランクの設定はPort-Channelインターフェースにまとめて行います。
なお、EtherChannelに参加する物理ポートはすべて同じ設定(スピード、デュプレックス、VLAN番号、トランク/アクセスの種別など)でなければなりません。設定が揃っていないとEtherChannelは正しく形成されません。
EtherChannelの形成方法
EtherChannelは、スタティックまたはダイナミックの2つの方法で形成できます。
| 方法 | 説明 |
|---|---|
| スタティック | ネゴシエーションを行わず、強制的にEtherChannelを作成する |
| ダイナミック | PAgPやLACPといったプロトコルを使い、ネゴシエーションでEtherChannelを形成する |
ダイナミック方式を利用すると、プロトコルを通じて自動的にEtherChannelを生成・維持できます。ただし、両端のポートで同じプロトコルを使用する必要があります。
- PAgP(Cisco独自、最大8ポートまで)
- LACP(IEEE 802.3ad標準、最大16ポート。ただし同時に利用できるのは8ポートで残りはスタンバイ)
Cisco同士ならPAgPでもよいですが、マルチベンダー環境やサーバ接続では標準のLACPが一般的に使われます。
PAgPのモード
PAgPには2つの動作モードがあります。
| モード | 説明 |
|---|---|
| auto | 受信したPAgPに応答はするが、自分からはネゴシエーションを開始しない |
| desirable | 積極的にPAgPを送信し、ネゴシエーションを開始する |
EtherChannelを形成するには、両方が「desirable」、もしくは一方が「desirable」でもう一方が「auto」である必要があります。両方が「auto」の場合は形成されません。Ciscoではdesirableモードの利用を推奨しています。
LACPのモード
LACPも同様に2つのモードがあります。
| モード | 説明 |
|---|---|
| passive | 受信したLACPに応答はするが、自分からはネゴシエーションを開始しない |
| active | 積極的にLACPを送信し、ネゴシエーションを開始する |
EtherChannelを形成するには、両方が「active」、もしくは一方が「active」で他方が「passive」である必要があります。両方が「passive」の場合は形成されません。
LACPにおけるアクティブポートとスタンバイポート
LACPでは最大16本の物理リンクをまとめられますが、実際にアクティブに使えるのは8本までです。残りのポートはスタンバイに回されます。どのポートがアクティブ/スタンバイになるかは、システムプライオリティの値とポート番号に基づいて決定されます。プライオリティの小さいスイッチが優先され、そこから最大8本がアクティブポートとして選ばれます。
EtherChannelのロードバランシングの仕組み
EtherChannelでは、複数の物理リンクにまたがってトラフィックを分散(ロードバランシング)することができます。これにより、帯域の有効活用とネットワーク全体のパフォーマンス向上が期待できます。
Catalystスイッチでは、さまざまな条件に基づいてどのリンクを利用するかを決定する仕組みが用意されています。これは「ハッシュ演算」と呼ばれる方法で行われ、フレームやパケットの特定フィールドを参照してリンクを選択します。
ロードバランス方式の種類
代表的なロードバランス方式は以下の通りです。
| 転送方式 | コマンド | 説明 |
|---|---|---|
| 送信元MACアドレス | src-mac | 送信元MACアドレスをもとに分散 |
| 宛先MACアドレス | dst-mac | 宛先MACアドレスをもとに分散 |
| 送信元IPアドレス | src-ip | 送信元IPアドレスをもとに分散 |
| 宛先IPアドレス | dst-ip | 宛先IPアドレスをもとに分散 |
| 送信元+宛先MACアドレス | src-dst-mac | 送信元と宛先MACアドレスの組み合わせで分散 |
| 送信元+宛先IPアドレス | src-dst-ip | 送信元と宛先IPアドレスの組み合わせで分散 |
| 送信元ポート番号 | src-port | 送信元ポート番号に基づき分散 |
| 宛先ポート番号 | dst-port | 宛先ポート番号に基づき分散 |
| 送信元+宛先ポート番号 | src-dst-port | 送信元と宛先ポート番号の組み合わせで分散 |
これらの方式を切り替えることで、通信の特性に応じた効率的なロードバランスを実現できます。
デフォルト値の違い
Catalystスイッチの種類によって、デフォルトで採用される方式が異なります。
- ボックス型の1RUスイッチ
デフォルトは 送信元MACアドレスベース(src-mac) - 大型シャーシ型スイッチ
デフォルトは 送信元+宛先IPアドレスベース(src-dst-ip)
この違いは試験で狙われやすい部分なので要チェックです。
ロードバランス方式選定の注意点
ロードバランス方式は基本的にデフォルトのままで問題ありませんが、宛先(dst-)だけに依存した方式を選ぶと、効率的に分散されない場合があります。
例えば、複数の端末が同じサーバにアクセスする環境では、すべての通信の宛先MACアドレスや宛先IPアドレスが同じになります。その場合、ロードバランシングがうまく機能せず、特定のリンクに負荷が集中してしまいます。
このようなケースでは、「src-dst-ip」や「src-dst-mac」など、送信元と宛先の組み合わせを利用した方式が有効です。
ボックス型CatalystスイッチのEtherChannelにおけるデフォルト値
| 機能 | デフォルト値 |
|---|---|
| ロードバランス方式 | 送信元MACアドレスに基づく分散(src-mac) |
| ポートチャネル論理インターフェース | 未定義 |
| PAgPモード | デフォルトなし |
| PAgP学習方式 | すべてのポートで集約ポートラーニング |
| PAgPプライオリティ | すべてのポートで128 |
| LACPモード | デフォルトなし |
| LACP学習方式 | すべてのポートで集約ポートラーニング |
| LACPポートプライオリティ | すべてのポートで32768 |
| LACPシステムプライオリティ | 32768 |
| LACPシステムID | システムプライオリティ+スイッチのMACアドレス |
L2 EtherChannelの設定方法
L2 EtherChannelを構築するには、まとめたい物理ポートにchannel-groupコマンドを設定します。この設定を行うと、自動的に論理ポート(Port-Channelインターフェース)が生成され、そこに対して追加の設定を行えるようになります。
基本コマンド構文
(config)# interface interface-id
(config-if)# channel-group group-number mode [ auto | desirable | on | active | passive ]
| 引数 | 説明 |
|---|---|
| group-number | 1~48の範囲で指定するポートチャネル番号 |
| auto | PAgPを使った受け身のネゴシエーション。対向は「desirable」である必要あり |
| desirable | PAgPを使った積極的なネゴシエーション。対向が「auto」または「desirable」で動作 |
| on | ネゴシエーションを行わず、強制的にチャネル化(スタティック設定) |
| passive | LACPを使った受け身のネゴシエーション。対向は「active」である必要あり |
| active | LACPを使った積極的なネゴシエーション。対向が「active」または「passive」で動作 |
設定例
スタティックEtherChannel
(config)# interface range gigabitethernet 1/0/1 -2
(config-if-range)# switchport trunk encapsulation dot1q
(config-if-range)# switchport mode trunk
(config-if-range)# channel-group 1 mode on
LACPを利用したEtherChannel
(config)# interface range gigabitethernet 1/0/1 -2
(config-if-range)# switchport trunk encapsulation dot1q
(config-if-range)# switchport mode trunk
(config-if-range)# channel-group 1 mode active
PAgPを利用したEtherChannel
(config)# interface range gigabitethernet 1/0/1 -2
(config-if-range)# switchport trunk encapsulation dot1q
(config-if-range)# switchport mode trunk
(config-if-range)# channel-group 1 mode desirable non-silent
PAgPでは「non-silent」オプションを指定するのが推奨です。これは、対向機器がPAgPに対応していることを前提に動作するための設定です。もし「silent」のままでは、対向がPAgP非対応であってもチャネル形成を試みてしまう場合があるためです。
実際のネットワークでは、スイッチ間のEtherChannelはスタティック設定(mode on)が多く、サーバ接続ではLACP(mode active)がよく使われます。
ロードバランス設定
EtherChannelでのトラフィック分散方式は、以下のコマンドで指定できます。
(config)# port-channel load-balance { dst-ip | dst-mac | src-dst-ip | src-dst-mac | src-ip | src-mac }
ボックス型Catalystスイッチではデフォルトで「src-mac」が選択されます。基本的にはこのままで問題ありませんが、通信要件によっては宛先やIPベースの方式に変更することもあります。
ステータス確認コマンド
| コマンド | 説明 |
|---|---|
show etherchannel summary | どの物理ポートがPort-Channelに含まれているかを確認 |
show etherchannel detail | summaryより詳細な状態を確認 |
show etherchannel load-balance | 現在のロードバランス方式を確認 |
show lacp neighbor | LACPで形成したEtherChannelの隣接スイッチ情報を確認 |
show pagp neighbor | PAgPで形成したEtherChannelの隣接スイッチ情報を確認 |
L3 EtherChannel の基本
レイヤ3 EtherChannel とは、複数の物理インターフェースを束ねて1つの論理インターフェース(Port-Channel)として扱い、その論理インターフェースをルーティング可能なポートとして利用する仕組みです。通常のスイッチポート(L2ポート)とは異なり、ルーティングが可能な「ルーテッドポート」として動作させる必要があります。そのため、物理ポートと論理インターフェースの両方で L2 機能を無効化することがポイントです。試験でもよく問われる「no switchport」の意味をしっかり理解しておきましょう。
L3 EtherChannel の構成手順
最初にルーティング機能を有効化し、その後物理ポートをチャネルグループにまとめます。次に Port-Channel インターフェースに IP アドレスを割り当て、最後に有効化すれば完了です。
(config)# ip routing
(config)# interface interface-id
(config-if)# no switchport
(config-if)# channel-group group-number mode [ auto | desirable | on | active | passive ]
(config)# interface port-channel port-channel-id
(config-if)# no switchport
(config-if)# ip address アドレス サブネットマスク
(config-if)# no shutdown
ここで「ip routing」を忘れると、ルーティング機能が働かず、単なるポートの束ねにしかなりません。CCNA 試験では「設定したのに疎通しない」原因としてよく出題されるので要注意です。
channel-group の動作モード
EtherChannel を構成する際には、動作モードの理解が重要です。代表的なモードは以下の通りです。
| モード | 特徴 | 対向ポートの条件 |
|---|---|---|
| auto | PAgP のパッシブ動作。自分からは積極的に交渉しない | 相手が desirable |
| desirable | PAgP のアクティブ動作。自分から交渉を開始 | 相手が auto または desirable |
| on | 協調プロトコルを使わず、強制的にチャネル化 | 相手も on |
| passive | LACP のパッシブ動作。交渉を受ける側 | 相手が active |
| active | LACP のアクティブ動作。自分から交渉を開始 | 相手が active または passive |
設定例
例えば 2 台のスイッチ間で 2 本のリンクを L3 EtherChannel としてまとめる場合の設定例を見てみます。
SWA の設定
Catalyst(config)# ip routing
Catalyst(config)# interface range gigabitethernet1/0/23 - 24
Catalyst(config-if-range)# no switchport
Catalyst(config-if-range)# channel-group 10 mode on
Catalyst(config)# interface port-channel 10
Catalyst(config-if)# no switchport
Catalyst(config-if)# ip address 172.16.1.1 255.255.255.0
Catalyst(config-if)# no shutdown
SWB の設定
Catalyst(config)# ip routing
Catalyst(config)# interface range gigabitethernet1/0/23 - 24
Catalyst(config-if-range)# no switchport
Catalyst(config-if-range)# channel-group 10 mode on
Catalyst(config)# interface port-channel 10
Catalyst(config-if)# no switchport
Catalyst(config-if)# ip address 172.16.1.2 255.255.255.0
Catalyst(config-if)# no shutdown
ここで「no switchport」が両方の設定で繰り返されている点に注目してください。これは物理ポートも Port-Channel も必ずルーテッドポート化する必要があるからです。
ロードバランスの仕組み
EtherChannel では複数の物理リンクを並列に使うため、どのリンクを使うかを決めるロードバランス方式が存在します。デフォルトでは「送信元 MAC アドレス(src-mac)」に基づいて振り分けられます。
もし要件に応じて変更したい場合は、次のように設定します。
(config)# port-channel load-balance dst-ip | dst-mac | src-dst-ip | src-dst-mac | src-ip | src-mac
現在の設定を確認する場合は次のコマンドです。
# show etherchannel load-balance
ステータス確認コマンド
EtherChannel の動作確認に役立つコマンドも試験頻出です。
| コマンド | 内容 |
|---|---|
| show etherchannel summary | どの物理ポートがどの Port-Channel に含まれているか確認 |
| show etherchannel detail | summary より詳細な情報を確認 |
| show etherchannel load-balance | 現在のロードバランス方式を確認 |
| show lacp neighbor | LACP で形成された EtherChannel の隣接情報を確認 |
| show pagp neighbor | PAgP で形成された EtherChannel の隣接情報を確認 |
特に「summary コマンドで ‘P’(port-channel member)や ‘I’(standalone)などの状態を見分ける」点が CCNA 試験では狙われやすいポイントです。
LACP スタンバイポートの仕組み
EtherChannel を形成する際、PAgP は最大 8 本のリンクしか束ねられませんが、LACP では最大 16 本の物理ポートを 1 つの Port-Channel にまとめることが可能です。ただし、実際に同時利用できるのは 8 ポートまでで、残りは「スタンバイポート」として待機します。障害が発生した場合やアクティブポートが不足した場合に、このスタンバイポートが自動的に繰り上がって利用される仕組みです。
では、どのポートがアクティブになり、どのポートがスタンバイになるのか。ここで登場するのが LACP プライオリティ です。LACP プライオリティは以下の 4 項目から決定され、数値が小さい方が優先されます。
- LACP システムプライオリティ
- システム ID(スイッチの MAC アドレス)
- LACP ポートプライオリティ
- ポート番号
決定の流れは次の通りです。
- Step1:システムプライオリティとシステム ID を比較し、優先度が高いスイッチが選ばれる
- Step2:選ばれたスイッチの中で、ポートプライオリティとポート番号に基づきアクティブ/スタンバイを決定
ここで重要なのは、Step1 で負けたスイッチ側のポートは Step2 に進めず、その時点で優先順位から外れる点です。
LACP システムプライオリティの設定
システム全体としての優先度を決めるのが LACP システムプライオリティ です。値は 0 ~ 65535 の範囲で指定でき、デフォルトは 32768 です。小さい値を設定するほど、そのスイッチが LACP の優先候補になります。
(config)# lacp system-priority priority
例として、あるスイッチを優先的にアクティブにしたい場合、priority を 100 など小さい値に設定します。
LACP ポートプライオリティの設定
同じスイッチ内で複数のポートが候補になった場合に使われるのが LACP ポートプライオリティ です。これも 0 ~ 65535 の範囲で指定でき、デフォルトは 32768 です。値が小さいポートほど優先的にアクティブに選ばれます。
(config)# interface interface-id
(config-if)# lacp port-priority priority
たとえば 2 本のポートを同時に接続している場合、priority 100 を設定した方がアクティブに選ばれ、もう片方がスタンバイになります。
試験では「あるポートをスタンバイに回したい場合、どの設定を変更するか」といった形で出題されることがあります。
PAgP の学習方式(参考)
LACP とは別に、PAgP を使う場合には「MAC アドレスをどこで学習するか」が問題になります。PAgP では以下の 2 種類の学習方式があります。
- 物理ラーナー:各物理ポート単位で MAC アドレスを学習する方式
- 集約ラーナー:Port-Channel 論理インターフェースで MAC アドレスを学習する方式
現行のスイッチは集約ラーナーがデフォルトです。しかし、古い Catalyst 機種と接続する場合、相手が物理ラーナーの可能性があり、その場合はこちらも物理ラーナーに設定を揃える必要があります。
設定例は以下の通りです。
(config)# interface interface-id
(config-if)# pagp learn-method physical-port
また、PAgP で使用するポートの優先度も指定可能です。値の範囲は 0 ~ 255、デフォルトは 128 です。値が大きいほど転送で選ばれる確率が高くなります。
(config-if)# pagp port-priority priority
ただし、この設定を使うのは特殊なケースであり、通常はデフォルトのままで問題ありません。