Global Network Performance Testing
Measure latency, reachability, and routing from 18 cloud regions worldwide
Users experience your application differently depending on their geography. EdgeDNS provides real ICMP ping and traceroute from 18 globally distributed cloud regions, giving you ground-truth performance data to optimize user experience worldwide.
The Challenge
Synthetic monitoring from a single location masks regional performance problems. CDN misrouting, peering issues, and geographic latency spikes are invisible from your office. Traditional tools lack global reach, and cloud provider monitoring only shows performance within their own network — not the real user path.
The Solution
Use EdgeDNS global ping and traceroute endpoints to measure real ICMP latency and routing from 18 cloud regions across North America, South America, Europe, Asia-Pacific, Oceania, Africa, and the Middle East. Combine with DNS propagation checks and response time measurements for complete performance visibility.
Endpoints Used
Combine these EdgeDNS endpoints to build this solution.
/v1/network/pingTry in PlaygroundGlobal Ping: Real ICMP ping from 18 cloud regions with min/avg/max RTT, p50/p95/p99 percentiles, RFC 3550 interarrival jitter, and per-zone packet-loss percentages — the inputs SLA targets are written against
/v1/network/tracerouteTry in PlaygroundGlobal Traceroute: ICMP traceroute with hop-by-hop ASN enrichment (Team Cymru), a deduplicated `as_path` per zone, per-hop p50/p95/jitter, and a private-hop flag for hops in RFC 1918 / cloud-internal space
/v1/domain/response-timeTry in PlaygroundResponse Time: Measure HTTP/HTTPS response time including TLS handshake
/v1/dns/propagationTry in PlaygroundDNS Propagation: Check DNS consistency and resolution time across global resolvers
/v1/domain/cdnTry in PlaygroundCDN Detection: Identify CDN provider and verify edge distribution
Results You Can Achieve
Real latency from 18 regions across 6 continents
Measured from real worker locations — not simulated or extrapolated data — with p95/p99 percentiles and RFC 3550 interarrival jitter alongside the usual min/avg/max so SLA reporting and tail-latency analysis are first-class outputs, not post-processing.
Routing-path visibility with per-hop ASN tagging
Every hop in every traceroute is enriched with its autonomous-system number, name, and country (via Team Cymru), and each zone exposes a deduplicated `as_path` mirroring `traceroute -A`. Asymmetric routing and bad peering choices become inspectable without a second tool.
CDN-performance verification per market
Region-by-region timing confirms whether your CDN actually serves users in target markets at the latency you contracted. The per-hop AS path makes "is this really going through Cloudflare end-to-end?" answerable from one response.
Code Example
Global network performance test
async function globalPerformanceTest(target) {
const headers = { 'Authorization': 'Bearer YOUR_API_KEY' };
const [ping, traceroute, responseTime, cdn] = await Promise.all([
fetch(`https://api.edgedns.dev/v1/network/ping?host=${target}`, { headers }),
fetch(`https://api.edgedns.dev/v1/network/traceroute?host=${target}`, { headers }),
fetch(`https://api.edgedns.dev/v1/domain/response-time?domain=${target}`, { headers }),
fetch(`https://api.edgedns.dev/v1/domain/cdn?domain=${target}`, { headers }),
].map(p => p.then(r => r.json())));
// Analyze regional latency — use p95 as the primary SLA metric, not average.
// The average smooths over the slow 5% of packets; p95 is what your SLA is written against.
const regions = ping.data.results;
const perRegion = regions.map(r => ({
region: r.probe_zone,
avgMs: r.latency_ms,
p95Ms: r.p95_ms,
p99Ms: r.p99_ms,
jitterMs: r.interarrival_jitter_ms,
packetLossPct: r.icmp_stats?.packet_loss_pct ?? 0
}));
// Flag any zone where p95 is more than 2x the global p95, OR loss > 5%, OR jitter > 30ms
const globalP95 = ping.data.p95_ms ?? 0;
const outliers = perRegion.filter(r =>
(r.p95Ms && r.p95Ms > globalP95 * 2) || r.packetLossPct > 5 || (r.jitterMs ?? 0) > 30
);
// Build a per-zone summary of the AS path — useful for spotting transit-provider differences
// that explain a regional latency cliff (e.g. one region routes via Cogent, another via NTT).
const asPaths = traceroute.data.results.map(r => ({
region: r.probe_zone,
asPath: r.as_path,
reachedDestination: r.reached_destination
}));
return {
target,
cdn: cdn.data.provider,
globalP95Latency: globalP95 + 'ms',
globalP99Latency: ping.data.p99_ms + 'ms',
httpResponseTime: responseTime.data.total_ms + 'ms',
regionCount: regions.length,
bestRegion: perRegion.sort((a, b) => (a.p95Ms ?? Infinity) - (b.p95Ms ?? Infinity))[0],
worstRegion: perRegion.sort((a, b) => (b.p95Ms ?? 0) - (a.p95Ms ?? 0))[0],
outliers,
asPaths,
hasIssues: outliers.length > 0
};
}Learn More
Explore industry standards and best practices related to this use case.
RIPE Atlas - Global Internet Measurements
RIPE NCC's global network measurement platform with 12,000+ probes in 180+ countries
CAIDA - Center for Applied Internet Data Analysis
Research center providing tools and datasets for internet topology and performance analysis
Google SRE: Monitoring Distributed Systems
Google's SRE practices for monitoring latency, traffic, errors, and saturation in distributed systems
Ready to build Global Network Performance Testing?
Get started with 200 free API requests per month. No credit card required.