Redes do MS Windows

Ajuste de IP MTU, TCP MSS e PMTUD em sistemas Windows e Sun

19 Setembro 2015 - Tradução por Computador
Outras Versões: Versão em PDFpdf | Inglês (22 Agosto 2015) | Feedback


Índice


Introdução

Este documento oferece exemplos nos nós da configuração para ajustar a Unidade Máxima de Transmissão IP (MTU), o Tamanho de Segmento Máximo TCP (MSS), e Descoberta de MTU de Caminho IP (PMTUD) no Solaris 10 (e versões anteriores), HP-UX 9.x, 10.x, 11.x, IBM AIX, Linux, Windows 95/98/ME, Windows NT 3.1/3.51, Windows NT 4.0, e Windows 2000/XP.

Pré-requisitos

Requisitos

Os leitores deste documento devem estar cientes destes tópicos:

Componentes Utilizados

Este documento não se restringe a versões de software e hardware específicas.

Convenções

Para obter mais informações sobre convenções de documento, consulte as Convenções de dicas técnicas Cisco.

Informações de Apoio

Devido a mau funcionamento do hardware de rede, configuração incorreta ou defeitos de software, você poderá observar uma condição onde transferências de dados TCP pequenas funcionarão sem problemas. Entretanto, grandes transferências de dados, umas com pacotes de comprimento completo, perduram e esgotam o tempo limite. Uma solução alternativa é configurar os nós de envio para executar uma ou ambas as seguintes ações:

  • Desabilitar a PMTUD.

  • Recolher o TCP MSS e/ou o IP MTU a fim reduzir o tamanho máximo do pacote.

Descrição do problema e possíveis causas

Às vezes, em alguns caminhos IP, um nó TCP/IP pode enviar quantidades pequenas de dados (geralmente menos de 1500 bytes) sem a dificuldade, mas as tentativas de transmissão com quantidades maiores de dados perduram e esgotam o tempo limite. Isso é frequentemente observado como um problema unidirecional em que grandes transferências de dados são bem-sucedidas em uma direção, mas falham na oposta. Este problema provavelmente é causado pelo valor TCP MSS, falha de PMTUD, tipos diferentes de mídia de LAN ou links defeituosos. Estas subseções descrevem os problemas:

Valor MSS de TCP

O valor MSS TCP especifica a quantidade máxima de dados TCP em um único datagrama IP que o sistema local pode aceitar (para remontar). O datagrama IP pode ser fragmentado em pacotes múltiplos quando enviado. Teoricamente, esse valor pode ser tão grande quanto 65495, mas um valor tão grande nunca é utilizado. Geralmente, um sistema final usa a "MTU da interface de saída" menos 40 como seu MSS relatado. Por exemplo, um valor de MSS Ethernet é 1460 (1500 - 40 = 1460).

Falha de PMTUD

O PMTUD é um algoritmo descrito no RFC 1191 que é implementado em pilhas TCP/IP recentes.leavingcisco.com Este algoritmo tenta descobrir o maior datagrama IP que pode ser enviado sem fragmentação através de um caminho IP e maximiza a vazão da transferência de dados.

A PMTUD é implementada quando um emissor IP define o sinalizador "Don't Fragment" (DF) no cabeçalho IP. Se um pacote IP com esse conjunto de sinalizadores atingir um roteador cujo link de próximo salto possua uma MTU muito pequena para enviar o pacote sem fragmentação, o roteador descartará esse pacote e enviará um erro ICMP "Fragmentation needed but DF set" ao emissor IP. Quando o emissor IP recebe essa mensagem Internet Control Message Protocol (ICMP), ele aprende a utilizar MTUs IP menores para pacotes enviados a esse destino. Assim, os pacotes subsequentes conseguirão atravessar.

Vários problemas podem fazer com que o algoritmo PMTUD falhe. O emissor IP nunca aprende a MTU de caminho menor, mas continua em vão a retransmitir o pacote grande demais até que as retransmissões esgotem o tempo limite. Alguns problemas incluem:

  • O roteador com o caminho de próximo salto muito pequeno não consegue gerar a mensagem de erro ICMP necessária.

  • Um roteador no caminho reverso entre o roteador de MTU pequena e o emissor IP descarta a mensagem de erro ICMP antes que ela possa atingir o remetente IP.

  • Confusão na pilha do emissor IP na qual ele ignora a mensagem de erro ICMP recebida.

