Personal tools
You are here: Home ブログ 井上 P2P通信プロトコルデザインノート - ACLに泣く -
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

P2P通信プロトコルデザインノート - ACLに泣く -

アリエルフレームワーク(以下afw)は、ネットワーク越しにリソースを取得する時、依存関係を見て一括取得します。 ネットワークの効率的な利用のため、取れる時に、可能な限りリソースを取っておこうという戦略です。P2Pの特性上、あまり頻繁に探索要求を出したくない、という側面もあります。裏の事情はともかく、結果的にはスループットの向上につながっています。

一括取得する時のプロトコルは簡略化すると次のようになっています。

  1. 要求側が「欲しいリソースのIDリスト」を提出
  2. 応答側が「応答可能なIDリスト」を返す
  3. 要求側がリソースを順々に取得

2の返答で、ACLで読み取り不可のリソースを返さないようにしています(3の時もACL処理はありますが)。 3の時のムダな通信が省けますし、2の返答サイズも小さくなります。正しい設計だと思っていました。

残念ながら正しい設計とは言えませんでした。 なぜなら、ACLで取得できないケースと、応答側がリソースを返せないケースの区別を、要求側ができないためです。

要求側は、「取れるべきなのに何らかの障害で取り損ねた」のか「取れるべきではない」の区別ができない以上、取得を試みる必要があります。

ACLで取れないフラグつきで、IDリストを返すべきでした。

afwでは、未取得リソース(取り損ねた or ACLで取れていない)を覚えておき、一括取得時の「欲しいリソースのIDリスト」に載せることで、取得失敗を補完しています。また、ACLで弾かれたケースをキャッシュして、ムダな試行を回避しています。

ACLで読めないリソースは、ローカルにダウンロードしてもどうせ復号できない(つまり読めない)、というafwの特性を利用して、読めないACLのリソースでも取得してしまう、という案も理屈上は可能です。afwではちょっと採用が難しいと思いますが。

同じように見える問題や領域でも、アクセス制御が絡むと問題が複雑になることがあります。

P2Pのプロトコルなんて自分には関係無いと思って読んでいるかもしれませんが、アクセス制御の問題は突然やってくるかもしれません。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/p2p-acl/tbping

Re:P2P通信プロトコルデザインノート - ACLに泣く -

Posted by inoue at 2006-03-30 02:33
文書化したら、少し良い解決策を思いつきました。思考の外部化の効用です。

PCであれば、オンメモリの状態を外部記憶にシリアライズ化して、またオンメモリに戻しても、何も変化はありません(*)。人間の脳の状態を外部記憶に言語化して、また戻すと変化があります。言語のシリアライズ化能力の著しい不完全さによるものです。多くの場合、この不完全さはマイナスに作用しますが、稀にプラスに作用します。

(*)シリアライザにバグが無ければ。
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.