2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
OVS-DPDKとOpenStackで作るおうちNFV環境の構築(全1記事)
リンクをコピー
記事をブックマーク
辻広志氏:「OVS-DPDKとOpenStackで作るおうちNFV環境の構築」を発表します。よろしくお願いします。
自己紹介です。オレンジ色の会社で、NFV関係のアーキテクトをやっています。私はプログラマーではないので、今日はちょっとレイヤーが高い話かもしれませんが、ご了承ください。
本日のモチベーションですが、ネットワークの仮想化、高速化のノウハウを広めたいなと思ったのが1つです。前回のイベントで仮想マシンのルーターの話があって、みなさんのウケがけっこうよかったように見えたので、私もしゃべってみようと思いました。あとは「Twitter」を見ていると、自宅ラックの人はけっこう「VMware」を選択しているので、「OSSもいいよ」というのを伝えたいなと思ったのが2つ目のモチベーションです。
NFV(Network Functions Virtualization)とは、通信事業者のアプリケーションをOpenStackとかVMwareとかKubernetesで動かすことを言います。「通信事業者のアプリケーション」と書いているものは、いわゆる普通のサーバーや普通のネットワーク機器とはちょっと違うものです。NFVの前提が非常に難しくて、トランスポートはけっこうUDP(User Datagram Protocol)を扱っていて、パケットは落ちない前提です。こういうちょっと特殊な事情があります。
NFVの基本戦略ですが、「仮想化の心を捨てる」という、ハードウェアオフロードが1つです。もう1つは「CPUで殴る」で、DPDK(Data Plane Development Kit)に代表されるようなマシンパワーで何とかするというものです。
DPDKも軽く説明します。DPDKのそもそもの思想は、最近のCPUはたくさんコアがあるので、特殊なハードウェアを買うよりもいくつかのCPUコアを特殊な用途のために使ったほうが柔軟性が高いし、安いんじゃないかというものです。
DPDKがない場合、カーネルにネットワークを含むI/Oは、アプリケーションが依頼して、カーネルを通して行いますが、DPDKはデバイスドライバーの部分も含めたアプリケーションレイヤーを持ってきます。ネットワーク以外のI/Oはカーネル経由で行いますが、ネットワークI/Oはユーザースペースでやります。
また、CPUを特定のNICなどに固定して使うので、CPUはそのパケットのフォワーディングや編集を専門に行います。topコマンドで見ると、常に100パーセントで動いていて、アクセル全開という感じです。
最近このあたりの技術が普及してきたと個人的に考えています。OpenStackもけっこう古いソフトウェアですが、CPUをアサインするのが柔軟になってきました。OVS-DPDKも特に最近のものではないんですが、ずっと昔から安定してDPDKの実装版が出ているので、使い勝手がいいし、ドキュメントもけっこうあります。あとはDPDK対応のNICが増えているなという気がします。
また、メニーコアなCPUは一般家庭にも普及していると思っているので、作り方を紹介して、最後に軽く性能測定の結果を共有したいなと思っています。
どうやって作っていくのかというところですが、ここに書いているとおり、一般の家庭でも用意できるもので、今回考えてみました。私もVRのゲームがしたくて、ゲーミングPCを作ったんですが、「AMD Ryzen 5 3600」は12スレッドぐらいあるので、ちょっと買いすぎかもしれません。(NICは)「Intel X710」の10Gbpsのものを買ってきてブスッと刺して用意しました。
NICですが、IntelのNICを使えばある程度は間違いないと思います。今回はX700シリーズを買っていますが、もっと安価で入手性が良いものもあるので、そういったものを選択するのもいいと思いますし、Intel以外もサポートが増えてきているのでそれでもいいです。ただ、けっこういろいろなパソコンに入っているカニさん(※Realtek製NICのこと)は、DPDKに対応していないので、使えません。
次にプランニングしていきます。ハイパーバイザーとなるサーバーのCPU構成や、PCIデバイスの構成をちょっと見ておきます。
実際にこのあたりが肝になっていて、NFVっぽいポイントなんですが、CPUの割り当てをけっこう頭を使って考えます。ハイパースレッディングを使っている場合、キャッシュがこのコアとこのコアは一緒だよねとかも気にします。ハイパーバイザーが自分の仕事をする用のCPUプール、OVS-DPDKやvSwitchが使う用のCPUプール、ゲスト用のvCPUのプールと、大きく3つぐらいに分けます。
最近のOpenStackは、NFVだと性能を担保するためにゲスト用のvCPUをCPUピニングします。昔はCPUピニングをしたら、全部CPUピニングで使わないといけなかったんですが、最近はCPUピニングをしないものも一緒に載せられるようになってきたので、このあたりが最近は柔軟になってきたかなと思っています。
今回はこういう分け方をしていますが、ワークロードなどは自分の好きなようにカスタマイズしていいと思っています。
Ubuntu 20.04などを入れて、IOMMUとHugePageの設定だけをして、あとはドキュメンテーションに従ってOVS-DPDKとOpenStackをデプロイしていきます。ドキュメントに従ってと言いましたが、それなりに苦労はするかもしれません。
CPUの割り当てを計画したものを実際に設定に反映します。青文字や黄文字で書いているのが先ほどの囲っていた部分になるんですが、調整した結果をここに反映していきます。
最後です。VMに対しても最近いろいろとできるようになってきました。今回はQEMU/KVMの環境を想定しているんですが、CPUピニングなどやるときは一番下のエミュレータスレッドが曲者でした。今までは無指定で何もしなかったら、VMにCPUピニングしたコアに、エミュレーター用の仕事も割り振られちゃうので、例えばここでCPUをフル回転で使いたいときに、エミュレーターが邪魔になるのが問題になりました。
それを解決するisolateというモードもあるのですが、isolateしちゃうとエミュレーターがそんなにたくさん仕事をするわけではないのに、専属のコアが一つひとつ必要でした。それがshareというかたちで1つのコアにまとめられるようになっていたので、紹介です。
あとはOpenStackのコマンドを叩いてネットワークを作って、イメージを登録して、サーバーをcreateしたらNFVっぽい環境にVMが立ち上がります。
実際に家の環境で検証してみました。ゲストVMに4GBぐらいの小さなVMを立てて検証しています。SR-IOV(Single Root I/O Virtualization)など、紹介していないものが途中登場するんですがご了承ください。
赤色の線で示しているところは、必ずパケットが通るところで確認をしています。VLANを切って、さっきの赤いところを通ってVLANで通信をするところです。訳あってホストマシンと通信していますけど、10GbpsぐらいはTCP(Transmission Control Protocol)で測って取れています。
ただUDPにするとパケットロスしまくります。実際に通るのが330kbpsで、170Mbpsぐらいしか出ません。これは「やっぱりNFVダメじゃん」とか「仮想化遅いじゃん」という感じではなくて、iperfを使っているからこうなるという話です。
結局Linuxの限界がゲスト側に来ただけなので、ゲスト側もDPDKを使います。PtgenというDPDKのパケットジェネレーターがあるので、それを使って測定してみました。方向があってちょっとややこしいんですが、Open vSwitch(OVS-DPDK)を使ったものからSR-IOVのポートまでパケットをフォワードすると、だいたい7Mbpsぐらいです。64Byteのフレームで3.6Gbpsぐらい出ます。
逆向きにすると、SR-IOVは64Byteでも10Gbpsぐらい出ていて、パケットロスして7Mbpsぐらいになっています。とはいえ、iperfでやるよりも21倍ぐらい速いです。
パケットロスについて、レートを落として確認をしたんですが、今回のパケットロスの原因までは至りませんでした。
最後にまとめです。一般の家庭で使っているハードウェアでもネットワークの仮想化はけっこうできるよという紹介でした。ちょっと設定するだけで7Mbpsくらい。パケットロス0には至りませんでしたが、できます。やっぱり調査は難しかったので、このあたりはまたネタにしたいなと思います。
ハイパーバイザーは作れたんですが、実はそれに載せる仮想ルーターがあまりないので、今後の課題です。以上です。ありがとうございました。
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略