[Mono-dev] Keep-alive connection with Remoting?
mono-devel at fluggo.com
Thu Aug 10 11:51:10 EDT 2006
Rafael Teixeira wrote:
> Trying to keep 30000 open TCP connections is something you simply
> can't do with affordable hardware, no matter the framework/language
> you use.
See, now that's an interesting observation for me, because that's almost exactly
what I was going to do. And here was my theory on how I was going to do it.
First, you must understand that I've been designing a TCP-based protocol with
the intent of (a) being able to funnel arbitrary streams all over the place, (b)
sending quick-burst messages quickly, and (c) bypassing firewalls and allowing
unsolicited traffic in return. I wanted it this way to serve my company's
current business strategy, but also so I could go off and write games with it.
(side note: my original intent was to use SCTP, but it seems a bit early for
reliable SCTP support across the range of technologies)
Naturally, you'll have some substantial networking problems to overcome here.
You'll kill most any router you set to the task. So, my plan was to have a set
of cheap machines, maybe with two NICs apiece, all assigned various public IP
addresses that were all listed as A records on a single domain name. (That way,
DNS randomly chooses a machine for you to connect to.)
Then, each of these machines will handle some set amount of connections. They
would also form several connections (in the tens) to some server behind the
firewall/router. Client requests could then be funneled over those few
connections to be processed by the actual workhorses.
There are a few other ways of looking at this. More work could be handed up to
the cheap machines to take some of the load off of the central servers, or they
could be smart enough to route amongst themselves. Or, you could only form
persistent connections when necessary, and otherwise close the connection.
Anyhow, I thought it was a workable plan. From what you've said, it sounds
difficult at best. What are your thoughts? Could it be done?
More information about the Mono-devel-list