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

Универсальная инкапсуляция маршрутизации
Протокол связи
Цель Сетевое туннелирование
Разработчики) Cisco Systems
Введено 1994 г.
RFC (ы) RFC1701, RFC1702, RFC2784

Generic Routing Encapsulation ( GRE ) - это протокол туннелирования, разработанный Cisco Systems, который может инкапсулировать широкий спектр протоколов сетевого уровня в виртуальных двухточечных каналах или двухточечных каналах по сети Интернет-протокола .

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

  • В сочетании с PPTP для создания VPN .
  • В сочетании с IPsec VPN для передачи маршрутной информации между подключенными сетями.
  • В протоколах мобильности .
  • В интерфейсах A8 / A10 для инкапсуляции IP-данных в / из функции управления пакетами (PCF).
  • Linux и BSD могут устанавливать специальный IP через туннели GRE, которые совместимы с оборудованием Cisco.
  • Устройство, защищенное распределенным отказом в обслуживании (DDoS), на незащищенную конечную точку .

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

Модель OSI слой Протокол
5. Сессия X.225
4. Транспорт UDP
3. Сеть (инкапсулированная GRE) IPv4
Инкапсуляция GRE
3. Сеть IPv6
2. Канал передачи данных Ethernet
1. Физические Физический уровень Ethernet

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

IP как протокол доставки

Пакеты GRE, инкапсулированные в IP, используют протокол IP типа 47 .

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

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

Расширенная версия заголовка пакета GRE, как определено в RFC 2890 .

Биты 0–3 4–12 13-15 16–31
C K S Зарезервировано0 Версия Тип протокола
Контрольная сумма (необязательно) Зарезервировано 1 (необязательно)
Ключ (необязательно)
Порядковый номер (необязательно)
C
Бит контрольной суммы . Установите в 1, если присутствует контрольная сумма.
K
Ключевой бит. Установите в 1, если ключ присутствует.
S
Бит порядкового номера. Установите 1, если присутствует порядковый номер.
Зарезервировано0
Зарезервированные биты; установлен на 0.
Версия
Номер версии GRE; установлен на 0.
Тип протокола
Указывает тип протокола ether для инкапсулированной полезной нагрузки. (Для IPv4 это будет шестнадцатеричный код 0800.)
Контрольная сумма
Присутствует, если установлен бит C; содержит контрольную сумму для заголовка GRE и полезной нагрузки.
Зарезервировано1
Присутствует, если установлен бит C; установлен на 0.
Ключ
Присутствует, если установлен бит K; содержит значение ключа для конкретного приложения.
Последовательность чисел
Присутствует, если установлен бит S; содержит порядковый номер пакета GRE.

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

Стандартная структура заголовка пакета GRE , определенная в RFC 2784 и RFC 2890 , представлена ​​на диаграмме ниже.

0 Биты 1–12 13–15 16–31
C Зарезервировано0 Версия Тип протокола
Контрольная сумма (необязательно) Зарезервировано1 (необязательно)
C
Бит контрольной суммы . Установите в 1, если присутствует контрольная сумма.
Зарезервировано0
Зарезервированные биты; установлен на 0.
Версия
Номер версии GRE; установлен на 0.
Тип протокола
Указывает тип протокола ether для инкапсулированной полезной нагрузки. (Для IPv4 это будет шестнадцатеричный код 0800.)
Контрольная сумма
Присутствует, если установлен бит C; содержит контрольную сумму для заголовка GRE и полезной нагрузки.
Зарезервировано1
Присутствует, если установлен бит C; установлен на 0.

Стандартный заголовок пакета GRE (RFC 1701, устаревший)

Более новая структура заменила исходную структуру, как определено в RFC  1701 :

Биты 0–4 5–7 8–12 13–15 16–31
C р K S s Повторять Флаги Версия Тип протокола
Контрольная сумма (необязательно) Смещение (необязательно)
Ключ (необязательно)
Порядковый номер (необязательно)
Маршрутизация (необязательно, переменной длины)

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

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

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

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

Биты 0–4 5–7 8 9–12 13–15 16–31
C р K S s Повторять А Флаги Версия Тип протокола
Длина ключевой полезной нагрузки Ключевой идентификатор вызова
Порядковый номер (необязательно)
Номер подтверждения (необязательно)
C
Бит контрольной суммы . Для пакетов PPTP GRE это значение равно 0.
р
Бит маршрутизации. Для пакетов PPTP GRE это значение равно 0.
K
Ключевой бит. Для пакетов PPTP GRE установлено значение 1. (Все пакеты PPTP GRE несут ключ.)
S
Бит порядкового номера. Установите 1, если указан порядковый номер, указывающий на пакет данных PPTP GRE.
s
Бит строгого исходного маршрута. Для пакетов PPTP GRE это значение равно 0.
Повторять
Рекурсии управляющие биты. Для пакетов PPTP GRE они установлены в 0.
А
Присутствует номер подтверждения. Установите в 1, если предоставлен номер подтверждения, указывающий на пакет подтверждения PPTP GRE.
Флаги
Биты флагов. Для пакетов PPTP GRE они установлены на 0.
Версия
Номер версии GRE. Для пакетов PPTP GRE установлено значение 1.
Тип протокола
Для пакетов PPTP GRE это шестнадцатеричное значение 880B.
Длина ключевой полезной нагрузки
Содержит размер полезной нагрузки, не включая заголовок GRE.
Ключевой идентификатор вызова
Содержит идентификатор вызова однорангового узла для сеанса, которому принадлежит пакет.
Последовательность чисел
Присутствует, если установлен бит S; содержит порядковый номер полезной нагрузки GRE.
Номер подтверждения
Присутствует, если установлен бит A; содержит порядковый номер самого высокого пакета полезной нагрузки GRE, полученного отправителем.

Стандарты

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

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

использованная литература

внешние ссылки