Why is satellite latency so high? (and it’s not all to do with distance)
This blog is Part 1 of a 3-part blog and concentrates on high latency, the subsequent parts will discuss jitter, the effect of atmospheric conditions and choice of wavebands.
If we want to our applications to be available globally we have to bear in mind that there are lots of places on the Earth where wired and mobile (or other wireless communications) are not available, for example:
– In remote places (some less remote than you might think!)
– On aircraft flying over oceans or remote locations
– On ships distant from the shore
– In certain military situations
– Certain emergency services requirements, i.e. first responder
Just about the only reasonable way to serve these locations is to use satellite communications, provided you have a view of the sky that is. Due to their height satellites have a very large coverage (up to slightly less that 50% of the Earth’s surface you might think, but more on that in a moment).
It sounds fantastic. Why do we bother with any other kind of communication system then, after all most of us could mount a satellite antenna on outside of our offices, houses etc.? The answers are both technical and commercial:
– Satellite bandwidth has traditionally been very expensive
– Until recently satellite bandwidth has been very limited (128Kbps, 256Kbps)
– Satellites traditionally added a large amount of latency (delay) to network traffic
– Jitter is created which can affect streaming applications e.g. voice, video, rapid telemetry
– Adverse weather can cause large or almost complete data loss
But that was then. Things are changing:
– Bandwidth is becoming more available and less expensive, though still pricey compared to wired and mobile
– Lower satellite orbits are becoming available, which reduce latency
– There is an increased choice of wavebands which have better penetration of the atmosphere and rain
The technical factors “stress” applications in ways not encountered with other networks and if we want our applications to work we will need to test them in satellite networks and employ programming strategies which work around those stresses.
In this blog I’m going to focus on high satellite latency and its implication on applications. Look out for further blogs on jitter, the effect of atmospheric conditions and choice of wavebands.
Why is satellite latency high?
Anyone who has used the ping utility tool will have seen some very high ping times at times. For example, to many points opposite you on the Earth (antipodean) you may see ping times via undersea cable routes of 300ms, but you can see big ping times even to nearer locations – this is due to queuing i.e. the links are busy and your data has to queue which causes delay.
A satellite ping time might be 700ms or more and that’s nothing to do with queuing. Why’s that?
Because the satellite is very high indeed. Traditional Geosynchronous (aka Geostationary or simply GEO) satellites sit 22,236 miles (35,786 Km) above sea level, which is a very long way away, in fact almost 3 Earth diameters (just under 1 circumference) away. No wonder it takes so long to ping to the other side: your ping and the response has to go up and down to the satellite 4 times since you’re not, in general, directly under the satellite.
Simple solution, make them lower, yes indeed and that has been thought of. There are offerings for LEO (Low Earth Orbit and MEO (Medium Earth Orbit) but they have a problem. At anything but the GEO orbit level the satellite cannot maintain position in one spot over the Earth without needing to be driven all the time (which is impracticable), so at the lower orbits the satellite are moving, relative to the Earth’s surface, sometimes very quickly. Not so convenient for fixing on them, then.
Lastly to get round the back of the Earth will take more than one hop and that implies even more latency.
So how does this high latency impact your application?
Over a GEO satellite any chatty application will have to wait for a response from the server side (or client depending on the direction) which will take 700ms to perform.
Compare that to LANs (Local Area Networks) with 1-3ms response times and WANs (Wide Area Networks) with 10-300ms delays – depending on end point locations with mobile and wireless networks adding somewhat to this. It’s clear that after a few round trip conversations an application may be intolerably slow or even timeout, compared to functioning well in wired or wireless networks.
And how can you fix satellite high latency issues with applications?
Clearly you can’t just move the satellite! Though, there are lower orbit satellite options available that may work for you both in terms of service provided and budget.
If you need to work with the satellite as it is, then changing the way your software communicates offers the best solution:
– Change timeout values on network requests to allow for higher latencies
– Use overlapping network requests and responses where possible – instead of waiting for something to complete before requesting the next thing
– Caching more data where possible means you don’t need the network all the time
Sometimes you can use other software or equipment solutions to help you out, but they can be expensive. For example, if fundamentally, you have a data transfer issue i.e. the latency prevents you from using up the bandwidth available to you in the service, then, if you use standard transfer methods (ftp, Microsoft CIFS or your custom application that uses TCP to transfer blocks of data etc.) you can get equipment and/or software that may cache on your behalf and/or acknowledge receipt of data locally to the transmitter thus avoiding the latency. These are termed WAN optimisation solutions, but they don’t work in all cases, they can be expensive and they, themselves can cause issues.
But how do you know whether you have any issues with your application in satellite networks at all
Dirty word coming here: You need to “Test”
That may not be as formal as it sounds: we could say you need to try the application in the satellite network. There are issues with testing or trying using actual (real) satellite networks though:
– Satellite time is expensive and the equipment may not be easy to deploy
– It will be just about impossible to mimic your or your customers’ real locations
– If you find an issue which needs attention, getting it to the developers for a solution will be difficult (and if the developers say they’ve sorted it out it is likely to be very difficult to retest)
– You won’t be able to try out other satellite environments e.g. MEO or LEO without purchasing them
– You won’t be able to have a rainstorm appear just when you need it during your testing
Using Satellite Network Emulators
Because of the issues of “real network testing” in Satellite networks we’ve brought Satellite Network Emulation capabilities to our NE-ONE Network Emulators.
People think of anything with the name Emulator in it as some sort of complex mathematical device which predicts behaviours. They may be complex, but only internally. Externally, we make them very straightforward. And, they don’t predict behaviour, you get to actually try out (“test”) your application using your real clients and servers just as though they were in the satellite network.
All you need to do is plug them in between a client device and the servers and set them for the satellite situation you want. You can even try out other options like LEO or NEO within seconds.
Plugging them in is easy because they have Ethernet ports, you don’t need any satellite equipment at all.