Uma solução alternativa para esses problemas é configurar o emissor IP para desabilitar PMTUD. Isto faz com que o emissor de IP envie seus datagramas com a desobstrução de flag DF. Quando os pacotes grandes alcançarem o roteador MTU pequeno, esse roteador fragmenta os pacotes em múltiplos pacotes menores. Os dados menores e fragmentados alcançam o destino, onde são reagrupados no pacote original grande.

Tipos de mídia de LAN diferentes

Dois hosts na mesma rede roteada, mas em diferentes tipos de mídia de LAN (Ethernet versus Token Ring e a Interface de Dados Distribuídos por Fibra Óptica (FDDI)) podem agir de forma diferente. Os sistemas Ethernet conectados podem funcionar corretamente enquanto os sistemas conectados a Token Ring e FDDI podem falhar. A razão para essa falha é que o sistema Ethernet relata um valor MSS de 1460 quando os sistemas conectados a Token Ring e FDDI relatam um valor MSS em torno de 4400. Como o servidor remoto não pode exceder o valor MSS relatado da outra extremidade, ele pode utilizar pacotes menores quando se comunica com o sistema Ethernet conectado do que faz quando se comunica com o sistema conectado a Token Ring e FDDI.

Topologia de rede “Dumbbell”

Os problemas de PMTUD são freqüentemente observados em uma topologia de rede "dumbbell" (por exemplo, uma topologia em que o MTU de um link interior no caminho da rede é menor que o das interfaces dos hosts de comunicação). Por exemplo, se você utilizar um túnel IP (encapsulamento de roteamento genérico (GRE)) a MTU da interface do túnel será menor do que da interface física correspondente. Se a PMTUD falhar devido a filtragem ICMP ou problemas de pilha do host, os grandes pacotes serão incapazes de atravessar o túnel. Uma ação alternativa nos Cisco IOS Software Releases com bug da Cisco ID CSCdk15279 (somente clientes registrados) integrado é aumentar a MTU de IP do túnel para 1500B.

Links com defeito

Às vezes um roteador possui um link com uma grande (1500 bytes) MTU, mas ele não é capaz de entregar um datagrama desse tamanho pelo link. Esse roteador não retorna um erro ICMP "Fragmentation needed but DF set" ao emissor porque o link não possui uma MTU pequena de fato. Entretanto, grandes datagramas não serão capazes de atravessar o link. Consequentemente, a PMTUD não ajuda e todas as tentativas de transmissão de pacotes grandes através desse link falham.

Isso ocorre às vezes devido a um problema da camada mais baixa com o link, como um circuito de Frame Relay com uma MTU muito pequena e pouco buffer, uma unidade de serviço de canal/unidade de serviço de dados (CSU/DSU) ou repetidor com mau funcionamento, um cabo fora das especificações ou um software ou firmware com defeito.

Esta lista mostra os defeitos do software relacionado.

Um outro problema da camada mais baixa com o link é causado pelo uso de uma ponte FDDI-para-Ethernet abaixo dos padrões que não pode executar a fragmentação da camada IP. Uma possível solução alternativa é configurar uma MTU menor nas interfaces do roteador conectadas ao problemático. Entretanto, talvez isso não seja uma opção e pode não ser inteiramente eficaz. Configure uma MTU menor, 1500 por exemplo, nos nós finais de IP, conforme descrito na próxima seção.

Como desativar PMTUD e configurar um MTU/MSS menor em um nó final

Estes exemplos definem uma MTU de IP de 1500 ou um MSS de TCP de 1460 para o Solaris 10 (e versões anteriores), HP-UX 9.x, 10.x, e 11.x, IBM AIX, Linux, Windows 95/98/ME, Windows NT 3.1/3.51, Windows NT 4.0 e Windows 2000/XP. Quando você define um valor de MTU IP de 1500 e um valor MSS TCP de 1460, geralmente isso produz o mesmo efeito, pois um segmento TCP vem normalmente em 40 bytes de um cabeçalho IP/TCP.

Nota: Se você alterar a MTU da interface (roteador ou nó final), todos os sistemas conectados ao o mesmo domínio de broadcast (fio e hub) deverão executar a mesmo MTU. Se dois sistemas no mesmo domínio de broadcast não utilizarem o mesmo valor de MTU, haverá problemas para se comunicarem quando pacotes (maiores que a MTU pequena, mas menores que a MTU grande) forem enviados do sistema com a maior MTU para o sistema com a menor MTU.

