Work out subscribers per public IPv4 address, total port-block demand and how many public addresses a CGNAT pool needs.
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.
Carrier-Grade NAT Capacity
subscribers per address = (65536 − reserved ports) ÷ ports per subscriber; addresses = ceil(subscribers ÷ subscribers per address).
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.
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.
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.