Multiple per-user connections (MCN1/MCN2)

Ideas for ADC may be presented here for others to review and point out flaws or further improve the idea.
Forum rules
If you have an account on the wiki, remember to update the ADC Proposals page for new ideas.

http://dcbase.org/wiki/ADC_Proposals_list
Locked
maksis
Junior Member
Posts: 23
Joined: 26 Nov 2010, 19:36
Contact:

Multiple per-user connections (MCN1/MCN2)

Post by maksis » 27 Jun 2013, 22:14

This extension allows clients to max out their connection with less different sources by using multiple transfer connections per user. Additionally it adds a separate transfer connection that can be used exclusively for partial lists and small files, thus allowing browsing of partial lists without excessive waiting times caused by simultanous normal file transfer. AirDC++ has supported the MCN1 extension since version 2.20 and MCN2 is going supported since version 2.50. See http://www.airdcpp.net/forum/viewtopic.php?f=4&t=1023 for information about the implementation used in AirDC++.

Clients supporting this extension should advertise "MCN1" and/or "MCN2" in their C-C supports when initiating a transfer connection. Clients are also able to add a "CO" flag in C-C INF that specifies the maximum number of simultaneous per-user upload connections that can be created. This information can be used by the downloading client so that it doesn't add new waiting connections if the maximum limit has been reached. Not providing this parameter (or providing it with a value of 0) means that there is no separate limit for per-user connections.


Upload slot distribution

The uploading client should distribute its total upload connections fairly among the uploaders. When the maximum number of total connections is reached, additional connections for existing clients can simply be disconnected without an additional error message. Free slots that are advertised to other users should be counted based on the number of unique uploaders instead of the total number of running connections.


Small file slot

All downloading clients are able to have one connection that is exclusively used for downloading partial file lists and files smaller than 64 KB (never full file lists). Small file slot isn't included in the total connection limit that is specified with the "CO" parameter and connections for small files shouldn't affect the way how the regular transfer slots are distributed.

If the downloader wants to reserve a small file slot, it should add a flag "SM1" in C-C INF when initiating the connection (MCN2). Clients only supporting MCN1 don't flag the small file slot, so the uploader needs assign it based on the tranfer type/file size. The small file connection can't be converted to a regular file transfer connection.

maksis
Junior Member
Posts: 23
Joined: 26 Nov 2010, 19:36
Contact:

Re: Multiple per-user connections (MCN1/MCN2)

Post by maksis » 01 Jul 2013, 20:50

MCN2 wasn't added in AirDC++ 2.50 so it's still possible to make changes to it

Locked