4. Информационное поле пакетов
В этом параграфе определен формат пакетов. Содержимое информационного поля (payload) определено ниже при описании этапов Discovery и PPP.
Формат кадра Ethernet показан на рисунке:
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DESTINATION_ADDR | | (6 octets) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SOURCE_ADDR | | (6 octets) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ETHER_TYPE (2 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ~ ~ payload ~ ~ ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CHECKSUM | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Поле DESTINATION_ADDR содержит индивидуальный (unicast) Ethernet-адрес получателя или широковещательный адрес Ethernet (0xffffffff). Для пакетов Discovery адрес может быть индивидуальным или широковещательным, как описано в параграфе «Этап Discovery». Для трафика сеансов PPP это поле должно содержать индивидуальный адрес партнера, определенный на этапе Discovery.
Поле SOURCE_ADDR должно содержать MAC-адрес отправителя.
Поле ETHER_TYPE имеет значение 0x8863 (Discovery) или 0x8864 (PPP Session).
Данные (payload) кадра Ethernet для PPPoE имеют следующий формат:
1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | VER | TYPE | CODE | SESSION_ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | LENGTH | payload ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Поле VER имеет размер 4 бита и должно иметь значение 0x1 для данной версии спецификации PPPoE.
4-битовое поле TYPE должно иметь значение 0x1 для данной версии спецификации PPPoE.
8-битовое поле CODE определено ниже при описании этапов Discovery и PPP Session.
Поле SESSION_ID имеет размер 16 битов и трактуется как целое число без знака с сетевым порядком байтов. Значения поля для этапа Discovery определены ниже. Значение этого поля фиксируется для данной сессии PPP и, фактически, определяет связь пакета с сессией PPP вместе с полями SOURCE_ADDR и DESTINATION_ADDR кадра Ethernet. Значение 0xffff зарезервировано и его использование недопустимо.
Поле LENGTH имеет размер 16 битов. Значение этого поля (сетевой порядок байтов) определяет размер информационного поля (payload) PPPoE. Значение пол не учитывает размер заголовков Ethernet и PPPoE.