[openrtm-users 00378] Re: サービスポートの接続数制御について

Takashi Kojima tkjim48 @ gmail.com
2008年 2月 21日 (木) 04:40:25 JST


産総研 清水様、安藤様

中央大学の小島です。
ご教授ありがとうございます。


> > サービスポートでのサービス実装は、
> > CORBAサーバントそのままですので、
> > 当然、競合状態があることを前提で
> > ユーザが実装すべきだと私は思います。
> > 私の場合、リエントラントでないサービスの実装を
> > するときは、mutexでロックをかけるようにしています。
>
> 私も、サービスのプロバイダ側の実装はそうすべきだと思います。
>

そうですね。当然、競合状態のことをかんがえて設計すべきですね。
基本的なことだったようで恐縮です。競合状態の解消については、mutexを使うことでひとまず解決したいと思います。

ただ、質問したような問題に関しては、mutexにより解決ができますが、別の問題として
接続コンポーネントが増えると、ロックを待ち状態の時間は必然的に増えてしまうと思います。
そうなると、高速な制御周期を持つようなコンポーネントを接続した場合、問題を引き起こしかねないのではないでしょうか。
(この問題についても設計について議論があるかとおもいますが・・・)

また、今後、そういったコンポーネントは、作成者が必ずしも使うわけではないと思いますので、
あらかじめ、接続制限をしておくことで、このような問題を回避できるのではと思います。

> > > 中略
>
> ただし、ポート(プロバイダインターフェースではなく)自身には、何らかの接続制限
> を行う機能があってもよいのではないかと考えています。
> 次のバージョンではそういった機能も入れたいと思います。

是非入れていただけると、幸いです。

> いま、考えているのは、rtc.confないしはコンポーネントごとのconfigurationファイルに
>
> rtc.conf
> # 接続を2接続まで許す
> mycomponent.port.port0.max_connection: 2
> # 接続制限なし
> mycomponent.port.port1.max_connection: -1
>
> このように記述することで、接続数に制限をかけられるようする方法です。
>
> これ以外にも何かいい方法がありましたら是非ともアドバイス
> 頂ければと存じます。

可能であれば、rtc.confなどで設定するだけでなく、ソースファイルにも、接続数の制限ができることは実装できませんでしょうか?
その方が、作成時に仕様を決定でき、作成者の意図を反映しやすいのではないでしょうか?


他にもあればいいなと思うことは、
識別キーが一致しなければ、接続できないような仕組みもあってもいいのではないでしょうか?

現在のポートですと、同じ型のインターフェースであれば、接続可能です。
しかし、場合によっては、用途が違うため接続したくないこともあるでしょうし、
セキュリティ上の問題で、接続させたくないこともあると思います。

とくにセキュリティを欠けたい場合には、定期的に変更する必要があるので、
インターフェース型を変えて接続できないというような実装よりも、
識別キーを変更することで接続できなくなるような仕組みの方が
保守性が高いと思いましたが、いかがでしょうか?

既にお考えかもしれませんし、勉強はしているのですが
まだまだ知識も足りないため、的はずれなことを言っていたら
申し訳ございません。

今後ともよろしくお願いいたします。

-- 
<----------------------------------------------------->
  中央大学大学院 理工学研究科
  電気電子情報通信工学専攻
  博士課程前期1年 國井研究室

  小島 隆史 [Takashi Kojima]

  ADRESS: 	〒112-8551 東京都文京区春日1-13-27
  TEL : 	 03-3817-1866(研究室)
  FAX : 	 03-3817-1847(学科準備室)
  E-Mail: 	takashi @ hmsl.elect.chuo-u.ac.jp
<----------------------------------------------------->



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