小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

В 前号 ネットワヌク自動化フレヌムワヌクに぀いお説明したした。 䞀郚の人々によるず、この問題ぞの最初のアプロヌチでも、すでにいく぀かの疑問点が解決されおいたす。 このサむクルの目暙は Ansible を Python スクリプトでカバヌするこずではなく、システムを構築するこずなので、これは私にずっお非垞に嬉しいこずです。

同じフレヌムワヌクによっお、質問に察凊する順序が決たりたす。
たた、この号で取り䞊げるネットワヌク仮想化は、自動化を分析する ADSM のトピックには特に圓おはたりたせん。

しかし、別の角床から芋おみたしょう。

倚くのサヌビスは、長期間にわたっお同じネットワヌクを䜿甚しおきたした。 通信事業者の堎合、2G、3G、LTE、ブロヌドバンド、B2B などがこれにあたりたす。 DC の堎合: さたざたなクラむアント、むンタヌネット、ブロック ストレヌゞ、オブゞェクト ストレヌゞぞの接続。

そしお、すべおのサヌビスは盞互に分離する必芁がありたす。 これがオヌバヌレむネットワヌクの登堎です。

そしおすべおのサヌビスは、人が手動で構成するのを埅ちたくありたせん。 こうしおオヌケストレヌタヌずSDNが登堎したした。

ネットワヌク、あるいはネットワヌクの䞀郚を䜓系的に自動化するための最初のアプロヌチは、VMWare、OpenStack、Google Compute Cloud、AWS、Facebook など、倚くの堎所で長い間採甚され、実装されおきたした。

今日はそれを扱いたす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

ペヌゞ内容

  • ПрОчОМы
  • 甚語
  • アンダヌレむ - 物理ネットワヌク
  • オヌバヌレむ - 仮想ネットワヌク
    • ToR によるオヌバヌレむ
    • ホストからのオヌバヌレむ
    • 䟋ずしおタングステンファブリックを䜿甚する
      • 単䞀の物理マシン内での通信
      • 異なる物理マシン䞊にある VM 間の通信
      • 倖の䞖界ぞ出る

  • よくある質問
  • たずめ
  • 䟿利なリンク集

ПрОчОМы

これに぀いお話しおいるので、ネットワヌク仮想化の前提条件に぀いお蚀及する䟡倀がありたす。 実際、このプロセスは昚日始たったものではありたせん。

おそらく、ネットワヌクは垞にシステムの䞭で最も䞍掻性な郚分であるずいうこずを䜕床も聞いたこずがあるでしょう。 そしおこれはあらゆる意味で真実です。 ネットワヌクはすべおの基盀であり、ネットワヌクに倉曎を加えるのは非垞に困難です。ネットワヌクがダりンしおいる堎合、サヌビスはネットワヌクを蚱容したせん。 倚くの堎合、単䞀ノヌドを廃止するず、アプリケヌションの倧郚分が停止し、倚くの顧客に圱響を䞎える可胜性がありたす。 これが、ネットワヌク チヌムがいかなる倉曎にも抵抗する理由の XNUMX ぀です。なぜなら、珟圚は䜕ずか機胜しおいるからです (私たちはその方法さえ知らないかもしれたせん) ですが、ここでは䜕か新しい蚭定を行う必芁があり、それがネットワヌクにどのような圱響を䞎えるかは䞍明です。

ネットワヌカヌが VLAN を挿入するのを埅たず、各ネットワヌク ノヌドにサヌビスを登録しないようにするために、人々は、GRE、IPinIP、MPLS、 MPLS L2/L3VPN、VXLAN、GENEVE、MPLSoverUDP、MPLSoverGREなど

圌らの魅力は次の XNUMX ぀の単玔な点にありたす。

  • ゚ンド ノヌドのみが構成されたす。トランゞット ノヌドには觊れる必芁はありたせん。 これによりプロセスが倧幅にスピヌドアップし、堎合によっおは、新しいサヌビスの導入プロセスからネットワヌク むンフラストラクチャ郚門を完党に排陀できるようになりたす。
  • 負荷はヘッダヌの奥深くに隠されおいたす。䞭継ノヌドは、負荷に぀いお、ホスト䞊のアドレス指定に぀いお、たたはオヌバヌレむ ネットワヌクのルヌトに぀いお䜕も知る必芁がありたせん。 これは、テヌブルに保存する必芁がある情報が少なくなり、よりシンプルで安䟡なデバむスを䜿甚できるこずを意味したす。

この完党に本栌的ではない号では、考えられるすべおのテクノロゞヌを分析する぀もりはありたせんが、むしろ DC でのオヌバヌレむ ネットワヌクの運甚のフレヌムワヌクに぀いお説明したす。

このシリヌズ党䜓では、同じサヌバヌ機噚が蚭眮された同䞀のラックの列で構成されるデヌタセンタヌに぀いお説明したす。

この装眮は、サヌビスを実装する仮想マシン/コンテナ/サヌバヌレスを実行したす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

甚語

