The ProL2TP daemons use a thread pool architecture in order to take full advantage of modern multi-core CPUs.
Each tunnel or session instance runs in its own context to reduce resource contention, communicating using a lightweight message-passing mechanism.
ProL2TP uses the Linux kernel to handle L2TP data packets, or optionally an external data plane or custom hardware.
While control plane packets are handled by the userspace daemon, data packets in the tunnel are handled entirely by the kernel or external data plane. This architecture optimises data traffic flow by avoiding unnecessary transfers to and from user space.