O que é tunelamento GRE? | Como funciona o protocolo GRE

O Encapsulamento Genérico de Roteamento, ou GRE, é um protocolo para encapsular pacotes de dados dentro de pacotes de dados secundários para configurar uma conexão de rede direta ponto a ponto.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Entenda o que é GRE
  • Saiba como funciona o tunelamento
  • Saiba como o GRE afeta os processos de rede

Copiar o link do artigo

O que é GRE?

O Encapsulamento Genérico de Roteamento, ou GRE, é um protocolo para encapsular pacotes de dados que usam um protocolo de roteamento dentro dos pacotes de outro protocolo. "Encapsular" significa envolver um pacote de dados dentro de outro pacote de dados, é como colocar uma caixa dentro de outra caixa. O GRE é uma maneira de configurar uma conexão direta ponto a ponto em uma rede, com o objetivo de simplificar as conexões entre redes separadas. Funciona com uma variedade de protocolos de camadas de rede.

O GRE permite o uso de protocolos que normalmente não são suportados por uma rede, porque os pacotes são agrupados em outros pacotes que usam protocolos com suporte. Para entender como isso funciona, pense na diferença entre um carro e uma balsa. Um carro viaja por estradas em terra, enquanto uma balsa viaja sobre a água. Um carro normalmente não pode viajar na água — no entanto, um carro pode ser carregado em uma balsa para isso.

Nesta analogia, o tipo de terreno é como a rede que suporta certos protocolos de roteamento e os veículos são como pacotes de dados. O GRE é uma maneira de carregar um tipo de pacote dentro de outro tipo de pacote para que o primeiro pacote possa cruzar uma rede que normalmente não poderia cruzar, assim como um tipo de veículo (o carro) é carregado em outro tipo de veículo (a balsa) para atravessar terrenos que de outra forma não poderia.

Por exemplo, suponha que uma empresa precise configurar uma conexão entre as redes locais (LANs) em seus dois escritórios diferentes. Ambas as LANs usam a versão mais recente do protocolo da internet, IPv6. Mas para ir de uma rede de escritório para outra, o tráfego deve passar por uma rede gerenciada por terceiros — que está um pouco desatualizada e só suporta o protocolo IPv4 mais antigo.

Com o GRE, a empresa poderia enviar o tráfego por essa rede encapsulando os pacotes de IPv6 dentro de pacotes de IPv4. Voltando à analogia, os pacotes de IPv6 são o carro, os pacotes de IPv4 são a balsa e a rede de terceiros é a água.

O que significa tunelamento GRE?

Encapsular pacotes dentro de outros pacotes é chamado de "tunelamento". Os túneis GRE geralmente são configurados entre dois roteadores, com cada roteador atuando como uma extremidade do túnel. Os roteadores são configurados para enviar e receber pacotes GRE diretamente entre si. Quaisquer roteadores entre esses dois roteadores não abrirão os pacotes encapsulados; eles apenas fazem referência aos cabeçalhos que cercam os pacotes encapsulados para encaminhá-los.

Para entender por que isso é chamado de "tunelamento", podemos mudar um pouco a analogia. Se um carro precisa passar do Ponto A de um lado de uma montanha para o Ponto B do outro lado, a maneira mais eficiente é simplesmente atravessar a montanha. No entanto, carros comuns não são capazes de atravessar rochas sólidas. Como resultado, o carro tem que percorrer todo o caminho ao redor da montanha para ir do Ponto A ao Ponto B.

Mas imagine que um túnel foi criado através da montanha. Agora, o carro pode ir direto do Ponto A ao Ponto B, o que é muito mais rápido e não poderia ser feito sem o túnel.

Agora, pense no ponto A como um dispositivo em rede, no ponto B como outro dispositivo em rede, na montanha como a rede entre os dois dispositivos e no carro como os pacotes de dados que precisam ir do ponto A ao ponto B. Imagine que essa rede não suporta o tipo de pacotes de dados que os dispositivos nos Pontos A e B precisam trocar. Como um carro tentando atravessar uma montanha, os pacotes de dados não podem passar e podem precisar percorrer um caminho muito mais longo por meio de redes adicionais.

Mas o GRE cria um "túnel" virtual através da rede "montanha" para permitir a passagem dos pacotes de dados. Assim como um túnel cria uma maneira de os carros passarem direto pela terra, o GRE (e outros protocolos de tunelamento) cria uma maneira de os pacotes de dados passarem por uma rede com a qual não são compatíveis.

O que consta em um cabeçalho GRE?

Todos os dados enviados por uma rede são divididos em pedaços menores chamados pacotes e todos os pacotes têm duas partes: a carga e o cabeçalho. A carga é o teor real do pacote, os dados que estão sendo enviados. O cabeçalho contém informações sobre a origem do pacote e a qual grupo de pacotes ele pertence. Cada protocolo de rede anexa um cabeçalho a cada pacote.

O GRE adiciona dois cabeçalhos a cada pacote: o cabeçalho GRE, com 4 bytes de comprimento, e um cabeçalho IP, com 20 bytes. O cabeçalho GRE indica o tipo de protocolo usado pelo pacote encapsulado. O cabeçalho IP encapsula o cabeçalho e a carga do pacote original. Isso significa que um pacote GRE geralmente tem dois cabeçalhos IP: um para o pacote original e outro adicionado pelo protocolo GRE. Somente os roteadores em cada extremidade do túnel GRE farão referência ao cabeçalho IP original não GRE.

