EVPN
MACアドレスなどの到達情報をBGPで交換し、離れた拠点や装置の間でイーサネットの接続を制御する技術である。VXLANやMPLSと組み合わせ、端末の所在や冗長な接続先を共有する。
イマシルちゃんの解説
離れた場所のサーバへフレームを届けるには、どのスイッチの先にいるのかを知る必要があるよ。
通信が流れてくるたびに覚える方法もあるけれど、先に接続情報を教え合えたら送り先を選びやすいよね。
EVPNは、ルータが経路を交換するBGPを使って、サーバのMACアドレスと接続先を知らせ合う技術なんだ。
実際のフレームはVXLANなどの仕組みで運ぶよ。
サーバが移動したときも、新しい接続先を伝えられるんだ。
複数のスイッチにつないだサーバでは、その接続関係も共有して、通信の重複やループを防ぐために使うよ。
この解説はわかりやすかったですか?
より深い解説
運ぶ仕組みと知らせる仕組みを分ける
EVPNはEthernet VPNの略である。RFC 7432ではMPLSを使う構成が定められ、RFC 8365ではVXLANなどのIPネットワーク上のトンネルへ適用されている。EVPNとVXLANは同義ではなく、組み合わせて役割を分担する技術である。
| 役割 | VXLANを使う構成の技術 | 扱う情報 |
|---|---|---|
| データプレーン | VXLAN | 利用者のフレームをカプセル化して運ぶ |
| コントロールプレーン | EVPNとMP-BGP | 端末の到達先やネットワークの参加先を知らせる |
制御情報を交換できても、その情報が指すVTEPへIPパケットを送れなければデータは届かない。反対にVTEPへのIP到達性があっても、正しい仮想ネットワークへ接続するための情報が不足すれば通信できない。この二つの状態を区別することが障害解析の出発点になる。
MP-BGPで到達情報を交換する
MP-BGPは、複数の種類の経路情報を扱えるようにBGPを拡張した仕組みである。EVPN用のアドレスファミリーを使うと、IPプレフィックスだけでなくMACアドレスなどの情報もBGPで広告できる。
VXLANと組み合わせた基本的な動作では、VTEPが接続された端末を学習し、その到達情報をEVPNの経路として広告する。受信側は必要な経路を取り込み、端末宛てのフレームをどのVTEPへ送るかを決める。ローカル側の端末情報は受信フレームなどから学習するため、EVPNの導入であらゆるMAC学習が不要になるわけではない。
EVPNには目的が異なる複数の経路タイプがある。主要なものは次のとおりである。
| タイプ | 経路の名称 | 主な役割 |
|---|---|---|
| Type 1 | Ethernet Auto-discovery | 冗長な接続先の把握や障害時の一括撤回に使う |
| Type 2 | MAC/IP Advertisement | MACアドレスと、必要に応じて関連するIPアドレスを広告する |
| Type 3 | Inclusive Multicast Ethernet Tag | BUMの配送に参加する装置やトンネルの情報を知らせる |
| Type 4 | Ethernet Segment | 同じ接続区間を共有する装置を発見し、転送役の選出に使う |
通常のiBGPで全装置間のセッション数が増えすぎる場合は、ルートリフレクタがクライアント間の経路情報を中継する。これは制御情報の配布を集約する仕組みであり、利用者のフレームを必ずルートリフレクタへ通すものではない。BGPセッションの構成と実際の転送経路を分けて考える。
識別子は役割で区別する
複数の利用者が同じ装置を共有すると、MACアドレスやVLAN番号が重なる場合がある。EVPNでは経路自体の区別と、どの仮想ネットワークが経路を受け入れるかを別の情報で扱う。
| 情報 | 表すもの |
|---|---|
| RD(Route Distinguisher) | 別の仮想ネットワークなどが広告する経路を区別するための値 |
| RT(Route Target) | 経路に付け、受信側が経路を取り込む条件との照合に使う属性 |
| VNI | VXLANのパケットで論理的なネットワークを識別する番号 |
| ESI | 複数の装置が共有するEthernet Segmentの識別子 |
RDが異なることだけでは経路の取り込み先は決まらない。RTの設定が合わなければ、BGPで受信した経路を必要な仮想ネットワークへ取り込めない。VNIが同じかどうかと、経路の配布・取り込みが正しいかどうかは別々に確かめる。
BUMを配送する
BUMはBroadcast、Unknown Unicast、Multicastをまとめた呼び方である。Unknown Unicastは宛先MACアドレスの到達先が未学習のユニキャストを指す。これらは一つの既知の接続先だけでは処理できないため、論理的なLANに参加する装置へ広く配送する必要がある。
EVPNは参加先をType 3の経路などで知らせる。配送にはアンダーレイのIPマルチキャストを使う方法と、イングレスレプリケーションを使う方法がある。後者は入口のVTEPがフレームを複製し、参加する各VTEPへユニキャストで送る方式である。EVPNを導入しただけで一方に決まるわけではない。
リモートVTEPに接続された端末のMACアドレス、その仮想ネットワークを表すVNI、到達先のVTEPのIPアドレスを対応付けて学習すると、フレームの転送先を事前に決められる。これによってUnknown Unicastによるフラッディングを減らせるが、ブロードキャストまで自動的になくなるわけではない。IPアドレスとMACアドレスの対応を利用してARP要求などに代理応答する機能を組み合わせる場合も、必要な対応情報や装置の機能を確認する。
冗長な接続区間を識別する
EVPNマルチホーミングは、一つの接続区間を複数のEVPN対応装置へ収容する仕組みである。この区間をEthernet Segmentと呼び、ESI(Ethernet Segment Identifier)という10オクテットの値で識別する。同じ区間へ接続する装置は同じESIを共有する。ESIはVNIやサーバのMACアドレスを置き換える番号ではない。
All-Activeでは複数の接続を同時に転送へ利用できる。例えばリンクアグリゲーションを組んだサーバを複数のスイッチへ接続する構成がある。Single-Activeでは、対象のサービスについて一台を転送に使い、他を待機させる。
All-Activeで同じBUMが複数のスイッチからサーバ側へ届くと、フレームが重複する。これを防ぐため、ネットワーク側から対象区間へBUMを転送する代表としてDF(Designated Forwarder、指定フォワーダ)を選ぶ。担当はEthernet Segmentと対象のサービスの単位で決まり、通常のユニキャストもすべて一台へ集中させる意味ではない。
同じ区間から出たフレームをネットワーク経由で元の区間へ戻さない制御も必要になる。VXLANでは共有する接続区間とトンネルの送信元などを基に判定し、折り返しによるループを防ぐ。ESIを一致させるだけでなく、サーバ側のリンクアグリゲーションやVLANも整合させる。
移動と障害を経路の変化で伝える
端末が別のEthernet Segmentへ移動すると、古い接続先と新しい接続先の情報が同時に見えることがある。MAC Mobilityではシーケンス番号を用いて移動の順序を表し、新しい到達情報への更新と古い広告の撤回を進める。同じ区間へ複数の装置が接続するマルチホーミングとは区別する。
冗長な接続の一つが故障した場合は、Ethernet Auto-discovery経路の撤回を利用して、その接続先へ依存する多数のMACアドレスの到達情報をまとめて更新できる。MACアドレスごとの変更を一件ずつ待つだけの方式より、切替えを進めやすい。
こうした制御も障害を瞬時になくすものではない。検出、経路撤回の伝達、転送表の更新が完了するまでの時間は必要になる。また、EVPNはフレームを暗号化する機能ではなく、VTEP間の到達性やアクセス制御も別に設計する。
参考資料
- RFC 7432:EVPNは経路タイプ、識別子、マルチホーミング、MAC移動の基礎を定めている。
- RFC 8365:EVPNを利用したオーバーレイはVXLANへの適用と、BUMの配送や冗長構成の動作を説明している。
- RFC 4760:BGPのマルチプロトコル拡張は異なる種類の経路情報をBGPで運ぶ仕組みを定めている。
実際の試験ではここに出る!全1問
ネットワークスペシャリスト
- 午後Ⅱ