> > No I think I’m more likely to trust my own professional opinion what with being a network engineer and all…
> >
> > If you have host you can boot someone from the game (and only the game) by blocking the IP of your target.
>
> Out of curiosity, do you think that it may be possible for 343i to prevent this in future games by having users “piggyback” off of one another? That is, could a game be designed so that a user who is able to connect to clients but not to the host can forward their data through another client?
Ok, ive put a little bit of thought into this but not a lot so im pretty much just answering of the top of my head here…
Technically yes, what you’ve described is more or less the same as a proxy (An intermediary server which forwards connections to and from the host). I suppose it could be applied in the same way as a host change caused bt the host quitting. A client loses their connection to the host and notifies the XBL server, the sever then initiates a proxy setup. everyone goes to black screen with the message ‘selecting best available proxy’ or something and once one is seleced the clients (disconnected players) communication is re-routed through the proxy.
However, there would be a lot of inherent problems with this setup. First of all, it would be extraordinarily more complex in terms of the underlying infrastructure of the XBL network as well as the netcode of the game itself. And the more complex a system is the more possible points of failure it has (redundancy can only ever be managed within reason. An online match is simply not important enough to validate the cost of have fail-overs for fail-overs of fail-overs)
Also, a suitable proxy must have a compatible NAT with the client. Without actually going into the finer details of Network Address Translation i’ll quickly describe why Open is good and Strict is bad (for the benefit of those that don’t know).
Open NAT can connect to Open, Moderate or Strict
Moderate can connect to Open or Moderate
Strict can only connect to Open
Because this is how it works it means that if you have a strict NAT then in order to participate in a game you must find at least one person with an Open NAT
If a search finds 8 people: 1 Open, 7 Moderate and 1 Strict then host will be given to the Open as it is the only one that can communicate with all the others
If the Host Quits, then only one thing can happen.
[/li]- The host will change to one of the moderates and the strict will be disconnected
The alternative would be to give Host to the strict which would result in the disconnection of all the remaining players and the game would end.
So in order to set up a proxy you must use someone with a compatible NAT.
Also, one must consider latency. Adding another hop along the route would increase latency for the client by a bit or by a lot. Sure if your proxy is very close to you or to the host then the increase in latency would be marginal but imagine a situation where the Host is in America, the Client is in Australia and the Proxy is in England… the client would surely just quit anyway. And because NAT must be met first it means that the available proxy’s may not be the most suitable choices in terms of distance.
Then you have to consider all the possible scenarios, If a person is booted and rejoins via a proxy what happens if the proxy quits? or a second player is booted and another proxy is required or an already existing proxy is booted or no one has a compatible NAT for the proxy and so on and so forth.
And finally you have to consider additional exploits. Whats to stop a proxy from lagging out or booting their clients? Or people who intentionally block their own connection from the host in order to force themselves to use a proxy (Im sure some people would find a reason to do this).
There is so much to consider and the development of such a system would be incredibly risky not to mention expensive. It would probably be safer to just migrate to dedicated servers but again that comes with a price that we would have to pay via our XBL subscriptions.