ホームページ  >  記事  >  システムチュートリアル  >  ネットワークカードバインドモードの分析

ネットワークカードバインドモードの分析

王林
王林転載
2024-01-11 21:42:18390ブラウズ

現在、ネットワーク カード バインディング モードは 7 つあります (0 ~ 6) Bond0、bond1、bond2、bond3、bond4、bond5、bond6

ネットワークカードバインドモードの分析

よく使用されるものが 3 つあります:

mode=0: 自動バックアップを備えたバランス負荷モードですが、「スイッチ」のサポートと設定が必要です。

mode=1: 自動バックアップモード 1回線が切断された場合、他の回線も自動的にバックアップします。

mode=6: バランス負荷モード、自動バックアップ、「スイッチ」のサポートと設定は不要です。

イラスト:

モード 0 のロード バランシングを実現したい場合は、optionsbond0 miimon=100 mode=0 を設定するだけでは十分ではなく、ネットワーク カードに接続されているスイッチを特別に設定する必要があることに注意してください (これら 2 つのポートは集約される必要があります)。ボンディングに使用される 2 つのネットワーク カードが同じ MAC アドレスを使用しているため、原理から分析します (ボンディングはモード 0 で実行されます):

モード 0 では、ボンディングにバインドされたネットワーク カードの IP はすべて同じ MAC アドレスに変更されます。これらのネットワーク カードが同じスイッチに接続されている場合、スイッチの MAC アドレスに対応するポートが複数存在します。 arp table. の場合、スイッチはこの MAC アドレスに送信されたパケットをどのポートに転送する必要がありますか?通常、MAC アドレスはグローバルに一意であるため、1 つの MAC アドレスが複数のポートに対応すると、スイッチは間違いなく混乱します。したがって、mode0 のボンドがスイッチに接続されている場合は、スイッチのポートを集約する必要があります (cisco は ethernetchannel と呼ばれ、foundry はポートグループと呼ばれます)。これは、スイッチが集約された後、集約内のいくつかのポートも 1 つのグループにバンドルされるためです。 mac アドレス: 私たちの解決策は、2 つのネットワーク カードを異なるスイッチに接続することです。

ボンディングに使用される 2 つのネットワーク カードは異なる MAC アドレスを使用するため、スイッチを mode6 モードに設定する必要はありません。

7 つの結合モードの説明: mod=0、つまり: (balance-rr)ラウンドロビン ポリシー

機能: データ パケットの送信順序は順次送信です (つまり、最初のパケットは eth0 に送信され、次のパケットは eth1 に送信されます...最後の送信が完了するまでこのサイクルが続きます) )、このモードはロード バランシングとフォールト トレランスを提供します。しかし、接続またはセッション データ パケットが異なるインターフェイスから送信され、中間の異なるリンクを通過する場合、データ パケットが順番どおりに到着しないという問題が発生する可能性が高いことがわかっています。クライアント側では、順序どおりに到着しないデータ パケットを再送信する必要があるため、ネットワーク スループットが低下します。

mod=1、つまり: (アクティブバックアップ)アクティブバックアップポリシー (メインバックアップポリシー)

機能: アクティブなデバイスは 1 台だけです。1 台がダウンすると、もう 1 台はバックアップからプライマリ デバイスに即座に切り替わります。 MAC アドレスは外部から見える スイッチ内での混乱を避けるため、外部からはボンドの MAC アドレスは一意です。このモードはフォールト トレランスのみを提供します。このアルゴリズムの利点は、高いネットワーク接続可用性を提供できることですが、リソース使用率が低いことがわかります。動作状態にあるのは 1 つのインターフェイスだけです。N 個のネットワーク インターフェイスの場合、リソース使用率は 1/N

mod=2、つまり: (balance-xor)XOR ポリシー (バランス戦略)

機能: 指定された送信 HASH ポリシーに基づいてデータ パケットを送信します。デフォルトの戦略は次のとおりです: (送信元 MAC アドレス XOR 宛先 MAC アドレス)% スレーブ番号。他の送信ポリシーは、xmit_hash_policy オプションを通じて指定できます。このモードは、負荷分散とフォールト トレランスを提供します

mod=3、つまり: ブロードキャスト (ブロードキャスト戦略)

機能:各スレーブ インターフェイスで各パケットを送信します。このモードはフォールト トレランスを提供しますmod=4、つまり: (802.3ad) IEEE 802.3ad ダイナミック リンク アグリゲーション

