RFC 1701 RFC 1702 Протокол
GRE (Generic Routing Encapsulation) обеспечивает механизм инкапсуляции
произвольных пакетов в произвольный транспортный протокол. В наиболее
общем случае система имеет пакеты, которые нужно инкапсулировать и
маршрутизировать (информационные пакеты). Информация (payload) сначала
инкапсулируется в пакет GRE, который может также содержать маршрут.
Полученный в результате пакет GRE инкапсулируется в пакет другого
протокола (протокол доставки). Протокол
GRE может с IP в качестве протокола доставки или информационного
(payload) протокола. Заголовок GRE, используемый протоколом PPTP,
незначительно отличается от заголовка, описанного в текущей
спецификации протокола GRE. Формат заголовка показан на рисунке. 16 | 32 | Флаги | Тип протокола | Контрольная сумма | Смещение | Ключ | Порядковый номер | Маршрутизация | Формат заголовка GRE Флаги Первые два октета заголовка содержат флаги GRE. Бит 0 является младшим, бит 12 - старшим. Используются следующие флаги: Контрольная сумма присутствует (бит 0) и содержит корректное значение. Маршрутизация присутствует (бит 1) - поля смещения и маршрутизации содержат корректные значения. Ключ присутствует (бит 2) в заголовке GRE. Порядковый номер присутствует (бит 3). Strict Source Route (бит 4) - рекомендуется устанавливать этот флаг только поле маршрутной информации содержит только маршруты Strict Source. Контроль рекурсии (биты 5-7) 3-битовое беззнаковое целое, указывающее допустимое число дополнительных инкапсуляций. Номер версии (биты 13-15) - 0. Тип протокола Тип протокола в поле содержимого (payload) пакета. В общем случае это поле указывает тип протокола Ethernet для данного пакета. Контрольная сумма Необязательное поле. Контрольная сумма IP (дополнение до 1) для заголовка GRE и содержимого пакета. Смещение Необязательное
поле. Показывает смещение в октетах от начала поля маршрутизации до
первого октета проверяемой записи Source Route. Ключ Необязательное
поле. 4-октетное число, которое было вставлено при инкапсуляции. Это
значение может использоваться получателем для аутентификации
отправителя пакета. Порядковый номер Необязательное
поле. 32-битовое целое число, вставляемое при инкапсуляции. Это
значение может использоваться получателем для поддержки порядка
передачи пакетов. Маршрутизация Необязательное поле. Содержит данные, которые могут использоваться при маршрутизации данного пакета. Расширенный заголовок GRE использует показанный на рисунке формат. 16 | 32 | Флаги | Тип протокола | Ключ (старшая часть) - размер содержимого | Ключ (младшая часть) - идентификатор вызова | Порядковый номер | Номер подтверждения | Формат расширенного заголовка GRE Флаги Поле флагов может принимать следующие значения: C (бит 0) - контрольная сумма присутствует. R (бит 1) - маршрутизация присутствует. K (бит 2) - ключ присутствует. S (бит 3) - порядковый номер присутствует. s (бит 4) - присутствует Strict source route. Recur (биты 5-7) - управление рекурсией. A (бит 8) - порядковый номер подтверждения присутствует. Flags (биты 9-12) - 0. Ver (биты 13-15) - 1 (расширение GRE). Тип протокола 880B. Ключ Необязательное поле. Использование этого поля определяется конкретной реализацией. Порядковый номер Необязательное поле. Порядковый номер содержимого. Номер подтверждения Необязательное
поле. Порядковый номер пакета GRE с максимальным номером, принятого
передающей стороной в данной пользовательской сессии.
|