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
Well-known and system ports held back from allocation.
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
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
Carrier-Grade NAT Capacity
subscribers per address = (65536 − reserved ports) ÷ ports per subscriber; addresses = ceil(subscribers ÷ subscribers per address).
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
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.