COMPUTER AND NETWORK
SYSTEM ADINISTRATION
CIS 5406-01
Summer 1997 - Lesson 18
SLIP and PPP
A. Introduction - SLIP and PPP
- SLIP (Serial Line Internet Protocol) and PPP
(Point-to-Point Protocol) are encapsulation protocols.
- they specify how to encode packets for transmission on a slow and
often error prone serial line.
- they provide full network connectivity, like ethernet, so you can
use rlogin, rsh, ftp, telnet, xterm, etc.
- recall that IP packets are encapsulated by an ethernet
header and trailer when using ethernet protocol.
- in places where an ethernet connection isn't readily
available, a serial port, a telephone and a modem probably
are.
- SLIP and PPP provide all the functionality of ethernet, just
much slower (10 Mb/S vs. 28.8 Kb/s or even 56 Kb/s).
B. Differences between serial lines and ethernet
- serial medium is point-to-point, ethernet is broadcast.
- since it is point-to-point, no address header is needed.
- if you are only using IP, you don't need a type field (SLIP only
does IP).
- at the bare minimum, you only need a marker at the beginning and
end of the IP packet, for transmission.
C. Comparison of SLIP and PPP
- SLIP is the hot-rod, "bare bones" encapsulation protocol.
- as originally defined in RFC 1055, no effort was made to minimize
traffic on the serial line.
- RFC 1144 is the CSLIP (Compressed SLIP) standard that uses several
methods to reduce the number of bytes transmitted.
- TCP header compression, Type of service queueing (whether it's interactive),
ICMP filtering (avoids transfer of ICMP packets).
- PPP is the "everything and the kitchen sink encapsulation protocol."
- allows the transmission of multi-protocol packets, where SLIP only
allows for the transmission of IP packets.
- SLIP is simpler than PPP, easier to debug, and a pure CSLIP will
usually out perform an equivalent PPP connection.
D. SLIP (Serial Line Internet Protocol)
- defines two special characters: END and ESC.
- END = octal 300 (decimal 192)
- ESC = octal 333 (decimal 219)
- the simplest implementation of SLIP is this:
1. to start the transmission of a data packet simply
begin transmitting the packet
2. signify the end of a packet with the END character
3. if an END appears in the data then send ESC-334
instead
4. if an ESC appears in the data then send ESC-335
instead
- Deficiencies
1. Addressing
- need a method of communicating each other's IP
addresses between server and host
- for example, in dynamic IP allocation the terminal
server needs to inform the host of its IP address
- can only be used when both hosts know each other's IP address
2. Type identification
- might like to be able to send DecNet or other traffic
through the SLIP connection
- of course, the name is Serial-Line 'IP'
3. error correction/ detection
- must be handled at lower layer (by modem)
- or could be handled by IP checksum
- or at higher layer (TCP or UDP checksum)
(though some applications using UDP have the UDP checksum
turned off - NFS is a notable example)
- the cost of retransmitting a packet is high at
14K
- best to handle error correction as low as possible
4. compression
- data can be compressed by modem
- also, there is much redundant data in the headers
of a stream of TCP/IP packets
- one method of compression is to look for redundancies
between packets (rather than within packets)
- TCP header compression
1. a typical TCP/IP header length is 40 bytes (20 IP, 20 TCP)
2. a TCP connection may result in the exchange of 10's or
100's of packets
3. about half of the fields in the TCP/IP headers remain constant
throughout the session
4. method is to have the hosts (which are faster than the serial
connection) remember the redundant header information and
transmit only the changes
5. evaluation
- SLIP is fine for linking isolated hosts via modem
- in a dynamic environment such as a large WAN, SLIP is
inadequate
- for example, the connection of 2 routers
E. PPP - Point-to-point protocol
- built by committee to address SLIP's weaknesses
- PPP is an Internet standard RFC 1331
It is composed of 3 parts
1. Data Link Layer Protocol
- a method for encapsulating datagrams over serial links
- uses the HDLC (high-level data link control) protocol
to encapsulate datagrams for synchronous serial lines
- adds one field for protocol type (solving SLIP's weakness)
- also proposes a standard for asynchronous transmission
- what is synchronous vs. asynchronous serial transmission?
+ asynchronous
> byte-oriented
> each byte is preceded by a start bit and followed by
a stop bit
> the sender does not wait (block) after sending the data
> used for 'slow' devices
> overhead is high (25% for the 2 extra bits)
+ synchronous
------------------------------------------------->
END | error | ....data.... | control | SYN | SYN
> much larger bit groups are sent
> bytes are grouped together into a frame
> the frames are preceded by 2 SYN characters
> then comes a set of control characters
- address info, # of data bytes, sequence #, frame type
> then comes data
> error checking bits
> end-of-frame marker
> synchronous transmission is much faster since the
receiver does not start and stop for each byte
> there is less overhead
- a typical frame is 500 bytes with about 100 bits
of overhead (2.5%)
2. Link Control Protocol (LCP)
- provides control information for the serial link
- used to establish connection, set serial config parameters,
test link
- designed specifically for PPP
3. Network Control Protocols
- a group of individual protocols
- they provide configuration and control information
for different network layer protocols
- there is one for DECNET, IP, OSI, etc.
4. evaluation
- PPP is the serial protocol of the future (present?)
- use it if your system supports it, although with linux
the performance is not as good as CSLIP.
- note that Solaris 2.4 (and above) has PPP integrated into the kernel;
you can build in a module or native kernel support for SLIP/CSLIP/
PLIP/PPP into the Linux kernel
F. Basic Connection Model
- host's kernel must be able to send IP packets across a
serial line using SLIP or PPP protocol.
- must have a user-level program that establishes and maintains
the SLIP and PPP connection.
- must be a server on the other end of the serial line that understands
the protocol that you are using.
- there are 3 common ways to manage a serial IP link:
1. Static - configure a serial port as a network interface.
2. Dial-up - for use with a modem.
3. Dynamic - a daemon watches for network traffic and dials the modem
connects, and disconnects on demand.
G. Network Concerns
- a IP address needs to be assigned to each SLIP and PPP address.
- the SLIP or PPP server needs to be configured to route packets to
each of its clients.
- the server becomes the gateway for the SLIP and PPP clients.
- Security:
- the SLIP and PPP clients when connected are real members of the
network and need to be treated as such.
- when you assign an IP address-name be aware of what privileges
are associated with the address.
- NFS:
- Standard NFS uses UDP, which doesn't guarantee reliable delivery,
and doesn't use congestion control algorithms.
- standard NFS is not a good idea, but TCP-based NFS is the answer to
the problems.
H. Configuring SLIP and PPP under linux:
1. Configuring SLIP under linux:
- Make sure that slip support is compiled into the kernel.
(cd /usr/src/linux, type make config and answer yes to SLIP and CSLIP)
- Use dip with a dip script to dial your modem.
(Type man dip for more detailed information).
- Configure the dip script to use an MTU of 576 (RFC 879).
-also see the Net howto for more info.
Sample skeleton.dip script for linux:
#
# sample.dip Dialup IP connection support program.
# This file (should show) shows how to use the DIP
# scripting commands to establish a link to a host.
# This host runs the 386bsd operating system, and
# thus can only be used for the "static" addresses.
#
# NOTE: We also need an example of a script used to connect
# to a "dynamic" SLIP server, like an Annex terminal
# server...
#
# Version: @(#)sample.dip 1.40 07/20/93
#
# Author: Fred N. van Kempen,
# Modified: Uri Blumenthal
# Modified: Jim Van Zandt
#
main:
# First of all, set up our name for this connection.
# set by IP unless you've got name service...
get $local XXX.XXX.XXX.XXX
# Next, set up the other side's name and address.
get $remote XXX.XXX.XXX.XXX
# Set netmask on sl0 to 255.255.255.0
netmask 255.255.240.0
# Set the desired serial port and speed.
# cua0=com1, cua1=com2, etc.
port cua1
speed 38400
# Reset the modem and terminal line.
# This seems to cause trouble for some people!
reset
# Note! "Standard" pre-defined "errlvl" values:
# 0 - OK
# 1 - CONNECT
# 2 - ERROR
# 3 - BUSY
# 4 - NO CARRIER
# 5 - NO DIALTONE
#
# You can find those grep'ping for "addchat()" in *.c...
# You can change thise with the "chatkey" command.
# Prepare for dialing.
send ATZ\r
wait OK 2
if $errlvl != 0 goto modem_trouble
dial PHONE#
if $errlvl != 1 goto modem_trouble
# We are connected. Login to the system.
login:
sleep 2
wait login: 20
if $errlvl != 0 goto login_error
send USERNAME\n
wait ssword: 20
if $errlvl != 0 goto password_error
send PASSWORD\n
loggedin:
# We are now logged in.
wait enabled 15
if $errlvl != 0 goto prompt_error
#exit
# Set up the SLIP operating parameters.
get $mtu 576
# Ensure "route add -net default blah" will be done
default
# Say hello and fire up!
done:
print CONNECTED $locip ---> $rmtip
mode CSLIP
goto exit
prompt_error:
print TIME-OUT waiting for SLIPlogin to fire up...
goto error
login_trouble:
print Trouble waiting for the Login: prompt...
goto error
password_error:
print Trouble waiting for the Password: prompt...
goto error
modem_trouble:
print Trouble occurred with the modem...
error:
print CONNECT FAILED to $remote
quit
exit:
exit
----------------------------------------------------------
If this file is /etc/sample.dip then you dial up
by typing /sbin/dip /etc/sample.dip.
2. Configuring PPP under Linux
Check out the PPP HOWTO (you can also use dip to connect via PPP).