Generic Routing Encapsulation
| Модель TCP/IP (RFC 1122) |
|---|
| Прикладний рівень |
| Транспортний рівень |
| Мережевий рівень |
| Канальний рівень |

GRE (англ. Generic Routing Encapsulation — загальна інкапсуляція маршрутів) - протокол тунелювання мережевих пакетів, розроблений компанією Cisco Systems. Його основне призначення - інкапсуляція пакетів мережевого рівня мережевої моделі OSI в IP пакети. Номер протокола в IP — 47 [1].
Тунелювання являє собою три протоколи:
- Пасажир - інкапсульований протокол (IP, CLNP, IPX, AppleTalk, DECnet Phase IV, XNS, VINES і Apollo);
- Протокол інкапсуляції (GRE);
- Транспортний протокол (IP);
Приклад застосування
- Використовується в поєднанні з 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-тунель, щоб уникнути надмірної фрагментації або втрати великих пакетів. [2][3]
Проблема NATу
Так як GRE є протоколом мережевого рівня і не використовує порти (як протоколи TCP або UDP), а однією з необхідних умов роботи механізму PAT є наявність «відкритого» порту, то робота протоколу GRE через міжмережевий екран може бути ускладнена [4].
Окремим випадком вирішення проблеми для протоколу PPTP є технологія PPTP Passthrough, в цьому випадку міжмережевий екран «дозволяє» вихідні ( клієнтські) підключення із захищеної мережі.
Примітки
- ↑ Номер протокола 47. (англ.)
- ↑ Про вирішення проблеми DF-біта і MTU на обладнанні cisco: [1]
- ↑ Про проблему фрагментації пакетів у GRE- і IPSEC-тунелях: [2]
- ↑ NAT and PPTP.
Посилання
- Проблема 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.