Mpd consists of several layers, corresponding to the layered nature of the PPP protocol. There are two types of layers hierarchy connected with two different operation modes as "ppp terminator" and "ppp repeater".
In "ppp terminator" mode such hierarchy used: Interface -> NCPs -> Compression -> Encryption -> Bundle -> Links -> Physical devices.
In "ppp repeater" mode such hierarchy used: Repeater -> Physical devices.
A link is a single point-to-point connection between the local machine and a remote peer machine, implemented by some kind of physical device, such as a serial modem connection or a virtual PPTP connection.
A bundle is a collection of one or more links, all connecting to the same remote peer, that together form a single multi-link PPP connection whose effective bandwidth is the sum of the bandwidths of the individual links.
The bundle layer in effect lies just above the link layer. The bundle layer handles the task of making multiple physical links appear as a single virtual link.
At the bundle layer you configure multi-link PPP settings and the link management policy. The link management policy determines whether mpd tries to keep all the links connected all the time, or whether it adds and subtracts links depending on demand, and if so, according to what parameters.
At this time, mpd requires the links that constitute each bundle to be declared when the bundle is created; after that, they cannot be changed. A future revision may lift this restriction.
With each bundle is a corresponding
interface layer,
which corresponds directly to a netgraph interface
accessible via ifconfig(8)
, such as ng0
.
The netgraph interface is where IP packets ultimately appear
after travelling across the link.
The interface layer handles configuring the interface,
bringing it up or down as appropriate, assigning
IP addresses, setting up static routes, and configuring proxy-ARP.
The interface layer is also responsible for implementing
dial-on-demand and idle timeout functionality.
Each bundle has several corresponding NCP layers as IP Control Protocol (IPCP) and IPv6 Control Protocol (IPv6CP) layers, which manages the IP specific configuration of the interface. This layers handle the negotiation of local and remote addresses and TCP header compression, as well as other optional IP related information such as DNS servers and NBNS servers.
Each bundle also has corresponding compression and encryption layers, which allow you to enable and configure compression and encryption for data sent and received over the bundle.
Individual links in a bundle are configured at the link layer. Link parameters include the authentication type (PAP or CHAP), whether authentication is enabled in either direction, keep-alive packets, and various other link specific parameters.
Beneath the link layer is the physical devices layer. Configuration of device type specific parameters happens at this layer. Each device has a specific type corresponding to one of the supported device types in mpd. The type dictates how the device dependent part is configured and what it's capabilities are.
A repeater is a collection of two physical devices. It repeats all connections coming from one physical device to another without any modification. This technology is also known as LAC (L2TP Access Concentrator) or PAC (PPTP Access Concentrator).
While the combination of all the various layers presents a large number of configuration options, mpd tries to have reasonable defaults for everything.