]>
Commit | Line | Data |
---|---|---|
76b89b4a | 1 | @node Overview |
718e3744 | 2 | @chapter Overview |
3 | @cindex Overview | |
4 | ||
76b89b4a | 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 | |
b0baf074 | 7 | as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, IS-IS, BGP-4, and BGP-4+ (@pxref{Supported |
f912cb4f | 8 | RFCs}). Quagga also supports special BGP Route Reflector and Route Server |
76b89b4a | 9 | behavior. In addition to traditional IPv4 routing protocols, Quagga also |
0ff4b9c9 | 10 | supports IPv6 routing protocols. With SNMP daemon which supports SMUX and AgentX |
76b89b4a | 11 | protocol, Quagga provides routing protocol MIBs (@pxref{SNMP Support}). |
718e3744 | 12 | |
76b89b4a | 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. | |
718e3744 | 18 | |
76b89b4a | 19 | Quagga is distributed under the @sc{gnu} General Public License. |
718e3744 | 20 | |
21 | @menu | |
76b89b4a | 22 | * About Quagga:: Basic information about Quagga |
7190f4ea | 23 | * System Architecture:: The Quagga system architecture |
718e3744 | 24 | * Supported Platforms:: Supported platforms and future plans |
f912cb4f | 25 | * Supported RFCs:: Supported RFCs |
7190f4ea | 26 | * How to get Quagga:: |
718e3744 | 27 | * Mailing List:: Mailing list information |
28 | * Bug Reports:: Mail address for bug data | |
29 | @end menu | |
30 | ||
76b89b4a | 31 | @node About Quagga |
718e3744 | 32 | @comment node-name, next, previous, up |
7190f4ea | 33 | @section About Quagga |
34 | @cindex About Quagga | |
718e3744 | 35 | |
76b89b4a | 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. | |
718e3744 | 40 | |
7190f4ea | 41 | A system with Quagga installed acts as a dedicated router. With Quagga, |
76b89b4a | 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. | |
718e3744 | 47 | |
7190f4ea | 48 | Adding to routing protocol support, Quagga can setup interface's flags, |
76b89b4a | 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 | |
b0baf074 | 55 | protocol support for protocols such as RIP, OSPF, IS-IS or BGP. |
718e3744 | 56 | |
57 | Traditionally, UNIX based router configuration is done by | |
58 | @command{ifconfig} and @command{route} commands. Status of routing | |
76b89b4a | 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. | |
718e3744 | 65 | |
b0baf074 DL |
66 | Currently, Quagga supports common unicast routing protocols, that is BGP, |
67 | OSPF, RIP and IS-IS. Upcoming for MPLS support, an implementation of LDP is | |
68 | currently being prepared for merging. Implementations of BFD and PIM-SSM | |
69 | (IPv4) also exist, but are not actively being worked on. | |
70 | ||
71 | The ultimate goal of the Quagga project is making a productive, quality, free | |
72 | TCP/IP routing software package. | |
718e3744 | 73 | |
76b89b4a | 74 | @node System Architecture |
718e3744 | 75 | @comment node-name, next, previous, up |
76 | @section System Architecture | |
77 | @cindex System architecture | |
78 | @cindex Software architecture | |
79 | @cindex Software internals | |
80 | ||
81 | Traditional routing software is made as a one process program which | |
7190f4ea | 82 | provides all of the routing protocol functionalities. Quagga takes a |
76b89b4a | 83 | different approach. It is made from a collection of several daemons that |
84 | work together to build the routing table. There may be several | |
718e3744 | 85 | protocol-specific routing daemons and zebra the kernel routing manager. |
86 | ||
87 | The @command{ripd} daemon handles the RIP protocol, while | |
88 | @command{ospfd} is a daemon which supports OSPF version 2. | |
89 | @command{bgpd} supports the BGP-4 protocol. For changing the kernel | |
90 | routing table and for redistribution of routes between different routing | |
76b89b4a | 91 | protocols, there is a kernel routing table manager @command{zebra} daemon. |
92 | It is easy to add a new routing protocol daemons to the entire routing | |
93 | system without affecting any other software. You need to run only the | |
94 | protocol daemon associated with routing protocols in use. Thus, user may | |
95 | run a specific daemon and send routing reports to a central routing console. | |
96 | ||
97 | There is no need for these daemons to be running on the same machine. You | |
98 | can even run several same protocol daemons on the same machine. This | |
718e3744 | 99 | architecture creates new possibilities for the routing system. |
100 | ||
101 | @example | |
102 | @group | |
103 | +----+ +----+ +-----+ +-----+ | |
104 | |bgpd| |ripd| |ospfd| |zebra| | |
105 | +----+ +----+ +-----+ +-----+ | |
106 | | | |
107 | +---------------------------|--+ | |
108 | | v | | |
109 | | UNIX Kernel routing table | | |
110 | | | | |
111 | +------------------------------+ | |
112 | ||
7190f4ea | 113 | Quagga System Architecture |
718e3744 | 114 | @end group |
115 | @end example | |
116 | ||
f912cb4f | 117 | Multi-process architecture brings extensibility, modularity and |
76b89b4a | 118 | maintainability. At the same time it also brings many configuration files |
119 | and terminal interfaces. Each daemon has it's own configuration file and | |
120 | terminal interface. When you configure a static route, it must be done in | |
121 | @command{zebra} configuration file. When you configure BGP network it must | |
122 | be done in @command{bgpd} configuration file. This can be a very annoying | |
123 | thing. To resolve the problem, Quagga provides integrated user interface | |
124 | shell called @command{vtysh}. @command{vtysh} connects to each daemon with | |
125 | UNIX domain socket and then works as a proxy for user input. | |
718e3744 | 126 | |
f912cb4f | 127 | Quagga was planned to use multi-threaded mechanism when it runs with a |
76b89b4a | 128 | kernel that supports multi-threads. But at the moment, the thread library |
129 | which comes with @sc{gnu}/Linux or FreeBSD has some problems with running | |
130 | reliable services such as routing software, so we don't use threads at all. | |
131 | Instead we use the @command{select(2)} system call for multiplexing the | |
132 | events. | |
133 | ||
134 | @node Supported Platforms | |
718e3744 | 135 | @comment node-name, next, previous, up |
136 | @section Supported Platforms | |
137 | ||
138 | @cindex Supported platforms | |
7190f4ea | 139 | @cindex Quagga on other systems |
718e3744 | 140 | @cindex Compatibility with other systems |
7190f4ea | 141 | @cindex Operating systems that support Quagga |
718e3744 | 142 | |
b0baf074 | 143 | Currently Quagga supports @sc{gnu}/Linux and BSD. Porting Quagga |
76b89b4a | 144 | to other platforms is not too difficult as platform dependent code should |
145 | most be limited to the @command{zebra} daemon. Protocol daemons are mostly | |
146 | platform independent. Please let us know when you find out Quagga runs on a | |
147 | platform which is not listed below. | |
148 | ||
f912cb4f | 149 | The list of officially supported platforms are listed below. Note that |
76b89b4a | 150 | Quagga may run correctly on other platforms, and may run with partial |
151 | functionality on further platforms. | |
718e3744 | 152 | |
153 | @sp 1 | |
154 | @itemize @bullet | |
155 | @item | |
b0baf074 DL |
156 | @sc{gnu}/Linux |
157 | @item | |
158 | FreeBSD | |
718e3744 | 159 | @item |
b0baf074 DL |
160 | NetBSD |
161 | @item | |
162 | OpenBSD | |
163 | @end itemize | |
164 | ||
165 | Versions of these platforms that are older than around 2 years from the point | |
166 | of their original release (in case of @sc{gnu}/Linux, this is since the kernel's | |
167 | release on kernel.org) may need some work. Similarly, the following platforms | |
168 | may work with some effort: | |
169 | ||
170 | @sp 1 | |
171 | @itemize @bullet | |
172 | @item | |
173 | Solaris | |
174 | @item | |
175 | Mac OSX | |
176 | @end itemize | |
177 | ||
178 | Also note that, in particular regarding proprietary platforms, compiler | |
179 | and C library choice will affect Quagga. Only recent versions of the | |
180 | following C compilers are well-tested: | |
181 | ||
182 | @sp 1 | |
183 | @itemize @bullet | |
718e3744 | 184 | @item |
b0baf074 | 185 | @sc{gnu}'s GCC |
718e3744 | 186 | @item |
b0baf074 | 187 | LLVM's clang |
718e3744 | 188 | @item |
b0baf074 | 189 | Intel's ICC |
718e3744 | 190 | @end itemize |
191 | ||
f912cb4f | 192 | @node Supported RFCs |
718e3744 | 193 | @comment node-name, next, previous, up |
f912cb4f | 194 | @section Supported RFCs |
718e3744 | 195 | |
196 | Below is the list of currently supported RFC's. | |
197 | ||
198 | @table @asis | |
199 | @item @asis{RFC1058} | |
200 | @cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.} | |
201 | ||
202 | @item @asis{RF2082} | |
203 | @cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.} | |
204 | ||
205 | @item @asis{RFC2453} | |
206 | @cite{RIP Version 2. G. Malkin. November 1998.} | |
207 | ||
208 | @item @asis{RFC2080} | |
209 | @cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.} | |
210 | ||
211 | @item @asis{RFC2328} | |
212 | @cite{OSPF Version 2. J. Moy. April 1998.} | |
213 | ||
eb3f463a | 214 | @item @asis{RFC2370} |
215 | @cite{The OSPF Opaque LSA Option R. Coltun. July 1998.} | |
216 | ||
217 | @item @asis{RFC3101} | |
218 | @cite{The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.} | |
219 | ||
718e3744 | 220 | @item @asis{RFC2740} |
221 | @cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.} | |
222 | ||
223 | @item @asis{RFC1771} | |
224 | @cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.} | |
225 | ||
226 | @item @asis{RFC1965} | |
227 | @cite{Autonomous System Confederations for BGP. P. Traina. June 1996.} | |
228 | ||
229 | @item @asis{RFC1997} | |
230 | @cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.} | |
231 | ||
232 | @item @asis{RFC2545} | |
233 | @cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.} | |
234 | ||
235 | @item @asis{RFC2796} | |
236 | @cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.} | |
237 | ||
238 | @item @asis{RFC2858} | |
239 | @cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.} | |
240 | ||
241 | @item @asis{RFC2842} | |
242 | @cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.} | |
243 | ||
e5b308d1 | 244 | @item @asis{RFC3137} |
245 | @cite{OSPF Stub Router Advertisement, A. Retana, L. Nguyen, R. White, A. Zinin, D. McPherson. June 2001} | |
718e3744 | 246 | @end table |
247 | ||
248 | When SNMP support is enabled, below RFC is also supported. | |
249 | ||
250 | @table @asis | |
251 | ||
252 | @item @asis{RFC1227} | |
253 | @cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.} | |
254 | ||
255 | @item @asis{RFC1657} | |
256 | @cite{Definitions of Managed Objects for the Fourth Version of the | |
257 | Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss, | |
258 | J. Chu, Editor. July 1994.} | |
259 | ||
260 | @item @asis{RFC1724} | |
261 | @cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.} | |
262 | ||
263 | @item @asis{RFC1850} | |
264 | @cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun. | |
265 | November 1995.} | |
266 | ||
0ff4b9c9 VB |
267 | @item @asis{RFC2741} |
268 | @cite{Agent Extensibility (AgentX) Protocol. M. Daniele, B. Wijnen. January 2000.} | |
269 | ||
718e3744 | 270 | @end table |
271 | ||
76b89b4a | 272 | @node How to get Quagga |
718e3744 | 273 | @comment node-name, next, previous, up |
7190f4ea | 274 | @section How to get Quagga |
718e3744 | 275 | |
f912cb4f | 276 | The official Quagga web-site is located at: |
718e3744 | 277 | |
f912cb4f | 278 | @uref{http://www.quagga.net/} |
718e3744 | 279 | |
f912cb4f PJ |
280 | and contains further information, as well as links to additional |
281 | resources. | |
718e3744 | 282 | |
f912cb4f PJ |
283 | @uref{http://www.quagga.net/,Quagga} is a fork of GNU Zebra, whose |
284 | web-site is located at: | |
718e3744 | 285 | |
76b89b4a | 286 | @uref{http://www.zebra.org/}. |
718e3744 | 287 | |
76b89b4a | 288 | @node Mailing List |
718e3744 | 289 | @comment node-name, next, previous, up |
290 | @section Mailing List | |
7190f4ea | 291 | @cindex How to get in touch with Quagga |
292 | @cindex Mailing Quagga | |
718e3744 | 293 | @cindex Contact information |
294 | @cindex Mailing lists | |
295 | ||
76b89b4a | 296 | There is a mailing list for discussions about Quagga. If you have any |
297 | comments or suggestions to Quagga, please subscribe to: | |
971a4497 | 298 | |
76b89b4a | 299 | @uref{http://lists.quagga.net/mailman/listinfo/quagga-users}. |
971a4497 | 300 | |
76b89b4a | 301 | The @uref{http://www.quagga.net/,,Quagga} site has further information on |
302 | the available mailing lists, see: | |
971a4497 | 303 | |
76b89b4a | 304 | @uref{http://www.quagga.net/lists.php} |
971a4497 | 305 | |
76b89b4a | 306 | @node Bug Reports |
718e3744 | 307 | @section Bug Reports |
308 | ||
309 | @cindex Bug Reports | |
310 | @cindex Bug hunting | |
311 | @cindex Found a bug? | |
312 | @cindex Reporting bugs | |
313 | @cindex Reporting software errors | |
314 | @cindex Errors in the software | |
315 | ||
6a22b1fc | 316 | If you think you have found a bug, please send a bug report to: |
317 | ||
318 | @uref{http://bugzilla.quagga.net} | |
319 | ||
320 | When you send a bug report, please be careful about the points below. | |
718e3744 | 321 | |
322 | @itemize @bullet | |
323 | @item | |
324 | Please note what kind of OS you are using. If you use the IPv6 stack | |
325 | please note that as well. | |
326 | @item | |
327 | Please show us the results of @code{netstat -rn} and @code{ifconfig -a}. | |
328 | Information from zebra's VTY command @code{show ip route} will also be | |
329 | helpful. | |
330 | @item | |
331 | Please send your configuration file with the report. If you specify | |
332 | arguments to the configure script please note that too. | |
333 | @end itemize | |
334 | ||
7190f4ea | 335 | Bug reports are very important for us to improve the quality of Quagga. |
336 | Quagga is still in the development stage, but please don't hesitate to | |
76b89b4a | 337 | send a bug report to @uref{http://bugzilla.quagga.net}. |