9月11日から15日にコロラド州デンバーで開催された OpenStack PTG に参加したのでその様子を報告する。

PTG とは

PTG は Project Teams Gathering の略で、OpenStack の開発者が集まって今後の開発について議論する場である。去年 (2016年) までは、OpenStack Summit と併設された Design Summit で議論が行われていたが、今年からは メインの議論の場は PTG として分離して行うことになった。とはいえ OpenStack Summit にも Forum という同様の場が残されており、実質年4回に増えたという見方もできる。

概要

デンバーは北緯約40度・標高約1600mにある都市で、北緯40度というと秋田市や北京あたりで標高も高いので寒いのではないかとまずは考えるところであるが、滞在期間中は連日最高気温が30度越えだったので、これは一体どういうことか と首をかしげていた。なお会場は北米の常に違わず大変に冷房が効いて寒かった。

今回は 2月にアトランタで行われた初回の PTG に続き 2回目の PTG であった。参加者は私が見たところざっと 200人程度といったところで、前回の参加者に聞いてみたところ規模はほぼ同程度ではないかとのことであった。
PTG の開催主旨の 1つとして、小規模であまり金をかけずに実施するということがあって、会場はデンバー郊外のホテルで、スポンサーが行う派手なイベントもなかった。

スケジュールは最初の 2日が cross-project、残りの 3日がプロジェクト毎となっており、以前の Design Summit と異なり Keynote セッション等に時間をとられることもないので、随分と余裕のあるスケジュールであると感じられた。

スケジュールはかっちりしたものはなく、http://ptg.openstack.org/ から辿れるページや Etherpad を見るとなんとなくわかるといった感じで緩く運用されていた。

以下ではプロジェクト毎に主な話題を紹介する。

Neutron

PTG 直前に Kevin Benton氏が仕事の都合で PTL を辞めて Miguel Lavalle氏に譲るというメールが openstack-dev に流れて驚いたが、Neutron のセッションは滞りなく行われ、この件による混乱はなにもなさそうな感じであった。Neutron のセッションは水曜からの 3日間行われた。

 

■ Documentation

最初のセッションはドキュメントの話題であった。以前は OpenStack にドキュメントチームがあってドキュメントの管理をやってくれていたのだが、最近ドキュメントが各プロジェクトに移管された。Neutron では neutron と neutron_lib リポジトリにあるといった説明がされた。
以前は別リポジトリだったので、ドキュメントの更新が必要なパッチのコミットメッセージに DocImpact フラグを付ける決まりになっていたのだが、今後はそのフラグは使わないで直接ドキュメントを修正するようにといった話もあった。

他に FWaaS の networking guide などの stadium プロジェクトのドキュメントはどうするかという話題もあり、元木氏が doc team 側の説明をしていた。全プロジェクトで書く必要はないようである。

 

■ Cross Project related Topics

