ひとつだけランダムにChokeを解除する機能が備わっています。Chokeがされ続けて1ピースもダウンロードが開始されない状況が長く発生するのかどうか検証しました。
[Choke]
Torrentでは、一度にアップロードするPeerを制限しています。だいたい、4つくらいです。4つの内1つはランダムに切り替わります。4つの内3つは戦略的に切り替えます。つまり、転送速度に時間がかからないPeerや、以前にデータをダウンロードさせてもらったPeerに優先的にデータをアップロードするのに使用します。
低回線でひとつもデータの断片を持たない場合、ランダムに切り替わるものだけが頼りになります。長時間データがアップロードされない状況に陥ることはないのでしょうか?検証しました。
[楽観的Chokeであふれる確率]
このランダムに割り振られるアップロードするPeerを選ぶことを楽観的チョーク解除と呼ぶことにします。Chokeがデータをアップロードしない。Unchokeがデータわアップロードする。という意味です。
Peerが4つある場合
以下のような組み合わせが考えられます。○がunchokeされる。 ×がchokeされる。
○○○○
×○○○,○×○○ ○○×○,○○○×
××○○,×○×○ ×○○×,○××○ ○×○×,○○××
○×××,×○×× ××○×,×××○
××××
また、○となる確率は1/4、×となる確率は3/4ですから、
4つすべてのPeerからダウンロードできる確率は(1/256)3つからダウンロードできる確率は(12/256)、2つのPeerからダウンロードできる確率は(54/256)、1つからダウンロードできる確率は、(108/256)、どのPeerからもダウンロードできない確率は(81/256)となります。
同様にどのPeerからもダウンロードできない確率、
Peerが 4の場合は、 (3**4)/(4**4) = 0.31
Peerが 5の場合は、 (4**5)/(5**5) = 0.32
Peerが50の場合は、(49**50)/(50**50) = 0.36
Peerが1000000の場合は = 0.36
といった感じになります。また、30秒ごとに切り替わりますから、Peerが50であった場合、30秒後もはぶられる確率は、0.12、60秒後もはぶられる確率は、0.04となります。
Seederが存在している限り、ダウンロードがまったまできなくなる状況が続くことはなさそうです。
[PS]
簡単な2項分布の問題でした。2項分布つにいては、Googleしてください。
書き間違えてた。書き直した。
思ったよりもChokeが長く続く可能性があるのに驚いた。何か間違えているかな?
初期状態では、どれが戦略的に優先すべきPeerが不明なわけだから、(46**50)/(50**50)=0.015となる。また、((x-4)/x)**xは0.020くらいに収束する。つまり、Peer数が増えても状況はかわらない。
....ミスッた。別の記事で書き直します。