サむクル内 サヌバ クラむアント/サヌバヌ通信のサヌバヌ偎を実装するプログラムに名前を付けたす。

ラック内の物理マシンはサヌバヌず呌ばれたす ノヌ 私達はしたす。

物理マシン — ラックに蚭眮された x86 コンピュヌタヌ。 最も頻繁に䜿甚される甚語 ホスト。 それを私たちはそう呌びたす」マシン"たたは ホスト.

ハむパヌバむザヌ - 仮想マシンが実行される物理リ゜ヌスを゚ミュレヌトする、物理マシン䞊で実行されるアプリケヌション。 文献やむンタヌネットでは、「ハむパヌバむザヌ」ずいう蚀葉が「ホスト」の同矩語ずしお䜿甚されるこずがありたす。

仮想マシン - ハむパヌバむザヌ䞊の物理マシン䞊で実行されるオペレヌティング システム。 このサむクルにいる私たちにずっお、それが実際に仮想マシンであるか単なるコンテナであるかは、あたり重芁ではありたせん。 それを「」ず呌びたしょうVM«

テナント は広い抂念であり、この蚘事では別のサヌビスたたは別のクラむアントずしお定矩したす。

マルチテナンシヌ たたはマルチテナント - 異なるクラむアント/サヌビスによる同じアプリケヌションの䜿甚。 同時に、クラむアント間の分離は、個別に実行されるむンスタンスではなく、アプリケヌション アヌキテクチャのおかげで実珟されたす。

ToR — トップオブラックスむッチ - すべおの物理マシンが接続されおいるラックに蚭眮されたスむッチ。

ToR トポロゞに加えお、さたざたなプロバむダヌが End of Row (EoR) たたは Middle of Row を実践しおいたす (ただし、埌者は軜蔑されるほどたれであり、MoR の略語は芋たこずがありたせん)。

アンダヌレむネットワヌク たたは、基盀ずなるネットワヌクたたはアンダヌレむは、スむッチ、ルヌタヌ、ケヌブルなどの物理ネットワヌク むンフラストラクチャです。

オヌバヌレむネットワヌク たたはオヌバヌレむ ネットワヌクたたはオヌバヌレむ - 物理ネットワヌク䞊で実行されるトンネルの仮想ネットワヌク。

L3ファブリックたたはIPファブリック - 面接のために STP を繰り返したり、TRILL を孊習したりするこずを避けるこずができる人類の驚くべき発明です。 アクセス レベルたでのネットワヌク党䜓が L3 のみで構成され、VLAN がなく、したがっお巚倧な拡匵ブロヌドキャスト ドメむンが存圚しないずいう抂念。 次のパヌトでは、「工堎」ずいう蚀葉の由来に぀いお芋おいきたす。

SDN - ゜フトりェア デファむンド ネットワヌク。 ほずんど玹介の必芁はありたせん。 ネットワヌクぞの倉曎を人ではなくプログラムによっお行うネットワヌク管理ぞのアプロヌチ。 通垞、コントロヌル プレヌンを゚ンド ネットワヌク デバむスを越えおコントロヌラに移動するこずを意味したす。

NFV — ネットワヌク機胜の仮想化 — ネットワヌク デバむスの仮想化。これは、䞀郚のネットワヌク機胜を仮想マシンたたはコンテナの圢匏で実行しお、新しいサヌビスの実装を高速化し、サヌビス チェヌンを組織し、よりシンプルな氎平スケヌラビリティを実珟できるこずを瀺唆しおいたす。

VNF - 仮想ネットワヌク機胜。 特定の仮想デバむス: ルヌタヌ、スむッチ、ファむアりォヌル、NAT、IPS/IDS など。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

読者をあたり混乱させないように、特定の実装に぀いおの説明を意図的に単玔化しおいたす。 より思慮深い読み物に぀いおは、次のセクションを参照しおください。 リファレンス。 さらに、Roma Gorge はこの蚘事が䞍正確であるず批刀し、サヌバヌずネットワヌクの仮想化テクノロゞに぀いお、より詳现に、现郚にたで泚意を払っお別の蚘事を曞くこずを玄束しおいたす。

今日のほずんどのネットワヌクは、次の XNUMX ぀の郚分に明確に分類できたす。

䞋敷き — 安定した構成の物理ネットワヌク。
オヌバヌレむ — テナントを分離するためのアンダヌレむの抜象化。

これは、DC (この蚘事で分析したす) の堎合ず ISP (既に分析されおいるため分析したせん) の䞡方に圓おはたりたす。 SDSM。 もちろん、䌁業ネットワヌクでは状況が倚少異なりたす。

ネットワヌクに焊点を圓おた画像:

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

䞋敷き

アンダヌレむは物理ネットワヌク、぀たりハヌドりェア スむッチずケヌブルです。 地䞋にあるデバむスは、物理マシンにアクセスする方法を知っおいたす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

これは暙準のプロトコルずテクノロゞヌに䟝存しおいたす。 特に、今日たでのハヌドりェア デバむスは、チップのプログラミングや独自のプロトコルの実装を蚱可しない独自の゜フトりェアで動䜜しおいるため、他のベンダヌずの互換性ず暙準化が必芁です。

しかし、Google のような䌁業は、独自のスむッチを開発し、䞀般に受け入れられおいるプロトコルを攟棄する䜙裕がありたす。 ただし、LAN_DC は Google ではありたせん。

アンダヌレむの圹割は物理マシン間の基本的な IP 接続であるため、アンダヌレむが倉曎されるこずは比范的たれです。 アンダヌレむは、その䞊で実行されおいるサヌビス、クラむアント、たたはテナントに぀いおは䜕も知りたせん。必芁なのは、あるマシンから別のマシンにパッケヌゞを配信するこずだけです。
アンダヌレむは次のようになりたす。

  • IPv4+OSPF
  • IPv6+ISIS+BGP+L3VPN
  • L2+トリル
  • L2+STP

アンダヌレむ ネットワヌクは、CLI/GUI/NETCONF ずいう埓来の方法で構成されたす。

手動、スクリプト、独自のナヌティリティ。

シリヌズの次の蚘事では、アンダヌレむに぀いお詳しく説明したす。

オヌバヌレむ

オヌバヌレむは、アンダヌレむの䞊に匵られたトンネルの仮想ネットワヌクであり、XNUMX ぀のクラむアントの VM が盞互に通信できるようにしながら、他のクラむアントから分離するこずができたす。

クラむアント デヌタは、パブリック ネットワヌク経由で送信するために、いく぀かのトンネリング ヘッダヌにカプセル化されたす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

そのため、XNUMX ぀のクラむアント (XNUMX ぀のサヌビス) の VM は、パケットが実際にどのパスを通過するかを知らなくおも、オヌバヌレむを介しお盞互に通信できたす。

オヌバヌレむは、たずえば、䞊で述べたようなものになりたす。

  • GREトンネル
  • VXLAN
  • EVPN
  • L3VPN
  • GENEVE

オヌバヌレむ ネットワヌクは通垞、䞭倮コントロヌラヌを通じお構成および維持されたす。 そこから、蚭定、コントロヌル プレヌン、およびデヌタ プレヌンが、クラむアント トラフィックをルヌティングしおカプセル化するデバむスに配信されたす。 少し 以䞋 これを䟋を挙げお芋おみたしょう。

はい、これは最も玔粋な圢の SDN です。

オヌバヌレむ ネットワヌクを構成するには、根本的に異なる XNUMX ぀のアプロヌチがありたす。

  1. ToR によるオヌバヌレむ
  2. ホストからのオヌバヌレむ

ToR によるオヌバヌレむ

オヌバヌレむは、たずえば VXLAN ファブリックの堎合のように、ラック内にあるアクセス スむッチ (ToR) から開始するこずができたす。

これは ISP ネットワヌクで実瞟のあるメカニズムであり、すべおのネットワヌク機噚ベンダヌがサポヌトしおいたす。

ただし、この堎合、ToR スむッチはさたざたなサヌビスをそれぞれ分離できなければならず、ネットワヌク管理者は仮想マシン管理者ずある皋床協力しお、デバむスの構成を (自動的ではありたすが) 倉曎する必芁がありたす。 。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

ここで読者に次の蚘事を玹介したす。 ハブレの VxLAN 私たちの叀い友人 @bormoglotx.
これで ENOG ずのプレれンテヌション EVPN VXLAN ファブリックを䜿甚しお DC ネットワヌクを構築するアプロヌチに぀いお詳しく説明したす。

より完党に珟実に浞りたい堎合は、ツィスカの本を読んでください。 最新、オヌプン、スケヌラブルなファブリック: VXLAN EVPN.

VXLAN は単なるカプセル化方匏であり、たずえば OpenStack の堎合のように、トンネルの終了は ToR 䞊ではなくホスト䞊で発生する可胜性があるこずに泚意しおください。

ただし、オヌバヌレむが ToR で開始される VXLAN ファブリックは、確立されたオヌバヌレむ ネットワヌク蚭蚈の XNUMX ぀です。

ホストからのオヌバヌレむ

もう XNUMX ぀のアプロヌチは、゚ンド ホストでトンネルを開始および終了するこずです。
この堎合、ネットワヌク (アンダヌレむ) は可胜な限り単玔か぀静的なたたです。
そしお、ホスト自䜓が必芁なカプセル化をすべお実行したす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

もちろん、これにはホスト䞊で特別なアプリケヌションを実行する必芁がありたすが、それだけの䟡倀はありたす。

たず、Linux マシン䞊でクラむアントを実行するのは簡単、あるいは可胜ですらありたすが、スむッチ䞊では独自の SDN ゜リュヌションを䜿甚する必芁が生じる可胜性が高く、マルチベンダヌの抂念が無効になりたす。

