Question

Un client a demandé que la limite MTU soit 1492.

Existe-t-il un moyen de le faire dans le code source (programme en C)?

Y a-t-il une autre façon de le faire en général? (ifconfig?)

Pourquoi quelqu'un doit-il modifier MTU à une certaine limite? Quel est l'avantage? Et le plus important: en modifiant le MTU, y a-t-il un risque de briser le code?

Était-ce utile?

La solution

Il ne s'agit pas directement de vitesse; En augmentant MTU, vous réduisez les frais généraux, qui sont des données responsables de la livraison appropriée du package mais qu'elle n'est pas utilisable par l'utilisateur final; Cela peut avoir une augmentation de la vitesse mais uniquement pour le trafic intense;

De plus, si vous augmentez MTU, vous avez tendance à augmenter le nombre de paquets qui sont supprimés (car vous avez une probabilité d'erreur de bit fixe et plus de bits dans un paquet), entraînant éventuellement une diminution des performances avec des paquets de ressentiment, etc. . Il s'agit donc d'un compromis entre les frais généraux et l'intégrité des données;

Je suppose que c'est plus une configuration d'interface que quelque chose que vous contrôlez avec un programme; Il est donc préférable de s'en tenir à la commande 'ifconfig' ou de trouver la solution équivalente pour Windows.

Autres conseils

Façon programmatique en utilisant c:

int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
struct ifreq ifr;
strcpy(ifr.ifr_name, "eth0");
if(!ioctl(sock, SIOCGIFMTU, &ifr)) {
  ifr.ifr_mtu // Contains current mtu value
}
ifr.ifr_mtu = ... // Change value if it needed
if(!ioctl(sock, SIOCSIFMTU, &ifr)) {
  // Mtu changed successfully
}

Cela fonctionne au moins sur Ubuntu, voir man netdevice.

La MTU est un nombre qui définit l'unité de transmission maximale par paquet. Plus il est grand, plus vos données seront envoyées rapidement. En supposant que vous pouvez envoyer npaquets / s de mtaille, si m grandit, m*n grandit aussi.

Je pense que votre client veut que MTU en raison de son équipement de réseau (peut-être Ethernet 802.3). Certains équipements ont la plus grande taille de cadres que d'autres.

Vous pouvez utiliser ifconfig avec l'option mtuPour modifier sa valeur: ifconfig eth0 mtu 1492.

La façon moderne de définir les paramètres d'interface est via SYSFS

sudo sh -c 'echo 1492 > /sys/class/net/tun/mtu'

Par c, juste ouvrir et écrire comme fichiers

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top