# バーチャルシャーシスタック（VCS） / 概要

バーチャルシャーシスタック（VCS）の概要について説明します。

## 特長

バーチャルシャーシスタック（以下、VCS）は、複数のスイッチをスタック接続することにより、仮想的に1台のスイッチとして動作させる機能です。
Note

スタック接続に使用可能なポート、モジュール、ケーブルについては、導入編の「基本仕様」をご参照ください。

Note

スタック接続に使用するモジュールやケーブルによっては長距離のスタック接続が可能なため、他のモジュール、ケーブルを使用した短距離接続のVCSと対比する意味で「ロングディスタンスVCS（LD-VCS）」と呼ぶ場合がありますが、どのモジュールを使ってもVCSの基本的動作に違いはなく、設定や運用の方法もほぼ同じです。本マニュアルではLD-VCSという呼称を用いず、「XXXXモジュールを使用する場合は～」のように、モジュールによって対応が異なる部分のみ注記しています。

VCSを利用すると、次のことを実現できます。

- 管理性の向上
  複数のスイッチを1台の仮想的なスイッチ（VCSグループと呼びます）として扱うことができるため、個々のスイッチを個別に管理する場合に比べて、設定や管理がしやすくなります。
- ネットワーク構成の簡素化
  通常、複数のスイッチを連携させて運用するためには、スパニングツリーなどの各種プロトコルを組み合わせて使用する必要がありますが、VCSグループを構成する複数のスイッチはネットワーク上の他の機器からは1台に見えるため、ネットワークの構成をシンプルにすることができます。
- 高可用性
  VCSグループを構成するスイッチはすべて「アクティブ」状態のまま通常の転送動作を行います。このため、VCSとリンクアグリゲーション（ポートトランキング）を組み合わせれば、回線を冗長化するだけでなく、予備回線の帯域もフルに活用できます。また、VCSグループを構成するスイッチの1つに障害が発生した場合でも、多くの場合VCSグループ全体を停止することなく復旧作業を行えます。さらに、VCSグループを構成する各スイッチの給電系統を分けることで、冗長性をより一層高めることもできます。

## 構成要素

VCSの主要な構成要素および設定要素について解説します。

### VCSグループ

VCS機能によって作られる仮想的なスイッチをVCSグループと呼びます。VCSグループは複数のスイッチ（スタックメンバー）で構成されます。

#### VCSグループのIPアドレス

VCS構成時、IPアドレスの設定は個々のスタックメンバーではなく、VCSグループに対して行います。そのため、マスター（後述）が切り替わっても、IPアドレスはそのまま引き継がれます。

#### VCSグループのMACアドレス

VCSグループのMACアドレスとしては、VCSグループ専用のバーチャルMACアドレスを使います。マスターが切り替わってもVCSグループのMACアドレスは変更されないため、MACアドレス変更にともなう通信への影響はありません。
Note

バーチャルMACアドレス機能は、stack enableコマンドでVCS機能を有効化すると自動的に有効化されます。stack virtual-macコマンドをno形式で実行することにより無効化もできますが、VCS使用時は必ずバーチャルMACアドレス機能を有効にした状態で運用してください。無効状態での運用はサポート対象外となります。

### スタックメンバー

VCSグループを構成する個々のスイッチをスタックメンバー（メンバー）と呼びます。スタックメンバーは、役割によってマスターとスレーブの2つに分類されます。

#### マスター

マスターはVCSグループの動作を制御するメンバーです。各VCSグループには必ず1台マスターが存在します。マスターは、VCSグループのコンフィグファイル、MACアドレステーブル（FDB）、ARPテーブル、IPルーティングテーブルを維持・管理し、その他のメンバー（スレーブ）に配布します。
マスターは、VCSグループの起動時にメンバー間のメッセージ交換により自動的に選出されます。選出基準は次のとおりです。どちらのパラメーターも値が小さいほど優先度が高くなります。

1. プライオリティー
2. MACアドレス

#### スレーブ

マスター以外のメンバーはスレーブになります。スレーブはVCSグループの制御は行いませんが、各種テーブルをマスターと同期し、VCSグループの一員としてレイヤー2/レイヤー3のフレームおよびパケット転送動作を行います。
またスレーブは、マスターの状態をつねに確認しており、マスターに障害が発生したときは次点のスレーブがマスターに昇格してVCSグループの制御権を引き継ぎます。

