Fixing packet loss

cats74

Dalayan Adventurer
I understand that on the outside this seems impossible, but I had an idea. Now bare in mind I am not a network engineer, or an awesome programmer by any stretch of the imagination, but I do have a "Basic" concept of the way things kinda work.
From my understanding the packet loss comes from using UDP packets, and although I understand it is essentially impossible to modify the client to use TCP packets, what if "front ends" were created?
Example, the SOD server program connects directly to another program running on the SOD server's computer. This programs entire job is to take the UDP packet, and re-package it in a TCP packet. It then send this TCP packet to the players computer who has a similar program that receives the TCP packet, and re-packages it back into the original UDP packet. This of course would mean that the clients would connect directly to that program instead of to the SoD server. As in this example.

|SoD server |-------|UDP to TCP |--------/ /-------------|TCP to UDP |--------|game client |
..............................Program ....................................... Program
\ ............................................. /.................................\................................................./
Running on Sod server.............................................Running on players computer

This to my understanding (I admit it is limited) will completely eliminate packet loss, and may even resolve some other bugs not even though to be related.

Yes, I understand the complexity of undergoing such a task (Well, I don't think it would be THAT complex if you understand programming and networking well) But do consider, The great wall of China also started with an idea.
 
Last edited:
Ok first of all, by 'packet loss' I assume you're talking about the issue that forces everyone to relog every hour. As far as I know the reason this happens is because after you've been in a zone for a while the client tries to do some handshaking with the server. The server doesn't support this handshaking and so the client has the 'packet loss' issue symptoms. Because this issue is not actually caused by UDP packets being lost, tunneling them through a reliable protocol to avoid packet loss will not help.

That being said, zone crashes (crashing during zoning) usually are caused by lost packets. This type of issue probably could be fixed by tunneling through a reliable protocol like TCP. Moreover software already exists to do this and is not difficult to deploy. In fact people have already posted such suggestions in the past. However zone crashing is not a big deal for 99% of people so there is not much motivation to do anything about it. If you are one of the unlucky 1% I can only suggest that you reduce the load on your net connection while playing or - if that doesn't help - try a different ISP.
 
I've tried to talk to a few people about this. From what I remember of the "packetloss after one hr" problem, it's a key generated somehow and that SoD server as is cannot decrypt or something. As usual I suppose it would require a client modification which isn't going to happen.

Somehow I think there are able people around that must have a clue about it - I know other private servers never have this problem, it has to be fixable somehow. Maybe talk to people that deved on these servers and would have a clue on this ?
 
The problem has nothing to do with a problem in the network code for the server, it has to do with the client attempting to refresh it's encryption protocol, something we have not been able to address due to it's foreign nature. We've attempted to figure out how to fix it, but it's like a needle in a haystack. We know why and even where it's happening, but we don't know what the client is looking for, in terms of a response from the server, which is why the client gets dropped, and the packet loss bug occurs. At this point, it's such a huge task and timesink that it's been put on hold for other priorities like "Kunark" etc.
 
Another problem in figuring out how to fix it is that we're using an older client, so we can't just hook up to live and see what the response should be. The other emu's which don't have the problem are using newer clients.
 
Out of general all around curiosity... Why don't we upgrade the client here?
Not that I am trying to criticize, but I just got a brainstorm one day, and though I would share.. Now that I share, I would like to use this opportunity to learn.. Then I can brainstorm more.. and eventually you will all get sick of my ideas until I come up with a super amazing one.. ;)
 
Would require an overhaul of the existing coding to make it compatible with newer clients. In all it would take too much work to upgrade all the coding on the server side to use a newer client.
 
When WR split from EQemu, there was already other servers running on that version, that might not have had this problem. People that had this knowledge might still be floating around. Was just wondering if they wouldn't mind having a look.
But anyway we can live with it it's not a problem on most situations (just some bosses or zones that require to move fast).
 
I just recently switched ISP (Comcast to AT&T DSL), and I noticed the PL bug happens a LOT more often now. Before, I rarely had the problem, and now I actually use the timer to remind me to refresh, especially if I am farming in GD or Siren's or something like that where you don't zone often. Connection speed seems to have something to do with it, as well as client encryption.
 
Back
Top Bottom