DNS in a mixed VSat / 3G environment

In this mobile application we use a VSat (Internet over satellite link) for the heavy lifting and 3G as a fallback connection. One of the biggest issues with VSat is its latency of 700msecs up to 5000msecs, depending on the location of the satellite, and other factors. In today’s environment, with heavy dependence on DNS to provide content from different locations (hello, CDN providers!), DNS becomes a bottleneck on VSat systems.

This problem can be reduced at limited cost by doing DNS over 3G (when available). The downside to this is that availability of DNS servers changes heavily depending on the connections available. 3G is not generally available on rivers, so these DNS servers tend to arrive and disappear frequently.

Second, VSat tends to loose signal when turning too quickly, when moored in a deep lock or behind a building, or when crossing under a bridge. To provide Internet access as much as possible we automatically switch the default route to 3G when we loose signal, and switch back to VSat when reacquired. This switching again causes appearance and disappearance of DNS servers, but now also the DNS servers behind the long latency VSat link. Dropping information on timing of these DNS servers needs to be avoided to make sure that DNS servers reachable over 3G are preferred when they both come back.

With the unbound caching DNS server we’ve got a tool that allows us to modify several parameters:

  • add and remove DNS forward entries
  • flush DNS entries, whole zones, but also DNS resolver information
  • provide local subnets / precreated zones
  • increase the minimum TTL of a DNS entry from seconds to minutes to reduce requests
  • do pre-fetching of DNS entries
  • look at DNS resolution statistics of the running daemon

Many of these features will disagree with normal behaviour on the Internet, but given the audience on board, it is generally preferable to speed up name resolution. Adding host specific routing entries for the DNS servers, and using open DNS resolvers (Google and Level3) performance has improved considerably.