qshinoの日記

Powershell関係と徒然なこと

スイッチ冗長化 by 非STP/非スタック

非Stackableスイッチで冗長化

VLAN分割による非スタッカブル、非STPスイッチを使ったスイッチ冗長化

サーバsvはwinLBFOのスイッチ非依存モードを使用する。

接続は下記の通り。

sv - sw1 - sw3
     ||   X
     - sw2 -sw4

svからsw1,2へは冗長接続。このままでは、sw1-sw2-sw3-sw1等の多数のループが発生する。そこでVLAN分割する事でループを回避する。

回避方法

各sw単位にVLANを割り振り、VLAN単位ではループが発生しない構成とする。sv-sw間は全てのvlanを透過する。

例えば、sw1のvlanパケットはsw1-sw2間のみ通し、その他を遮断。sw1-sw2-X-sw3-X-sw1のループ中、X印のsw2-sw3, sw3-sw1間が遮断されループを回避する。

また、sw3のvlanはsw1,sw2-sw3の2経路のみとし、sw1-sw2間、sw2-sw4間を遮断する。これにより、sw3-sw1-X-sw2-sw3の経路中、X印のsw1-sw2間が遮断され、ループしない。

sw1-sw2間は、sv-sw1間障害時にsw2経由でsw1に到達させるために必要となる。

sw1設定

sw1のポートを4種類に分類する。

  1. sv接続 : 全てのvlan透過。
  2. sw2接続: sw1,2のvlanのみ透過。
  3. sw3,4接続: それぞれ接続先swのvlanのみ透過。
  4. バイス接続: 本swのvlanのみ透過。

各ポートを1. svポート、2. バイパスポート、3. ダウンポート、4. デバイスポートと呼ぶ。

svポート

任意のvlanを通す。 in/out共にtagを付けたまま通す。

バイパスポート

outは接続先sw2のvlanのみ通す。inは自sw1のvlanのみ通す。但し、in/outで透過パケットを制御できない場合は、自sw1と接続先sw2の二つのvlanを通す。in/out共にtagを付けたままパケットを通す。

ダウンポート

接続先swのvlanパケットのみ通す。outパケットはtag不要、inパケットはtagを付与する。

バイスポート

本swのvlanパケットのみ通す。 tagVlan未対応デバイスを接続するため、本ポートへのoutパケットはtagを外す。inパケットはtagを付与する。

sw2設定

sw1設定と同様。

sw3, sw4設定

自swのvlanのみ到達する為、設定不要。

補足: sw1,2二つのuplinkに接続されているが、sw3,4のvlanはsw1,2間が切れており、それぞれsvに戻るのみ。但し、宛先MacアドレスはsvのNICの一方のみのため、何方かのパケットは破棄される。また、mac学習後は何方か一方にしか返さない。

宛先macarp応答のMac。よって、arp応答Macがsvの一つのnicに固定されていれば問題なし。WinLBFOスイッチ非依存モードのarp応答Macは何方か一方からのみ返すチームmacであり問題なし。

winLBFO スイッチ非依存モード

スイッチ非依存モードのMacアドレス

  • 送信: 物理NIC
  • 受信=Arp応答: チームNIC, 何方かのNICのみ。

問題があるとすれば障害切替時。LBFOが障害検知し、チームmacを切替た場合の遷移は下記の通り。

  1. macarp応答。
  2. LBFOが障害検知し、切り替え。
  3. macへのパケット破棄。
  4. Arp応答に新Mac
  5. switchのmacテーブル切り替え
  6. macにパケット送信。

  7. macarp応答までは旧macにパケットが送付され破棄。

  8. スイッチのmacテーブル更新迄は、パケットは旧macにのみ送信される。

切り替え前スイッチのmacテーブルのエントリが削除される迄は、パケットが旧経路で送り続けられる。但し、チームmacは別のnicに切り替わっており、LBFOが切り替え前のnicに到達したパケットを破棄し続ければ、パケットが重複することはない。但し、切り替え前のパケットは消滅する。

  • 切り替え前パケット: 破棄
  • arp応答後のパケット: 分身
  • swのmacテーブル更新後: 正常

arp応答後からmacテーブル更新迄のパケットは新旧二つのnicに送られる。その期間、LBFOが旧nicで受け取ったパケットを破棄すれば同一パケットが重複してsvが受理する事はない。LBFO次第。

macエントリー削除は、ciscoでは最大599秒=約10分。結構長い。

同一macアドレスのパケットが別のポートに出た時に更新されるなら、arp応答で更新されるが、そこはスイッチの仕様。

その他の課題

  • LBFOが障害を検知する方法は?
  • LBFOが障害復旧する方法は?
  • sw3,4のuplinkが切れてもsvは検知できず、nicが切り替わらない。

中間経路がLinkDownしたら、Uplinkも障害にできるか?

それもvlan単位で。

参考資料

https://blog.putise.com/チーミングで負荷分散してもスイッチ側の設定が/amp/

MacテーブルAgingTime http://saru.xyz/mac-adress-table/