NAT Session Calculator
Work out NAT and CGNAT port utilisation, the public IP pool size you need, and how close you are to port exhaustion.
Inputs
Browsers open 60–200 concurrent flows; IoT devices far fewer.
64512 = the ephemeral range 1024–65535 available per address.
Port Pool Utilisation
87.2%
Peak Translations Required
900,000
Translation Slots Available
1,032,192
Public IPs Required
14
Subscribers per Public IP
358
Exhaustion Verdict
Within 20% of exhaustion — expand the pool
Step by step
Values used
Concurrent hosts or subscribers = 5,000 hosts; Average concurrent sessions per host = 120 sessions; Public IPv4 addresses in the NAT pool = 16 addresses; Usable ports per public IP = 64,512 ports; Peak-to-average factor = 1.50 ×
NAT Session
translation slots = public IPs × 64512 ports; utilisation = (hosts × sessions per host × peak factor) ÷ translation slots.
Port Pool Utilisation
= 87.2
Peak Translations Required
= 900,000
Translation Slots Available
= 1,032,192
Public IPs Required
= 14
Subscribers per Public IP
= 358
Exhaustion Verdict
= Within 20% of exhaustion — expand the pool
How it works
Each public IPv4 address offers roughly 64512 usable TCP or UDP ports, and every active translation consumes one. Multiplying subscribers by their concurrent session count and a busy-hour peak factor gives the translations you must hold simultaneously; dividing by the per-address port count gives the pool size. Port exhaustion presents as random connection failures that no packet capture on the client explains, and it is the single most common CGNAT outage cause during traffic growth or a NAT pool misconfiguration.
Formula
NAT Session
translation slots = public IPs × 64512 ports; utilisation = (hosts × sessions per host × peak factor) ÷ translation slots.
- 64512
- Ephemeral ports 1024–65535 usable for translation on one public IP
- peak factor
- Multiplier from average to busy-hour concurrency
Frequently Asked Questions
How is NAT Session calculated?
translation slots = public IPs × 64512 ports; utilisation = (hosts × sessions per host × peak factor) ÷ translation slots. Each public IPv4 address offers roughly 64512 usable TCP or UDP ports, and every active translation consumes one. Multiplying subscribers by their concurrent session count and a busy-hour peak factor gives the translations you must hold simultaneously; dividing by the per-address port count gives the pool size.
Why does NAT Session matter?
Port exhaustion presents as random connection failures that no packet capture on the client explains, and it is the single most common CGNAT outage cause during traffic growth or a NAT pool misconfiguration.
What values do I need to enter?
This calculator takes 5 inputs: Concurrent hosts or subscribers, Average concurrent sessions per host, Public IPv4 addresses in the NAT pool, Usable ports per public IP, Peak-to-average factor. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
How do deterministic port blocks change the maths?
Deterministic NAT or port-block allocation hands each subscriber a fixed block — commonly 512 or 1024 ports — so capacity becomes 64512 ÷ block size subscribers per address regardless of their real usage. You trade statistical efficiency for logging you can actually correlate, which is usually a regulatory requirement.