[openrtm-users 00919] Re: ネームサービスの頑健性(Re: ver 0.4.2におけるnon-blocking modeの不具合)

Yosuke Matsusaka yosuke.matsusaka @ aist.go.jp
2009年 8月 10日 (月) 15:52:05 JST


産総研の松坂です。

2009/8/6 Yosuke Matsusaka <yosuke.matsusaka @ aist.go.jp>:
> ネームサービスがCORBA分散システムのsingle point of failureになってしまう問題は
> CORBA一般の問題として認識されているようで、それに対応した頑健なネームサーバの
> 実装というのもあるようですが、もし、このネームサーバは強いぞ、などのノウハウが
> ありましたら教えてください。

個人的に興味があったので、CORBAの頑健性について、もう少し深く調べてみました。
他の方にも役に立つかもしれない情報だと思いますのでシェアします。

CORBAの性能を測る場合、多くの場合、通信スピード(marshaling/demarshaling速度)が
注目されるようですが、以下のページの「IIOP Robustness Testing Tool」という節で面白いデータ
とテストプログラムが公開されています。
http://dsrg.mff.cuni.cz/projects.phtml?p=mbench&q=2

IIOPはCORBAオブジェクト間の通信プロトコルですが、このテストプログラムは、規格外のIIOP
プロトコルを用いて各CORBA実装と通信(=攻撃)してみて、その通信に対する頑健性を計って
います。
レポートでは、ORBacus, Orbix, MICOの3実装のテストが示されているのですが、アボートや
ハング等の異常動作だらけでかなり散々な結果だったようです。
2002年のレポートですし、omniORBはテスト対象ではないので、確たることを言うにはまたテストを
やり直さなければいけません(テストプログラムのomniORBへのポーティング作業も片手間で進めている
ので結果が出たらまたシェアします)が、よくよく考えればスピード重視のCORBA実装は、プロトコル
チェックや異常対応等の処理をうまくはしょることによってその速度を実現しているはずなので、
ある程度の脆弱さはやむなしというところなのかもしれません。

CORBAを頑健にしようという方法の一つに、Fault Tolerant CORBA (FT-CORBA)があり、これは
現在アクティブなオブジェクトだけでなく、アクティブなオブジェクトが応答しなくなったときの
バックアップとなる複数のオブジェクトを同時に起動しておき、クライアントから活性に応じて
接続先を切り替えるというもののようです。
この規格を実装したものにgrouppacがあり、頑健なネームサービスの実装も含んでいるとのこと。
http://sourceforge.net/projects/grouppac/
ただ、不安定であれば複数起動すればよいというアプローチはやや力技でメモリも食うので、ロボットへ
の応用を考えるとあまり適さないかもしれません。

2002年のテストで苦杯をなめたMICOですが、最近はSecure性能を売りにしているようで、
feature listを見ると、かなり魅力的な売り文句が並びます。
http://www.mico.org/
MICOはGPLであるため、ライセンスにLGPLを含むomniORBに比べると使いにくい部分もある
かもしれませんが、ネームサーバを使わせてもらうだけでも良いことがあるかもしれません。

-- 
Yosuke Matsusaka, Ph.D  <yosuke.matsusaka @ aist.go.jp>
  Interaction Modeling Group /
  National Institute of Advanced Industrial Science and Technology (AIST)
  Tel: 029-862-6726  Web: http://staff.aist.go.jp/yosuke.matsusaka/



openrtm-users メーリングリストの案内