P2Pは不勉強だし2年くらいしてないので最近の話とかも勉強しつつちゃんとやりたいですねーというページ。
実際に運用する気はなくて、ちょっとしたゲームみたいな感じでダラダラやりたい。
※このページはIEにはクールすぎるため、FirefoxかGoogle chromeを推奨しています
操作パネル
自動発生・消滅モード
オン
オフ
操作
1
5
10
20
50
100
ノード
/
1
5
10
20
50
100
ノード
ステータス
nodes,
steps
予定
jsで仮想ネットワークを扱うライブラリを作る(firefox,chorome用)(完)
canvasが動くか確かめる(完→遅すぎ)
Winny系のアルゴリズム+2次元でとりあえず動かす←イマココ
最近の流行とかいろいろみる(ただKVSや制約云々言っているのは目指している方向が違うのであまり興味ない)
パクリ+手抜き部分を補完しながら調節
いろいろ試す。特に各ノードが近傍のノード密度から全体ノード数を推定することとか、それによって適切な距離のリンクを自動で張るみたいなこと、別の話として次元を増やしてうまく並べることができれば自動的にショートカットになるはずなのでなんかそのへんの話を、楽観的に
基本的に、ノードはある程度の規則性は持っているもののテキトウに並んでいる可能性も捨てきれないので、クエリは高確率で速く返ってくるのであれば、たまに返ってこなかったり次の日に返ってくることがあっても問題ないと思っている。
そのあたりの保障を気にしはじめると、レースコンディションの問題にハマるし、実環境では攻撃ノードがいることも考えられるのであまり強い制約はネットワークの脆弱性になるんじゃないかと!
現在のルール
Winnyから接続回線の概念を取っ払ってクラスタリングだけ残した感じ。+α
ノードは0.0〜1.0の2つの実数を特徴として持っている
ノードは、初期ノード情報としてランダムに2ノード分の情報を与えられて生まれる
最大3つの能動的な接続行う。優先順位として相手ノードの特徴との距離+ノルム(自分よりノルムが大きいノードの優先順位をあげる)を使う
接続を受けたノードは、自分の持っているノード情報の中から接続相手にオススメのノード情報を20個送信する
オススメされたノード情報は最大50個まで保存する
各ノードは接続を最大4つまで受け付ける
各接続はある程度の時間ごとに切断する。基本的には特徴の距離が離れているノードほど速く切断され、近いノードは長く繋がっているようにする。ただそれを正しく行うにはネットワークの密度が必要になるが、そこまではまだやってない。テキトー
動きとしては自動切断+オススメノード+接続優先度でだんだん近いもの同士が接続するようになって、それによって全体がソートされる。順番に並んでくれればあとはどうとでもなる。
安定状態にはならない。
現在の問題点
接続方向を定義せずにノード特徴の距離が違いものと接続しているのでノード数が増えるとクラスタが形成されてクラス内で互いに接続しあってネットワークが分離してしまう。
ノルムで接続方向を決めるようにして解決。
まだノード増えると互いに繋がりあって輪っかっぽくなる。どうにかしたい。