Como o uso do GRE afeta os requisitos de MTU e MSS?

A MTU e o MSS são medidas que limitam o tamanho dos pacotes de dados que trafegam em uma rede, assim como um limite de peso para automóveis que atravessam uma ponte. A MTU mede o tamanho total de um pacote, incluindo cabeçalhos; O MSS mede apenas a carga. Os pacotes que excedem a MTU são fragmentados ou divididos em pedaços menores, para que possam caber na rede.

Como qualquer protocolo, o uso do GRE adiciona alguns bytes ao tamanho dos pacotes de dados. Isso deve ser levado em consideração nas configurações de MSS e MTU para pacotes. Se a MTU for de 1.500 bytes e o MSS for de 1.460 bytes (contando o tamanho dos cabeçalhos IP e TCP necessários), a adição de cabeçalhos GRE de 24 bytes fará com que os pacotes excedam a MTU:

1.460 bytes [carga] + 20 bytes [cabeçalho TCP] + 20 bytes [cabeçalho IP] + 24 bytes [cabeçalho GRE + cabeçalho IP] = 1.524 bytes

Como resultado, os pacotes serão fragmentados. A fragmentação reduz os tempos de entrega de pacotes e aumenta a quantidade de poder de computação usada, porque os pacotes que excedem a MTU devem ser divididos e, em seguida, remontados.

Isso pode ser evitado reduzindo o MSS para acomodar os cabeçalhos GRE. Se o MSS for definido como 1.436 em vez de 1.460, os cabeçalhos GRE serão contabilizados e os pacotes não excederão a MTU de 1.500:

1.436 bytes [carga] + 20 bytes [cabeçalho TCP] + 20 bytes [cabeçalho IP] + 24 bytes [cabeçalho GRE + cabeçalho IP] = 1.500 bytes

Embora a fragmentação seja evitada, o resultado é que as cargas são um pouco menores, o que significa que serão necessários pacotes extras para entregar os dados. Por exemplo, se o objetivo for entregar 150.000 bytes de conteúdo (ou cerca de 150 kB) e se a MTU estiver definida para 1.500 e nenhum outro protocolo de camada 3 for usado, compare quantos pacotes são necessários quando o GRE é usado em relação a quando ele não é usado:

  • Sem GRE, MSS de 1.460: 103 pacotes
  • Com GRE, MSS de 1.436: 105 pacotes

Os dois pacotes extras adicionam milissegundos de atraso à transferência de dados. No entanto, o uso do GRE pode permitir que esses pacotes tomem caminhos de rede mais rápidos do que poderiam, o que pode compensar o tempo perdido.

Como o GRE é usado nos ataques DDoS?

Em um ataque de Negação de Serviço Distribuída (DDoS), um invasor tenta sobrecarregar um servidor ou rede de destino com tráfego de rede indesejado — algo como bombardear um restaurante com pedidos de entrega falsas até que ele não possa fornecer o serviço a clientes legítimos.

O GRE pode ser usado para realizar ataques DDoS, assim como qualquer protocolo de rede. Um dos maiores ataques DDoS registrados ocorreu em setembro de 2016. Ele foi direcionado contra o site de um pesquisador de segurança e foi realizado usando a botnet Mirai. O site estava sobrecarregado com pacotes que usavam o protocolo GRE.

Ao contrário de alguns outros protocolos, a origem dos pacotes GRE não pode ser falsificada ou falsificado. (Consulte nossos artigos sobre ataques de inundações SYN e amplificação de DNS para exemplos de protocolos para os quais esse não é o caso). Para realizar um grande ataque DDoS GRE, o invasor deve controlar uma grande quantidade de dispositivos de computação reais em uma botnet.

Como a Cloudflare protege contra os ataques DDoS GRE?

A Cloudflare protege contra ataques DDoS na camada de rede de todos os tipos, incluindo ataques usando GRE. O Cloudflare Magic Transit protege as redes locais, em nuvem e híbridas, estendendo os recursos de mitigação de DDoS da rede global da Cloudflare para a infraestrutura de rede. Qualquer tráfego de ataque de rede é filtrado sem diminuir a velocidade do tráfego legítimo.

Como a Cloudflare usa o tunelamento GRE?

Para que o Magic Transit proteja e acelere o tráfego de rede dos clientes, a Rede Cloudflare deve estar conectada com segurança às redes internas dos clientes. O tunelamento GRE é extremamente útil para essa finalidade. Por meio do tunelamento GRE, o Magic Transit pode se conectar diretamente às redes dos clientes da Cloudflare com segurança pela internet pública.

O Magic Transit é construído na Rede Anycast da Cloudflare. Isso significa que qualquer servidor da Cloudflare pode servir como endpoint para um túnel GRE usando um único endereço de IP, eliminando pontos únicos de falha para conexões de túnel GRE (a Cloudflare também usa essa abordagem para conectar clientes da Magic WAN). Para saber mais sobre como o Magic Transit funciona, consulte a nossa página de produto Magic Transit.