Skip to content
Calcrivo

Carrier-Grade NAT Capacity Calculator

Work out subscribers per public IPv4 address, total port-block demand and how many public addresses a CGNAT pool needs.

Inputs

subscribers
ports
ports

Well-known and system ports held back from allocation.

addresses
sessions

Public Addresses Required

635

Subscribers per Public Address

63

Utilisation of the Configured Pool

1,587.5%

Translation Table Entries

4,800,000

Pool Status

Pool is short by 595 addresses

Step by step

  1. Values used

    Subscribers behind CGNAT = 40,000 subscribers; Ports allocated per subscriber = 1,024 ports; Ports reserved per public address = 1,024 ports; Public IPv4 addresses in the pool = 40 addresses; Concurrent sessions per subscriber = 120 sessions

  2. Carrier-Grade NAT Capacity

    subscribers per address = (65536 − reserved ports) ÷ ports per subscriber; addresses = ceil(subscribers ÷ subscribers per address).

  3. Public Addresses Required

    = 635

  4. Subscribers per Public Address

    = 63

  5. Utilisation of the Configured Pool

    = 1,587.5

  6. Translation Table Entries

    = 4,800,000

  7. Pool Status

    = Pool is short by 595 addresses

How it works

A public IPv4 address has 65536 TCP or UDP ports, and deterministic CGNAT hands each subscriber a fixed block of them. Dividing the usable ports by the block size gives the sharing ratio, which in turn sets the pool size; the translation table entry count is a separate memory limit on the NAT device. Port-block sizing is a direct trade-off between IPv4 address cost and application breakage — too small a block and browsers with many parallel connections start failing while the address pool looks healthy.

Formula

Carrier-Grade NAT Capacity

subscribers per address = (65536 − reserved ports) ÷ ports per subscriber; addresses = ceil(subscribers ÷ subscribers per address).

ports per subscriber
Size of the deterministic port block each subscriber gets
reserved ports
Low and system ports excluded from allocation

Frequently Asked Questions

How is Carrier-Grade NAT Capacity calculated?

subscribers per address = (65536 − reserved ports) ÷ ports per subscriber; addresses = ceil(subscribers ÷ subscribers per address). A public IPv4 address has 65536 TCP or UDP ports, and deterministic CGNAT hands each subscriber a fixed block of them. Dividing the usable ports by the block size gives the sharing ratio, which in turn sets the pool size; the translation table entry count is a separate memory limit on the NAT device.

Why does Carrier-Grade NAT Capacity matter?

Port-block sizing is a direct trade-off between IPv4 address cost and application breakage — too small a block and browsers with many parallel connections start failing while the address pool looks healthy.

What values do I need to enter?

This calculator takes 5 inputs: Subscribers behind CGNAT, Ports allocated per subscriber, Ports reserved per public address, Public IPv4 addresses in the pool, Concurrent sessions per subscriber. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.

You might also need