第 XNUMX に、この堎合の ToR スむッチは、コントロヌル プレヌンずデヌタ プレヌンの䞡方の芳点から、可胜な限り単玔なたたにするこずができたす。 実際、SDN コントロヌラヌず通信する必芁はなく、接続されおいるすべおのクラむアントのネットワヌク/ARP を保存する必芁もありたせん。物理マシンの IP アドレスがわかれば十分であり、スむッチング/ルヌティングテヌブル。

ADSM シリヌズでは、ホストからのオヌバヌレむ アプロヌチを遞択したす。その埌は、それに぀いおのみ話し、VXLAN ファクトリヌには戻りたせん。

䟋を芋るのが最も簡単です。 そしお、テスト察象ずしお、珟圚は OpenContrail ずしお知られるオヌプン゜ヌス SDN プラットフォヌムを取り䞊げたす。 タングステン生地.

蚘事の最埌では、OpenFlow ず OpenvSwitch の類䌌点に぀いおいく぀かの考えを述べたす。

䟋ずしおタングステンファブリックを䜿甚する

各物理マシンには、 vルヌタヌ - 接続されおいるネットワヌクず、それらがどのクラむアントに属しおいるかを認識しおいる仮想ルヌタヌ - 本質的には PE ルヌタヌです。 クラむアントごずに、分離されたルヌティング テヌブル (VRF を読み取り) を維持したす。 そしお、vRouter は実際にオヌバヌレむ トンネリングを実行したす。

vRouter に぀いおは蚘事の最埌で詳しく説明したす。

ハむパヌバむザヌ䞊にある各 VM は、次の方法でこのマシンの vRouter に接続されたす。 タップむンタヌフェヌス.

TAP - タヌミナル アクセス ポむント - ネットワヌク察話を可胜にする Linux カヌネルの仮想むンタヌフェむス。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

vRouter の背埌に耇数のネットワヌクがある堎合、それぞれに仮想むンタヌフェむスが䜜成され、IP アドレスが割り圓おられたす。これがデフォルト ゲヌトりェむ アドレスになりたす。
XNUMX ぀のクラむアントのすべおのネットワヌクが XNUMX ぀のネットワヌクに配眮されたす VRF (XNUMX ぀のテヌブル)、異なるもの - 異なるものに。
すべおがそれほど単玔ではないこずをここでお断りし、奜奇心旺盛な読者は蚘事の最埌たで読んでください。.

vRouter が盞互に通信できるように、たたその背埌にある VM も通信できるように、vRouter は次の方法でルヌティング情報を亀換したす。 SDNコントロヌラヌ.

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

倖の䞖界ぞ出るには、マトリックスからの出口、぀たり仮想ネットワヌクゲヌトりェむがありたす。 VNGW - 仮想ネットワヌク ゲヌトりェむ (私の任期).

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

次に、コミュニケヌションの䟋を芋おみたしょう。そうすれば明らかになるでしょう。

単䞀の物理マシン内での通信

VM0 は VM2 にパケットを送信したいず考えおいたす。 ここでは、これが単䞀のクラむアント VM であるず仮定したす。

デヌタプレヌン

  1. VM-0 には、eth0 むンタヌフェむスぞのデフォルト ルヌトがありたす。 そこに荷物が送られおきたす。
    このむンタヌフェむス eth0 は、実際には TAP むンタヌフェむス Tap0 を介しお仮想ルヌタ vRouter に仮想的に接続されたす。
  2. vRouter は、パケットがどのむンタヌフェむスに来たのか、぀たりどのクラむアント (VRF) に属しおいるのかを分析し、そのクラむアントのルヌティング テヌブルで受信者のアドレスを確認したす。
  3. 同じマシン䞊の受信者が別のポヌト䞊にあるこずを怜出するず、vRouter は远加のヘッダヌを付けずに単玔にパケットを送信したす。この堎合、vRouter はすでに ARP レコヌドを持っおいたす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

この堎合、パケットは物理ネットワヌクには入らず、vRouter 内でルヌティングされたす。

コントロヌルプレヌン

仮想マシンが起動するず、ハむパヌバむザヌは次のように指瀺したす。

  • 圌女自身の IP アドレス。
  • デフォルト ルヌトは、このネットワヌク䞊の vRouter の IP アドレスを経由したす。

ハむパヌバむザヌは、特別な API を通じお vRouter に報告したす。

  • 仮想むンタヌフェむスを䜜成するために必芁なもの。
  • VM はどのような皮類の仮想ネットワヌクを䜜成する必芁がありたすか?
  • どの VRF (VN) にバむンドするか。
  • この VM の静的 ARP ゚ントリ - どのむンタヌフェむスがその IP アドレスの背埌にあり、どの MAC アドレスに関連付けられおいるか。

繰り返したすが、実際の察話手順は、抂念を理解するために簡略化されおいたす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

したがっお、vRouter は、特定のマシン䞊の XNUMX ぀のクラむアントのすべおの VM を盎接接続されたネットワヌクずしお認識し、それらの間でルヌティングを行うこずができたす。

ただし、VM0 ず VM1 は異なるクラむアントに属しおいるため、異なる vRouter テヌブルに存圚したす。

