• Welcome to Valhalla Legends Archive.
 

Open BotNet Spec 1.0

Started by Banana fanna fo fanna, April 29, 2003, 09:51 PM

Previous topic - Next topic

Arta

#15
Quote
I think if *most* nodes are trustworthy, they won't participate with the malicious nodes and will filter their traffic.

That kind of assumption is the root cause of 99.99999999% of security problems in software. You can't assume *anything*.

Quote
Yes, D may receive the same message a few times, but a feedback loop won't occur because it won't process the same message twice.

ok, that's a reasonable solution, but it still results in the generation of unneeded traffic.

I think there is a way to do this, but it involves a compromise. You need to select a number of dedicated nodes, running servers. These nodes should be interconnected, so that all nodes are aware of eachother, and no node going down affects the stability of the network. There could, in theory, but a large number of these nodes. They could dynamically be added, since all you'd need to do is add the address of the new node to the others. The clients would then connect to one node of their choice. Each dedicated node would have to remain in communication with the other dedicated nodes so that each one knows how to route whispers, chat, commands, updates, and so on. All the dedicated nodes would have to maintain copies of each database - or remember which database is stored on which node. You'd have to have 2 protocols, Node-to-Node, and Client-to-Node. If you haven't noticed already, this is (more or less) how Battle.net gateways work - sets of interconnected servers.

The only real difference between this and what kane suggests is that these nodes are dedicated, and are therefore better suited to efficiently handling such things as banned users, mutually exclusive access to databases, and so on.

Obviously, such a system would require vastly, vastly more effort to implement than it's worth.

Skywing

Suggestion: Looking at existing distributed networks, and how they work.  You might start with how IP packets are routed across the Internet in the first place - other things to consider might be the peer to peer filesharing networks (perhaps Overnet).

Yoni

Quote from: Skywing on April 30, 2003, 10:36 PM
Suggestion: Looking at existing distributed networks, and how they work.  You might start with how IP packets are routed across the Internet in the first place - other things to consider might be the peer to peer filesharing networks (perhaps Overnet).
Since Overnet and eDonkey are closed source, you might want to look at the great open source client for the eDonkey network, eMule.

Quote- Convert from TCP to reliable UDP
By the way, "reliable UDP" already exists, and it's called RDP (Reliable Datagram Protocol). Unfortunately, this protocol is not nearly as popular as TCP and UDP, and you probably have to use raw sockets to use it, which requires admin/root privileges so it's not that practical... :(

However, you may look at the specification of RDP, and take ideas from it (or implement it fully) over UDP (instead of over IP).

Banana fanna fo fanna

Ah, thanks Yoni, didn't know about RDP.

Also, I have done work with Limewire, a Gnutella filesharing client. This protocol is similar except it doesn't use TTLs.