Domanda

Un client ha richiesto che il limite MTU fosse 1492.

C'è un modo per farlo nel codice sorgente (programma in C)?

C'è qualche altro modo per farlo in generale?(ifconfig?)

Perché qualcuno deve modificare la MTU fino a un certo limite?Qual è il vantaggio?E di più importante: cambiando la MTU c'è il rischio di rompere il codice?

È stato utile?

Soluzione

Non si tratta direttamente di velocità;Aumentando l'MTU si riduce l'overhead, ovvero i dati responsabili della corretta consegna del pacco ma non utilizzabili dall'utente finale;Questo può aumentare la velocità ma solo per traffico intenso;

Inoltre, se aumenti la MTU, sei incline ad aumentare il numero di pacchetti che vengono scartati (poiché hai una probabilità di errore di bit fissa e più bit in un pacchetto), causando alla fine una diminuzione delle prestazioni con i pacchetti rinviati,ecc ... Quindi è un compromesso tra overhead e integrità dei dati;

Immagino che sia più una configurazione di interfaccia che qualcosa che controlli con un programma;Quindi è meglio attenersi al comando "ifconfig" o trovare la soluzione equivalente per Windows.

Altri suggerimenti

Modo programmaticamente utilizzando 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
}

Funziona almeno su Ubuntu, vedi man netdevice .

Il MTU è un numero che definisce l'unità di trasmissione massima per pacchetto.Più è grande, più velocemente verranno inviati i tuoi dati.Supponendo che tu possa inviare npackets / s di msize, se m cresce, anche m*n cresce.

Penso che il tuo cliente voglia quella MTU a causa della sua attrezzatura di rete (forse ethernet 802.3).Alcune apparecchiature gestiscono frame di dimensioni maggiori rispetto ad altre.

Puoi utilizzare ifconfig con l'opzione mtutocambia il suo valore: ifconfig eth0 mtu 1492.

il modo moderno per impostare i parametri dell'interfaccia è tramite sysfs

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

Con C, apri e scrivi come file

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top