Home / Notes / Slow Internet / NAT Troubleshooting
NOTES · NAT / MULTI-WAN THROUGHPUT TROUBLESHOOTING

Slow Internet Behind NAT: Multi-WAN and High-Throughput Bottleneck Diagnosis

"Slow internet" behind a NAT router is at least three different problems wearing the same complaint: an egress link that's fine alone but slows down the moment several links carry traffic together, a whole LAN's browsing dragging because of what the CPU is quietly dropping, or one direction of a speed test falling short of a number the same cable proved it could hit. This is the order that tells them apart, the display and configuration commands for each, and the causes that show up again and again.

By the AtlasCommTech engineering team — 13 years of carrier & enterprise network deployments · Updated July 2026

Why "It's the NAT" Is Usually the Wrong First Guess

NAT is what's running when the symptom shows up, which is not the same thing as NAT being what's causing it.

A NAT router sits at the point where every one of these symptoms gets reported, so it's the first thing blamed — and it's rarely the actual fault. The real question is which of three shapes the slowdown takes: it only appears once more than one WAN link is carrying traffic at the same time; it's there all the time, for everyone, on every link; or it only shows up in one direction of a speed test that a direct connection proved could hit full rate. Each shape points at a completely different part of the box — link/board forwarding, CPU-level packet policing, or interface rate matching — and none of them get fixed by staring at the NAT configuration itself.

What follows is that three-way split, the checks and exact commands for each, five root causes that account for most of these tickets in the field, and FAQ answers pulled from real cases.

Three Shapes, Not One Slow Internet

Sort the complaint onto this tree before touching a single NAT rule.

Whether the slowdown is constant or conditional, and which direction it hits, tells you which of the checks below actually applies.

Slow Internet Behind NAT Slow For Everyone, All The Time Only Under Specific Load or Direction CPU-defend rate-limit dropping legitimate DNS repliesdisplay logbuffer shows CPCAR_DROP_MPU dns-reply NAT session count / CPU load misdiagnosed as the causerule out with display nat session number, display cpu-usage Aggregate speed drops only with multiple WAN links activehigh-end LAN card centralized-forwarding bottleneck One direction underperforms a measured baseline10GE-to-GE interface rate mismatch, needs QoS shaping

Diagram labels are kept in English for engineering clarity.

A link that's only slow under combined load, a whole office that's slow all the time, and one direction of a speed test falling short are three different faults with three different fixes. Sort the ticket here first, then work the matching stage below.

Working Through Each Stage

Three stages, three different bottlenecks — link and board forwarding, CPU-level packet policing, and interface-rate mismatch.

Stage 1 — Isolate Which Egress Link Is Actually at Fault

Any single link tested alone is fine; only combined load is slow. Work through these in order rather than changing several things at once.

  1. Shut down each egress link in turn to test whether one specific link's quality is the problem. If the slowdown persists no matter which link is down, link quality isn't it.
  2. Enable ip load-balance hash src-ip so traffic actually spreads across the egress links by source IP instead of concentrating unevenly.
  3. Test tcp adjust-mss on the egress interfaces to rule out fragmentation — expect only a small improvement if this isn't the main cause.
  4. Test undo stp enable. A meaningful speed improvement here narrows the problem toward the forwarding path itself, but if it still falls short of the required bandwidth, keep going.
  5. If the slow link's interface sits on a high-end LAN card (8FE1GE or 24GE), disable that card's centralized routing-forwarding mode. In the field case behind this section, this was the step that actually fixed it.
#
interface Vlanif100
 ip address 10.1.1.1 255.255.255.0
 dhcp select interface
 dhcp server dns-list 10.1.1.1
#
interface Vlanif10
 ip address 10.2.1.1 255.255.255.252
 nat outbound 2000
#
interface GigabitEthernet1/0/0
 ip address 10.3.1.1 255.255.255.252
 nat outbound 2000
#
interface GigabitEthernet1/0/1
 ip address 10.4.1.1 255.255.255.252
 nat outbound 2000
