EVPN-VXLANとは何か

えーどうもこんにちは、怪しげなことを怪しげなラボでやりつつうぇーははっはは、これでおうちがデータセンターじゃーって謎な奇声をあげることで近所に煙たがられているInfrabbitです。

なにやってんでしょうね。

さて、EVPN-VXLAN。どこのご家庭にも必ず一つはあるという、便利なネットワーク。

いや、便利ではないだろ…。むしろいまどき要るのか?って疑問をぶん投げられる側だろ…。

 

まず、こいつは何者か、という話をしましょう。
EVPN、VPNの名前の通り、遠隔と遠隔をつなぐ技術です。Eのことは気にしてはいけません。あと、なんで必要なのかも気にしてはいけません。確実にご家庭には必要ありません。というかそこそこの企業さんでもまず必要ありません。ちなみにEはイーサネットのEらしいです。EnhancedでもExtendでもありません。安直すぎる。せめてExtractとかEnbeddedとかなんかもっとかっこいいの無かったのか。意味的にはEthernetでいいんだけどもw

VPNがあればだいたい足ります。あなたの会社のVPNルータの対地数が1000セッションなのに冗長経路含めて全拠点とメッシュ組んだら1000じゃあ全然足りなくなったんだけど!とか言い始めたら考えますが、ぶっちゃけじゃあその状況でEVPN-VXLANが採用されるか、って言ったら採用しません(ぉぃ。

そもそも対地数デカいルータ買うほうが安上がりですし、なんならルータを並べるほうがマシです。対地数制限ってただのCPUのパフォーマンス不足というだけの話なので、スケールは横に広げればいいだけです。何もCPUパワー足りないからネットワークをネイティブにL2で延伸しようぜ。とか言い出したらただのアホの所業だと思います。

というわけで、IPSec対地数が飽和したんなら、ルータ増やす方が手っ取り早いし、そうじゃないならエンドポイントをAWSとかに置けばいいだけです。あとはクラウドが勝手にエンドポイントをスケールするので、好きなだけメッシュ組んでください。札束で殴れる限り。今日はこれだけ覚えて帰ればOKです。これ以降はすべて忘れて人生に何の影響もありません。

はい。じゃあお前何やってんの。って話ですよね。VPNの名前を冠していますが、ぶっちゃけVPNかというとそうでもないんですよね。まあVPNっちゃあVPNなんですが、IPSecにどっぷりつかってVPN=トンネルインターフェースだよってのとはまたちょっと違います。

EVPNは、L3であるTCP/IPネットワークを足場にして、その上にL2ネットワークを構築する技術です。このL2のネットワークがカプセル化され、L3を通って相手側に届き、相手側でL2ネットワークに戻る。という、L3ネットワーク構造を土台にした、L2ネットワークの延伸技術です。

バカのやることに聞こえたら、だいたい合ってます。

で、このL2ネットワークの上にL3を組む、というのがまあ簡単に言ってしまえばEVPN-VXLANの中身です。
なんでそんなことするのか、というとまあ必要だからするんですが、お前の自宅にそれは必要だったのかと聞かれたら、全く必要ないですw

どんな時に使うか、というと、まあ基本的には単一のネットワークセグメントを遠隔地含めて広げたい、というときに使います。

例えば、拠点AのHCIクラスタにいるVMをライブマイグレーションで無停止で拠点BのHCI基盤にマイグレーション。これ、L3でもやろうと思えばできなくはないんですが、自然にこれをやろうと思うと、L2レベルでの同一ネットワーク空間でないと結構つらい。

なので、L2が拠点Aと拠点Bでつながってないと困る。

ちなみにL2が遠隔で接続されるのってデメリットもクソデカくて、どっかの誰かがうっかりブロードキャストストームでもぶっ放そうもんなら、拠点AだけでなくBも巻き込まれて死にます。L2が延伸する、というのはL2のダメージをそのまま境界なく両拠点で引き受ける、ということにほかなりません。

まあ死ぬのは延伸してるL2から上なので、安心ですね。とか思うかもしれませんが、土台になってるL3ネットワークをパケットは通るので、被害は拡大します。えげつないですね。土台側のL3は明確にQoSやRateLimitで身を守ってください。何もしなかったらあなたも巻き込まれて死にます。でもうっかりそういうことすると、OverlayのL2/L3が制限喰らうことにもなるので、勝手に制限するのもやめましょう。

という、実にネットワーク屋を物理でぶん殴る技術です。

要するに、iDCと専用線、なんて引いてたと思うんですが、あの専用線を仮想ネットワークの上に引く、という技術です。

 

まあ、必要なとこには必要なんですが、近代ではL3を延伸して、L3で出来ることはL3でやりましょう、ということになっています。というかL2を延伸したくないので。

クラウドのデータセンターなんかのSDNであるVPCだとかは、ナチュラルにL3での結線です。L2は伸ばしません。だからAZでサブネットは分離するし、CIDRは分断しますし、AutoScalingはIPを継承しないし、ライブマイグレーションは網内ならできるとは思いますが、網を超えて境界を飛び越えることはしませんし、できません。やりたくもありません。

で、世の中の大体のことはL3で済むようになっています。わざわざL2伸ばさないとどうにもならないのはそれはたいていの場合設計が悪い、と言われかねません。例えばドメインソケット通信しかできないアプリとか。TCP理解できないアプリとかはこれに該当します。

あとMACにブロードキャストぶん投げて通信するとかしてるやつとか。

そんな奴いねえだろ、って思うかもしれませんが、これは居ます。それもわりと皆さんの身近に。例えば無線LAN APが声高に歌ってるなんちゃらメッシュ!とか言ってるのは、結構こういうことをします。近隣のAP探索にMACブロードキャストぶん投げて、仲間がいるか探す、LLDPにちかいことをやってたりします。っていうかLLDPの一種ですが。

あと、ルータやスイッチを買ってきて、PCにアプリ入れたらネットワークスキャンして設定画面に入れるようにしてくれたりするアプリ、あれもMACだけでやらかしてます。つまりL2です。

なので、L2延伸すると拠点BのSDNの上に無線LAN APとかスイッチをつなぐと、探索されてきます。まあSDNにどうやって繋ぐんだよバカ。って言われますけれど。

まあそんな感じで、L2はそれなりに利用はされるんですが、そもそも拠点内で本来は閉じてほしいネットワークです。拠点から漏れ出てしまっていいものではないのです。漏らしたくもないし、漏れたらトイレに駆け込まなきゃいけないし、電車で漏らすと大変迷惑なことになりますので、おもらししたくないんですが、それでもたまにこのL2を引き延ばしてリモートにL2でつなぎたいケースがまれに発生します。

いや、最近はしないかもしれない、というかまあそうなりそうになったらL3に収束できないお前が悪い。って言ってアプリの改修させる方が圧倒的に正しいので。

そもそもこんな技術投入する時点で、L2伸ばす原因になってるものを改修するほうが絶対に安いし、改修不可なら迂回する手段考えるほうが絶対に安全です。どう考えたって、真正面から、じゃあL2伸ばしましょう。ってならない。

 

うん、なんで組んだんだろう、EVPN。自分でもよくわかんないけど、組んだからには使いたい。

 

AWSでPVE動かしてSDNつなごっかな…。PVE動くのかな、やったことないけど。まあ最悪FRR動けば何とかなる。

さて、このEVPN-VXLANはカプセル化はするんですがトンネルはどこにも作りません。OverlayのL3が普通にL2カプセルに詰め込まれて、VTEPを目指して普通にUnderlayを普通のパケットのツラして通り抜けて相手先でOverlay L2がまろび出て、それをほどいてOverlay L3に戻る。なので、L2が延伸するわけです。相手側でもL2が顔を出すので。そもそもL2伸ばしてんだから暗号化とかしちゃダメなことはわかるよね。暗号化とかはL3レイヤでやることなので、UnderlayのL3がやればいいのであって、OverlayのL2がやったらむしろダメ。相手側でほどけたL2が暗号化されてたら誰も読めねえだろうがwwww

IPSecとかは普通にL3がカプセルされて、相手先でほどかれた時もL3が現れます。相手先でL2がぼろんっとコートの下からこんにちわするのか、それともちゃんと服着てるL3がコートの下から出てくるのか、という違いしかありませんが、この違いがデカいわけです。片や猥褻物陳列罪ですからね。そりゃあデカいですよ、ナニが。

と、こんな感じの仕様となっております。

あ、脳死で暗号化ないならゴミくずじゃん。とか思う方はちょっとどうかと思いますけれど、それってL2/L3を正しく理解できてない、ってことになります。

L2なんて暗号化はそもそもできないし、しちゃダメです。暗号化をするのは、L3です。L2ネットワーク、とはそもそも、Macアドレスと物理インターフェースをつなぐ世界の話で、基本的にネットワークカードの中に閉じてるんです。だから外に漏らしたくないし、そもそも物理とMACの世界なので、ルータも本来超えられません。ルータはL3なので、L2パケットはそれ以上すすめません。だってL3の宛先なんかどこにも書いてないし。

要するに、Underlay のL2(UnderlayのL3 ( OverlayのL2 ( OverlayのL3 ) ) ) )という謎パケットが爆誕してさまよってくる、という話です。