cross project といっても Nova とかの話ではなく Neutron 内の話題である。まず、neutron_lib で callback payload を変えようとしているという話題がでた (パッチは https://review.openstack.org/#/c/474213/)。callback を使っているコードは全部変更が必要になって影響が大きいのでどうしようかといった話をしていた。PTG 後に他プロジェクトで修正が必要な箇所を手当てした上でパッチはマージされた。

他に neutron-lib では、各プロジェクトが neutron の db や OVO (oslo versioned object) のコードを import している依存関係をどう解消するかという話がでた。それらのコードを neutron_lib に持っていく方向で進みそうである。
参考: https://review.openstack.org/#/c/473531

CCF (common classifier framework) も取り上げられた。 Orange の Thomas Morin氏が話していた。Queens では CCF の v1 をリリースしたいとのことである。CCF は FWaaS や SFC などで共通の classifier を作りたいというプロジェクトで、IRC ミーティングログも 2016年 5月からあるが、ついに形になるようである。SFC プロジェクトで CCF を使った PoC コードを作るようである。Octavia プロジェクトの人も関心を示していた。CCF は hardware accelarator でも使えるのかといった質問も出ていた。

 

■ Pike Backlog

Blueprint は承認されていたものの Pike に入らなかったものについてのセッションであるが、こういうものがあるよと列挙して特に議論なく淡々と進んだ。
2時間の枠があったが 1時間で終わり、SG API の拡張を話すことになった。昔、SG API は拡張しないことにしたが、(API拡張を) 実験してみてもよいのではないかと Armando 氏が提案していたが、議論の結果 SG API はいじらずに FWaaS v2 に注力することになった。

 

■ Testing

review.openstack.org で動く CI テストの安定性の話題などである。fullstack test でテスト間の isolation がない話の議論がわりと盛りあがっていた。Jakub氏が OVS の sandboxing を引き続きやるが、Armando 氏が hack を試してとりあえず安定化できないか試してみるということになった。
他に Community Goal に従って Tempest Plugin を branchless の別リポジトリにもっていくといった話もあった。

 

■ API related Topics

最初に元木氏が policy-in-code の話をした。これは Queens での Community Wide Goal の 1つで、いま policy.json で定義しているデフォルト設定の定義をコードに移動して policy.json はコードから自動生成するようにするというものである。例えば Keystone は Pike でこれに対応している。
参考: https://governance.openstack.org/tc/goals/queens/policy-in-code.html

他に versioning と micro-versioning のどっちがいいかという話をしていた。Nova は Pike で extension を消したとのことである。元木氏が文章にまとめて API SIG に提案をもってくと言っていた。
予定より早く終わったので、Kevin 氏が明日やることのおさらいをして水曜のセッションは解散となった。

 

■ Reference Implementation Topics

木曜の最初のセッションで集まりが悪いことを危惧していたが、30人くらい集まっていた。

私が少し関係している of_interface, ovsfw に関しては Etherpad に書かれていたが特に議論はなかった。 Ihar 氏が古い ovs-ofctl の of_interface を消すパッチを出していたので聞いてみたところ、デフォルトを切り替えて大分経つし特にバグ報告も出ていないので消してしまおうということであった。

次に os-vif について Kevin 氏が説明した。 os-vif (https://github.com/openstack/os-vif) はもう 2年近く前からあるプロジェクトで、Nova と Neutron の vif の処理を共通ライブラリに切りだそうというものである。具体的には、os-vif で neutron/agent/linux の下のコードを置き換えるとかいった説明がされていた。ivs (Indigo Virtual Switch) のコードはどうするのかと山本氏が聞いていたが、もう消していいのではという話になった。

次に DVR openflow を Miguel 氏が説明した。DVR 相当の機能を OpenFlow で実装するもので、PoC が https://review.openstack.org/#/c/472289/ にあるとのことである。今ある DVR が落ち着くまではマージせず、テストも CI job の数を増やしてインフラに負担をかけないように fullstack でやるとのことである。

最後に linuxbridge の multinode CI の話になった。 Kevin 氏によると、devstack-gate を直して multicast が通るようにしないとだめだそうである。

 

■ Community related Topics

木曜の最後はこのタイトルで core レビュアーが足りない問題が話し合われた。
Mentoring をして Neutron に貢献したい人を育てる話や、良いコードレビューは何かといった話がでていた。

この後近所のバーベキュー屋さんで Neutron Party があった。Party では Octavia の PTL がたまたま隣で、近くに Swami 氏 (DVR担当) もおり、LBaaS と DVR がうまく動かないという話も出たりしていた。

 

■ Neutron その他

L3 Flavor というずっとやりかけになっている機能拡張について、元同僚の山幡氏と山本氏が話して山幡氏が引き継ぐことになった。networking-odl で必要なようである。

また、Miguel 氏 (現 PTL) がやろうとしている routed networks の floating IP 対応で neutron-dynamic-routing を使うのだが、scenario テストは弊社の角馬が書いたのでなんかわからないことがあったら質問してほしいと伝えておいた。

Nova-Neutron Cross Project

■ Nova/Neutron/Placement Interaction

火曜の午後にあったセッションで、参加者は 40人くらいであった。
Sean Mooney 氏が事前に Etherpad にドラフトを沢山書いていて、Nova の placement API を Neutron と連携させて vif の情報を使って最適なホストを選べるようにしたい (例えば QoS とか routed networks など)、といったようなことが書いてあった。

一方 Jay Pipes 氏は他のセッションでも話していたマイグレーションと GPU とか SR-IOV デバイスの話をしていた。一通り通して話した (議論した) 後、Queens サイクルでの優先付けの話になり、そのマイグレーションの課題と Cells v2 での再スケジュール問題 (alternate hosts) と、nested resource (NUMA での VCPU/メモリ 割り当てや SR-IOV 対応 NIC などの、資源間に親子関係があるようなもの) が重点課題となった。

他の話題として traits なども挙げられていた。これは Flavor の extra_specs に属性 (SSD が必要とか特定の CPU 機能など) を記述しておいて、placement API にそれを考慮したホスト割り当てをしてもらうというものである。
参考: https://git.openstack.org/cgit/openstack/nova-specs/tree/specs/queens/approved/request-traits-in-nova.rst

 

■ Nova/Neutron Cross Project

2つめの Nova とのクロスプロジェクトセッションは木曜の午後にあった。Nova の部屋で 60人くらいの参加者がいた。結構な人数である。
マイグレーション時にマイグレーション先の vif を最初に用意する multiple port binding の話や、マイグレーション時に vif type を変える話がされていた。前者は Pike で議論して方針は決まっていたものの作業が進んでいなかったものである。
他に os-vif を使って port binding ネゴシエーションをやる話もしていた。これも以前からある話題である。

これらについて今だれが担当しているという話をしていたので、Queens での進展を期待したい。

Fast Forward (skip-level) Upgrades

■ 1日目

Upgrades のセッションは月曜と火曜の 2日間に渡ってスケジュールが組まれていた。最初のセッションは、ボストンサミットの Forum の議論を振り返った上でこの PTG でのゴールを決めるというタイトルであった。

skip-level というと、バージョン n から n+2 に一気にアップグレードするような物騒な印象があるが、実際に行われていることは control plane を止めて n -> n+1 -> n+2 といったアップグレードを一気に行うということのようである。この名前が混乱を招くということで fast-forward upgrade という名前に変えることになった。 upstream では公式にはサポートされない手順であるが、やってる人はいるようである。運用の都合として、お客さんが 1年に 1回しかアップグレードをさせてくれないといった事情がある。
本題とは関係ないが、Container で upgrade 動かして Container を捨てたらいいのではと言っている人もいた。

例えば Ironic では実際にサービスを動かさないとアップグレードが完了しなかったりするようで、upstream 側で offline upgrade をサポートして欲しいといった要望があがっていた。
その他に、release note に heads up を適切に書いてほしいとか、release note ではなくもっと手順書の様なものがほしいといった要望が語られていた。

 

■ 2日目

2日目は NFV のアップグレードの話で、参加者は前日よりは若干減ったかなという程度には集まっていた。
NFV ではデータプレーンを一時的にも止めてはいけない等の制約があるようである。 OVS のバージョンを上げると、Operator が Kernel リブートしないといけないとか、OVS の特定のバージョンだとどうとか細かい話が出ていた。また、Jay Pipes 氏が GPU 等の SR-IOV デバイスを使っている VM のマイグレーションの問題を提起していた。それらのデバイスを一時的に detach してからマイグレーションを行うという手順をとるのだが、デバイスが一時的に外されていることをスケジューラが理解していないので、マイグレーション後にそれらの SR-IOV デバイスのあるホストに VM が戻れないという問題である。

Deployment

TripleO, Puppet, Openstack-Charms, Openstack-Ansible, Kolla の人達が集まって deployment tool の課題を話すセッションで、活気があった。

Michał Jastrzębski 氏が Kolla における課題を長々と話していた。事前知識がなかったので細かい所までは分からなかったが、コンテナで deploy するにあたっていろいろな課題があるようである。
Health Check をしっかりとやりたいという話もでて、Openstack-Dev に協力者を募るメールが流れていた。

Feedback

ランチタイムにプロジェクタで Etherpad を映してみんなの Feedback を集める Summit 恒例のものが今回もあった。最終日は帰ってしまう人が多いのか木曜日の昼に行われた。
冷房が寒いとか街が遠いとか列車がうるさいとか書かれていたが、静かに議論できて議論に必要なスペースも充実していたと割と好評であった。

ただ、ホテルの近くに RTD (www.rtd-denver.com) の線路と踏み切りがあり、特に夜間は警笛を鳴らしながら徐行するので眠れなくて困っていた人もいたようで (私も何回か起こされ た)、途中で汽車のアスキーアートが貼られてみんな大笑いしていた。

また、少数派ではあったが、年に 4回も出張するのは大変だから元に戻して欲しい (運用からのフィードバックを得るために Forum に行く必要もあるから) という意見は数人が述べていた。

OpenStack Foundation の人達は PTG を Experimental だと言っていたが、今後もこの形式が続くと思われる。次回はダブリンで開催されるようである。