Show Table of Contents
4.5. チャンネルボンディングの使用
パフォーマンスを強化するには、利用可能なモジュールオプションを調節して、最適な組み合わせを確認します。特に
miimon、arp_interval、arp_ip_target パラメーターに注意してください。利用可能なオプション一覧と使用しているボンディングされたインターフェースに最適なオプションを迅速に決定する方法については、「ボンディングモジュールのディレクティブ」を参照してください。
4.5.1. ボンディングモジュールのディレクティブ
チャンネルボンディングのモジュールパラメーターをボンディングインターフェース設定ファイル (たとえば
ifcfg-bond0) の BONDING_OPTS="bonding parameters" ディレクティブに追加する前に、どれがボンディングされたインターフェースに最適かをテストするとよいでしょう。ボンディングされたインターフェースのパラメーターは、sysfs ファイルシステム内のファイルを操作することで、ボンディングモジュールをアンロード (およびリロード) することなく設定できます。
sysfs は仮想ファイルシステムであり、カーネルオブジェクトをディレクトリー、ファイル、シンボリックリンクとして表示します。sysfs を使用すると、カーネルオブジェクトの情報をクエリーすることが可能で、通常のファイルシステムのコマンドを使用してそれらのオブジェクトの操作もできます。sysfs 仮想ファイルシステムは、/sys/ ディレクトリー下にマウントされます。ボンディングインターフェースはすべて、/sys/class/net/ ディレクトリー下にあるファイルと対話したり、これらを操作することで動的に設定することができます。
使用中のボンディングインターフェースに最適なパラメーターを決定するには、「チャンネルボンディングインターフェースの作成」にある手順に従って
ifcfg-bond0 などのチャンネルボンディングインターフェースのファイルを作成します。bond0 にボンディングされている各インターフェースの設定ファイルに SLAVE=yes および MASTER=bond0 のディレクティブを挿入します。これが完了すると、パラメーターの確認に進むことができます。
まず
root で ifup bondN を実行して作成したボンドを有効にします。
~]# ifup bond0ifcfg-bond0 のボンディングインターフェースのファイルを正常に作成していれば、root で ip link show を実行した際の出力に bond0 が表示されます。
~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
link/ether 52:54:00:e9:ce:d2 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff
アップになっていないボンドも含めてすべての既存のボンドを表示するには、以下を実行します。
~]$ cat /sys/class/net/bonding_masters
bond0/sys/class/net/bondN/bonding/ ディレクトリーにあるファイルを操作すると、各ボンドを個別に設定することができます。まず、設定するボンドをダウンにします。
~]# ifdown bond0
たとえば、bond0 の MII 監視を 1 秒間隔で有効にするには、
root で以下を実行します。
~]# echo 1000 > /sys/class/net/bond0/bonding/miimon
bond0 を
balance-alb モードに設定するには、以下のいずれかを実行します。
~]# echo 6 > /sys/class/net/bond0/bonding/mode
またはモード名を使用します。
~]# echo balance-alb > /sys/class/net/bond0/bonding/mode
ボンドにオプションを設定後、
ifup bondN を実行すると、そのボンドをアップにしてテストすることができます。オプションを変更する場合はインターフェースを停止して、sysfs を使用してそのパラメーターを修正後、有効に戻して再確認します。
ボンドに最適なパラメーターのセットを決定したら、設定しているボンディングインターフェースの
/etc/sysconfig/network-scripts/ifcfg-bondN ファイルの BONDING_OPTS= ディレクティブにそれらのパラメーターを空白区切りのリストとして追加します。ボンドが有効な場合 (たとえば、ONBOOT=yes ディレクティブが設定されていて、ブートシーケンス中にシステムがボンドを有効にする場合) はいつでも、BONDING_OPTS で指定されているボンディングオプションはそのボンドに対して有効となります。
以下では、多くの一般的なチャンネルボンディングパラメーターの名前とそれらの機能の詳細を一覧表示しています。詳細については、
modinfo bonding 出力の各 parm の簡単な説明、または https://www.kernel.org/doc/Documentation/networking/bonding.txt を参照してください。
ボンディングインターフェースパラメーター
ad_select=value- 使用する 802.3ad アグリゲーションの選択論理を指定します。指定可能な値は、以下のとおりです。
stableまたは0: デフォルト設定です。アクティブなアグリゲーターは、最大のアグリゲーション帯域幅によって選択されます。アクティブなアグリゲーターの再選択は、すべてのスレーブがダウンとなるか、スレーブがなくなった時にのみ行われます。bandwidthまたは1: アクティブなアグリゲーターは、最大のアグリゲーション帯域幅によって選択されます。アクティブなアグリゲーターの再選択は以下の場合に行われます。- ボンドにスレーブが追加される、またはボンドからスレーブが削除される。
- スレーブのリンク状態が変更される。
- スレーブの 802.3ad 関連状態が変更される。
- ボンドの管理状態が有効になる。
countまたは2: アクティブなアグリゲーターは、スレーブの最大数によって選択されます。再選択は、上記のbandwidth設定の場合に行われます。
bandwidthおよびcountの選択ポリシーは、アクティブアグリゲーターが部分的に失敗した場合に、802.3ad アグリゲーションのフェイルオーバーを可能にします。これにより、常にアクティブな状態のアグリゲーターを帯域幅もしくはスレーブ数における最大の利用可能数で維持します。 arp_interval=time_in_millisecondsARP監視が発生する頻度を指定します (ミリ秒単位)。重要
arp_intervalおよびarp_ip_targetの両パラメーター、あるいはmiimonパラメーターの指定は不可欠です。指定されないと、リンクが失敗した場合にネットワークパフォーマンスが低下する恐れがあります。mode=0またはmode=2(2 つの負荷分散モード) でこの設定を使用する場合、ネットワークスイッチは NIC 全体に均等にパケットを分散するよう設定する必要があります。この方法の詳細については、https://www.kernel.org/doc/Documentation/networking/bonding.txt を参照してください。デフォルトでは値は0に設定されており、ARP 監視を無効にします。arp_ip_target=ip_address[,ip_address_2,…ip_address_16]arp_intervalパラメーターが有効な場合のARP要求のターゲットIPアドレスを指定します。コンマ区切りのリストで最大 16 個のIPアドレスを指定できます。arp_validate=valueARPプローブのソース/ディストリビューションを検証します。デフォルトはnoneです。他の有効な値は、active、backup、allです。downdelay=time_in_milliseconds- リンクを無効にする前に、リンクの失敗後に待機する時間を指定します (ミリ秒単位)。値は、
miimonパラメーターで指定される値の倍数でなければなりません。デフォルトでは0に設定されており、待機時間を無効にします。 fail_over_mac=value- アクティブ-バックアップモードが、スレーブ指定時にすべてのスレーブを同一 MAC アドレスに設定する (従来の動作) か、有効な場合は、選択されたポリシーに従って、MAC アドレスのボンドの特別な処理を実行するかを指定します。利用可能な値は以下のとおりです。
noneまたは0: デフォルト設定です。この設定ではfail_over_macが無効になり、スレーブ指定時にボンディングがアクティブ-バックアップボンドのすべてのスレーブを同一 MAC アドレスに設定するようにします。activeまたは1: 「active」fail_over_macポリシーでは、ボンドの MAC アドレスは常に現在アクティブなスレーブの MAC アドレスにすべきと指示しています。スレーブの MAC アドレスは変更されませんが、代わりにフェイルオーバー中にボンドの MAC アドレスが変更されます。このポリシーは、MAC アドレスを変更できないデバイスや、(ARP 監視を妨害する) 自身のソース MAC を持つ着信ブロードキャストを拒否するデバイスに便利なものです。このポリシーのマイナス面は、ネットワーク上のすべてのデバイスが余計な ARP によって更新される必要があるという点です。通常の方法では、スイッチが着信トラフィックを嗅ぎ付けて ARP テーブルを更新します。余計な ARP が失われると、通信が中断される可能性があります。このポリシーを MII モニターと合わせて使用すると、実際に送受信可能になる前にリンクを有効にするデバイスが特に余計な ARP を失いやすくなります。また、適切な updelay 設定が必要になる可能性があります。followまたは2: 「follow」fail_over_macポリシーでは、ボンドの MAC アドレスは通常どおり選択されます (通常、最初のスレーブの MAC アドレスがボンドに追加されます)。ただし、2 番目以降のスレーブはこの MAC アドレスに設定されず、バックアップの役割を果たします。つまり、スレーブはフェイルオーバー時にボンドの MAC アドレスでプログラミングされます (また、それまでアクティブだったスレーブが新たにアクティブになったスレーブの MAC アドレスを受け取ります)。このポリシーは、複数ポートが同一 MAC アドレスでプログラミングされる際に、混乱したりパフォーマンスペナルティーを受けるマルチポートデバイスに便利なものです。
- lacp_rate=value
- リンクパートナーが 802.3ad モードで LACPDU パケットを送信するレートを指定します。指定可能な値は、以下のとおりです。
slowまたは0: デフォルト設定です。パートナーが 30 秒ごとに LACPDU を送信するよう指定します。fastまたは1: パートナーが 1 秒ごとに LACPDU を送信するよう指定します。
miimon=time_in_milliseconds- MII リンク監視が発生する頻度を指定します (ミリ秒単位)。MII は NIC がアクティブであることを検証するために使用されるため、これは高可用性が必要な場合に役立ちます。特定の NIC のドライバーが MII ツールに対応していることを確認するには、root で以下のコマンドを入力します。
~]#
ethtool interface_name | grep "Link detected:"このコマンドでは、interface_name をボンドインターフェースではなくeth0のようなデバイスインターフェースの名前で置換します。MII が対応している場合は、コマンドは以下を返します。Link detected: yes
高可用性のためにボンディングされたインターフェースを使用する場合、各 NIC のモジュールは MII に対応していなければなりません。値を0(デフォルト) に設定すると、この機能はオフになります。この設定を行う場合、このパラメーターの適切な開始ポイントは100です。重要
arp_intervalおよびarp_ip_targetの両パラメーター、あるいはmiimonパラメーターの指定は不可欠です。指定されないと、リンクが失敗した場合にネットワークパフォーマンスが低下する恐れがあります。 mode=value- ボンディングポリシーの指定が可能になります。value は、以下のいずれかになります。
balance-rrまたは0: 耐障害性とロードバランシングのためのラウンドロビンポリシーを設定します。利用可能な最初のインターフェースからそれぞれのボンディングされたスレーブインターフェースで送受信が順次行われます。active-backupまたは1: 耐障害性のためのアクティブなバックアップポリシーを設定します。利用可能な最初のボンディングされたスレーブインターフェースにより送受信が行われます。別のボンディングされたスレーブインターフェースは、アクティブなボンディングされたスレーブインターフェースが失敗した場合にのみ使用されます。balance-xorまたは2: 送受信は選択されたハッシュポリシーに基づきます。デフォルトでは、ハッシュはソースの XOR とスレーブインターフェース数による剰余で宛先 MAC アドレスを掛けて導き出します。このモードでは、宛先が特定のピアになっているトラフィックは常に同一インターフェースで送信されます。宛先は MAC アドレスで決められるので、この方法は同一リンクまたはローカルネットワーク上にあるピアが宛先のトラフィックに最適なものです。トラフィックが単一ルーターを通過する必要がある場合は、このトラフィックバランスのモードは最適ではなくなります。broadcastまたは3: 耐障害性のためのブロードキャストポリシーを設定します。すべての送信は、すべてのスレーブインターフェースで行われます。802.3adまたは4: IEEE 802.3ad 動的リンクアグリゲーションのポリシーを設定します。同一の速度とデュプレックス設定を共有するアグリゲーショングループを作成します。アクティブなアグリゲーターのすべてのスレーブで送受信を行います。802.3ad に対応するスイッチが必要です。balance-tlbまたは5: 耐障害性とロードバランシングのための送信ロードバランシング (TLB) ポリシーを設定します。発信トラフィックは、各スレーブインターフェースの現在の負荷に従って分散されます。受信トラフィックは、現在のスレーブにより受信されます。受信しているスレーブが失敗すると、別のスレーブが失敗したスレーブの MAC アドレスを引き継ぎます。このモードは、カーネルボンディングモジュールが認識しているローカルアドレスにのみ、適したものになります。このため、仮想マシンのブリッジの背後では使用できません。balance-albまたは6: 耐障害性とロードバランシングのためアダプティブロードバランシング (ALB) ポリシーを設定します。IPv4トラフィック用の送受信ロードバランシングが含まれます。ARPネゴシエーションにより、受信ロードバランシングが可能です。このモードは、カーネルボンディングモジュールが認識しているローカルアドレスにのみ、適したものになります。このため、仮想マシンのブリッジの背後では使用できません。
primary=interface_nameeth0のようなプライマリーデバイスのインターフェース名を指定します。primaryデバイスは、使用される最初のボンディングインターフェースであり、失敗しない限りは破棄されません。この設定が特に役立つのは、ボンディングインターフェースの NIC の 1 つが高速なため、大規模な負荷に対応できる場合です。この設定は、ボンディングインターフェースがactive-backupモードの場合にのみ有効です。詳細については、https://www.kernel.org/doc/Documentation/networking/bonding.txt を参照してください。primary_reselect=value- プライマリースレーブに対して再選択ポリシーを指定します。これは、アクティブなスレーブの失敗やプライマリースレーブの回復が発生した場合に、どのようにプライマリースレーブが選択されてアクティブなスレーブになるかという点に影響します。このパラメーターは、プライマリースレーブと他のスレーブ間でのフリップフロップを防ぐように設計されています。指定可能な値は、以下のとおりです。
alwaysまたは0(デフォルト): プライマリースレーブは有効になるといつでもアクティブなスレーブになります。betterまたは1: プライマリースレーブの速度とデュプレックスが、現在のアクティブなスレーブの速度とデュプレックスと比べて良い場合は、プライマリースレーブは有効になるとアクティブなスレーブになります。failureまたは2: 現在のアクティブなスレーブが失敗してプライマリースレーブが有効になる場合のみ、プライマリースレーブはアクティブなスレーブになります。
primary_reselectの設定は、以下の 2 つの場合では無視されます。- アクティブなスレーブがない場合は、回復する最初のスレーブがアクティブなスレーブになります。
- 初めにプライマリースレーブがスレーブにされた場合は、それは常にアクティブなスレーブになります。
sysfsによりprimary_reselectポリシーが変更されると、新しいポリシーに従って直ちに最良のアクティブなスレーブが選択されます。これにより、状況によってはアクティブなスレーブに変更が生じる場合があります。 resend_igmp=range- フェイルオーバーイベント後に発行される IGMP メンバーシップレポートの数を指定します。1 つのメンバーシップレポート がフェイルオーバーの直後に発行され、以降のパケットは 200ms (ミリ秒) の間隔で送信されます。有効な範囲は
0から255で、デフォルト値は1です。値が0だと、フェイルオーバーイベント時に IGMP メンバーシップレポートが発行されません。このオプションは、フェイルオーバーで IGMP トラフィックをあるスレーブから別のスレーブに切り替えられるbalance-rr(mode 0)、active-backup(mode 1)、balance-tlb(mode 5) およびbalance-alb(mode 6) のボンディングモードで便利なものです。このため、新たに発行される IGMP レポートは、スイッチが着信 IGMP トラフィックを新たに選択されたスレーブに転送させるようにする必要があります。 updelay=time_in_milliseconds- リンクを有効にする前の待機時間を指定します (ミリ秒単位)。値は、
miimonパラメーターで指定される値の倍数でなければなりません。デフォルトでは、値は0に設定されており、待機時間を無効にします。 use_carrier=number- リンク状態を決定するために
miimonが MII/ETHTOOL ioctls またはnetif_carrier_ok()を使用するかどうか指定します。netif_carrier_ok()機能は、デバイスドライバーを使用してnetif_carrier_on/offによりその状態を維持します。大半のデバイスドライバーはこの機能に対応しています。MII/ETHTOOL ioctls ツールは、カーネル内の非推奨の呼び出しシーケンスを活用します。ただし、これは使用しているデバイスドライバーがnetif_carrier_on/offに対応しない場合でも設定可能です。有効な値は次のとおりです。1: デフォルト設定です。netif_carrier_ok()の使用を有効にします。0: MII/ETHTOOL ioctls の使用を有効にします。
注記
リンクがアップになっているべきでない時にアップであるとボンディングインターフェースが主張した場合、使用しているネットワークデバイスドライバーはnetif_carrier_on/offに対応しない可能性があります。 xmit_hash_policy=valuebalance-xorおよび802.3adモードで、スレーブを選択する時に使用する送信ハッシュポリシーを選択します。指定可能な値は、以下のとおりです。0またはlayer2: デフォルト設定です。このパラメーターは、ハードウェア MAC アドレスの XOR を使用してハッシュを生成します。使用する式は以下のとおりです。(source_MAC_address XOR destination_MAC) MODULO slave_count
このアルゴリズムは、すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振り、802.3ad に対応します。1またはlayer3+4: 上位レイヤープロトコルの情報を (利用可能な場合は) 使用して、ハッシュを生成します。これにより、特定のネットワークピアへのトラフィックが複数のスレーブに及ぶようにできますが、単一の接続では複数のスレーブに及びません。断片化された TCP および UDP パケットに使用される公式は、以下のとおりです:((source_port XOR dest_port) XOR ((source_IP XOR dest_IP) AND
0xffff) MODULO slave_count断片化された TCP または UDP パケットと他のすべてのIPプロトコルトラフィックについては、送信元および宛先ポート情報が省略されます。非IPトラフィックに関しては、式はlayer2送信ハッシュポリシーと同じです。このポリシーの目的は、特に PFC2 付きの Cisco スイッチや Foundry および IBM 製品など一部のスイッチの動作を真似ることです。このポリシーで使用されるアルゴリズムは、802.3ad に対応していません。2またはlayer2+3: layer2 および layer3 プロトコル情報の組み合わせを使用して、ハッシュを生成します。ハードウェア MAC アドレスとIPアドレスの XOR を使用して、ハッシュを生成します。式は以下のとおりです。(((source_IP XOR dest_IP) AND
0xffff) XOR ( source_MAC XOR destination_MAC )) MODULO slave_countこのアルゴリズムは、すべてのトラフィックを同じスレーブの特定のネットワークピアに割り振ります。非IPトラフィックの場合、式は layer2 送信ハッシュポリシーと同一です。このポリシーの目的は、特に layer3 ゲートウェイデバイスが大半の宛先に到達する必要がある環境において、layer2 単独の場合より分散されたトラフィックを提供することです。このアルゴリズムは、802.3ad に対応しています。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.