~ubuntu-branches/ubuntu/breezy/quagga/breezy-security

« back to all changes in this revision

Viewing changes to doc/overview.texi

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Mueller
  • Date: 2005-05-20 13:16:12 UTC
  • Revision ID: james.westby@ubuntu.com-20050520131612-pr6paalox60o3x3n
Tags: upstream-0.99.1
ImportĀ upstreamĀ versionĀ 0.99.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
@node Overview
 
2
@chapter Overview
 
3
@cindex Overview
 
4
 
 
5
  @uref{http://www.quagga.net,,Quagga} is a routing software package that
 
6
provides TCP/IP based routing services with routing protocols support such
 
7
as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+ (@pxref{Supported
 
8
RFC}). Quagga also supports special BGP Route Reflector and Route Server
 
9
behavior.  In addition to traditional IPv4 routing protocols, Quagga also
 
10
supports IPv6 routing protocols.  With SNMP daemon which supports SMUX
 
11
protocol, Quagga provides routing protocol MIBs (@pxref{SNMP Support}).
 
12
 
 
13
  Quagga uses an advanced software architecture to provide you with a high
 
14
quality, multi server routing engine. Quagga has an interactive user
 
15
interface for each routing protocol and supports common client commands. 
 
16
Due to this design, you can add new protocol daemons to Quagga easily.  You
 
17
can use Quagga library as your program's client user interface.
 
18
 
 
19
  Quagga is distributed under the @sc{gnu} General Public License.
 
20
 
 
21
@menu
 
22
* About Quagga::                Basic information about Quagga
 
23
* System Architecture::         The Quagga system architecture
 
24
* Supported Platforms::         Supported platforms and future plans
 
25
* Supported RFC::               Supported RFCs
 
26
* How to get Quagga::            
 
27
* Mailing List::                Mailing list information
 
28
* Bug Reports::                 Mail address for bug data
 
29
@end menu
 
30
 
 
31
@node About Quagga
 
32
@comment  node-name,  next,  previous,  up
 
33
@section About Quagga
 
34
@cindex About Quagga
 
35
 
 
36
  Today, TCP/IP networks are covering all of the world.  The Internet has
 
37
been deployed in many countries, companies, and to the home.  When you
 
38
connect to the Internet your packet will pass many routers which have TCP/IP
 
39
routing functionality.
 
40
 
 
41
  A system with Quagga installed acts as a dedicated router.  With Quagga,
 
42
your machine exchanges routing information with other routers using routing
 
43
protocols.  Quagga uses this information to update the kernel routing table
 
44
so that the right data goes to the right place.  You can dynamically change
 
45
the configuration and you may view routing table information from the Quagga
 
46
terminal interface.
 
47
 
 
48
  Adding to routing protocol support, Quagga can setup interface's flags,
 
49
interface's address, static routes and so on.  If you have a small network,
 
50
or a stub network, or xDSL connection, configuring the Quagga routing
 
51
software is very easy.  The only thing you have to do is to set up the
 
52
interfaces and put a few commands about static routes and/or default routes. 
 
53
If the network is rather large, or if the network structure changes
 
54
frequently, you will want to take advantage of Quagga's dynamic routing
 
55
protocol support for protocols such as RIP, OSPF or BGP.
 
56
 
 
57
  Traditionally, UNIX based router configuration is done by
 
58
@command{ifconfig} and @command{route} commands.  Status of routing
 
59
table is displayed by @command{netstat} utility.  Almost of these commands
 
60
work only if the user has root privileges.  Quagga has a different system
 
61
administration method.  There are two user modes in Quagga.  One is normal
 
62
mode, the other is enable mode.  Normal mode user can only view system
 
63
status, enable mode user can change system configuration.  This UNIX account
 
64
independent feature will be great help to the router administrator.
 
65
 
 
66
  Currently, Quagga supports common unicast routing protocols.  Multicast
 
67
routing protocols such as BGMP, PIM-SM, PIM-DM may be supported in Quagga
 
68
2.0.  MPLS support is going on.  In the future, TCP/IP filtering control,
 
69
QoS control, diffserv configuration will be added to Quagga. Quagga
 
70
project's final goal is making a productive, quality, free TCP/IP routing
 
71
software.
 
72
 
 
73
@node System Architecture
 
74
@comment  node-name,  next,  previous,  up
 
75
@section System Architecture
 
76
@cindex System architecture
 
77
@cindex Software architecture
 
78
@cindex Software internals
 
79
 
 
80
  Traditional routing software is made as a one process program which
 
81
provides all of the routing protocol functionalities.  Quagga takes a
 
82
different approach.  It is made from a collection of several daemons that
 
83
work together to build the routing table.  There may be several
 
84
protocol-specific routing daemons and zebra the kernel routing manager.
 
85
 
 
86
  The @command{ripd} daemon handles the RIP protocol, while
 
87
@command{ospfd} is a daemon which supports OSPF version 2.
 
88
@command{bgpd} supports the BGP-4 protocol.  For changing the kernel
 
89
routing table and for redistribution of routes between different routing
 
90
protocols, there is a kernel routing table manager @command{zebra} daemon. 
 
91
It is easy to add a new routing protocol daemons to the entire routing
 
92
system without affecting any other software.  You need to run only the
 
93
protocol daemon associated with routing protocols in use.  Thus, user may
 
94
run a specific daemon and send routing reports to a central routing console.
 
95
 
 
96
  There is no need for these daemons to be running on the same machine. You
 
97
can even run several same protocol daemons on the same machine.  This
 
98
architecture creates new possibilities for the routing system.
 
99
 
 
100
@example
 
101
@group
 
102
+----+  +----+  +-----+  +-----+
 
103
|bgpd|  |ripd|  |ospfd|  |zebra|
 
104
+----+  +----+  +-----+  +-----+
 
105
                            |
 
106
+---------------------------|--+
 
107
|                           v  |
 
108
|  UNIX Kernel  routing table  |
 
109
|                              |
 
110
+------------------------------+
 
111
 
 
112
    Quagga System Architecture
 
113
@end group
 
114
@end example
 
115
 
 
116
  Multi-process architecture brings extensibility, modularity and
 
117
maintainability.  At the same time it also brings many configuration files
 
118
and terminal interfaces.  Each daemon has it's own configuration file and
 
119
terminal interface.  When you configure a static route, it must be done in
 
120
@command{zebra} configuration file.  When you configure BGP network it must
 
121
be done in @command{bgpd} configuration file.  This can be a very annoying
 
122
thing.  To resolve the problem, Quagga provides integrated user interface
 
123
shell called @command{vtysh}.  @command{vtysh} connects to each daemon with
 
124
UNIX domain socket and then works as a proxy for user input.
 
125
 
 
126
  Quagga was planned to use multi-threaded mechanism when it runs with a
 
127
kernel that supports multi-threads.  But at the moment, the thread library
 
128
which comes with @sc{gnu}/Linux or FreeBSD has some problems with running
 
129
reliable services such as routing software, so we don't use threads at all. 
 
130
Instead we use the @command{select(2)} system call for multiplexing the
 
131
events.
 
132
 
 
133
@node Supported Platforms
 
134
@comment  node-name,  next,  previous,  up
 
135
@section Supported Platforms
 
136
 
 
137
@cindex Supported platforms
 
138
@cindex Quagga on other systems
 
139
@cindex Compatibility with other systems
 
140
@cindex Operating systems that support Quagga
 
141
 
 
142
  Currently Quagga supports @sc{gnu}/Linux, BSD and Solaris. Porting Quagga
 
143
to other platforms is not too difficult as platform dependent code should
 
144
most be limited to the @command{zebra} daemon.  Protocol daemons are mostly
 
145
platform independent. Please let us know when you find out Quagga runs on a
 
146
platform which is not listed below.
 
147
 
 
148
  The list of officially supported platforms are listed below. Note that
 
149
Quagga may run correctly on other platforms, and may run with partial
 
150
functionality on further platforms.
 
151
 
 
152
@sp 1
 
153
@itemize @bullet
 
154
@item
 
155
@sc{gnu}/Linux 2.2.x and higher
 
156
@item
 
157
FreeBSD 4.x and higher
 
158
@item
 
159
NetBSD 1.6 and higher
 
160
@item
 
161
OpenBSD 2.5 and higher
 
162
@item
 
163
Solaris 2.6 and higher (IPv6 support requires a patch at moment)
 
164
@end itemize
 
165
 
 
166
@sp 1
 
167
  Some IPv6 stacks are in development.  Quagga supports following IPv6
 
168
stacks.  For BSD, we recommend KAME IPv6 stack.  Solaris IPv6 stack is
 
169
not yet supported.
 
170
@sp 1
 
171
@itemize @bullet
 
172
@item
 
173
Linux IPv6 stack for GNU/Linux 2.2.x and higher.
 
174
@item
 
175
KAME IPv6 stack for BSD.
 
176
@item
 
177
INRIA IPv6 stack for BSD.
 
178
@end itemize
 
179
 
 
180
@node Supported RFC
 
181
@comment  node-name,  next,  previous,  up
 
182
@section Supported RFC
 
183
 
 
184
  Below is the list of currently supported RFC's.
 
185
 
 
186
@table @asis
 
187
@item @asis{RFC1058}
 
188
@cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.}
 
