HN 日本語サマリー

← 一覧へ戻る
インフラ・DevOps

Hetzner Cloudのネットワークスタック – 歴史と技術的概要

The Hetzner Cloud network stack – history and technical overview (hetzner.com)

34 pointsby cnkk6 コメント

要約

この記事は、Hetzner Cloudがどのようにして現在のネットワークスタックを構築してきたかの歴史と、その技術的な詳細を解説しています。初期のvServerから現在のOpen vSwitchベースのアーキテクチャに至るまでの進化を辿り、VMホスト上で動作するネットワーク機能(プライベートネットワーク、ファイアウォール、DHCP、メタデータサーバーなど)の役割と、Open vSwitchの活用方法について説明しています。

全文翻訳

エンジニアリングHetzner Cloudのネットワークスタック – 歴史と技術的概要2026年10月8日10分読む概要に戻るTL;DR全てのクラウド製品には、顧客やその顧客がネットワーク内のサービスにアクセスできるように、多用途で信頼性の高い接続オプションが必要です。vServer製品の開始以来、私たちはその接続性を提供するために様々な技術を使用してきましたが、それらはすべてスマートなネットワークではなくホストに依存していました。Hetzner Cloudのローンチと、プライベートネットワークやファイアウォールのようなネットワーク機能の導入に伴い、Open vSwitchを導入しました。私たちはOpen vSwitch、特にトラフィックを処理するために必要なフローを管理するためのカスタムソリューションを構築しました。私たちはネットワークスタックを、自社で所有・運用できるソリューション、そしてさらに構築できるビルディングブロックとして設計しました。 この記事は、Hetzner Cloudの背後にあるネットワークスタックの進化とそのアーキテクチャを網羅するシリーズの最初のパートです。この記事では、今日までの開発と、現在のOpen vSwitchベースのネットワークスタックがどのように機能するかを見ていきます。ネットワークスタックはCloudサーバーとロードバランサーで似ていますが、より多くのサービスと機能を提供しているため、仮想マシン(VM)ホストに焦点を当てます。簡潔にするため、全てのサーバー、ロードバランサー、プライベートネットワークなどを管理するCloud Control Planeはスコープ外とし、ホスト上のネットワークスタックのみに焦点を当てます。 私たちのやり方全てのクラウド製品には、顧客やその顧客がネットワーク内のサービスにアクセスできるように、多用途で信頼性の高い接続オプションが必要です。 Hetznerでは、一般的に自社で所有・運用できるソリューションと、さらに構築できるビルディングブロックを重視しています。ネットワーク、特にクラウド製品のネットワーク接続も例外ではありません。 長年にわたり技術は変化してきましたが、私たちは常に、スマートで複雑な物理ネットワークセットアップを持つのではなく、可動部品がホスト上にあるソリューションを好んできました。その結果、物理ネットワークがホストに安定したIP接続を提供し、ホストが高レベルのネットワーク機能を提供するようにセットアップを設計しました。これらには、ファイアウォール、プライベートネットワーク、補助的なインフラストラクチャサービスが含まれます。 これらのサービスとネットワーク機能をホスト上で実行することにより、製品の設計と構築において多くの自由と柔軟性を得ることができ、ハードウェアベンダーが提供するものに限定されません。このように、チームと技術の間で懸念事項を明確に分離でき、エラー(ほとんどの場合)が発生した場合の被害範囲を単一のホストに限定できます。これは、ソリューションを完全に所有し、ニーズに合わせて調整できることを意味しますが、それは私たちのDNAにあります。 少しの歴史歴史的に、Hetznerはクラウド製品の接続性を提供するために様々な技術を使用してきました。 初期の頃、2011年にローンチされたHetzner vServerは、HDD、ネイティブLinuxブリッジ、スタティックルートで始まりました。ホストあたり最大1 Gb/sのデュアルスタック接続を提供しました。最終的に、このセットアップで約25,000インスタンスが稼働しました。 2015年9月にローンチされた後続製品は、ハイパーコンバージドなCephベースのセットアップを採用しました。BGPによるダイナミックルーティングと、IPv4には1:1 NAT、IPv6プレフィックスにはフルルーティングを使用したLinuxブリッジセットアップに切り替えました。これにより、IPモビリティの向上と、顧客に影響を与えずにホストメンテナンスが可能になりました。2016年には、ホストへのリンクが2x 10 Gb/sにアップグレードされました。このセットアップは2018年まで続き、約50,000インスタンスにまで成長しました。 2018年にHetzner Cloudがローンチされた際、NATを廃止し、直接IPv4ルーティングに移行しました。2019年7月には、Open vSwitchベースのデータプレーンを導入し、VXLANカプセル化に基づくプライベートクラウドネットワークのサポートを追加しました。2020年11月には、パブリックネットワーク部分をOpen vSwitchに移行し始め、2021年3月にはOpen vSwitchフローとnetfilterに基づいたステートフルなクラウドファイアウォールのローンチを可能にしました。 VMホストの構成要素重要なネットワークスタックの一部がVMホスト上で実行されていることは既に確立しましたが、クラウドサーバーが動作するためにそれらは何を提供する必要があるのでしょうか? ほとんどのサーバーでは、インターネットへの到達可能性が必要です。これにより、システムとそのサービスは国内外からアクセスできるようになります。一部のサーバーは、パブリックネットワークの代わりに、またはそれに加えてプライベートネットワークを使用します。これは、サーバー、ロードバランサー、および専用サーバーを、お客様のシステムのみがアクセスできるプライベートで仮想的なネットワーク経由で接続します。プライベートネットワークトラフィックは、Virtual eXtensible LAN(VXLAN)と、プライベートネットワークごとに一意のVirtual Network Identifier(VNI)を使用してカプセル化されます。ホストのネットワークスタックは、該当するプライベートネットワークに接続されているメンバーのみがトラフィックを送受信できるようにします。 インターネットから利用可能なサービスへのアクセスを制御するために、クラウドファイアウォール機能を提供しています。これにより、サーバーの特定のポートやプロトコルへのアクセスを制御したり、サーバーから送信できるトラフィックを制限したりできます。これはサーバーのできるだけ近く、つまりホスト上で実行されるべきです。ステートフルファイアウォールを中央で構築すると、追加のハードウェアとネットワークオーバーレイが必要になり、「クリーン」なトラフィックをサーバーに転送し、高可用性、中央のコネクション追跡のために多くの複雑さを増すことになります。 デフォルトでは、当社のクラウドサーバーイメージは、IPv4アドレスとルートの動的構成のためにDynamic Host Configuration Protocol(DHCP)を使用するように構成されています。そのため、サーバーがパブリックおよびプライベートネットワークインターフェイスのIPv4ネットワーキング構成を要求できるように、DHCPサーバーを提供する必要があります。 ほとんどのイメージ内では、cloud-initを使用して、例えばIPv6ネットワーキングの構成、プライベートネットワークインターフェイスのDHCPトリガー、クラウドボリュームのアタッチなど、システムのいくつかの部分を構成します。これらのタスクのために、cloud-initはローカルシステムまたはユーザー固有の構成ビットに関する情報を、http://169.254.169.254/で利用可能なメタデータサーバーに問い合わせる必要があります。cloud-initに加えて、メタデータサーバーは、当社のCSIドライバー、hc-utils、Flatcar LinuxのAfterburnやIgnitionのようなディストリビューションツール、Talos Linuxなど、多くのインテグレーションで使用されています。 DHCPサーバーとメタデータサーバーは、最大限の耐障害性と可用性を確保するために、各VMホスト上でローカルに実行されます。 これらのユーザー向けサービスに加えて、VMホストは、サーバーが正常に稼働していること、ネットワークスタックが接続性を構成するための正しい情報を持っていること、そして当社のモニタリングが何が起こっているかを知っていることを確認する内部サービス群を実行しています。 しかし、この記事では、ネットワークスタックに焦点を当て、その内部動作について詳しく見ていきます。 Open vSwitchネットワークデータパスの大部分は、Open vSwitch、または略してOVS、オープンソースのマルチレイヤー仮想スイッチによって実現されています。そのデータパスは長らくLinuxカーネルに含まれており、ユーザースペース/コントロールプレーン用のパッケージは全ての主要なLinuxディストリビューションで利用可能です。 これは一部の仮想化環境のデフォルトネットワークスタックであり、多くの市販ソリューションにはOVSサポートが含まれています。これには、Proxmox VE、Open Stack、oVirtなどが含まれますが、これらに限定されません。しかし、私たちはこれらのいずれも使用しておらず、代わりにKVMと周囲の全てのコンポーネントをカスタムビルドツールで管理しています。 Open vSwitchは多用途なネットワーキングソリューションであり、膨大な数の機能を提供していますが、私たちはユースケースとセットアップでその一部のみを使用しています。それはOpenFlowを使用しています。これは、ネットワークデバイスのデータプレーンを構成し、パケットがどのように転送されるべきかを示すために構築されたオープンプロトコルです。通信の各方向について、パケットがどのように処理されるべきか、そしてどこに送信されるべきかを指定するフローが必要です。 これは、ゲートウェイとの通信(ARP、NDP、ICMPなど)、プライベートネットワークの他のメンバー宛てのトラフィック、またはインターネット上のサービスへの接続など、正確なマッチングで行われます。 Open vSwitchオーケストレーション – Flusskrebsネットワーク接続を提供するために