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.
About Carrier-Grade NAT Capacity Calculator
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
Worked example
With the default values below, Carrier-Grade NAT Capacity Calculator returns Public Addresses Required of 635. Change any input above and every figure here is recalculated in your browser.
Inputs used
- Subscribers behind CGNATaccepts 1–50,000,000 subscribers
- 40,000 subscribers
- Ports allocated per subscriberaccepts 64–32,768 ports
- 1,024 ports
- Ports reserved per public addressaccepts 0–10,000 ports
- 1,024 ports
- Public IPv4 addresses in the poolaccepts 1–65,536 addresses
- 40 addresses
- Concurrent sessions per subscriberaccepts 1–20,000 sessions
- 120 sessions
Results
- 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
- 1Values used
- 2Carrier-Grade NAT Capacity
- 3Public Addresses Required= 635
- 4Subscribers per Public Address= 63
- 5Utilisation of the Configured Pool= 1,587.5
- 6Translation Table Entries= 4,800,000
- 7Pool Status= Pool is short by 595 addresses
Assumptions and limits
- The result is derived only from the 5 inputs listed above. Anything not among them is not part of the calculation.
- In particular, this calculator does not take inflation, tax, fees or charges or compounding frequency into account.
- Figures are rounded for display to 1 decimal place, so totals built from several rounded parts can differ slightly from the unrounded arithmetic.
How these calculators are built and tested is described on the Methodology page. If a figure looks wrong, please report it.
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.