#
interface GigabitEthernet1/0/2
 ip address 10.5.1.1 255.255.255.252
 nat outbound 2000
#
ip route-static 0.0.0.0 0.0.0.0 10.2.1.2
ip route-static 0.0.0.0 0.0.0.0 10.3.1.2
ip route-static 0.0.0.0 0.0.0.0 10.4.1.2
ip route-static 0.0.0.0 0.0.0.0 10.5.1.2
// four fixed-IP egress links, all NAT-translated, all in active use at once

[Huawei] ip load-balance hash src-ip
// load-balance by source IP across the four egress links

[Huawei-GigabitEthernet1/0/0] tcp adjust-mss 1200
// tested for fragmentation -- improved things only slightly here

[Huawei] undo stp enable
// improved speed but still short of the required bandwidth on its own

[Huawei] system-view
[Huawei] set workmode lan-card l3centralize
// disables centralized routing-forwarding on the 8FE1GE/24GE high-end LAN card
// -- this is what actually resolved the slowdown in this case

Stage 2 — A CPU-Defend Policy Dropping Legitimate DNS Replies

Web pages loading slowly for everyone downstream of a NAT interface, with no obvious link or bandwidth problem, is a CPU-policing symptom before it's anything else.

  1. Check display logbuffer for CPCAR_DROP_MPU entries. A high Drop-Count against packet-type dns-reply means legitimate DNS reply packets are being discarded before they ever reach the hosts that asked for them.
  2. Test tcp adjust-mss on the upstream interface to rule out fragmentation — expect little change if this isn't the actual cause.
  3. Check display cpu-usage. A CPU sitting in its normal range rules out general overload as the explanation.
  4. Check display interface for the upstream interface's bandwidth utilization and duplex mode — full-duplex and normal utilization rule out a physical-layer bottleneck.
  5. Check display nat session number to confirm NAT session resources aren't actually at their limit before chasing NAT as the cause.
  6. Raise the rate limit specifically for dns-reply packets in the CPU-defend policy — the default policy applied to all boards rate-limits it at only 128 pps, which real DNS reply volume can exceed easily.
<Huawei> display logbuffer
2016-2-6 05:06:16+00:00 Huawei %%01DEFD/4/CPCAR_DROP_MPU(l)[1751]:Some packets are dropped by
cpcar on the MPU. (Packet-type=dns-reply, Drop-Count=13741)
2016-2-6 05:16:16+00:00 Huawei %%01DEFD/4/CPCAR_DROP_MPU(l)[1752]:Some packets are dropped by
cpcar on the MPU. (Packet-type=dns-reply, Drop-Count=10879)
2016-2-6 05:26:16+00:00 Huawei %%01DEFD/4/CPCAR_DROP_MPU(l)[1753]:Some packets are dropped by
cpcar on the MPU. (Packet-type=dns-reply, Drop-Count=32302)
// tens of thousands of legitimate DNS replies being dropped by CPU policing every ten minutes

<Huawei> display cpu-usage
// CPU usage was in the normal range -- not a general overload problem

<Huawei> display interface GigabitEthernet 0/0/1
// bandwidth utilization normal, Duplex: FULL -- not a physical-layer bottleneck

<Huawei> display nat session number
// NAT session resources were not at their limit

<Huawei> system-view
[Huawei] cpu-defend policy dns
[Huawei-cpu-defend-policy-dns] packet-type dns-reply rate-limit 512
[Huawei-cpu-defend-policy-dns] auto-defend enable
[Huawei-cpu-defend-policy-dns] quit
[Huawei] cpu-defend-policy dns
[Huawei] cpu-defend-policy dns global
// raises the dns-reply rate limit from the default 128 to 512 -- resolved the slow page loads

Stage 3 — Interface Rate Mismatch on a Unidirectional Speed Test

Upstream speed tests normally, downstream doesn't — and removing the router from the path proves the downlink itself is capable of full interface rate.

  1. Confirm the pattern: downstream traffic flows from a high-speed interface (10GE) to a lower-speed interface (GE), and that's exactly where the drops appear.
  2. Where possible, match the interface type and rate on both sides — same GE-to-GE or XGE-to-XGE, or adjust the XGE interface's configured rate down to match.
  3. Where the two sides can't be matched, apply QoS shaping so the higher-speed side doesn't send faster than the lower-speed side can actually forward.
  4. If the downstream peer is a slower device altogether — an optical modem, a base station — reduce the outbound queue's packet buffer size as well, or the peer still can't keep up even after shaping.
<Huawei> system-view
[Huawei] qos queue-profile limit
[Huawei-qos-queue-profile-limit] queue 0 to 4 length bytes 1000000
[Huawei] interface GigabitEthernet0/0/1
[Huawei-GigabitEthernet0/0/1] qos queue-profile limit
[Huawei-GigabitEthernet0/0/1] qos gts cir 1000000 cbs 125000
// shapes the 10GE-side traffic down to 1000M before it reaches the GE downlink

#
qos queue-profile limit
 queue 0 to 7 length packets 512 // caps the max packets a queue can buffer
#
interface GigabitEthernet0/0/1
 qos queue-profile limit
 qos gts cir 1000000 cbs 125000 // shapes to 1000M for a slower downstream peer device

5 Root Causes That Show Up Again and Again

Once the stage above has told you where to look, these five account for most of what's actually wrong.

1. High-End LAN Card Forwarding Bottlenecks Under Multi-Egress Load

SYMPTOMAny single WAN link tested alone gives normal browsing and download speed. The slowdown only appears once several fixed-IP egress links are all carrying real traffic at the same time.

CAUSESome high-end LAN cards (8FE1GE, 24GE) run in a centralized routing-forwarding mode by default. Under the combined load of several active egress links at once, that centralized path becomes the bottleneck — even though link quality, load balancing, MSS and STP all check out individually.

FIXDisable centralized routing-forwarding on the high-end LAN card so it stops being the shared choke point for multi-egress traffic.

[Huawei] set workmode lan-card l3centralize

2. Default CPU-Defend Policy Rate-Limits DNS Replies to 128 pps

SYMPTOMEvery host behind the router experiences slow page loads, but bandwidth utilization and CPU usage both look completely normal.

CAUSEThe default CPU-defend policy applied to all boards rate-limits DNS reply packets to only 128 packets per second. A busy network's legitimate DNS reply volume can exceed that easily, and everything above the limit gets silently dropped before hosts ever see the response — which looks exactly like a generic slow-internet complaint.

FIXCreate a dedicated CPU-defend policy and raise the dns-reply rate limit well above real traffic volume, then apply it globally.

[Huawei] cpu-defend policy dns
[Huawei-cpu-defend-policy-dns] packet-type dns-reply rate-limit 512
[Huawei] cpu-defend-policy dns global

3. High-Speed-to-Low-Speed Interface Mismatch Drops Downstream Throughput

SYMPTOMUpstream speed test is fine. Downstream speed test falls well short of interface rate, and removing the router from the path proves the downlink alone can hit full gigabit speed.

CAUSEDownstream traffic flowing from a high-speed interface (10GE) toward a lower-speed interface (GE) has nowhere to go once it outpaces what the GE side can actually forward — the mismatch itself produces the drops, independent of anything upstream.

FIXMatch interface types and rates where possible; where they can't be matched, apply QoS traffic shaping so the high-speed side never sends faster than the low-speed side can absorb.

[Huawei-GigabitEthernet0/0/1] qos gts cir 1000000 cbs 125000

4. The Obvious Suspect Isn't the Actual One — Elimination Order Matters

SYMPTOMA multi-egress slowdown gets blamed on link quality, load balancing, fragmentation, or STP in turn — each test shows a partial improvement or none at all, and the real fix is still further down the list.

CAUSESeveral plausible causes can each contribute a small amount without being the actual bottleneck. Disabling STP, for instance, genuinely improves throughput in some cases, but "better" is not the same as "meets the required bandwidth" — stopping at the first improvement instead of finishing the elimination order wastes time chasing partial fixes.

FIXWork the elimination order through to the end — link quality, load balancing, TCP MSS, STP, then high-end LAN card forwarding mode — and don't stop at the first test that shows any improvement at all.

5. A Slower Downstream Peer Device Needs Its Queue Length Turned Down, Not Just Shaped

SYMPTOMQoS shaping is already applied on the outbound interface, but a downstream device — an optical modem, a base station — still can't keep up, and throughput stays below what shaping alone should allow.

CAUSEShaping the rate isn't the same as sizing the buffer. Sending at a shaped rate that's still faster than a slow peer device can process causes that device's own receive buffer to overflow, which produces drops that look like a shaping problem but are actually a queue-depth problem.

FIXReduce the outbound queue's maximum packet count alongside the shaping configuration, so the router doesn't keep handing the slow peer more than it can absorb.

qos queue-profile limit
 queue 0 to 7 length packets 512

Related solution designs

Questions That Come Up Constantly

Pulled straight from the field — the ones worth having an answer ready for.

My speed test is fine on a single WAN link but drops when several are active together — where do I start?

Work the elimination order in sequence rather than guessing: shut down links one at a time to rule out a single bad link, enable ip load-balance hash src-ip, test tcp adjust-mss for fragmentation, test undo stp enable, and if the slow interface sits on a high-end LAN card (8FE1GE, 24GE), disable its centralized routing-forwarding mode last. That last step is what actually resolves it more often than the others.

The whole office says the internet is slow, but bandwidth and CPU usage both look normal — what am I missing?

Check display logbuffer for CPCAR_DROP_MPU entries against packet-type dns-reply. The default CPU-defend policy rate-limits DNS replies to just 128 pps across every board, and a busy network's real DNS reply volume clears that easily — the drops never show up in bandwidth or CPU graphs because they're happening at the CPU-policing layer, not the forwarding layer.

Why does a 10GE-to-GE downlink lose throughput even though both interfaces show no errors?

No errors doesn't mean no bottleneck — a 10GE interface can simply send faster than a GE interface can forward, and the excess has nowhere to go but dropped. Match the interface types and rates where you can, and where you can't, apply QoS shaping (qos gts) so the high-speed side throttles itself to what the low-speed side can actually absorb.

Is disabling STP safe just to improve throughput?

Only disable it if the topology genuinely has no loop to protect against — check that first, independent of the speed problem. In the field case behind this note, disabling STP measurably improved throughput but still wasn't the actual fix; the real bottleneck was the high-end LAN card's forwarding mode. Treat an STP improvement as a clue to keep going, not as the answer.

How do I tell a CPU-defend drop from a genuine internet-path packet loss issue?

display logbuffer is the fastest way to tell them apart — a CPCAR_DROP_MPU entry naming a specific packet-type (dns-reply, in the common case) with a real Drop-Count is the device telling you outright that it discarded its own traffic on purpose. Genuine upstream path loss won't show up there at all; it shows up as ordinary ping loss or jitter measured beyond the router, not inside its own logs.

Honest Limits of This Note

Honest Limits of This Note

This note is built around Huawei AR-series routers and the field cases behind display logbuffer, display nat session number, display cpu-usage, cpu-defend policy and qos gts — including the high-end LAN card's centralized-forwarding mode, which is specific to that hardware family. If your router is a different vendor, the exact commands change, but the three-way diagnostic split — multi-egress link contention, CPU-level packet policing, and interface-rate mismatch — carries over directly. It doesn't cover SD-WAN dynamic path selection or quality-based steering, or throughput overhead specific to encrypted tunnels running over the same egress links.

Internet slow behind your router and not sure why?

Tell us whether it's every link or just when several are active together, and what display logbuffer / display nat session number show, and we'll help you find the actual bottleneck.

WhatsApp an engineer →

Related Reading