GRE (протокол)

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 95.161.211.154 (обсуждение) в 11:32, 24 ноября 2021 (Для строчки "• транспортный протокол (UDP)" вместо текстового слова "UDP" вставлена ссылка на страницу Википедии по материалам относительно UDP.). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

GRE (англ. Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования сетевых пакетов, разработанный компанией Cisco Systems. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP-пакеты. Номер протокола в IP — 47.

Туннелирование подразумевает три протокола:

Пример работы GRE-туннеля. Между двумя маршрутизаторами A и B находится несколько маршрутизаторов, туннель позволяет обеспечить связь между сегментами сети 192.168.1.0/24 и 192.168.3.0/24 так, как если бы маршрутизаторы A и B были соединены прямым линком

Пример применения

Пример стека протоколов

Уровень модели OSI Протокол
5. Сеансовый X.225
4. Транспортный UDP
3. Сетевой (GRE-инкапсуляция) IPv6
Инкапсуляция GRE
3. Сетевой IPv4
2. Канальный Ethernet
1. Физический Ethernet

Как можно понять из схемы, инкапсуляция (не обязательно GRE) нарушает иерархию в модели OSI. Это явление можно рассматривать как разделитель между двумя стеками протоколов, где один выступает "поставщиком услуг" для другого.

Проблема DF-бита

В связи со служебным заголовком размер передаваемых данных внутри IP-пакета через GRE-туннель уменьшается при сохранении общего размера пакета. В IP-пакете предусмотрено наличие бита DF (do not fragment), запрещающего разделение пакета на несколько при передаче через среду с меньшим размером MTU. В этом случае пакет с размером полезной области данных (англ. payload), превышающим MTU IP пакета в GRE-туннеле, отбрасывается, что приводит к потерям пакетов при существенной нагрузке (проходят пакеты малого размера, такие как SYN-пакеты TCP, ICMP-сообщения (ping), но теряются пакеты с данными в TCP-потоке (то есть, соединение рвётся)). Для решения этой проблемы рекомендуется использовать path-mtu-discovery (определение TCP MSS, то есть максимального размера IP-пакетов на всём пути) при передаче данных через GRE-туннель, чтобы избежать избыточной фрагментации или потери больших пакетов.[1][2]

Проблема NATа

Так как GRE является протоколом сетевого уровня и не использует порты (в отличие от протоколов TCP и UDP), а одним из необходимых условий работы механизма PAT является наличие «открытого» порта, то работа протокола GRE через межсетевой экран может быть затруднена[3].

Частным случаем решения проблемы для протокола PPTP является технология PPTP Passthrough, в этом случае межсетевой экран «разрешает» исходящие (клиентские) подключения из защищённой сети.

Примечания

  1. О решении проблемы DF-бита и MTU на оборудовании cisco: [1]
  2. О проблеме фрагментации пакетов в GRE- и IPSEC-туннелях: [2]
  3. NAT and PPTP

Ссылки