* add p cc
[mascara-docs.git] / i386 / linux / linux-2.3.21 / Documentation / networking / wan-router.txt
blob5fc1afffccdeb42cf4bffe8ca7929a32fb4a0656
1 ------------------------------------------------------------------------------
2 WAN Router for Linux Operating System
3 ------------------------------------------------------------------------------
4 Version 2.0.1 - Nov 28, 1997
5 Version 2.0.0 - Nov 06, 1997
6 Version 1.0.3 - June 3, 1997
7 Version 1.0.1 - January 30, 1997
8 Author: Jaspreet Singh <jaspreet@sangoma.com>
9         Gene Kozin <genek@compuserve.com>
10 Copyright (c) 1995-1997 Sangoma Technologies Inc.
11 ------------------------------------------------------------------------------
14 WARNING:  This Version of WANPIPE supports only the S508 and S508/FT1 cards.  
15 IF YOU OWN A S502E OR A S508 CARD THEN PLEASE CONTACT SANGOMA TECHNOLOGIES FOR 
16 AN UPGRADE.
18 INTRODUCTION
20 Wide Area Networks (WANs) are used to interconnect Local Area Networks (LANs)
21 and/or stand-alone hosts over vast distances with data transfer rates
22 significantly higher than those achievable with commonly used dial-up
23 connections.
25 Usually an external device called `WAN router' sitting on your local network
26 or connected to your machine's serial port provides physical connection to
27 WAN.  Although router's job may be as simple as taking your local network
28 traffic, converting it to WAN format and piping it through the WAN link, these
29 devices are notoriously expensive, with prices as much as 2 - 5 times higher
30 then the price of a typical PC box.
32 Alternatively, considering robustness and multitasking capabilities of Linux,
33 an internal router can be built (most routers use some sort of stripped down
34 Unix-like operating system anyway). With a number of relatively inexpensive WAN
35 interface cards available on the market, a perfectly usable router can be
36 built for less than half a price of an external router.  Yet a Linux box
37 acting as a router can still be used for other purposes, such as firewalling,
38 running FTP, WWW or DNS server, etc.
40 This kernel module introduces the notion of a WAN Link Driver (WLD) to Linux
41 operating system and provides generic hardware-independent services for such
42 drivers.  Why can existing Linux network device interface not be used for
43 this purpose?  Well, it can.  However, there are a few key differences between
44 a typical network interface (e.g. Ethernet) and a WAN link.
46 Many WAN protocols, such as X.25 and frame relay, allow for multiple logical
47 connections (known as `virtual circuits' in X.25 terminology) over a single
48 physical link.  Each such virtual circuit may (and almost always does) lead
49 to a different geographical location and, therefore, different network.  As a
50 result, it is the virtual circuit, not the physical link, that represents a
51 route and, therefore, a network interface in Linux terms.
53 To further complicate things, virtual circuits are usually volatile in nature
54 (excluding so called `permanent' virtual circuits or PVCs).  With almost no
55 time required to set up and tear down a virtual circuit, it is highly desirable
56 to implement on-demand connections in order to minimize network charges.  So
57 unlike a typical network driver, the WAN driver must be able to handle multiple
58 network interfaces and cope as multiple virtual circuits come into existence
59 and go away dynamically.
61 Last, but not least, WAN configuration is much more complex than that of say
62 Ethernet and may well amount to several dozens of parameters.  Some of them
63 are "link-wide"  while others are virtual circuit-specific.  The same holds
64 true for WAN statistics which is by far more extensive and extremely useful
65 when troubleshooting WAN connections.  Extending the ifconfig utility to suit
66 these needs may be possible, but does not seem quite reasonable.  Therefore, a
67 WAN configuration utility and corresponding application programmer's interface
68 is needed for this purpose.
70 Most of these problems are taken care of by this module.  Its goal is to
71 provide a user with more-or-less standard look and feel for all WAN devices and
72 assist a WAN device driver writer by providing common services, such as:
74  o User-level interface via /proc file system
75  o Centralized configuration
76  o Device management (setup, shutdown, etc.)
77  o Network interface management (dynamic creation/destruction)
78  o Protocol encapsulation/decapsulation
80 To ba able to use the Linux WAN Router you will also need a WAN Tools package
81 available from
83         ftp.sangoma.com/pub/linux/vX.Y.Z/wantools-X.Y.Z.tgz
84                         or
85         ftp.sangoma.com/pub/linux/vX.Y.Z/wanpipe-X.Y.Z.tgz
87 where vX.Y.Z represent the Linux kernel version number.
89 For technical questions and/or comments regarding this product please e-mail
90 to jaspreet@sangoma.com or dm@sangoma.com.
94 COPYRIGHT AND LICENSING INFORMATION
96 This program is free software; you can redistribute it and/or modify it under
97 the terms of the GNU General Public License as published by the Free Software
98 Foundation; either version 2, or (at your option) any later version.
100 This program is distributed in the hope that it will be useful, but WITHOUT
101 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
102 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
104 You should have received a copy of the GNU General Public License along with
105 this program; if not, write to the Free Software Foundation, Inc., 675 Mass
106 Ave, Cambridge, MA 02139, USA.
110 ACKNOWLEDGMENTS
112 This product is based on the WANPIPE(tm) Multiprotocol WAN Router developed
113 by Sangoma Technologies Inc. for Linux 1.2.x.  Release of Linux 2.0 in summer
114 1996 commanded adequate changes to the WANPIPE code to take full advantage of
115 new Linux features.  Instead of continuing developing proprietary interface
116 specific to Sangoma WAN cards, we decided to put all hardware-independent code
117 into a separate module and define two levels of interfaces - one for user-
118 level applications and another for kernel-level WAN drivers.
120 Many useful ideas concerning hardware-independent interface implementation
121 were given by Mike McLagan <mike.mclagan@linux.org> and his implementation
122 of the Frame Relay router and drivers for Sangoma cards (dlci/sdla).
124 Special thanks to all the WANPIPE users who performed field-testing, reported
125 bugs and made valuable comments and suggestions that help us to improve this
126 product.
130 REVISION HISTORY
132 2.0.1   Nov 28, 1997          - Protection of "enable_irq()" while
133                                 "disable_irq()" has been enabled from any other
134                                 routine (for Frame Relay, PPP and X25).
135                               - Added additional Stats for Fpipemon and Ppipemon                              - Improved Load Sharing for multiple boards.
138 2.0.0   Nov 07, 1997          - Implemented protection of RACE conditions by
139                                 critical flags for FRAME RELAY and PPP.
140                               - DLCI List interrupt mode implemented.
141                               - IPX support in FRAME RELAY and PPP.
142                               - IPX Server Support (MARS)
143                               - More driver specific stats included in FPIPEMON
144                                 and PIPEMON.
146 1.0.5   July 28, 1997         - Configurable T391,T392,N391,N392,N393 for Frame
147                                 Relay in router.conf.
148                               - Configurable Memory Address through router.conf
149                                 for Frame Relay, PPP and X.25. (commenting this
150                                 out enables auto-detection).
151                               - Fixed freeing up received buffers using kfree()
152                                 for Frame Relay and X.25.
153                               - Protect sdla_peek() by calling save_flags(),
154                                 cli() and restore_flags().
155                               - Changed number of Trace elements from 32 to 20
156                               - Added DLCI specific data monitoring in FPIPEMON.
158 1.0.4   July 10, 1997         - S508/FT1 monitoring capability in fpipemon and
159                                 ppipemon utilities.
160                               - Configurable TTL for UDP packets.
161                               - Multicast and Broadcast IP source addresses are
162                                 silently discarded.
164 1.0.3   June 3, 1997
165                               - UDP port for multiple boards (Frame relay, PPP)
166                                 Continuous Transmission of Configure Request 
167                               - Packet for PPP (this support is only added for 
168                                 508 cards)
169                               - Connection Timeout for PPP changed from 900 to 0
170                               - Flow Control for multiple boards and multiple 
171                                 channels (Frame Relay)
173 1.0.1   January 30, 1997
175                               - Implemented user-readable status and statistics
176                                 via /proc file system
178 1.0.0   December 31, 1996
180                               - Initial version
182 >>>>>> END <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<