O Windows 7 não solicita MTU do servidor DHCP; o que está pensando?


7

O adaptador Ethernet do meu computador usa quadros Ethernet de 1.500 bytes. Normalmente, isso significa que o MTU da minha conexão local é de 1500bytes.

Mas minha conexão (IPv4) com a Internet tem alguma sobrecarga. Isso significa que meu MTU real ao me comunicar com a Internet é 1492. Isso está causando todos os problemas regulares existentes na interface MTU mal configurada.

O roteador pode corrigi-lo

Obviamente, eu poderia usar netshe substituir minha interface de rede por uma MTU personalizada. Mas eu não quero fazer isso. O servidor DHCP do meu roteador já sabe que o MTU é 1492. Se solicitado, o servidor DHCP responderá com a opção 26 do DHCP:

  • 26 Interface MTU =1492

Por isso, estava me deixando louco por que o servidor DHCP não está informando à minha máquina Windows 7 a configuração da MTU como um dos itens retornados na oferta DHCP :

  • 54 Identificador do servidor DHCP =192.168.1.1
  • 51 Tempo de concessão do endereço IP =2 hours
  • 1 Máscara de sub-rede =255.255.255.0
  • 15 nome de domínio =example.local
  • 3 roteador =192.168.1.1
  • 6 Domain Name Server = 8.8.8.8, 8.8.4.4,74.82.42.42

Sem interface MTU ! Portanto, a Ethernet da minha máquina está presa em 1500bytes.

O servidor DHCP fez o que deveria fazer

Demorou mais tempo para escavar, mas percebi que o servidor DHCP apenas fornece o que o cliente solicitou . Durante o meu Windows 7 DHCP Discover , o Windows 7 enumera a lista de todas as opções de DHCP que ele gostaria que fossem retornadas:

  • 1 Máscara de sub-rede
  • 15 nome de domínio
  • 3 roteador
  • 6 Servidor de nomes de domínio
  • 44 Servidor de nomes NetBIOS sobre TCP / IP
  • 46 Tipo de nó NetBIOS sobre TCP / IP
  • 47 Escopo NetBIOS sobre TCP / IP
  • 31 Executar a descoberta do roteador
  • 33 Rota estática
  • 121 Rota estática sem classe
  • 249 Rota estática sem classe (Microsoft)
  • 43 Informações específicas do fornecedor

O Windows 7 nem está pedindo o MTU !

Deve saber o que está fazendo

O Windows deve ter uma razão pela qual não está solicitando o MTU; mas eu não sei o que é. No começo eu pensei que era porque estava usando o Path Maximum MTU Discovery . Mas PMTUfunciona apenas para conexões TCP, usa a opção TCP MSS(Maximum Segment Size) e requer que a MSSopção local esteja correta.

No meu caso, a configuração TCP MSS (que vem da opção MTU) está incorreta. Isto é1460 bytes

  1500 interface MTU
-   20 bytes IP header = 1480 bytes
-   20 bytes TCP header
= 1460 bytes MSS

que é muito alto.

Nota : Posso confirmar que o Windows está usando um MSS de 1460 bytes de um SYNpacote, quando uma conexão TCP está sendo estabelecida.

Se não o PathMTU, então o que?

O que o Windows 7 está pensando? Qual é o comportamento pretendido aqui? O que os desenvolvedores de pilha de rede da Microsoft achavam que deveria acontecer?

Agora finja que meu Internet MTU é realmente 1472 (o que é) e finja que meu adaptador Ethernet realmente usa 8,192quadros Ethernet de byte (o que faz). O que uma corporação deveria fazer? Devo ir até todas as máquinas da empresa e digitar:

>netsh interface ipv4 set interface interface="Local Area Connection" mtu=1472 store=persistent

Isso não é razoável. E mesmo que fosse razoável, não é o que estou perguntando.

Estou tentando entender o que o Windows quer que aconteça. estou tentando entender como deve se comportar. estou tentando aprender algo aqui. Finja que meu gateway da Internet é um caixa eletrônico de 576 bytes; como instruo as máquinas com Windows 7 que o MTU se elas desejam enviar para a Internet é de 576 bytes?

Leitura de bônus


