Протокол GRE

GRE (Generic Routing Encapsulation) — протокол туннелирования сетевых пакетов, разработанный фирмой Cisco. Протокол GRE обеспечивает механизм инкапсуляции произвольных пакетов в произвольный транспортный протокол. В наиболее общем случае система имеет пакеты, которые нужно инкапсулировать и маршрутизировать (информационные пакеты). Информация (payload) сначала инкапсулируется в пакет GRE, который может также содержать маршрут.

1

Полученный в результате пакет GRE инкапсулируется в пакет другого протокола (протокол доставки). В данной статье мы рассмотрим форматы пакетов проткола GRE.


GRE версии 0

Формат заголовка GRE версии 0 выглядит следующим образом.

2

Первые два октета заголовка содержат флаги GRE:
C, Checksum Present. 1 бит. — Контрольная сумма присутствует (бит 0) и содержит корректное значение.
R, Routing Present. 1 bit. — Если бит установлен тогда поля смещения и маршрутизации присутствуют и содержат корректные значения
K, Key Present. 1 bit. — В заголовке GRE присутствует ключ и содержит корректное значение
S, Sequence Number present.— Порядковый номер присутствует и содержит корректное значение
s, Strict Source Route — Рекомендуется устанавливать этот флаг только если поле маршрутной информации содержит маршруты Strict Source
Recur, Recursion Control — 3-битовое беззнаковое целое, указывающее допустимое число дополнительных инкапсуляций.
Flags — These bits are reserved and must be transmitted as 0
Version — Версия GRE протокола. Должно быть 0
Protocol Type — Тип протокола в поле содержимого (payload) пакета. В общем случае это поле указывает тип протокола Ethernet для данного пакета.
Checksum — Необязательное поле. Контрольная сумма IP (дополнение до 1) для заголовка GRE и содержимого пакета.
Offset — Необязательное поле. Показывает смещение в октетах от начала поля маршрутизации до первого октета проверяемой записи Source Route.
Key — Необязательное поле. 4-байтовое, число, которое было вставлено при инкапсуляции. Это значение может использоваться получателем для аутентификации отправителя пакета.
Sequence Number — Порядковый номер. Необязательное поле. 32-битовое целое число, вставляемое при инкапсуляции. Это значение может использоваться получателем для поддержки порядка передачи пакетов.
Routing. — Маршрутизация. Необязательное поле. Содержит данные, которые могут использоваться при маршрутизации данного пакета.

GRE версии 1


Заголовок GRE, используемый протоколом PPTP, незначительно отличается от заголовка, описанного в текущей спецификации протокола GRE. Основное отличие в том, что привелкается дополнительное поле Acknowledgment Number используемое для определения того, прибыл ли GRE пакет на другую сторону GRE туннеля.

3

C, Checksum Present. — Сброшено в 0
R, Routing Present — Сброшено в 0
K, Key Present. — Установлено в 1
S, Sequence Number present — Устанавливается если присуствует Payload. Если Payload не присутствует, то этот бит сброшен в 0. GRE пакет спользуется только для подтверждения.
s, Strict Source Route — Сброшено в 0
Recur, Recursion Control — Сброшено в 0
A, Acknowledgment sequence number present — Установлено в 1, если пакет содержит номер подтверждения (Acknowledgment Number), используемый для подтверждения передаваемых данных.
Flags. — Сброшены в 0
Version — Версия протокола. Должно быть 1
Protocol — Протокол. Это значение всегда равно 0x880B.
Payload Length — Размер данных не включая заголовок GRE
Call ID — Содержит идентификатор стороны которой принадлежит пакет.
Sequence Number. — Необязательное поле. Порядковый номер содержимого
Acknowledgment Number — Необязательное поле. Порядковый номер пакета GRE с максимальным номером, принятого передающей стороной в данной пользовательской сессии.

Добавить комментарий

Войти с помощью: