Skip to content
Calcrivo

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

hosts
sessions

Browsers open 60–200 concurrent flows; IoT devices far fewer.

addresses
ports

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

  1. 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 ×

  2. NAT Session

    translation slots = public IPs × 64512 ports; utilisation = (hosts × sessions per host × peak factor) ÷ translation slots.

  3. Port Pool Utilisation

    = 87.2

  4. Peak Translations Required

    = 900,000

  5. Translation Slots Available

    = 1,032,192

  6. Public IPs Required

    = 14

  7. Subscribers per Public IP

    = 358

  8. 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.

You might also need