MPD - Multi-link PPP daemon for FreeBSD
What is it?
Mpd is a netgraph(4) based implementation of the multi-link
PPP protocol for FreeBSD. It is designed to be both fast
and flexible, as it handles configuration and negotiation in
user land, while routing all data packets strictly in kernel.
Mpd is very fast - it is able to handle several Gigabits per second of PPP
traffic on modern hardware.
Mpd is very scalable - it is able handle many thousands of simultaneous
connections without performance degradation and spread load between multiple
CPUs. Same time it is very small and doesn't need much resources.
Mpd is very functional:
It has unified support for most of existing PPP link types:
- modem to connect using different asychronous
serial connections, including modems, ISDN terminal adapters,
Mpd includes event-driven scripting language for modem
identification, setup, manual server login, etc.
- pptp to connect over the Internet using
the Point-to-Point Tunnelling Protocol (PPTP).
This protocol is supported by the most OSes and hardware vendors.
- l2tp to connect over the Internet using
the Layer Two Tunnelling Protocol (L2TP).
L2TP is a PPTP successor supported with modern clients and servers.
- pppoe to connect over an Ethernet port
using the PPP-over-Ethernet (PPPoE) protocol.
This protocol is often used by DSL providers.
- tcp to tunnel PPP session over a TCP connection.
Frames are encoded in the same way as asychronous serial connections.
- udp to tunnel PPP session over a UDP connection.
Each frame is encapsulated in a UDP datagram packet.
- ng to connect using different devices supported by netgraph.
Netgraph is highly modular kernel networking system,
supporting synchronous serial connections, Cisco HDLC, Frame Relay, and other protocols.
Depending on configuration and connection parameters mpd can operate
as usual PPP client or server, or even forward connection unmodified
to other host using any supported link type, providing LAC/PAC/TSA
functionality for building distributed large scale access networks.
It supports most of popular PPP sub-protocols and extensions, such as:
- Multi-link PPP
- PAP, CHAP, MS-CHAP and EAP authentication
- traffic compression (MPPC, Deflate, Predictor-1, ...)
- traffic encryption (MPPE, DESE, DESE-bis)
- IPCP and IPV6CP parameter negotiation
Mpd also includes many additional features:
- IPv4 and IPv6 prorocols support
- Telnet and HTTP control interfaces.
- Different authentication and accounting methods (RADIUS, PAM, script, file, ...)
- Different Dynamic Authorization methods (including RFC 3576 RADIUS CoA and PoD)
- Several types traffic filtering and shaping (ipfw+dummynet, ng_bpf+ng_car)
- Several types traffic accounting (Netflow, IP-Acct, RADIUS, script)
- Network address translation (NAT)
- Dial-on-demand with idle timeout
- Dynamic demand based link management (also known as ``rubber bandwidth'')
- Powerful chat scripting language for asynchronous serial ports
- Pre-tested chat scripts for several common modems and ISDN TAs
- Clean device-type independent design
- Comprehensive logging
for the latest release and download information.
FreeBSD ports system
to install MPD.
here for the FreeBSD port of MPD.
Online version of manual: 4.x
MPD installs it's HTML and PostScript documentation into
All patches should be posted on sourceforge. You can view them
by clicking here.
The MPD project is now hosted on: