diff --git a/doc/download_sequence_diagram.drawio b/doc/download_sequence_diagram.drawio index 33e679b..2014841 100644 --- a/doc/download_sequence_diagram.drawio +++ b/doc/download_sequence_diagram.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/doc/download_sequence_diagram.svg b/doc/download_sequence_diagram.svg index 3d39924..a67f522 100644 --- a/doc/download_sequence_diagram.svg +++ b/doc/download_sequence_diagram.svg @@ -1,3 +1,3 @@ -
Application2
Application2
Application1
Application1
Application3
Application3
Tracker
Tracker
DISCOVER REQUEST(file1)
DISCOVER REQUES...
DISCOVER RESPONSE (file1, Application2, Application3)
DISCOVER RESPON...
Applications are all already registered successfully into tracker.
Lets start a download of file1 from Application1.
Applications are all already registered successfully into tracker....
SIZE REQUEST(file1)
SIZE REQUEST(fi...
SIZE RESPONSE(file1, sizeof(file1))
SIZE RESPONSE(f...
HASH REQUEST(file1, "SHA512")
HASH REQUEST(fi...
HASH RESPONSE(file1, sha512(file1))
HASH RESPONSE(f...
HASH REQUEST(file1, "SHA512")
HASH REQUEST(fi...
HASH RESPONSE(file1, sha512(file1))
HASH RESPONSE(f...
Application1 is requesting hashsum from each application to ensure applications have
the same file, but an improvement could be to register this sum in the tracker, and ask only the tracker once instead of asking each application.
Application1 is requesting hashsum from each application to ensure applications have...
LOAD PART(0, 512, file1)
LOAD PART(0, 51...
RATIO REQUEST(Application1)
RATIO REQUE...
RATIO RESPONSE(Application1, upratio, downratio)
RATIO RESPONSE(...
Application2 will cache the ratio a few seconds, to avoid asking the tracker
on each LOAD PART.
Here, based on this ratio, Application2 randomly decide to send a DENY to punish Application1. This filepart will be asked again later, and possibly to an other application.
Application2 will cache the ratio a few seconds, to avoid asking the tracker...
DENY(file1, 0)
DENY(file1, 0)
LOAD PART(1024, 512, file1)
LOAD PART(1024,...
RATIO REQUEST(Application1)
RATIO REQUEST(A...
RATIO RESPONSE(Application1, upratio, downratio)
RATIO RESPONSE(...
LOAD RESPONSE(file1, 1024, content(file1,1024, 512))
LOAD RESPONSE(f...
Application1 asks for all the missing fileparts (not represented here).
Application1 compute the hashsum locally and if it matches the received one, send
UPDATE RATIO to tracker.
Application1 asks for all the missing fileparts (not represented here)....
UPDATE RATIO(Application2, <number of bytes sent by Application2>)
UPDATE RATIO(Ap...
UPDATE RATIO(Application3, <number of bytes sent by Application3>)
UPDATE RATIO(Ap...
The download is over. Application1will detect a change in filelist an register the new
file to the tracker.
The download is over. Application1will detect a change in filelist an register the new...
Viewer does not support full SVG 1.1
\ No newline at end of file +
Application2
Application2
Application1
Application1
Application3
Application3
Tracker
Tracker
DISCOVER REQUEST(file1)
DISCOVER REQUES...
DISCOVER RESPONSE (file1, Application2, Application3)
DISCOVER RESPON...
Applications are all already registered successfully into tracker.
Lets start a download of file1 from Application1.
Applications are all already registered successfully into tracker....
SIZE REQUEST(file1)
SIZE REQUEST(fi...
SIZE RESPONSE(file1, sizeof(file1))
SIZE RESPONSE(f...
HASH REQUEST(file1, "SHA512")
HASH REQUEST(fi...
HASH RESPONSE(file1, sha512(file1))
HASH RESPONSE(f...
HASH REQUEST(file1, "SHA512")
HASH REQUEST(fi...
HASH RESPONSE(file1, sha512(file1))
HASH RESPONSE(f...
Application1 is requesting hashsum from each application to ensure applications have
the same file, but an improvement could be to register this sum in the tracker, and ask only the tracker once instead of asking each application.
Application1 is requesting hashsum from each application to ensure applications have...
LOAD PART(0, 512, file1)
LOAD PART(0, 51...
RATIO REQUEST(Application1)
RATIO REQUE...
RATIO RESPONSE(Application1, upratio, downratio)
RATIO RESPONSE(...
Application2 will cache the ratio a few seconds, to avoid asking the tracker
on each LOAD PART.
Here, based on this ratio, Application2 randomly decide to send a DENY to punish Application1. This filepart will be asked again later, and possibly to an other application.
Application2 will cache the ratio a few seconds, to avoid asking the tracker...
DENY(file1, 0)
DENY(file1, 0)
LOAD PART(1024, 512, file1)
LOAD PART(1024,...
RATIO REQUEST(Application1)
RATIO REQUEST(A...
RATIO RESPONSE(Application1, upratio, downratio)
RATIO RESPONSE(...
LOAD RESPONSE(file1, 1024, content(file1,1024, 512))
LOAD RESPONSE(f...
Application1 asks for all the missing fileparts (not represented here).
Application1 compute the hashsum locally and if it matches the received one, send
UPDATE RATIO to tracker.
Application1 asks for all the missing fileparts (not represented here)....
UPDATE RATIO(Application2, <number of bytes sent by Application2>)
UPDATE RATIO(Ap...
UPDATE RATIO(Application3, <number of bytes sent by Application3>)
UPDATE RATIO(Ap...
The download is over. Application1will detect a change in filelist an register the new
file to the tracker.
The download is over. Application1will detect a change in filelist an register the new...
Viewer does not support full SVG 1.1
\ No newline at end of file