VSAT Basics — Latency is the Real Problem

In field ICT deployments across Africa, the Middle East, and Asia, VSAT (Very Small Aperture Terminal) is frequently the only available WAN connectivity option. The key characteristics you must design around:

ParameterTypical VSAT (GEO)Impact
Latency (RTT)600–900 msDevastating for interactive protocols (RDP, VoIP, TCP without tuning)
Bandwidth (shared)256 kbps – 4 Mbps down / 128–512 kbps upMust be rationed across all users
Contention ratio5:1 to 20:1Real throughput varies significantly by time of day
Reliability95–99%Rain fade can drop link entirely for minutes
Fair access policy (FAP)Depends on providerExcess usage throttled to 128 kbps or lower

The most common mistake is treating VSAT like a slow fibre connection. It is fundamentally different: the latency is fixed (physics — the signal travels 72,000 km round trip to GEO orbit), which means TCP's congestion control and retransmission timers are poorly tuned for it out of the box.

LEO VSAT (Starlink, OneWeb) changes this equation significantly — latency drops to 20–60 ms. However, in many field mission contexts, LEO terminals are not yet approved or available. This article focuses on GEO VSAT, which remains the standard for humanitarian and military field deployments.

Traffic Audit Before You Tune

Before touching QoS or shaping, run a traffic audit for 48–72 hours to understand what is actually consuming your bandwidth. In my experience, the top consumers in field sites are almost always:

  1. Windows Update (often consuming 100% of uplink for hours)
  2. Microsoft Defender signature updates
  3. Cloud backup sync (OneDrive, Dropbox, personal services)
  4. Video streaming (YouTube, social media) during lunch breaks
  5. Zoom/Teams video calls without bandwidth caps

Use your router/firewall's flow monitoring (NetFlow, sFlow, or SNMP) or a dedicated probe like ntopng to capture this data. On a FortiGate:

FortiGate CLI
# Enable flow sampling to see top talkers
config system netflow
    set collector-ip 192.168.1.100
    set collector-port 2055
    set active-flow-timeout 60
end

# Quick bandwidth usage per interface
diagnose netlink interface list
get system interface physical

QoS Classification & Queuing Design

For VSAT links, I use a 5-class QoS model. The key insight is that voice and critical operations traffic must be guaranteed a fixed bandwidth slice regardless of what else is happening on the link.

ClassPriorityBandwidth GuaranteeTraffic Types
Class 1 — Critical VoiceStrict Priority15% guaranteedVoIP (RTP/SIP), Satphone signalling
Class 2 — OperationsHigh30% guaranteedERP, SITREP tools, email, critical web
Class 3 — ProductivityMedium30% best-effortTeams/Zoom (audio only), Office 365
Class 4 — GeneralLow15% best-effortWeb browsing, file downloads
Class 5 — BackgroundScavenger10% max, throttledWindows Update, cloud backup, streaming
Do not use FIFO (first-in, first-out) queuing on a VSAT link — ever. A single Windows Update download will fill the queue and all interactive traffic (voice, email, critical operations) will experience multi-second delays. Use WFQ (Weighted Fair Queuing) or CBWFQ at minimum, with strict priority for voice.

Traffic Shaping & Rate Limiting

Traffic shaping proactively enforces bandwidth limits per class or per user to prevent any single consumer from starving others. On a FortiGate (common in field deployments), configure traffic shaping policies:

FortiGate — Traffic Shaper # Create a shaper for background traffic (max 10% of 512 kbps link = ~50 kbps) config firewall shaper traffic-shaper edit "background-limit" set guaranteed-bandwidth 10 set maximum-bandwidth 50 set priority low set per-policy enable next end # Apply to a shaping policy matching Windows Update destinations config firewall shaping-policy edit 1 set name "Limit-WU-Background" set service "HTTP" "HTTPS" set dstaddr "WindowsUpdate-FQDN-Group" set traffic-shaper "background-limit" set traffic-shaper-reverse "background-limit" next end

Key addresses to rate-limit in a field environment

Caching Strategies for Field Sites

A caching proxy is the single highest-ROI investment for a VSAT site. Web content served from cache does not consume satellite bandwidth. For a site with 30+ users, a small caching server (an old PC with 500 GB disk is sufficient) can reduce HTTP/HTTPS traffic by 30–50%.

Squid proxy with SSL inspection

Squid is the standard open-source caching proxy for field deployments. Deploy it on a local Linux VM:

Bash — Squid basic config snippet # /etc/squid/squid.conf — key settings for VSAT site http_port 3128 intercept https_port 3129 intercept ssl-bump cert=/etc/squid/ssl/myCA.pem key=/etc/squid/ssl/myCA.key generate-host-certificates=on # Cache size — adjust for available disk cache_dir ufs /var/spool/squid 20000 16 256 maximum_object_size 500 MB # Aggressive caching for common content refresh_pattern -i \.(png|jpg|jpeg|gif|ico|css|js|woff2)$ 10080 80% 43200 override-expire refresh_pattern -i \.exe$ 1440 50% 10080 refresh_pattern ^http:// 15 20% 2280

Windows Update caching with WSUS or MCC

For Windows Update specifically, deploy Microsoft Connected Cache (MCC) — a Docker container that caches Windows Update, Defender definitions, and Intune app downloads locally. Each subsequent device on the LAN pulls updates from cache, not the satellite link.

Optimising Microsoft 365 over VSAT

M365 services are sensitive to latency. Teams calls, in particular, suffer significantly on 600–900 ms VSAT links. These optimisations make M365 usable:

Microsoft publishes the full list of M365 IP ranges and FQDNs via a JSON endpoint (endpoints.office.com) that updates automatically. Use this to build your firewall allow-list and traffic shaping policy — hardcoding IPs leads to outdated rules as Microsoft changes its infrastructure.

Monitoring a Low-Bandwidth WAN

You cannot manage what you cannot measure. For field sites, a lightweight monitoring stack that doesn't itself consume much bandwidth:

ToolPurposeBandwidth Cost
SNMP polling (LibreNMS/Zabbix)Interface utilisation, link up/downVery low (<1 kbps)
SmokePingLatency trends, packet loss over timeMinimal (ICMP pings)
Squid access logs (ELK or Grafana)Top consuming URLs/usersZero (local analysis)
NetFlow (ntopng)Per-flow traffic breakdownNetFlow export ~1% of traffic volume
Uptime alerts (SMS/satellite phone)Link down notificationNear zero (SMS fallback)
On a well-tuned VSAT deployment with caching, QoS, and M365 optimisations, I've achieved usable Teams audio calls at 600+ ms RTT, email response times under 3 seconds, and SharePoint page loads under 5 seconds — on a 512 kbps shared link with 45 concurrent users. The tuning is everything.

BA

Badra Ali Diakite

Senior IT Consultant specialising in Microsoft 365, Intune, Zero Trust architecture and network infrastructure. 15+ years across 28+ countries in both military and enterprise environments.