De acordo com experts-exchange.com/OS/Misc Miscellaneous / Q_21711433.html (logo abaixo), alguém relata anedoticamente que o Windows não solicita o MTU (que é o que você está vendo). Quanto ao que uma empresa faria, provavelmente usaria a Diretiva de Grupo para executar um script que aplicaria as alterações.
ta.speot.is

11
Para o que uma empresa faria, o roteador teria sua MTU externa configurada corretamente após testar o mtu máximo permitido com ping (normalmente 1380-1500). Por dentro, ser ethernet puro seria 1500 e as máquinas Windows deixadas em paz enquanto se comunicam com o roteador em uma rede ethernet.
Fiasco Labs

@FiascoLabs Mas o que acontece quando o roteador descarta pacotes destinados à Internet quando eles não conseguem encaixar no pipe?
Ian Boyd

Respostas:


4

O caminho MTU não é apenas TCP e não usa o MSS (embora, como você supôs, o MSS seja derivado do MTU). Qualquer salto que receba um pacote muito grande para encaminhar enviará um ICMP fragmentation neededpacote de volta à origem. Isso faz parte da camada 3 e é independente do TCP.

O problema com o PMTU é que os pacotes ICMP recebidos geralmente são descartados ou não encaminhados para a origem e, portanto, a origem não sabe reduzir o tamanho do pacote.

Como seu roteador sabe que o MTU do próximo salto é 1472, ele deve enviar pacotes PMTU para seus clientes. Você pode verificar isso com o wireshark e, se não estiver fazendo isso, precisará ser corrigido.

Você tem algumas soluções alternativas. Uma é definir a interface interna da MTU do roteador para 1472, o que significa que ela é acionada antes que o roteador faça qualquer processamento. A outra opção é (se você pode fazer isso com o roteador) é ativar o bit DF para cada pacote. Essa é uma solução bastante brutal, pois todos os pacotes de tamanho completo acabarão como dois pacotes separados, um pequeno e um grande, com a sobrecarga resultante.

Em um ambiente corporativo, todas as três abordagens podem ser usadas, mas a configuração difícil do mtu na interface da LAN do roteador é bastante comum.

(Nunca deparei com uma instância em que o DHCP seja usado para mediar o MTU, na maioria dos casos não seria o lugar certo, porque o MTU interno e o MTU de borda geralmente são diferentes, onde você pode usar jumbo-frames internamente, mas precisa reduzir tamanho normal para o tráfego da Internet)


Eu recebi minhas (mis) informações sobre como Path MTU Discoveryconfiar no TCP MSS neste artigo do MSDN . vejo agora que acabei de ler errado. Consultoria RFC1191 - Path MTU Discovery teria sido a melhor escolha. Agora, fico me perguntando por que o roteador local não está respondendo com o Destino ICMP Inacessível - Fragmentação necessária, mas o sinalizador DF definido . O pfSense acaba de lançar a versão 2.1, e ele não envia o ICMP 3-4 :(
Ian Boyd

Talvez o pfSense esteja deixando o icmp inacessível? Isso geralmente é definido como uma medida de "segurança" em alguns dispositivos, mas geralmente causa mais problemas do que economiza.
Paul

Eu tenho preparado capturas de tela e documentação para esse mesmo problema no pfSense. Infelizmente, eles são bastante irritados, pois alguém sugere um problema com seu sistema. Eles provavelmente sugerem que eu não deveria confiar nas notificações do ICMP; como muitos firewalls estão configurados incorretamente para bloqueá-lo. E, finalmente, eu devo simplesmente definir o MTU nas LAN NICs da empresa.
Ian Boyd

A interface MTU é uma parte definida do padrão DHCP. É opção 26: networksorcery.com/enp/protocol/bootp/option026.htm Windows simplesmente opta por ignorá-lo
Twirrim

11
Se você implementar as soluções alternativas do @Paul (mesmo que todas) e acabar deixando a interface do cliente com o MTU mais alto, encontrará algumas falhas de handshake do TLS com muito poucos parceiros. Ainda assim, isso é muito chato, pois você terá dificuldade em encontrá-lo, pois a maioria das conexões (mesmo com a mesma tecnologia) funciona. Até agora, não sei por que isso acontece, mas eu vim aqui porque a conexão de um servidor Windows com o Backblaze B2 estava falhando devido ao MTU em uma instalação que usava todas as soluções alternativas. E lembro-me de um caso semelhante há alguns anos no servidor do PayPal. Então, basta deixar este comentário como
aviso
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.