Общая инкапсуляция маршрутизации

Протокол туннелирования Cisco
Общая инкапсуляция маршрутизации
Протокол связи
ЦельСетевое туннелирование
Разработчик(и)Системы Cisco
Введение1994 [1]
Запрос(ы) предложений (RFC)1701, 1702, 2784

Универсальная инкапсуляция маршрутизации ( GRE ) — это протокол туннелирования , разработанный компанией Cisco Systems , который может инкапсулировать широкий спектр протоколов сетевого уровня внутри виртуальных соединений «точка-точка» или соединений «точка-многоточка» через сеть Интернет-протокола . [2]

Примеры использования

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

Уровень модели OSIПример протокола
7. ПрименениеHTTP
4. ТранспортТКП
3. Сеть (инкапсулированная GRE)IPv4
ИнкапсуляцияГРЕ
3. СетьIPv6
2. Канал передачи данныхEthernet
1. ФизическийФизический уровень Ethernet

Основываясь на принципах иерархии протоколов в OSI, инкапсуляция протоколов, а не конкретно GRE, нарушает порядок иерархии. Ее можно рассматривать как разделитель между двумя различными стеками протоколов, один из которых выступает в качестве носителя для другого.

Протоколы доставки

Пакеты GRE, которые инкапсулируются непосредственно в IP , используют тип протокола IP 47 в поле протокола заголовка IPv4 [3] или в поле следующего заголовка заголовка IPv6 . [4]

Из соображений производительности GRE также может быть инкапсулирован в пакеты UDP. [5] Более высокая пропускная способность может быть достигнута за счет использования многопутевой маршрутизации с равной стоимостью .

Заголовок пакета

Расширенный заголовок пакета GRE (RFC 2890)

Расширенная версия заголовка пакета GRE [6] представлена ​​ниже:

Расширенный формат заголовка GRE
ОфсетыОктет0123
ОктетКусочек012345678910111213141516171819202122232425262728293031
00СКСЗарезервировано 0ВерсияТип протокола
432Контрольная сумма (необязательно)Зарезервировано 1 (необязательно)
864Ключ (необязательно)
1296Порядковый номер (необязательно)
С (1 бит)
Бит контрольной суммы . Установите в 1, если контрольная сумма присутствует.
К (1 бит)
Бит ключа. Установите на 1, если ключ присутствует.
С (1 бит)
Бит порядкового номера. Установите в 1, если присутствует порядковый номер.
Зарезервировано 0 (9 бит)
Зарезервированные биты; установлены на 0.
Версия (3 бита)
Номер версии GRE; установлен на 0.
Тип протокола (16 бит)
Указывает тип протокола Ether инкапсулированной полезной нагрузки. (Для IPv4 это будет шестнадцатеричный 0800.)
Контрольная сумма (16 бит)
Присутствует, если установлен бит C ; содержит контрольную сумму для заголовка и полезной нагрузки GRE.
Зарезервировано 1 (16 бит)
Присутствует, если бит C установлен; установлен в 0.
Ключ (32 бита)
Присутствует, если установлен бит K ; содержит значение ключа, специфичное для приложения.
Порядковый номер (32 бита)
Присутствует, если установлен бит S ; содержит порядковый номер для пакета GRE.

Стандартный заголовок пакета GRE (RFC 2784)

Стандартная структура заголовка пакета GRE [7] представлена ​​на схеме ниже.

Стандартный формат заголовка GRE
ОфсетыОктет0123
ОктетКусочек012345678910111213141516171819202122232425262728293031
00СЗарезервировано 0ВерсияТип протокола
432Контрольная сумма (необязательно)Зарезервировано 1 (необязательно)
С (1 бит)
Бит контрольной суммы . Установите в 1, если контрольная сумма присутствует.
Зарезервировано 0 (12 бит)
Зарезервированные биты; установлены на 0.
Версия (3 бита)
Номер версии GRE; установлен на 0.
Тип протокола (16 бит)
Указывает тип протокола Ether инкапсулированной полезной нагрузки. (Для IPv4 это будет шестнадцатеричное значение 0x0800; для IPv6 это будет 0x86DD. [4] )
Контрольная сумма (16 бит)
Присутствует, если установлен бит C ; содержит контрольную сумму для заголовка и полезной нагрузки GRE.
Зарезервировано 1 (16 бит)
Присутствует, если установлен бит C ; его содержимое установлено в 0.

