Next Previous Contents

18. 2channel: Channel bundling (MPPP, raw bundling)

18.1 2channel_whatis: What is channel bundling and how can I use it?

Channel bundling is currently supported by isdn4Linux in two variations:

Both variations have their own advantages and disadvantages. See the following questions. Dynamic adjustment is supported for MPPP by the program ibod - see question 2channel_mpppconfig for more details.

18.2 2channel_raw: What is raw bundling?

Raw bundling works similarly to raw IP, only with several channels. Therefore, it has the theoretical advantages and disadvantages of raw IP. Raw bundling requires a network interface for each channel that is used. One network interface, the so-called master interface, controls the establishment and breaking of connections. For each further channel, an additional so-called slave interface is configured, that is automatically switched on by the master interface.

18.3 2channel_rawconfig: How do I configure raw bundling?

The master interface is created as usual with

isdnctrl addif master interface

and configured. For all required slave channels, slave interfaces are created with the command:
isdnctrl addslave master interface slave interface

and configured as usual (e.g. "isdnctrl sdelay slave interface delay").

18.4 2channel_rawgoodbad: What are the advantages and disadvantages of raw bundling?

Raw bundling has all the advantages and disadvantages of raw IP. Compared to MPPP, raw bundling has the advantage that isdn4linux itself can open and close the needed slave channels. Unfortunately raw bundling still has problems with transfer rates. See the further questions below.

18.5 2channel_mppp: What is MPPP?

MPPP or MP or MPP (Warning: MP is also an acronym for 'Multi Processor') stands for Multi Point to Point and means bundling of several channels to one logical stream. It's a variation of the normal syncPPP. Accordingly, it inherits all its advantages and disadvantages. Just for your information: ipppd does MPPP according to RFC 1717, instead of the newer RFC 1990 (MLP).

In contrast to raw bundling only one net interface is needed as interface to the ipppd, since the ipppd handles all its channels by itself. Incoming data is distributed round-robin by the ipppd on all available channels. These channels do not necessarily have to be ISDN channels. In theory, modem connections could be mixed with ISDN channels. However, here we only cover ISDN channels.

18.6 2channel_mpppgoodbad: What are the advantages and disadvantages of MPPP?

A disadvantage is that the slave channel has to be activated "manually". ipppd cannot by itself turn the slave channel on and off as it needs to. The normal automatic functions of ipppd are either unreliable (auto hangup) don't work at all (auto dial). This is not true for the other encapsulations. The transfers rates are very good (ca. 30 KB/s with 4 channels).

18.7 2channel_mpppconfig: How do I configure MPPP?

First ensure that support for MPPP has been switched on for compilation of your ISDN modules. Then define a (normal) interface for ipppd (e.g. "isdnctrl addif ippp0", etc). This interface will be used as your master interface. Then you must configure a slave device for every additional channel (e.g. "isdnctrl addslave ippp0 <slave_interface>", configure slave_interface, etc - see the i4l manual for more). To enable MPPP negotiation, ipppd must be called with the "+mp" option and both devices have to be given to ipppd. Please note that the name of both devices has to start with "ippp".

To use channel bundling you must first activate the 'master' or initial call. Now you can add the slave channels with the command:

isdnctrl addlink device

and close them with the command:
isdnctrl removelink device

This is different to other encapsulations of isdn4linux! If addlink gives you error -2, then this means that there are no slave devices configured. Error -5 means that ippp0 is not connected.

Please also note, that the slave device has to be in dialmode auto for this to work. For manual control, use

isdnctrl dial slave

isdnctrl hangup slave

When using manual control please ensure that the slave device is shut down before the master device. Currently (August 2002) there is a hard-to-fix bug in the MPPP code which will cause a crash on the next dialout. A patch exists which cures the symptoms to prevent the crash (see mailing list). However, since the dialout will fail in any case it is best to avoid this situation altogether by using the proper shutdown sequence.

With syncPPP, there is no automatic activation of slave devices, they have to be added and removed. However, there is the program ibod available, which can do this automatically. Have a look at: or (for a version extended by Karsten Keil):

In the file etc/rc.isdn.syncppp.MPPP in the isdn4k-utils package you can find a sample script (unfortunately missing in some i4l versions).

Please note that your Internet Provider has to allow you to make use of these features. Also, there may be a limit on how many channels you are allowed to open at the same time. It could be that all links are dropped when you exceed this limit.

18.8 2channel_mpppcompile: I tried MPPP but it doesn't work. The ipppd writes in the debug log something like: " ... rcvd (0)(proto=0x3d) c0 00 00 00 80 fd 01 01 00 0a ... sent (0)(LCP ProtRej id=0x2 00 3d c0 00 00 00 80 fd 01 ..."

You forgot to compile MPPP/RFC1717 support into the ISDN Subsystem. Recompile with this option enabled.

18.9 2channel_cantlocateippp1: When trying to use MPPP I get the error message "modprobe: Can't locate module ippp1" and "ipppd: ioctl(SIOCSIFMTU): No such device..."?

This is a pecularity of ipppd. It tries to set MTU even for slave devices, and the kernel can not find a corresponding network device. You can safely ignore this information message, MPPP should work nevertheless.

18.10 2channel_multiplenumbers: How can I set up multiple number when using MPPP?

Master and slave device are fully independent of each other, except for using the same network device to deliver packets. Setting up multiple number for master and slave devices will result in synchronized dialout (to the same number). Therefore it is best to give the slave device no number by default and set up the slave with the same number as the master in some ip-up script.

18.11 2channel_freebchannel: How could I set up isdn4linux to free the second B-channel if a phone call comes in?

Well, this is a tough one, due to technical limits. Even if isdn4linux freed a B-channel, the exchange would not repeat the setup call. Therefore, the phone would not ring. The phone only signals a second incoming phone call if you are on the phone with another call that could be suspended.

One option would be that isdn4linux frees one B-channel, then takes the call, and transfers it to the phone via ECT (explicit call transfer); however, this feature requires proprietary (unknown) protocol extensions, and is usually only available behind large private exchanges - therefore not implemented in isdn4linux. Another option is that isdn4linux frees one B-channel, takes the call, then suspends it. However, the user would have to know to resume it without any phone ringing. The most sensible option is that you handle it will a phone application making use of isdn4linux. Possibly ant-phone could be used for such a purpose:

Next Previous Contents