メインコンテンツまでスキップ

NetApp_Insight_2020.png 

vif でのロードバランシングの仕組み

Views:
78
Visibility:
Public
Votes:
0
Category:
data-ontap-7
Specialty:
network
Last Updated:

すべてのとおり  

に適用されます

Data ONTAP 7
Data ONTAP 8

回答

vif/ifgrp タイプの概要

ネットアップのトランキングの実装を VIF と呼びます。この背景にある理論は、設定する VIF のタイプによって異なります。次の 3 種類の vif ( Data ONTAP 8 以降では ifgrps と呼ばれます)があります。

  • シングルモード:ロードバランシングなし、厳密なフェイルオーバー
  • マルチモード:ロードバランシング
  • LACP :低レベルの接続性検証を備えたロードバランシング
標準シングルモード Vif/ifgrp

1 つのインターフェイスで物理リンクが切断されても、ネットワークセッションは維持され、 VIF の別のインターフェイスにフェイルオーバーされます( vif では最大 16 個のインターフェイスを使用できます)。
これは、スイッチ構成がないため、最もシンプルな VIF 実装です。

注:特定のスイッチ設定が不要なため、シングル vif を異なるスイッチに分散させることができます。ただし、マルチ VIF のすべてのポートを 1 つのスイッチに接続する必要があります。このサポートはスイッチによって異なりますが、ほとんどのスイッチではマルチ vif をサポートしていないため、異なるスイッチに接続できません。

標準マルチモード Vif/ifgrp

マルチモード Vif/ifgrp を使用すると、すべてのメンバーインターフェイスをトラフィックに使用できます。  このモードでは、フェイルオーバーが可能であり、複数の接続ホストまたは TCP ストリームで使用できるアグリゲート帯域幅を増やすことができます。

ただし、一般的な誤解の 1 つは、使用可能なすべての「ロードバランシング」アルゴリズムによって、 1 つのホストで合計集約された帯域幅を利用できることです。  

つまり、 1 Gbps のメンバーインターフェイスを 4 つ含むマルチモードまたは LACP Vif/ifgrp を作成した場合、 4 Gbps を利用できるホスト( 1 Gbps のネットワークインターフェイスカードが搭載されている可能性がある)と想定されることがあります。 4 メンバーの Vif/ifgrp と通信する場合、最大 4 Gbps を実現できます。  実際には、各ホスト(「 -b port 」の場合は TCP/UDP ストリーム)は 1 つのメンバーインターフェイスだけを利用できます。  この例では、特定のホストまたは TCP/UDP ストリームで使用可能な最大帯域幅は 1 Gbps です。  ただし、別のホストまたはストリームを使用すると、別のメンバーインターフェイスを使用できるため、ポートの使用量と競合が軽減されます。

したがって、 vif/ifgrp では、複数のホストまたはストリームがこのストレージコントローラに対して 1 秒あたり最大 4 Gbps の速度で送受信できますが、各ホストまたはストリームでは 1 Gbps しか達成できません。

この動作はネットアップ独自のものではなく、現在のスイッチで使用されている 802.3ad リンクアグリゲーションの基本原則です。

LACP Vif/ifgrp

LACP Vifs/ifgrp は、マルチモード Vifs/ifgrp と機能的に同じですが、 1 つの例外があります。  LACP は、 Link Aggregation Control Protocol ( LACP )を使用して 802.3ad リンク障害検出を追加します。  LACP は負荷分散の機能を変更することはありません。 Vif/ifgrp に障害検出レイヤを追加するだけです

LACP を使用すると、 vif/ifrgrp の物理インターフェイスメンバー(物理ポートなど)は、直接接続されているスイッチポートと低レベルのプロトコルデータユニット( PDU )を交換できることを検証します。  これらの PDU を交換できない場合、メンバーインターフェイスは vif/ifgrp への参加から削除されます。  LACP は、物理インターフェイス(物理ポート)とスイッチのポート間でのみ PDU を交換できるため、第 1 レベルの Vif/ifgrp でのみ設定できます。

ロードバランシングアルゴリズム

マルチモードおよび LACP Vifs/ifgrp には、次の 4 種類のロードバランシングがあります。

ip-address

トラフィックバランシングは、送信元の IP アドレスに基づいて行われます。これがデフォルトであり、各ホストは Vif/ifgrp 内で最大 1 つのメンバーインターフェイスを使用できます。

MAC アドレス

トラフィックバランシングは、送信元の MAC アドレス(通常、ルータのルーテッド環境では常に同じ)に基づいて行われ、各ホストは Vif/ifgrp 内で最大 1 つのメンバーインターフェイスを使用できます。

ラウンドロビン:

イーサネットパケットが通過する発信インターフェイスを事前に設定することはできません。送信された応答は、ラウンドロビン方式でメンバーインターフェイスを使用します。  これは、 IP アドレスや MAC アドレスが分散されていない単一または複数のトップ通話ホストなどの条件が厳しい場合に真のロードバランシングを実現する唯一の方法です。
注: Data ONTAP 7.3.1 では、ラウンドロビンのサポートは利用できません。
注意:ラウンドロビンロードバランシングでは、配信パスのわずかな差異によって、パケット配信が順序どおりに行われないことがあります。  これにより、 TCP の重複 ACK と再送信が増加する可能性があります。  したがって、一部のプロトコルとアプリケーションは、ラウンドロビンロードバランシングと組み合わせて使用すると、十分に良好に動作しません。

ポート

