こんにちは、インフラ部ネットワークグループの松原です。私が所属しているグループでは、データセンター内のネットワークをより最適な環境にするための業務を担っています。
昨年末から今年7月にかけてEVPN/VXLAN環境構築プロジェクトを行いました。そのプロジェクト内で構築したネットワーク環境とその技術についてご紹介します。
EVPN/VXLANとは
EVPN/VXLANはEVPNをコントロールプレーン、VXLANをデータプレーンとして、既存のL3ネットワーク上に論理的なL2ネットワークを構築し、L2ネットワークの延伸を行う際に用いられます。
コントロールプレーンであるEVPN(Ethernet VPN)は、RFC7432で定義されている、広域EthernetサービスやDC間のL2ネットワーク延伸技術です。BGPのシグナリングを用いて、IPおよびMACアドレスの広報を行なっているのが特徴です。
また、VXLAN (Virtual eXtensible Local Area Network)は、L2イーサネットフレームをL3のUDPパケットにカプセリングする技術です。
VLAN IDではL2セグメントは4094個という数の制限がありましたが、VXLANではVXLAN Network ID(VNI)を用いて、約1,600万のVXLANセグメントへ拡張することが可能です。
VXLANのカプセル化とカプセル解除は、VXLAN Tunnel Endpoint(VTEP)と呼ばれる機器で行われます。
なお、EVPN/VXLANのより詳しい技術については、Arista Network社のブログで紹介されています。
EVPN/VXLAN環境構築の背景
EVPN/VXLAN構築プロジェクトが行われた背景としては、仮想基盤環境を構築しているグループから、データーセンター内にある基盤のリプレースを行うと話があったことがきっかけでした。
仮想基盤環境には、DMM.com Groupの各種サービスで使用されているVMが数多くあります。既存環境とは別拠点にリプレースするとのことでしたので、今後も柔軟にネットワークを移行しやすい構成が良いと考え、既存のL3ネットワーク上に、L2ネットワークの接続性を拡張できるEVPN/VXLAN環境を構築することになりました。
EVPN/VXLAN環境の紹介
今回新規構築した機器は、下記概略図内に記載されているcoreルータ配下の、external、spine、leafです。
externalはBackboneネットワークと接続し、新環境のネットワークを集約する役割を担っています。
spineは各leafを収容し、実際に仮想基盤が接続されるのは各leafです。externalと各leafがVTEPとなり、EVPN/VXLANをしゃべらせています。
構築したネットワークについて、L3ネットワーク部分の通称Underlay、L3ネットワーク上に構築する論理的なL2ネットワークである通称Overlay、インターネットに抜けていくBackboneネットワークとの接続の3つに分けて紹介していきます。
図1. 構築した環境のネットワーク概略図
Underlay
まずは、Underlayについてです。
coreルータからサーバを収容するスイッチleafまでBGPで構成しており、いわゆるIP CLOS環境となっています。
IP CLOSとはLeaf-SpineアーキテクチャをL3で構築する技術です。Google、Facebook、Yahooなどで採用されていることでも有名です。EVPN/VXLAN環境のUnderlayとして、拡張性の高いアーキテクチャとして採用されています。
各機器のBGPで使用するAS番号は4Byte-AS、external配下の機器間のlinkはIP Unnumberedを使用しています。
当初各機器の接続をOSPFで設計し、検証していたのですが、いざやってみると経路制御の設定が煩雑になり今後の運用が大変になると判断し、BGPに変更しました。
また、せっかくBGPで構成するなら新しい技術にチャレンジしてみよう、ということで4Byte-ASとIP Unnumberedを採用しました。
4Byte-AS
4Byte-ASは、従来の2Byte-ASが需要増加に伴い枯渇するため、拡張されたAS番号のことです。
4Byte-ASのプライベートAS番号は4200000000〜4294967294が範囲となっています。
各機器のAS番号は、42以降の8桁の番号で拠点、役割が分かるように意味のある数字を設定しています。
図2. 各機器に設定している4Byte-ASの例
IP Unnumbered
IP Unnumberedとは、IPv6のリンクローカルアドレスを用いて、アドレスを指定することなくBGPの隣接関係を構築する手法です。
IPv6リンクローカルのBGPセッションはIPv4の到達性も確保されています。そのため、IP Unnumberedを利用することで、IPv4アドレスを節約することが可能になりました。
今回新規に12台スイッチを構築したため、機器間のIPを通常通りにアサインをしていくと、24アドレス消費してしまいます。IPv4アドレスは世界で枯渇しており、DMMでの所有数も潤沢ではないため、少しでも消費を抑えるに越したことはありません。
また、図3のようにIP Unnumberedでの設定内容がとてもシンプルだったことも採用の決め手になりました。赤字の部分がIP UnnumberedでBGPを構成するために必要な設定です。
図3. IP Unnumberedの設定例
IP Unnumberedを用いてBGPのneighborを確立した結果は図4のように表示されます。IPv4のneighborだったとしても、neighborのアドレスはIPv6のリンクローカルアドレスで表現されています。
図4. BGP neighbor確認結果
Overlay
続いて、Overlayについてです。
従来の構成の場合、leaf配下のL2通信はleafを超えて行われることはありませんでした。しかし、EVPN/VXLANを用いたことで、L3ネットワークを超えてのL2ネットワークの延伸を実現しています。
そのため、leafが他leaf配下のVMのMACアドレスを学習することができ、L3を超えてのvMotionを行うことが出来ます。その様子をご紹介します。
VTEPでのMACアドレス学習
VTEPで学習しているMACアドレス情報の結果の一部を図5に示しています。Pathには経由したAS番号が表示されているため、それらを見ることで、どのVMがどのleaf配下にあるのかが分かります。
また、VTEPは複数台あり、各VTEPでMACアドレスの情報を広報しあっているため、1つのMACアドレスに対してPathが複数存在しています。
図5. VTEP間で広報されているMACアドレス情報の例
トラフィックフロー
leafと仮想基盤内のVM間はL2で接続しており、leafより上位の機器はL3で接続しています。仮想基盤#1のvlan100のVMが仮想基盤#2にvMotionする際のトラフィックフローの例を図6に示します。
leafがVTEPの機能を担っているので、まずは仮想基盤#1が接続されているleafまでL2で通信していきます。
次に、leafでVXLANでカプセル化され、仮想基盤#2のleafまでL3で通信していきます。最後に、仮想基盤#2のleafでカプセル解除され、L2通信で仮想基盤#2へ到着します。
図6. vMotion時のトラフィックフロー例
Backboneネットワークとの接続
最後はBackboneネットワークとの接続についてです。
Underlayの部分で少し触れましたが、Backboneネットワークと新環境間では経路制御をしています。新環境内で直接Backboneネットワークと接続しているのはexternalです。
external配下側は、新環境配下のすべての経路をBackboneネットワーク側へ広報するよう設定しています。この設定により、Backboneネットワークは新環境配下のすべての経路を知ることができています。
一方Backboneネットワーク側は、externalに対してDefault gatewayを広報しています。
この広報によって、external配下の機器がインターネットに向かう際は、defaultルートに従ってBackboneネットワークへ向かいます。
また、新環境からBGPで受け取った経路を、既存環境へOSPFで再配送をしています。これは、coreルータ間がOSPFで構成されているためです。
ただし、弊社がcoreルータとして採用している機器では、経路選択で用いられるAD値でOSPFはBGPよりも優先されてしまうため、他coreルータからOSPFで学習した経路よりも、externalからBGPで学習したものが優先されるよう、coreルータ側でAD値の変更を行なっています。
図7. 経路制御について
さいごに
仮想基盤のリプレースに伴いEVPN/VXLAN環境を構築し、環境内で使用している技術とネットワーク構成についてご紹介しました。
EVPN/VXLANを採用したことにより、シンプルなL3ネットワークのUnderlayを介したOverlayネットワーク環境を構築し、L2ネットワークの延伸を実現しました。
DMM.com Groupの各種サービスを支えるEVPN/VXLAN環境は、導入後も安定稼働しています。今後も新しい技術を取り入れつつ、より最適なネットワーク環境を構築していく予定です。
現在ネットワークグループでは、一緒にDMM.com Groupの様々なサービスのシステムインフラを支えるメンバーを募集しています。
今回紹介したデータセンターネットワークだけでなく、Backboneネットワーク、ネットワークの自動化にも取り組んでいます。
ご興味のある方は以下の募集ページからご応募下さい。