Le trafic Southbound entre Apigee et un backend cible avec une adresse IP publique utilise Cloud NAT pour traduire l'adresse IP privée de votre instance Apigee en adresse IP publique. Si votre backend cible nécessite d'établir la liste d'adresses IP, vous pouvez réserver et activer des adresses IP NAT statiques pour le trafic de sortie.
Cet article explique comment calculer le nombre minimal d'adresses IP NAT statiques requises pour prendre en charge le trafic attendu.
Avant de commencer
Si vous choisissez d'utiliser l'allocation d'adresses IP NAT statiques pour accepter la liste d'autorisation, vous devez calculer le nombre minimal d'adresses IP statiques requises pour accepter le trafic attendu. Pour ce calcul, vous avez besoin des informations suivantes :
Durée maximale par transaction : durée maximale, en secondes, entre l'exécution d'une transaction, depuis le début de la requête jusqu'à la fin de la réponse.
Nombre maximal de transactions par seconde (TPS) : nombre maximal de transactions par seconde que l'instance Apigee peut éventuellement accepter.
TPS maximal pour un seul backend unique : nombre maximal de transactions par seconde qu'un seul backend peut accepter.
Nombre maximal d'environnements : nombre maximal d'environnements sur cette instance Apigee.
Calculer le nombre d'adresses IP statiques requises
Vous pouvez utiliser les formules suivantes pour calculer le nombre minimal d'adresses IP NAT qui doivent être attribuées de manière statique :
Calculez le nombre maximal de ports sources NAT requis par backend en tant que $ S $.
$$ S = \lceil (150 + T) \times B \rceil $$
Où :
$ T $ correspond à la durée maximale par transaction, en secondes.
$ B $ correspond au nombre maximal de TPS par backend unique.
$ \lceil \rceil $ est le plafond, soit la valeur arrondie au nombre entier supérieur.
Calculez le nombre minimal de ports utilisés par l'instance Apigee en tant que $ N $.
$$ N = max(4096 \times E, \lceil {512 \over 75} \times R \rceil) + 6144 $$
Où :
$ E $ correspond au nombre d'environnements Apigee.
$ R $ correspond au nombre maximal de TPS pour l'instance Apigee.
$ \lceil \rceil $ est le plafond, soit la valeur arrondie au nombre entier supérieur.
La fonction $ \mathit{max}() $ utilise le maximum des deux valeurs.
Prenez le nombre maximal de ports requis comme $ P $.
$$ P = max(S, N) $$
Où :
$ S $ correspond au nombre maximal de ports sources NAT requis, tel que calculé à l'étape 1.
$ N $ correspond au nombre minimal de ports utilisés par l'instance Apigee, tel que calculé à l'étape 2.
La fonction $ \mathit{max}() $ utilise le maximum des deux valeurs.
Calculez le nombre minimal d'adresses IP NAT requises en tant que $ I $.
$$ I = \lceil P / 64512 \rceil $$
Où :
$ P $ correspond au nombre maximal de ports requis, calculé à l'étape 3.
$ \lceil \rceil $ est le plafond, soit la valeur arrondie au nombre entier supérieur.
Examples
Exemple 1
Dans cet exemple, nous attendons un maximum de 10 000 TPS dans un environnement. Les transactions correspondent à toutes les requêtes HTTP GET et la durée de la transaction au 99e centile est de 50 millisecondes (ms). Ces requêtes sont diffusées de manière inégale par un pool de serveurs derrière trois backends d'équilibrage de charge. L'un d'entre eux traite 5 000 TPS, un autre 3 000 TPS et le dernier 2 000 TPS.
Dans cet exemple, les valeurs de clé sont les suivantes :
Durée maximale par transaction : 50 ms
Nombre maximal de TPS pour l'instance Apigee : 10 000
Nombre maximal de TPS pour un seul backend: 5 000
Nombre d'environnements Apigee : 1
En utilisant les formules décrites précédemment, nous pouvons calculer le nombre d'adresses IP NAT requises :
Le nombre minimal d'adresses IP NAT requises pour un maximum de 10 000 TPS de 50 ms chacune (ou moins), avec une seule adresse IP de backend et une paire de ports compatible avec un maximum de 5 000 TPS, est de 12.
Exemple 2
Dans cet exemple, nous attendons un maximum de 1 000 TPS dans 20 environnements Apigee. La durée du 99e centile de ces transactions est de 5 secondes. Ces requêtes seront traitées par huit backends cibles, avec un trafic normalement réparti de manière égale entre eux. En tenant compte de la maintenance et des pannes, un seul backend ne doit jamais diffuser plus de 250 TPS.
Dans cet exemple, les valeurs de clé sont les suivantes :
Durée maximale par transaction : 5 s
Nombre maximal de transactions par seconde (TPS) : 1 000
Nombre maximal de TPS pour un seul backend : 250
Nombre d'environnements Apigee : 20
En utilisant les formules décrites précédemment, nous pouvons calculer le nombre d'adresses IP NAT requises :
Le nombre minimal d'adresses IP NAT requises pour un maximum de 1 000 TPS de 5 secondes chacune (ou moins), avec une seule adresse IP de backend et une paire de ports compatible avec un maximum de 250 TPS, est de 2.
Exemple 3
Dans cet exemple, nous souhaitons calculer le nombre maximal de TPS avec deux adresses IP NAT sur un seul backend cible. La durée maximale par transaction est estimée à 100 ms.
Dans cet exemple, les valeurs de clé sont les suivantes :
Durée maximale par transaction : 100 ms
Nombre d'adresses IP NAT : 2
Dans ce cas, nous pouvons utiliser les formules des étapes 1 et 4 pour calculer le nombre maximal de ports sources NAT fournis et le nombre de TPS que ces ports sources peuvent accepter :
$$ 2 = \lceil P / 64512 \rceil $$
$$ 129024 = P $$
Le nombre maximal de ports sources NAT fournis est de 129 024.
En supposant qu'aucune connexion n'est réutiliséee, le nombre maximal de TPS est de 859, avec deux adresses IP NAT sur un seul backend.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eThis document explains how to calculate the minimum number of static NAT IPs needed for Apigee to support outbound traffic to target backends that require IP allow-listing.\u003c/p\u003e\n"],["\u003cp\u003eThe calculation requires knowing the maximum time per transaction, maximum transactions per second (TPS) for both the Apigee instance and a single backend, and the number of Apigee environments.\u003c/p\u003e\n"],["\u003cp\u003eThe provided formulas determine the maximum number of NAT source ports required, which is then used to find the minimum number of NAT IPs needed, using a "worst-case" scenario that does not consider connection reuse.\u003c/p\u003e\n"],["\u003cp\u003eExamples are included to demonstrate how to apply these formulas in scenarios with different transaction rates, durations, and backend configurations to calculate required static NAT IPs.\u003c/p\u003e\n"],["\u003cp\u003eThe document is applicable to Apigee and not to Apigee hybrid.\u003c/p\u003e\n"]]],[],null,["# Calculating static NAT IP requirements\n\n*This page\napplies to **Apigee** , but not to **Apigee hybrid**.*\n\n\n*View [Apigee Edge](https://docs.apigee.com/api-platform/get-started/what-apigee-edge) documentation.*\n\nSouthbound traffic between Apigee and a target backend with a public IP address uses [Cloud NAT](https://cloud.google.com/nat/docs/overview)\nto translate the private IP address of your Apigee instance into a public IP address. If your target backend requires IP allow-listing, you can reserve and activate static NAT IPs for egress traffic.\nThis topic describes how to calculate the minimum number of static NAT IPs required to support anticipated traffic.\n\nBefore you begin\n----------------\n\nIf you choose to use static NAT IP allocation to support allow-listing, you will need to calculate\nthe minimum number of static IPs required to support anticipated traffic. For this calculation, you will need the following information:\n\n- **Maximum time per transaction**: This is the maximum time, in seconds, that a transaction will take, from the start of the request until the end of the response.\n- **Maximum transactions per second (TPS)**: This is the maximum number of transactions per second the Apigee instance can possibly support.\n- **Maximum TPS for a single unique backend**: This is the maximum number of transactions per second that any single backend can possibly support.\n- **Maximum number of environments**: The maximum number of environments on this Apigee instance.\n\n| **Note**: The maximums detailed above are a part of capacity planning for NAT, and must include consideration of possible traffic spikes, TPS increases for backends due to a maintenance or outage, and future environment additions. It is recommended to add some buffer to the projected numbers in order to handle unforeseen traffic increases, and to redo the NAT calculations when projections change.\n\nCalculate the number of static IPs required\n-------------------------------------------\n\nYou can use the following formulas to calculate the minimum number of NAT IPs that need to be statically assigned:\n\n1. Calculate the maximum number of NAT source ports required per backend as $ S $. \n $$ S = \\\\lceil (150 + T) \\\\times B \\\\rceil $$\n\n Where:\n - $ T $ is the maximum time per transaction, in seconds.\n - $ B $ is the maximum TPS for any single unique backend.\n - $ \\\\lceil \\\\rceil $ is the ceiling (least integer) function, meaning round up to the next integer\n2. Calculate the minimum ports used by the Apigee instance as $ N $. \n $$ N = max(4096 \\\\times E, \\\\lceil {512 \\\\over 75} \\\\times R \\\\rceil) + 6144 $$\n\n Where:\n - $ E $ is the number of Apigee environments.\n - $ R $ is the maximum TPS for the Apigee instance.\n - $ \\\\lceil \\\\rceil $ is the ceiling (least integer) function, meaning round up to the next integer\n - The $ \\\\mathit{max}() $ function takes the maximum of the two values.\n3. Take the maximum number of ports required as $ P $. \n $$ P = max(S, N) $$\n\n Where:\n - $ S $ is the maximum number of NAT source ports required, as calculated in Step 1.\n - $ N $ is the minimum number of ports used by the Apigee instance, as calculated in Step 2.\n - The $ \\\\mathit{max}() $ function takes the maximum of the two values.\n4. Calculate the minimum number of NAT IPs required as $ I $. \n $$ I = \\\\lceil P / 64512 \\\\rceil $$\n\n Where:\n - $ P $ is the maximum number of ports required, calculated in Step 3.\n - $ \\\\lceil \\\\rceil $ is the ceiling (least integer) function, meaning round up to the next integer\n\n| **Note** : These formulas do not account for connection reuse, and instead calculate a \"worst-case\" scenario where no connections are reused. Actual connection reuse may vary. See [Connection Reuse](/apigee/docs/api-platform/security/nat-performance#connection-reuse) for the factors that contribute to an Apigee instance reusing an existing connection or opening a new one.\n\nExamples\n--------\n\n### Example 1\n\nIn this example, we expect a maximum of 10,000 TPS across 1 environment. The transactions are all `HTTP GET` requests\nand the 99th percentile transaction duration is 50 milliseconds (ms). These requests are unevenly served by a pool of\nservers behind 3 load balancer backends, with one of the load balancers taking 5,000 TPS, another taking 3,000 TPS, and the last\nload balancer taking 2,000 TPS.\n\nFor this example, the key values are as follows:\n\n- Maximum time per transaction: **50 ms**\n- Maximum TPS for the Apigee instance: **10,000**\n- Maximum TPS for a single backend: **5,000**\n- Number of Apigee environments: **1**\n\nUsing the formulas outlined earlier, we can calculate the number of NAT IPs required:\n\n1. $$ \\\\lceil (150 + 0.050) \\\\times 5000 \\\\rceil = \\\\lceil 150.050 \\\\times 5000 \\\\rceil = \\\\lceil 750250 \\\\rceil = 750250 $$\n\n The maximum number of NAT source ports required per backend, assuming no connection reuse, is **750,250**.\n 2. $$ max(4096 \\\\times 1, \\\\lceil {512 \\\\over 75} \\\\times 10000 \\\\rceil) + 6144 $$ \n $$ max(4096, \\\\lceil 6.827 \\\\times 10000 \\\\rceil) + 6144 $$ \n $$ max(4096, \\\\lceil 68270 \\\\rceil) + 6144 $$ \n $$ 68270 + 6144 = 74414 $$\n\n The minimum number of NAT source ports used by the Apigee runtime is **74,414**.\n3. $$ max(750250, 74414) = 750250 $$\n\n The maximum number of NAT source ports required per instance is **750,250**.\n4. $$ \\\\lceil 750250 / 64512 \\\\rceil = \\\\lceil 11.630 \\\\rceil = 12 $$\n\n The minimum number of NAT IPs required to support a maximum of 10,000 TPS of 50 ms each (or\n less), with a single backend IP and port pair supporting a maximum of 5,000 TPS, is\n **12**.\n\n### Example 2\n\nIn this example, we expect a maximum of 1,000 TPS across 20 Apigee environments. The\n99th percentile duration of these transactions is 5 seconds. These requests will be served by 8\ntarget backends, with traffic normally evenly distributed across all of them. With consideration\nfor maintenance and outages, a single backend is never expected to serve more than 250 TPS.\n\nFor this example, the key values are as follows:\n\n- Maximum time per transaction: **5s**\n- Maximum transactions per second (TPS): **1,000**\n- Maximum TPS for a single backend: **250**\n- Number of Apigee environments: **20**\n\nUsing the formulas outlined earlier, we can calculate the number of NAT IPs required:\n\n1. $$ \\\\lceil (150 + 5) \\\\times 250 \\\\rceil = \\\\lceil 155 \\\\times 250 \\\\rceil = \\\\lceil 38750 \\\\rceil = 38750 $$\n\n The maximum number of NAT source ports required per backend, assuming no connection reuse, is **38,750**.\n 2. $$ max(4096 \\\\times 20, \\\\lceil {512 \\\\over 75} \\\\times 1000 \\\\rceil) + 6144 $$ \n $$ max(81920, \\\\lceil 6.827 \\\\times 1000 \\\\rceil) + 6144 $$ \n $$ max(81920, \\\\lceil 6827 \\\\rceil) + 6144 $$ \n $$ 81920 + 6144 = 88064 $$\n\n The minimum number of NAT source ports used by the Apigee runtime is **88,064**.\n3. $$ max(38750, 88064) = 88064 $$\n\n The maximum number of NAT source ports required per instance is **88,064**.\n4. $$ \\\\lceil 88064 / 64512 \\\\rceil= \\\\lceil 1.365 \\\\rceil= 2 $$\n\n The minimum number of NAT IPs required to support a maximum of 1,000 TPS of 5 seconds each (or less),\n with a single backend IP and port pair supporting a maximum of 250 TPS, is **2**.\n\n### Example 3\n\nIn this example, we want to calculate the maximum TPS achievable with 2 NAT IPs to a single\ntarget backend. The maximum time per transaction is estimated to be 100 ms.\n\nFor this example, the key values are as follows:\n\n- **Maximum time per transaction**: 100ms\n- **Number of NAT IPs**: 2\n\nIn this case, we can use the formulas in Step 4 and Step 1 to calculate the maximum number of\nNAT source ports provided and the number of TPS those source ports can support:\n\n 1. $$ 2 = \\\\lceil P / 64512 \\\\rceil $$ \n $$ 129024 = P $$\n\n The maximum number of NAT source ports provided is **129,024**.\n 2. $$ 129024 = \\\\lceil (150 + 0.100) \\\\times B \\\\rceil $$ \n $$ 129024 = \\\\lceil 150.1 \\\\times B \\\\rceil $$ \n $$ \\\\lfloor 129024 / 150.1 \\\\rfloor = B $$ \n $$ \\\\lfloor 859.587 \\\\rfloor = B $$ \n $$ 859 = B $$\n\n The max TPS is **859** with 2 NAT IPs to a single backend, assuming no connection reuse."]]