LDP/LDP/guide/docbook/Linux-Networking/Leased-Line.xml

488 lines
14 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<sect1 id="Leased-Line">
<title>Leased-Line</title>
_______________________________________________________________________________
<sect>
<para>
Configuring your modem and pppd to use a 2 wire twisted pair leased
line.
</para>
1.2. What is a leased line
<para>
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 fiber optic, and may
involve all sorts of other hardware such as (pupin) coils,
transformers, amplifiers and regenerators.
</para>
<para>
This document deals with:
Configuring your modem and pppd to use a 2 wire twisted pair
leased line.
</para>
<para>
This document does NOT deal with:
SLIP, getting or installing pppd, synchronous data
communication, baseband modems, xDSL.
</para>
1.3. Assumptions
<para>
You should already have a working pppd on your system. You also need
Minicom or a similar program to configure your modems.
</para>
2. Modem
<para>
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.
</para>
<para>
You should have 2 identical (including firmware version) 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:
</para>
· 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.
2.1. Modem Configuration
<para>
A note on modem configuration and init strings in general: Configure
your modem software such as minicom or (m)getty to use the highest
possible speed; 57600 bps for 14k4 and 115200 bps for 28k8 or faster
modems. Lots of people use very long and complicated init strings,
often starting with AT&F and containing lots of modem brand and -type
specific commands. This however is needlessly complicated. Most
programs feel happy with the same modem settings, so why not write
these settings in the non volatile memory of all your modems, and only
use `ATZ' as an init string in all your programs. This way you can
swap or upgrade your modems without ever having to reconfigure any of
your software.
</para>
<para>
Most programs require you to use the following settings;
</para>
· 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 DTR status (&D2 or &D3)
<para>
Check this with AT&V or AT&Ix (consult your modem documentation)
</para>
<para>
These settings are not necessarily the same as the default factory
profile (&F), so starting an init string with AT&F is probably not a
good idea in the first place. The smart thing to do is probably to use
AT&F only when you have reason to believe that the modem setup stored
in the non volatile memory is really screwed up. If you think you
have found the right setup for your modems, write it to non volatile
memory with AT&W and test it thoroughly with Z-modem file transfers of
both ASCII text and binary files. Only if all of this works perfectly
should you configure your modems for leased line.
</para>
<para>
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. Make sure you actually configure your
modems at the highest possible speed. Once in dumb mode it will
ignore all `AT' commands and consequently will not adjust its speed to
that of the COM port, but will use the speed at which it was
configured instead (this speed is stored in a S-register by the AT&W
command).
</para>
<para>
Now configure your modem as follows;
</para>
· Reset on DTR toggle (&D3, this is sometimes a S register). This
setting is required by some ISP's!
· 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 mode 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).
<para>
Write the configuration to non-volatile memory (&W).
</para>
2.2. Test
<para>
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 the screen 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.
</para>
<para>
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).
</para>
2.3. Examples
2.3.1. Hi-Tech
<para>
This is a rather vague `no name clone modem'. Its config string is
however typical and should work on most modems.
</para>
<para>
Originate (local):
ATL1&C1&D3&L2%D1&W&W1
</para>
<para>
Answer (remote):
ATM0L1&C1&D3&L2%D1S0=1&W&W1
</para>
2.3.2. Tornado FM 228 E
<para>
This is what should work;
</para>
<para>
Originate (local):
ATB15L1Q1&C1&D3&L2&W&W1
</para>
<para>
Answer (remote):
ATM0B15M0Q1&C1&D3&L2S0=1&W&W1
</para>
<para>
Move the dumb jumper from position 2-3 to 1-2.
</para>
<para>
Due to a firmware bug, the modems will only connect after being hard
reset (power off and on) while DTR is high. I designed a circuit which
hard resets the modem on the low to high transition of DTR. The
FreeBSD pppd however, isn't very happy about this. By combining the
setting &D0 with a circuit which resets on the high to low transition
instead, this problem can be avoided.
</para>
2.3.3. Tron DF
<para>
The ESC char should be disabled by setting S2 > 127;
</para>
<para>
Originate:
ATL1&L1Q1&C1&D3S2=171\D1&W
</para>
<para>
Answer:
ATM0&L2Q1&C1&D3S0=1S2=171\D1&W
</para>
2.3.4. US Robotics Courier V-Everything
<para>
The USR Sportster and USR Courier-I do not support leased line. You
need the Courier V-everything version for this job. There is a
webpage on the USR site `explaining' how to set-up your Courier for
leased line. However, if you follow these instructions you will end up
with a completely brain dead modem, which can not be controlled or
monitored by your pppd.
</para>
<para>
The USR Courier can be configured with dip switches, however you need
to feed it the config string first. First make sure it uses the right
factory profile. Unlike most other modems it has three; &F0, &F1 and
&F2. The default, which is also the one you should use, is &F1. If you
send it an AT&F, however it will load the factory profile &F0! For
the reset on DTR toggle you set bit 0 of S register 13. This means you
have to set S13 to 1. Furthermore you need set it to leased line mode
with &L1; ATS13=1&L1&W The dip switches are all default except for the
following:
<para>
<para>
3 OFF Disable result codes
4 ON Disable offline commands
5 ON For originate, OFF For answer
8 OFF Dumb mode
</para>
3. PPPD
<para>
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 fully wired null
modem cable. This means you have to configure your pppd the same way
as you would with a null modem cable.
</para>
<para>
For a reliable link, your setup should meet the following criteria;
</para>
· 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.
3.1. Configuration
<para>
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:
</para>
<para>
<screen>
crtscts
mru 576
mtu 576
passive
Loc_Ip:Rem_Ip
-chap
modem
#noauth
-pap
persist
</screen>
</para>
<para>
Stuff like `asyncmap 0', `lock', `modem' and `-detach' are probably
already in /etc/ppp/options. If not, add them to your
/etc/ppp/options.ttyS1. So, if the local system is 192.168.1.1 and
the remote system is 10.1.1.1, then /etc/ppp/options.ttyS1 on the
local system would be:
</para>
<para>
<screen>
crtscts
mru 576
mtu 576
passive
192.168.1.1:10.1.1.1
-chap
modem
#noauth
-pap
persist
</screen>
</para>
<para>
The options.ttyS1 on the remote system would be:
</para>
<para>
<screen>
crtscts
mru 576
mtu 576
passive
10.1.1.1:192.168.1.1
-chap
modem
#noauth
-pap
persist
</screen>
</para>
<para>
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 sys­
tem more responsive. If you don't care much about telnetting during
FTP, you could set the MTU and MRU to 1500. Keep in mind though, that
UDP cannot be fragmented. Speakfreely for instance uses 512 byte UDP
packets. So the minimum MTU for speakfreely is 552 bytes. The noauth
option may be necessary with some newer distributions.
</para>
3.2. Scripts
3.2.1. Starting the pppd and keeping it alive
<para>
You could start the pppd form a boot (rc) script. However, if you do
this, and the pppd dies, you are without a link. A more stable
solution, is to start the pppd from /etc/inittab;
</para>
<para>
<screen>
s1:23:respawn:/usr/sbin/pppd /dev/ttyS1 115200
</screen>
</para>
<para>
This way, the pppd will be restarted if it dies. Make sure you have a
`-detach' option (nodetach on newer systems) though, otherwise inittab
will start numerous instances of pppd, will complaining about
`respawning too fast'.
</para>
<para>
Note: Some older systems will not accept the speed `115200'. In this
case you will have to set the speed to 38400 en set the `spd_vhi' flag
with setserial. Some systems expect you to use a `cua' instead of
`ttyS' device.
</para>
3.2.2. Setting the routes
<para>
The default route can be set with the defaultroute option or with the
/etc/ppp/ip-up script;
</para>
<para>
<screen>
#!/bin/bash
case $2 in
/dev/ttyS1)
/sbin/route add -net 0.0.0.0 gw Rem_Ip netmask 0.0.0.0
;;
esac
</screen>
</para>
<para>
Ip-up can also be used to sync your clock using netdate.
</para>
<para>
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;
</para>
<para>
<screen>
#!/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
</screen>
</para>
<para>
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 Linux Networking HOWTO section on routing.
</para>
3.3. Test
<para>
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.
If it doesn't work, one of the things you should check is the COM port
speed; Apparently, a common mistake is to configure the modems with
Minicom using one speed and then configure the pppd to use an other.
This will NOT work! You have to use the same speed all of the time!
</para>
</sect>
<sect>
T1-T4
<para>
A T1 line is a high-speed, dedicated, point-to-point leased line that
includes 24 seperate 64 Kbps channles for voice and data. Other lines
of this type, called T-carrier lines, support larger numbers of channels.
T1 and T3 lines are the most commonly used.
</para>
<para>
<screen>
Carrier Channels Total Bandwidth
T1 24 1.544 Mbps
T2 96 6.312 Mbps
T3 672 44.736 Mbps
T4 4032 274.176 Mbps
</screen>
</para>
<para>
While the specification for T-carrier lines does not mandate a particular
media type, T1 and T2 are typically carried on copper, and T3 and T4
typically use fiber optic media. DS1, DS2, DS3, and DS4 are an alternate
type of line equivalent to T1-T4, and typically use fiber optic media.
</para>
SONET (Synchronous Optical Network)
<para>
A leased-line system using fiber optic media to support data speeds up to
2.4 Gbps. SONET services are sold based on optical carier (OC) levels. OC
levels are calculated as multiples of the OC-1 speed, 51.840 Mbps. For
example, OC-3 level would correspond with a data speed of 155 Mbps and
OC-12 level would equate to a data transfer rate of 622 Mbps. OC-1 and
OC-3 are the most commonly used SONET lines.
</para>
</sect>