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:
| Parameter | Typical VSAT (GEO) | Impact |
|---|---|---|
| Latency (RTT) | 600–900 ms | Devastating for interactive protocols (RDP, VoIP, TCP without tuning) |
| Bandwidth (shared) | 256 kbps – 4 Mbps down / 128–512 kbps up | Must be rationed across all users |
| Contention ratio | 5:1 to 20:1 | Real throughput varies significantly by time of day |
| Reliability | 95–99% | Rain fade can drop link entirely for minutes |
| Fair access policy (FAP) | Depends on provider | Excess 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.
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:
- Windows Update (often consuming 100% of uplink for hours)
- Microsoft Defender signature updates
- Cloud backup sync (OneDrive, Dropbox, personal services)
- Video streaming (YouTube, social media) during lunch breaks
- 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:
# 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.
| Class | Priority | Bandwidth Guarantee | Traffic Types |
|---|---|---|---|
| Class 1 — Critical Voice | Strict Priority | 15% guaranteed | VoIP (RTP/SIP), Satphone signalling |
| Class 2 — Operations | High | 30% guaranteed | ERP, SITREP tools, email, critical web |
| Class 3 — Productivity | Medium | 30% best-effort | Teams/Zoom (audio only), Office 365 |
| Class 4 — General | Low | 15% best-effort | Web browsing, file downloads |
| Class 5 — Background | Scavenger | 10% max, throttled | Windows Update, cloud backup, streaming |
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:
# 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
- Windows Update:
*.update.microsoft.com,*.windowsupdate.com,*.delivery.mp.microsoft.com - Defender updates:
*.wdcp.microsoft.com,*.wd.microsoft.com - Cloud backup:
*.onedrive.com(if not a priority service in your context) - Streaming:
*.youtube.com,*.netflix.com,*.twitch.tv
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:
# /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:
- Split tunneling for VPN: If users are VPN'd to a hub, ensure M365 traffic (IP ranges published by Microsoft) bypasses the VPN tunnel and goes directly to Microsoft over the satellite link. Double-tunnelling through VPN + satellite multiplies the latency.
- Teams: enforce audio-only mode by default for VSAT sites. Configure a Teams meeting policy with video disabled. 1 video stream consumes more bandwidth than 20 audio streams.
- Exchange Online: reduce sync frequency. Configure Outlook to sync every 30 minutes instead of every 5 minutes to reduce polling traffic.
- SharePoint: pre-stage large files during off-peak hours. Use Robocopy or AzCopy to sync large SharePoint libraries overnight when contention is low.
- Outlook Cached Exchange Mode: Ensure all Outlook clients use Cached Mode — this prevents Outlook from sending real-time MAPI requests over the high-latency link for every UI action.
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:
| Tool | Purpose | Bandwidth Cost |
|---|---|---|
| SNMP polling (LibreNMS/Zabbix) | Interface utilisation, link up/down | Very low (<1 kbps) |
| SmokePing | Latency trends, packet loss over time | Minimal (ICMP pings) |
| Squid access logs (ELK or Grafana) | Top consuming URLs/users | Zero (local analysis) |
| NetFlow (ntopng) | Per-flow traffic breakdown | NetFlow export ~1% of traffic volume |
| Uptime alerts (SMS/satellite phone) | Link down notification | Near zero (SMS fallback) |