# VPC: [Design and Configuration Guide: Best Practices for Virtual Port Channels (vPC) on Cisco Nexus Series Switches](https://www.cisco.com/c/dam/en/us/td/docs/switches/datacenter/sw/design/vpc_design/vpc_best_practices_design_guide.pdf) vPCはマルチシャーシLAGである。主な利点は以下の通り。 - STPのブロッキングがなく、帯域をフルに活用できる - 障害時の高速なコンバージェンス - (設定が正しければ)ループフリー vPCは2023年現在2台のスイッチで構成が可能である。特別なライセンスは必要がない。この2台のスイッチは同一のvPCドメインで構成される。 vPCメンバポートとは、いわば配下のポートであり2台のスイッチから接続される。通常この配下のスイッチはLAGが組まれる。 OrphanポートはVPCを組まずにVPCドメインの片側のスイッチのみに接続されるポートである。つまり、シングルリンクの回線である。 vPCのループ回避のため、メンバポートからピアリンクを経由したトラフィックはメンバポートに戻れず、L3ポートかOrphanポートからしか出られない。 メンバポート側のデバイスはLAGをサポートしていればよい。これはstaticでも良いし、LACPでも良い。LAGは必須ではなく、STPをサポートしている、あるいは片足(Orphan)でもよい。 vPCドメインは多段で有効にすることもできる。例えばCore-Aggの両方のロールがvPC構成でもよい。また、DCIを接続することもできる。ただし、vPCは最大でも2DCまでの接続を前提としていることには留意すべき。3以上のDCを接続する場合はIP CLOSを推奨する。 vPCを組む場合の以下の手順で行う。 - VPCのドメインIDを設定する - 両側のデバイスでvPC peer keepaliveのリンクを張る - vPC peer linkをLAGで張る - アクセス側(メンバポート配下)の機器でLAGを設定する - VPCスイッチでVPCのメンバポートの設定を行う vPCのドメインIDはLACPの一部としても使われるので、LACPでも同じ番号である必要がある。vPCの重要な特性として両者のconfigを強制的に変更はしない。 vPCではPri/Secの役割が決まる。この役割はPeerLinkがdownした際、Sec側はメンバポートをダウンさせてる。これは接続性が回復しても回復しない。これはvPCはPreemptをしないためであり、復活させたい場合は手動で行う必要がある。 vPCはMDS製品(Storage)で使われていたCFSを用いる。このため、`show cfs status`などでこの状態を確認できる。ただし、確認する必然性はない。 さて、vPCのpeerを設定するとpeerは整合性を確認する。これにはクリティカルなtype 1と予備的なtype2のチェックがある。type1のチェックは通信に大きな影響がある不整合性であり、これが整合しない場合、セカンダリ側のVPCのメンバポートはshutdownされる。 特にtype1のパラメータ整合性を確認した場合は`show vpc consistency-parameters global`コマンドが非常に役にたつ。また、特定のメンバポートの情報を確認したい場合、`show vpc consistency-parameters interface port-channel`コマンドも非常に有用である。 vPC peer keepaliveについて説明する。これはUDP 3200を使ったキープアライブタイマであり、1pps程度で行われる。このポートは専用の線であると最もよく、mgmtでもよい。その他の選択肢はできれば避けて欲しい。絶対にダメなのは`VPCリンク上でキープアライブをしてはいけない`。 なお、mgmtでリンクを組む場合、シャーシ型スイッチであればact/sbyの両方のmgmtが同一リンクに所属していることが必須である。 vPC peerリンクについて考える。このリンクはvPCトラフィック(フラッディングなど)を運ぶとともにOrpahnポートのトラフィックも運ぶ。このリンクで重要なのは`物理をP2Pで繋ぐ`ことが強く推奨される。また、シャーシ型であればラインカードを分けて構成すること。この際、バッファサイズなどが違うポートは指定されるべきでない。つまり、異速度で組まない方が良い(ということのはず) peerリンクはメンバポートの片側が故障した時にユニキャストフレームを転送するが通常は利用されない。このリンクではメンバポートのvlanが許可されていないといけない。 先に説明したが、peerリンクが落ちるとセカンダリ側のSVIなどがおちる。このため、*Orphenポートの重要な注意点として* dual-active exclude intコマンドでSVIが落ちないようにc衣sておくべきである。 また、vPCはオブジェクトトラッキングをサポートする。最も基本的な使い方は上流が落ちた場合の迂回である。通常、Core側への通信はLAGなどが組まれているだろうが、それらが落ちた時にトラフィックを吸い込まないためにそれらおトラッキングすることができる。つまり、トラッキングの対象として`vpc domain x`を指定できる。 非VPC VLANとは、VPCに所属せず、VPCピアリンクに存在しないvLANのことである。 VPCの推奨事項について Peer-SWからみてメンバポートにはRootGuardを入れておくことが望ましい。つまり、PrimSecはそのままSTPのPrimSrcRootになってほしい。 メンバポートの下にいるアクセススイッチはさらに下流に対してEdge(portfast)設定を入れてよく、BPDUガードが入っていて良い。 VPCのSTP機能について補足すると、PriSW側でのみ動作する。もしSecSWがBPDUを受け取るとこれをPriに送る