Оригинальный заголовок пакета GRE (RFC 1701)

Новая структура заменила первоначальную структуру: [1]

Оригинальный формат заголовка GRE
ОфсетыОктет0123
ОктетКусочек012345678910111213141516171819202122232425262728293031
00СРКСсПовторятьФлагиВерсияТип протокола
432Контрольная сумма (необязательно)Смещение (необязательно)
864Ключ (необязательно)
1296Порядковый номер (необязательно)
16128Маршрутизация (опционально, переменная длина)

Исходный GRE RFC определял дополнительные поля в заголовке пакета, которые в текущем стандарте устарели:

С (1 бит)
Бит контрольной суммы . Установите в 1, если контрольная сумма присутствует.
Р (1 бит)
Бит маршрутизации. Установите на 1, если присутствует информация о маршрутизации и смещении.
К (1 бит)
Бит ключа. Установите на 1, если ключ присутствует.
С (1 бит)
Бит порядкового номера. Установите в 1, если присутствует порядковый номер.
с (1 бит)
Строгий бит исходного маршрута.
Повторять (3 бита)
Биты управления рекурсией .
Флаги (5 бит)
Зарезервировано для будущего использования, установлено на 0.
Версия (3 бита)
Установите на 0.
Тип протокола (16 бит)
Указывает тип эфирного протокола инкапсулированной полезной нагрузки.
Контрольная сумма (16 бит)
Присутствует, если установлен бит C ; содержит контрольную сумму для заголовка и полезной нагрузки GRE.
Смещение (16 бит)
Присутствует, если установлен бит R или бит C ; содержит действительную информацию, только если установлен бит R. Поле смещения, указывающее смещение в поле маршрутизации к активной записи исходного маршрута.
Ключ (32 бита)
Присутствует, если установлен бит K ; содержит значение ключа, специфичное для приложения.
Порядковый номер (32 бита)
Присутствует, если установлен бит S ; содержит порядковый номер для пакета GRE.
Маршрутизация (переменная)
Присутствует, если установлен бит R ; содержит список записей исходного маршрута, поэтому имеет переменную длину.

Заголовок пакета PPTP GRE

Протокол туннелирования точка-точка (PPTP) [8] использует вариант структуры заголовка пакета GRE, представленный ниже. PPTP создает туннель GRE, через который отправляются пакеты PPTP GRE.

Формат заголовка PPTP GRE
ОфсетыОктет0123
ОктетКусочек012345678910111213141516171819202122232425262728293031
00СРКСсПовторятьАФлагиВерсияТип протокола
432Длина ключевой полезной нагрузкиКлючевой идентификатор вызова
864Порядковый номер (необязательно)
1296Номер подтверждения (необязательно)
С (1 бит)
Бит контрольной суммы . Для пакетов PPTP GRE он установлен на 0.
Р (1 бит)
Бит маршрутизации. Для пакетов PPTP GRE он установлен на 0.
К (1 бит)
Бит ключа. Для пакетов PPTP GRE он установлен на 1. (Все пакеты PPTP GRE содержат ключ.)
С (1 бит)
Бит порядкового номера. Установите на 1, если указан порядковый номер, что указывает на пакет данных PPTP GRE.
с (1 бит)
Строгий бит исходного маршрута. Для пакетов PPTP GRE он установлен на 0.
Повторять (3 бита)
Биты управления рекурсией . Для пакетов PPTP GRE они установлены на 0.
А (1 бит)
Присутствует номер подтверждения. Установите на 1, если указан номер подтверждения, что указывает на пакет подтверждения PPTP GRE.
Флаги (4 бита)
Биты флагов. Для пакетов PPTP GRE они установлены на 0.
Версия (3 бита)
Номер версии GRE. Для пакетов PPTP GRE это значение равно 1.
Тип протокола (16 бит)
Для пакетов PPTP GRE это значение равно шестнадцатеричному 880B.
Длина полезной нагрузки ключа (16 бит)
Содержит размер полезной нагрузки, не включая заголовок GRE.
Идентификатор вызова клавиши (16 бит)
Содержит идентификатор вызова партнера для сеанса, к которому принадлежит пакет.
Порядковый номер (32 бита)
Присутствует, если установлен бит S; содержит порядковый номер полезной нагрузки GRE.
Номер подтверждения (32 бита)
Присутствует, если установлен бит A; содержит порядковый номер наивысшего пакета полезной нагрузки GRE, полученного отправителем.