機能: 同じ速度とデュプレックス設定を共有するアグリゲーション グループを作成します。 802.3ad 仕様によれば、複数のスレーブは同じアクティブ化されたアグリゲートの下で動作します。送信トラフィックのスレーブ選択はトランスポート ハッシュ ポリシーに基づいており、xmit_hash_policy オプションを使用してデフォルトの XOR ポリシーから他のポリシーに変更できます。特に 802.3ad 規格の第 43.2.4 章で言及されているパケットの並べ替えの問題を考慮すると、すべての送信戦略が 802.3ad と互換性があるわけではないことに注意してください。実装が異なれば適応性も異なる場合があります。

必要な条件:

条件 1: ethtool は各スレーブのレートとデュプレックス設定の取得をサポートします

条件 2: スイッチが IEEE802.3ad ダイナミック リンク アグリゲーションをサポートしている

条件 3: ほとんどのスイッチでは、802.3ad モードをサポートするために特定の構成が必要です。

mod=5、つまり: (balance-tlb)適応型送信負荷分散 (アダプター送信負荷分散)

機能: チャネル ボンディングをサポートするために特別なスイッチ (スイッチ) は必要ありません。現在の負荷 (速度に基づいて計算) に基づいて各スレーブに送信トラフィックを分散します。データを受信して​​いるスレーブに障害が発生すると、別のスレーブが障害が発生したスレーブの MAC アドレスを引き継ぎます。

このモードに必要な条件: ethtool は各スレーブのレートの取得をサポートします

mod=6、つまり: (balance-alb)適応型負荷分散 (アダプター適応型負荷分散)

機能: このモードには、バランス tlb モードに加えて、IPV4 トラフィックの受信ロード バランス (rlb) が含まれており、スイッチ (スイッチ) のサポートは必要ありません。受信ロード バランシングは、ARP ネゴシエーションを通じて実現されます。ボンディング ドライバーは、ローカル マシンによって送信された ARP 応答をインターセプトし、ソース ハードウェア アドレスをボンディング内のスレーブの一意のハードウェア アドレスに書き換えます。これにより、異なるピアが通信に異なるハードウェア アドレスを使用できるようになります。

サーバーから受信したトラフィックもバランスがとられます。ローカル マシンが ARP 要求を送信すると、ボンディング ドライバーは ARP パケットからピアの IP 情報をコピーして保存します。 ARP 応答がピアから到着すると、ボンディング ドライバーはそのハードウェア アドレスを抽出し、ボンディング内のスレーブへの ARP 応答を開始します。ロード バランシングに ARP ネゴシエーションを使用する場合の 1 つの問題は、ARP リクエストがブロードキャストされるたびにボンドのハードウェア アドレスが使用されるため、ピアがこのハードウェア アドレスを学習した後、受信したすべてのトラフィックが現在のスレーブに流れることです。この問題は、一意のハードウェア アドレスを含むすべてのピアに更新 (ARP 応答) を送信し、トラフィックが再分散されるようにすることで解決できます。新しいスレーブがボンドに追加される場合、または非アクティブなスレーブが再アクティブ化される場合、受信したトラフィックも再分配する必要があります。受信した負荷は、ボンド内の最も高速なスレーブに順次 (ラウンドロビン) 分散されます。リンクが再接続されるか、新しいスレーブがボンドに追加されると、受信トラフィックは現在アクティブなすべてのスレーブに再分散されます。ARP 応答を開始します。指定された MAC アドレスを使用して各クライアントに送信されます。反対側に送信される ARP 応答がスイッチ (スイッチ) によってブロックされないようにするには、以下で紹介する uplay パラメータをスイッチ (スイッチ) の転送遅延以上の値に設定する必要があります。

必要な条件:

条件 1: ethtool は各スレーブのレートの取得をサポートします;

条件 2: 基盤となるドライバーは、特定のデバイスのハードウェア アドレスの設定をサポートしているため、ボンドのハードウェア アドレスを使用するスレーブ (curr_active_slave) が常に存在すると同時に、ボンド内の各スレーブが一意のハードウェア アドレスを持つことが保証されます。 curr_active_slave が失敗した場合、そのハードウェア アドレスは新しく選出された curr_active_slave によって引き継がれます。実際、mod=6 と mod=0 の違いは、mod=6、最初に eth0 トラフィックを埋め、次に eth1、...ethX; となります。 mod =0 の場合、2 つのポートのトラフィックは基本的に同じ帯域幅で非常に安定していることがわかります。 mod=6 の場合、最初のポートのトラフィックが非常に多く、2 番目のポートはトラフィックのごく一部しか占めていないことがわかります。