Solaris 10 (e versões anteriores)

Desabilitar PMTUD:

$ ndd -set /dev/ip ip_path_mtu_discovery 0

Defina o MSS máximo como 1460:

$ ndd -set /dev/tcp tcp_mss_max 1460

Fonte: O TCP/IP ilustrado: The Protocols, Vol. 1, Apêndice E, por W. Richard Stevens e Gary R. Wright.

HP-UX 9.x, 10.x e 11.x

Desabilitar PMTUD:

O HP-UX 9.X não é compatível com a Path MTU Discovery.

Os HP-UX 10.00, 10.01, 10.10, 10.20 e 10.30 são compatíveis com a Path MTU Discovery. Ela está ativada (1) por padrão para TCP e desativada (0) por padrão para UDP. O status Ativar/Desativar pode ser alternado com o comando nettune.

# nettune -s tcp_pmtu 0
   
# nettune -s udp_pmtu 0

O HP-UX 11 é compatível com a PMTU Discovery onde está habilitada por padrão. Isso é controlado através do comando ndd setting ip_pmtu_strategy.

# ndd -h ip_pmtu_strategy 0

Definir a estratégia de Descoberta MTU do Caminho: 0 desabilita a Path MTU Discovery; 1 habilita a Estratégia 1; 2 habilita a Estratégia 2. Para obter mais informações, use o comando ndd -h em um sistema HP-UX 11.

Fonte: Hewlett Packard leavingcisco.com

Defina o MSS máximo como 1460:

HP-UX 10.x:

# lanadmin -M 1460 <NetMgmtID> 
/usr/sbin/lanadmin [-a] [-A station_addr] [-m] [-M mtu_size] 
[-R] [-s] [-S speed] NetMgmtID -M mtu_size

Defina o novo tamanho de MTU da interface que corresponde a NetMgmtID. O valor de mtu_size deve estar contido no intervalo específico do link, e você deve possuir privilégios de superusuário.

Fonte: A página de manual do HP-UX na versão 10.2

HP-UX 11.x:

# ndd -set /dev/tcp tcp_mss_max 1460

Para obter mais informações, consulte a página de manual para o ndd em um sistema HP-UX 11.

Unx IBM AIX

Desabilitar PMTUD:

A Descoberta de MTU de Caminho foi acrescentada a AIX 4.2.1, padrão = desativada No AIX 4.3.3 padrão = ativada.

# no -o tcp_pmtu_discover=0

Fonte: IBM leavingcisco.com

Configurar o MSS máximo:

Para o AIX 4.2.1 ou superior, tcp_mssdflt será utilizado somente se a Path MTU Discovery não estiver habilitada ou a Path MTU Discovery não conseguir descobrir uma MTU de caminho. Padrão: 512 bytes; Escala: 1 a 1448.

# no -o tcp_mssdflt=1440

Somente um valor pode ser definido mesmo se houver diversos adaptadores com tamanhos de MTU diferentes. Esta alteração se aplica a todo o sistema.

Fonte: IBM leavingcisco.com

Linux

Desabilitar PMTUD:

A Path MTU Discovery pode ser habilitada ou desabilitada quando você alterar o conteúdo do arquivo ip_no_pmtu_disc para '0' ou ao '1' respectivamente. Para desabilitar a PMTUD, use o comando:

# echo  1  >/proc/sys/net/ipv4/ip_no_pmtu_disc

Defina a interface da MTU:

O valor de MTU da relação pode ser modificado quando você edita o arquivo ifcfg-<name> e muda o parâmetro “MTU”, onde <name> refere-se ao nome do dispositivo controlado pelo arquivo de configuração. Por exemplo, a fim de alterar a configuração para a interface Ethernet, modifique o arquivo com o nome 'ifcfg-eth0'. Este arquivo controla a primeira placa de interface de rede (NIC) no sistema

Fonte: Manual do RedHat Linux leavingcisco.com

Windows 95/98/ME

Nota: A modificação dos parâmetros de TCP/IP do Windows 95 envolve editar o Registro. Isso deve ser tentado somente por administradores de sistema experientes porque erros podem tornar o sistema impossível de ser inicializado. Depois que estas alterações no Registro são feitas, reinicialize para aplicar as alterações.

Desabilitar PMTUD:

Adicione este valor do Registro à chave:

Hkey_Local_Machine\System\CurrentControlSet\Services\VxD\MSTCP
 
PMTUDiscovery = 0 or 1 
 
Data Type: DWORD

Este valor especifica se o Microsoft TCP/IP tentará executar o Path MTU Discovery conforme especificado no RFC 1191.leavingcisco.com Um "1" habilita a descoberta, enquanto que um "0" a desabilita. O padrão é 1.

Nota: No Windows 98, o tipo de dados é um valor string.

Configure os MTUs da interface para 1500:

As entradas nesta seção devem ser adicionadas a esta chave do Registro, onde "n" representa a ligação específica entre TCP/IP-adaptador de rede.

Hkey_Local_Machine\System\CurrentControlSet\Services\Class\netTrans\000n
 
MaxMTU = 16-bit integer
 
Data Type: String

Esta chave do Registro especifica o IP do datagrama de tamanho máximo que pode passar para um driver de mídia. Os cabeçalhos do Subnetwork Access Protoco (SNAP) e do roteamento de origem (se utilizados na mídia) não são incluídos neste valor. Por exemplo, em uma rede Ethernet, o MaxMTU assume 1500 como padrão. O valor real utilizado é o mínimo do valor especificado com este parâmetro e o tamanho relatado pelo driver de mídia. O padrão é o tamanho relatado pelo driver de mídia.

Fonte: Artigo da Base de Conhecimento Microsoft Q158474 leavingcisco.com

Windows NT 3.1/3.51

Nota: A modificação dos parâmetros de TCP/IP do Windows NT envolve editar o Registro. Isso deve ser tentado somente por administradores de sistema experientes porque erros podem tornar o sistema impossível de ser inicializado. Após a execução destas alterações no Registro, reinicialize para aplicar as alterações.

Desabilitar PMTUD:

A descoberta de PMTU é habilitada por padrão, mas pode ser controlada com a adição deste valor ao Registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip\parameters
\EnablePMTUDiscovery
 
PMTU Discovery:  0 or 1 (Default = 1)
 
Data Type:   DWORD

Um "1" habilita a descoberta, enquanto que um "0" a desabilita. Quando a descoberta de PMTU está desabilitada, uma MTU de 576 bytes é utilizada para todos os endereços IP de destino não locais. O TCP MSS= 536.

Fonte: Artigo da Base de Conhecimento Microsoft Q136970 leavingcisco.com

Configure os MTUs da interface para 1500:

Esses parâmetros de TPC/IP são específicos para placas adaptadoras de rede individuais. Estes estão localizados sob este caminho do Registro, onde "adapterID” refere-se à subchave dos serviços para a placa adaptadora específica:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\adapterID\Parameters\Tcpip
 
MTU: REG_DWORD (Number in octets)
 
Default: 0 (That is, use the value supplied by the adapter.)

Este valor especifica o tamanho da MTU de uma interface. Cada interface utilizada pelo TCP/IP pode ter um valor diferente de MTU especificado. O MTU é geralmente determinado pela negociação direta com o driver inferior. No entanto, o uso do valor dos drivers inferiores pode ser anulado.

RouterMTU REG_DWORD Number in octets
 
Default: 0 (That is, use the value supplied by the lower interface.)

Este valor especifica o tamanho da MTU que precisa ser utilizado quando o endereço IP de destino está em uma sub-rede diferente. Cada interface utilizada pelo TCP/IP pode ter um valor diferente de RouterMTU especificado. Em muitas implementações, o valor de RouterMTU é definido como 576 octetos. Esse é o tamanho mínimo que deve ser suportado por qualquer nó de IP. Como alguns roteadores mais novos podem geralmente lidar com MTUs com mais de 576 octetos, o valor padrão para este parâmetro é o mesmo valor que aquele utilizado pela MTU.

Fonte: Artigo da Base de Conhecimento Microsoft Q102973 leavingcisco.com

Windows NT 4.0

Nota: A modificação dos parâmetros de TCP/IP do Windows NT envolve editar o Registro. Isso deve ser tentado somente por administradores de sistema experientes porque erros podem tornar o sistema impossível de ser inicializado. Após a execução destas alterações no Registro, reinicialize para aplicar as alterações.

Desabilitar PMTUD:

A descoberta de PMTU é habilitada por padrão, mas pode ser controlada com a adição deste valor ao Registro:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
\EnablePMTUDiscovery 
 