Стандарты

  • RFC 1701: Общая инкапсуляция маршрутизации (GRE) (информационный)
  • RFC 1702: Общая инкапсуляция маршрутизации в сетях IPv4 (информационное)
  • RFC 2637: Протокол туннелирования точка-точка (информационный)
  • RFC 2784: Generic Routing Encapsulation (GRE) (предлагаемый стандарт, обновленный RFC 2890)
  • RFC 2890: Расширения ключей и порядковых номеров для GRE (предлагаемый стандарт)
  • RFC 8086: Инкапсуляция GRE-in-UDP (предлагаемый стандарт)

Смотрите также

Ссылки

  1. ^ ab S. Hanks; T. Li; D. Farinacci; P. Traina (октябрь 1994 г.). Generic Routing Encapsulation (GRE). Сетевая рабочая группа. doi : 10.17487/RFC1701 . RFC 1701. Информационный.
  2. ^ US 7801021B1, Николаос Триантафиллис; Роберт Дж. Ордеманн и Саймон Д. Барбер, «Generic routing encapsulation tunnel keepalives», выпущенный 21 сентября 2010 г., переданный Cisco Technology Inc. 
  3. ^ S. Hanks; T. Li; D. Farinacci; P. Traina (октябрь 1994 г.). Generic Routing Encapsulation over IPv4 networks. Network Working Group. doi : 10.17487/RFC1702 . RFC 1702. Информационный.
  4. ^ ab C. Pignataro; R. Bonica; S. Krishnan (октябрь 2015 г.). Поддержка IPv6 для универсальной инкапсуляции маршрутизации (GRE). Internet Engineering Task Force . doi : 10.17487/RFC7676 . ISSN  2070-1721. RFC 7676. Предлагаемый стандарт.
  5. ^ E. Crabbe; E. Crabbet; T. Herbert (март 2017 г.). L. Yong (ред.). Инкапсуляция GRE-в-UDP. Internet Engineering Task Force . doi : 10.17487/RFC8086 . ISSN  2070-1721. RFC 8086. Предлагаемый стандарт.
  6. ^ G. Dommety (сентябрь 2000 г.). Расширения ключей и порядковых номеров в GRE. Сетевая рабочая группа. doi : 10.17487/RFC2890 . RFC 2890. Предлагаемый стандарт.
  7. ^ D. Farinacci; T. Li; S. Hanks; D. Meyer; P. Traina (март 2000 г.). Generic Routing Encapsulation (GRE). Сетевая рабочая группа. doi : 10.17487/RFC2784 . RFC 2784. Предложенный стандарт. Обновлен RFC 2890.
  8. ^ K. Hamzeh; G. Pall; W. Verthein; J. Taarud; W. Little; G. Zorn (июль 1999 г.). Протокол туннелирования точка-точка (PPTP). Сетевая рабочая группа. doi : 10.17487/RFC2637 . RFC 2637. Информационный.
  • Общая инкапсуляция маршрутизации, домашняя страница подпротокола на сайте Cisco
  • Generic Routing Encapsulation Архивировано 29 декабря 2018 г. на Wayback Machine , запись в Cisco DocWiki (ранее известном как «Справочник по технологиям межсетевого взаимодействия»)
Взято с "https://en.wikipedia.org/w/index.php?title=Generic_routing_encapsulation&oldid=1249941346"