Leased line Mini HOWTO
Rob van der Putten, rob@sput.dsl.nl
v1.2, 3 March 1998
What is a leased line
Any fixed, that is permanent, point to point data communications link,
which is leased from a telco or similar organisation.
The leased line involves cables, such as twisted pair, coax or FDDI,
and may involve all sorts of other hardware such as (pupin) coils,
transformers, amplifiers and regenerators.
- This document deals with:
- Configuring your modem and pppd to use a 2 wire twisted pair leased
line.
- This document does NOT deal with:
- SLIP, getting or installing pppd, synchronous data communication,
baseband modems.
Assumptions
You should already have a working pppd on your system.
You also need Minicom or a similar program to configure your modems.
Modem
A leased line is not connected to a telephone exchange and does not provide
DC power, dial tone, busy tone or ring signal. This means that your modems
are on their own and have to be able to deal with this situation.
You should have 2 identical external modems supporting both leased
line and dumb mode. Make sure your modems can actually do this!
Also make sure your modem is properly documented.
You also need:
- 2 fully wired shielded RS232 cables. The shield should be connected to
the connector shell (not pin 1) at both ends (not at one end).
- A RS232 test plug may be handy for test purposes.
- 2 RJ11 cords, one for each end of the leased line.
- A basic understanding of 'AT' commands.
Modem Configuration
Configure your modem at the highest possible speed; 57600 bps for 14k4 and
115200 bps for 28k8 or faster modems. Once the modem is in dumb mode it
will use the speed at witch it was configured.
Configure both your modem software (Minicom) and your modem to use the
following settings:
- Fixed baud rate (no auto baud)
- Hardware bidirectional RTS-CTS flow control (no x-on/x-off)
- 8 Bits, no parity, 1 stopbit
- The modem should produce the TRUE DCD status (&C1)
- The modem should NOT ignore the DCD status (&D2 or &D3)
Check this with AT&V or AT&Ix (consult your modem documentation)
Find out how to put your modem into dumb mode and, more importantly,
how to get it out of dumb mode; The modem can only be reconfigured when it
is not in dumb mode.
Now configure your modem as follows;
- Reset on DTR toggle (&D3, this is sometimes a S register)
- Leased line mode (&L1 or &L2, consult your modem documentation)
- The remote modem auto answer (S0=1), the local originate (S0=0)
- Disable result codes (Q1, sometimes the dumb does this for you)
- Dumb mode (\D1 or %D1, this is sometimes a jumper)
In dumb mode the modem will ignore all AT commands (sometimes you need
to disable the ESC char as well).
Write the configuration to non-volatile memory (&W).
Test
Now connect the modems to 2 computers using the RS232 cables and connect
the modems to each other using a RJ11 lead. Use a modem program such as
Minicom (Linux), procom or telix (DOS) on both computers to test the
modems.
You should be able to type text from one computer to the other and vice
versa. If one of the screens produces garbage check your com port speed and
other settings.
Now disconnect and reconnect the RJ11 cord. Wait for the connection to
reestablish itself. Disconnect and reconnect the RS232 cables, switch the
modems on and off, stop and restart minicom.
The modems should always reconnect at the highest possible speed (some
modems have speed indicator leds).
Check whether the modems actually ignores the ESC (+++) character. If
necessary disable the ESC character.
If all of this works you may want to reconfigure your modems;
Switch off the sound at the remote modem (M0) and put the local modem at
low volume (L1).
Examples
Hi-Tech
- Originate (local):
- ATL1&C1&D3&L2%D1&W&W1
- Answer (remote):
- ATM0&C1&D3&L2%D1S0=1&W&W1
Tron DF
The ESC char should be disabled by setting S2 > 127;
- Originate:
- ATL1&L1Q1&C1&D3S2=171\D1&W
- Answer:
- ATM0&L2Q1&C1&D3S0=1S2=171\D1&W
PPPD
You need a pppd (Point to Point Protocol Daemon) and a reasonable knowledge
of how it works. Consult the relevant RFC's or the
Linux PPP HOWTO
if necessary.
Since you are not going to use a login procedure, you don't use (m)getty
and you do not need a (fake) user associated with the pppd controlling your
link. You are not going to dial so you don't need any chat scripts
either.
In fact, the modem circuit and configuration you have just build, are
rather like a null modem cable. This means you have to configure your pppd
the same way as you would with a null modem cable.
For a reliable link, your setup should meet the following criteria;
- Shortly after booting your system, pppd should raise the DTR signal in
your RS232 port, wait for DCD to go up, and negotiate the link.
- If the remote system is down, pppd should wait until it is up again.
- If the link is up and then goes down, pppd should reset the modem
(it does this by dropping and then raising DTR), and then try to
reconnect
- If the quality of the link deteriorates too much, pppd should reset
the modem and then reestablish the link.
- If the process controlling the link, that is the pppd, dies, a watchdog
should restart the pppd.
Configuration
Suppose the modem is connected to COM2, the local IP address is 'Loc_Ip'
and the remote IP address is 'Rem_Ip'. We want to use 576 as our MTU.
The /etc/ppp/options.ttyS1 would now be:
crtscts
mru 576
mtu 576
passive
Loc_Ip:Rem_Ip
-chap
modem
-pap
persist
So, if the local system is 192.168.1.1 and the remote system is 10.1.1.1,
then /etc/options.ttyS1 on the local system would be:
crtscts
mru 576
mtu 576
passive
192.168.1.1:10.1.1.1
-chap
modem
-pap
persist
The options.ttyS1 on the remote system would be:
crtscts
mru 576
mtu 576
passive
10.1.1.1:192.168.1.1
-chap
modem
-pap
persist
The passive option limits the number of (re)connection attempts.
The persist option will keep pppd alive in case of a disconnect or when it
can't connect in the first place.
If you telnet a lot while doing filetransfers (FTP or webbrowsing) at the
same time, you might want to use a smaller MTU and MRU such as 296. This
will make the remote system more responsive.
If you don't care much about telnetting during FTP, you could set the MTU
and MRU to 1500.
Scripts
>From the script which configures your networkcard (/etc/init.d/network on
Debian systems) the script /usr/local/sbin/test-Rem_Host-ppp is called
(substitute 'Rem_Host' with the remote hosts name). This script checks
whether the remote interface exists and will try to start the pppd if it
doesn't. It starts with a sleep, making sure the boot process configures
the COM ports first.
#!/bin/bash
/usr/bin/sleep 30
while true
do
if ! ( /sbin/ifconfig | grep Rem_Ip > /dev/null )
then
# PPP gone
logger "Rem_Host PPP gone ; restarted"
/usr/local/sbin/PRem_Host.sh &
fi
sleep 300
done
You could of course, remove the 'sleep 300' and the do-done loop and start
the whole thing from cron instead.
Some people run pppd from /etc/inittab, but I never tested this.
The default route can be set with the defaultroute option or with a
/etc/ppp/ip-up script;
#!/bin/bash
case $2 in
/dev/ttyS1)
/sbin/route add -net 0.0.0.0 gw Rem_Ip netmask 0.0.0.0
;;
esac
Ip-up can also be used to sync your clock using netdate.
Of course the route set in ip-up is not necessarily the default route.
Your ip-up sets the route to the remote network while the ip-up script on
the remote system sets the route to your network. If your network is
192.168.1.0 and your ppp interface 192.168.1.1, the ip-up script on the
remote machine looks like this;
#!/bin/bash
case $2 in
/dev/ttyS1)
/sbin/route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0
;;
esac
The 'case $2' and '/dev/ttyS1)' bits are there in case you use more than
one ppp link. Ip-up will run each time a link comes up, but only the part
between '/dev/ttySx)' and ';;' will be executed, setting the right route
for the right ttyS.
You can find more about routing in the
NET-3-HOWTO
section on routing
Though the persist option should make this superfluous, the pppd can also
be restarted using ip-down;
#!/bin/bash
case $s in
/dev/ttyS1)
/usr/bin/sleep 30
/usr/local/sbin/PRem_Host.sh &
;;
esac
The pppd is started using the /usr/local/sbin/PRem_Host.sh script
#!/bin/bash
( /usr/sbin/pppd /dev/ttyS1 115200 crtscts Loc_Ip:Rem_Ip persist ) &
I suppose some of the command line options make some of the options
statements superfluous. Well, better safe then sorry.
Test
Test the whole thing just like the modem test.
If it works, get on your bike and bring the remote modem to the remote side
of your link.