One of our satellite offices is connected by a Satellite connection with no other high bandwidth option. Reliability is good and bandwidth is acceptable (50/10 MB/s), but latency is making, ssh, VPN and HTTPS miserable. I've noticed I can get a low latency 4G LTE signal at this location, but bandwidth is poor.

I control Linux servers on both sides of the connection, and I'd like to setup something akin to latency-sensitive channel bonding. E.g. perhaps a VPN setup where connections are established over LTE, and switch over to satellite once they've transmitted more than some threshold size (say 500kb).

Any ideas how I might go about this? One thought was if I had a UDP VPN that transmitted/received everything to both interfaces, and whichever receives a packet first wins....


You may be able to differentiate between traffic types by using policy based routing. Make sure all traffic is routed naturally over the satellite connection. Now create an ACL that matches any latency sensitive traffic. You would need to look at the port numbers for latency sensitive traffic, so you could match traffic with an SSH port number. Now create a route-map that matches the ACL and sets a next-hop for the traffic that would follow the LTE link. Finally, apply the route-map as a policy on one of the interfaces to inspect traffic and affect the next-hop for matched traffic. This interface would need to be in the traffic path, usually the ingress interface on the router containing both Satellite and LTE connections (or tunnels).

An example would be (where is the remote LAN):

access-list 100 permit tcp any eq 22

route-map LTE permit 10
 match ip address 100
 set ip next-hop

int f0/0
 ip policy route-map LTE 

You would also need to configure something similar in the reverse direction for return traffic.

It is also possible to match on packet size with policy routing. You may be able to send all small packets over LTE, interactive latency sensitive traffic usually has small packet sizes. You may experience some out of order traffic with this method, so may not give great results.

  • When implementing Karl's pretty clever idea, you might need to differentiate between SSH for human-interactive use (latency sensitive) and SSH for bulk transfer use (SCP, SFTP). One way to do that is with different TCP ports. The users or sysadmins would have to learn to configure their SSH servers accordingly and to use the standard port for one use case, and an additional nonstandard port for the other. But I'm disgressing into layers >4... – Marc 'netztier' Luethi Jul 19 '18 at 9:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.