EtherChannelのロードバランス設定の最適値

ネットワーク

EtherChannelは複数のリンクを1つのリンクにまとめる事ができる機能だが、実際のパケットは物理的なリンクのどれかを通っている。

誤った振り分け指定だと帯域の使用率に無駄が出てしまうので適切に指定したい。

 

結論から

振り分け指定はこの組み合わせ

  • 送信元IPアドレス
  • 送信先IPアドレス

EtherChannelのリンク本数はこの中のいずれか

  • 2本
  • 4本
  • 8本

この条件ならリンクの振り分けが均等に近くなる。

デフォルトの設定

Catalyst 9300の場合は送信元MACアドレスを見て振り分けを判断している。

だが、このままだと適切な振り分けがされない場合がある。

PCが1台接続されていてEtherChannelにしている2本のリンクがある。

 

PCはファイルサーバへ大量のファイルをアップロードし始める。

この時上のリンクを使ったとする。

 

アップロード中にインターネットへ接続しようとするがファイルの転送と同じリンクを使うのでもう一つのリンクが未使用でも振り分けされない。

これは送信元MACアドレスは変わらないので最初に振り分けられたリンクを常に使い続けてしまうからだ。

デフォルトから変えてみる

ここで振り分け指定を送信先MACアドレスにすればファイルサーバとインターネットのMACアドレスは違うのでそれぞれ2つのリンクが使用される。

 

このパターンでは送信先MACアドレスにすることでリンクの振り分けが適切になるが、複数のPCがインターネットやファイルサーバを同時に使う場合は同じリンクを使う事になるので通信パターンに応じた振り分けを行う必要がある事がわかる。

 

おすすめの設定

この設定にしておけば良い

  • 送信元IPアドレス
  • 送信先IPアドレス

この2つを振り分け条件にしておけばパターンの多様性が増えるのでリンク被りしにくくなる。

少なくとも1つだけの条件にしないようにする必要があるが、そもそも選択肢が少ないので多く考える必要はない。

今現役で使われているCatalystの選択肢。

  • 送信元MACアドレス
  • 送信先MACアドレス
  • 送信元MACアドレス/送信先MACアドレス
  • 送信元IPアドレス
  • 送信先IPアドレス
  • 送信元IPアドレス/送信先IPアドレス
  • 送信元ポート
  • 送信先ポート
  • 送信元ポート/送信先ポート
  • 送信元IPアドレス/送信元ポート
  • 送信先IPアドレス/送信先ポート
  • 送信元IPアドレス/送信元ポート/送信先IPアドレス/送信先ポート

他の設定は?

Catalyst 6500や9300などの機種では送信先ポートを追加した4つの振り分け条件も指定できる。

  • 送信元IPアドレス
  • 送信先IPアドレス
  • 送信元ポート
  • 送信先ポート

だが、シスコ公式で設定時の再計算で数秒から数分間転送が停止する記述があったので既存環境での変更はしない方がいい。

構築時に設定しておくなら問題はない。

Catalyst 9300には複数の条件を自由に選択できる拡張ロードバランシング方式が実装されている。

ここまでに説明した組み合わせ以上の条件を指定でき振り分けパターンとしては増えるので繊細な振り分け調整を行いたい場合に活用できそうだけど、あまり気にしなくていいと思う。

リンクの本数もバランスに影響する

上で説明した振り分けは、指定された条件から0〜7の数字を導き出して数字に合ったリンクを選択するという仕組みになっている。

実際はシスコ独自のハッシュ値で詳細は公開されていないが、送信元先MACの場合イメージとしてはこんな感じになる。

  • 送信元MACアドレスAと送信先MACアドレスBは0
  • 送信元MACアドレスAと送信先MACアドレスCは1
  • 送信元MACアドレスAと送信先MACアドレスDは2
  • 送信元MACアドレスAと送信先MACアドレスEは3
  • 送信元MACアドレスAと送信先MACアドレスFは4
  • 送信元MACアドレスAと送信先MACアドレスGは5
  • 送信元MACアドレスAと送信先MACアドレスHは6
  • 送信元MACアドレスAと送信先MACアドレスIは7
  • 送信元MACアドレスAと送信先MACアドレスJは0

そして0〜7の数字をリンクの数に割り当てるが、リンク毎に割り当てられる種類にズレが出てくる。

2本の場合

  • 1本目は0〜3(4種類)
  • 2本目は4〜7(4種類)

 

3本の場合

  • 1本目は0〜2(種類)
  • 2本目は3〜5(種類)
  • 3本目は6〜7(種類)

 

4本の場合

  • 1本目は0〜1(2種類)
  • 2本目は2〜3(2種類)
  • 3本目は4〜5(2種類)
  • 4本目は6〜7(2種類)

 

5本の場合

  • 1本目は0〜1(種類)
  • 2本目は2〜3(種類)
  • 3本目は4〜5(種類)
  • 4本目は6(種類)
  • 5本目は7(種類)

 

6本の場合

  • 1本目は0〜1(種類)
  • 2本目は2〜3(種類)
  • 3本目は4(種類)
  • 4本目は5(種類)
  • 5本目は6(種類)
  • 6本目は7(種類)

 

7本の場合

  • 1本目は0〜1(種類)
  • 2本目は2(種類)
  • 3本目は3(種類)
  • 4本目は4(種類)
  • 5本目は5(種類)
  • 6本目は6(種類)
  • 7本目は7(種類)

 

8本の場合

  • 1本目は0(1種類)
  • 2本目は1(1種類)
  • 3本目は2(1種類)
  • 4本目は3(1種類)
  • 5本目は4(1種類)
  • 6本目は5(1種類)
  • 7本目は6(1種類)
  • 8本目は7(1種類)

長くなったが大切な事なので全て書いた。

これはリンクが2本、4本、8本の場合は種類が同じなので均等に振り分けられるが、それ以外はバラ付きが必ず出るような仕様になっている事を表している。

5本の場合は2種類を受け付ける3本と1種類しか受け付けない2本があるので適切な振り分け設定をしていてもトラフィックに2倍の差が出る事になる。

 

0〜7じゃなくて0〜63くらいにすれば偏りが減るのに(*´·ω·)(·ω·`*)ネー

Catalyst 9300以降の世代のロードバランスアルゴリズムについての文書が見当たらなかったのでもしかしたら直っているかもしれない。

コメント

タイトルとURLをコピーしました