GRE (протокол)
GRE (англ. Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования сетевых пакетов, разработанный компанией Cisco Systems. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP-пакеты. Номер протокола в IP — 47.
Туннелирование подразумевает три протокола:
- пассажир — инкапсулированный протокол (IP, CLNP, IPX, AppleTalk, DECnet Phase IV, XNS, VINES и Apollo)
- протокол инкапсуляции (GRE)
- транспортный протокол (UDP)
Пример применения
- Используется в сочетании с PPTP для создания виртуальных частных сетей.
- Применяется в технологии WDS для координации действий точек доступа и контроллера WDS.
- Используется в технологиях мобильного IP
Пример стека протоколов
Уровень модели 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, в этом случае межсетевой экран «разрешает» исходящие (клиентские) подключения из защищённой сети.
Примечания
- ↑ О решении проблемы DF-бита и MTU на оборудовании cisco: [1] Архивная копия от 29 июня 2013 на Wayback Machine
- ↑ О проблеме фрагментации пакетов в GRE- и IPSEC-туннелях: [2] Архивная копия от 26 июня 2013 на Wayback Machine
- ↑ NAT and PPTP . Дата обращения: 3 февраля 2013. Архивировано 7 октября 2013 года.
Ссылки
- Проблема DF-бита и фрагментации в GRE туннелях
- Создание VPN GRE-туннеля в Linux
- RFC 1701 — Generic Routing Encapsulation (GRE), октябрь 1994
- RFC 1702 — Generic Routing Encapsulation over IPv4 networks, октябрь 1994
- RFC 2784 — Generic Routing Encapsulation (GRE), июль 2000
- RFC 2890 — Key and Sequence Number Extensions to GRE, сентябрь 2000