# Carrier-grade NAT

Le NAT de classe transporteur ou carrier-grade NAT (CGN), large scale NAT, ou NAT444 est un NAT à grande échelle utilisé par un fournisseur d'accès à Internet, dans le but de diminuer la quantité d'adresses IPv4 nécessaires aux clients, et ainsi faire face à l'épuisement des adresses IPv4.

## Fonctionnement

Il consiste à distribuer des adresses privées à la passerelle des nouveaux clients au lieu d'adresse publique et à traduire ces adresses en adresses publiques vers Internet. La succession du NAT chez le client et chez l'opérateur est parfois désignée sous le nom de « NAT444 ».
Le CGN utilise la traduction de port, de sorte qu'une seule adresse publique est utilisée par de nombreux clients simultanément. Un certain nombre de ports TCP et UDP sont réservés pour chacun des clients. Compte tenu du fait qu'il existe 65 535 numéros de ports possibles, et en supposant qu'une adresse publique est utilisée par 100 clients, chaque client dispose d'environ 650 numéros de port, c'est-à-dire autant de connexions simultanées possibles.
Pour permettre l'accès au trafic généré par le client, le forum UPnP développe une extension du protocole appelé Internet Gateway Device Protocol (en) (IGD) pour permettre l'ouverture de ports publics sur le CGN. L'IETF a créé un groupe de travail nommé Port Control Protocol (PCP) RFC 6887 dans le même but.
Bien qu'il réduise fortement le besoin d'adresse IPv4 publique, le CGN n'est pas un système de transition d'IPv4 vers IPv6 à proprement parler, mais il est utilisé en combinaison avec d'autres approches pour assurer la continuité de la connectivité avec l'Internet IPv4.
La RFC 6598 réserve le bloc d'adresses 100.64.0.0/10 pour l'utilisation à l'intérieur du réseau de l'opérateur.

## Inconvénients du CGN

Il est possible que certaines applications qui font usage de connexions initiées par des hôtes sur Internet, de tunnels ou de type p2p ne fonctionnent plus correctement avec ce système.
Il est possible que les plages d'adresses utilisées chez le client et chez le fournisseur d'accès se chevauchent, ce qui crée des problèmes additionnels décrits dans la RFC 5684.
D'autre part, les plages d'adresses privées réservées par la RFC 1918 ne sont pas illimitées : le réseau 10.0.0.0/8 peut numéroter de 10 à 16 millions de passerelles, en fonction de l'efficacité dans la distribution des adresses, ce qui peut s'avérer insuffisant pour certains opérateurs.
Il n'existe pas de consensus sur le nombre minimal de ports à attribuer à chaque client. Un nombre trop bas nuirait aux applications qui ouvrent de nombreuses connexions simultanées, comme Google Maps.
La géolocalisation des utilisateurs finaux grâce à leur adresse IP est également affectée.
Les applications qui n'utilisent pas TCP, UDP ou ICMP sont bloquées par ce mécanisme. Ce sera notamment le cas des tunnels GRE (protocole 47) et 6in4 (protocole 41). Teredo est également concerné.
L'enregistrement des adresses IP ne permettrait plus d'identifier des utilisateurs individuels, les serveurs n'enregistrant généralement pas les numéros de ports utilisés par le client. Une alternative qui consisterait en l'enregistrement par le fournisseur d'accès à Internet de chaque flux représenterait une quantité considérable d'information à enregistrer et conserver. Ceci a des conséquences sur la capacité des services de police à identifier les auteurs de délits sur Internet$^,$. Cet usage est également critiqué par Europol, pour les mêmes raisons. Ainsi, Europol recommande l'utilisation d'IPv6, le problème étant posé depuis 2014.

## CGN pour la transition vers IPv6

Le CGN peut être utilisé pour une transition progressive vers IPv6 en encapsulant le trafic IPv6 dans un tunnel IPv4, dans un schéma similaire à 6rd.

## CGN et DS-Lite

À l'inverse, le CGN est utilisé dans la technique Dual-Stack Lite pour encapsuler le trafic IPv4 dans un tunnel IPv6 entre la passerelle du client (Customer-premises equipment (CPE)) et le CGN. Dans ce cas, il n'y a pas de succession de deux NAT, le CGN faisant office de NAT unique. Pour le trafic IPv4 encapsulé, le CGN identifie chaque client grâce à l'adresse IPv6 du CPE, le CPE n'a donc pas besoin d'adresse IPv4 (RFC 6333).
Ceci suppose que le réseau de l'opérateur est capable de transporter nativement le trafic IPv6. Il requiert des CPE compatibles avec cette technique. Ceux-ci doivent être configurés avec l'adresse IPv6 du CGN (RFC 6333).