Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# オペレーティングシステム# ネットワーキングとインターネット・アーキテクチャ

ユニカーネル: インターネット測定ツールの新しいアプローチ

ユニカーネルは、インターネット測定に効率的な解決策を提供し、リソースが少なくて済み、展開も早いんだ。

― 1 分で読む


計測におけるユニカーネルの計測におけるユニカーネルの効率性ソース管理を強化する。ユニカーネルはネットワーク測定のためのリ
目次

最近、インターネットを測定するツールが研究者の間で一般的になってきたんだ。これらのツールは、インターネットの動作についてデータを収集するのに役立つ。ほとんどのツールは研究者が設定して、それぞれの機能が決まっていることが多い。通常、これらのツールを持っている人たちが測定を実施して、研究コミュニティとデータをシェアしたりする。これらのプラットフォームは、特定のハードウェアが既知の場所に設置されているか、多くのボランティアによって運営されていることが多い。

同時に、SETI@homeに似たモデルを使った測定システムも導入されている。このタイプのシステムは、測定のソースを増やすことができるけど、挑戦もあるんだ。ツールは異なる種類のハードウェア、オペレーティングシステム、ローカルセットアップに対応しなければならないから、複雑になることがあるし、収集されるデータが不規則になることもある。それに、いくつかのグループが研究者が自分のネットワーク測定実験を実行できる共有プラットフォームを作っている。

これらすべての方法は、通常、特定のハードウェアや、そのオペレーティングシステムで動作するように適応されたツールを必要とすることが多い。最近の新しいシステムは、Kubernetesや仮想マシンを使ってデプロイメントを行っている。でも、現行のソリューションは簡単にデプロイできず、セキュリティ問題やネットワークの問題のようなイベントにも迅速に対応できない。

ユニカーネル

過去20年で、オペレーティングシステムに進展があった。パブリッククラウドサービスは、リソースを大量に消費するフルオペレーティングシステムを持つ仮想マシンに大きく依存していた。これにより、かなりのスペースとメモリを占有していた。

これらの問題を解決するために、DockerやLXCのような技術が登場して、アプリケーションがコンテナ内で実行できるようになった。これは、仮想マシンよりも軽く、リソース効率が良いんだ。ただし、コンテナは仮想マシンよりも脆弱になる可能性があるから、セキュリティの問題もある。

これが新しい解決策であるユニカーネルにつながった。ユニカーネルは、特定のアプリケーションのために特別に構築された非常に軽量な仮想マシンだ。フルオペレーティングシステムを必要としないから、パフォーマンスが向上し、セキュリティリスクも減少する。ユニカーネルは、必要な部分だけを含むことで、従来の仮想マシンやコンテナよりも有望な選択肢を提供する。

ユニカーネルの課題

ユニカーネルの主な問題は、既存のアプリケーションをこの新しいフォーマットに合わせて手動で変更しなければならないこと。これはけっこう複雑で、必要なコンポーネントを抽出したり、アプリケーションプログラミングインターフェース(API)との互換性を確保したり、パフォーマンスを最適化したりするのが難しいこともある。幸いなことに、Unikraftのようなフレームワークが作られて、プロセスが簡略化されている。これらのフレームワークは、開発者が小さく、すぐに起動できて、メモリを最小限に抑えたユニカーネルを作るのを手助けすることを目的としている。

このドキュメントは、ユニカーネルがより柔軟で効率的な測定ツールの基盤として機能できると主張している。特定のインターネット構造を明らかにし、ハードウェアベンダーに有益な情報を提供できるユニカーネルベースのシステムの具体例を紹介している。

背景

ここでは、論文の残りを理解するために必要な基本概念を説明する。ユニカーネル、アプリケーションをユニカーネルに変換するためのUnikraftフレームワーク、メモリの重複排除という技術を見ていく。

ユニカーネルは、アプリケーションとオペレーティングシステムカーネルが密接に連携する現代的なアプローチだ。簡単に言うと、ソフトウェアは必要なものだけを含むようにコンパイルされ、必要なシステムコールやドライバーが含まれる、1つの実行可能なイメージを形成する。この設計により、ユニカーネルはアプリケーションの実行に必要ない余計なコードを含まないため、セキュリティの問題を減少させることができる。

ユニカーネルの種類

ユニカーネルには主に2つのタイプがある:

  1. POSIX準拠のユニカーネル: これらは古いアプリケーションと新しいアプリケーションの両方を実行できる。クロスコンパイリングという技術を使って、通常はより大きなコードベースを持っている。でも、これにより従来のアプリケーションをユニカーネル空間に移行する比較的容易な道が提供される。Unikraftシステムがその一例。

  2. 言語ベースのユニカーネル: これらのユニカーネルはカスタムAPIを持ったシンプルなオペレーティングシステムとして構築され、新しいコンポーネントの作成に焦点を当てている。欠点は、通常は既存のコードを書き直す必要があること。これに該当するのがMirageOSで、OCamlプログラミング言語を使ってゼロから設計されている。

Unikraftは、従来のオペレーティングシステムと現代的な原則を組み合わせているから目立っている。モジュラー設計を採用していて、明確なAPIの境界を通じて機能する個別のコンポーネントを可能にし、効率的なパフォーマンスを実現している。

Unikraftフレームワーク

Unikraftには2つの主な機能がある:

  1. マイクロライブラリ: これはコアのUnikraft APIを実装した小さなソフトウェアコンポーネントだ。ライブラリのプールの中で、各ライブラリは同じ基準に従っていて、相互に交換可能。これにより、開発者はさまざまなライブラリプロジェクトから機能を簡単に統合できる。

  2. ビルドシステム: Unikraftには、ビルドプロセス中にアプリケーションに含めるマイクロライブラリを選択できるユーザーフレンドリーな設定メニューがある。ユーザーはサポートしたいプラットフォームやCPUアーキテクチャ、カスタマイズしたい特定のマイクロライブラリを設定できる。

既存のアプリケーションをUnikraftに移植するために、開発者はいくつかの重要なファイルを提供する必要がある。具体的なMakefileファイルを含めて、Unikraftのリポジトリの場所やソースファイルのパスを示す必要がある。多くの場合、アプリケーションコードの変更は最小限で、主に正しくソースコードをコンパイルするためにMakefile.ukを作成することに関連している。

メモリの重複排除

複数の仮想マシンやユニカーネルを使用すると、それらの分離のためにメモリの使用量が高くなることがある。これを管理するために、クラウドプロバイダーは同一のメモリページを探して1つにまとめるメモリ重複排除スキャナーを使える。例えば、LinuxカーネルのKernel Samepage Merging(KSM)機能がこれを実現している。他のスキャナーのUKSMはより効率的かもしれないが、カスタムカーネルが必要。

アプリケーションをユニカーネルに移行する

ネットワーク測定ツールをUnikraftを使ってユニカーネルに変換するプロセスにはいくつかのステップがある。最初のステップは、アプリケーションがユニカーネルフレームワーク内でどう機能するかを定義すること。次に、Unikraftのシングルプロセスモデルに適合するように変更を行う必要がある。主な変更の1つは、Unikraftがシングルプロセスアプリケーションしかサポートしないため、多プロセスサポートを削除すること。

移行プロセス中に、アプリケーションが正しく機能するために、さまざまなライブラリを更新する必要があるかもしれない。これには、アプリケーション内の通信を調整して、Unikraftフレームワークに対応したソケットを使用するようにすることが含まれる。変更が行われたら、アプリケーションをコンパイルできる。

パフォーマンス評価

パフォーマンスを評価する際には、アプリケーションが従来のセットアップ(仮想マシンやコンテナ)と比較してどれだけうまく動作するかを見る。メモリ使用量、CPU使用率、実行時間、および各方法の全体的な効果を理解するために、さまざまなテストを実施した。

メモリ使用量

テストでは、ユニカーネルはDockerイメージよりもずっと小さく、仮想マシンイメージよりも小さいことが分かった。ユニカーネルは他の2つのセットアップよりもかなり少ないメモリを使っていて、これは特定のタスクのために調整されていて、不要なコンポーネントを排除しているからだ。