Linux ネットワーク ポート バインド:

ネットワーク ポート バインディング (ボンド) テクノロジーにより、ネットワーク ポートの冗長化と負荷分散を容易に実現でき、高可用性と高信頼性を実現できます。前提条件の同意: リーリー

最初のステップは、設定ファイルを構成することです:

[root@woo ~]# vi  /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0

BOOTPROTO=none

ONBOOT=yes

IPADDR=10.10.10.1

NETMASK=255.255.255.0

NETWORK=192.168.0.0

[root@woo ~]# vi  /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

[root@woo ~]# vi  /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

第二步,修改modprobe相关设定文件,并加载bonding模块:

1.在这里,我们直接创建一个加载bonding的专属设定文件/etc/modprobe.d/bonding.conf

[root@woo ~]# vi /etc/modprobe.d/bonding.conf

alias bond0 bonding

options bonding mode=0 miimon=200

2.加载模块(重启系统后就不用手动再加载了)

[root@woo ~]# modprobe bonding

3.确认模块是否加载成功:

[root@woo ~]# lsmod | grep bonding

bonding 100065 0

第三步,重启一下网络,然后确认一下状况:

[root@db01 ~]# service network restart

Shutting down interface bond0:  [  OK  ]

Shutting down loopback interface:  [  OK  ]

Bringing up loopback interface:  [  OK  ]

Bringing up interface bond0:  [  OK  ]

[root@db01 ~]#  cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008)

Bonding Mode: fault-tolerance (active-backup)

Primary Slave: None

Currently Active Slave: eth0

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

Slave Interface: eth0

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 40:f2:e9:db:c9:c2

Slave Interface: eth1

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 40:f2:e9:db:c9:c3

[root@db01 ~]#  ifconfig | grep HWaddr

bond0     Link encap:Ethernet  HWaddr 40:F2:E9:DB:C9:C2

eth0      Link encap:Ethernet  HWaddr 40:F2:E9:DB:C9:C2

eth1      Link encap:Ethernet  HWaddr 40:F2:E9:DB:C9:C2

从上面的确认信息中,我们可以看到3个重要信息:

1.现在的bonding模式是active-backup

2.现在Active状态的网口是eth0

3.bond0,eth1的物理地址和处于active状态下的eth0的物理地址相同,这样是为了避免上位交换机发生混乱。

任意拔掉一根网线,然后再访问你的服务器,看网络是否还是通的。

第四步,系统启动自动绑定、增加默认网关:

[root@woo ~]# vi /etc/rc.d/rc.local

#追加

ifenslave bond0 eth0 eth1

route add default gw 10.10.10.1

#如可上网就不用增加路由,0.1地址按环境修改.

————————————————————————

留心:前面只是2个网口绑定成一个bond0的情况,如果我们要设置多个bond口,比如物理网口eth0和eth1组成bond0,eth2和eth3组成bond1,

多网口绑定:

那么网口设置文件的设置方法和上面第1步讲的方法相同,只是/etc/modprobe.d/bonding.conf的设定就不能像下面这样简单的叠加了:

alias bond0 bonding

options bonding mode=1 miimon=200

alias bond1 bonding

options bonding mode=1 miimon=200

正确的设置方法有2种:

第一种,你可以看到,这种方式的话,多个bond口的模式就只能设成相同的了:

<span style="”color:#000000;”">alias bond0 bonding

alias bond1 bonding

options bonding max_bonds=2 miimon=200 mode=1

</span>

第二种,这种方式,不同的bond口的mode可以设成不一样:

<span style="”color:#000000;”">alias bond0 bonding

options bond0 miimon=100 mode=1

install bond1 /sbin/modprobe bonding -o bond1 miimon=200 mode=0

</span>

仔细看看上面这2种设置方法,现在如果是要设置3个,4个,甚至更多的bond口,你应该也会了吧!

后记:

miimon 监视网络链接的频度,单位是毫秒,我们设置的是200毫秒。

max_bonds 配置的bond口个数

mode bond模式,主要有以下几种,在一般的实际应用中,0和1用的比较多。

以上がネットワークカードバインドモードの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlinuxprobe.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。