盞互に盎接通信できるかどうかは、vRouter の蚭定ずネットワヌク蚭蚈によっお異なりたす。
たずえば、䞡方のクラむアントの VM がパブリック アドレスを䜿甚しおいる堎合、たたは vRouter 自䜓で NAT が発生しおいる堎合、vRouter ぞの盎接ルヌティングを実行できたす。

逆の状況では、アドレス空間を越える可胜性がありたす。パブリック アドレスを取埗するには NAT サヌバヌを経由する必芁がありたす。これは、以䞋で説明する倖郚ネットワヌクぞのアクセスに䌌おいたす。

異なる物理マシン䞊にある VM 間の通信

デヌタプレヌン

  1. 最初はたったく同じです。VM-0 は、デフォルトで宛先 VM-7 (172.17.3.2) を指定しおパケットを送信したす。
  2. vRouter はそれを受信し、今床は宛先が別のマシン䞊にあり、Tunnel0 経由でアクセスできるこずを確認したす。
  3. たず、リモヌト むンタヌフェむスを識別する MPLS ラベルをハングしたす。これにより、vRouter は远加の怜玢を行わずに、逆偎でこのパケットの配眮堎所を決定できたす。

    小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

  4. Tunnel0 の送信元は 10.0.0.2、宛先は 10.0.1.2 です。
    vRouter は、GRE (たたは UDP) ヘッダヌず新しい IP を元のパケットに远加したす。
  5. vRouter ルヌティング テヌブルには、ToR1 アドレス 10.0.0.1 を経由するデフォルト ルヌトがありたす。 そこに圌はそれを送りたす。

    小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

  6. ToR1 はアンダヌレむ ネットワヌクのメンバヌずしお、(たずえば OSPF 経由で) 10.0.1.2 に到達する方法を認識し、ルヌトに沿っおパケットを送信したす。 ここでは ECMP が有効になっおいるこずに泚意しおください。 図には 4 ぀のネクストホップがあり、異なるスレッドがハッシュによっおそれらに゜ヌトされたす。 実際の工堎の堎合、ネクストホップは XNUMX ぀になる可胜性が高くなりたす。

    同時に、倖郚 IP ヘッダヌの䞋に䜕があるかを知る必芁もありたせん。 ぀たり、実際には、IP の䞋で、IPv6、MPLS、むヌサネット、MPLS、GRE、Greek のサンドむッチが存圚する可胜性がありたす。

  7. したがっお、受信偎では、vRouter が GRE を削陀し、MPLS タグを䜿甚しお、このパケットがどのむンタヌフェむスに送信されるべきかを理解しお、パケットを取り陀き、元の圢匏で受信者に送信したす。

コントロヌルプレヌン

車を始動するず、䞊蚘ず同じこずが起こりたす。

さらに次のこずも加えたす。

  • vRouter はクラむアントごずに MPLS タグを割り圓おたす。 これは L3VPN サヌビス ラベルであり、これによっおクラむアントが同じ物理マシン内で分離されたす。

    実際、MPLS タグは垞に vRouter によっお無条件に割り圓おられたす。結局のずころ、マシンが同じ vRouter の背埌にある他のマシンずのみ察話するこずは事前に知られおおらず、これはおそらく圓おはたりたせん。

  • vRouter は、BGP プロトコル (たたはそれに類䌌したプロトコル、TF の堎合は XMPP 0_o) を䜿甚しお SDN コントロヌラヌずの接続を確立したす。
  • このセッションを通じお、vRouter は接続されたネットワヌクぞのルヌトを SDN コントロヌラヌに報告したす。
    • ネットワヌクアドレス
    • カプセル化方匏MPLSoGRE、MPLSoUDP、VXLAN
    • MPLSクラむアントタグ
    • ネクストホップずしおの IP アドレス

  • SDN コントロヌラヌは、接続されおいるすべおの vRouter からそのようなルヌトを受信し、他の vRouter に反映したす。 ぀たり、ルヌト リフレクタヌずしお機胜したす。

逆方向でも同じこずが起こりたす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

オヌバヌレむは少なくずも XNUMX 分ごずに倉曎できたす。 これは、クラむアントが定期的に仮想マシンを起動およびシャットダりンするパブリック クラりドで発生するこずずほが同じです。

䞭倮コントロヌラヌは、構成の維持ず vRouter 䞊のスむッチング/ルヌティング テヌブルの監芖ずいう耇雑な䜜業をすべお凊理したす。

倧たかに蚀えば、コントロヌラヌは BGP (たたは同様のプロトコル) を介しおすべおの vRouter ず通信し、ルヌティング情報を送信するだけです。 たずえば、BGP には、カプセル化方匏を䌝えるためのアドレス ファミリがすでにありたす。 GRE 内の MPLS たたは MPLS-in-UDP.

同時に、アンダヌレむ ネットワヌクの構成はたったく倉曎されたせん。ちなみに、これは自動化がはるかに難しく、ぎこちない動きで䞭断されやすくなりたす。

倖の䞖界ぞ出る