デプロイメントと実行時間

実行にかかる時間を考えると、ユニカーネルはかなり優れた性能を発揮した。デプロイメントと実行にかかる時間は、Dockerや仮想マシンと比較して常に短かった。ユニカーネルは小さなバイナリファイルから始まるため、初期化するコンポーネントが少なく、迅速な実行が可能だ。

CPU使用率

ユニカーネルのCPU使用率は、Dockerや仮想マシンよりも効率的だった。ユニカーネルの軽量設計により、リソースを少なくても多くをこなすことができ、複数のインスタンスを同時に実行してもパフォーマンスが落ちることがなかった。対照的に、Dockerはリソースを多く消費して、CPUの使用があまり効率的ではなかった。

柔軟なデプロイメント

この作業の主な目標の1つは、ユニカーネルがインターネットのどこでもネットワーク測定のために迅速にデプロイ可能であることを示すことだ。これを目的に、ユニカーネルをリモートサーバーにデプロイするシナリオを設定した。

テストのために、シンガポールやカナダなど、異なる地域にあるクラウドサーバーを使用した。異なるタイプのインスタンスをこれらのリモートノードにデプロイするための管理スクリプトが作成された。このスクリプトはさまざまなデプロイメントイベントを処理できるように設計され、リクエストへの迅速な対応を可能にした。

テストの結果、ユニカーネルはDockerや仮想マシンよりも早くデプロイされた。また、限られた時間内により多くの成功したデプロイメントを管理できることが分かり、プレッシャー下でのスケーリング能力を示している。

結論

この作業は、ユニカーネルがインターネット測定システムの効率と柔軟性を向上させることができることを強調している。ユニカーネルを使用することで、研究者はリソースを少なくして迅速に変化に対応できるネットワーク測定ツールを展開できる。多くのインスタンスを低メモリとCPU使用で実行できる能力は、従来のアプローチと比較してユニカーネルの強みを示している。

ユニカーネルを使用する全体の目標は、さまざまな状況に簡単に適応できるツールを提供して、インターネット研究をより効果的にすることだ。アプリケーションをユニカーネルに移行するための手順は、この分野における今後の開発のためのフレームワークとして機能することができる。

ユニカーネル技術の進展は、将来的にネットワークインフラにおけるこれらのシステムのより広い受け入れと使用につながるかもしれない。

オリジナルソース

タイトル: uTNT: Unikernels for Efficient and Flexible Internet Probing

概要: The last twenty years have seen the development and popularity of network measurement infrastructures. Internet measurement platforms have become common and have demonstrated their relevance in Internet understanding and security observation. However, despite their popularity, those platforms lack of flexibility and reactivity, as they are usually used for longitudinal measurements. As a consequence, they may miss detecting events that are security or Internet-related. During the same period, operating systems have evolved to virtual machines (VMs) as self-contained units for running applications, with the recent rise of unikernels, ultra-lightweight VMs tailored for specific applications, eliminating the need for a host OS. In this paper, we advocate that measurement infrastructures could take advantage of unikernels to become more flexible and efficient. We propose uTNT, a proof-of-concept unikernel-based implementation of TNT, a traceroute extension able to reveal MPLS tunnels. This paper documents the full toolchain for porting TNT into a unikernel and evaluates uTNT performance with respect to more traditional approaches. The paper also discusses a use case in which uTNT could find a suitable usage. uTNT source code is publicly available on Gitlab.

著者: Maxime Letemple, Gaulthier Gain, Sami Ben Mariem, Laurent Mathy, Benoit Donnet

最終更新: 2024-05-07 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2405.04036

ソースPDF: https://arxiv.org/pdf/2405.04036

ライセンス: https://creativecommons.org/licenses/by/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

ネットワーキングとインターネット・アーキテクチャマイクロサービス:ソフトウェア開発の新しいアプローチ

マイクロサービスとコンテナがソフトウェアのパフォーマンスと管理をどう改善するかを発見しよう。

― 1 分で読む

類似の記事