Frage

Ein Client hat angefordert, dass das MTU-Limit 1492 betragen soll.

Gibt es eine Möglichkeit, dies im Quellcode (Programm in C) zu tun?

Gibt es eine andere Möglichkeit, dies im Allgemeinen zu tun?(ifconfig?)

Warum muss jemand die MTU auf ein bestimmtes Limit ändern?Was ist der Vorteil?Und am meisten wichtig: Besteht durch Ändern der MTU das Risiko, den Code zu beschädigen?

War es hilfreich?

Lösung

Es geht nicht direkt um Geschwindigkeit;Durch Erhöhen der MTU reduzieren Sie den Overhead. Dies sind Daten, die für die ordnungsgemäße Zustellung des Pakets verantwortlich sind, aber vom Endbenutzer nicht verwendet werden können.Dies kann zu einer Geschwindigkeitssteigerung führen, jedoch nur bei starkem Verkehr.

Wenn Sie die MTU erhöhen, können Sie auch die Anzahl der verworfenen Pakete erhöhen (da Sie eine feste Bitfehlerwahrscheinlichkeit und mehr Bits in einem Paket haben), was letztendlich zu einer Leistungsminderung bei erneut gesendeten Paketen führt.etc ... Es ist also ein Kompromiss zwischen Overhead und Datenintegrität;

Ich denke, es ist eher eine Schnittstellenkonfiguration als etwas, das Sie mit einem Programm steuern.Halten Sie sich also besser an den Befehl 'ifconfig' oder suchen Sie die entsprechende Lösung für Windows.

Andere Tipps

Programmierte Methode mit 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
}

Es funktioniert zumindest unter Ubuntu, siehe man netdevice .

Die MTU ist eine Zahl, die die maximale Übertragungseinheit pro Paket definiert.Je größer es ist, desto schneller werden Ihre Daten gesendet.Angenommen, Sie können npackets / s von msize senden. Wenn m wächst, wächst auch m*n.

Ich denke, Ihr Client möchte diese MTU aufgrund ihrer Netzwerkausrüstung (möglicherweise Ethernet 802.3).Einige Geräte haben die größte Rahmengröße als andere.

Sie können ifconfig mit der Option mtuto verwendenÄndern Sie den Wert: ifconfig eth0 mtu 1492.

Die moderne Methode zum Festlegen von Schnittstellenparametern erfolgt über sysfs

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

Mit C einfach öffnen und als Dateien schreiben

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top