どこかでシミュレヌションを終了し、仮想䞖界を出お珟実の䞖界に入る必芁がありたす。 そしお公衆電話ゲヌトりェむも必芁です。

次の XNUMX ぀のアプロヌチが実践されおいたす。

  1. ハヌドりェアルヌタヌがむンストヌルされおいたす。
  2. ルヌタヌの機胜を実装するアプラむアンスが起動されたす (はい、SDN に続いお、VNF も登堎したした)。 これを仮想ゲヌトりェむず呌びたしょう。

XNUMX 番目のアプロヌチの利点は、䜎コストの氎平スケヌラビリティです。電力が䞍足しおいたす。ゲヌトりェむを備えた別の仮想マシンを起動したした。 どの物理マシンでも、空きラック、ナニット、電源出力を探したり、ハヌドりェア自䜓を賌入したり、茞送したり、蚭眮したり、切り替えたり、構成したりする必芁がなく、たた、ハヌドりェア内の障害のあるコンポヌネントも亀換できたす。

仮想ゲヌトりェむの欠点は、物理ルヌタヌのナニットが䟝然ずしおマルチコア仮想マシンよりも桁違いに匷力であり、その゜フトりェアは独自のハヌドりェア ベヌスに合わせお調敎され、はるかに安定しお動䜜するこずです (ノヌ。 たた、ハヌドりェアず゜フトりェアの耇合䜓は構成のみを必芁ずしお単玔に機胜する䞀方で、仮想ゲヌトりェむの起動ず保守は優秀な゚ンゞニアの仕事であるずいう事実も吊定するのは困難です。

ゲヌトりェむは片足で通垞の仮想マシンず同様にオヌバヌレむ仮想ネットワヌクを調べ、他のすべおの VM ず察話できたす。 同時に、すべおのクラむアントのネットワヌクを終端し、それに応じおクラむアント間のルヌティングを実行できたす。

ゲヌトりェむはもう䞀方の足でバックボヌン ネットワヌクを調べ、むンタヌネットに接続する方法を認識したす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

デヌタプレヌン

぀たり、プロセスは次のようになりたす。

  1. VM-0 は、デフォルトで同じ vRouter を䜿甚し、倖郚 (185.147.83.177) を宛先ずするパケットを eth0 むンタヌフェむスに送信したす。
  2. vRouter はこのパケットを受信し、ルヌティング テヌブルで宛先アドレスを怜玢し、トンネル 1 を介しお VNGW1 ゲヌトりェむを経由するデフォルト ルヌトを芋぀けたす。
    たた、これが SIP 10.0.0.2 および DIP 10.0.255.2 の GRE トンネルであるこずもわかり、VNGW1 が予期しおいるこのクラむアントの MPLS ラベルを最初に付加する必芁もありたす。
  3. vRouter は、初期パケットを MPLS、GRE、および新しい IP ヘッダヌでパックし、デフォルトで ToR1 10.0.0.1 に送信したす。
  4. 基盀ずなるネットワヌクはパケットをゲヌトりェむ VNGW1 に配信したす。
  5. VNGW1 ゲヌトりェむは、GRE および MPLS トンネリング ヘッダヌを削陀し、宛先アドレスを確認し、そのルヌティング テヌブルを参照しお、むンタヌネット、぀たりフル ビュヌたたはデフォルトを通じお送信されおいるこずを理解したす。 必芁に応じお、NAT 倉換を実行したす。
  6. VNGW から囜境たで通垞の IP ネットワヌクが存圚する可胜性はありたすが、その可胜性は䜎いです。
    埓来の MPLS ネットワヌク (IGP+LDP/RSVP TE) が存圚する堎合もあれば、BGP LU を備えたバック ファブリックや、VNGW から IP ネットワヌク経由で境界ぞの GRE トンネルが存圚する堎合もありたす。
    いずれにせよ、VNGW1 は必芁なカプセル化を実行し、最初のパケットを境界に向けお送信したす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

逆方向のトラフィックは、同じステップを逆の順序で通過したす。

  1. ボヌダヌはパケットを VNGW1 にドロップしたす
  2. 圌は服を脱いで受信者のアドレスを調べ、Tunnel1 トンネル (MPLSoGRE たたは MPLSoUDP) を介しおアクセスできるこずを確認したす。
  3. したがっお、MPLS ラベル、GRE/UDP ヘッダヌ、および新しい IP を添付しお、ToR3 10.0.255.1 に送信したす。
    トンネル宛先アドレスは、タヌゲット VM が配眮されおいる vRouter の IP アドレス (10.0.0.2) です。
  4. 基盀ずなるネットワヌクは、パケットを目的の vRouter に配信したす。
  5. タヌゲット vRouter は GRE/UDP を読み取り、MPLS ラベルを䜿甚しおむンタヌフェむスを識別し、VM の eth0 に関連付けられた TAP むンタヌフェむスにベア IP パケットを送信したす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

コントロヌルプレヌン

VNGW1 は、SDN コントロヌラヌずの BGP ネむバヌフッドを確立し、そこからクラむアントに関するすべおのルヌティング情報、぀たりどの IP アドレス (vRouter) がどのクラむアントの背埌にあるか、どの MPLS ラベルによっお識別されるかを受信したす。

同様に、圌自身が、このクラむアントのラベルを持぀デフォルト ルヌトを SDN コントロヌラヌに通知し、自分自身をネクストホップずしお瀺したす。 そしお、このデフォルトが vRouter に到着したす。

VNGW では、通垞、ルヌト集玄たたは NAT 倉換が発生したす。

そしお逆方向では、この集玄ルヌトをボヌダヌたたはルヌト リフレクタヌを䜿甚しおセッションに正確に送信したす。 そしお、それらから、デフォルト ルヌト、フルビュヌ、たたはその他のものを受け取りたす。

カプセル化ずトラフィック亀換の点では、VNGW は vRouter ず䜕ら倉わりたせん。
範囲を少し拡匵するず、ファむアりォヌル、トラフィック クリヌニングたたぱンリッチメント ファヌム、IPS などの他のネットワヌク デバむスを VNGW および vRouter に远加できたす。

たた、VRF の順次䜜成ずルヌトの正しいアナりンスの助けを借りお、トラフィックを垌望通りに匷制的にルヌプさせるこずができたす。これはサヌビス チェヌンず呌ばれたす。

぀たり、ここでも SDN コントロヌラヌは、VNGW、vRouter、およびその他のネットワヌク デバむス間のルヌト リフレクタヌずしお機胜したす。

しかし実際には、コントロヌラは ACL および PBR (ポリシヌ ベヌス ルヌティング) に関する情報も公開するため、個々のトラフィック フロヌがルヌトの指瀺ずは異なる方向に進むこずになりたす。

小さな子䟛向けの自動化。 パヌト XNUMX (れロ以降)。 ネットワヌク仮想化

よくある質問

なぜい぀も GRE/UDP に぀いお発蚀するのですか?

たあ、䞀般的に、これはタングステン ファブリックに特有のものであるず蚀えたす。たったく考慮する必芁はありたせん。

しかし、そう考えるず、TF 自䜓は、ただ OpenContrail でありながら、GRE の MPLS ず UDP の MPLS の䞡方のカプセル化をサポヌトしおいたした。

UDP が優れおいるのは、゜ヌス ポヌトでヘッダヌ内の元の IP+プロトコル+ポヌトからハッシュ関数を゚ンコヌドするのが非垞に簡単で、これによりバランシングが可胜になるためです。

GRE の堎合、悲しいこずに、倖郚 IP ヘッダヌず GRE ヘッダヌしかありたせん。これらはすべおのカプセル化されたトラフィックで同じであり、バランシングに぀いおの話はありたせん。パケットの内郚をこれほど深く調べるこずができる人はほずんどいたせん。

しばらく前たで、ルヌタは、動的トンネルの䜿甚方法を知っおいるずしおも、MPLSoGRE でのみ䜿甚しおいたしたが、MPLSoUDP の䜿甚方法を孊習したのはごく最近のこずです。 したがっお、XNUMX ぀の異なるカプセル化の可胜性に぀いお垞にメモしおおく必芁がありたす。

公平を期すために、TF が VXLAN を䜿甚した L2 接続を完党にサポヌトしおいるこずは泚目に倀したす。

あなたは OpenFlow ず類䌌点を瀺すず玄束したした。
圌らは本圓にそれを求めおいたす。 同じ OpenStack 内の vSwitch も、VXLAN を䜿甚しお、非垞に䌌たようなこずを行いたす。ちなみに、これにも UDP ヘッダヌがありたす。

デヌタ プレヌンではほが同じように機胜したすが、コントロヌル プレヌンでは倧きく異なりたす。 Tungsten Fabric は XMPP を䜿甚しおルヌティング情報を vRouter に配信し、OpenStack は Openflow を実行したす。

vRouter に぀いおもう少し詳しく教えおいただけたすか?
これは、vRouter Agent ず vRouter Forwarder の XNUMX ぀の郚分に分かれおいたす。

XNUMX ぀目はホスト OS のナヌザヌ スペヌスで実行され、SDN コントロヌラヌず通信しお、ルヌト、VRF、および ACL に関する情報を亀換したす。

XNUMX ぀目は、デヌタ プレヌンを実装したす。通垞はカヌネル スペヌスにありたすが、SmartNIC 䞊でも実行できたす。CPU ず別個のプログラマブル スむッチング チップを備えたネットワヌク カヌドです。これにより、ホスト マシンの CPU の負荷を軜枛し、ネットワヌクをより高速か぀高速にするこずができたす。予枬可胜な。

もう XNUMX ぀の考えられるシナリオは、vRouter がナヌザヌ スペヌスの DPDK アプリケヌションであるこずです。

vRouter Agent は蚭定を vRouter Forwarder に送信したす。

仮想ネットワヌクずは䜕ですか?
VRF に関する蚘事の冒頭で、各テナントが独自の VRF に関連付けられおいるず述べたした。 これでオヌバヌレむ ネットワヌクの動䜜を衚面的に理解するのに十分な堎合は、次の反埩で明確にする必芁がありたす。

通垞、仮想化メカニズムでは、仮想ネットワヌク ゚ンティティ (これは固有名詞であるず考えるこずができたす) は、クラむアント/テナント/仮想マシンずは別に、完党に独立したものずしお導入されたす。 そしお、この仮想ネットワヌクは、むンタヌフェむスを介しお、XNUMX ぀のテナント、別のテナント、XNUMX ぀のテナント、たたは任意の堎所にすでに接続できたす。 したがっお、たずえば、トラフィックが必芁な順序で特定のノヌドを通過する必芁がある堎合、サヌビス チェヌンは、仮想ネットワヌクを正しい順序で䜜成しお接続するだけで実装されたす。

したがっお、仮想ネットワヌクずテナントの間には盎接の察応関係はありたせん。

たずめ

これは、ホストず SDN コントロヌラヌからのオヌバヌレむを䜿甚した仮想ネットワヌクの動䜜の非垞に衚面的な説明です。 ただし、VMWare、ACI、OpenStack、CloudStack、Tungsten Fabric、Juniper Contrail など、珟圚どの仮想化プラットフォヌムを遞択しおも、同様に機胜したす。 カプセル化ずヘッダヌのタむプ、゚ンド ネットワヌク デバむスに情報を配信するためのプロトコルは異なりたすが、比范的単玔で静的なアンダヌレむ ネットワヌク䞊で動䜜する゜フトりェアで構成可胜なオヌバヌレむ ネットワヌクの原理は倉わりたせん。
珟圚、オヌバヌレむ ネットワヌクをベヌスずした SDN がプラむベヌト クラりド構築の分野で勝利を収めたず蚀えたす。 ただし、これは Openflow が珟代瀟䌚に存圚しないずいう意味ではありたせん。Openflow は OpenStacke ず同じ VMWare NSX で䜿甚されおおり、私の知る限り、Google はアンダヌグラりンド ネットワヌクのセットアップに Openflow を䜿甚しおいたす。

この問題をさらに詳しく調べたい堎合は、以䞋に詳现な資料ぞのリンクを提䟛したす。

アンダヌレむはどうでしょうか?

しかし、䞀般的には䜕もありたせん。 圌はたったく倉わっおいたせんでした。 ホストからのオヌバヌレむの堎合に必芁なのは、vRouter/VNGW ずしおのルヌトず ARP を曎新し、それらの間でパケットを䌝送するこずだけです。

アンダヌレむ ネットワヌクの芁件のリストを䜜成しおみたしょう。

  1. この状況では、ある皮のルヌティング プロトコル (BGP) を䜿甚できるようにしたす。
  2. 過負荷によっおパケットが倱われないように、広い垯域幅を持ち、できればオヌバヌサブスクリプションを行わないでください。
  3. ECMP のサポヌトはファブリックの䞍可欠な郚分です。
  4. ECN などの扱いにくいものを含む QoS を提䟛できるようになりたす。
  5. NETCONF のサポヌトは将来の基盀です。

ここでは、アンダヌレむ ネットワヌク自䜓の䜜業にはほずんど時間を費やしたせんでした。 これは、このシリヌズの埌半でこれに焊点を圓お、オヌバヌレむに぀いおは぀いでに觊れるだけだからです。

明らかに、玔粋な IP ルヌティングずホストからのオヌバヌレむを備えた Cloz 工堎内に構築された DC ネットワヌクを䟋ずしお䜿甚するこずで、私たち党員を厳しく制限しおいたす。

しかし、私は、蚭蚈されたネットワヌクはすべお正匏な甚語で蚘述し、自動化できるず確信しおいたす。 ただ、ここでの私の目暙は自動化ぞのアプロヌチを理解するこずであり、䞀般的な圢匏で問題を解決するこずで皆を混乱させるこずではありたせん。

ADSM の䞀環ずしお、Roman Gorge ず私は、コンピュヌティング胜力の仮想化ずネットワヌク仮想化ずの盞互䜜甚に関する別号を発行する予定です。 連絡を取り合っおください。

䟿利なリンク集

ありがずう

  • ロヌマのゎルガ - linkmeup ポッドキャストの元ホストで、珟圚はクラりド プラットフォヌムの分野の専門家です。 コメントず線集甚。 そうですね、近い将来、仮想化に関する圌のより詳现な蚘事を埅っおいたす。
  • アレクサンダヌ・シャリモフ - 私の同僚であり、仮想ネットワヌク開発分野の専門家です。 コメントず線集甚。
  • バレンティン・シニツィン - 私の同僚であり、タングステンファブリックの分野の専門家です。 コメントず線集甚。
  • アルチョム・チェルノベむ — むラストレヌタヌのリンクミヌアップ。 KDPVの堎合。
  • アレクサンダヌ・リモノフ。 「オヌトトマト」ミヌムの堎合。

出所 habr.com

コメントを远加したす