RAM (mémoire vive) : ce qu’elle stocke et ce qu’elle perd
La RAM (Random Access Memory, mémoire vive) est la mémoire de travail volatile d'une machine : elle contient les données en cours d'usage et perd tout à la coupure du courant. Sur un équipement réseau, elle héberge la table de routage, la table de connexions NAT, le cache DNS et les tampons TCP, c'est-à-dire précisément ce qui disparaît à chaque redémarrage.
Ce que la RAM garde vraiment, et ce qu’elle perd
Débranchez votre box trente secondes. Au redémarrage, la table ARP est vide, les sessions NAT en cours sont mortes, le cache DNS local aussi : les navigateurs des postes du réseau vont refaire toutes leurs résolutions. Rien de tout cela n'était écrit sur un support permanent. Ces tables vivaient en RAM. Le firmware, lui, est toujours là, parce qu'il réside en flash, et votre configuration également, parce qu'elle a été enregistrée.
C'est toute la différence entre travailler et retenir.
La mémoire vive est adressable octet par octet, dans n'importe quel ordre, sans passer par ce qui précède : d'où le « accès aléatoire » de son nom. Un accès en DDR se compte en dizaines de nanosecondes, autour de 60 à 100 ns une fois la latence du contrôleur incluse. Un accès NVMe se compte en dizaines de microsecondes. Trois ordres de grandeur séparent les deux, et cet écart explique à lui seul pourquoi tout ce qui doit être consulté à chaque paquet reste en mémoire plutôt que sur disque.
Ce qu'on appelle RAM dans un PC, une box ou un routeur, c'est de la DRAM : chaque bit est un condensateur microscopique qui se décharge tout seul. Le contrôleur doit réécrire chaque cellule environ toutes les 64 ms (32 ms au-dessus de 85 °C) sinon le contenu s'efface. Le cache L1, L2 et L3 du processeur repose sur une autre technologie, la SRAM, bien plus rapide et bien plus chère : on en met quelques mégaoctets, pas quelques gigaoctets.
Un détail qui a des conséquences en sécurité : la volatilité n'est pas instantanée. Les travaux de Halderman et al. présentés à USENIX Security 2008 (« Lest We Remember: Cold Boot Attacks on Encryption Keys ») ont montré qu'une barrette conserve son contenu pendant quelques secondes après coupure, et nettement plus longtemps si on la refroidit. Assez pour en extraire une clé de chiffrement de disque restée en mémoire. Sur un poste sensible, on éteint ou on verrouille complètement, on ne met pas en veille.
RAM, ROM, flash, swap : quatre choses différentes
Le vocabulaire commercial entretient la confusion, surtout sur mobile, où « 256 Go » désigne le stockage et « 8 Go » la mémoire vive. Ce ne sont pas deux tailles du même réservoir.
Sur un routeur Cisco, la répartition est explicite et sert de bon modèle mental pour n'importe quel équipement :
- Un `copy running-config startup-config` fait simplement passer la configuration de la RAM vers la NVRAM. Sans lui, le redémarrage annule votre travail.
- Le swap n'est pas de la RAM en plus : c'est un espace disque utilisé quand la mémoire manque. Les accès y sont des milliers de fois plus lents, et une machine qui swappe en boucle (thrashing) devient injoignable en SSH alors que le processeur affiche 5 % d'utilisation.
- L'inverse existe aussi : tmpfs place un système de fichiers dans la RAM. Sous Linux, /dev/shm est monté par défaut à 50 % de la mémoire physique. Écrire 6 Go dedans sur une machine de 8 Go, c'est déclencher un OOM.
| Mémoire | Volatile | Rôle | Exemple concret (IOS) |
|---|---|---|---|
| RAM | Oui | Données de travail | running-config, table de routage, tampons de paquets, table ARP |
| NVRAM | Non | Configuration persistante | startup-config |
| Flash | Non | Stockage de l'image système | fichier .bin de l'IOS, fichiers de log |
| ROM | Non | Amorçage | bootstrap et ROMMON |
| Swap | Non (sur disque) | Débordement de la RAM | absent sur IOS, /swapfile sur Linux |
Ce que le réseau consomme réellement en mémoire
Cas typique. Un pare-feu Linux se met à jeter des paquets sans raison visible, les utilisateurs signalent des connexions qui n'aboutissent pas une fois sur trois, et `dmesg` contient : `nf_conntrack: table full, dropping packet`. Le diagnostic tient en deux commandes, `sysctl net.netfilter.nf_conntrack_max` et `cat /proc/sys/net/netfilter/nf_conntrack_count`. La table de suivi de connexions est pleine, souvent parce qu'un poste infecté ou un scan ouvre des dizaines de milliers de sessions courtes.
Voici les postes qui pèsent, avec des valeurs vérifiables sur votre propre machine :
- Suivi de connexions : environ 300 octets par entrée conntrack. Beaucoup de systèmes de 4 Go se retrouvent avec nf_conntrack_max à 262 144, soit de l'ordre de 80 Mo pour la table pleine. La valeur par défaut dépend du noyau et de la distribution, vérifiez la vôtre plutôt que de recopier ce chiffre.
- Tampons TCP : `sysctl net.ipv4.tcp_rmem` retourne classiquement `4096 131072 6291456`, donc jusqu'à 6 Mo de tampon de réception par socket sous forte charge. Sur un serveur à 10 000 connexions actives, l'addition devient le premier consommateur de la machine.
- Cache DNS : unbound alloue par défaut 4 Mo de msg-cache-size et 4 Mo de rrset-cache-size. C'est modeste dès qu'un résolveur sert une centaine de postes, et augmenter ces valeurs est le réglage le plus rentable avant de toucher au reste.
- Table BGP : une full view IPv4 dépasse aujourd'hui le million de préfixes. Chaque session eBGP qui reçoit la table complète coûte plusieurs centaines de mégaoctets à un démon type BIRD ou FRR, et le coût se multiplie par le nombre de voisins si vous ne partagez pas les RIB.
Pourquoi « mémoire pleine » ne veut pas dire ce que vous croyez
Sur un routeur matériel ou un commutateur, la nuance compte : les tables consultées à la vitesse du fil ne sont pas dans la RAM générale mais dans de la TCAM, une mémoire associative dédiée. Le « 512k day » du 12 août 2014 en a donné l'illustration publique. Quand la table BGP mondiale a franchi 512 000 préfixes IPv4, des Cisco 6500 et 7600 restés sur la répartition TCAM par défaut se sont mis à router de travers, alors que leur RAM n'était nullement saturée. Ajouter des barrettes n'aurait rien réglé : il fallait reconfigurer l'allocation TCAM.
Sous Linux, l'erreur de lecture est inverse. `free -h` affiche souvent 200 Mo « libres » sur 8 Go et l'administrateur panique. C'est normal.
Le noyau utilise toute la mémoire inoccupée en cache de pages, et la rend instantanément dès qu'un processus la demande. La colonne à lire est `available`, pas `free` : elle vient du champ MemAvailable de /proc/meminfo, ajouté au noyau 3.14, et donne une estimation réaliste de ce qui reste mobilisable sans swapper. Une machine saine a peu de mémoire libre, beaucoup de mémoire disponible.
- `free -h` puis lire la colonne available, pas free
- `vmstat 1` et surveiller les colonnes si/so : si elles bougent en continu, la machine swappe
- `ps aux --sort=-%rss | head` pour identifier le processus qui grossit
- `dmesg -T | grep -i "out of memory"` pour confirmer une exécution de l'OOM killer
- `cat /proc/meminfo` sur un OpenWrt ou un NAS où free est minimaliste
- `show version` et `show processes memory sorted` côté Cisco IOS
DDR4, DDR5, ECC : ce qui change à l’achat
Le débit théorique se calcule simplement : fréquence effective en MT/s multipliée par 8 octets (bus de 64 bits) donne le débit crête par canal.
- Même nombre de broches entre DDR4 et DDR5, détrompeur placé différemment : une barrette DDR5 n'entre pas dans un slot DDR4, et forcer casse le connecteur.
- La DDR5 embarque un ECC interne (on-die ECC) qui corrige les erreurs de cellule dans la puce. Ce n'est pas de l'ECC de module : le bus entre la barrette et le processeur reste non protégé.
- Un vrai module ECC transporte 72 bits au lieu de 64 et applique du SECDED : correction d'une erreur sur un bit, détection d'une erreur sur deux bits. Il faut un processeur et une carte mère qui le prennent en charge, sinon la barrette fonctionne en mode non-ECC ou pas du tout.
- Un système 32 bits ne peut adresser que 4 Gio, et Windows 32 bits n'en expose en pratique que 3,2 à 3,5 Go. Une raison suffisante pour ne plus déployer d'OS 32 bits sur un routeur logiciel.
| Standard | Débit crête par canal | Tension | Broches (DIMM) |
|---|---|---|---|
| DDR4-2666 | 21,3 Go/s | 1,2 V | 288 |
| DDR4-3200 | 25,6 Go/s | 1,2 V | 288 |
| DDR5-4800 | 38,4 Go/s | 1,1 V | 288 |
| DDR5-6400 | 51,2 Go/s | 1,1 V | 288 |
Testez vos connaissances
Que perd un routeur au redémarrage ?
Score : 0 sur 3
Questions fréquentes
Ajouter de la RAM accélère-t-il ma connexion Internet ?
Non, la RAM ne change pas le débit du lien. Le seul cas où l'effet est visible, c'est quand la machine manque de mémoire et swappe : le navigateur, le résolveur DNS ou le pare-feu attendent alors des accès disque, et la latence perçue explose alors que la ligne est parfaitement saine. Une fois le swap arrêté, vous retrouvez la performance de la ligne, pas mieux.
Combien de RAM pour un pare-feu ou un routeur logiciel maison ?
Partez du calcul plutôt que d'un chiffre : 100 000 connexions suivies coûtent environ 30 Mo de conntrack, les tampons TCP et le cache DNS ajoutent quelques centaines de mégaoctets. En pratique, 2 Go suffisent à un routage et NAT simples pour un foyer ou un petit bureau, et il faut monter nettement plus haut dès que vous activez une inspection de paquets type Suricata avec un jeu de règles complet, l'usage réel dépendant du nombre de règles chargées.
Les données en RAM sont-elles vraiment effacées à l’extinction ?
Presque. Le contenu s'efface faute de rafraîchissement, mais pas en un instant : les mesures de l'étude cold boot de 2008 montrent une rémanence de quelques secondes à température ambiante et de plusieurs minutes si la barrette est refroidie. Pour un poste chiffré, cela signifie qu'une mise en veille laisse la clé exposée, alors qu'un arrêt complet la retire au bout de quelques secondes.
Pourquoi mon serveur Linux affiche-t-il seulement 3 % de mémoire libre ?
Parce que le noyau utilise la mémoire inoccupée comme cache de pages, et qu'il la libère instantanément à la demande. Lisez la colonne available de `free -h` ou le champ MemAvailable de /proc/meminfo : c'est celle-là qui indique ce que vos processus peuvent encore obtenir. Une valeur available proche de zéro accompagnée de swap in/out permanent dans `vmstat 1`, là oui, il y a un problème.
Faut-il de l’ECC sur un NAS ou un serveur domestique ?
Oui si la machine tourne en continu et stocke des données que vous ne voulez pas voir se corrompre en silence, en particulier sous ZFS où la mémoire sert de cache d'écriture. L'ECC de module corrige une erreur d'un bit et signale celle de deux bits, ce que l'on retrouve ensuite dans les compteurs EDAC du noyau. L'ECC interne de la DDR5 ne remplace pas cette protection.
RAM et cache, c’est la même chose ?
Non, ce sont deux niveaux d'une même hiérarchie. Le cache processeur (L1, L2, L3) est de la SRAM intégrée à la puce, de l'ordre de quelques mégaoctets, accessible en quelques nanosecondes. La RAM est de la DRAM externe, de l'ordre de plusieurs gigaoctets, dix à vingt fois plus lente. Le mot cache désigne aussi, dans un contexte réseau, un contenu conservé en RAM comme le cache DNS ou le cache d'un CDN.
À lire aussi
cache · box internet · commutateur reseau · conteneur