概要
- 複数のネットワークインターフェイスを1つに結合すること
- 1つのMasterデバイスと複数のSlaveデバイスからなる
- 基本的には、データ送信をいくつかのポートに割り振って行うことで、負荷分散する
- driverがデバイスをコンフィギュレーションする(モード等を設定して使えるようにする)ことで可能になる
- データ受信の時の挙動、スイッチとの関係性については追加調査予定
Bonding設定を行う手順のイメージ(詳細は省略)
- LinuxでBondingを形成する場合、ボンディング カーネル モジュールをインストールし、
modprobe
コマンドでボンディング ドライバがロードされているかどうかをテストする必要がある
- 次に
ip link add
コマンドやip link set
コマンドでNICの追加・設定を行う
- ただし、この
ip link
コマンドを用いた方法は再起動すると初期化される。設定を永続化するためには、インターフェイスのコンフィギュレーションファイル(/etc/network/interfaces
)を手動で書き換える必要がある(その後、ネットワーキングサービスを再起動して設定を適用する)
モード別の動作
Mode 0: balance-rr (Balance Round-Robin)
- Slaveに設定されているデバイスが順番にパケットを送信する
- 全てのSlaveにMasterと同じMACアドレスが割り振られる
- デフォルトのモード
- Round-robinは、「持ち回り」のような意味
Mode 1: active-backup
- 1つのSlaveデバイスのみactiveとなり、そのデバイスにのみ送信する
- そのデバイスにリンク障害が検出された場合別の1つのSlaveデバイスがactiveとなる
fail_over_mac
オプションに応じてMACアドレスが割り当てられる
fail_over_mac
オプション
- none(0)
- fail_over_macが無効となり、すべてのSlaveアドレスをMasterと同じMACアドレスとする。(デフォルト)
- active(1)
- MasterのMACアドレスをactiveなSlaveデバイスのMACアドレスに設定する。(activeなSlaveデバイスが変更になった場合、MasterのMACアドレスも変わる)
- MACアドレスを変更できないSlaveデバイスを使用する場合、ARPモニターに干渉するような自分のMACアドレスのブロードキャストを拒否するSlaveデバイスを使用する場合に有用なオプション。
- activeなSlaveデバイスが切り替わった場合、GARPでMACアドレスを更新する必要がある(更新されるまで通信が中断される)。
- follow(2)
- MasterのMACアドレスは、bondingに最初に追加されたSlaveデバイスのMACアドレスになる。activeなSlaveデバイスが切り替わった場合、SlaveデバイスのMACアドレスはそのMACアドレス(bondingに最初に追加されたSlaveデバイスのMACアドレス)になる。
- 複数のポートが同じMAC アドレスでプログラムされた場合に、パフォーマンスが低下するマルチポートデバイスで有用なオプション。
Mode 2: balance-xor
- ハッシュポリシー(
xmit_hash_policy
オプションで選択する)に基づいたハッシュ値によってアクセスを分散させる
- 全てのSlaveにMasterと同じMACアドレスが割り振られる
Mode 3: broadcast
- 全てのSlaveデバイスに送信する
- 複数の完全に独立したネットワークに属するSlaveデバイスに対して、一方向の通信が必要な場合など、非常に限定的な用途向けのモード
- 全てのSlaveにMasterと同じMACアドレスが割り振られる
Mode 4: 802.3ad (Dynamic link aggregation)
- IEEE 802.3adのDynamic link aggregationポリシーに従う
- Static link aggregationをLink Aggregation Group (LAG) 、Dynamic link aggretationをLink Aggregation Control Protocol (LACP)と呼んだりもする
- LACPは、LAG を自動的に設定するための制御プロトコル
- Speed・Duplexの設定を統一した複数のAggregation groupを作成し、activeであるGoupのslaveをすべてactiveに設定する
- IEEE 802.3ad対応のスイッチが必要になる
- 全てのSlaveにMasterと同じMACアドレスが割り振られる
- Actor (ホスト) と Partner (スイッチ) は LACPDU (LACP Data Unit) を交換する
- これらの LACPDU は、ローカルの MACアドレスをリンクするため、スニッフィングはできないが、同じL2スイッチに接続されている他のすべてのホストにMACアドレスを知られていることもあり、値の推測が簡単でLACPDUパケットをスプーフィングされる可能性がある。
- スニッフィング:ネットワークを流れるデータを捕らえ、内容を解析して盗み見ること
- スプーフィングは、誰かがコンピュータ、デバイス、またはネットワークを使用して、正規のエンティティになりすまして他のコンピュータネットワークをだまそうとする特定の種類のサイバー攻撃
- ただし、いくつかのボンディング パラメータを設定するだけで、この可能性を回避できる
Mode 5: balance-tlb
- tlbは (Adaptive) transmit load balancingの略
- 送信トラフィックの分散を
tlb_dynamic_lb
の値に基づいて行う(受信時はトラフィックの分散は行わず、送信で用いたSlaveで行うが、もし障害が発生したら他のSlaveがMACアドレスを引き継ぐ)
tlb_dynamic_lb=1
(デフォルト):各Slaveの現在の負荷に基づいて分散する
tlb_dynamic_lb=0
:ハッシュポリシーに基づいて分散する
Mode 6: balance-alb
- albはAdaptive load balancingの略
- balance-tlbのモードにIPv4の受信トラフィックの分散(recieve load balancing: rlb)も行うモード
- 受信トラフィックの分散は、ARPネゴシエーションにより達成される。詳細は要調査。
(参考:MAC・Routing・ARPテーブルの概要を理解する)
- Bonding driverはローカルシステムからARP応答を受信し、MACアドレスを上書きすることで受信トラフィックを分散させる
- ローカルシステムがARPリクエストを送ったら、Bonding driverはARPパケットからpeerのIP情報をコピーして保存する
- peerからARPリプライが届いたら、そのMACアドレスを取得しBonding driverからpeerに対してBondのどれか一つのSlaveデバイスのMACアドレスをアサインしてARPリプライを開始する
参考
ディスカッション
コメント一覧
まだ、コメントがありません