Este documento descreve a fragmentação e a remontagem em links L2TP e explica como o ajuste da Unidade máxima de transmissão (MTU, Maximum Transmission Unit) pode ajudar alguns dos problemas associados.
Os leitores deste documento devem ter conhecimento de:
Comandos gerais de configuração da Rede privada virtual discada (VPDN).
Tópicos gerais de IP, como fragmentação, remontagem, MTU, encapsulamento, cabeçalhos, entre outros.
Grande parte das melhorias feitas na configuração e no recurso discutidos aqui está disponível no Cisco IOS® Software Releases 12.1T ou 12.2T e versões posteriores. Entretanto, consulte as seções individuais a seguir para obter mais informações.
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. All of the devices used in this document started with a cleared (default) configuration. Se você estiver trabalhando em uma rede ativa, certifique-se de que entende o impacto potencial de qualquer comando antes de utilizá-lo.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
Às vezes, você precisa fragmentar pacotes encapsulados em túnel para transmiti-los pelo fio. Aqui está um exemplo disso.
No caso de L2TP via UDP, a sobrecarga de todos os protocolos inclui um conjunto adicional de cabeçalhos IP, UDP e L2TP. O cabeçalho IP tem 20 bytes, o cabeçalho UDP tem 8 bytes e o cabeçalho L2TP normalmente tem 12 bytes. Os 12 bytes do cabeçalho L2TP incluem:
os campos de versão e flag (2 bytes)
os campos de ID de túnel e de ID de sessão (2 bytes cada)
2 bytes de deslocamento de padding
4 bytes de encapsulamento do Point-to-Point Protocol (PPP)
Este diagrama mostra mais detalhes:
Se habilitar a sequência de dados (ela permanece desabilitada por padrão em dispositivos Cisco), você deverá adicionar mais 4 bytes para os campos Ns e Nr. Adicione os cabeçalhos IP, UDP e L2TP para ver se esse L2TP via UDP adiciona 40 bytes de encapsulamento de protocolo ao pacote.
Quando você encapsular um pacote IP de 1500 bytes em L2TP, o pacote encapsulado terá 1540 bytes (1500 + 40 bytes de cabeçalhos IP, UDP e L2TP). Você deve fragmentar o pacote para transmiti-lo via uma interface de tipo Ethernet padrão (que tem uma MTU de 1500 bytes). O pacote encapsulado é fragmentado em dois. O primeiro fragmento consiste em 1500 bytes (1460 bytes do pacote IP original + 40 bytes de encapsulamento L2TP). O segundo fragmento consiste em 60 bytes (últimos 40 bytes do pacote IP original + 20 bytes de sobrecarga IP).
Observação: somente o primeiro fragmento contém o cabeçalho L2TP; o segundo fragmento contém apenas um cabeçalho IP. Isso permite que o peer L2TP, seja ele um LAC ou um LNS, remonte os dois fragmentos no pacote original encapsulado de túnel de 1540 bytes.
Um dos problemas enfrentados pelo Layer 2 Tunneling Protocol (L2TP) via User Datagram Protocol (UDP) e por outros protocolos de encapsulamento baseado nas camadas 2 e 3 é que a sobrecarga do protocolo de encapsulamento aumente o tamanho do pacote encapsulado em túnel. Quando o pacote original tiver tamanho completo, você deverá fragmentar o pacote encapsulado em túnel para transmiti-lo pelo fio.
Um dos problemas causados pela fragmentação e a remontagem do pacote L2TP no LAC (Concentrador de Acesso de L2TP) e no LNS (Servidor de Rede de L2TP) é que elas são feitas no nível de processo no software Cisco IOS. Durante a agregação de um número grande de sessões L2TP e fluxos de tráfego em um LNS, o switching de processo pode cortar drasticamente o desempenho. Por esse motivo, é altamente desejável reduzir ou eliminar a necessidade de fragmentação e de remontagem no caminho de switching L2TP.
Utilize um dos métodos descritos neste documento para ajustar a MTU e resolver isso.
Várias configurações e recursos do Cisco IOS Software foram projetados para evitar fragmentação e remontagem no caminho da switching do L2TP por meio do ajuste do MTU.
Configure um IP MTU menor na interface de molde virtual usando o comando ip mtu. A configuração de uma MTU IP menor força o roteador a descartar todos os pacotes IP que excedam a MTU IP e tenham os bits Não fragmentar (DF, Don't Fragment) definidos no cabeçalho IP. O roteador gera, então, um protocolo de mensagem de controle da Internet (ICMP) tipo 3 Host inalcançável, mensagem código 4 fragmentação necessária em direção à origem do pacote (o host original). Essa mensagem indica o IP MTU da interface, para que a origem possa reduzir o tamanho do pacote a fim de ajustá-lo à interface. Esse processo também é conhecido como Path MTU Detection (PMTUD). Para obter mais informações, consulte o RFC 1191 . Configure a MTU IP como o maior tamanho de pacote IP que não excederá a PMTU entre o LAC e o LNS quando o cabeçalho L2TP completo é adicionado. Para um PMTU de 1500 bytes PMTU e um cabeçalho padrão de 40 bytes L2TP, configure o IP MTU para 1460 (cabeçalho de 1500-40 bytes).
Se a PMTU for desconhecida (ou for alterada) entre o LAC e o LNS, você poderá configurar o comando ip pmtu em vpdn-group. O comando ip pmtu foi adicionado ao Cisco IOS Software versão 12.2(4)T utilizando o bug ID CSCds72714 (não visível para usuários externos). O recurso ip pmtu copia o bit DF do pacote interno para o cabeçalho L2TP externo e ativa a PMTUD entre o roteador e seu ponto de extremidade de túnel L2TP.
O Microsoft Windows tem uma configuração de registro que permite habilitar um recurso de recuo para sua descoberta de PMTU. Para obter informações sobre o Windows NT, consulte o seguinte artigo no site da Microsoft: Alteração do algoritmo de detecção de buraco negro do PMTU para Windows NT 3.51 (Q136970)
No Windows 2000/XP, o artigo da Microsoft How to Troubleshoot Black Hole Router Issues (Q314825) descreve vários métodos no Windows para evitar esse problema. Este artigo define o termo roteador "buraco negro", descreve um método de localização de roteadores buraco negro e sugere três formas de evitar a perda de dados que pode ocorrer por conta de um roteador buraco negro.
Também é possível ativar o ajuste automático da MTU de IP. Este recurso permite que o roteador ajuste automaticamente o MTU do IP na interface de acesso virtual para compensar o tamanho do cabeçalho do L2TP e o MTU da interface de saída. Esse recurso foi adicionado no Cisco IOS Software Release 12.1(5)T usando o ID de Bug CSCdr01713 (somente para clientes registrados).
Observação: a MTU de IP só é ajustada automaticamente se não houver MTU de IP configurada manualmente na interface de modelo virtual (usando a opção na seção anterior).
Inicialmente, esse recurso era habilitado por padrão, sem nenhum método para desabilitá-lo. Bug ID CSCdt67753 ( apenas clientes registrados) em Cisco IOS Software Releases 12.2(3) e 12.2(4)T e versões posteriores adicionou o comando [no] ip mtu adjust em vpdn-group para habilitar e desabilitar o recurso. O padrão era ter o recurso ativado. Esse recurso não tem uma Interface de linha de comando (CLI, Command Line Interface) para trocar o padrão apenas para conexões L2X, que não se associam a vpdn-group (como um túnel L2F ou L2TP iniciado por SGBP). A incapacidade de desabilitá-lo para topologias MMPPP (multilink multichassis) mais os problemas PMTUD descritos abaixo causaram muitas reclamações de usuários. Por essa razão, o padrão foi alterado para que o recurso de ajuste automático IP MTU fosse desativado a partir das versões 12.2(6) e 12.2(8)T, e mais recentes, do Cisco IOS Software usando a ID de erro CSCdu69834 (somente clientes registrados).
Os ajustes manual e automático da MTU dependem da PMTUD entre os hosts finais. Embora satisfatório em teoria, PMTUD não funciona bem na Internet. Consulte RFC 2923 para obter uma descrição detalhada de como o PMTUD se divide na Internet. O maior problema é a presença de buracos negros que fazem downloads de páginas da Web parecerem parar no meio do fluxo. Esses buracos negros normalmente são gerados por firewalls ou roteadores configurados para filtrar mensagens de ICMP. Quando a origem dos pacotes maiores não puder receber a mensagem "ICMP Host Unreachable" do roteador, indicando que a MTU foi excedida, ela não poderá reduzir o tamanho do pacote. Em vez disso, ela continua tentando e retransmitindo o mesmo pacote repetidamente com o bit DF configurado. Esses pacotes são descartados pelo LNS porque excedem a PMTU e a conexão para de responder.
Devido a problemas de confiança do PMTUD para detectar se o IP MTU é menor em um túnel L2TP, a Cisco incluiu o recurso de ajuste MSS (Tamanho máximo de segmento) do TCP no Cisco IOS Software Version 12.2(4)T.
O recurso de ajuste do tamanho de segmento máximo de TCP - acrescentado pela identificação de bug CSCds69577 (clientes registrados somente), disponível no software Cisco IOS versão 12.2(4)T e posteriores - permite que o roteador modifique o TCP MSS anunciado em pacotes sincronizados (SYN) de entrada e saída enviados por hosts finais. Modificando o TCP MSS para um valor menor do que o padrão usual de 1460, você pode eliminar TCP como origem de pacotes completos. O TCP MSS deve ser ajustado para um valor de modo que um segmento de TCP com um cabeçalho de TCP/IP e encapsulado em L2TP sobre UDP não exceda o IP MTU da interface de saída. Um cabeçalho TCP/IP costuma ter 40 bytes e o cabeçalho L2TP via UDP tem 40 bytes adicionais. Por isso, em geral, o TCP MSS deve ser ajustado para 1420 (cabeçalho TCP/IP 1500 - 40 bytes - cabeçalho L2TP via UDP 40 bytes).
O comando utilizado para isso é ip tcp adjust-mss <mss>, que é um comando de nível de interface.
A última opção para reduzir a fragmentação de uma rede L2TP exige o suporte para a negociação do MRU (Unidade Máxima de Recebimento) no cliente do PPP (Protocolo Ponto-a-Ponto). A opção MRU em PPP permite a um peer anunciar qual é a unidade de recebimento máxima. Por exemplo, se um peer anunciar uma MRU de 1460, ele não processará um frame PPP com um payload maior que 1460 bytes. A implementação Cisco PPP utiliza a MTU da interface como o valor MRU anunciado durante a negociação PPP. Se a MTU for definida como o padrão de 1500 bytes, nenhuma MRU será anunciada, porque ela é o padrão de PPP. Porém, se a MTU estiver definida para 1460, uma MRU do PPP de 1460 é anunciada. Se o peer PPP ouvir o MRU anunciado durante a negociação PPP e ajustar seu MTU (e indiretamente o MTU do IP) para esse link PPP, poderemos evitar a fragmentação. Com uma MRU PPP anunciada de 1460, o peer deve ser definido como a MTU IP como 1460. Isso, por sua vez, modifica o TCP MSS anunciado pelo peer durante a abertura de conexões TCP e evita a fragmentação via rede L2TP.
Utilize o comando mtu <bytes> para configurar uma MTU inferior na interface de modelo virtual. Novamente, isso requer suporte no cliente PPP para ouvir o MRU anunciado durante a negociação de PPP. Um cliente conhecido que escuta a opção MRU é o cliente PPP do Windows XP. Infelizmente, outros clientes PPP normalmente implantados não respeitam a MRU PPP anunciada como deveriam. Consulte a documentação do cliente PPP para determinar se ele utiliza corretamente a MRU PPP anunciada. Ao executar L2TP com LCP proxy, a renegociação LCP precisará ocorrer, pois a opção MRU é negociada durante a fase de LCP. Para habilitar a renegociação LCP, configure lcp renegotiation on-mismatch ou lcp renegotiation sempre em vpdn-group.
Um problema na redução da MTU é que a MTU IP também é reduzida automaticamente. Atualmente, não é possível configurar uma MTU IP maior que a MTU em uma interface de modelo virtual. Está sendo rastreado pelo Bug ID CSCdx39828 como uma solicitação de recurso/aperfeiçoamento (não visível para usuários externos).
Esse método exige que os clientes escutem a opção MRU durante a negociação de LCP. Com freqüência há uma combinação de clientes: alguns escutam a MRU, outros não. Os clientes que ignoram a MTU enfrentam problemas de PMTUD descritos na seção Ajuste Automático da MTU IP. Para esses clientes, você pode empregar uma ação diferente, desativando efetivamente a PMTUD com a limpeza do bit DF no pacote IP interno. Para fazer isso, use a seguinte configuração:
interface virtual-template1 ip policy route-map clear-df ! route-map clear-df permit 10 match ip address 101 set ip df 0 ! access-list 101 permit tcp any any
O software Cisco IOS fornece muitas formas para maximizar o desempenho da switching de L2TP. PMTUD é uma solução excelente. No entanto, devido aos problemas na Internet, isso nem sempre é confiável. O software Cisco IOS fornece alguns mecanismos alternativos para manter o alto desempenho do switching L2TP e maximizar a conectividade de usuário.