15日目は@YoshidaYの「gRPCのシナリオテスト用コードを生成するprotocプラグインを作ってみた」です。よる拠点間の接続を試してみました。本記事は次の読者を想定しています。VPN技術があります。した技術と比べ、EVPN導入のメリットとして、次のようなものが挙げられます。Multihomingを実現していました。マルチベンダーで実現可能です。Horizonという仕組みを利用することでBUMトラフィックの抑制と最適化をします。経路収束が長期化する恐れがありますが、EVPNではこの問題に対処しています。planeが分離されています。planeでMACアドレスの学習を実現します。選択することができます。planeとしてNVOの1つであるVXLANを利用する、EVPN-VXLANを動かしてみます。EVPN-VXLANの構成要素と用語まずはEVPN-VXLANの構成要素と用語について確認しておきます。EVPN-VXLANの構成要素は図のとおりです。:EVPN網のエッジに存在する機器です。例:データセンタ内の物理/仮想マシン、ルータ、スイッチ等。router:コアネットワークのエッジルータです。Point)となります。router:コアネットワークのコアルータです。routerまで中継します。router内に作成され、特定のEVPNに紐づくインスタンスです。deviceを分離させたい単位でインスタンスを分けることもできます。deviceのMACアドレス情報を保持します。:MAC-VRFごとに一意の識別子です。CEに対して適切なMAC-VRFを選択するために使用します。:EVI上のMAC-VRFが、必要なMP-BGPの経路情報のみを受け取るために使用する属性値です。複数のRT値を付与して経路広告することができます。routerに接続するL2セグメントです。deviceがMultihomingで複数のPEに接続している場合にも、ESは1つなのでESIも1つです。routerに接続するL2セグメントの、一意の識別子です。routerのインタフェースに対して同一の値を設定しておきます。planeについて見ていきます。planeのMP-BGPによって行います。planeにはVXLANを使います。device間の到達性を実現します。routerまで転送されます。router上にEVPNの仮想インスタンス(EVI)を作成し、その中にMAC-VRFを保持します。上の図では2つのEVIが作成されているという想定です。routerではそれをテナントごとに区別して使う必要があります。routerがMP-BGPテーブル上で参照すべきMAC-VRFを決定します(上図)。routerはテナントごとに適切なMAC-VRFを選択してアドレス解決できます。RDは、あくまでテナントごとにMAC-VRFを選択するための識別子です。どのローカルMAC-VRFに経路情報を追加すべきか、RD値からは判断できません。VPNプレフィックスを広報します。roouterでは、RT値とMAC-VRFを対応付けています。一致するRT値に対応付けられているローカルMAC-VRFを更新します。routerが広告するVPNプレフィックスに対して、複数のRT値を付与することも可能です。planeでのパケットのカプセル化に利用されます。エッジとなるVTEP間において、L2のフレームはVXLANヘッダでカプセル化され、IP/UDPによって転送されます。いう識別子を用いて、L2ネットワークを分離します。IDに1:1でマッピングされて使われて使われることが多いと思います。本記事でも、EVPN-VXLANを動かして、CEに割り当てたVLANをVXLANで延伸します。router上のEVIで利用するため、EVIとVNIを対応付けておく必要があります。CustomerごとにMAC-VRF(すなわちMAC-VRFを持つEVI)を分けていました。EVIは共通で1つのものを使用し、VLANでCustomerを一意に識別することも可能です。planeとしてVXLANを使う場合、VNIとEVIのマッピング方法は次の2通りです。1:11つ目の方法では、EVIにつき1つのVNI(で表される1つのサブネット)がマッピングされます。そのため、特定のEVIのMAC-VRFのみに、経路広報先を絞ることができます。MAC-VRFは、RTとVNIの組み合わせによって一意に識別できます。自動化しない限り、その管理が煩雑になってしまいます。1:多2つ目の方法では、EVIに対して複数のVNI(で表されるサブネット)がマッピングされます。routerにも経路情報が学習されてしまいます。MAC-VRFはRTによって一意に識別可能です。MAC-VRFにおける特定のブリッジテーブルは、VNIによって一意に識別できます。複数作成する場合にはどちらの方法を使うか選択する必要があります。複数のVNIを収容します。スケーラビリティを考慮すると、特定のRTを持つEVIでのみMACアドレスを学習する、1の方法が一般的だと思います。deviceとしてLinuxマシンを使用して、検証環境を図のとおりに構築しました。65001を使ってみます。routerが同一ASに所属する構成を取ることにします。routerを接続しています。ESXiホスト上で稼働させました。routerの間はVLANによって分けられています。VLANを延伸するVXLANのVNIは共通のものを使用する必要があります。router同士でMP-iBGPのピアを確立しました。PEごとにAS番号を分け、MP-eBGPのピアを確立することも可能です。構築が容易であることを踏まえ、今回はMP-iBGPを採用しました。router同士がMP-iBGPのピアを確立する必要があります。Edgeの経路情報の広報には、前述のとおりMP-iBGPを利用します。MP-iBGPのピアを確立するために、まずはアンダーレイネットワークで到達性を確保します。router間の到達性を確保するためにOSPFを動かしています。(iBGPの必要性については後述します)。そこへの到達性も、このOSPFで確保します。routerのOSPFの設定は次のとおりです。OSPFのエリアに所属させます。その上でiBGPを動かしておきます。iBGPの設定は次のとおりです。VXLANオーバレイではiBGPによるベストパスが採用されます。Routingを動かすとよいでしょう。routerはBGPセッションでloopbackインタフェースのIPアドレスを利用します。疎通できるようにしておきます。loopbackインタフェースの経路情報を学習させます。65001に伝搬するためにiBGPを使います。65000内でiBGPを走らせたのはこのためです。自身のAS番号が含まれている経路広告は、ループ防止のために学習しません。routerが所属するASが同一になるため、ルーティングのループを防止しつつ通信できるように設定をします。routerに設定する、自身と同一のAS番号から広告された経路を学習するための設定は次のとおりです。自身と同じAS番号を2回以上検出した場合のみ経路を破棄します。同じAS番号のASからの経路情報には、自身と同じAS番号は1つしか含まれていないため、その経路は学習されます。router間でMP-iBGPのために到達性を確保したいのはloopbackインタフェースのみです。loopbackインタフェースのIPアドレスのみを広告することにします。routerが広告するようにします。routerのeBGPの設定に適用します。router同士の到達性を確保できるようになりました。deviceのMACアドレスを学習できるようにします。routerでVXLAN化されたパケットを伝送していくだけです。router間のみでMP-iBGPのピアを確立すれば問題ありません。device間のEnd-to-Endで到達性のあるネットワークを構築できます。routerのMP-iBGPの設定は次のとおりです。routerのEVIがMAC-VRFと対応付けられます。router上でEVIを作成します。してEVIを作成します。同一のRT値を設定したEVIからの経路を、対向のEVIのMAC-VRFでも学習します。VNIのマッピングを定義しておきます。最後に、Multihomingの設定をしておきます。routerを使ってリンクアグリゲーションすることができます。router同士が直接接続されていない場合でも、互いを識別しMultihomingを実現します。routerそれぞれに対して同じESIを設定します。routerの設定は次のとおりです。