KubeConでのプレゼンテーションをベースに解説する。コンテナを用いたクラウドネイティブなシステムに移行しようとすると、従来の仮想マシンベースのシステムよりも粒度の細かいコンテナワークロードをオーケストレーションする必要がある。昨今Kubernetesが注目されているのは、そのためだ。インフラストラクチャーエンジニア、ネットワークエンジニア双方にとって頭が痛い問題である。多くのコンテナが連携するシステムであれば、コンテナ間のトラフィックを遅延なく通信させることが重要になる。Istioのように、サービスメッシュとしてPodの中にProxyをサイドカーモードで構成する場合、コンテナとProxyの間にも通信が発生し、ますますオーバーヘッドが生じることになる。Filter)というLinuxカーネル内でパケットをフィルターする機能を応用してPod間のネットワークをシンプルかつ高速にするオープンソースソフトウェアが話題になっている。今回はそのソフトウェア、Ciliumについて背景と概略を紹介しよう。Graf氏のプレゼンテーションの動画を紹介する。Kernel」と題されたセッションを録画したものだ。Hatを退職後に、Ciliumの開発をリードするCovalentというベンチャーを創立した。vSwitchのコントリビューターでもあるという。KernelこのセッションでGraf氏は、BPFを実装したLinuxカーネルの事例を3点紹介した。Facebook、Netflix、GoogleのそれぞれがロードバランサーやトレーシングのためにBPFを使い始めているという。これに至るには、その背景を理解するべきだろう。そのためにはCiliumのサイトにある以下の記事を参照されたい。BPF?以前のようにネットワーク自体もそれほど高速ではなく、トラフィックの量も少なかった時代であれば、iptablesを使って送受信をフィルターするケースは有効だった。サーバーがクラスターになり、仮想マシンがコンテナになる時代においては、iptablesに記述されるルールも数百から数千行に達することから、iptablesがボトルネックになるという問題点を解説している。それに対してクラウドネイティブな環境では、IPアドレスとポート番号を用いたルールを使うiptablesよりも、カーネル内で実行されるプログラムを使ってIDをベースに実行されるフィルタリングのほうが優れているという。ルールの追加時にリロードが必要となるiptablesに比べて、変更が即時に反映されるという部分は、現代のインターネットビジネスには必須の要件だろう。Ciliumを理解するために、KubeConの動画に戻って解説を続けよう。Graf氏が紹介するFacebookのユースケースによれば、FacebookはBPFをロードバランサーとして利用することでパフォーマンスが10倍以上向上したという。Facebookでのベンチマークそして本来のパケットフィルタリングとしての性能比較として、2つのサーバー間でパケットを送り続けてフィルターできる数を比較したのが以下のスライドだ。DDoSに対抗する際の性能比較ここで分かるのは、BPFはiptablesによるフィルタリングよりも遥かに高速に処理ができているという点だ。次のスライドも性能測定のスライドだが、ここでも数倍の高速化という結果が出ている。iptablesとBPFの比較このグラフで右から2番目のグレーのバーがBPFをベースにしたbpfilterの値だが、確かにiptables(黄色いバー)と比較して格段に高速になっている。右のバーは、BPFをNICにオフロードしたケースの値だという。SmartNICでこのフィルタリングを実行することで、システムとしては格段に負荷を減らすことが可能となる。DDoS攻撃などへの対抗策として注目されているのはこのためだ。このグラフの元になっている記事はこれだ。Enterprise?BPFを実装する際の流れを解説したのが、次のスライドだ。BPFを実装する際の流れプログラムとして実装されたルールがバイトコードに変換され、サンドボックスで安全かどうかを判定された後に、カーネル内で実行されることを解説している。CiliumにおけるBPFは、単にフィルターとして使われるのではなく、コンテナ間の通信をセキュアかつ高速にするためにも応用されている。Graf氏が強調しているのは、コンテナ間の通信の部分にEnvoyが利用されるユースケースだ。サービスからEnvoyに至るセッションに複数回のSocket、TCP/IP、iptablesなどを経て外部に通信されるオーバーヘッドを、Ciliumを使うことで大幅に削減できるという部分だ。Pod内のサービスからEnvoyに至るまでにオーバーヘッドが大きいという例このPod内の通信を、BPFによってショートカットさせることで高速化が実現される。BPFが高速であるというのはFacebookなどのユースケースでも証明されている通りだとすると、ここでもその恩恵が受けられるというのがGraf氏の強調する点である。CiliumがSocket-Socket間通信をショートカットサイドカーで構成された場合のパフォーマンスについて解説したのが、次のスライドだ。ここでも大幅な高速化が示されている。最後にCiliumのアーキテクチャーと必要要件が紹介された。Ciliumのアーキテクチャー。NAでも、Ciliumに関するセッションを行っている。SecurityここではKubeConの「コンテナ間の通信を高速かつ安全にするネットワークスタック」としてのCiliumから、gRPCやKafkaのような別プロトコルでも使える高速なネットワークスタックとしてセッションを行っている。Kubernetesやサービスメッシュのためのネットワークから、他のシステムでも使えるというプレゼンテーションに微妙に変化している。NAの間の3ヶ月で起きた進歩ということなのだろう。Kafkaについては、多数のサーバーで大量のメッセージを高速に処理する必要があるという要件から、Ciliumには絶好の対象と言える。ここであえてKafkaの名前を挙げて紹介しているのは、ビッグデータのコミュニティに対する訴求であろう。詳しい情報は、CiliumのGitHubページを参照されたい。vSwitchでも、BPFベースの拡張が行われている。ヨーロッパの通信業者であるOrangeが中心となって書かれた論文が発表された。vSwitchを拡張するというプロジェクトが立ち上がっている。Filters(PDF)高速性と高いセキュリティを実現し、iptablesの問題点を解消したCiliumには大きな可能性が秘められている。注目のオープンソースプロジェクトと言っていいだろう。この著者の記事一覧フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。Summit上海、ドコモのセッションは玄人好み2020/1/27キャリア・人材イベント正社員でも大丈夫。Summit上海、楽天モバイルのフル仮想化ネットワークに注目2020/1/20フリーランス/起業イベントスキルアップ、キャリアアップ、自分らしい働き方を実現。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。