0 Membres et 1 Invité sur ce sujet
Le principe du GSO est relativement simple. Au lieu d’envoyer au driver de la carte réseau des paquets de 1500 octets (ou 9000), on lui envoie des paquets bien plus gros (64 ko), et le driver les découpe en paquets plus petits avant de les passer à la carte réseau. Ça n’a l’air de rien comme ça, mais le fait que le découpage se fasse le plus bas possible peut déjà améliorer les performances d’environ 17%. Certaines cartes sont même capables de faire le découpage elles-mêmes, ce qui permet d’obtenir des gains bien supérieurs. On peut s’en convaincre en regardant ces benchmarks, par exemple.Le GRO est plus délicat, car son but est de fusionner les paquets entrants. Par exemple, on reçoit 10 paquets de 1500 octets appartenant à la même connexion, et on les fait apparaître au système comme un gros paquet de 15000 octets. Mais en pratique, on ne reçoit pas 10 paquets d’un coup : les paquets arrivent les uns après les autres. À chaque fois, la carte réseau doit donc décider « est-ce que j’attends un peu des fois que d’autres paquets arrivent, ou bien j’envoie ce que j’ai pour l’instant ? »
En fait, sur un routeur (ou un firewall ou un hyperviseur, autrement dit : toute machine recevant des paquets et les transmettant à une autre, physique ou virtuelle), le GRO ou le LRO sont vivement déconseillés, car ils violent le principe de bout-en-bout, qui dit grosso modo que les choses compliquées (chiffrement, fragmentation…) doivent être effectués par les machines à chaque bout d’une connexion, et pas par les routeurs acheminant le trafic entre elles.