[Mono-dev] Keep-alive connection with Remoting?

Brian Crowell 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?

--Brian




More information about the Mono-devel-list mailing list