189
 
 
190
@item @asis{RF2082}
 
191
@cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.}
 
192
 
 
193
@item @asis{RFC2453}
 
194
@cite{RIP Version 2. G. Malkin. November 1998.}
 
195
 
 
196
@item @asis{RFC2080}
 
197
@cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.}
 
198
 
 
199
@item @asis{RFC2328}
 
200
@cite{OSPF Version 2. J. Moy. April 1998.}
 
201
 
 
202
@item @asis{RFC2370}
 
203
@cite{The OSPF Opaque LSA Option R. Coltun. July 1998.}
 
204
 
 
205
@item @asis{RFC3101}
 
206
@cite{The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.}
 
207
 
 
208
@item @asis{RFC2740}
 
209
@cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}
 
210
 
 
211
@item @asis{RFC1771} 
 
212
@cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}
 
213
 
 
214
@item @asis{RFC1965}
 
215
@cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}
 
216
 
 
217
@item @asis{RFC1997}
 
218
@cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}
 
219
 
 
220
@item @asis{RFC2545}
 
221
@cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}
 
222
 
 
223
@item @asis{RFC2796}
 
224
@cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}
 
225
 
 
226
@item @asis{RFC2858}
 
227
@cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}
 
228
 
 
229
@item @asis{RFC2842}
 
