Pergunta

Um cliente solicitou que o limite de MTU seja de 1492.

Existe uma maneira de fazê-lo no código-fonte (programa em C)?

Existe alguma outra maneira de fazê-lo em geral?(ifconfig?)

Por que alguém precisa modificar a MTU para um certo limite?Qual é o benefício?E mais Importante: Ao alterar a MTU há algum risco para quebrar o código?

Foi útil?

Solução

Não se trata de velocidade diretamente;Ao aumentar a MTU, você está reduzindo a sobrecarga, que são os dados responsáveis pela entrega adequada do pacote, mas não podem ser usados pelo usuário final;Isso pode ter um aumento na velocidade, mas apenas para tráfego pesado;

Além disso, se você aumentar o MTU, estará propenso a aumentar o número de pacotes que são descartados (uma vez que você tem uma probabilidade de erro de bit fixa e mais bits em um pacote), eventualmente causando uma diminuição no desempenho com pacotes reenviados,etc ... Portanto, é um meio-termo entre sobrecarga e integridade de dados;

Acho que é mais uma configuração de interface do que algo que você controla com um programa;Portanto, é melhor ficar com o comando 'ifconfig' ou encontrar a solução equivalente para o Windows.

Outras dicas

De maneira programática, usando 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
}

Funciona pelo menos no Ubuntu, consulte man netdevice .

O MTU é um número que define a unidade máxima de transmissão por pacote.Quanto maior for, mais rápido seus dados serão enviados.Supondo que você possa enviar npackets / s de msize, se m crescer, m*n também crescerá.

Acho que seu cliente deseja esse MTU por causa de seu equipamento de rede (talvez ethernet 802.3).Alguns equipamentos lidam com quadros maiores do que outros.

Você pode usar ifconfig com a opção mtutomude seu valor: ifconfig eth0 mtu 1492.

a maneira moderna de definir os parâmetros da interface é via sysfs

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

Em C, basta abrir e gravar como arquivos

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top