こんにちは!国内外のネットワーク現場を駆け巡り、パケットの鼓動を聴き続けているインフラアーキテクトのインフラ屋です。
ネットワークの世界に一歩足を踏み入ると、必ず出会う「避けては通れない、そして最高に美しい技術」があります。それが今回ご紹介する「リンクアグリゲーション(Link Aggregation)」です。
実務では、業界標準規格のプロトコル名をとって「LACP(Link Aggregation Control Protocol)」や、Cisco社の用語で「イーサチャネル(EtherChannel)」と呼ばれることも多いですね。
「複数のLANケーブルを束ねて、1本の太い回線にする技術」と言えばシンプルに聞こえますが、その裏側では、ネットワーク機器同士が健気にメッセージを交わし、絶妙なバランスでデータを仕分けています。
「ネットワークの設定って難しそう…」と感じている初学者のあなたも大丈夫です。今回は、難しい数式や複雑なパケット構造を現実世界の「道路」や「郵便配達」に例えながら、一歩ずつ一緒に紐解いていきましょう!
—
1. リンクアグリゲーションとは?「道路を広げてバイパスを作る」イメージ
まずは、なぜこの技術が必要なのか、身近な例で考えてみましょう。
あなたが住む街に、「1車線しかない道路」(1GbpsのLANケーブル)があるとします。
普段は車(データ)も少なくてスイスイ走れますが、通勤ラッシュ(アクセス集中)になると、たちまち大渋滞を起こしてしまいますよね。
「じゃあ、道路を増やそう!」ということで、隣にもう1本、同じ道路を並べて作りました。
【従来の1車線(シングルリンク)】
[スイッチ A] ======(渋滞!)====== [スイッチ B]
【2車線に拡張(リンクアグリゲーション)】
/=================\
[スイッチ A] ======(スイスイ)====== [スイッチ B]
\=================/
しかし、ただ道路を並べただけでは、ドライバー(パケット)はどちらを通ればいいか迷ってしまいますし、ネットワークの世界では「ループ(ぐるぐる同じ場所を回り続けて破綻する現象)」という大事故の原因になってしまいます。
そこで、「この2本の道路は、今日から『1つの大きな2車線道路』として扱います!」と宣言し、道路の管理を一本化する仕組みが必要になります。これこそが、リンクアグリゲーションの役割です。
リンクアグリゲーションの2大メリット
1. 帯域の拡張(スピードアップ):1Gbpsの回線を4本束ねれば、論理的に最大「4Gbps」の太いパイプラインが完成します。
2. 耐障害性の向上(バックアップ):仮に4本のうち1本のケーブルがネズミにかじられて断線しても、残りの3本で通信を維持します。ユーザーは通信が切れたことすら気づきません。
—
2. LACPの心臓部:ActiveモードとPassiveモードの「お見合い」
複数のポートを束ねる際、ただ人間が「束ねろ!」と命令するだけでも動きますが、ケーブルが半抜けになっていたり、お互いのポートの設定がズレていたりすると、通信障害の元になります。
そこで、スイッチ同士が「お互いに確認を取り合いながら、安全に束ねる」ための世界共通ルール(プロトコル)が作られました。それが、IEEE 802.3adで標準化されている「LACP(Link Aggregation Control Protocol)」です。
LACPでは、スイッチ同士がLACPDUと呼ばれる「お便り(制御パケット)」を定期的に送り合って、お互いの状態を確認します。このとき、スイッチのポートに設定する動作モードには、以下の2種類があります。
| モード | 説明 |
| :— | :— |
| Active (アクティブ) | 「ねえ、一緒に束ねようよ!」と、自分から積極的にお便り(LACPDU)を送り続ける肉食系モード。 |
| Passive (パッシブ) | 「相手から言われたら合わせるよ」と、相手からのアプローチを待つ草食系モード。 |
モードの組み合わせと結果
この2つのモードの組み合わせによって、無事にリンクが束ねられるか(チャネルが構成されるか)が決まります。まるでお見合いのようですね。
- Active × Active = 大成功!(両方が積極的に声を掛け合うので、すぐに意気投合します)
- Active × Passive = 大成功!(肉食系がアプローチし、草食系がそれに応じるので、スムーズにまとまります)
- Passive × Passive = 失敗…(お互いに相手の出方を待つため、いつまで経っても会話が始まらず、束ねられません)
実務では、確実性を高めるために、両方のスイッチをActive同士で設定するのが最も一般的で安全なベストプラクティスとされています。
—
3. トラフィック分散(ロードバランス)の真実:なぜパケットはバラバラに流れないのか?
「4Gbpsに束ねたから、1つの大きな4GBのファイルを1秒で送れるぞ!」
…実は、ここに初学者が最も陥りやすい誤解があります。
結論から言うと、「1つの通信(セッション)は、束ねたうちの1本の物理ケーブルしか通らない」という鉄則があります。
「えっ、じゃあ意味ないじゃん!」と思いましたか?
これには、ネットワークの秩序を守るための非常に深い理由があるのです。
パケットの順序を守るための「同じ道を通るルール」
例えば、1通の長い手紙を4つに分割して、4人の郵便配達員(4本のケーブル)に同時に配らせたとします。
ある配達員は近道を通り、ある配達員は赤信号に捕まりました。結果として、相手の家に届いたとき、手紙の「3ページ目」が「1ページ目」より先に届いてしまう「順序逆転(Out-of-Order)」が起きてしまいます。
PCやサーバーは、データの順番が狂うと、それを並べ替えるためにものすごい負荷がかかったり、最悪の場合はデータが壊れたと判断して通信を破棄してしまいます。
これを防ぐため、スイッチは以下のルールでデータを仕分けます。
> 「同じ送信元から、同じ宛先へ向かうデータは、絶対に同じケーブルを通らせる!」
【分散のイメージ】
[ PC A ] ---\ (通信1)
+---> [ スイッチ ] ======( 物理線 1番を通る )======> [ サーバー A ]
[ PC B ] ---/ (通信2) ======( 物理線 2番を通る )======> [ サーバー B ]
どうやって仕分けているの?(ハッシュアルゴリズム)
スイッチは、パケットの「送信元MACアドレス」「宛先MACアドレス」「送信元IPアドレス」「宛先IPアドレス」などの情報をつまみ食いして、「ハッシュ関数」というサイコロにかけます。
このサイコロの出目(計算結果)によって、「あなたはこの1番のポートね」「あなたは2番のポートね」と瞬時に振り分けます。
- MACアドレスで仕分ける場合:同一のPCから同一のサーバーへの通信は、常に同じポートを通るため順番が狂いません。
- IPアドレスやポート番号で仕分ける場合:Webアクセス(ポート
80や443)など、アプリケーションごとの細かい単位でバランスよく分散できます。
実務で「特定のサーバー間だけ通信が異常に遅い!」というトラブルがあった際、調べてみると「すべての通信がハッシュの偏りで1本の物理線に集中して過負荷になっていた」なんていう、泥臭いトラブルが今でも世界中で起きているんですよ。
—
4. 実践!Cisco IOSでのLACP設定例
それでは、実際の現場で使われる設定コマンドを見てみましょう。
今回は、Cisco製のスイッチ(Catalystなど)を例に、2本の物理ポート(GigabitEthernet 0/1 と 0/2)をLACPのActiveモードで束ねて、1つの論理ポート(Port-channel 1)を作る設定を行います。
インフラエンジニアが実際の現場で設定を投入する際、どのような手順を踏んでいるのかをリアルに体感してください。
!
! -------------------------------------------------------------
! 1. 物理インターフェースの設定
! -------------------------------------------------------------
! GigabitEthernet 0/1 と 0/2 をまとめて選択して設定します
interface range GigabitEthernet 0/1 - 2
! 万が一のループを防ぐため、設定中は一旦ポートをシャットダウン(閉塞)します
shutdown
!
! このポートで利用するプロトコルを「LACP」に指定します
channel-protocol lacp
!
! 物理ポートを「グループ1」に所属させ、モードを「Active」に設定します
! これにより、自動的に論理インターフェース「Port-channel 1」が生成されます
channel-group 1 mode active
!
! ポートを再び有効化します
no shutdown
exit
!
! -------------------------------------------------------------
! 2. 生成された論理インターフェース(Port-channel)の設定
! -------------------------------------------------------------
! 束ねられた「1本の太い仮想ポート」としての共通設定を行います
interface Port-channel 1
! この論理リンクをVLANを透過させる「トランクポート」として動作させます
switchport trunk encapsulation dot1q
switchport mode trunk
!
! 現場の流儀:ポートの説明(Description)を入れておくと、後日の作業者が泣いて喜びます
description Link_to_Core_Switch
no shutdown
exit
!
! -------------------------------------------------------------
! 3. ロードバランス(分散)アルゴリズムの設定
! -------------------------------------------------------------
! スイッチ全体で、どのようにトラフィックを仕分けるかを決定します。
! ここでは、最も分散効率が良い「送信元および宛先のIPアドレスとポート番号」の組み合わせを指定します。
port-channel load-balance src-dst-mixed-ip-port
!
設定のポイント
channel-group 1 mode activeを投入した瞬間に、裏側でinterface Port-channel 1が自動生成されます。- 物理ポート(
GigabitEthernet)に設定していたVLANなどの設定は、すべて論理ポート(Port-channel)側に引き継がれます。個別に設定がズレるとLACPが組めなくなるため、必ずinterface rangeコマンドで同時に設定を流し込むのが、現場のプロの鉄則です。
—
5. 現場のトラブルシューティング:片側が「強制ON」だと何が起きる?
LACPを設定する際、最も恐ろしい間違いの一つが「片側をLACP(active)、もう片側をスタティック(onモード)」にしてしまうことです。
onモードとは、「LACPのやり取り(お便り)なんか一切無視して、強制的にポートを束ねる」という力技のモードです。
もしこれをやってしまうと、以下のような大惨事(通信のブラックホール)が発生します。
[ スイッチA:Active ] -----(LACPDUを送信)-----> [ スイッチB:on ] (お便りを無視)
[ スイッチA:Active ] <---(お便りが来ない!)-- [ スイッチB:on ] (強制的に通信開始)
1. スイッチAは「相手からLACPのお返事が来ないな…まだ繋がっていない安全な状態だから、このポートは通信を止めよう(ブロック)」と判断します。
2. スイッチBは「onモードだから強制的に繋がっているぞ!どんどんパケットを送れ!」と、ポートにデータを流し込みます。
3. 結果として、スイッチBから送られたデータは、スイッチAのブロックによってすべてゴミ箱行き(パケットドロップ)になり、片方向の通信が全滅します。
「LACPを組むときは、必ず両端のモードと、対向のポリシー(LACPを喋るかどうか)を一致させること。」
これは、ネットワークエンジニアとして設計書を書く際に、100回は自分に言い聞かせるべき基本中の基本です。
—
まとめ:ネットワークの優しき力持ち「LACP」
一見、地味で目立たないリンクアグリゲーションですが、その裏側では、
- 「Active」と「Passive」による協調性
- 「ハッシュアルゴリズム」によるパケット順序を守るための緻密な仕分け
が休むことなく行われています。私たちがインターネットを快適に、かつ「切れることなく」使えているのは、こういったプロトコルたちが物理と論理の境界線で健気に頑張ってくれているおかげなのです。
初めて構築したLACPが、コマンド show etherchannel summary で U(Up in port-channel)と表示された瞬間の感動は、何年経っても色褪せないものです。
一歩ずつ、コマンドの1行、パケットの1ビットの意味を理解していきましょう。あなたのインフラエンジニアとしての第一歩を、心から応援しています!
コメント