Project

General

Profile

Protocol core-core Version 3 » History » Version 25

Greg Burri, 07/09/2009 10:33 AM

1 1 Greg Burri
h1. Protocols
2
3
This page describes the protocols used by Aybabtu for network communication between cores and between core and GUI.
4
5 7 Greg Burri
h2. Core <-> Core
6 1 Greg Burri
7 21 Greg Burri
h3. Notes pour plus tards
8
9 22 Greg Burri
* Le message _HaveChunks_ doit être multicast et la réponse est un datagramme UDP. Il n'est pas possible de maintenir N-1 connexion TCP en permanence ou N est le nombre de peer. (à mesurer). DU coup ce message peut remplacer le _IMAlive_
10 21 Greg Burri
11
12 23 Greg Burri
See source:protos/network_protocol.proto for message details.
13 1 Greg Burri
14 23 Greg Burri
There is no more than one downloading from B to A. A peer which a download is active is setted as not free.
15
16
There is _NbDownloadThread_ thread T. Each thread will choose a free chunk and download it. Here is the thread loop.
17
<pre>
18
take the first file not finished -> f
19
for each chunk not download or not being downloaded takes the best one :
20
   c has a free peer -> p and p.downloadRate is the best.
21
   If there is some equals chunk, T will choose randomly among theses.
22
   If there is no free chunk then go to the next file.
23 24 Greg Burri
   If the hash chunks of a file are unknown then the hashes are asked to the source, see the message _GetHashes _.
24 23 Greg Burri
</pre>
25
26
27
28 8 Greg Burri
h3. Parameters
29
30 10 Greg Burri
Most parameters will be stored as constants in their component.
31
32 9 Greg Burri
|_.Name|_.Value |_.Unit|_.Explanation/Comments|
33 19 Greg Burri
| _IMAliveFrequency_ | 0.1 | [Hz] | The message _IMAlive_ is sent each 10s. |
34 14 Greg Burri
| _ChunkSize_ | 33554432 | [Byte] | (32 MB) |
35
| _LanSpeed_ | 52428800 | [Byte/s] | (50 MB/s) |
36 17 Greg Burri
| _TimeRecheckChunkFactor_ | 4 | - | If the time to download a chunk exceeds _TimeRecheckChunkFactor_ * _ChunkSize_ / _LanSpeed_ the peers are rescanned to choose a better one (better download rate). For example : 4 * 32 / 50 = 2.6 second |
37
| _SwitchToAnotherPeerFactor_ | 1.5 | - | During the recheck of the peers to choose a better one the other download rate must be above the current * 1.5. |
38
| _DownloadRateValidTime_ | 1500 / _LanSpeed_ = 300 s | [s] | (5 min). The download rate of a peer is only valid during this time after its last update. After that its rate is set to the maximum. | 
39 15 Greg Burri
| _TimeBetweenChunksUpdate_ | 500 / _LanSpeed_ = 10 s | [s] | Each 10 s a daemon will scan the _NumberOfChunkToUpdate_ first chunks from the first queued downloads to know which peer has which chunk. |
40 20 Greg Burri
| _NumberOfChunkToUpdate_ | 100 * _LanSpeed_ / _ChunkSize_ = 156 | - | The first 156 hash chunks (3 kB) will by send periodically to each peer. See message _HaveChunks_ in the proto file. |
41 19 Greg Burri
| _FindTimeout_ | 15 | [s] | A search request is abandoned after 15 seconds from the start of the request. See message _Find_. |
42 25 Greg Burri
| _GetHashesTimeout_ | 200 | [s] | Timeout for the message _GetHashes_. |
43 19 Greg Burri
| _GetChunkTimeout_ | 10 | [s] | Timeout for the message _GetChunk_. |
44
| _HaveChunksTimeout_ | _TimeBetweenChunksUpdate_ = 10 | [s] | Timeout for the message _HaveChunks_. |
45 1 Greg Burri
| _GetEntriesTimeout_ | 10 | [s] | Timeout for the message _GetEntries_. |
46 23 Greg Burri
| _NbDownloadThread_ | 3 | - | Number of concurrent downloading thread. |
47 8 Greg Burri
48 7 Greg Burri
h2. Core <-> GUI