IP : Tunelamento IP

Por Que eu Não Posso Navegar na Internet Utilizando um Túnel GRE?

22 Maio 2008 - Tradução Manual
Outras Versões: Versão em PDFpdf | Tradução por Computador (29 Julho 2013) | Inglês (10 Agosto 2005) | Feedback


Índice

Introdução
Pré-requisitos
     Requisitos
     Componentes Usados
     Convenções
Fragmentação de Pacotes e Mensagens ICMP
Mensagens ICMP Bloqueadas
     Soluções
     Outras Soluções
Discussões relacionadas da comunidade de suporte da Cisco
Informações Relacionadas

Introdução

Às vezes, quando o tráfego passar por um túnel de Generic Routing Encapsulation (GRE), é possível usar com êxito o comando ping e o Telnet, porém será possível fazer o download de páginas de Internet ou transferir arquivos usando o File Transfer Protocol (FTP). Este documento explica um motivo comum para o problema e oferece várias soluções alternativas.

Pré-requisitos

Requisitos

Este documento exige noções básicas de GRE. Para obter mais informações sobre GRE, consulte os seguintes documentos:

Componentes Usados

Este documento não está restrito a versões específicas de software e de hardware.

Para obter informações adicionais sobre os comandos utilizados neste documento, use a Ferramenta de Consulta de Comandos (clientes registrados somente) .

Convenções

Para obter mais informações sobre convenções em documentos, consulte Convenções de Dicas Técnicas da Cisco.

Fragmentação de Pacotes e Mensagens ICMP

Este documento utiliza o diagrama de rede a seguir como exemplo:

56a.gif

No diagrama acima, quando o cliente quiser acessar uma página da Internet, ele estabelece uma sessão de TCP com o Servidor de Web. Durante esse processo, os Servidores Cliente e Web anunciam o tamanho máximo de segmento (MSS), indicando um ao outro que podem aceitar segmentos de TCP até esse tamanho. Após o recebimento da opção MSS, cada dispositivo calcula o tamanho do segmento que pode ser enviado. Isso se chama Send Max Segment Size (SMSS) e equivale ao menor dos dois MSSs. Para obter mais informações sobre o Tamanho máximo de segmento do TCP, consulte o RFC 879 leavingcisco.com.

Por motivos de esclarecimento, digamos que o servidor de web do exemplo acima determine que eles pode enviar pacotes de até 1500 bytes de comprimento. Ele, portanto, envia um pacote de 1500 bytes para o cliente e no cabeçalho IP, define o bit de “não fragmentação” (DF). Quando o pacote chega no R2, o roteador tenta encapsulá-lo no pacote de túnel. No caso da interface de túnel GRE, a unidade de transmissão máxima (MTU) do IP é 24 bytes inferior à MTU IP da interface de saída real. No caso da interface de túnel GRE, a unidade de transmissão máxima (MTU) IP é 24 bytes inferior à MTU IP da interface de saída real.

O R2 está tentando enviar um pacote IP de 1500 byte em uma interface MTU IP de 1476 byte. Como isto não é possível, o R2 tem de fragmentar o pacote, criando um pacote de 1476 bytes (dados e cabeçalho IP) e um pacote de 44 bytes (24 bytes de dados e um novo cabeçalho de IP de 20 bytes). O R2 então efetua um encapsulamento GRE de ambos os pacotes para obter pacotes de 1500 e 68 bytes, respectivamente. Esses pacotes podem ser enviados agora para a verdadeira interface externa, que tem uma MTU IP de 1500 bytes.

No entanto, lembre-se de que o pacote recebido pelo R2 tem o conjunto de bits DF. Portanto, o R2 não pode fragmentar o pacote e, em vez disso, precisa instruir o servidor da Web a enviar pacotes menores. Isto pode ser feito com o envio de um pacote código 4 tipo 3 de protocolo de mensagem de controle da Internet (ICMP) (Destino inalcançável; fragmentação necessária e conjunto DF). Esta mensagem ICMP contém o MTU a ser utilizado pelo servidor da Web, que deve receber esta mensagem e ajustar o tamanho do pacote de acordo com ela.

Observação:  Consulte Informações Importantes sobre Comandos de Depuração antes de usar comandos debug.

É possível exibir as mensagens ICMP enviadas por R2 habilitando o comando debug ip icmp :

ICMP: dst (10.10.10.10) frag. needed and DF set unreachable sent to 10.1.3.4

Mensagens ICMP Bloqueadas

