こんにちは!ネットワークの世界へようこそ。インフラ・ネットワークスペシャリストの私です。
日々のインフラ運用や設計において、「1本のケーブルでは通信のスピードが足りない!もっと太い一本の道にまとめたい!」と思ったことはありませんか?そんなときに大活躍するのが、複数本の物理回線を束ねて一本の太い仮想回線に見せる「ポートチャネル(Port-Channel / Cisco環境ならEtherChannel)」という技術です。
今回は、このポートチャネルの心臓部である「ロードバランス(負荷分散)アルゴリズム」について、難しいパケットの構造やビット計算のお話は少し脇に置いて、身近な例えを交えながら優しく紐解いていきたいと思います。
一歩ずつ、一緒に理解していきましょう!
—
1. ポートチャネルってなぁに?(郵便局の窓口に例えてみよう)
まずは、ポートチャネルがどんな仕組みなのかイメージしてみましょう。
例えば、あなたが大きな郵便局の窓口係だと想像してください。目の前には、大量の手紙を持ったお客さんが列を作っています。もし窓口が「1つ」しかなかったらどうなるでしょうか?当然、大渋滞が起きてしまいますよね。
そこで、同じ窓口を「4つ」並べてオープンすることにしました。これが、4本の物理ケーブルを束ねたポートチャネルの状態です。
ここで一つ、重要な疑問が浮かびます。
「やってきたお客さんを、どうやって4つの窓口に振り分ければいいのだろう?」という問題です。
もし、すべてのお客さんを適当に、あるいは一つの窓口だけに並ばせてしまったら、他の3つの窓口は暇なのに1つの窓口だけが大行列…なんてことになってしまいますよね。効率よく、かつ全員がスムーズに荷物を送れるように「振り分けるルール」が必要になります。このルールこそが、今回主役となる「ロードバランスアルゴリズム」なのです。
—
2. スイッチはどうやって交通整理をしているの?
ネットワークの世界でも全く同じことが起きています。スイッチとスイッチの間を2本や4本のケーブルで結んだとき、すべての通信をランダムにバラバラのケーブルへ流してしまうと、パケットの到着順序が入れ替わってしまい、通信エラーの原因になります。
そのため、スイッチは通信の「目印(特徴)」を見て、「この特徴を持った通信は、何番目のケーブルを通そう!」と決めています。この「目印」を見つけるために使われるのが、ハッシュ計算という仕組みです。
ハッシュ計算と聞くと難しそうですが、要は「手紙の宛先や差出人の名前をゴニョゴニョと計算機に入れて、出てきた数字(結果)に合わせて窓口を決めるルーレット」のようなものだと思ってください。
スイッチが見る「目印」には、いくつかのレベル(レイヤー)があります。
① MACアドレスを見る方法(L2ロードバランス)
ネットワークの「名札」であるMACアドレスを基準に振り分けます。「Aさんからの通信はいつも1本の目のケーブル」といった具合です。同じ端末からの通信であれば常に同じケーブルを通るため、順序が逆転する心配がありません。
② IPアドレスを見る方法(L3ロードバランス)
インターネットの「住所」であるIPアドレスを基準にします。「送信元のIPアドレス」と「宛先のIPアドレス」の組み合わせを見て計算します。サーバーとクライアントの間がたくさんある環境で非常に高い効果を発揮します。
③ ポート番号まで見る方法(L4ロードバランス)
IPアドレスだけでなく、通信の「扉(ポート番号)」まで見ます。例えば、同じパソコンから同じサーバーにアクセスしていても、Webを見ているのか(ポート80/443)、ファイルをやり取りしているのか(ポート21など)で別のケーブルを割り当てることができます。一番細かく、バランスよくばらまける人気の方法です。
—
3. 実務で設定してみよう!Ciscoスイッチでの設定例
それでは、実際の現場でどのようにこのロードバランスを設定するのか、CiscoのIOSを例に覗いてみましょう。
実務では、ネットワークの環境(通信相手がどんな機器か)に合わせて、どの「目印」を使ってロードバランスさせるかをエンジニアが指定してあげます。
以下の設定サンプルを見てみてください。
! --------------------------------------------------
! スイッチの全体的なロードバランス方式の変更
! --------------------------------------------------
! グローバルコンフィグレーションモードに入ります
configure terminal
! 送信元IPアドレスと宛先IPアドレスの組み合わせをハッシュの計算に使うよう指定します
! (※機器のモデルによって指定できるキーワードは異なります)
port-channel load-balance src-dst-ip
! --------------------------------------------------
! ポートチャネル(インターフェース)の作成と物理ポートの所属
! --------------------------------------------------
! 仮想的なまとめ役のインターフェース(ポートチャネル1)を作成します
interface Port-channel 1
description === WEBサーバー群への高速リンク ===
switchport mode trunk
! 実際に物理ケーブルが挿さっているポート(Gi0/1とGi0/2)をグループにまとめます
interface GigabitEthernet 0/1
channel-group 1 mode active
!
interface GigabitEthernet 0/2
channel-group 1 mode active
設定のポイント
port-channel load-balance src-dst-ipというコマンドで、「IPアドレスを基準にバランスさせてね」とスイッチにお願いしています。- 現場のトラフィック特性(ルーターの下にいるのか、直接PCがつながっているのか)に合わせて、
src-dst-macやsrc-dst-portなど最適なアルゴリズムを選択するのがプロの腕の見せ所です。
—
4. 現場でよくあるトラブルと注意点
最後に、現場で新人エンジニアがハマりがちな「ロードバランスの罠」を一つご紹介します。
「4本のケーブルを束ねたのに、なぜか1本のケーブルしかトラフィックが流れていなくて、他の3本が暇そうにしている…!」
これ、実はよくあるトラブルです。原因は何だと思いますか?
答えは「通信しているペア(端末)が1組しかいないから」です。
例えば、テスト用に手元のパソコン1台から、向こう側のサーバー1台に向かって巨大なファイルを1つだけコピーしているとします。ロードバランスのアルゴリズムが「IPアドレス」を基準にしている場合、通信しているIPの組み合わせは「パソコンA → サーバーB」の1パターンしかありません。
ハッシュ計算の結果が常に同じになるため、スイッチは「おっ、この通信はいつも通りケーブル1番だな!」と判断し、すべてのパケットを1本のケーブルだけに集中させてしまうのです。
たくさんのユーザー(たくさんの異なるIPアドレス)が同時にアクセスして初めて、ハッシュ値がばらけて4本のケーブルに綺麗にトラフィックが分散されます。「束ねた本数分だけ、1つの通信が何倍にもスピードアップする魔法の杖ではない」という点に注意してくださいね。
—
まとめ
いかがでしたでしょうか?
ポートチャネルのロードバランスアルゴリズムは、一見すると難解な数式や専用用語のオンパレードに見えますが、要するに「大量の通信を、どの基準でどの道路に振り分けるかの交通整理ルール」に過ぎません。
- どの目印(MAC、IP、ポート)を使ってハッシュを計算するかを選ぶこと
- 通信のペアの数(バリエーション)が少ないと、うまく分散しないことがあること
この2つを頭の片隅に置いておくだけで、ネットワークの設計やトラブルシューティングの見え方がガラリと変わるはずです。
それでは、また次回の深淵なネットワークの世界でお会いしましょう!快適なインフラライフを!
コメント