Next Previous Contents

11. cfg_syncppp: Sync PPP

11.1 cfg_syncppp_whichppp: pppd, ipppd, syncPPP, asyncPPP .. what is they? What should I use?

See this question in the asnyc PPP; section: config_asyncppp_def .

11.2 cfg_syncppp_compile: How do I compile isdn4linux with syncPPP?

To compile the kernel with syncPPP included in ISDN4Linux, you have to answer the appropriate questions with "yes". Don't forget to load the module slhc.o before isdn.o, if VJ compression is not compiled into the kernel e.g. if you have no PPP and no CSLIP in the kernel. (Note that the use of VJ is problematic and does not work reliably - however, the support should still be included in the kernel, since there can otherwise be side effects.)

11.3 cfg_syncppp: How should I name my network interface?

The name of the network interface should always begin with "ippp", not with "syncppp" or "isdn"; otherwise the communication with ipppd will not work correctly.

11.4 cfg_syncppp_config: How do I configure isdn4linux with syncPPP?

Synchronous PPP is simply another encapsulation for ISDN4Linux. This encapsulation is called "syncppp". Here is an example to configure the link level device ippp0:


/sbin/isdnctrl addif ippp0
/sbin/isdnctrl encap ippp0 syncppp

All ippp* devices in use must be configured separately. Each ippp* device should be assigned to its own IP address (routing!). Several ippp* devices can be assigned to a single MSN. Several callers can then simultaneously use this MSN.

To use these devices you need the program ipppd, which you have to configure. You have to start ipppd once after the modules are installed. ipppd communicates with the isdn4linux link level devices through /dev/ippp0 to /dev/ippp63. A single ipppd can handle all devices at once. If you want two PPP connections at the same time, you need to bind ipppd to two devices, etc. As a result, ipppd provides the network device ippp0, which can be checked with ifconfig (even so it has the same name, the network device ippp0 is not to be confused with /dev/ippp0 which is used for communication between ipppd and link level.

ipppd has an additional option: "useifip" uses the IP address of the connected network interface (if it is not 0.0.0.0). (Even then, ipppd tries to use the pointopoint address as the remote IP.) For the beginning, disable all compression (lzs/stac, bsd, van jacobson), later you can try to enable it (see question cfg_general_compression ).

You can find an example configuration in the file etc/rc.isdn.syncppp in the isdn4kernel-util package.

11.5 cfg_syncppp: How can I tell if a connection is unsuccessful (busy)?

When giving the option ´defaultroute´, then you can wait a few seconds, then check whether the default route exists. Another way, when giving option useifip is to check whether you find entries like "Local IP: x.y.z.a" and/or "Remote IP: x.y.z.a" in syslog. In either case, the connection is up.

11.6 cfg_syncppp_logindelay: How can I reduce login delay?

You can write out a login session with ("Debug-Log"), and see which options the other computer is refusing. Next time, configure ipppd without these unused options. A further side effect is that such unused options increase the redundance (e.g. when the other computer has bugs and refuses the options incorrectly). To create a log file, see "How to I create a log for ipppd".

11.7 cfg_syncppp: I want to talk to remote machines which needs different configurations. The only way I found to do this is to kill the ipppd and starta new one with another config to connect to the second machine.

You must bind a network interface explicitly to an ippp device, where you can connect a (for this interface) individually configured ipppd. With the (unfortunately poorly documented) command


"isdnctrl pppbind interface Number"

you can link the interface interface to the device ipppNummer. You can release the link with "pppunbind".

11.8 cfg_syncppp: How does the (little-documented) "pppbind" command in isdnctrl work?

You have to first know how ipppd gets its data. All data that come in over the ISDN line is received by the network devices (these are set up with isdnctrl). Then the data given to one of the /dev/ippp* devices - to one where a ipppd daemon is waiting for data.

To the network interfaces, all ipppd's appear to be able to handle the just-received data - therefore it is normally impossible to predict which ipppd will receive data from which network interface.

In practice, you usually install several ipppd's with differing configurations. Each of these should receive data exclusively from a certain network interface (that has also be specially configured). The "pppdbind" command serves just this purpose. With:


"isdnctrl pppbind interface number"

attaches the interface interface to the device /dev/ipppnumber.

Example: To attach the interface "ippp5" to /dev/ippp2, the following configuration should be used:


"isdnctrl pppbind ippp5 2"

Similarly, the command "pppunbind" will undo this attachment.

11.9 cfg_syncppp: I want to use dynamic IP address assignment. How must I configure the network device?

At least you must have a route, which forwards a packet to the ippp network interface to trigger dialing. A default route to the ippp interface will work. Now you must choose a dummy IP address for your interface. If for some reason you can't set the default route to the ippp interface, you may take any address of the subnet from which you expect your dynamic IP number and set a 'network route' for this subnet to the ippp interface. To allow overriding of the dummy address you must call the ipppd with the 'ipcp-accept-local' option. You must know how the ipppd gets the addresses it has to configure. If you don't give any option, the ipppd tries to negotiate the local host address! With the option 'noipdefault' it requests an address from the remote machine. With 'useifip' it gets the addresses from the net interface. You also can set the addresses in the option line with the a.b.c.d:e.f.g.h option. Note: the IP address of the remote machine must be configured locally, or the remote machine must send it in an IPCP request. If your side doesn't know the IP address after negotiation, it closes the connection! You must allow overriding of addresses with the 'ipcp-accept-*' options, if you have set your own or the remote address explicitly. Try these options, e.g.:


/sbin/ipppd :$REMOTE noipdefault /dev/ippp0

where REMOTE must be the address of the remote machine (the machine giving your address to you)

11.10 cfg_syncppp: How can I do IPX over ipppd?

Give the option +ipx-protocol to the ipppd.

11.11 cfg_syncppp: How can I increase my PPP data transfer rates?

You can establish more channels with MPPP (see the MPPP section). Another way is to use compression, see question cfg_general_compression .

11.12 cfg_general_compression: Which compressions can I use with ipppd?

Van Jacobson compression (header compression) is in experimental state. It works for some remote devices, but not for others. Check it out on your own risk, to be sure disable it. Lzs compression (sometimes also called Stac compression) works quite well. To enable it, some manual work has to be done to add the code to the ipppd (see the isdn4k-util package). Bsd compression also seems to work, but is in experimental stage. You find it in the CVS tree.


Next Previous Contents