GRE (англ. Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования сетевых пакетов, разработанный компанией Cisco Systems. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP-пакеты. Номер протокола в IP — 47.
IP/GRE является самостоятельным транспортным протоколом, и не опирается на протоколы типа TCP или UDP. Размер заголовка GRE составляет 4 байта, что совместно с заголовком IP в 20 байт уменьшает MTU полезной нагрузки в виде инкапсулируемых данных на 24 байта.
Туннелирование подразумевает три протокола:
- пассажир — инкапсулированный протокол (IP, CLNP, IPX, AppleTalk, DECnet Phase IV, XNS, VINES и Apollo)
- протокол инкапсуляции (GRE)
- сетевой протокол (IP)
Так как GRE является протоколом транспортного уровня, который не использует порты (в отличие от протоколов TCP и UDP), а одним из необходимых условий работы механизма NAT является наличие «открытого» порта, то работа протокола GRE через межсетевой экран может быть затруднена.
Для GRE, работающего совместно с PPTP эта задача решается, благодаря тому, что PPTP согласует оконечные точки соединения и маршрутизатор совершающий NAT, с технологией PPTP Passthrough или ее разновидностью может построить в таблице трансляции соответствующее правило.
Для чистого GRE этот способ не подходит, поскольку оконечные точки указываются непосредственно при конфигурировании протокола, и если в одну сторону (клиент за NAT) пакеты еще могут быть транслированы, то обратный трафик не сможет быть транслирован, поскольку в своём составе GRE не имеет инструментов для сопоставления сеанса связи. Единственное решение может быть только статическая настройка NAT.
Вместе с протоколом WCCP, протокол GRE применяется в программе для организации прокси-сервера squid.
Преимущества протокола GRE:
1. Позволяет управлять трафиком и передавать данные между удаленными сетями через незащищенные сети.
2. Обеспечивает шифрование данных и безопасную передачу информации.
3. Поддерживает мультикаст и многоадресную передачу данных.
4. Позволяет создавать виртуальные частные сети (VPN) для безопасного доступа к удаленным сетям.
Недостатки протокола GRE:
1. Повышает задержку и увеличивает нагрузку на сеть из-за увеличения размера пакетов за счет добавления заголовков протокола GRE.
2. Не обеспечивает механизмов аутентификации и контроля доступа к данным, нуждающихся в дополнительной настройке и использовании дополнительных протоколов.
3. Может требовать дополнительного конфигурирования и поддержки со стороны сетевых устройств для корректной работы и обеспечения безопасности передачи данных по сети.