ID do artigo: 241251 - Última revisão: segunda-feira, 7 de agosto de 2006 - Revisão: 2.0

Encapsulamentos VPN - descrição e uso do pacote 47 do protocolo GRE

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

O protocolo GRE é usado em conjunto com o protocolo PPTP para criar VPNs (Redes Virtuais Privadas) entre clientes ou entre clientes e servidores.

Mais Informações

Uma implementação conhecida é usar a tecnologia VPN da Microsoft entre dois servidores RRAS (serviço de Roteamento e Acesso Remoto) configurados para o roteamento LAN a LAN, conforme mostrado abaixo:
Lcliente           L-RRAS ===== VPN ===== R-RRAS           Rcliente
    |      IP      |  |      Internet     |  |      IP      |
     --------------    -------------------    --------------
				
Para melhor entender o uso do protocolo GRE na criação e no uso de VPNs, é útil compreender a estrutura do pacote. Depois que a sessão de controle PPTP for estabelecida, o protocolo GRE será usado no encapsulamento dos dados ou da carga de maneira segura. Para obter informações adicionais sobre o protocolo PPTP, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
241252  (http://support.microsoft.com/kb/241252/PT-BR/ ) Encapsulamentos VPN - descrição e uso do pacote do protocolo PPTP
O formato do pacote GRE usado pela Microsoft no encapsulamento dos dados tem a seguinte forma geral:
   +-----------------------------------+
   | Cabeçalho D/L (vínculo de dados)            | 
   +-----------------------------------+
   | Cabeçalho IP                         | 
   +-----------------------------------+
   | Cabeçalho GRE                        | 
   +-----------------------------------+
   | Cabeçalho PPP                        | 
   +-----------------------------------+
   | Carga PPP Criptografada             | 
   +-----------------------------------+
   | Trailer D/L                 | 
   +-----------------------------------+
				
Os dados ou a carga que passarão pelo encapsulamento recebem um cabeçalho de protocolo PPP e são colocados em um pacote GRE. O pacote GRE carrega os dados entre os dois pontos de extremidade do encapsulamento. Depois de chegar ao destino final (o ponto de extremidade do encapsulamento), o pacote GRE é descartado e o pacote encapsulado é transmitido para o seu destino final.

Se você usar o diagrama no início desta seção, um pacote de protocolo IP de Lcliente é transmitido pela primeira vez para o servidor L-RRAS. O pacote IP é criptografado, recebe um cabeçalho PPP adicional e é colocado em um pacote GRE. O diagrama abaixo diz "Stub PPP", não "Cabeçalho PPP", porque o cabeçalho PPP também está criptografado com os dados. Embora não possa vê-lo, o protocolo GRE está configurado para reconhecer a existência de um cabeçalho PPP. O pacote GRE com os dados encapsulados e criptografados é enviado pela Internet com o destino final "Servidor R-RRAS". O servidor R-RRAS retira os cabeçalhos GRE e PPP e transmite os dados criptografados (pacote IP) ao Rcliente.
Lcliente           L-RRAS ===== VPN ===== R-RRAS           Rcliente
    |      IP      |  |      Internet     |  |      IP      |
     --------------    -------------------    --------------
    Cabeçalho D/L             Cabeçalho D/L            Cabeçalho D/L
    Cabeçalho IP              Cabeçalho IP             Cabeçalho IP
    Carga                Cabeçalho GRE            Carga
                           Stub PPP
                           Carga (criptografada)
				

O cabeçalho do protocolo

Para entender como o protocolo GRE funciona como um protocolo de encapsulamento, é necessário analisar o formato do cabeçalho do protocolo. O cabeçalho do pacote GRE, conforme implementado pela Microsoft, tem a seguinte forma:
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |C|R|K|S|s|Recur|A| Sinalizadores | Ver |         Tipo de Protocolo         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Chave (HW) Comprimento da Carga    |       Chave (LW) Código da Chamada        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  Número de Seqüência (Opcional)                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  Número de Confirmação (Opcional)                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
				
A seguinte tabela lista todos os campos com uma explicação mais detalhada da função e os parâmetros que podem ser usados.
+-----------------------------------------------------------------------+
| C     | (Bit 0) Soma de Verificação presente. Definir para zero (0).                    | 
+-----------------------------------------------------------------------+
| R     | (Bit 1) Roteamento presente. Definir para zero (0).                     | 
+-----------------------------------------------------------------------+
| K     | (Bit 2) Chave presente. Definir para um (1).                          | 
+-----------------------------------------------------------------------+
|       | (Bit 3) Número de seqüência presente. Definir para um (1) em caso de carga  |
| S     | (dados) pacote presente. Definir para zero (0) caso não haja carga   |
|       | presente (Pacote GRE apenas de confirmação).               | 
+-----------------------------------------------------------------------+
| s     | (Bit 4) Rota restrita de origens presente. Definir para zero (0).         | 
+-----------------------------------------------------------------------+
| Recur | (Bits 5-7) Controle de recursão. Definir para zero (0).                | 
+-----------------------------------------------------------------------+
|       | (Bit 8) Número de seqüência de confirmação presente. Definir para um (1)| 
| A     | caso o pacote contenha Número de confirmação a ser usado na       |
|       | confirmação de dados transmitidos anteriormente.                    | 
+-----------------------------------------------------------------------+
| Sinalizadores | (Bits 9-12) Devem ser definidos para zero (0).                          | 
+-----------------------------------------------------------------------+
| Ver   | (Bits 13-15) Devem conter 1 (GRE avançado).                   | 
+-----------------------------------------------------------------------+
|=======================================================================|
+-----------------------------------------------------------------------+
| Tipo de Protocolo           | Definir para hexadecimal 880B (para PPP).                  | 
+-----------------------------------------------------------------------+
| Chave (HW) Comprimento da carga | (2 octetos principais da chave) Tamanho da carga, |
|                         | sem incluir o cabeçalho GRE.               | 
+-----------------------------------------------------------------------+
| Chave (LW) Código da chamada        | (2 octetos inferiores) Contém o código da chamada do mesmo nível |
|                         | para a sessão à qual esse pacote        | 
|                         | pertence.                                    |
+-----------------------------------------------------------------------+
| Número de seqüência         | Contém o número de seqüência da carga.|
|                         | Presente caso o bit S (Bit 3) seja um (1).        | 
+-----------------------------------------------------------------------+
|                         | Contém o número de seqüência do mais elevado |
| Número de confirmação   | pacote GRE numerado recebido pelo mesmo nível de envio |
|                         | dessa sessão do usuário. Presente caso o bit A|
|                         | (Bit 8) seja um (1).                         | 
+-----------------------------------------------------------------------+
				

Aprimoramentos

O protocolo GRE tem vários aprimoramentos importantes. Estes são da RFC (Request for Comments) 2637.
  • Um campo Número de confirmação. Ele é usado para determinar se um determinado pacote GRE ou um conjunto de pacotes chegou na extremidade remota do encapsulamento. Este recurso de confirmação não é usado em conjunto com nenhuma retransmissão de pacotes de dados do usuário. Na verdade, ele é usado para determinar em que taxa os pacotes de dados do usuário devem ser transmitidos sobre o encapsulamento para uma determinada sessão do usuário.
  • Portabilidade de encapsulamento. A seção de carga contém um pacote de dados PPP sem nenhum elemento de delimitação de quadros específico de mídia.
  • Rastreamento do número de seqüência. Os números de seqüência envolvidos são números de seqüência por pacote. O número de seqüência para cada sessão do usuário é definido para zero na inicialização da sessão. Todos os pacotes enviados para uma determinada sessão do usuário que contêm uma carga (e têm os bits S ou 3 definidos para um) são atribuídos ao próximo número da seqüência dessa sessão.
  • Uso de confirmações acumuladas O protocolo permite que as confirmações sejam carregadas com os dados e torna o protocolo geral mais eficiente, que por sua vez exige menos armazenamento em buffer dos pacotes.

Rastreamentos do Monitor de rede

É necessário observar várias coisas ao olhar um rastreamento do Monitor de rede. O resumo dos sinalizadores é feito do valor hexadecimal dos primeiros 16 bits. No pacote de amostra abaixo, o resumo dos sinalizadores é de 12.417 ou 0x3081h. O analisador do Monitor de rede Microsoft não representa o número da versão no campo do bit Resumo de sinalizadores, mas está lá. Por exemplo, imagine o seguinte pacote de amostra:
GRE: Resumo de sinalizadores = 12417 (0x3081)
          GRE: 0............... = Soma de Verificação ausente
          GRE: .0.............. = Roteamento ausente
          GRE: ..1............. = Chave presente
          GRE: ...1............ = Número de seqüência presente
          GRE: ....0........... = Rota restrita de origens ausente
          GRE: ........1....... = Número de seqüência de confirmação presente
      GRE: Controle de recursão = 0 (0x0)
      GRE: Ver = 1 (0x1)
      GRE: Tipo de protocolo = 0x880B
      GRE: Comprimento da chave = 90 (0x5A)
      GRE: Código da chamada da chave = 32768 (0x8000)
      GRE: Número de seqüência = 16 (0x10)
      GRE: Número de confirmação = 15 (0xF)
				
Os primeiros 8 bits são 00110000, o que representa um valor hexadecimal igual a 30. Os próximos 8 bits são 10000001, o que representa um valor hexadecimal igual a 81. Por isso, o resumo de sinalizadores é 0x3081h ou 12.417 em decimais.

A informação contida neste artigo aplica-se a:
  • Microsoft Windows NT Server 4.0 Terminal Server
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows NT Server 4.0 Standard Edition
Palavras-chave: 
kbinfo kbnetwork KB241251