The kernels of Versions 2.2 and 2.3 do not support PPPoE. Instead, another daemon is started in the user space, in addition to pppd. This daemon is called pppoed; it processes PPP packets of the Ethernet card and forwards them to pppd.pppd, and pppoed communicate over a pseudo-terminal, as shown in Figure 9-4.
Figure 9-4. pppd and pppoed communicate in the user space.
There are various implementations in the user space, including the Roaring Penguin implementation [Roar01], which appears to be the most elaborate. The major drawback of this approach and similar approaches is that the intermediate pseudo-terminal requires an additional transition between the kernel and the user space, which reduces the performance considerably. For this reason, we will consider only the kernel implementation available from kernel Version 2.4 in the following discussion.