#### スタックメンバーID

VCSグループ内の各メンバーを識別するため、各メンバーには1～8のスタックメンバーIDが割り当てられます。明示的にIDを設定していない場合は、マスターがID=1となり、ID=1に接続されているメンバーがID=2というように順番にIDが割り振られます。また、CLIコマンドによって、各メンバーのIDを明示的に設定することもできます。
一度割り当てられたスタックメンバーIDはシステムファイルに保存され、それ以降はマスターのIDと重複しないかぎり自動的に変更されることはありません。
スタックメンバーIDはマスターの選出とは無関係ですが、VCSグループの設定を行うときには大きな意味を持ちます。これは、スイッチポートを「スタックメンバーID」.「拡張モジュールベイ番号」.「ポート番号」の形式で指定するためです。
たとえば、スタックメンバーID「2」の本体スイッチポート12は、「port2.0.12」のように表します。

#### プライオリティー

VCSグループのマスターを選出するときの第一の基準は、各メンバーのプライオリティーです。VCSグループの各メンバーが起動したとき、どのメンバーがマスターになるかを決定しますが、このときプライオリティー値のもっとも小さいメンバーがマスターに選出されます。同一プライオリティー値のメンバーが複数存在している場合は、第二の基準であるMACアドレスのもっとも小さいメンバーがマスターに選出されます。
各メンバーのプライオリティーはCLIコマンドで変更することができます。有効範囲は0～255、初期値は128です。明示的にプライオリティーを設定していない場合はすべてのメンバーが同じプライオリティー（128）を持つため、もっとも小さいMACアドレスを持つメンバーがマスターに選出されることとなります。

### スタックリンク

スタックメンバーは、スタック用のケーブルで接続します。この接続をスタックリンクと呼びます。
スタックリンクは、メンバー間で通常のネットワークトラフィックを転送するために使用されるほか、リンクステータスを監視することによりマスター・スレーブ間の状態確認にも使用されます。
Note

スタック接続に使用可能なポート、モジュール、ケーブルについては、導入編の「基本仕様」をご参照ください。

### レジリエンシーリンク

スタックメンバーは、特殊な設定を施したスイッチポートを使って状態確認用の予備リンクを構成します。これをレジリエンシーリンクと呼びます。
レジリエンシーリンクは状態確認にだけ使用され、ネットワークトラフィックの転送には使用されません。状態確認は、マスターが0.5秒間隔で送信する「ヘルスチェック」メッセージをスレーブが受信することによって行います。マスターに隣接するスレーブは、ヘルスチェックメッセージを4回連続して受信できなかった場合にヘルスチェック失敗と判断します。このときスレーブは、スタックリンクもダウンしていればマスター障害、スタックリンクがアップしていればレジリエンシーリンク障害と判断します。
Note

レジリエンシーリンクの要件に関する詳細は、導入編の「基本仕様」をご参照ください。

## 基本動作

### 通常時

#### 起動

複数のスイッチをスタック接続して電源を入れると、各スイッチはメッセージを交換しあってスタック内の他のスイッチ（スタックメンバー）を検出し、自律的にスタックトポロジーを構築します。

#### マスター選出

次にどのメンバーがマスターになるかを決定します。選出方法は次のとおりです。

1. プライオリティー値のもっとも小さいメンバーが1台だけ存在する場合は、そのメンバーがマスターになります。
2. プライオリティー値のもっとも小さいメンバーが複数存在する場合は、MACアドレスのもっとも小さいスイッチがマスターになります。

#### 仮想スイッチとしての動作

起動、マスター選出を経て、VCSグループの起動が完了し、仮想スイッチとしての通常動作が始まります。
マスターは、VCSグループ全体としてのコンフィグ、MACアドレステーブル（FDB）、ARPテーブル、IPルーティングテーブルを維持管理し、これをスレーブに配布します。
スレーブは、マスターから配布された情報をもとにこれらテーブルの同期をとり、つねに最新の状態を保つことにより、VCSグループ全体で同じ情報が保持されるようにします。
これらの情報をもとに、マスター、スレーブのすべてのメンバーが、仮想スイッチとしてレイヤー2・レイヤー3の転送動作を行います。なお、このとき、仮想スイッチのMACアドレスとしては、VCSグループ専用のバーチャルMACアドレスを使います。
Note

バーチャルMACアドレス機能は、stack enableコマンドでVCS機能を有効化すると自動的に有効化されます。stack virtual-macコマンドをno形式で実行することにより無効化もできますが、VCS使用時は必ずバーチャルMACアドレス機能を有効にした状態で運用してください。無効状態での運用はサポート対象外となります。

### 障害発生時

#### 障害検出メカニズム

VCSでは、次の2つの状態を監視することでVCSグループの障害を検出します。

- スタックポートのリンク状態
- スレーブにおけるヘルスチェックメッセージの受信状態（レジリエンシーリンク経由）

これらの2つの状態の組み合わせによって、次に示す4とおりの判断が行われます。

| ヘルスチェック
成功 | 失敗（4回連続受信できず）
スタックリンク | アップ | 正常 | レジリエンシーリンク障害
ダウン | スタックリンク障害 | マスター障害

Note

ファイバースタックモジュール使用時はレジリエンシーリンクの使用が任意のため、レジリエンシーリンクを使用しないケースがありますが、その場合はヘルスチェックメッセージの送受信を行わないため、「レジリエンシーリンク障害」と「マスター障害」（網掛け部分）は検知できません。

#### 障害発生箇所と影響

実際のネットワークでは、VCSグループだけでなく、VCSグループに接続された回線の障害なども起こりえます。以下では、VCS構成で起こりうる障害とそれらの影響についてまとめます。

障害発生箇所 | アクション | 通信停止時間（目安）(a)
マスター | スレーブ
1 | マスター障害 | システム停止 | マスター昇格 | 約0.5秒～
2 | スレーブ障害 | 変化なし | システム停止 | 数ミリ秒単位
3 | スタックリンク障害 | ケーブル(1箇所) | 変化なし | 変化なし | 数ミリ秒単位
ケーブル(複数箇所)またはモジュール | 変化なし | マスター接続性あり：変化なし | 数秒単位
マスター接続性なし：ポート無効化(b)
4 | レジリエンシーリンク障害(c) | 変化なし | 変化なし | 影響なし
5 | 回線障害（トランクリンク） | 変化なし | 変化なし | 数ミリ秒単位

Note

(a) 実際の通信停止時間はネットワークの構成や規模、使用しているプロトコルなどによって変動します。ここに示した時間はあくまでも目安です。お客様の使用環境で事前にご確認の上、ご使用ください。

Note

(b) レジリエンシーリンクとスタックリンク以外のポートを無効化します。なお、ファイバースタックモジュール使用時はレジリエンシーリンクの使用が任意のため、レジリエンシーリンクを使用しないケースがありますが、その場合はスタックリンクを経由する以外にマスターの生存を確認する方法がないため、ケーブル（複数箇所）障害やモジュール（ファイバースタックモジュール）故障により、「マスター接続性なし」の状態になったスレーブの1台がマスターに昇格し、ネットワーク上に複数のマスターが存在する状態となります。ネットワーク構成にもよりますが、この状態では正常な通信ができなくなる可能性が高くなります。また、この状態からの自動復旧はできません。これを回避するには、ファイバースタックモジュール使用時でもレジリエンシーリンクを使用してください。

Note

(c) ファイバースタックモジュール使用時はレジリエンシーリンクの使用が任意のため、レジリエンシーリンクを使用しないケースがあります。その場合、「レジリエンシーリンク障害」は発生しません。

VCSネットワークにおいて想定されるこれらの障害のうち、VCSグループ自体の障害は1～4の4種類です。さらに、これらのうちで実際にVCSグループとしてのアクションがとられるのは1（マスター障害）と3（スタックリンク障害）の2つになります。以下では、これらの障害時にVCSグループがとるアクションを説明します。

##### マスター切り替え

本製品は、マスター/スレーブ間でコンフィグ情報やL2/L3 テーブル情報を事前に共有することで、VCSマスター障害発生時のマスター切り替えをスムーズに行う動作に対応しています。
マスターに障害が発生し、マスターが完全に停止した場合は、次の流れでマスターの切り替えが行われます。

1. マスターに障害が発生する
   これによりスレーブはマスターとのスタックリンクがダウンしたことをただちに検出する。
2. ヘルスチェックが途絶える
   マスター停止により、スレーブはレジリエンシーリンク経由でマスターから送信されるヘルスチェックメッセージを受け取れなくなる（ヘルスチェックメッセージは0.5秒間隔でマスターからスレーブに送信される）。ヘルスチェックを4回連続して受信できなかった場合、ヘルスチェック失敗と判断し、スタックリンクのダウンとあわせてマスター障害と判断する。
   ※ ファイバースタックモジュールを使用しておりレジリエンシーリンクを使用していない場合、2はスキップ。
3. 次点のスレーブがマスターに昇格する
   バーチャルMACアドレス機能により、VCSグループのMACアドレスは変化しないため、MACアドレスの変更に起因する通信断はありません。
   Note

   バーチャルMACアドレス機能は、stack enableコマンドでVCS機能を有効化すると自動的に有効化されます。stack virtual-macコマンドをno形式で実行することにより無効化もできますが、VCS使用時は必ずバーチャルMACアドレス機能を有効にした状態で運用してください。無効状態での運用はサポート対象外となります。

4. マスター切り替え完了

なお、本動作を有効に機能させるために、次の点に注意してください。

- VMAC（バーチャルMACアドレス）の設定が必要
  VMAC無効時は、マスター切り替えが発生すると、Gratuitous ARPパケットを送信して、ARP/MACアドレステーブルの更新を行うため、VMACを有効にしている場合に比べ、マスター切り替えの時間が遅くなります。VMACを有効にした場合、各テーブルの更新が発生せず、切り替え時間が早くなります。
  Note

  バーチャルMACアドレス機能は、stack enableコマンドでVCS機能を有効化すると自動的に有効化されます。stack virtual-macコマンドをno形式で実行することにより無効化もできますが、VCS使用時は必ずバーチャルMACアドレス機能を有効にした状態で運用してください。無効状態での運用はサポート対象外となります。

##### スレーブのスイッチポート無効化

スタックリンクに障害が発生した場合、すなわち、両方のスタックケーブルに障害が発生するか、いずれかのスタックモジュールに障害が発生した場合は、VCSグループが2つに分断されてしまいます。この場合、マスターが複数存在することになってしまうので、このような状況が発生したときは、次の流れでスレーブのスイッチポートをすべて閉鎖し、すべてのトラフィックがマスターに向けられるようにします。

1. スタックリンクに障害が発生する
   これによりスレーブはマスターとのスタックリンクがダウンしたことをただちに検出する。
2. ヘルスチェックは引き続き受信できる
   スタックリンク障害の場合、マスター自体は正常に動作しているため、スレーブはレジリエンシーリンク経由でマスターから送信されるヘルスチェックメッセージを引き続き受信できる。このため、ヘルスチェック成功、スタックリンクダウンの組み合わせとなり、スタックリンク障害が発生したと認識する。
3. スレーブがスイッチポートを無効化する
   スタックリンク障害を検出したスレーブは、レジリエンシーリンクとスタックリンク以外のポートを無効化する。これにより、スレーブのスイッチポートはリンクダウンする。
4. VCSグループ宛てのトラフィックがすべてマスターに向けられるようになる
   VCSグループに接続されている他の機器は、スレーブとのリンクがダウンしたことを検出し、VCSグループ宛てのトラフィックをすべてマスターとのリンクに送信するようになる。

なお、ファイバースタックモジュール使用時はレジリエンシーリンクの使用が任意のため、レジリエンシーリンクを使用しないケースがあります。その場合にケーブル（複数箇所）障害やモジュール（ファイバースタックモジュール）故障が発生してVCSグループが分断されると、マスターと切り離された側のスレーブの1台がマスターに昇格し、ネットワーク上に複数のマスターが存在する状態となります。ネットワーク構成にもよりますが、この状態では正常な通信ができなくなる可能性が高くなります。また、この状態からの自動復旧はできません。これを回避するには、ファイバースタックモジュール使用時でもレジリエンシーリンクを使用してください。

## ナビゲーション

VCSの導入手順については、第2部 導入編をご覧ください。