送信元 IP アドレスと宛先 IP アドレス、およびトランスポート層のポート番号に基づくトラフィックバランシング。IP+ ポートとも呼ばれます。Data ONTAP バージョン 7.3.1d3 および 7.3.2 以降で使用可能です。  このオプションを選択すると、計算に TCP/UDP ポート番号が追加されるため、 1 つのホストからストレージコントローラに複数の TCP ストリームを設定できます。各ストリームは、 Vif/ifgrp 内の異なるメンバーインターフェイスを使用します。  これにより、単一メンバーインターフェイスで可能なスループットよりも高い帯域幅を使用できます。

ONTAP ロードバランシングの実装

IP ベースおよび MAC ベースのロードバランシングの仕組みには、いくつかの混乱があります。  Data ONTAP 7.3.2 で変更されたマルチモードまたは LACP Vif/ifgrp のメンバーインターフェイス間でトラフィックを分散するために使用されるアルゴリズム。

7.3.2 以降の Data ONTAP リリース:

Data ONTAP 7.3.2 では、マルチモードまたは LACP ifgrp /vif で「表面上」の実装が使用され、送信元および宛先の IP アドレスの最後の 16 ビット( -b IP )、送信元および宛先の MAC アドレスの最後の 16 ビット( -b MAC )が使用されます。 または、送信元および宛先の IP アドレスの最後の 16 ビットを、送信元および宛先の TCP ポート( -b ポート)と組み合わせて使用します。 

このアルゴリズムの出力結果は、 7.3.2 より前のバージョンの Data ONTAP で使用されていたアルゴリズムよりも、はるかに動的でバランスのとれた分散になります。  ただし、各 TCP ストリームが 1 つのインターフェイスにのみ関連付けられるため、 TCP ストリームごとに 1 つのポートの帯域幅だけを使用できます。 

「 FastHash[1] 」の仕組みについては、記事 1014277 「 How to determine which link will be used in a Vif/ifgrp for a 所定のストリーム」を参照してください。

7.3.2 より前の Data ONTAP リリース:

7.3.2 より前のドキュメントでは、次の式が記述されています。

( source_address または destination_address ) %number_of_links )

上記の式の例:

Fileera
: VIF の IP アドレス 10.10.7.31
VIF のインターフェイス数: 4
(インターフェイス番号 0 、 1 、 2 、 3 )バランシングタイプ: IP

テストマシン
: IP アドレス: 10.10.5.6

テストマシンからネットワーク要求が行われると、 Filer はソースの最後のオクテットを調べ、最後の 4 ビットで XOR を実行して、トラフィックがどのインターフェイスから戻されるかを判断します。

送信元の最後のオクテットは次


のとおりです。 00000110 宛先の最後のオクテット: 00001111 XOR equiv : 0000001 。 9 (最後の 4 ビット) 9 を 4 で割った値は 2 で、残り(モジュラス)は 1 です。これは、リターントラフィックが 1 番のインターフェイスから戻されることを意味します。

これはテストです。セットアップは次のとおりです。

filerA : vif の IP アドレス 10.60.192.181
vif のインターフェイス数: 2
( 0 と 1 の番号が付けられたインターフェイス)バランシングタイプ: ip

テストマシン
: IP アドレス: 10.60.192.205

テストマシン I から:

  • NFS 経由でマウントされたファイルシステム
  • mkfile を使用して 10M ファイルを作成しました

vif stat は、処理中に次のように表示されます。

f840-rtp2> vif stat mvif1 1
Virtual interface (trunk) mvif1
e3b e3a
Pkts In Pkts Out Pkts In Pkts Out
42822 19395 42040 20131
1 0 1 0
1 0 1 0
0 0 0 0
2 0 2 0
2 0 2 0
4 0 4 0
0 0 0 0
3 0 3 0
2 0 2 0
3 0 3 0
0 0 7372 3849
0 0 1 0
1 0 1 0
1 0 1 0
2 0 2 0


計算は次



のとおりです。 source の最後のオクテットは 10110101 、 destination の最後のオクテットは 10110101 、 XOR equiv : 011111000 で、 8 (最後の 4 ビット)、 8 を 2 で割った値は 4 、残り(モジュラス)は 0 です。つまり、リターントラフィックは、 e3a である 0 のインターフェイスから戻されます。

vif テストの設定

  • Filer 上にマルチモード vif を作成します(インターフェイスに注釈を付けます)。
    vif create multi vif_name interface_1 interface_2
  • スイッチ上で、 Filer が接続されているスイッチ・ポートの EtherChannel グループを作成します。
    set port channel blade/interface_list mode Desirable
  • ポートチャネルが設定されていることを確認します
    。 show port channel
  • vif に IP アドレス
    を割り当てます。 ifconfig vif_name ip_address netmask xxx.xxx.xxx.xxx up
  • Filer が NFS 経由でファイルシステムをエクスポートしていることを確認します。
    1. UNIX テストクライアントから Filer の VIF に ping を実行します。
    2. VIF の IP アドレスを使用して、 Filer から派生したファイルシステムをマウントします。
    3. Filer への Telnet ウィンドウを開き、「 vif stat vif_name1 」を実行します。
    4. ディレクトリをマウントポイントに変更します。
    5. テストマシンと Filer の最後のオクテットを取得し、 XOR を実行します。最後の 4 ビットを加算します。その値に注釈を付けます。
    6. 前の値をインターフェイスの数で割り、残りはトラフィックが送信されるインターフェイスの数になります。
    7. 「 mkfile 10m testfile 」を実行し、 Telnet ウィンドウを監視して、どのインターフェイスにイン / アウトトラフィックがあるかを確認します。

 

 

 

  • この記事は役に立ちましたか?