Hubs Network

Technical discussion about the NMDC and <a href="http://dcpp.net/ADC.html">ADC</A> protocol. The NMDC protocol is documented in the <a href="http://dcpp.net/wiki/">Wiki</a>, so feel free to refer to it.

Moderator: Moderators

Locked
verni0
Posts: 3
Joined: 2004-07-19 06:33

Hubs Network

Post by verni0 » 2004-07-19 08:45

Hi,

I am wondering, have you thought about building a Hubs Network. This will be somehow like a Super-DC++ network where only hubs are allowed.
This way you will have a global P2P network with two types of peer: "normal" Peers - users and Super-Peers - hubs.

Having this global DC++ network, a user can submit a search on the hub he is connected and get results from all the hubs in the Super-DC++ network. So, a user needs to/can connect at only one hub of the Super-DC++ network.

Here, there are details that need discussions and analysis, and if you did not talk about this already, I think it will be an interesting point for feature work.

Best regards,
verni

PseudonympH
Forum Moderator
Posts: 366
Joined: 2004-03-06 02:46

Post by PseudonympH » 2004-07-19 11:04

Hub networks already exist, although they aren't usually interconnected except for chat sometimes. There is a whole set of commands for multihub stuff, but I think it would be much easier to make it transparent to the user like it is with HTTP server farms. Simply adding a prefix for which hub the user is actually connected to would work well, I think. Keep in mind that some people have shares so large that receiving so many searches would result in them having 100% CPU usage: just ask fusbar.

cologic
Programmer
Posts: 337
Joined: 2003-01-06 13:32
Contact:

Post by cologic » 2004-07-19 11:46

This has been extensively discussed.

PseudonympH
Forum Moderator
Posts: 366
Joined: 2004-03-06 02:46

Post by PseudonympH » 2004-07-19 12:33

From reading a good amount of that, it's nice to see that you and I think alike. :)

verni0
Posts: 3
Joined: 2004-07-19 06:33

Not exactly multi hub...

Post by verni0 » 2004-07-20 03:25

PseudonympH wrote:Hub networks already exist, although they aren't usually interconnected except for chat sometimes. There is a whole set of commands for multi hub stuff...
cologic wrote:This has been extensively discussed.
I see what you mean by multi-hub but my idea is a bit simpler.

I think the main use of DC++ is for downloading. If I know the user that has the file I need I can get it without using any hub (generally speaking, because I connect directly to him).
Until here everything is fine.
But if I do not know the user that has my file I have to connect to a hub and search there and if I do not find the file I’m looking for I have to disconnect and connect to another hub, until I find it. So, one problem here is to which hub I should connect in order to find my file fast.

So my idea was a user connects to a single hub, does not matter witch (normally would by a hub close to him). This hub is part of a hub network (Super-DC++ network) and there each search query is submitted to all the hubs and a user gets results from all the hubs.
Of course, that the user gets all those results thou the hub he is connected. So for each user’s search, the hub to which this user is connected sends a search query thought the hubs network, collects the results and then sends all the results back to the user.

Only search uses this hubs network, the rest, chat, user list and so on is local to the hub.
In order to make things work faster the hubs may have some routing indices maintained among them (routing indices based on user’s shares) so the query goes to only the hubs that may answer it.

This idea is only theoretically, it needs some research and analysis, but I think you should give it a chance.

Best regards,
verni

cologic
Programmer
Posts: 337
Joined: 2003-01-06 13:32
Contact:

Re: Not exactly multi hub...

Post by cologic » 2004-07-20 04:07

verni0 wrote:But if I do not know the user that has my file I have to connect to a hub and search there and if I do not find the file I?m looking for I have to disconnect and connect to another hub, until I find it. So, one problem here is to which hub I should connect in order to find my file fast.
MoGLO automates this.
verni0 wrote:So my idea was a user connects to a single hub, does not matter witch (normally would by a hub close to him). This hub is part of a hub network (Super-DC++ network) and there each search query is submitted to all the hubs and a user gets results from all the hubs.
You're describing $MultiSearch. NMDC 1.x implements it. I know nothing of NMDC 2.x. DC++ hasn't, but some mods have (oDC used to, perhaps?). Further, many new hubs do not support it. DC used to support your suggested usage, yet it's not currently favored.
verni0 wrote:Of course, that the user gets all those results thou the hub he is connected. So for each user?s search, the hub to which this user is connected sends a search query thought the hubs network, collects the results and then sends all the results back to the user.
This is a passive mode search. $MultiSearch intentionally worked only for active mode searches which don't rely on hubs' relaying search responses, presumably due to bandwidth concerns (maybe those more directly involved can elaborate or refute this).
verni0 wrote:Only search uses this hubs network, the rest, chat, user list and so on is local to the hub.
This approach provides no effective way for DC++ to verify that a client connecting to it exists: $MultiSearch support without userlist sharing means that it has to simply accept that

