Português Inglês

TR-069 With or Without XMPP? Performance Benchmark with 30,000 CPEs

TR-069 With or Without XMPP? Performance Benchmark with 30,000 CPEs

08 de outubro, 2026

TR-069 is widely utilized by service providers to remotely manage routers, ONTs, and other customer premises equipment. Through it, operators can modify configurations, upgrade firmware, execute diagnostics, and gather telemetry from CPEs. However, an operational challenge emerges when the ACS needs to initiate an action on a device located behind NAT or CGNAT.

As previously highlighted in the article “How XMPP Makes TR-069 More Responsive in NAT and CGNAT Networks”, XMPP can serve as a complementary mechanism to TR-069. The CPE maintains an outbound, persistent connection to an XMPP server, allowing the ACS to request that the device immediately trigger a new TR-069 session even when direct inbound access to the device is impossible.

The primary benefit, therefore, is not merely raw performance: it is operational reachability. XMPP establishes a communication path through which the ACS can reach devices that would otherwise remain unreachable for server-initiated requests. Nonetheless, maintaining tens of thousands of concurrent persistent connections incurs an infrastructure footprint. To quantify this overhead, we benchmarked two TR-069 environments running 30,000 simulated CPEs: one utilizing XMPP and the other operating without XMPP.

The Key Advantage of XMPP: Reaching the CPE

Any increase in resource overhead must be weighed against the fundamental capability delivered by XMPP. In networks employing NAT or CGNAT, the ACS cannot simply open an inbound connection to the CPE. The externally visible IP address frequently belongs to the provider’s NAT gateway and is shared among multiple subscribers.

XMPP overcomes this limitation by leveraging an outbound connection initiated by the CPE itself. Because this connection remains established, the ACS can dispatch a message requesting that the equipment immediately begin a new TR-069 session via XMPP. This mechanism is particularly critical for on-demand actions triggered by technical support or automated platform workflows, such as:

● Diagnostic execution;
● Parameter modification;
● Configuration updates;
● Remote reboots;
● Other ad-hoc, on-demand operations.

Without such a mechanism, the ACS is forced to wait for the next session initiated by the CPE itself (e.g., periodic Inform), which may take hours and preclude effective real-time diagnostics or prompt remediation. Thus, XMPP equips TR-069 with a crucial operational capability: rapidly reaching a CPE even when it resides behind NAT or CGNAT.

How the Benchmark Was Conducted

Two distinct scenarios were configured: TR-069 with XMPP enabled, and TR-069 operating without XMPP. GenieACS was used as the ACS and ejabberd as the XMPP server—both widely adopted solutions in production environments.

Both scenarios were evaluated over a one-hour run with 30,000 simulated CPEs, monitoring the following primary metrics:

● CPU utilization;
● Memory consumption;
● Network throughput;
● Total initialization time across all CPEs.

CPU and memory consumption were segregated between the TR-069 stack (GenieACS + MongoDB) and the XMPP server (ejabberd). Steady-state values were measured after all CPEs were completely initialized, reflecting the steady-state baseline required to sustain active connections.

Tests were conducted on a single host running Ubuntu 24.04, powered by an Intel Core i5-10400 processor, 32 GB of RAM, and NVMe storage. GenieACS, MongoDB, ejabberd, and the CPE simulator were all co-located on this host.

Key Results

Metric With XMPP Without XMPP Reduction Without XMPP
Average TR-069 CPU 1.04 cores 0.921 cores 11.9%
Average TR-069 Memory 5.3 GiB 4.581 GiB 13.6%
Average XMPP CPU 0.08 cores — —
Average XMPP Memory 2.187 GiB — —
Average Throughput (RX+TX) 59.4 Mbps 49.2 Mbps 17.2%
CPE Initialization Time 324 seconds 308 seconds 4.9%

Following CPE initialization, the scenario without XMPP demonstrated approximately 11.9% lower average CPU utilization, 13.6% lower memory consumption, and 17.2% lower network throughput.

Infrastructure Cost

On average, the XMPP-enabled scenario utilized 1.04 CPU cores compared to 0.921 cores without XMPP. Total memory footprint grew from 4.581 GiB to 7.487 GiB, with the XMPP server consuming 2.187 GiB—accounting for the vast majority of that increase. Concurrently, aggregate average network throughput rose from 49.2 Mbps to 59.4 Mbps.

A notable share of this overhead is directly tied to the XMPP server. Following CPE startup, ejabberd consumed an average of approximately 0.08 CPU cores and 2.187 GiB of RAM to maintain the persistent connections with the CPEs, translating to roughly 76 KiB of memory per active XMPP/CPE connection.

These figures illustrate the overhead of sustaining persistent channels with tens of thousands of CPEs simultaneously. While the per-device resource cost is minimal, across larger subscriber bases it directly influences the sizing of backend CPU, memory, and network capacity.

Initialization of 30,000 CPEs

During the ramp-up phase when devices were onboarding into the environment, behavior differed:

Metric With XMPP Without XMPP Reduction Without XMPP
Average TR-069 CPU 4.991 cores 2.885 cores 42.2%
Peak TR-069 Memory 5.111 GiB 4.896 GiB 4.2%
Average XMPP CPU 1.795 cores — —
Peak XMPP Memory 2.131 GiB — —
Average Throughput (RX+TX) 201.7 Mbps 153.8 Mbps 23.7%
CPE Initialization Time 324 seconds 308 seconds 4.9%

Additional resource demands were also evident during simultaneous device onboarding. All 30,000 CPEs concluded initialization in approximately:

● 324 seconds with XMPP;
● 308 seconds without XMPP.

Despite the substantial increase in CPU demand during mass concurrent onboarding, the impact on total initialization time was relatively small: 324 seconds with XMPP versus 308 seconds without XMPP, representing an approximate 5% difference. This metric is critical in scenarios where large volumes of CPEs attempt reconnection simultaneously, such as after regional power outages or network restoration events.

What the Results Indicate

In our tests, XMPP introduced a measurable infrastructure overhead—predominantly in memory consumption—driven by maintaining persistent stateful connections. Without XMPP, the environment operated with approximately 11.9% less CPU, 13.6% less memory, and 17.2% less network throughput post-stabilization. Conversely, with XMPP, the ACS gained the capability to proactively trigger CPEs behind NAT and CGNAT via a persistent channel, enabling immediate execution of TR-069 operations without waiting for a scheduled CWMP session.

Consequently, the architectural decision extends beyond selecting the lowest-overhead option. XMPP provides functionality that can be indispensable in networks where the ACS must perform on-demand operations on non-directly routable devices. The cost of this reachability is reflected in backend dimensioning. In deployments managing tens or hundreds of thousands of CPEs, benchmarking this footprint enables operators to accurately scale infrastructure to achieve their required responsiveness and operational SLAs.

Conclusion

In benchmarks running 30,000 simulated CPEs, the environment without XMPP exhibited slightly lower CPU, memory, and bandwidth utilization. The environment with XMPP demanded additional resources, but successfully maintained a persistent management channel with the CPEs. Ultimately, the functional reachability provided by the protocol outweighs the incremental performance overhead.

Across NAT and CGNAT deployments, XMPP equips the ACS with a reliable mechanism to immediately trigger a new TR-069 session, even when no direct inbound route to the device exists. This represents a classic engineering trade-off between infrastructure cost and operational responsiveness. At scale, understanding this balance is paramount to properly sizing and architecting a TR-069 management platform.

If you prefer, reach out to one of our specialists by clicking here to receive expert guidance tailored to your project.

Source: Venko Networks

Imagem: Canva/OpenAI