Um problema comum ocorre quando mensagens ICMP são bloqueadas al longo do caminho do servidor de Web. Quando isto ocorre, o pacote de ICMP nunca atinge o servidor de Web, evitando assim que os dados sejam passados entre o cliente e o servidor.

Soluções

Uma destas quatro soluções deve resolver o problema.

  • Descubra em que parte do caminho a mensagem ICMP está bloqueada e veja se consegue obter permissão para ela.

  • Defina o MTU na interface de rede do Cliente para 1476 bytes, forçando o SMSS a ser menor, para que os pacotes não tenham de ser fragmentados quando atingirem R2. Entretanto, se você alterar o MTU para o Cliente, você também deve alterar o MTU para todos os dispositivos que compartilham a rede com este Cliente. Em um segmento de Ethernet, isto pode ser um número maior de dispositivos.

  • Utilize um servidor proxy (ou, melhor ainda, um engine de cache de Web) entre o R2 e o roteador do Gateway e permita que o proxy solicite todas as páginas de Internet.

  • Se o túnel GRE for executado em links cujo MTU possa ser maior do que 1500 bytes, além do cabeçalho do túnel, então a outra solução é aumentar o MTU para 1524 (1500 mais 24 para a sobrecarga do GRE) em todas as interfaces e links entre os roteadores de ponto final de GRE.

Outras Soluções

Se as opções acima não forem adequadas, as seguintes opções podem ser úteis.

  • Use o roteamento de política para limpar e definir o bit DF no pacote IP de dados (disponível no Cisco IOS® Release 12.1(6) e superior).

    interface ethernet0
     ...
     ip policy route-map clear-df
                      
                         !--- Esse comando é usado para identificar um mapa de roteamento 
                      
                      
                         !--- a ser usado para roteamento de políticas em uma interface   
                      
                      
                         !--- use o comando ip policy route-map em 
                      
                      
                         !--- modo de configuração da interface.
                      
    
    route-map clear-df permit 10
     match ip address 101
     set ip df 0
                      
                         !--- Este comando é utilizado para alterar o valor de bit Don't Fragment (DF)   
                      
                      
                         !--- no cabeçalho IP. Utilize este comando 
                      
                      
                         !--- no modo de configuração de mapa de roteamento.
                      
    
    access-list 101 permit tcp 10.1.3.0 0.0.0.255 any

    Isto permitirá que o pacote IP de dados seja fragmentado antes do encapsulamento de GRE. O host final receptor deve então remontar os pacotes de dados IP. Geralmente, isto não é um problema.

  • Altere o valor da opção MSS TCP em pacotes SYN que passem pelo roteador (disponível em IOS 12.2(4)T e superior). Isso reduz o valor da opção MSS no pacote SYN de TCP de forma que ele seja inferior ao valor no comando ip tcp adjust-mss value , 1436 neste caso (MTU menos o tamanho dos cabeçalhos IP, TCP e GRE). Os hosts da extremidade agora somente enviam pacotes TCP/IP inferiores a este valor.

    interface tunnel0
     ...
     ip tcp adjust-mss 1436
                      
                         !--- Este comando é utilizado para ajustar o tamanho máximo de segmento (MSS)   
                      
                      
                         !--- de pacotes TCP SYN que passem pelo roteador.
                      
                      
                         !--- O tamanho máximo de segmento está no intervalo de 500 a 1460. 
                      
                   
  • Uma opção final é aumentar o MTU IP na interface de túnel para 1500 (disponível no IOS 12.0 e superior). Entretanto, aumentar o túnel de MTU IP faz com que os pacotes do túnel sejam fragmentados porque o bit DF do pacote original não é copiado para o cabeçalho do pacote do túnel. Neste cenário, o roteador na outra extremidade do túnel GRE deve remontar o pacote de túnel GRE antes de poder remover o cabeçalho GRE e encaminhar o pacote interno. A remontagem do pacote IP é efetuada no modo de comutação de processo e usa memória. Portanto, essa opção pode reduzir significativamente o ritmo de transferência do pacote por meio do túnel GRE.

    interface tunnel0
       ...
    ip mtu 1500
                      
                         !--- Este comando é utilizado para definir o tamanho da unidade de transmissão máxima (MTU)   
                      
                      
                         !--- de pacotes IP enviados por meio de uma interface.    O tamanho mínimo
                      
                      
                         !--- que pode ser configurado é 128; o tamanho máximo depende do meio da interface.
                      
                   

Concluindo, a causa mais comum da impossibilidade de navegar a internet por um túnel GRE é o problema de fragmentação mencionado acima. A solução é permitir pacotes ICMP ou resolver o problema ICMP com qualquer uma das soluções acima.


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: 13725