スイッチ冗長化 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種類に分類する。
- sv接続 : 全てのvlan透過。
- sw2接続: sw1,2のvlanのみ透過。
- sw3,4接続: それぞれ接続先swのvlanのみ透過。
- デバイス接続: 本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学習後は何方か一方にしか返さない。
宛先macはarp応答のMac。よって、arp応答Macがsvの一つのnicに固定されていれば問題なし。WinLBFOスイッチ非依存モードのarp応答Macは何方か一方からのみ返すチームmacであり問題なし。
winLBFO スイッチ非依存モード
スイッチ非依存モードのMacアドレス
問題があるとすれば障害切替時。LBFOが障害検知し、チームmacを切替た場合の遷移は下記の通り。
- 旧macでarp応答。
- LBFOが障害検知し、切り替え。
- 旧macへのパケット破棄。
- Arp応答に新Mac
- switchのmacテーブル切り替え
新macにパケット送信。
- スイッチのmacテーブル更新迄は、パケットは旧macにのみ送信される。
切り替え前スイッチのmacテーブルのエントリが削除される迄は、パケットが旧経路で送り続けられる。但し、チームmacは別のnicに切り替わっており、LBFOが切り替え前のnicに到達したパケットを破棄し続ければ、パケットが重複することはない。但し、切り替え前のパケットは消滅する。
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/