PPPoE (англ. Point-to-point protocol over Ethernet) — сетевой протокол канального уровня (второй уровень сетевой модели OSI) передачи кадров PPP через Ethernet. Является одним из вариантов реализация VPN. В основном используется xDSL-сервисами. Предоставляет дополнительные возможности (аутентификация, сжатие данных, шифрование).
Стандартное MTU протокола ниже, чем на стандартном Ethernet (Ethernet — 1500 байт; PPPoE — 1492 байт), что иногда вызывает проблемы с плохо настроенными межсетевыми экранами.
PPPoE — это туннелирующий протокол, который позволяет настраивать (или инкапсулировать) IP или другие протоколы, которые настраиваются на PPP, через соединения Ethernet, но с программными возможностями PPP-соединений, и поэтому используется для виртуальных «звонков» на соседнюю Ethernet-машину и устанавливает соединение точку, которое используется для транспортировки IP-пакетов, работающее с возможностями PPP.
Это позволяет применять традиционное PPP-ориентированное ПО для настройки соединения, которое использует не последовательный канал, а пакетно-ориентированную сеть (как Ethernet), чтобы организовать классическое соединение с логином, паролем для Интернет-соединений. Также IP-адрес по другую сторону соединения назначается, только когда PPPoE-соединение открыто, допуская динамическое переиспользование IP-адресов.
Стоит отметить, что некоторые поставщики оборудования (Cisco и Juniper, например) используют термин PPPoEoE (PPPoE over Ethernet), означающий PPPoE, работающий напрямую через Ethernet или другие IEEE 802.3 сети, а также PPPoE, работающий через связанные в Ethernet (Ethernet bridged over) ATM, для того, чтобы отличать от PPPoEoA (PPPoE over ATM), который работает на ATM virtual circuit по спецификации RFC 2684 и SNAP и инкапсулирует PPPoE. PPPoEoA — это не то же самое, что Point-to-Point Protocol over ATM (PPPoA), поскольку он не использует SNAP.
Работа PPPoE осуществляется следующим образом. Существует Ethernet-среда, то есть несколько соединённых сетевых карт, которые адресуются MAC-адресами. Заголовки Ethernet-кадров содержат адрес отправителя кадра, адрес получателя кадра и тип кадра. Одну из карт слушает PPPoE-сервер. Клиент посылает широковещательный Ethernet-кадр, на который должен ответить PPPoE-сервер (адрес отправителя кадра — свой MAC-адрес, адрес получателя кадра — FF:FF:FF:FF:FF:FF и тип кадра — PPPoE Active Discovery Initiation). PPPoE-сервер посылает клиенту ответ (адрес отправителя кадра — свой MAC-адрес, адрес получателя кадра — МАС-адрес клиента и тип кадра — PPPoE Active Discovery Offer). Если в сети несколько PPPoE-серверов, то все они посылают ответ. Клиент выбирает подходящий сервер и посылает ему запрос на соединение. Сервер посылает клиенту подтверждение с уникальным идентификатором сессии, все последующие кадры в сессии будут иметь этот идентификатор. Таким образом, между сервером и клиентом создается виртуальный канал, который идентифицируется идентификатором сессии и MAC-адресами клиента и сервера. Затем в этом канале устанавливается PPP-соединение, а уже в PPP-пакеты упаковывается IP-трафик.