Dialup IP servers frequently offer SLIP service through special user accounts. After logging in to such an account, you are not dropped into the common shell; instead, a program or shell script is executed that enables the server’s SLIP driver for the serial line and configures the appropriate network interface. Then you have to do the same at your end of the link.
On some operating systems, the SLIP driver is a user-space program;
under Linux, it is part of the kernel, which makes it a lot faster.
This speed requires, however, that the serial line be converted to the
SLIP mode explicitly. This conversion is done by means of a special
tty line discipline, SLIPDISC. While the tty is in normal line
discipline (DISC0), it exchanges data only with user processes, using
write(2) calls, and the SLIP driver is unable to
write to or read from the tty. In SLIPDISC, the roles are reversed:
now any user-space processes are blocked from writing to or reading
from the tty, while all data coming in on the serial port is passed
directly to the SLIP driver.
The SLIP driver itself understands a number of variations on the SLIP protocol. Apart from ordinary SLIP, it also understands CSLIP, which performs the so-called Van Jacobson header compression (described in RFC-1144) on outgoing IP packets. This compression improves throughput for interactive sessions noticeably. There are also six-bit versions for each of these protocols.
slattach /dev/ttyS3 &
This tool switches the line discipline of
SLIPDISC and attaches it to one of the SLIP network
interfaces. If this is your first active SLIP link, the line will be attached
sl0; the second will be attached to
sl1, and so on. The current kernels support a default
maximum of 256 simultaneous SLIP links.
slattach -p slip /dev/ttyS3 &
The disciplines available are listed in Table 7.1. A special pseudo-discipline
is available called
adaptive, which causes the
kernel to automatically detect which type of SLIP encapsulation is
being used by the remote end.
Table 7-1. Linux Slip-Line Disciplines
Traditional SLIP encapsulation.
SLIP encapsulation with Van Jacobsen header compression.
SLIP encapsulation with six-bit encoding. The encoding method is similar to that used by the uuencode command, and causes the SLIP datagram to be converted into printable ASCII characters. This conversion is useful when you do not have a serial link that is eight bit clean.
SLIP encapsulation with Van Jacobsen header compression and six-bit encoding.
This is not a real line discipline; instead, it causes the kernel to attempt to identify the line discipline being used by the remote machine and to match it.
Note that you must use the same encapsulation as your peer. For example, if cowslip uses CSLIP, you also have to do so. If your SLIP connection doesn’t work, the first thing you should do is ensure that both ends of the link agree on whether to use header compression or not. If you are unsure what the remote end is using, try configuring your host for adaptive slip. The kernel might figure out the right type for you.
slattach lets you enable not only SLIP, but other
protocols that use the serial line, like PPP or KISS (another
protocol used by ham radio people). Doing this is not common, though, and there are
better tools available to support these protocols. For details, please refer
slattach(8) manual page.
After turning over the line to the SLIP driver, you must configure the network interface. Again, you do this using the standard ifconfig and route commands. Assume that we have dialed up a server named cowslip from vlager. On vlager you would execute:
ifconfig sl0 vlager-slip pointopoint cowslip#
route add cowslip#
route add default gw cowslip
The first command configures the interface as a point-to-point link to cowslip, while the second and third add the route to cowslip and the default route, using cowslip as a gateway.
Two things are worth noting about the ifconfig
option that specifies the address of the remote end of a
point-to-point link and our use of vlager-slip as the address of the local
We have mentioned that you can use the same address you assigned to vlager’s Ethernet interface for your SLIP link, as well. In this case, vlager-slip might just be another alias for address 172.16.1.1. However, it is also possible that you have to use an entirely different address for your SLIP link. One such case is when your network uses an unregistered IP network address, as the Brewery does. We will return to this scenario in greater detail in the next section.
For the remainder of this chapter we will always use vlager-slip to refer to the address of the local SLIP interface.
When taking down the SLIP link, you should first remove all routes
through cowslip using
route with the
del option, then
take the interface down, and send slattach the
hangup signal. The you must hang up the modem using your
terminal program again:
route del default#
route del cowslip#
ifconfig sl0 down#
Note that the
516 should be replaced with the
process id (as shown in the output of
ps ax) of the slattach
command controlling the slip device you wish to take down.