PMTU Discovery: 0 or 1 (Default = 1) 
 
Data Type:  DWORD

Um "1" habilita a descoberta, enquanto que um "0" a desabilita. Quando a descoberta de PMTU está desabilitada, uma MTU de 576 bytes é utilizada para todos os endereços IP de destino não locais. O TCP MSS= 536.

Quando você define este parâmetro como 1 (verdadeiro), ele faz com que o TCP tente descobrir a unidade de transmissão máxima (MTU ou o maior tamanho de pacote) sobre o caminho para um host remoto. Com a descoberta da MTU do caminho e a limitação dos segmentos TCP a esse tamanho, o TCP pode eliminar a fragmentação nos roteadores ao longo do caminho que conecta redes com MTU diferentes. A fragmentação afeta adversamente o throughput de tráfego e o congestionamento de rede.

Configure os MTUs da interface para 1500:

Esses parâmetros de TPC/IP são específicos para placas adaptadoras de rede individuais. Estes parâmetros se encontram sob este caminho do Registro, onde "adapterID" refere-se à subchave dos serviços para a placa adaptadora específica:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\AdapterID\Tcpip\Parameters
 
MTU: Set it to equal the required MTU size in decimal (default 1500)
 
Data Type: DWORD

Esse parâmetro substitui o MTU padrão de uma interface de rede. A MTU é o tamanho máximo do pacote em bytes que o transporte transmite sobre a rede subjacente. O tamanho inclui o cabeçalho de transporte. Um datagrama IP pode abranger vários pacotes. Valores superiores ao padrão para a rede subjacente resultam no uso da MTU padrão da rede pelo transporte. Valores inferiores a 68 resultam no uso de uma MTU de 68 pelo transporte.

Fonte: Artigo da Base de Conhecimento Microsoft Q120642 leavingcisco.com

Windows 2000/XP

Nota: A modificação dos parâmetros de TCP/IP do Windows NT envolve editar o Registro. Isso deve ser tentado somente por administradores de sistema experientes porque erros podem tornar o sistema impossível de ser inicializado. Após a execução destas alterações no Registro, reinicialize para aplicar as alterações.

Desabilitar PMTUD:

A descoberta de PMTU é habilitada por padrão, mas pode ser controlada com a adição deste valor ao Registro:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
\EnablePMTUDiscovery
  
PMTU Discovery:  0 or 1 (Default = 1)
 
Data Type:  DWORD

Um "1" habilita a descoberta, enquanto que um "0" a desabilita. Quando a descoberta de PMTU está desabilitada, uma MTU de 576 bytes é utilizada para todos os endereços IP de destino não locais. O TCP MSS= 536.

Quando você define este parâmetro como 1 (verdadeiro), ele faz com que o TCP tente descobrir a unidade de transmissão máxima (MTU ou o maior tamanho de pacote) sobre o caminho para um host remoto. Com a descoberta da MTU do caminho e a limitação dos segmentos TCP a esse tamanho, o TCP pode eliminar a fragmentação nos roteadores ao longo do caminho que conecta redes com MTU diferentes. A fragmentação afeta adversamente o throughput de tráfego e o congestionamento de rede.

Configure os MTUs da interface para 1500:

Esses parâmetros de TPC/IP são específicos para placas adaptadoras de rede individuais. Eles estão localizados sob este caminho do Registro, onde o "ID de adaptador" refere-se à subchave dos serviços para a placa adaptadora específica:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\ 
Interfaces\[Adapter ID] 
 
MTU: Set it to equal the required MTU size in decimal (default 1500)
 
Data Type:  DWORD

Esse parâmetro substitui o MTU padrão de uma interface de rede. A MTU é o tamanho máximo do pacote em bytes que o transporte transmite sobre a rede subjacente. O tamanho inclui o cabeçalho de transporte. Observe que um datagrama IP pode abranger vários pacotes. Valores superiores ao padrão para a rede subjacente resultam no uso da MTU padrão da rede pelo transporte. Valores inferiores a 68 resultam no uso de uma MTU de 68 pelo transporte.

Fonte: Artigo da Base de Conhecimento Microsoft Q314053 leavingcisco.com

Discussões relacionadas da comunidade de suporte da Cisco

A Comunidade de Suporte da Cisco é um fórum onde você pode perguntar e responder, oferecer sugestões e colaborar com colegas.


Informações Relacionadas


Document ID: 13709