230
@cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}
 
231
 
 
232
@end table
 
233
 
 
234
  When SNMP support is enabled, below RFC is also supported.
 
235
 
 
236
@table @asis
 
237
 
 
238
@item @asis{RFC1227}
 
239
@cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.}
 
240
 
 
241
@item @asis{RFC1657}
 
242
@cite{Definitions of Managed Objects for the Fourth Version of the
 
243
Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
 
244
J. Chu, Editor. July 1994.}
 
245
 
 
246
@item @asis{RFC1724}
 
247
@cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.}
 
248
 
 
249
@item @asis{RFC1850}
 
250
@cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
 
251
November 1995.}
 
252
 
 
253
@end table
 
254
 
 
255
@node How to get Quagga
 
256
@comment  node-name,  next,  previous,  up
 
257
@section How to get Quagga
 
258
 
 
259
Quagga is still beta software and there is no officially released
 
260
version.
 
261
 
 
262
Zebra's official web page is located at:
 
263
 
 
264
@uref{http://www.gnu.org/software/zebra/zebra.html}.
 
265
 
 
266
The original Zebra web site is located at: 
 
267
 
 
268
@uref{http://www.zebra.org/}.
 
269
 
 
270
As of this writing, development by zebra.org on Zebra has slowed down. Some
 
271
work is being done by third-parties to try maintain bug-fixes and
 
272
enhancements to the current Zebra code-base, which has resulted in a fork of
 
273
Zebra called Quagga, see:
 
274
 
 
275
@uref{http://www.quagga.net/}
 
276
 
 
277
for further information, as well as links to additional zebra resources.
 
278
 
 
279
@node Mailing List
 
280
@comment  node-name,  next,  previous,  up
 
281
@section Mailing List
 
282
@cindex How to get in touch with Quagga
 
283
@cindex Mailing Quagga
 
284
@cindex Contact information
 
285
@cindex Mailing lists
 
286
 
 
287
There is a mailing list for discussions about Quagga.  If you have any
 
288
comments or suggestions to Quagga, please subscribe to:
 
289
 
 
290
@uref{http://lists.quagga.net/mailman/listinfo/quagga-users}.
 
291
 
 
292
The @uref{http://www.quagga.net/,,Quagga} site has further information on
 
293
the available mailing lists, see:
 
294
 
 
295
        @uref{http://www.quagga.net/lists.php}
 
296
 
 
297
@node Bug Reports
 
298
@section Bug Reports
 
299
 
 
300
@cindex Bug Reports
 
301
@cindex Bug hunting
 
302
@cindex Found a bug?
 
303
@cindex Reporting bugs
 
304
@cindex Reporting software errors
 
305
@cindex Errors in the software
 
306
 
 
307
If you think you have found a bug, please send a bug report to:
 
308
 
 
309
@uref{http://bugzilla.quagga.net}
 
310
 
 
311
When you send a bug report, please be careful about the points below.
 
312
 
 
313
@itemize @bullet
 
314
@item 
 
315
Please note what kind of OS you are using.  If you use the IPv6 stack
 
316
please note that as well.
 
317
@item
 
318
Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
 
319
Information from zebra's VTY command @code{show ip route} will also be
 
320
helpful.
 
321
@item
 
322
Please send your configuration file with the report.  If you specify
 
323
arguments to the configure script please note that too.
 
324
@end itemize
 
325
 
 
326
  Bug reports are very important for us to improve the quality of Quagga.
 
327
Quagga is still in the development stage, but please don't hesitate to
 
328
send a bug report to @uref{http://bugzilla.quagga.net}.