Code: Select all

$MyNick I_could_be_on_another_hub_in_the_network_in_question|
in a client-client connection wolud have to be trusted, rather than checking on hubs the client's currently connected to, ensuring an extant user.
verni0 wrote:In order to make things work faster the hubs may have some routing indices maintained among them (routing indices based on user?s shares) so the query goes to only the hubs that may answer it.
Something like this?

Todi
Forum Moderator
Posts: 699
Joined: 2003-03-04 12:16
Contact:

Post by Todi » 2004-07-20 06:21


HaArD
Posts: 147
Joined: 2003-01-04 02:20
Location: Canada http://hub-link.sf.net
Contact:

Post by HaArD » 2004-07-20 09:57

I am assuming off the shelf DC++ clients, if you customized the client, or used something else (DC:Pro, NMDC, DCGUI) then some of these statements might not be true....

Sharing search results without sharing the Userlist is pointless. DC++ and deriviatives will not try to download from a User which is not Online. Online means the UserName shows in the Userlist of one or more hubs that you are connected to.

Furthermore, unless the hub can identify that the connection request you have sent, is for a user on another hub, and relay that information to that other hub, you still cannot initiate the connection to that user.

Within the confines of the current DC protocol Hub-Link provides the ability to link multiple hubs together into a seamless Hub Network where users can interact with each other as if they were on the same hub.

The Enable Flag in the Hub-Link App. allows for various degrees of linkage.

The current release includes support for NMDC v1 and SDCH. An LUA script for PtokaX hubs is in final testing. Documentation of all Hub-Link commands and how DC Protocol commands are handled is available to anyone who wants to develop support for any other Hubsoft. Any hubsoft which allows for scripting or plug-ins could theoretically support a Hub-Link connection.

cologic,

You are absolutely right about $MultiSearch.
oDC is the only client that ever supported it as far as I know and Opera eventually removed that support as the implementation was so hopelessly flawed it could never work as intended.

junkie86
Posts: 1
Joined: 2004-07-22 12:43

Post by junkie86 » 2004-07-22 12:59

I wanted to search all the existing hubs all at the same time so I went to the forum to see if other people thought the same like me. And I found this topic. I saw the idea of Verni and that idea is similar to mine.(I don't know how DC++ works)

It will be a very good option if you van search all the hubs at the same time, the network will be a lot bigger. And you won't have any problems downloading files that are scarce at this moment.(in the hubs you are connected with)

And beginning users have no clue which hub they will connect to. So if you explain that they can search all the hubs, the use of DC++ will be easier and DC++ will be a better program.

cologic
Programmer
Posts: 337
Joined: 2003-01-06 13:32
Contact:

Post by cologic » 2004-07-22 17:24

junkie86 wrote:I wanted to search all the existing hubs all at the same time so I went to the forum to see if other people thought the same like me. And I found this topic. I saw the idea of Verni and that idea is similar to mine.
You should have then read my response to the idea of Verni:
cologic wrote:
verni0 wrote:But if I do not know the user that has my file I have to connect to a hub and search there and if I do not find the file I?m looking for I have to disconnect and connect to another hub, until I find it. So, one problem here is to which hub I should connect in order to find my file fast.
MoGLO automates this.
junkie86 wrote: It will be a very good option if you van search all the hubs at the same time, the network will be a lot bigger. And you won't have any problems downloading files that are scarce at this moment.(in the hubs you are connected with)
How will the network be bigger?

verni0
Posts: 3
Joined: 2004-07-19 06:33

Re: MoGLO

Post by verni0 » 2004-07-23 03:57

cologic wrote:
verni0 wrote:But if I do not know the user that has my file I have to connect to a hub and search there and if I do not find the file I am looking for I have to disconnect and connect to another hub, until I find it. So, one problem here is to which hub I should connect in order to find my file fast.
MoGLO automates this.
Well... MoGLO....

It connects to all the hubs (one at a time) and does my search...

It is a good solution for my problem, but if this problem is to be the system's problem (DC++ system as a whole) then this is a bad solution.

Remember about the HTTP protocol... they made this protocol stateless and then they wanted it to have states within it so they invented new technologies to overcome the stateless (ActiveX, Java Applets, JavaScript and cookies).

So, MoGLO over DC++ is analogous to the "new technologies" over HTTP.

But, what happened if they had changed the HTTP protocol, so to be stateful...

Kind regards,
verni

GargoyleMT
DC++ Contributor
Posts: 3212
Joined: 2003-01-07 21:46
Location: .pa.us

Re: MoGLO

Post by GargoyleMT » 2004-07-23 18:46

verni0 wrote:It is a good solution for my problem, but if this problem is to be the system's problem (DC++ system as a whole) then this is a bad solution.
That's the crux of the it, no? Everyone does not agree that lack of global search is a problem.

Locked