GRE (протокол)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

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

  • пассажир — инкапсулированный протокол (IP, CLNP, IPX, AppleTalk, DECnet Phase IV, XNS, VINES и Apollo)
  • протокол инкапсуляции (GRE)
  • транспортный протокол (UDP)
Пример работы 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

Ссылки[править | править вики-текст]