で、このOverlayのL2暗号化してどうすんだよ、という話。暗号化する/されるのはUnderlay L3であるべき。で、VTEPとかはこのOverlayの到達先、に近い概念ですね。正確にはほどけたL2を処理できる子、のアドレス、ということになります。Underlay L3がパケット紐解いたときにOverlayのL2の宛先がまろび出てもわけわからんので、OverlayのL2の到達先、として示されるL3のアドレス、がVTEPです。もう何言ってんのかわかんないね。とりあえずここに届ければパケットほどいてL2が出てきても大丈夫!という仕事をしてくれる人のアドレス、ということになります。

というわけで、L2がまろび出ても大丈夫な人、のアドレスは当然相手にも告知されないといけないので、このVTEPアドレスは相手側にも通達されたりしますし、UnderlayのL3の構成ルータの人たちはこのアドレスを誰に伝播させるのか、とかによってOverlay L2の到達範囲が決まります。多分100人読んでたら95人くらいもう脱落してると思う。

僕ももうわかんないw

よし、整理しましょう。

EVPN-VXLAN、これどちらもOverlayのL2の話をしています。OverlayのL3のことなんて、基本的に大して考えていません。だってただのL3だし、L2ができてりゃ成立するし。L3なんてちゃんとIP振られたらもうそれ以上のこと考えなくていいし(暴論

で、EVPNはOverlayのL2パケットをUnderlayのL3の中でどう運ぶか、どこへ運べばいいのか、というルーティング部分を担います。なので、EVPNはUnderlayのL3のルーティングプロトコルにどのアドレスがどう、とかL3をしゃべる必要があります。ここが大変ごっちゃになりやすい。というか僕もごっちゃになります。三日置いといたら忘れます。

一方のVXLANは単純にVNIベースの普通のVXLANです。なのでぶっちゃけあんまり悩むとこはありません。MTUに気をつけようね。くらいしか言うことがありません。

Q in Qとかもそうですね。こっちはもっとシンプルだけど。VLAN tag  in VLAN tagというシンプルな解法ですね。4096 x 4096でタグ拡張すればええやん!みたいな。VNIみたいに24ビットも誰が使うねん。という至極全うなツッコミで、そりゃそうだ、という話。まあ、こっちはベースがVLANだからそもそもルータ超えられなくてコートの下がすっぽんぽんなのに玄関から出られません、という話もあるんですが。

誰が1600万ものVLAN IDをちゃんと使うのか、と言われたら、そりゃ使わないだろうなぁw

と思ってたのですが、現実としてはEVPN-VXLANやBGP VXLANによる覇権。まあQ in Qはタグ二重構造が扱いにくいわよねwという至極全うな結論。入れ子は普通に使いにくかったというだけの話。

 

まあなんというか、世の中からは見えない場所、主にiDCだとかで基本的には活躍する技術ですね。L3ネットワーク自体は組みやすいので、これを組んでおいて、その上にテナントに分離した独立したL2を提供する、クライアントからは完全に分離した独立L2がわたってきているように「見える」。

所謂、iDCを介した他拠点接続とかはIPSecもありますが、こういう技術でつないでるものもあるかと。

 

で、これを家で作った理由か? ないけど??? え、あると思って聞いてたの?w