PPPOE-RELAY(8)
๐ PPPOE-RELAY ๐
okay bestie, welcome to the pppoe-relay(8) glow-up ๐ซถ this one lives in the System Manager's Manual and it's the user-space PPPoE relay agent for Linux. she's giving infrastructure royalty, no cap. ๐
โจ NAME โจ
pppoe-relay โ user-space PPPoE relay agent. that's her. that's the whole vibe. ๐
๐ธ SYNOPSIS ๐ธ
pppoe-relay [options]
literally just run her with options, bestie. that's it. ๐
๐ฆ DESCRIPTION ๐ฆ
so pppoe-relay is a user-space relay agent for PPPoE (that's Point-to-Point Protocol over Ethernet, iykyk) for Linux. ๐ง
she does not work alone โ she works in concert with the pppoe client and the pppoe-server server. it's a whole trio situation, main character energy across the board. โจ
and if you wanna know the actual mechanics of how she does her thing? scroll down to the OPERATION section, babe, it's all there. ๐
๐ OPTIONS ๐
-Sinterface โ adds the Ethernet interface interface to the list of interfaces managed bypppoe-relay. only PPPoE servers may be connected to this interface. servers only, bestie, don't get messy. ๐ฅ๏ธ-Cinterface โ adds the Ethernet interface interface to the list of interfaces managed bypppoe-relay. only PPPoE clients may be connected to this interface. clients only, we keep it exclusive. ๐ป-Binterface โ adds the Ethernet interface interface to the list of interfaces managed bypppoe-relay. both PPPoE clients and servers may be connected to this interface. it's giving "everyone's welcome," periodt. ๐-nnum โ allows at most num concurrent PPPoE sessions. if you don't specify it, the default is5000. and num can range from1to65534. don't try to be extra with it. ๐-itimeout โ specifies the session idle timeout. if both peers in a session are idle for more than timeout seconds, the session gets terminated. and if timeout is specified as zero, sessions will never be terminated because of idleness. she'll wait forever, that's loyalty fr fr. ๐ญ
heads up though โ the idle-session expiry routine is never run more frequently than every 30 seconds, so the timeout is approximate. not exact, just vibes. the default value for timeout is 600 seconds (that's 10 minutes for the non-math girlies ๐งฎ).
-Fโ the-Foption causespppoe-relaynot to fork into the background; instead, she remains in the foreground. she stays right here with you. ๐ซถ-hโ the-hoption prints a brief usage message and exits. quick lil hello then she's gone. ๐
๐ฅ OPERATION ๐ฅ
okay so here's where it gets juicy. ๐
pppoe-relay listens for incoming PPPoE PADI frames on all interfaces specified with -B or -C options. when a PADI frame shows up, pppoe-relay adds a Relay-Session-ID tag and broadcasts the PADI on all interfaces specified with -B or -S options โ except the interface on which the frame arrived, obviously, we're not sending it back to where it came from. ๐
โ๏ธ
any PADO frames received get relayed back to the client which sent the PADI (assuming they contain valid Relay-Session-ID tags โ gotta have the tag, no tag no relay ๐). likewise, PADR frames from clients are relayed back to the matching access concentrator. matchmaker, matchmaker. ๐
when a PADS frame is received, pppoe-relay enters the two peers' MAC addresses and session-ID's into a hash table. and here's the spicy part: the session-ID seen by the access concentrator may be different from that seen by the client, because pppoe-relay must renumber sessions to avoid the possibility of duplicate session-ID's. she's out here doing admin work nobody asked about. ๐
whenever either peer sends a session frame, pppoe-relay looks up the session entry in the hash table and relays the frame to the correct peer. like a group chat moderator but efficient. ๐ฌ
when a PADT frame is received, pppoe-relay relays it to the peer and deletes the session entry from her hash table. bye boo ๐
now. the messy part. ๐ญ if a client and server crash (or frames are lost), PADT frames may never be sent, and pppoe-relay's hash table can fill up with stale sessions. therefore, a session-cleaning routine runs periodically, and removes old sessions from the hash table. a session is considered "old" if no traffic has been seen within timeout seconds. and when a session is deleted because of a timeout, a PADT frame is sent to each peer to make certain that they are aware the session has been killed. dramatic? maybe. necessary? absolutely. ๐
๐ EXAMPLE INVOCATIONS ๐
pppoe-relay -C eth0 -S eth1
the example above relays frames between PPPoE clients on the eth0 network and PPPoE servers on the eth1 network. clean, simple, iconic. โจ
pppoe-relay -B eth0 -B eth1
this example is a transparent relay โ frames are relayed between any mix of clients and servers on the eth0 and eth1 networks. no rules, just vibes. ๐ฆ
pppoe-relay -S eth0 -C eth1 -C eth2 -C eth3
this example relays frames between servers on the eth0 network and clients on the eth1, eth2 and eth3 networks. one server, three client networks, she's handling all of it. multi-tasking queen. ๐
๐ AUTHORS ๐
pppoe-relay was written by Dianne Skoll <dianne@skoll.ca>. legend behavior, honestly. ๐
the pppoe home page is https://dianne.skoll.ca/projects/rp-pppoe/ โ go visit, she deserves the clicks. ๐
๐ SEE ALSO ๐
pppd(8), pppoe(8), pppoe-sniff(8), pppoe-server(8)
and that's the whole page bestie!! ๐ซถ this one came from the 4th Berkeley Distribution, dated 26 January 2001 โ yes she's vintage, yes she still eats. ๐ โจ mwah, go relay some frames. ๐ธ
๐ฆ where this page comes from
- alpine 3.22: rp-pppoe-doc 4.0-r1 ยท GPL-2.0-or-later
- alpine 3.23: rp-pppoe-doc 4.0-r1 ยท GPL-2.0-or-later
- alpine 3.24: rp-pppoe-doc 4.0-r1 ยท GPL-2.0-or-later
- arch rolling: rp-pppoe 4.0-7 ยท GPL-2.0-or-later
- debian trixie: pppoe 4.0-1 ยท GPL-2.0-or-later
- fedora 43: rp-pppoe 4.0-7.fc43 ยท GPL-2.0-or-later
- fedora 44: rp-pppoe 4.0-8.fc44 ยท GPL-2.0-or-later
- nixos 26.05: rp-pppoe 4.0
- nixpkgs unstable: rp-pppoe 4.0
- opensuse-leap 16.0: rp-pppoe 4.0-160000.2.2 ยท GPL-2.0-or-later
- opensuse-leap 16.0: rp-pppoe 4.0-160000.2.2 ยท GPL-2.0-or-later
- opensuse-leap 16.0: rp-pppoe 4.0-160000.2.2 ยท GPL-2.0-or-later
- opensuse-leap 16.0: rp-pppoe 4.0-160000.2.2 ยท GPL-2.0-or-later
- ubuntu questing: pppoe 4.0-1ubuntu1
- ubuntu resolute: pppoe 4.0-1ubuntu2 ยท GPL-2.0-or-later
- ubuntu stonking: pppoe 4.0-1ubuntu2 ยท GPL-2.0-or-later
- ๐ the page's license: GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms