Annotation of embedaddon/quagga/doc/quagga.info-1, revision 1.1.1.1
1.1 misho 1: This is quagga.info, produced by makeinfo version 4.13 from quagga.texi.
2:
3: Copyright (C) 1999-2005 Kunihiro Ishiguro, et al.
4:
5: Permission is granted to make and distribute verbatim copies of
6: this manual provided the copyright notice and this permission
7: notice are preserved on all copies.
8:
9: Permission is granted to copy and distribute modified versions of
10: this manual under the conditions for verbatim copying, provided
11: that the entire resulting derived work is distributed under the
12: terms of a permission notice identical to this one.
13:
14: Permission is granted to copy and distribute translations of this
15: manual into another language, under the above conditions for
16: modified versions, except that this permission notice may be
17: stated in a translation approved by Kunihiro Ishiguro.
18:
19: INFO-DIR-SECTION Routing Software:
20: START-INFO-DIR-ENTRY
21: * Quagga: (quagga). The Quagga Software Routing Suite
22: END-INFO-DIR-ENTRY
23:
24: This file documents the Quagga Software Routing Suite which manages
25: common TCP/IP routing protocols.
26:
27: This is Edition 0.99.20, last updated 29 September 2011 of `The
28: Quagga Manual', for Quagga Version 0.99.20.
29:
30: Copyright (C) 1999-2005 Kunihiro Ishiguro, et al.
31:
32: Permission is granted to make and distribute verbatim copies of
33: this manual provided the copyright notice and this permission
34: notice are preserved on all copies.
35:
36: Permission is granted to copy and distribute modified versions of
37: this manual under the conditions for verbatim copying, provided
38: that the entire resulting derived work is distributed under the
39: terms of a permission notice identical to this one.
40:
41: Permission is granted to copy and distribute translations of this
42: manual into another language, under the above conditions for
43: modified versions, except that this permission notice may be
44: stated in a translation approved by Kunihiro Ishiguro.
45:
46:
47: File: quagga.info, Node: Top, Next: Overview, Up: (dir)
48:
49: Quagga
50: ******
51:
52: Quagga is an advanced routing software package that provides a suite of
53: TCP/IP based routing protocols. This is the Manual for Quagga 0.99.20.
54: Quagga is a fork of GNU Zebra.
55:
56: Copyright (C) 1999-2005 Kunihiro Ishiguro, et al.
57:
58: Permission is granted to make and distribute verbatim copies of
59: this manual provided the copyright notice and this permission
60: notice are preserved on all copies.
61:
62: Permission is granted to copy and distribute modified versions of
63: this manual under the conditions for verbatim copying, provided
64: that the entire resulting derived work is distributed under the
65: terms of a permission notice identical to this one.
66:
67: Permission is granted to copy and distribute translations of this
68: manual into another language, under the above conditions for
69: modified versions, except that this permission notice may be
70: stated in a translation approved by Kunihiro Ishiguro.
71:
72: * Menu:
73:
74: * Overview::
75: * Installation::
76: * Basic commands::
77: * Zebra::
78: * RIP::
79: * RIPng::
80: * OSPFv2::
81: * OSPFv3::
82: * BGP::
83: * Configuring Quagga as a Route Server::
84: * VTY shell::
85: * Filtering::
86: * Route Map::
87: * IPv6 Support::
88: * Kernel Interface::
89: * SNMP Support::
90: * Zebra Protocol::
91: * Packet Binary Dump Format::
92: * Command Index::
93: * VTY Key Index::
94: * Index::
95:
96:
97: File: quagga.info, Node: Overview, Next: Installation, Prev: Top, Up: Top
98:
99: 1 Overview
100: **********
101:
102: Quagga is a routing software package that provides TCP/IP based routing
103: services with routing protocols support such as RIPv1, RIPv2, RIPng,
104: OSPFv2, OSPFv3, BGP-4, and BGP-4+ (*note Supported RFCs::). Quagga also
105: supports special BGP Route Reflector and Route Server behavior. In
106: addition to traditional IPv4 routing protocols, Quagga also supports
107: IPv6 routing protocols. With SNMP daemon which supports SMUX protocol,
108: Quagga provides routing protocol MIBs (*note SNMP Support::).
109:
110: Quagga uses an advanced software architecture to provide you with a
111: high quality, multi server routing engine. Quagga has an interactive
112: user interface for each routing protocol and supports common client
113: commands. Due to this design, you can add new protocol daemons to
114: Quagga easily. You can use Quagga library as your program's client
115: user interface.
116:
117: Quagga is distributed under the GNU General Public License.
118:
119: * Menu:
120:
121: * About Quagga:: Basic information about Quagga
122: * System Architecture:: The Quagga system architecture
123: * Supported Platforms:: Supported platforms and future plans
124: * Supported RFCs:: Supported RFCs
125: * How to get Quagga::
126: * Mailing List:: Mailing list information
127: * Bug Reports:: Mail address for bug data
128:
129:
130: File: quagga.info, Node: About Quagga, Next: System Architecture, Up: Overview
131:
132: 1.1 About Quagga
133: ================
134:
135: Today, TCP/IP networks are covering all of the world. The Internet has
136: been deployed in many countries, companies, and to the home. When you
137: connect to the Internet your packet will pass many routers which have
138: TCP/IP routing functionality.
139:
140: A system with Quagga installed acts as a dedicated router. With
141: Quagga, your machine exchanges routing information with other routers
142: using routing protocols. Quagga uses this information to update the
143: kernel routing table so that the right data goes to the right place.
144: You can dynamically change the configuration and you may view routing
145: table information from the Quagga terminal interface.
146:
147: Adding to routing protocol support, Quagga can setup interface's
148: flags, interface's address, static routes and so on. If you have a
149: small network, or a stub network, or xDSL connection, configuring the
150: Quagga routing software is very easy. The only thing you have to do is
151: to set up the interfaces and put a few commands about static routes
152: and/or default routes. If the network is rather large, or if the
153: network structure changes frequently, you will want to take advantage
154: of Quagga's dynamic routing protocol support for protocols such as RIP,
155: OSPF or BGP.
156:
157: Traditionally, UNIX based router configuration is done by `ifconfig'
158: and `route' commands. Status of routing table is displayed by
159: `netstat' utility. Almost of these commands work only if the user has
160: root privileges. Quagga has a different system administration method.
161: There are two user modes in Quagga. One is normal mode, the other is
162: enable mode. Normal mode user can only view system status, enable mode
163: user can change system configuration. This UNIX account independent
164: feature will be great help to the router administrator.
165:
166: Currently, Quagga supports common unicast routing protocols.
167: Multicast routing protocols such as BGMP, PIM-SM, PIM-DM may be
168: supported in Quagga 2.0. MPLS support is going on. In the future,
169: TCP/IP filtering control, QoS control, diffserv configuration will be
170: added to Quagga. Quagga project's final goal is making a productive,
171: quality, free TCP/IP routing software.
172:
173:
174: File: quagga.info, Node: System Architecture, Next: Supported Platforms, Prev: About Quagga, Up: Overview
175:
176: 1.2 System Architecture
177: =======================
178:
179: Traditional routing software is made as a one process program which
180: provides all of the routing protocol functionalities. Quagga takes a
181: different approach. It is made from a collection of several daemons
182: that work together to build the routing table. There may be several
183: protocol-specific routing daemons and zebra the kernel routing manager.
184:
185: The `ripd' daemon handles the RIP protocol, while `ospfd' is a
186: daemon which supports OSPF version 2. `bgpd' supports the BGP-4
187: protocol. For changing the kernel routing table and for redistribution
188: of routes between different routing protocols, there is a kernel
189: routing table manager `zebra' daemon. It is easy to add a new routing
190: protocol daemons to the entire routing system without affecting any
191: other software. You need to run only the protocol daemon associated
192: with routing protocols in use. Thus, user may run a specific daemon
193: and send routing reports to a central routing console.
194:
195: There is no need for these daemons to be running on the same
196: machine. You can even run several same protocol daemons on the same
197: machine. This architecture creates new possibilities for the routing
198: system.
199:
200: +----+ +----+ +-----+ +-----+
201: |bgpd| |ripd| |ospfd| |zebra|
202: +----+ +----+ +-----+ +-----+
203: |
204: +---------------------------|--+
205: | v |
206: | UNIX Kernel routing table |
207: | |
208: +------------------------------+
209:
210: Quagga System Architecture
211:
212: Multi-process architecture brings extensibility, modularity and
213: maintainability. At the same time it also brings many configuration
214: files and terminal interfaces. Each daemon has it's own configuration
215: file and terminal interface. When you configure a static route, it
216: must be done in `zebra' configuration file. When you configure BGP
217: network it must be done in `bgpd' configuration file. This can be a
218: very annoying thing. To resolve the problem, Quagga provides
219: integrated user interface shell called `vtysh'. `vtysh' connects to
220: each daemon with UNIX domain socket and then works as a proxy for user
221: input.
222:
223: Quagga was planned to use multi-threaded mechanism when it runs with
224: a kernel that supports multi-threads. But at the moment, the thread
225: library which comes with GNU/Linux or FreeBSD has some problems with
226: running reliable services such as routing software, so we don't use
227: threads at all. Instead we use the `select(2)' system call for
228: multiplexing the events.
229:
230:
231: File: quagga.info, Node: Supported Platforms, Next: Supported RFCs, Prev: System Architecture, Up: Overview
232:
233: 1.3 Supported Platforms
234: =======================
235:
236: Currently Quagga supports GNU/Linux, BSD and Solaris. Porting Quagga to
237: other platforms is not too difficult as platform dependent code should
238: most be limited to the `zebra' daemon. Protocol daemons are mostly
239: platform independent. Please let us know when you find out Quagga runs
240: on a platform which is not listed below.
241:
242: The list of officially supported platforms are listed below. Note
243: that Quagga may run correctly on other platforms, and may run with
244: partial functionality on further platforms.
245:
246:
247: * GNU/Linux 2.4.x and higher
248:
249: * FreeBSD 4.x and higher
250:
251: * NetBSD 1.6 and higher
252:
253: * OpenBSD 2.5 and higher
254:
255: * Solaris 8 and higher
256:
257:
258: File: quagga.info, Node: Supported RFCs, Next: How to get Quagga, Prev: Supported Platforms, Up: Overview
259:
260: 1.4 Supported RFCs
261: ==================
262:
263: Below is the list of currently supported RFC's.
264:
265: RFC1058
266: `Routing Information Protocol. C.L. Hedrick. Jun-01-1988.'
267:
268: RF2082
269: `RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.'
270:
271: RFC2453
272: `RIP Version 2. G. Malkin. November 1998.'
273:
274: RFC2080
275: `RIPng for IPv6. G. Malkin, R. Minnear. January 1997.'
276:
277: RFC2328
278: `OSPF Version 2. J. Moy. April 1998.'
279:
280: RFC2370
281: `The OSPF Opaque LSA Option R. Coltun. July 1998.'
282:
283: RFC3101
284: `The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January
285: 2003.'
286:
287: RFC2740
288: `OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.'
289:
290: RFC1771
291: `A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March
292: 1995.'
293:
294: RFC1965
295: `Autonomous System Confederations for BGP. P. Traina. June 1996.'
296:
297: RFC1997
298: `BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August
299: 1996.'
300:
301: RFC2545
302: `Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain
303: Routing. P. Marques, F. Dupont. March 1999.'
304:
305: RFC2796
306: `BGP Route Reflection An alternative to full mesh IBGP. T. Bates &
307: R. Chandrasekeran. June 1996.'
308:
309: RFC2858
310: `Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R.
311: Chandra, D. Katz. June 2000.'
312:
313: RFC2842
314: `Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder.
315: May 2000.'
316:
317: RFC3137
318: `OSPF Stub Router Advertisement, A. Retana, L. Nguyen, R. White,
319: A. Zinin, D. McPherson. June 2001'
320:
321: When SNMP support is enabled, below RFC is also supported.
322:
323: RFC1227
324: `SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.'
325:
326: RFC1657
327: `Definitions of Managed Objects for the Fourth Version of the
328: Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
329: J. Chu, Editor. July 1994.'
330:
331: RFC1724
332: `RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.'
333:
334: RFC1850
335: `OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
336: November 1995.'
337:
338:
339:
340: File: quagga.info, Node: How to get Quagga, Next: Mailing List, Prev: Supported RFCs, Up: Overview
341:
342: 1.5 How to get Quagga
343: =====================
344:
345: The official Quagga web-site is located at:
346:
347: `http://www.quagga.net/'
348:
349: and contains further information, as well as links to additional
350: resources.
351:
352: Quagga (http://www.quagga.net/) is a fork of GNU Zebra, whose
353: web-site is located at:
354:
355: `http://www.zebra.org/'.
356:
357:
358: File: quagga.info, Node: Mailing List, Next: Bug Reports, Prev: How to get Quagga, Up: Overview
359:
360: 1.6 Mailing List
361: ================
362:
363: There is a mailing list for discussions about Quagga. If you have any
364: comments or suggestions to Quagga, please subscribe to:
365:
366: `http://lists.quagga.net/mailman/listinfo/quagga-users'.
367:
368: The Quagga site has further information on the available mailing
369: lists, see:
370:
371: `http://www.quagga.net/lists.php'
372:
373:
374: File: quagga.info, Node: Bug Reports, Prev: Mailing List, Up: Overview
375:
376: 1.7 Bug Reports
377: ===============
378:
379: If you think you have found a bug, please send a bug report to:
380:
381: `http://bugzilla.quagga.net'
382:
383: When you send a bug report, please be careful about the points below.
384:
385: * Please note what kind of OS you are using. If you use the IPv6
386: stack please note that as well.
387:
388: * Please show us the results of `netstat -rn' and `ifconfig -a'.
389: Information from zebra's VTY command `show ip route' will also be
390: helpful.
391:
392: * Please send your configuration file with the report. If you
393: specify arguments to the configure script please note that too.
394:
395: Bug reports are very important for us to improve the quality of
396: Quagga. Quagga is still in the development stage, but please don't
397: hesitate to send a bug report to `http://bugzilla.quagga.net'.
398:
399:
400: File: quagga.info, Node: Installation, Next: Basic commands, Prev: Overview, Up: Top
401:
402: 2 Installation
403: **************
404:
405: There are three steps for installing the software: configuration,
406: compilation, and installation.
407:
408: * Menu:
409:
410: * Configure the Software::
411: * Build the Software::
412: * Install the Software::
413:
414: The easiest way to get Quagga running is to issue the following
415: commands:
416:
417: % configure
418: % make
419: % make install
420:
421:
422: File: quagga.info, Node: Configure the Software, Next: Build the Software, Up: Installation
423:
424: 2.1 Configure the Software
425: ==========================
426:
427: * Menu:
428:
429: * The Configure script and its options::
430: * Least-Privilege support::
431: * Linux notes::
432:
433:
434: File: quagga.info, Node: The Configure script and its options, Next: Least-Privilege support, Up: Configure the Software
435:
436: 2.1.1 The Configure script and its options
437: ------------------------------------------
438:
439: Quagga has an excellent configure script which automatically detects
440: most host configurations. There are several additional configure
441: options you can use to turn off IPv6 support, to disable the
442: compilation of specific daemons, and to enable SNMP support.
443:
444: `--enable-guile'
445: Turn on compilation of the zebra-guile interpreter. You will need
446: the guile library to make this. zebra-guile implementation is not
447: yet finished. So this option is only useful for zebra-guile
448: developers.
449:
450: `--disable-ipv6'
451: Turn off IPv6 related features and daemons. Quagga configure
452: script automatically detects IPv6 stack. But sometimes you might
453: want to disable IPv6 support of Quagga.
454:
455: `--disable-zebra'
456: Do not build zebra daemon.
457:
458: `--disable-ripd'
459: Do not build ripd.
460:
461: `--disable-ripngd'
462: Do not build ripngd.
463:
464: `--disable-ospfd'
465: Do not build ospfd.
466:
467: `--disable-ospf6d'
468: Do not build ospf6d.
469:
470: `--disable-bgpd'
471: Do not build bgpd.
472:
473: `--disable-bgp-announce'
474: Make `bgpd' which does not make bgp announcements at all. This
475: feature is good for using `bgpd' as a BGP announcement listener.
476:
477: `--enable-netlink'
478: Force to enable GNU/Linux netlink interface. Quagga configure
479: script detects netlink interface by checking a header file. When
480: the header file does not match to the current running kernel,
481: configure script will not turn on netlink support.
482:
483: `--enable-snmp'
484: Enable SNMP support. By default, SNMP support is disabled.
485:
486: `--enable-opaque-lsa'
487: Enable support for Opaque LSAs (RFC2370) in ospfd.
488:
489: `--disable-ospfapi'
490: Disable support for OSPF-API, an API to interface directly with
491: ospfd. OSPF-API is enabled if -enable-opaque-lsa is set.
492:
493: `--disable-ospfclient'
494: Disable building of the example OSPF-API client.
495:
496: `--enable-ospf-te'
497: Enable support for OSPF Traffic Engineering Extension
498: (internet-draft) this requires support for Opaque LSAs.
499:
500: `--enable-multipath=ARG'
501: Enable support for Equal Cost Multipath. ARG is the maximum number
502: of ECMP paths to allow, set to 0 to allow unlimited number of
503: paths.
504:
505: `--enable-rtadv'
506: Enable support IPV6 router advertisement in zebra.
507:
508: You may specify any combination of the above options to the configure
509: script. By default, the executables are placed in `/usr/local/sbin'
510: and the configuration files in `/usr/local/etc'. The `/usr/local/'
511: installation prefix and other directories may be changed using the
512: following options to the configuration script.
513:
514: `--prefix=PREFIX'
515: Install architecture-independent files in PREFIX [/usr/local].
516:
517: `--sysconfdir=DIR'
518: Look for configuration files in DIR [PREFIX/etc]. Note that sample
519: configuration files will be installed here.
520:
521: `--localstatedir=DIR'
522: Configure zebra to use DIR for local state files, such as pid
523: files and unix sockets.
524:
525: % ./configure --disable-ipv6
526:
527: This command will configure zebra and the routing daemons.
528:
529:
530: File: quagga.info, Node: Least-Privilege support, Next: Linux notes, Prev: The Configure script and its options, Up: Configure the Software
531:
532: 2.1.2 Least-Privilege support
533: -----------------------------
534:
535: Additionally, you may configure zebra to drop its elevated privileges
536: shortly after startup and switch to another user. The configure script
537: will automatically try to configure this support. There are three
538: configure options to control the behaviour of Quagga daemons.
539:
540: `--enable-user=USER'
541: Switch to user ARG shortly after startup, and run as user ARG in
542: normal operation.
543:
544: `--enable-group=GROUP'
545: Switch real and effective group to GROUP shortly after startup.
546:
547: `--enable-vty-group=GROUP'
548: Create Unix Vty sockets (for use with vtysh) with group owndership
549: set to GROUP. This allows one to create a seperate group which is
550: restricted to accessing only the Vty sockets, hence allowing one to
551: delegate this group to individual users, or to run vtysh setgid to
552: this group.
553:
554: The default user and group which will be configured is 'quagga' if
555: no user or group is specified. Note that this user or group requires
556: write access to the local state directory (see -localstatedir) and
557: requires at least read access, and write access if you wish to allow
558: daemons to write out their configuration, to the configuration
559: directory (see -sysconfdir).
560:
561: On systems which have the 'libcap' capabilities manipulation library
562: (currently only linux), the quagga system will retain only minimal
563: capabilities required, further it will only raise these capabilities for
564: brief periods. On systems without libcap, quagga will run as the user
565: specified and only raise its uid back to uid 0 for brief periods.
566:
567:
568: File: quagga.info, Node: Linux notes, Prev: Least-Privilege support, Up: Configure the Software
569:
570: 2.1.3 Linux Notes
571: -----------------
572:
573: There are several options available only to GNU/Linux systems: (1). If
574: you use GNU/Linux, make sure that the current kernel configuration is
575: what you want. Quagga will run with any kernel configuration but some
576: recommendations do exist.
577:
578: CONFIG_NETLINK
579: Kernel/User netlink socket. This is a brand new feature which
580: enables an advanced interface between the Linux kernel and zebra
581: (*note Kernel Interface::).
582:
583: CONFIG_RTNETLINK
584: Routing messages. This makes it possible to receive netlink
585: routing messages. If you specify this option, `zebra' can detect
586: routing information updates directly from the kernel (*note Kernel
587: Interface::).
588:
589: CONFIG_IP_MULTICAST
590: IP: multicasting. This option should be specified when you use
591: `ripd' (*note RIP::) or `ospfd' (*note OSPFv2::) because these
592: protocols use multicast.
593:
594:
595: IPv6 support has been added in GNU/Linux kernel version 2.2. If you
596: try to use the Quagga IPv6 feature on a GNU/Linux kernel, please make
597: sure the following libraries have been installed. Please note that
598: these libraries will not be needed when you uses GNU C library 2.1 or
599: upper.
600:
601: `inet6-apps'
602: The `inet6-apps' package includes basic IPv6 related libraries such
603: as `inet_ntop' and `inet_pton'. Some basic IPv6 programs such as
604: `ping', `ftp', and `inetd' are also included. The `inet-apps' can
605: be found at `ftp://ftp.inner.net/pub/ipv6/'.
606:
607: `net-tools'
608: The `net-tools' package provides an IPv6 enabled interface and
609: routing utility. It contains `ifconfig', `route', `netstat', and
610: other tools. `net-tools' may be found at
611: `http://www.tazenda.demon.co.uk/phil/net-tools/'.
612:
613:
614: ---------- Footnotes ----------
615:
616: (1) GNU/Linux has very flexible kernel configuration features
617:
618:
619: File: quagga.info, Node: Build the Software, Next: Install the Software, Prev: Configure the Software, Up: Installation
620:
621: 2.2 Build the Software
622: ======================
623:
624: After configuring the software, you will need to compile it for your
625: system. Simply issue the command `make' in the root of the source
626: directory and the software will be compiled. If you have *any* problems
627: at this stage, be certain to send a bug report *Note Bug Reports::.
628:
629: % ./configure
630: .
631: .
632: .
633: ./configure output
634: .
635: .
636: .
637: % make
638:
639:
640: File: quagga.info, Node: Install the Software, Prev: Build the Software, Up: Installation
641:
642: 2.3 Install the Software
643: ========================
644:
645: Installing the software to your system consists of copying the compiled
646: programs and supporting files to a standard location. After the
647: installation process has completed, these files have been copied from
648: your work directory to `/usr/local/bin', and `/usr/local/etc'.
649:
650: To install the Quagga suite, issue the following command at your
651: shell prompt: `make install'.
652:
653: %
654: % make install
655: %
656:
657: Quagga daemons have their own terminal interface or VTY. After
658: installation, you have to setup each beast's port number to connect to
659: them. Please add the following entries to `/etc/services'.
660:
661: zebrasrv 2600/tcp # zebra service
662: zebra 2601/tcp # zebra vty
663: ripd 2602/tcp # RIPd vty
664: ripngd 2603/tcp # RIPngd vty
665: ospfd 2604/tcp # OSPFd vty
666: bgpd 2605/tcp # BGPd vty
667: ospf6d 2606/tcp # OSPF6d vty
668: ospfapi 2607/tcp # ospfapi
669: isisd 2608/tcp # ISISd vty
670:
671: If you use a FreeBSD newer than 2.2.8, the above entries are already
672: added to `/etc/services' so there is no need to add it. If you specify
673: a port number when starting the daemon, these entries may not be needed.
674:
675: You may need to make changes to the config files in
676: `/etc/quagga/*.conf'. *Note Config Commands::.
677:
678:
679: File: quagga.info, Node: Basic commands, Next: Zebra, Prev: Installation, Up: Top
680:
681: 3 Basic commands
682: ****************
683:
684: There are five routing daemons in use, and there is one manager daemon.
685: These daemons may be located on separate machines from the manager
686: daemon. Each of these daemons will listen on a particular port for
687: incoming VTY connections. The routing daemons are:
688:
689: * `ripd', `ripngd', `ospfd', `ospf6d', `bgpd'
690:
691: * `zebra'
692:
693: The following sections discuss commands common to all the routing
694: daemons.
695:
696: * Menu:
697:
698: * Terminal Mode Commands:: Common commands used in a VTY
699: * Config Commands:: Commands used in config files
700: * Common Invocation Options:: Starting the daemons
701: * Virtual Terminal Interfaces:: Interacting with the daemons
702:
703:
704: File: quagga.info, Node: Config Commands, Next: Common Invocation Options, Prev: Terminal Mode Commands, Up: Basic commands
705:
706: 3.1 Config Commands
707: ===================
708:
709: * Menu:
710:
711: * Basic Config Commands:: Some of the generic config commands
712: * Sample Config File:: An example config file
713:
714: In a config file, you can write the debugging options, a vty's
715: password, routing daemon configurations, a log file name, and so forth.
716: This information forms the initial command set for a routing beast as
717: it is starting.
718:
719: Config files are generally found in:
720:
721: `/etc/quagga/*.conf'
722:
723: Each of the daemons has its own config file. For example, zebra's
724: default config file name is:
725:
726: `/etc/quagga/zebra.conf'
727:
728: The daemon name plus `.conf' is the default config file name. You
729: can specify a config file using the `-f' or `--config-file' options
730: when starting the daemon.
731:
732:
733: File: quagga.info, Node: Basic Config Commands, Next: Sample Config File, Up: Config Commands
734:
735: 3.1.1 Basic Config Commands
736: ---------------------------
737:
738: -- Command: hostname HOSTNAME
739: Set hostname of the router.
740:
741: -- Command: password PASSWORD
742: Set password for vty interface. If there is no password, a vty
743: won't accept connections.
744:
745: -- Command: enable password PASSWORD
746: Set enable password.
747:
748: -- Command: log trap LEVEL
749: -- Command: no log trap
750: These commands are deprecated and are present only for historical
751: compatibility. The log trap command sets the current logging
752: level for all enabled logging destinations, and it sets the
753: default for all future logging commands that do not specify a
754: level. The normal default logging level is debugging. The `no'
755: form of the command resets the default level for future logging
756: commands to debugging, but it does not change the logging level of
757: existing logging destinations.
758:
759: -- Command: log stdout
760: -- Command: log stdout LEVEL
761: -- Command: no log stdout
762: Enable logging output to stdout. If the optional second argument
763: specifying the logging level is not present, the default logging
764: level (typically debugging, but can be changed using the
765: deprecated `log trap' command) will be used. The `no' form of the
766: command disables logging to stdout. The `level' argument must
767: have one of these values: emergencies, alerts, critical, errors,
768: warnings, notifications, informational, or debugging. Note that
769: the existing code logs its most important messages with severity
770: `errors'.
771:
772: -- Command: log file FILENAME
773: -- Command: log file FILENAME LEVEL
774: -- Command: no log file
775: If you want to log into a file, please specify `filename' as in
776: this example:
777: log file /var/log/quagga/bgpd.log informational
778: If the optional second argument specifying the logging level is
779: not present, the default logging level (typically debugging, but
780: can be changed using the deprecated `log trap' command) will be
781: used. The `no' form of the command disables logging to a file.
782:
783: Note: if you do not configure any file logging, and a daemon
784: crashes due to a signal or an assertion failure, it will attempt
785: to save the crash information in a file named
786: /var/tmp/quagga.<daemon name>.crashlog. For security reasons,
787: this will not happen if the file exists already, so it is
788: important to delete the file after reporting the crash information.
789:
790: -- Command: log syslog
791: -- Command: log syslog LEVEL
792: -- Command: no log syslog
793: Enable logging output to syslog. If the optional second argument
794: specifying the logging level is not present, the default logging
795: level (typically debugging, but can be changed using the
796: deprecated `log trap' command) will be used. The `no' form of the
797: command disables logging to syslog.
798:
799: -- Command: log monitor
800: -- Command: log monitor LEVEL
801: -- Command: no log monitor
802: Enable logging output to vty terminals that have enabled logging
803: using the `terminal monitor' command. By default, monitor logging
804: is enabled at the debugging level, but this command (or the
805: deprecated `log trap' command) can be used to change the monitor
806: logging level. If the optional second argument specifying the
807: logging level is not present, the default logging level (typically
808: debugging, but can be changed using the deprecated `log trap'
809: command) will be used. The `no' form of the command disables
810: logging to terminal monitors.
811:
812: -- Command: log facility FACILITY
813: -- Command: no log facility
814: This command changes the facility used in syslog messages. The
815: default facility is `daemon'. The `no' form of the command resets
816: the facility to the default `daemon' facility.
817:
818: -- Command: log record-priority
819: -- Command: no log record-priority
820: To include the severity in all messages logged to a file, to
821: stdout, or to a terminal monitor (i.e. anything except syslog),
822: use the `log record-priority' global configuration command. To
823: disable this option, use the `no' form of the command. By default,
824: the severity level is not included in logged messages. Note: some
825: versions of syslogd (including Solaris) can be configured to
826: include the facility and level in the messages emitted.
827:
828: -- Command: log timestamp precision <0-6>
829: -- Command: no log timestamp precision
830: This command sets the precision of log message timestamps to the
831: given number of digits after the decimal point. Currently, the
832: value must be in the range 0 to 6 (i.e. the maximum precision is
833: microseconds). To restore the default behavior (1-second
834: accuracy), use the `no' form of the command, or set the precision
835: explicitly to 0.
836:
837: log timestamp precision 3
838:
839: In this example, the precision is set to provide timestamps with
840: millisecond accuracy.
841:
842: -- Command: service password-encryption
843: Encrypt password.
844:
845: -- Command: service advanced-vty
846: Enable advanced mode VTY.
847:
848: -- Command: service terminal-length <0-512>
849: Set system wide line configuration. This configuration command
850: applies to all VTY interfaces.
851:
852: -- Command: line vty
853: Enter vty configuration mode.
854:
855: -- Command: banner motd default
856: Set default motd string.
857:
858: -- Command: no banner motd
859: No motd banner string will be printed.
860:
861: -- Line Command: exec-timeout MINUTE
862: -- Line Command: exec-timeout MINUTE SECOND
863: Set VTY connection timeout value. When only one argument is
864: specified it is used for timeout value in minutes. Optional
865: second argument is used for timeout value in seconds. Default
866: timeout value is 10 minutes. When timeout value is zero, it means
867: no timeout.
868:
869: -- Line Command: no exec-timeout
870: Do not perform timeout at all. This command is as same as
871: `exec-timeout 0 0'.
872:
873: -- Line Command: access-class ACCESS-LIST
874: Restrict vty connections with an access list.
875:
876:
877: File: quagga.info, Node: Sample Config File, Prev: Basic Config Commands, Up: Config Commands
878:
879: 3.1.2 Sample Config File
880: ------------------------
881:
882: Below is a sample configuration file for the zebra daemon.
883:
884: !
885: ! Zebra configuration file
886: !
887: hostname Router
888: password zebra
889: enable password zebra
890: !
891: log stdout
892: !
893: !
894:
895: '!' and '#' are comment characters. If the first character of the
896: word is one of the comment characters then from the rest of the line
897: forward will be ignored as a comment.
898:
899: password zebra!password
900:
901: If a comment character is not the first character of the word, it's a
902: normal character. So in the above example '!' will not be regarded as a
903: comment and the password is set to 'zebra!password'.
904:
905:
906: File: quagga.info, Node: Terminal Mode Commands, Next: Config Commands, Up: Basic commands
907:
908: 3.2 Terminal Mode Commands
909: ==========================
910:
911: -- Command: write terminal
912: Displays the current configuration to the vty interface.
913:
914: -- Command: write file
915: Write current configuration to configuration file.
916:
917: -- Command: configure terminal
918: Change to configuration mode. This command is the first step to
919: configuration.
920:
921: -- Command: terminal length <0-512>
922: Set terminal display length to <0-512>. If length is 0, no
923: display control is performed.
924:
925: -- Command: who
926: Show a list of currently connected vty sessions.
927:
928: -- Command: list
929: List all available commands.
930:
931: -- Command: show version
932: Show the current version of Quagga and its build host information.
933:
934: -- Command: show logging
935: Shows the current configuration of the logging system. This
936: includes the status of all logging destinations.
937:
938: -- Command: logmsg LEVEL MESSAGE
939: Send a message to all logging destinations that are enabled for
940: messages of the given severity.
941:
942:
943: File: quagga.info, Node: Common Invocation Options, Next: Virtual Terminal Interfaces, Prev: Config Commands, Up: Basic commands
944:
945: 3.3 Common Invocation Options
946: =============================
947:
948: These options apply to all Quagga daemons.
949:
950: `-d'
951: `--daemon'
952: Runs in daemon mode.
953:
954: `-f FILE'
955: `--config_file=FILE'
956: Set configuration file name.
957:
958: `-h'
959: `--help'
960: Display this help and exit.
961:
962: `-i FILE'
963: `--pid_file=FILE'
964: Upon startup the process identifier of the daemon is written to a
965: file, typically in `/var/run'. This file can be used by the init
966: system to implement commands such as `.../init.d/zebra status',
967: `.../init.d/zebra restart' or `.../init.d/zebra stop'.
968:
969: The file name is an run-time option rather than a configure-time
970: option so that multiple routing daemons can be run simultaneously.
971: This is useful when using Quagga to implement a routing looking
972: glass. One machine can be used to collect differing routing views
973: from differing points in the network.
974:
975: `-A ADDRESS'
976: `--vty_addr=ADDRESS'
977: Set the VTY local address to bind to. If set, the VTY socket will
978: only be bound to this address.
979:
980: `-P PORT'
981: `--vty_port=PORT'
982: Set the VTY TCP port number. If set to 0 then the TCP VTY sockets
983: will not be opened.
984:
985: `-u USER'
986: `--vty_addr=USER'
987: Set the user and group to run as.
988:
989: `-v'
990: `--version'
991: Print program version.
992:
993:
994:
995: File: quagga.info, Node: Virtual Terminal Interfaces, Prev: Common Invocation Options, Up: Basic commands
996:
997: 3.4 Virtual Terminal Interfaces
998: ===============================
999:
1000: VTY - Virtual Terminal [aka TeletYpe] Interface is a command line
1001: interface (CLI) for user interaction with the routing daemon.
1002:
1003: * Menu:
1004:
1005: * VTY Overview:: Basics about VTYs
1006: * VTY Modes:: View, Enable, and Other VTY modes
1007: * VTY CLI Commands:: Commands for movement, edition, and management
1008:
1009:
1010: File: quagga.info, Node: VTY Overview, Next: VTY Modes, Up: Virtual Terminal Interfaces
1011:
1012: 3.4.1 VTY Overview
1013: ------------------
1014:
1015: VTY stands for Virtual TeletYpe interface. It means you can connect to
1016: the daemon via the telnet protocol.
1017:
1018: To enable a VTY interface, you have to setup a VTY password. If
1019: there is no VTY password, one cannot connect to the VTY interface at
1020: all.
1021:
1022: % telnet localhost 2601
1023: Trying 127.0.0.1...
1024: Connected to localhost.
1025: Escape character is '^]'.
1026:
1027: Hello, this is Quagga (version 0.99.20)
1028: Copyright (C) 1999-2005 Kunihiro Ishiguro, et al.
1029:
1030: User Access Verification
1031:
1032: Password: XXXXX
1033: Router> ?
1034: enable Turn on privileged commands
1035: exit Exit current mode and down to previous mode
1036: help Description of the interactive help system
1037: list Print command list
1038: show Show running system information
1039: who Display who is on a vty
1040: Router> enable
1041: Password: XXXXX
1042: Router# configure terminal
1043: Router(config)# interface eth0
1044: Router(config-if)# ip address 10.0.0.1/8
1045: Router(config-if)# ^Z
1046: Router#
1047:
1048: '?' is very useful for looking up commands.
1049:
1050:
1051: File: quagga.info, Node: VTY Modes, Next: VTY CLI Commands, Prev: VTY Overview, Up: Virtual Terminal Interfaces
1052:
1053: 3.4.2 VTY Modes
1054: ---------------
1055:
1056: There are three basic VTY modes:
1057:
1058: * Menu:
1059:
1060: * VTY View Mode:: Mode for read-only interaction
1061: * VTY Enable Mode:: Mode for read-write interaction
1062: * VTY Other Modes:: Special modes (tftp, etc)
1063:
1064: There are commands that may be restricted to specific VTY modes.
1065:
1066:
1067: File: quagga.info, Node: VTY View Mode, Next: VTY Enable Mode, Up: VTY Modes
1068:
1069: 3.4.2.1 VTY View Mode
1070: .....................
1071:
1072: This mode is for read-only access to the CLI. One may exit the mode by
1073: leaving the system, or by entering `enable' mode.
1074:
1075:
1076: File: quagga.info, Node: VTY Enable Mode, Next: VTY Other Modes, Prev: VTY View Mode, Up: VTY Modes
1077:
1078: 3.4.2.2 VTY Enable Mode
1079: .......................
1080:
1081: This mode is for read-write access to the CLI. One may exit the mode by
1082: leaving the system, or by escaping to view mode.
1083:
1084:
1085: File: quagga.info, Node: VTY Other Modes, Prev: VTY Enable Mode, Up: VTY Modes
1086:
1087: 3.4.2.3 VTY Other Modes
1088: .......................
1089:
1090: This page is for describing other modes.
1091:
1092:
1093: File: quagga.info, Node: VTY CLI Commands, Prev: VTY Modes, Up: Virtual Terminal Interfaces
1094:
1095: 3.4.3 VTY CLI Commands
1096: ----------------------
1097:
1098: Commands that you may use at the command-line are described in the
1099: following three subsubsections.
1100:
1101: * Menu:
1102:
1103: * CLI Movement Commands:: Commands for moving the cursor about
1104: * CLI Editing Commands:: Commands for changing text
1105: * CLI Advanced Commands:: Other commands, session management and so on
1106:
1107:
1108: File: quagga.info, Node: CLI Movement Commands, Next: CLI Editing Commands, Up: VTY CLI Commands
1109:
1110: 3.4.3.1 CLI Movement Commands
1111: .............................
1112:
1113: These commands are used for moving the CLI cursor. The <C> character
1114: means press the Control Key.
1115:
1116: `C-f'
1117: `<RIGHT>'
1118: Move forward one character.
1119:
1120: `C-b'
1121: `<LEFT>'
1122: Move backward one character.
1123:
1124: `M-f'
1125: Move forward one word.
1126:
1127: `M-b'
1128: Move backward one word.
1129:
1130: `C-a'
1131: Move to the beginning of the line.
1132:
1133: `C-e'
1134: Move to the end of the line.
1135:
1136:
1137:
1138: File: quagga.info, Node: CLI Editing Commands, Next: CLI Advanced Commands, Prev: CLI Movement Commands, Up: VTY CLI Commands
1139:
1140: 3.4.3.2 CLI Editing Commands
1141: ............................
1142:
1143: These commands are used for editing text on a line. The <C> character
1144: means press the Control Key.
1145:
1146: `C-h'
1147: `<DEL>'
1148: Delete the character before point.
1149:
1150: `C-d'
1151: Delete the character after point.
1152:
1153: `M-d'
1154: Forward kill word.
1155:
1156: `C-w'
1157: Backward kill word.
1158:
1159: `C-k'
1160: Kill to the end of the line.
1161:
1162: `C-u'
1163: Kill line from the beginning, erasing input.
1164:
1165: `C-t'
1166: Transpose character.
1167:
1168:
1169:
1170: File: quagga.info, Node: CLI Advanced Commands, Prev: CLI Editing Commands, Up: VTY CLI Commands
1171:
1172: 3.4.3.3 CLI Advanced Commands
1173: .............................
1174:
1175: There are several additional CLI commands for command line completions,
1176: insta-help, and VTY session management.
1177:
1178: `C-c'
1179: Interrupt current input and moves to the next line.
1180:
1181: `C-z'
1182: End current configuration session and move to top node.
1183:
1184: `C-n'
1185: `<DOWN>'
1186: Move down to next line in the history buffer.
1187:
1188: `C-p'
1189: `<UP>'
1190: Move up to previous line in the history buffer.
1191:
1192: `TAB'
1193: Use command line completion by typing <TAB>.
1194:
1195: `'
1196: You can use command line help by typing `help' at the beginning of
1197: the line. Typing `?' at any point in the line will show possible
1198: completions.
1199:
1200:
1201:
1202: File: quagga.info, Node: Zebra, Next: RIP, Prev: Basic commands, Up: Top
1203:
1204: 4 Zebra
1205: *******
1206:
1207: `zebra' is an IP routing manager. It provides kernel routing table
1208: updates, interface lookups, and redistribution of routes between
1209: different routing protocols.
1210:
1211: * Menu:
1212:
1213: * Invoking zebra:: Running the program
1214: * Interface Commands:: Commands for zebra interfaces
1215: * Static Route Commands:: Commands for adding static routes
1216: * zebra Route Filtering:: Commands for zebra route filtering
1217: * zebra Terminal Mode Commands:: Commands for zebra's VTY
1218:
1219:
1220: File: quagga.info, Node: Invoking zebra, Next: Interface Commands, Up: Zebra
1221:
1222: 4.1 Invoking zebra
1223: ==================
1224:
1225: Besides the common invocation options (*note Common Invocation
1226: Options::), the `zebra' specific invocation options are listed below.
1227:
1228: `-b'
1229: `--batch'
1230: Runs in batch mode. `zebra' parses configuration file and
1231: terminates immediately.
1232:
1233: `-k'
1234: `--keep_kernel'
1235: When zebra starts up, don't delete old self inserted routes.
1236:
1237: `-r'
1238: `--retain'
1239: When program terminates, retain routes added by zebra.
1240:
1241:
1242:
1243: File: quagga.info, Node: Interface Commands, Next: Static Route Commands, Prev: Invoking zebra, Up: Zebra
1244:
1245: 4.2 Interface Commands
1246: ======================
1247:
1248: -- Command: interface IFNAME
1249:
1250: -- Interface Command: shutdown
1251: -- Interface Command: no shutdown
1252: Up or down the current interface.
1253:
1254: -- Interface Command: ip address ADDRESS/PREFIX
1255: -- Interface Command: ipv6 address ADDRESS/PREFIX
1256: -- Interface Command: no ip address ADDRESS/PREFIX
1257: -- Interface Command: no ipv6 address ADDRESS/PREFIX
1258: Set the IPv4 or IPv6 address/prefix for the interface.
1259:
1260: -- Interface Command: ip address ADDRESS/PREFIX secondary
1261: -- Interface Command: no ip address ADDRESS/PREFIX secondary
1262: Set the secondary flag for this address. This causes ospfd to not
1263: treat the address as a distinct subnet.
1264:
1265: -- Interface Command: description DESCRIPTION ...
1266: Set description for the interface.
1267:
1268: -- Interface Command: multicast
1269: -- Interface Command: no multicast
1270: Enable or disables multicast flag for the interface.
1271:
1272: -- Interface Command: bandwidth <1-10000000>
1273: -- Interface Command: no bandwidth <1-10000000>
1274: Set bandwidth value of the interface in kilobits/sec. This is for
1275: calculating OSPF cost. This command does not affect the actual
1276: device configuration.
1277:
1278: -- Interface Command: link-detect
1279: -- Interface Command: no link-detect
1280: Enable/disable link-detect on platforms which support this.
1281: Currently only Linux and Solaris, and only where network interface
1282: drivers support reporting link-state via the IFF_RUNNING flag.
1283:
1284:
1285: File: quagga.info, Node: Static Route Commands, Next: zebra Route Filtering, Prev: Interface Commands, Up: Zebra
1286:
1287: 4.3 Static Route Commands
1288: =========================
1289:
1290: Static routing is a very fundamental feature of routing technology. It
1291: defines static prefix and gateway.
1292:
1293: -- Command: ip route NETWORK GATEWAY
1294: NETWORK is destination prefix with format of A.B.C.D/M. GATEWAY
1295: is gateway for the prefix. When GATEWAY is A.B.C.D format. It is
1296: taken as a IPv4 address gateway. Otherwise it is treated as an
1297: interface name. If the interface name is NULL0 then zebra installs
1298: a blackhole route.
1299:
1300: ip route 10.0.0.0/8 10.0.0.2
1301: ip route 10.0.0.0/8 ppp0
1302: ip route 10.0.0.0/8 null0
1303:
1304: First example defines 10.0.0.0/8 static route with gateway
1305: 10.0.0.2. Second one defines the same prefix but with gateway to
1306: interface ppp0. The third install a blackhole route.
1307:
1308: -- Command: ip route NETWORK NETMASK GATEWAY
1309: This is alternate version of above command. When NETWORK is
1310: A.B.C.D format, user must define NETMASK value with A.B.C.D
1311: format. GATEWAY is same option as above command
1312:
1313: ip route 10.0.0.0 255.255.255.0 10.0.0.2
1314: ip route 10.0.0.0 255.255.255.0 ppp0
1315: ip route 10.0.0.0 255.255.255.0 null0
1316:
1317: These statements are equivalent to those in the previous example.
1318:
1319: -- Command: ip route NETWORK GATEWAY DISTANCE
1320: Installs the route with the specified distance.
1321:
1322: Multiple nexthop static route
1323:
1324: ip route 10.0.0.1/32 10.0.0.2
1325: ip route 10.0.0.1/32 10.0.0.3
1326: ip route 10.0.0.1/32 eth0
1327:
1328: If there is no route to 10.0.0.2 and 10.0.0.3, and interface eth0 is
1329: reachable, then the last route is installed into the kernel.
1330:
1331: If zebra has been compiled with multipath support, and both 10.0.0.2
1332: and 10.0.0.3 are reachable, zebra will install a multipath route via
1333: both nexthops, if the platform supports this.
1334:
1335: zebra> show ip route
1336: S> 10.0.0.1/32 [1/0] via 10.0.0.2 inactive
1337: via 10.0.0.3 inactive
1338: * is directly connected, eth0
1339:
1340: ip route 10.0.0.0/8 10.0.0.2
1341: ip route 10.0.0.0/8 10.0.0.3
1342: ip route 10.0.0.0/8 null0 255
1343:
1344: This will install a multihop route via the specified next-hops if
1345: they are reachable, as well as a high-metric blackhole route, which can
1346: be useful to prevent traffic destined for a prefix to match
1347: less-specific routes (eg default) should the specified gateways not be
1348: reachable. Eg:
1349:
1350: zebra> show ip route 10.0.0.0/8
1351: Routing entry for 10.0.0.0/8
1352: Known via "static", distance 1, metric 0
1353: 10.0.0.2 inactive
1354: 10.0.0.3 inactive
1355:
1356: Routing entry for 10.0.0.0/8
1357: Known via "static", distance 255, metric 0
1358: directly connected, Null0
1359:
1360: -- Command: ipv6 route NETWORK GATEWAY
1361: -- Command: ipv6 route NETWORK GATEWAY DISTANCE
1362: These behave similarly to their ipv4 counterparts.
1363:
1364: -- Command: table TABLENO
1365: Select the primary kernel routing table to be used. This only
1366: works for kernels supporting multiple routing tables (like
1367: GNU/Linux 2.2.x and later). After setting TABLENO with this
1368: command, static routes defined after this are added to the
1369: specified table.
1370:
1371:
1372: File: quagga.info, Node: zebra Route Filtering, Next: zebra Terminal Mode Commands, Prev: Static Route Commands, Up: Zebra
1373:
1374: 4.4 zebra Route Filtering
1375: =========================
1376:
1377: Zebra supports `prefix-list' and `route-map' to match routes received
1378: from other quagga components. The `permit'/`deny' facilities provided
1379: by these commands can be used to filter which routes zebra will install
1380: in the kernel.
1381:
1382: -- Command: ip protocol PROTOCOL route-map ROUTEMAP
1383: Apply a route-map filter to routes for the specified protocol.
1384: PROTOCOL can be any or one of system, kernel, connected, static,
1385: rip, ripng, ospf, ospf6, isis, bgp, hsls.
1386:
1387: -- Route Map: set src ADDRESS
1388: Within a route-map, set the preferred source address for matching
1389: routes when installing in the kernel.
1390:
1391: The following creates a prefix-list that matches all addresses, a route-map
1392: that sets the preferred source address, and applies the route-map to all
1393: `rip' routes.
1394:
1395: ip prefix-list ANY permit 0.0.0.0/0 le 32
1396: route-map RM1 permit 10
1397: match ip address prefix-list ANY
1398: set src 10.0.0.1
1399:
1400: ip protocol rip route-map RM1
1401:
1402:
1403: File: quagga.info, Node: zebra Terminal Mode Commands, Prev: zebra Route Filtering, Up: Zebra
1404:
1405: 4.5 zebra Terminal Mode Commands
1406: ================================
1407:
1408: -- Command: show ip route
1409: Display current routes which zebra holds in its database.
1410:
1411: Router# show ip route
1412: Codes: K - kernel route, C - connected, S - static, R - RIP,
1413: B - BGP * - FIB route.
1414:
1415: K* 0.0.0.0/0 203.181.89.241
1416: S 0.0.0.0/0 203.181.89.1
1417: C* 127.0.0.0/8 lo
1418: C* 203.181.89.240/28 eth0
1419:
1420: -- Command: show ipv6 route
1421:
1422: -- Command: show interface
1423:
1424: -- Command: show ip prefix-list [NAME]
1425:
1426: -- Command: show route-map [NAME]
1427:
1428: -- Command: show ip protocol
1429:
1430: -- Command: show ipforward
1431: Display whether the host's IP forwarding function is enabled or
1432: not. Almost any UNIX kernel can be configured with IP forwarding
1433: disabled. If so, the box can't work as a router.
1434:
1435: -- Command: show ipv6forward
1436: Display whether the host's IP v6 forwarding is enabled or not.
1437:
1438:
1439: File: quagga.info, Node: RIP, Next: RIPng, Prev: Zebra, Up: Top
1440:
1441: 5 RIP
1442: *****
1443:
1444: RIP - Routing Information Protocol is widely deployed interior gateway
1445: protocol. RIP was developed in the 1970s at Xerox Labs as part of the
1446: XNS routing protocol. RIP is a "distance-vector" protocol and is based
1447: on the "Bellman-Ford" algorithms. As a distance-vector protocol, RIP
1448: router send updates to its neighbors periodically, thus allowing the
1449: convergence to a known topology. In each update, the distance to any
1450: given network will be broadcasted to its neighboring router.
1451:
1452: `ripd' supports RIP version 2 as described in RFC2453 and RIP
1453: version 1 as described in RFC1058.
1454:
1455: * Menu:
1456:
1457: * Starting and Stopping ripd::
1458: * RIP Configuration::
1459: * RIP Version Control::
1460: * How to Announce RIP route::
1461: * Filtering RIP Routes::
1462: * RIP Metric Manipulation::
1463: * RIP distance::
1464: * RIP route-map::
1465: * RIP Authentication::
1466: * RIP Timers::
1467: * Show RIP Information::
1468: * RIP Debug Commands::
1469:
1470:
1471: File: quagga.info, Node: Starting and Stopping ripd, Next: RIP Configuration, Up: RIP
1472:
1473: 5.1 Starting and Stopping ripd
1474: ==============================
1475:
1476: The default configuration file name of `ripd''s is `ripd.conf'. When
1477: invocation `ripd' searches directory /etc/quagga. If `ripd.conf' is
1478: not there next search current directory.
1479:
1480: RIP uses UDP port 520 to send and receive RIP packets. So the user
1481: must have the capability to bind the port, generally this means that
1482: the user must have superuser privileges. RIP protocol requires
1483: interface information maintained by `zebra' daemon. So running `zebra'
1484: is mandatory to run `ripd'. Thus minimum sequence for running RIP is
1485: like below:
1486:
1487: # zebra -d
1488: # ripd -d
1489:
1490: Please note that `zebra' must be invoked before `ripd'.
1491:
1492: To stop `ripd'. Please use `kill `cat /var/run/ripd.pid`'. Certain
1493: signals have special meaningss to `ripd'.
1494:
1495: `SIGHUP'
1496: Reload configuration file `ripd.conf'. All configurations are
1497: reseted. All routes learned so far are cleared and removed from
1498: routing table.
1499:
1500: `SIGUSR1'
1501: Rotate `ripd' logfile.
1502:
1503: `SIGINT'
1504: `SIGTERM'
1505: `ripd' sweeps all installed RIP routes then terminates properly.
1506:
1507: `ripd' invocation options. Common options that can be specified
1508: (*note Common Invocation Options::).
1509:
1510: `-r'
1511: `--retain'
1512: When the program terminates, retain routes added by `ripd'.
1513:
1514: * Menu:
1515:
1516: * RIP netmask::
1517:
1518:
1519: File: quagga.info, Node: RIP netmask, Up: Starting and Stopping ripd
1520:
1521: 5.1.1 RIP netmask
1522: -----------------
1523:
1524: The netmask features of `ripd' support both version 1 and version 2 of
1525: RIP. Version 1 of RIP originally contained no netmask information. In
1526: RIP version 1, network classes were originally used to determine the
1527: size of the netmask. Class A networks use 8 bits of mask, Class B
1528: networks use 16 bits of masks, while Class C networks use 24 bits of
1529: mask. Today, the most widely used method of a network mask is assigned
1530: to the packet on the basis of the interface that received the packet.
1531: Version 2 of RIP supports a variable length subnet mask (VLSM). By
1532: extending the subnet mask, the mask can be divided and reused. Each
1533: subnet can be used for different purposes such as large to middle size
1534: LANs and WAN links. Quagga `ripd' does not support the non-sequential
1535: netmasks that are included in RIP Version 2.
1536:
1537: In a case of similar information with the same prefix and metric, the
1538: old information will be suppressed. Ripd does not currently support
1539: equal cost multipath routing.
1540:
1541:
1542: File: quagga.info, Node: RIP Configuration, Next: RIP Version Control, Prev: Starting and Stopping ripd, Up: RIP
1543:
1544: 5.2 RIP Configuration
1545: =====================
1546:
1547: -- Command: router rip
1548: The `router rip' command is necessary to enable RIP. To disable
1549: RIP, use the `no router rip' command. RIP must be enabled before
1550: carrying out any of the RIP commands.
1551:
1552: -- Command: no router rip
1553: Disable RIP.
1554:
1555: -- RIP Command: network NETWORK
1556: -- RIP Command: no network NETWORK
1557: Set the RIP enable interface by NETWORK. The interfaces which
1558: have addresses matching with NETWORK are enabled.
1559:
1560: This group of commands either enables or disables RIP interfaces
1561: between certain numbers of a specified network address. For
1562: example, if the network for 10.0.0.0/24 is RIP enabled, this would
1563: result in all the addresses from 10.0.0.0 to 10.0.0.255 being
1564: enabled for RIP. The `no network' command will disable RIP for
1565: the specified network.
1566:
1567: -- RIP Command: network IFNAME
1568: -- RIP Command: no network IFNAME
1569: Set a RIP enabled interface by IFNAME. Both the sending and
1570: receiving of RIP packets will be enabled on the port specified in
1571: the `network ifname' command. The `no network ifname' command
1572: will disable RIP on the specified interface.
1573:
1574: -- RIP Command: neighbor A.B.C.D
1575: -- RIP Command: no neighbor A.B.C.D
1576: Specify RIP neighbor. When a neighbor doesn't understand
1577: multicast, this command is used to specify neighbors. In some
1578: cases, not all routers will be able to understand multicasting,
1579: where packets are sent to a network or a group of addresses. In a
1580: situation where a neighbor cannot process multicast packets, it is
1581: necessary to establish a direct link between routers. The
1582: neighbor command allows the network administrator to specify a
1583: router as a RIP neighbor. The `no neighbor a.b.c.d' command will
1584: disable the RIP neighbor.
1585:
1586: Below is very simple RIP configuration. Interface `eth0' and
1587: interface which address match to `10.0.0.0/8' are RIP enabled.
1588:
1589: !
1590: router rip
1591: network 10.0.0.0/8
1592: network eth0
1593: !
1594:
1595: Passive interface
1596:
1597: -- RIP command: passive-interface (IFNAME|default)
1598: -- RIP command: no passive-interface IFNAME
1599: This command sets the specified interface to passive mode. On
1600: passive mode interface, all receiving packets are processed as
1601: normal and ripd does not send either multicast or unicast RIP
1602: packets except to RIP neighbors specified with `neighbor' command.
1603: The interface may be specified as DEFAULT to make ripd default to
1604: passive on all interfaces.
1605:
1606: The default is to be passive on all interfaces.
1607:
1608: RIP split-horizon
1609:
1610: -- Interface command: ip split-horizon
1611: -- Interface command: no ip split-horizon
1612: Control split-horizon on the interface. Default is `ip
1613: split-horizon'. If you don't perform split-horizon on the
1614: interface, please specify `no ip split-horizon'.
1615:
1616:
1617: File: quagga.info, Node: RIP Version Control, Next: How to Announce RIP route, Prev: RIP Configuration, Up: RIP
1618:
1619: 5.3 RIP Version Control
1620: =======================
1621:
1622: RIP can be configured to send either Version 1 or Version 2 packets.
1623: The default is to send RIPv2 while accepting both RIPv1 and RIPv2 (and
1624: replying with packets of the appropriate version for REQUESTS /
1625: triggered updates). The version to receive and send can be specified
1626: globally, and further overriden on a per-interface basis if needs be
1627: for send and receive seperately (see below).
1628:
1629: It is important to note that RIPv1 can not be authenticated. Further,
1630: if RIPv1 is enabled then RIP will reply to REQUEST packets, sending the
1631: state of its RIP routing table to any remote routers that ask on
1632: demand. For a more detailed discussion on the security implications of
1633: RIPv1 see *note RIP Authentication::.
1634:
1635: -- RIP Command: version VERSION
1636: Set RIP version to accept for reads and send. VERSION can be
1637: either `1" or `2".
1638:
1639: Disabling RIPv1 by specifying version 2 is STRONGLY encouraged,
1640: *Note RIP Authentication::. This may become the default in a future
1641: release.
1642:
1643: Default: Send Version 2, and accept either version.
1644:
1645: -- RIP Command: no version
1646: Reset the global version setting back to the default.
1647:
1648: -- Interface command: ip rip send version VERSION
1649: VERSION can be `1', `2' or `1 2'.
1650:
1651: This interface command overrides the global rip version setting,
1652: and selects which version of RIP to send packets with, for this
1653: interface specifically. Choice of RIP Version 1, RIP Version 2, or
1654: both versions. In the latter case, where `1 2' is specified,
1655: packets will be both broadcast and multicast.
1656:
1657: Default: Send packets according to the global version (version 2)
1658:
1659: -- Interface command: ip rip receive version VERSION
1660: VERSION can be `1', `2' or `1 2'.
1661:
1662: This interface command overrides the global rip version setting,
1663: and selects which versions of RIP packets will be accepted on this
1664: interface. Choice of RIP Version 1, RIP Version 2, or both.
1665:
1666: Default: Accept packets according to the global setting (both 1
1667: and 2).
1668:
1669:
1670: File: quagga.info, Node: How to Announce RIP route, Next: Filtering RIP Routes, Prev: RIP Version Control, Up: RIP
1671:
1672: 5.4 How to Announce RIP route
1673: =============================
1674:
1675: -- RIP command: redistribute kernel
1676: -- RIP command: redistribute kernel metric <0-16>
1677: -- RIP command: redistribute kernel route-map ROUTE-MAP
1678: -- RIP command: no redistribute kernel
1679: `redistribute kernel' redistributes routing information from
1680: kernel route entries into the RIP tables. `no redistribute kernel'
1681: disables the routes.
1682:
1683: -- RIP command: redistribute static
1684: -- RIP command: redistribute static metric <0-16>
1685: -- RIP command: redistribute static route-map ROUTE-MAP
1686: -- RIP command: no redistribute static
1687: `redistribute static' redistributes routing information from
1688: static route entries into the RIP tables. `no redistribute static'
1689: disables the routes.
1690:
1691: -- RIP command: redistribute connected
1692: -- RIP command: redistribute connected metric <0-16>
1693: -- RIP command: redistribute connected route-map ROUTE-MAP
1694: -- RIP command: no redistribute connected
1695: Redistribute connected routes into the RIP tables. `no
1696: redistribute connected' disables the connected routes in the RIP
1697: tables. This command redistribute connected of the interface
1698: which RIP disabled. The connected route on RIP enabled interface
1699: is announced by default.
1700:
1701: -- RIP command: redistribute ospf
1702: -- RIP command: redistribute ospf metric <0-16>
1703: -- RIP command: redistribute ospf route-map ROUTE-MAP
1704: -- RIP command: no redistribute ospf
1705: `redistribute ospf' redistributes routing information from ospf
1706: route entries into the RIP tables. `no redistribute ospf' disables
1707: the routes.
1708:
1709: -- RIP command: redistribute bgp
1710: -- RIP command: redistribute bgp metric <0-16>
1711: -- RIP command: redistribute bgp route-map ROUTE-MAP
1712: -- RIP command: no redistribute bgp
1713: `redistribute bgp' redistributes routing information from bgp
1714: route entries into the RIP tables. `no redistribute bgp' disables
1715: the routes.
1716:
1717: If you want to specify RIP only static routes:
1718:
1719: -- RIP command: default-information originate
1720:
1721: -- RIP command: route A.B.C.D/M
1722: -- RIP command: no route A.B.C.D/M
1723: This command is specific to Quagga. The `route' command makes a
1724: static route only inside RIP. This command should be used only by
1725: advanced users who are particularly knowledgeable about the RIP
1726: protocol. In most cases, we recommend creating a static route in
1727: Quagga and redistributing it in RIP using `redistribute static'.
1728:
1729:
1730: File: quagga.info, Node: Filtering RIP Routes, Next: RIP Metric Manipulation, Prev: How to Announce RIP route, Up: RIP
1731:
1732: 5.5 Filtering RIP Routes
1733: ========================
1734:
1735: RIP routes can be filtered by a distribute-list.
1736:
1737: -- Command: distribute-list ACCESS_LIST DIRECT IFNAME
1738: You can apply access lists to the interface with a
1739: `distribute-list' command. ACCESS_LIST is the access list name.
1740: DIRECT is `in' or `out'. If DIRECT is `in' the access list is
1741: applied to input packets.
1742:
1743: The `distribute-list' command can be used to filter the RIP path.
1744: `distribute-list' can apply access-lists to a chosen interface.
1745: First, one should specify the access-list. Next, the name of the
1746: access-list is used in the distribute-list command. For example,
1747: in the following configuration `eth0' will permit only the paths
1748: that match the route 10.0.0.0/8
1749:
1750: !
1751: router rip
1752: distribute-list private in eth0
1753: !
1754: access-list private permit 10 10.0.0.0/8
1755: access-list private deny any
1756: !
1757:
1758: `distribute-list' can be applied to both incoming and outgoing data.
1759:
1760: -- Command: distribute-list prefix PREFIX_LIST (in|out) IFNAME
1761: You can apply prefix lists to the interface with a
1762: `distribute-list' command. PREFIX_LIST is the prefix list name.
1763: Next is the direction of `in' or `out'. If DIRECT is `in' the
1764: access list is applied to input packets.
1765:
1766:
1767: File: quagga.info, Node: RIP Metric Manipulation, Next: RIP distance, Prev: Filtering RIP Routes, Up: RIP
1768:
1769: 5.6 RIP Metric Manipulation
1770: ===========================
1771:
1772: RIP metric is a value for distance for the network. Usually `ripd'
1773: increment the metric when the network information is received.
1774: Redistributed routes' metric is set to 1.
1775:
1776: -- RIP command: default-metric <1-16>
1777: -- RIP command: no default-metric <1-16>
1778: This command modifies the default metric value for redistributed
1779: routes. The default value is 1. This command does not affect
1780: connected route even if it is redistributed by `redistribute
1781: connected'. To modify connected route's metric value, please use
1782: `redistribute connected metric' or `route-map'. `offset-list' also
1783: affects connected routes.
1784:
1785: -- RIP command: offset-list ACCESS-LIST (in|out)
1786: -- RIP command: offset-list ACCESS-LIST (in|out) IFNAME
1787:
1788:
1789: File: quagga.info, Node: RIP distance, Next: RIP route-map, Prev: RIP Metric Manipulation, Up: RIP
1790:
1791: 5.7 RIP distance
1792: ================
1793:
1794: Distance value is used in zebra daemon. Default RIP distance is 120.
1795:
1796: -- RIP command: distance <1-255>
1797: -- RIP command: no distance <1-255>
1798: Set default RIP distance to specified value.
1799:
1800: -- RIP command: distance <1-255> A.B.C.D/M
1801: -- RIP command: no distance <1-255> A.B.C.D/M
1802: Set default RIP distance to specified value when the route's
1803: source IP address matches the specified prefix.
1804:
1805: -- RIP command: distance <1-255> A.B.C.D/M ACCESS-LIST
1806: -- RIP command: no distance <1-255> A.B.C.D/M ACCESS-LIST
1807: Set default RIP distance to specified value when the route's
1808: source IP address matches the specified prefix and the specified
1809: access-list.
1810:
1811:
1812: File: quagga.info, Node: RIP route-map, Next: RIP Authentication, Prev: RIP distance, Up: RIP
1813:
1814: 5.8 RIP route-map
1815: =================
1816:
1817: Usage of `ripd''s route-map support.
1818:
1819: Optional argument route-map MAP_NAME can be added to each
1820: `redistribute' statement.
1821:
1822: redistribute static [route-map MAP_NAME]
1823: redistribute connected [route-map MAP_NAME]
1824: .....
1825:
1826: Cisco applies route-map _before_ routes will exported to rip route
1827: table. In current Quagga's test implementation, `ripd' applies
1828: route-map after routes are listed in the route table and before routes
1829: will be announced to an interface (something like output filter). I
1830: think it is not so clear, but it is draft and it may be changed at
1831: future.
1832:
1833: Route-map statement (*note Route Map::) is needed to use route-map
1834: functionality.
1835:
1836: -- Route Map: match interface WORD
1837: This command match to incoming interface. Notation of this match
1838: is different from Cisco. Cisco uses a list of interfaces - NAME1
1839: NAME2 ... NAMEN. Ripd allows only one name (maybe will change in
1840: the future). Next - Cisco means interface which includes next-hop
1841: of routes (it is somewhat similar to "ip next-hop" statement).
1842: Ripd means interface where this route will be sent. This
1843: difference is because "next-hop" of same routes which sends to
1844: different interfaces must be different. Maybe it'd be better to
1845: made new matches - say "match interface-out NAME" or something
1846: like that.
1847:
1848: -- Route Map: match ip address WORD
1849: -- Route Map: match ip address prefix-list WORD
1850: Match if route destination is permitted by access-list.
1851:
1852: -- Route Map: match ip next-hop A.B.C.D
1853: Cisco uses here <access-list>, `ripd' IPv4 address. Match if route
1854: has this next-hop (meaning next-hop listed in the rip route table
1855: - "show ip rip")
1856:
1857: -- Route Map: match metric <0-4294967295>
1858: This command match to the metric value of RIP updates. For other
1859: protocol compatibility metric range is shown as <0-4294967295>.
1860: But for RIP protocol only the value range <0-16> make sense.
1861:
1862: -- Route Map: set ip next-hop A.B.C.D
1863: This command set next hop value in RIPv2 protocol. This command
1864: does not affect RIPv1 because there is no next hop field in the
1865: packet.
1866:
1867: -- Route Map: set metric <0-4294967295>
1868: Set a metric for matched route when sending announcement. The
1869: metric value range is very large for compatibility with other
1870: protocols. For RIP, valid metric values are from 1 to 16.
1871:
1872:
1873: File: quagga.info, Node: RIP Authentication, Next: RIP Timers, Prev: RIP route-map, Up: RIP
1874:
1875: 5.9 RIP Authentication
1876: ======================
1877:
1878: RIPv2 allows packets to be authenticated via either an insecure plain
1879: text password, included with the packet, or via a more secure MD5 based
1880: HMAC (keyed-Hashing for Message AuthentiCation), RIPv1 can not be
1881: authenticated at all, thus when authentication is configured `ripd'
1882: will discard routing updates received via RIPv1 packets.
1883:
1884: However, unless RIPv1 reception is disabled entirely, *Note RIP
1885: Version Control::, RIPv1 REQUEST packets which are received, which
1886: query the router for routing information, will still be honoured by
1887: `ripd', and `ripd' WILL reply to such packets. This allows `ripd' to
1888: honour such REQUESTs (which sometimes is used by old equipment and very
1889: simple devices to bootstrap their default route), while still providing
1890: security for route updates which are received.
1891:
1892: In short: Enabling authentication prevents routes being updated by
1893: unauthenticated remote routers, but still can allow routes (I.e. the
1894: entire RIP routing table) to be queried remotely, potentially by anyone
1895: on the internet, via RIPv1.
1896:
1897: To prevent such unauthenticated querying of routes disable RIPv1,
1898: *Note RIP Version Control::.
1899:
1900: -- Interface command: ip rip authentication mode md5
1901: -- Interface command: no ip rip authentication mode md5
1902: Set the interface with RIPv2 MD5 authentication.
1903:
1904: -- Interface command: ip rip authentication mode text
1905: -- Interface command: no ip rip authentication mode text
1906: Set the interface with RIPv2 simple password authentication.
1907:
1908: -- Interface command: ip rip authentication string STRING
1909: -- Interface command: no ip rip authentication string STRING
1910: RIP version 2 has simple text authentication. This command sets
1911: authentication string. The string must be shorter than 16
1912: characters.
1913:
1914: -- Interface command: ip rip authentication key-chain KEY-CHAIN
1915: -- Interface command: no ip rip authentication key-chain KEY-CHAIN
1916: Specifiy Keyed MD5 chain.
1917:
1918: !
1919: key chain test
1920: key 1
1921: key-string test
1922: !
1923: interface eth1
1924: ip rip authentication mode md5
1925: ip rip authentication key-chain test
1926: !
1927:
1928:
1929: File: quagga.info, Node: RIP Timers, Next: Show RIP Information, Prev: RIP Authentication, Up: RIP
1930:
1931: 5.10 RIP Timers
1932: ===============
1933:
1934: -- RIP command: timers basic UPDATE TIMEOUT GARBAGE
1935: RIP protocol has several timers. User can configure those timers'
1936: values by `timers basic' command.
1937:
1938: The default settings for the timers are as follows:
1939:
1940: * The update timer is 30 seconds. Every update timer seconds,
1941: the RIP process is awakened to send an unsolicited Response
1942: message containing the complete routing table to all
1943: neighboring RIP routers.
1944:
1945: * The timeout timer is 180 seconds. Upon expiration of the
1946: timeout, the route is no longer valid; however, it is
1947: retained in the routing table for a short time so that
1948: neighbors can be notified that the route has been dropped.
1949:
1950: * The garbage collect timer is 120 seconds. Upon expiration of
1951: the garbage-collection timer, the route is finally removed
1952: from the routing table.
1953:
1954:
1955: The `timers basic' command allows the the default values of the
1956: timers listed above to be changed.
1957:
1958: -- RIP command: no timers basic
1959: The `no timers basic' command will reset the timers to the default
1960: settings listed above.
1961:
1962:
1963: File: quagga.info, Node: Show RIP Information, Next: RIP Debug Commands, Prev: RIP Timers, Up: RIP
1964:
1965: 5.11 Show RIP Information
1966: =========================
1967:
1968: To display RIP routes.
1969:
1970: -- Command: show ip rip
1971: Show RIP routes.
1972:
1973: The command displays all RIP routes. For routes that are received
1974: through RIP, this command will display the time the packet was sent and
1975: the tag information. This command will also display this information
1976: for routes redistributed into RIP.
1977:
1978: -- Command: show ip protocols
1979: The command displays current RIP status. It includes RIP timer,
1980: filtering, version, RIP enabled interface and RIP peer inforation.
1981:
1982: ripd> show ip protocols
1983: Routing Protocol is "rip"
1984: Sending updates every 30 seconds with +/-50%, next due in 35 seconds
1985: Timeout after 180 seconds, garbage collect after 120 seconds
1986: Outgoing update filter list for all interface is not set
1987: Incoming update filter list for all interface is not set
1988: Default redistribution metric is 1
1989: Redistributing: kernel connected
1990: Default version control: send version 2, receive version 2
1991: Interface Send Recv
1992: Routing for Networks:
1993: eth0
1994: eth1
1995: 1.1.1.1
1996: 203.181.89.241
1997: Routing Information Sources:
1998: Gateway BadPackets BadRoutes Distance Last Update
1999:
2000:
2001: File: quagga.info, Node: RIP Debug Commands, Prev: Show RIP Information, Up: RIP
2002:
2003: 5.12 RIP Debug Commands
2004: =======================
2005:
2006: Debug for RIP protocol.
2007:
2008: -- Command: debug rip events
2009: Debug rip events.
2010:
2011: `debug rip' will show RIP events. Sending and receiving packets,
2012: timers, and changes in interfaces are events shown with `ripd'.
2013:
2014: -- Command: debug rip packet
2015: Debug rip packet.
2016:
2017: `debug rip packet' will display detailed information about the RIP
2018: packets. The origin and port number of the packet as well as a packet
2019: dump is shown.
2020:
2021: -- Command: debug rip zebra
2022: Debug rip between zebra communication.
2023:
2024: This command will show the communication between `ripd' and `zebra'.
2025: The main information will include addition and deletion of paths to the
2026: kernel and the sending and receiving of interface information.
2027:
2028: -- Command: show debugging rip
2029: Display `ripd''s debugging option.
2030:
2031: `show debugging rip' will show all information currently set for ripd
2032: debug.
2033:
2034:
2035: File: quagga.info, Node: RIPng, Next: OSPFv2, Prev: RIP, Up: Top
2036:
2037: 6 RIPng
2038: *******
2039:
2040: `ripngd' supports the RIPng protocol as described in RFC2080. It's an
2041: IPv6 reincarnation of the RIP protocol.
2042:
2043: * Menu:
2044:
2045: * Invoking ripngd::
2046: * ripngd Configuration::
2047: * ripngd Terminal Mode Commands::
2048: * ripngd Filtering Commands::
2049:
2050:
2051: File: quagga.info, Node: Invoking ripngd, Next: ripngd Configuration, Up: RIPng
2052:
2053: 6.1 Invoking ripngd
2054: ===================
2055:
2056: There are no `ripngd' specific invocation options. Common options can
2057: be specified (*note Common Invocation Options::).
2058:
2059:
2060: File: quagga.info, Node: ripngd Configuration, Next: ripngd Terminal Mode Commands, Prev: Invoking ripngd, Up: RIPng
2061:
2062: 6.2 ripngd Configuration
2063: ========================
2064:
2065: Currently ripngd supports the following commands:
2066:
2067: -- Command: router ripng
2068: Enable RIPng.
2069:
2070: -- RIPng Command: flush_timer TIME
2071: Set flush timer.
2072:
2073: -- RIPng Command: network NETWORK
2074: Set RIPng enabled interface by NETWORK
2075:
2076: -- RIPng Command: network IFNAME
2077: Set RIPng enabled interface by IFNAME
2078:
2079: -- RIPng Command: route NETWORK
2080: Set RIPng static routing announcement of NETWORK.
2081:
2082: -- Command: router zebra
2083: This command is the default and does not appear in the
2084: configuration. With this statement, RIPng routes go to the
2085: `zebra' daemon.
2086:
2087:
2088: File: quagga.info, Node: ripngd Terminal Mode Commands, Next: ripngd Filtering Commands, Prev: ripngd Configuration, Up: RIPng
2089:
2090: 6.3 ripngd Terminal Mode Commands
2091: =================================
2092:
2093: -- Command: show ip ripng
2094:
2095: -- Command: show debugging ripng
2096:
2097: -- Command: debug ripng events
2098:
2099: -- Command: debug ripng packet
2100:
2101: -- Command: debug ripng zebra
2102:
2103:
2104: File: quagga.info, Node: ripngd Filtering Commands, Prev: ripngd Terminal Mode Commands, Up: RIPng
2105:
2106: 6.4 ripngd Filtering Commands
2107: =============================
2108:
2109: -- Command: distribute-list ACCESS_LIST (in|out) IFNAME
2110: You can apply an access-list to the interface using the
2111: `distribute-list' command. ACCESS_LIST is an access-list name.
2112: DIRECT is `in' or `out'. If DIRECT is `in', the access-list is
2113: applied only to incoming packets.
2114:
2115: distribute-list local-only out sit1
2116:
2117:
2118: File: quagga.info, Node: OSPFv2, Next: OSPFv3, Prev: RIPng, Up: Top
2119:
2120: 7 OSPFv2
2121: ********
2122:
2123: OSPF (Open Shortest Path First) version 2 is a routing protocol which
2124: is described in `RFC2328, OSPF Version 2'. OSPF is an IGP (Interior
2125: Gateway Protocol). Compared with RIP, OSPF can provide scalable
2126: network support and faster convergence times. OSPF is widely used in
2127: large networks such as ISP (Internet Service Provider) backbone and
2128: enterprise networks.
2129:
2130: * Menu:
2131:
2132: * Configuring ospfd::
2133: * OSPF router::
2134: * OSPF area::
2135: * OSPF interface::
2136: * Redistribute routes to OSPF::
2137: * Showing OSPF information::
2138: * Debugging OSPF::
2139: * OSPF Configuration Examples::
2140:
2141:
2142: File: quagga.info, Node: Configuring ospfd, Next: OSPF router, Up: OSPFv2
2143:
2144: 7.1 Configuring ospfd
2145: =====================
2146:
2147: There are no `ospfd' specific options. Common options can be specified
2148: (*note Common Invocation Options::) to `ospfd'. `ospfd' needs to
2149: acquire interface information from `zebra' in order to function.
2150: Therefore `zebra' must be running before invoking `ospfd'. Also, if
2151: `zebra' is restarted then `ospfd' must be too.
2152:
2153: Like other daemons, `ospfd' configuration is done in OSPF specific
2154: configuration file `ospfd.conf'.
2155:
2156:
2157: File: quagga.info, Node: OSPF router, Next: OSPF area, Prev: Configuring ospfd, Up: OSPFv2
2158:
2159: 7.2 OSPF router
2160: ===============
2161:
2162: To start OSPF process you have to specify the OSPF router. As of this
2163: writing, `ospfd' does not support multiple OSPF processes.
2164:
2165: -- Command: router ospf
2166: -- Command: no router ospf
2167: Enable or disable the OSPF process. `ospfd' does not yet support
2168: multiple OSPF processes. So you can not specify an OSPF process
2169: number.
2170:
2171: -- OSPF Command: ospf router-id A.B.C.D
2172: -- OSPF Command: no ospf router-id
2173: This sets the router-ID of the OSPF process. The router-ID may be
2174: an IP address of the router, but need not be - it can be any
2175: arbitrary 32bit number. However it MUST be unique within the
2176: entire OSPF domain to the OSPF speaker - bad things will happen if
2177: multiple OSPF speakers are configured with the same router-ID! If
2178: one is not specified then `ospfd' will obtain a router-ID
2179: automatically from `zebra'.
2180:
2181: -- OSPF Command: ospf abr-type TYPE
2182: -- OSPF Command: no ospf abr-type TYPE
2183: TYPE can be cisco|ibm|shortcut|standard. The "Cisco" and "IBM"
2184: types are equivalent.
2185:
2186: The OSPF standard for ABR behaviour does not allow an ABR to
2187: consider routes through non-backbone areas when its links to the
2188: backbone are down, even when there are other ABRs in attached
2189: non-backbone areas which still can reach the backbone - this
2190: restriction exists primarily to ensure routing-loops are avoided.
2191:
2192: With the "Cisco" or "IBM" ABR type, the default in this release of
2193: Quagga, this restriction is lifted, allowing an ABR to consider
2194: summaries learnt from other ABRs through non-backbone areas, and
2195: hence route via non-backbone areas as a last resort when, and only
2196: when, backbone links are down.
2197:
2198: Note that areas with fully-adjacent virtual-links are considered
2199: to be "transit capable" and can always be used to route backbone
2200: traffic, and hence are unaffected by this setting (*note OSPF
2201: virtual-link::).
2202:
2203: More information regarding the behaviour controlled by this
2204: command can be found in `RFC 3509, Alternative Implementations of
2205: OSPF Area Border Routers', and
2206: `draft-ietf-ospf-shortcut-abr-02.txt'.
2207:
2208: Quote: "Though the definition of the ABR (Area Border Router) in
2209: the OSPF specification does not require a router with multiple
2210: attached areas to have a backbone connection, it is actually
2211: necessary to provide successful routing to the inter-area and
2212: external destinations. If this requirement is not met, all traffic
2213: destined for the areas not connected to such an ABR or out of the
2214: OSPF domain, is dropped. This document describes alternative ABR
2215: behaviors implemented in Cisco and IBM routers."
2216:
2217: -- OSPF Command: ospf rfc1583compatibility
2218: -- OSPF Command: no ospf rfc1583compatibility
2219: `RFC2328', the sucessor to `RFC1583', suggests according to
2220: section G.2 (changes) in section 16.4 a change to the path
2221: preference algorithm that prevents possible routing loops that were
2222: possible in the old version of OSPFv2. More specifically it demands
2223: that inter-area paths and intra-area backbone path are now of
2224: equal preference but still both preferred to external paths.
2225:
2226: This command should NOT be set normally.
2227:
2228: -- OSPF Command: log-adjacency-changes [detail]
2229: -- OSPF Command: no log-adjacency-changes [detail]
2230: Configures ospfd to log changes in adjacency. With the optional
2231: detail argument, all changes in adjacency status are shown.
2232: Without detail, only changes to full or regressions are shown.
2233:
2234: -- OSPF Command: passive-interface INTERFACE
2235: -- OSPF Command: no passive-interface INTERFACE
2236: Do not speak OSPF interface on the given interface, but do
2237: advertise the interface as a stub link in the router-LSA (Link
2238: State Advertisement) for this router. This allows one to advertise
2239: addresses on such connected interfaces without having to originate
2240: AS-External/Type-5 LSAs (which have global flooding scope) - as
2241: would occur if connected addresses were redistributed into OSPF
2242: (*note Redistribute routes to OSPF::). This is the only way to
2243: advertise non-OSPF links into stub areas.
2244:
2245: -- OSPF Command: timers throttle spf DELAY INITIAL-HOLDTIME
2246: MAX-HOLDTIME
2247: -- OSPF Command: no timers throttle spf
2248: This command sets the initial DELAY, the INITIAL-HOLDTIME and the
2249: MAXIMUM-HOLDTIME between when SPF is calculated and the event
2250: which triggered the calculation. The times are specified in
2251: milliseconds and must be in the range of 0 to 600000 milliseconds.
2252:
2253: The DELAY specifies the minimum amount of time to delay SPF
2254: calculation (hence it affects how long SPF calculation is delayed
2255: after an event which occurs outside of the holdtime of any
2256: previous SPF calculation, and also serves as a minimum holdtime).
2257:
2258: Consecutive SPF calculations will always be seperated by at least
2259: 'hold-time' milliseconds. The hold-time is adaptive and initially
2260: is set to the INITIAL-HOLDTIME configured with the above command.
2261: Events which occur within the holdtime of the previous SPF
2262: calculation will cause the holdtime to be increased by
2263: INITIAL-HOLDTIME, bounded by the MAXIMUM-HOLDTIME configured with
2264: this command. If the adaptive hold-time elapses without any
2265: SPF-triggering event occuring then the current holdtime is reset
2266: to the INITIAL-HOLDTIME. The current holdtime can be viewed with
2267: *note show ip ospf::, where it is expressed as a multiplier of the
2268: INITIAL-HOLDTIME.
2269:
2270: router ospf
2271: timers throttle spf 200 400 10000
2272:
2273: In this example, the DELAY is set to 200ms, the INITIAL HOLDTIME
2274: is set to 400ms and the MAXIMUM HOLDTIME to 10s. Hence there will
2275: always be at least 200ms between an event which requires SPF
2276: calculation and the actual SPF calculation. Further consecutive SPF
2277: calculations will always be seperated by between 400ms to 10s, the
2278: hold-time increasing by 400ms each time an SPF-triggering event
2279: occurs within the hold-time of the previous SPF calculation.
2280:
2281: This command supercedes the `timers spf' command in previous Quagga
2282: releases.
2283:
2284: -- OSPF Command: max-metric router-lsa [on-startup|on-shutdown]
2285: <5-86400>
2286: -- OSPF Command: max-metric router-lsa administrative
2287: -- OSPF Command: no max-metric router-lsa
2288: [on-startup|on-shutdown|administrative]
2289: This enables `RFC3137, OSPF Stub Router Advertisement' support,
2290: where the OSPF process describes its transit links in its
2291: router-LSA as having infinite distance so that other routers will
2292: avoid calculating transit paths through the router while still
2293: being able to reach networks through the router.
2294:
2295: This support may be enabled administratively (and indefinitely) or
2296: conditionally. Conditional enabling of max-metric router-lsas can
2297: be for a period of seconds after startup and/or for a period of
2298: seconds prior to shutdown.
2299:
2300: Enabling this for a period after startup allows OSPF to converge
2301: fully first without affecting any existing routes used by other
2302: routers, while still allowing any connected stub links and/or
2303: redistributed routes to be reachable. Enabling this for a period
2304: of time in advance of shutdown allows the router to gracefully
2305: excuse itself from the OSPF domain.
2306:
2307: Enabling this feature administratively allows for administrative
2308: intervention for whatever reason, for an indefinite period of time.
2309: Note that if the configuration is written to file, this
2310: administrative form of the stub-router command will also be
2311: written to file. If `ospfd' is restarted later, the command will
2312: then take effect until manually deconfigured.
2313:
2314: Configured state of this feature as well as current status, such
2315: as the number of second remaining till on-startup or on-shutdown
2316: ends, can be viewed with the *note show ip ospf:: command.
2317:
2318: -- OSPF Command: auto-cost reference-bandwidth <1-4294967>
2319: -- OSPF Command: no auto-cost reference-bandwidth
2320: This sets the reference bandwidth for cost calculations, where
2321: this bandwidth is considered equivalent to an OSPF cost of 1,
2322: specified in Mbits/s. The default is 100Mbit/s (i.e. a link of
2323: bandwidth 100Mbit/s or higher will have a cost of 1. Cost of lower
2324: bandwidth links will be scaled with reference to this cost).
2325:
2326: This configuration setting MUST be consistent across all routers
2327: within the OSPF domain.
2328:
2329: -- OSPF Command: network A.B.C.D/M area A.B.C.D
2330: -- OSPF Command: network A.B.C.D/M area <0-4294967295>
2331: -- OSPF Command: no network A.B.C.D/M area A.B.C.D
2332: -- OSPF Command: no network A.B.C.D/M area <0-4294967295>
2333: This command specifies the OSPF enabled interface(s). If the
2334: interface has an address from range 192.168.1.0/24 then the
2335: command below enables ospf on this interface so router can provide
2336: network information to the other ospf routers via this interface.
2337:
2338: router ospf
2339: network 192.168.1.0/24 area 0.0.0.0
2340:
2341: Prefix length in interface must be equal or bigger (ie. smaller
2342: network) than prefix length in network statement. For example
2343: statement above doesn't enable ospf on interface with address
2344: 192.168.1.1/23, but it does on interface with address
2345: 192.168.1.129/25.
2346:
2347: Note that the behavior when there is a peer address defined on an
2348: interface changed after release 0.99.7. Currently, if a peer
2349: prefix has been configured, then we test whether the prefix in the
2350: network command contains the destination prefix. Otherwise, we
2351: test whether the network command prefix contains the local address
2352: prefix of the interface.
2353:
2354:
2355: File: quagga.info, Node: OSPF area, Next: OSPF interface, Prev: OSPF router, Up: OSPFv2
2356:
2357: 7.3 OSPF area
2358: =============
2359:
2360: -- OSPF Command: area A.B.C.D range A.B.C.D/M
2361: -- OSPF Command: area <0-4294967295> range A.B.C.D/M
2362: -- OSPF Command: no area A.B.C.D range A.B.C.D/M
2363: -- OSPF Command: no area <0-4294967295> range A.B.C.D/M
2364: Summarize intra area paths from specified area into one Type-3
2365: summary-LSA announced to other areas. This command can be used
2366: only in ABR and ONLY router-LSAs (Type-1) and network-LSAs
2367: (Type-2) (ie. LSAs with scope area) can be summarized. Type-5
2368: AS-external-LSAs can't be summarized - their scope is AS.
2369: Summarizing Type-7 AS-external-LSAs isn't supported yet by Quagga.
2370:
2371: router ospf
2372: network 192.168.1.0/24 area 0.0.0.0
2373: network 10.0.0.0/8 area 0.0.0.10
2374: area 0.0.0.10 range 10.0.0.0/8
2375:
2376: With configuration above one Type-3 Summary-LSA with routing info
2377: 10.0.0.0/8 is announced into backbone area if area 0.0.0.10
2378: contains at least one intra-area network (ie. described with
2379: router or network LSA) from this range.
2380:
2381: -- OSPF Command: area A.B.C.D range IPV4_PREFIX not-advertise
2382: -- OSPF Command: no area A.B.C.D range IPV4_PREFIX not-advertise
2383: Instead of summarizing intra area paths filter them - ie. intra
2384: area paths from this range are not advertised into other areas.
2385: This command makes sense in ABR only.
2386:
2387: -- OSPF Command: area A.B.C.D range IPV4_PREFIX substitute IPV4_PREFIX
2388: -- OSPF Command: no area A.B.C.D range IPV4_PREFIX substitute
2389: IPV4_PREFIX
2390: Substitute summarized prefix with another prefix.
2391:
2392: router ospf
2393: network 192.168.1.0/24 area 0.0.0.0
2394: network 10.0.0.0/8 area 0.0.0.10
2395: area 0.0.0.10 range 10.0.0.0/8 substitute 11.0.0.0/8
2396:
2397: One Type-3 summary-LSA with routing info 11.0.0.0/8 is announced
2398: into backbone area if area 0.0.0.10 contains at least one
2399: intra-area network (ie. described with router-LSA or network-LSA)
2400: from range 10.0.0.0/8. This command makes sense in ABR only.
2401:
2402: -- OSPF Command: area A.B.C.D virtual-link A.B.C.D
2403: -- OSPF Command: area <0-4294967295> virtual-link A.B.C.D
2404: -- OSPF Command: no area A.B.C.D virtual-link A.B.C.D
2405: -- OSPF Command: no area <0-4294967295> virtual-link A.B.C.D
2406:
2407: -- OSPF Command: area A.B.C.D shortcut
2408: -- OSPF Command: area <0-4294967295> shortcut
2409: -- OSPF Command: no area A.B.C.D shortcut
2410: -- OSPF Command: no area <0-4294967295> shortcut
2411: Configure the area as Shortcut capable. See `RFC3509'. This
2412: requires that the 'abr-type' be set to 'shortcut'.
2413:
2414: -- OSPF Command: area A.B.C.D stub
2415: -- OSPF Command: area <0-4294967295> stub
2416: -- OSPF Command: no area A.B.C.D stub
2417: -- OSPF Command: no area <0-4294967295> stub
2418: Configure the area to be a stub area. That is, an area where no
2419: router originates routes external to OSPF and hence an area where
2420: all external routes are via the ABR(s). Hence, ABRs for such an
2421: area do not need to pass AS-External LSAs (type-5s) or
2422: ASBR-Summary LSAs (type-4) into the area. They need only pass
2423: Network-Summary (type-3) LSAs into such an area, along with a
2424: default-route summary.
2425:
2426: -- OSPF Command: area A.B.C.D stub no-summary
2427: -- OSPF Command: area <0-4294967295> stub no-summary
2428: -- OSPF Command: no area A.B.C.D stub no-summary
2429: -- OSPF Command: no area <0-4294967295> stub no-summary
2430: Prevents an `ospfd' ABR from injecting inter-area summaries into
2431: the specified stub area.
2432:
2433: -- OSPF Command: area A.B.C.D default-cost <0-16777215>
2434: -- OSPF Command: no area A.B.C.D default-cost <0-16777215>
2435: Set the cost of default-summary LSAs announced to stubby areas.
2436:
2437: -- OSPF Command: area A.B.C.D export-list NAME
2438: -- OSPF Command: area <0-4294967295> export-list NAME
2439: -- OSPF Command: no area A.B.C.D export-list NAME
2440: -- OSPF Command: no area <0-4294967295> export-list NAME
2441: Filter Type-3 summary-LSAs announced to other areas originated
2442: from intra- area paths from specified area.
2443:
2444: router ospf
2445: network 192.168.1.0/24 area 0.0.0.0
2446: network 10.0.0.0/8 area 0.0.0.10
2447: area 0.0.0.10 export-list foo
2448: !
2449: access-list foo permit 10.10.0.0/16
2450: access-list foo deny any
2451:
2452: With example above any intra-area paths from area 0.0.0.10 and
2453: from range 10.10.0.0/16 (for example 10.10.1.0/24 and
2454: 10.10.2.128/30) are announced into other areas as Type-3
2455: summary-LSA's, but any others (for example 10.11.0.0/16 or
2456: 10.128.30.16/30) aren't.
2457:
2458: This command is only relevant if the router is an ABR for the
2459: specified area.
2460:
2461: -- OSPF Command: area A.B.C.D import-list NAME
2462: -- OSPF Command: area <0-4294967295> import-list NAME
2463: -- OSPF Command: no area A.B.C.D import-list NAME
2464: -- OSPF Command: no area <0-4294967295> import-list NAME
2465: Same as export-list, but it applies to paths announced into
2466: specified area as Type-3 summary-LSAs.
2467:
2468: -- OSPF Command: area A.B.C.D filter-list prefix NAME in
2469: -- OSPF Command: area A.B.C.D filter-list prefix NAME out
2470: -- OSPF Command: area <0-4294967295> filter-list prefix NAME in
2471: -- OSPF Command: area <0-4294967295> filter-list prefix NAME out
2472: -- OSPF Command: no area A.B.C.D filter-list prefix NAME in
2473: -- OSPF Command: no area A.B.C.D filter-list prefix NAME out
2474: -- OSPF Command: no area <0-4294967295> filter-list prefix NAME in
2475: -- OSPF Command: no area <0-4294967295> filter-list prefix NAME out
2476: Filtering Type-3 summary-LSAs to/from area using prefix lists.
2477: This command makes sense in ABR only.
2478:
2479: -- OSPF Command: area A.B.C.D authentication
2480: -- OSPF Command: area <0-4294967295> authentication
2481: -- OSPF Command: no area A.B.C.D authentication
2482: -- OSPF Command: no area <0-4294967295> authentication
2483: Specify that simple password authentication should be used for the
2484: given area.
2485:
2486: -- OSPF Command: area A.B.C.D authentication message-digest
2487: -- OSPF Command: area <0-4294967295> authentication message-digest
2488: Specify that OSPF packets must be authenticated with MD5 HMACs
2489: within the given area. Keying material must also be configured on
2490: a per-interface basis (*note ip ospf message-digest-key::).
2491:
2492: MD5 authentication may also be configured on a per-interface basis
2493: (*note ip ospf authentication message-digest::). Such per-interface
2494: settings will override any per-area authentication setting.
2495:
2496:
2497: File: quagga.info, Node: OSPF interface, Next: Redistribute routes to OSPF, Prev: OSPF area, Up: OSPFv2
2498:
2499: 7.4 OSPF interface
2500: ==================
2501:
2502: -- Interface Command: ip ospf authentication-key AUTH_KEY
2503: -- Interface Command: no ip ospf authentication-key
2504: Set OSPF authentication key to a simple password. After setting
2505: AUTH_KEY, all OSPF packets are authenticated. AUTH_KEY has length
2506: up to 8 chars.
2507:
2508: Simple text password authentication is insecure and deprecated in
2509: favour of MD5 HMAC authentication (*note ip ospf authentication
2510: message-digest::).
2511:
2512: -- Interface Command: ip ospf authentication message-digest
2513: Specify that MD5 HMAC authentication must be used on this
2514: interface. MD5 keying material must also be configured (*note ip
2515: ospf message-digest-key::). Overrides any authentication enabled
2516: on a per-area basis (*note area authentication message-digest::).
2517:
2518: Note that OSPF MD5 authentication requires that time never go
2519: backwards (correct time is NOT important, only that it never goes
2520: backwards), even across resets, if ospfd is to be able to promptly
2521: reestabish adjacencies with its neighbours after restarts/reboots.
2522: The host should have system time be set at boot from an external
2523: or non-volatile source (eg battery backed clock, NTP, etc.) or
2524: else the system clock should be periodically saved to non-volative
2525: storage and restored at boot if MD5 authentication is to be
2526: expected to work reliably.
2527:
2528: -- Interface Command: ip ospf message-digest-key KEYID md5 KEY
2529: -- Interface Command: no ip ospf message-digest-key
2530: Set OSPF authentication key to a cryptographic password. The
2531: cryptographic algorithm is MD5.
2532:
2533: KEYID identifies secret key used to create the message digest.
2534: This ID is part of the protocol and must be consistent across
2535: routers on a link.
2536:
2537: KEY is the actual message digest key, of up to 16 chars (larger
2538: strings will be truncated), and is associated with the given KEYID.
2539:
2540: -- Interface Command: ip ospf cost <1-65535>
2541: -- Interface Command: no ip ospf cost
2542: Set link cost for the specified interface. The cost value is set
2543: to router-LSA's metric field and used for SPF calculation.
2544:
2545: -- Interface Command: ip ospf dead-interval <1-65535>
2546: -- Interface Command: ip ospf dead-interval minimal hello-multiplier
2547: <2-20>
2548: -- Interface Command: no ip ospf dead-interval
2549: Set number of seconds for RouterDeadInterval timer value used for
2550: Wait Timer and Inactivity Timer. This value must be the same for
2551: all routers attached to a common network. The default value is 40
2552: seconds.
2553:
2554: If 'minimal' is specified instead, then the dead-interval is set
2555: to 1 second and one must specify a hello-multiplier. The
2556: hello-multiplier specifies how many Hellos to send per second,
2557: from 2 (every 500ms) to 20 (every 50ms). Thus one can have 1s
2558: convergence time for OSPF. If this form is specified, then the
2559: hello-interval advertised in Hello packets is set to 0 and the
2560: hello-interval on received Hello packets is not checked, thus the
2561: hello-multiplier need NOT be the same across multiple routers on a
2562: common link.
2563:
2564: -- Interface Command: ip ospf hello-interval <1-65535>
2565: -- Interface Command: no ip ospf hello-interval
2566: Set number of seconds for HelloInterval timer value. Setting this
2567: value, Hello packet will be sent every timer value seconds on the
2568: specified interface. This value must be the same for all routers
2569: attached to a common network. The default value is 10 seconds.
2570:
2571: This command has no effect if *note ip ospf dead-interval
2572: minimal:: is also specified for the interface.
2573:
2574: -- Interface Command: ip ospf network
2575: (broadcast|non-broadcast|point-to-multipoint|point-to-point)
2576: -- Interface Command: no ip ospf network
2577: Set explicitly network type for specifed interface.
2578:
2579: -- Interface Command: ip ospf priority <0-255>
2580: -- Interface Command: no ip ospf priority
2581: Set RouterPriority integer value. The router with the highest
2582: priority will be more eligible to become Designated Router.
2583: Setting the value to 0, makes the router ineligible to become
2584: Designated Router. The default value is 1.
2585:
2586: -- Interface Command: ip ospf retransmit-interval <1-65535>
2587: -- Interface Command: no ip ospf retransmit interval
2588: Set number of seconds for RxmtInterval timer value. This value is
2589: used when retransmitting Database Description and Link State
2590: Request packets. The default value is 5 seconds.
2591:
2592: -- Interface Command: ip ospf transmit-delay
2593: -- Interface Command: no ip ospf transmit-delay
2594: Set number of seconds for InfTransDelay value. LSAs' age should be
2595: incremented by this value when transmitting. The default value is
2596: 1 seconds.
2597:
2598:
2599: File: quagga.info, Node: Redistribute routes to OSPF, Next: Showing OSPF information, Prev: OSPF interface, Up: OSPFv2
2600:
2601: 7.5 Redistribute routes to OSPF
2602: ===============================
2603:
2604: -- OSPF Command: redistribute (kernel|connected|static|rip|bgp)
2605: -- OSPF Command: redistribute (kernel|connected|static|rip|bgp)
2606: ROUTE-MAP
2607: -- OSPF Command: redistribute (kernel|connected|static|rip|bgp)
2608: metric-type (1|2)
2609: -- OSPF Command: redistribute (kernel|connected|static|rip|bgp)
2610: metric-type (1|2) route-map WORD
2611: -- OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric
2612: <0-16777214>
2613: -- OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric
2614: <0-16777214> route-map WORD
2615: -- OSPF Command: redistribute (kernel|connected|static|rip|bgp)
2616: metric-type (1|2) metric <0-16777214>
2617: -- OSPF Command: redistribute (kernel|connected|static|rip|bgp)
2618: metric-type (1|2) metric <0-16777214> route-map WORD
2619: -- OSPF Command: no redistribute (kernel|connected|static|rip|bgp)
2620: Redistribute routes of the specified protocol or kind into OSPF,
2621: with the metric type and metric set if specified, filtering the
2622: routes using the given route-map if specified. Redistributed
2623: routes may also be filtered with distribute-lists, see *note ospf
2624: distribute-list::.
2625:
2626: Redistributed routes are distributed as into OSPF as Type-5
2627: External LSAs into links to areas that accept external routes,
2628: Type-7 External LSAs for NSSA areas and are not redistributed at
2629: all into Stub areas, where external routes are not permitted.
2630:
2631: Note that for connected routes, one may instead use
2632: "passive-interface", see *note OSPF passive-interface::.
2633:
2634: -- OSPF Command: default-information originate
2635: -- OSPF Command: default-information originate metric <0-16777214>
2636: -- OSPF Command: default-information originate metric <0-16777214>
2637: metric-type (1|2)
2638: -- OSPF Command: default-information originate metric <0-16777214>
2639: metric-type (1|2) route-map WORD
2640: -- OSPF Command: default-information originate always
2641: -- OSPF Command: default-information originate always metric
2642: <0-16777214>
2643: -- OSPF Command: default-information originate always metric
2644: <0-16777214> metric-type (1|2)
2645: -- OSPF Command: default-information originate always metric
2646: <0-16777214> metric-type (1|2) route-map WORD
2647: -- OSPF Command: no default-information originate
2648: Originate an AS-External (type-5) LSA describing a default route
2649: into all external-routing capable areas, of the specified metric
2650: and metric type. If the 'always' keyword is given then the default
2651: is always advertised, even when there is no default present in the
2652: routing table.
2653:
2654: -- OSPF Command: distribute-list NAME out
2655: (kernel|connected|static|rip|ospf
2656: -- OSPF Command: no distribute-list NAME out
2657: (kernel|connected|static|rip|ospf
2658: Apply the access-list filter, NAME, to redistributed routes of the
2659: given type before allowing the routes to redistributed into OSPF
2660: (*note OSPF redistribute::).
2661:
2662: -- OSPF Command: default-metric <0-16777214>
2663: -- OSPF Command: no default-metric
2664:
2665: -- OSPF Command: distance <1-255>
2666: -- OSPF Command: no distance <1-255>
2667:
2668: -- OSPF Command: distance ospf (intra-area|inter-area|external)
2669: <1-255>
2670: -- OSPF Command: no distance ospf
2671:
2672: -- Command: router zebra
2673: -- Command: no router zebra
2674:
2675:
2676: File: quagga.info, Node: Showing OSPF information, Next: Debugging OSPF, Prev: Redistribute routes to OSPF, Up: OSPFv2
2677:
2678: 7.6 Showing OSPF information
2679: ============================
2680:
2681: -- Command: show ip ospf
2682: Show information on a variety of general OSPF and area state and
2683: configuration information.
2684:
2685: -- Command: show ip ospf interface [INTERFACE]
2686: Show state and configuration of OSPF the specified interface, or
2687: all interfaces if no interface is given.
2688:
2689: -- Command: show ip ospf neighbor
2690: -- Command: show ip ospf neighbor INTERFACE
2691: -- Command: show ip ospf neighbor detail
2692: -- Command: show ip ospf neighbor INTERFACE detail
2693:
2694: -- Command: show ip ospf database
2695:
2696: -- Command: show ip ospf database
2697: (asbr-summary|external|network|router|summary)
2698: -- Command: show ip ospf database
2699: (asbr-summary|external|network|router|summary) LINK-STATE-ID
2700: -- Command: show ip ospf database
2701: (asbr-summary|external|network|router|summary) LINK-STATE-ID adv-router
2702: ADV-ROUTER
2703: -- Command: show ip ospf database
2704: (asbr-summary|external|network|router|summary) adv-router ADV-ROUTER
2705: -- Command: show ip ospf database
2706: (asbr-summary|external|network|router|summary) LINK-STATE-ID
2707: self-originate
2708: -- Command: show ip ospf database
2709: (asbr-summary|external|network|router|summary) self-originate
2710:
2711: -- Command: show ip ospf database max-age
2712:
2713: -- Command: show ip ospf database self-originate
2714:
2715: -- Command: show ip ospf route
2716: Show the OSPF routing table, as determined by the most recent SPF
2717: calculation.
2718:
2719:
2720: File: quagga.info, Node: Debugging OSPF, Next: OSPF Configuration Examples, Prev: Showing OSPF information, Up: OSPFv2
2721:
2722: 7.7 Debugging OSPF
2723: ==================
2724:
2725: -- Command: debug ospf packet
2726: (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail]
2727: -- Command: no debug ospf packet
2728: (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail]
2729:
2730: -- Command: debug ospf ism
2731: -- Command: debug ospf ism (status|events|timers)
2732: -- Command: no debug ospf ism
2733: -- Command: no debug ospf ism (status|events|timers)
2734:
2735: -- Command: debug ospf nsm
2736: -- Command: debug ospf nsm (status|events|timers)
2737: -- Command: no debug ospf nsm
2738: -- Command: no debug ospf nsm (status|events|timers)
2739:
2740: -- Command: debug ospf lsa
2741: -- Command: debug ospf lsa (generate|flooding|refresh)
2742: -- Command: no debug ospf lsa
2743: -- Command: no debug ospf lsa (generate|flooding|refresh)
2744:
2745: -- Command: debug ospf zebra
2746: -- Command: debug ospf zebra (interface|redistribute)
2747: -- Command: no debug ospf zebra
2748: -- Command: no debug ospf zebra (interface|redistribute)
2749:
2750: -- Command: show debugging ospf
2751:
2752:
2753: File: quagga.info, Node: OSPF Configuration Examples, Prev: Debugging OSPF, Up: OSPFv2
2754:
2755: 7.8 OSPF Configuration Examples
2756: ===============================
2757:
2758: A simple example, with MD5 authentication enabled:
2759:
2760: !
2761: interface bge0
2762: ip ospf authentication message-digest
2763: ip ospf message-digest-key 1 md5 ABCDEFGHIJK
2764: !
2765: router ospf
2766: network 192.168.0.0/16 area 0.0.0.1
2767: area 0.0.0.1 authentication message-digest
2768:
2769: An ABR router, with MD5 authentication and performing summarisation
2770: of networks between the areas:
2771:
2772: !
2773: password ABCDEF
2774: log file /var/log/quagga/ospfd.log
2775: service advanced-vty
2776: !
2777: interface eth0
2778: ip ospf authentication message-digest
2779: ip ospf message-digest-key 1 md5 ABCDEFGHIJK
2780: !
2781: interface ppp0
2782: !
2783: interface br0
2784: ip ospf authentication message-digest
2785: ip ospf message-digest-key 2 md5 XYZ12345
2786: !
2787: router ospf
2788: ospf router-id 192.168.0.1
2789: redistribute connected
2790: passive interface ppp0
2791: network 192.168.0.0/24 area 0.0.0.0
2792: network 10.0.0.0/16 area 0.0.0.0
2793: network 192.168.1.0/24 area 0.0.0.1
2794: area 0.0.0.0 authentication message-digest
2795: area 0.0.0.0 range 10.0.0.0/16
2796: area 0.0.0.0 range 192.168.0.0/24
2797: area 0.0.0.1 authentication message-digest
2798: area 0.0.0.1 range 10.2.0.0/16
2799: !
2800:
2801:
2802: File: quagga.info, Node: OSPFv3, Next: BGP, Prev: OSPFv2, Up: Top
2803:
2804: 8 OSPFv3
2805: ********
2806:
2807: `ospf6d' is a daemon support OSPF version 3 for IPv6 network. OSPF for
2808: IPv6 is described in RFC2740.
2809:
2810: * Menu:
2811:
2812: * OSPF6 router::
2813: * OSPF6 area::
2814: * OSPF6 interface::
2815: * Redistribute routes to OSPF6::
2816: * Showing OSPF6 information::
2817: * OSPF6 Configuration Examples::
2818:
2819:
2820: File: quagga.info, Node: OSPF6 router, Next: OSPF6 area, Up: OSPFv3
2821:
2822: 8.1 OSPF6 router
2823: ================
2824:
2825: -- Command: router ospf6
2826:
2827: -- OSPF6 Command: router-id A.B.C.D
2828: Set router's Router-ID.
2829:
2830: -- OSPF6 Command: interface IFNAME area AREA
2831: Bind interface to specified area, and start sending OSPF packets.
2832: AREA can be specified as 0.
2833:
2834:
2835: File: quagga.info, Node: OSPF6 area, Next: OSPF6 interface, Prev: OSPF6 router, Up: OSPFv3
2836:
2837: 8.2 OSPF6 area
2838: ==============
2839:
2840: Area support for OSPFv3 is not yet implemented.
2841:
2842:
2843: File: quagga.info, Node: OSPF6 interface, Next: Redistribute routes to OSPF6, Prev: OSPF6 area, Up: OSPFv3
2844:
2845: 8.3 OSPF6 interface
2846: ===================
2847:
2848: -- Interface Command: ipv6 ospf6 cost COST
2849: Sets interface's output cost. Default value is 1.
2850:
2851: -- Interface Command: ipv6 ospf6 hello-interval HELLOINTERVAL
2852: Sets interface's Hello Interval. Default 40
2853:
2854: -- Interface Command: ipv6 ospf6 dead-interval DEADINTERVAL
2855: Sets interface's Router Dead Interval. Default value is 40.
2856:
2857: -- Interface Command: ipv6 ospf6 retransmit-interval
2858: RETRANSMITINTERVAL
2859: Sets interface's Rxmt Interval. Default value is 5.
2860:
2861: -- Interface Command: ipv6 ospf6 priority PRIORITY
2862: Sets interface's Router Priority. Default value is 1.
2863:
2864: -- Interface Command: ipv6 ospf6 transmit-delay TRANSMITDELAY
2865: Sets interface's Inf-Trans-Delay. Default value is 1.
2866:
2867:
2868: File: quagga.info, Node: Redistribute routes to OSPF6, Next: Showing OSPF6 information, Prev: OSPF6 interface, Up: OSPFv3
2869:
2870: 8.4 Redistribute routes to OSPF6
2871: ================================
2872:
2873: -- OSPF6 Command: redistribute static
2874: -- OSPF6 Command: redistribute connected
2875: -- OSPF6 Command: redistribute ripng
2876:
2877:
2878: File: quagga.info, Node: Showing OSPF6 information, Next: OSPF6 Configuration Examples, Prev: Redistribute routes to OSPF6, Up: OSPFv3
2879:
2880: 8.5 Showing OSPF6 information
2881: =============================
2882:
2883: -- Command: show ipv6 ospf6 [INSTANCE_ID]
2884: INSTANCE_ID is an optional OSPF instance ID. To see router ID and
2885: OSPF instance ID, simply type "show ipv6 ospf6 <cr>".
2886:
2887: -- Command: show ipv6 ospf6 database
2888: This command shows LSA database summary. You can specify the type
2889: of LSA.
2890:
2891: -- Command: show ipv6 ospf6 interface
2892: To see OSPF interface configuration like costs.
2893:
2894: -- Command: show ipv6 ospf6 neighbor
2895: Shows state and chosen (Backup) DR of neighbor.
2896:
2897: -- Command: show ipv6 ospf6 request-list A.B.C.D
2898: Shows requestlist of neighbor.
2899:
2900: -- Command: show ipv6 route ospf6
2901: This command shows internal routing table.
2902:
2903:
2904: File: quagga.info, Node: OSPF6 Configuration Examples, Prev: Showing OSPF6 information, Up: OSPFv3
2905:
2906: 8.6 OSPF6 Configuration Examples
2907: ================================
2908:
2909: Example of ospf6d configured on one interface and area:
2910:
2911: interface eth0
2912: ipv6 ospf6 instance-id 0
2913: !
2914: router ospf6
2915: router-id 212.17.55.53
2916: area 0.0.0.0 range 2001:770:105:2::/64
2917: interface eth0 area 0.0.0.0
2918: !
2919:
2920:
2921: File: quagga.info, Node: BGP, Next: Configuring Quagga as a Route Server, Prev: OSPFv3, Up: Top
2922:
2923: 9 BGP
2924: *****
2925:
2926: BGP stands for a Border Gateway Protocol. The lastest BGP version is
2927: 4. It is referred as BGP-4. BGP-4 is one of the Exterior Gateway
2928: Protocols and de-fact standard of Inter Domain routing protocol. BGP-4
2929: is described in `RFC1771, A Border Gateway Protocol 4 (BGP-4)'.
2930:
2931: Many extensions have been added to `RFC1771'. `RFC2858,
2932: Multiprotocol Extensions for BGP-4' provides multiprotocol support to
2933: BGP-4.
2934:
2935: * Menu:
2936:
2937: * Starting BGP::
2938: * BGP router::
2939: * BGP network::
2940: * BGP Peer::
2941: * BGP Peer Group::
2942: * BGP Address Family::
2943: * Autonomous System::
2944: * BGP Communities Attribute::
2945: * BGP Extended Communities Attribute::
2946: * Displaying BGP routes::
2947: * Capability Negotiation::
2948: * Route Reflector::
2949: * Route Server::
2950: * How to set up a 6-Bone connection::
2951: * Dump BGP packets and table::
2952: * BGP Configuration Examples::
2953:
2954:
2955: File: quagga.info, Node: Starting BGP, Next: BGP router, Up: BGP
2956:
2957: 9.1 Starting BGP
2958: ================
2959:
2960: Default configuration file of `bgpd' is `bgpd.conf'. `bgpd' searches
2961: the current directory first then /etc/quagga/bgpd.conf. All of bgpd's
2962: command must be configured in `bgpd.conf'.
2963:
2964: `bgpd' specific invocation options are described below. Common
2965: options may also be specified (*note Common Invocation Options::).
2966:
2967: `-p PORT'
2968: `--bgp_port=PORT'
2969: Set the bgp protocol's port number.
2970:
2971: `-r'
2972: `--retain'
2973: When program terminates, retain BGP routes added by zebra.
2974:
2975:
2976: File: quagga.info, Node: BGP router, Next: BGP network, Prev: Starting BGP, Up: BGP
2977:
2978: 9.2 BGP router
2979: ==============
2980:
2981: First of all you must configure BGP router with `router bgp' command.
2982: To configure BGP router, you need AS number. AS number is an
2983: identification of autonomous system. BGP protocol uses the AS number
2984: for detecting whether the BGP connection is internal one or external
2985: one.
2986:
2987: -- Command: router bgp ASN
2988: Enable a BGP protocol process with the specified ASN. After this
2989: statement you can input any `BGP Commands'. You can not create
2990: different BGP process under different ASN without specifying
2991: `multiple-instance' (*note Multiple instance::).
2992:
2993: -- Command: no router bgp ASN
2994: Destroy a BGP protocol process with the specified ASN.
2995:
2996: -- BGP: bgp router-id A.B.C.D
2997: This command specifies the router-ID. If `bgpd' connects to
2998: `zebra' it gets interface and address information. In that case
2999: default router ID value is selected as the largest IP Address of
3000: the interfaces. When `router zebra' is not enabled `bgpd' can't
3001: get interface information so `router-id' is set to 0.0.0.0. So
3002: please set router-id by hand.
3003:
3004: * Menu:
3005:
3006: * BGP distance::
3007: * BGP decision process::
3008: * BGP route flap dampening::
3009:
3010:
3011: File: quagga.info, Node: BGP distance, Next: BGP decision process, Up: BGP router
3012:
3013: 9.2.1 BGP distance
3014: ------------------
3015:
3016: -- BGP: distance bgp <1-255> <1-255> <1-255>
3017: This command change distance value of BGP. Each argument is
3018: distance value for external routes, internal routes and local
3019: routes.
3020:
3021: -- BGP: distance <1-255> A.B.C.D/M
3022: -- BGP: distance <1-255> A.B.C.D/M WORD
3023: This command set distance value to
3024:
3025:
3026: File: quagga.info, Node: BGP decision process, Next: BGP route flap dampening, Prev: BGP distance, Up: BGP router
3027:
3028: 9.2.2 BGP decision process
3029: --------------------------
3030:
3031: 1. Weight check
3032:
3033: 2. Local preference check.
3034:
3035: 3. Local route check.
3036:
3037: 4. AS path length check.
3038:
3039: 5. Origin check.
3040:
3041: 6. MED check.
3042:
3043: -- BGP: bgp bestpath as-path confed
3044: This command specifies that the length of confederation path sets
3045: and sequences should should be taken into account during the BGP
3046: best path decision process.
3047:
3048:
3049: File: quagga.info, Node: BGP route flap dampening, Prev: BGP decision process, Up: BGP router
3050:
3051: 9.2.3 BGP route flap dampening
3052: ------------------------------
3053:
3054: -- BGP: bgp dampening <1-45> <1-20000> <1-20000> <1-255>
3055: This command enables BGP route-flap dampening and specifies
3056: dampening parameters.
3057:
3058: half-life
3059: Half-life time for the penalty
3060:
3061: reuse-threshold
3062: Value to start reusing a route
3063:
3064: suppress-threshold
3065: Value to start suppressing a route
3066:
3067: max-suppress
3068: Maximum duration to suppress a stable route
3069:
3070: The route-flap damping algorithm is compatible with `RFC2439'. The
3071: use of this command is not recommended nowadays, see RIPE-378.
3072:
3073:
3074: File: quagga.info, Node: BGP network, Next: BGP Peer, Prev: BGP router, Up: BGP
3075:
3076: 9.3 BGP network
3077: ===============
3078:
3079: * Menu:
3080:
3081: * BGP route::
3082: * Route Aggregation::
3083: * Redistribute to BGP::
3084:
3085:
3086: File: quagga.info, Node: BGP route, Next: Route Aggregation, Up: BGP network
3087:
3088: 9.3.1 BGP route
3089: ---------------
3090:
3091: -- BGP: network A.B.C.D/M
3092: This command adds the announcement network.
3093: router bgp 1
3094: network 10.0.0.0/8
3095: This configuration example says that network 10.0.0.0/8 will be
3096: announced to all neighbors. Some vendors' routers don't advertise
3097: routes if they aren't present in their IGP routing tables; `bgpd'
3098: doesn't care about IGP routes when announcing its routes.
3099:
3100: -- BGP: no network A.B.C.D/M
3101:
3102:
3103: File: quagga.info, Node: Route Aggregation, Next: Redistribute to BGP, Prev: BGP route, Up: BGP network
3104:
3105: 9.3.2 Route Aggregation
3106: -----------------------
3107:
3108: -- BGP: aggregate-address A.B.C.D/M
3109: This command specifies an aggregate address.
3110:
3111: -- BGP: aggregate-address A.B.C.D/M as-set
3112: This command specifies an aggregate address. Resulting routes
3113: inlucde AS set.
3114:
3115: -- BGP: aggregate-address A.B.C.D/M summary-only
3116: This command specifies an aggregate address. Aggreated routes will
3117: not be announce.
3118:
3119: -- BGP: no aggregate-address A.B.C.D/M
3120:
3121:
3122: File: quagga.info, Node: Redistribute to BGP, Prev: Route Aggregation, Up: BGP network
3123:
3124: 9.3.3 Redistribute to BGP
3125: -------------------------
3126:
3127: -- BGP: redistribute kernel
3128: Redistribute kernel route to BGP process.
3129:
3130: -- BGP: redistribute static
3131: Redistribute static route to BGP process.
3132:
3133: -- BGP: redistribute connected
3134: Redistribute connected route to BGP process.
3135:
3136: -- BGP: redistribute rip
3137: Redistribute RIP route to BGP process.
3138:
3139: -- BGP: redistribute ospf
3140: Redistribute OSPF route to BGP process.
3141:
3142:
3143: File: quagga.info, Node: BGP Peer, Next: BGP Peer Group, Prev: BGP network, Up: BGP
3144:
3145: 9.4 BGP Peer
3146: ============
3147:
3148: * Menu:
3149:
3150: * Defining Peer::
3151: * BGP Peer commands::
3152: * Peer filtering::
3153:
3154:
3155: File: quagga.info, Node: Defining Peer, Next: BGP Peer commands, Up: BGP Peer
3156:
3157: 9.4.1 Defining Peer
3158: -------------------
3159:
3160: -- BGP: neighbor PEER remote-as ASN
3161: Creates a new neighbor whose remote-as is ASN. PEER can be an
3162: IPv4 address or an IPv6 address.
3163: router bgp 1
3164: neighbor 10.0.0.1 remote-as 2
3165: In this case my router, in AS-1, is trying to peer with AS-2 at
3166: 10.0.0.1.
3167:
3168: This command must be the first command used when configuring a
3169: neighbor. If the remote-as is not specified, `bgpd' will complain
3170: like this:
3171: can't find neighbor 10.0.0.1
3172:
3173:
3174: File: quagga.info, Node: BGP Peer commands, Next: Peer filtering, Prev: Defining Peer, Up: BGP Peer
3175:
3176: 9.4.2 BGP Peer commands
3177: -----------------------
3178:
3179: In a `router bgp' clause there are neighbor specific configurations
3180: required.
3181:
3182: -- BGP: neighbor PEER shutdown
3183: -- BGP: no neighbor PEER shutdown
3184: Shutdown the peer. We can delete the neighbor's configuration by
3185: `no neighbor PEER remote-as AS-NUMBER' but all configuration of
3186: the neighbor will be deleted. When you want to preserve the
3187: configuration, but want to drop the BGP peer, use this syntax.
3188:
3189: -- BGP: neighbor PEER ebgp-multihop
3190: -- BGP: no neighbor PEER ebgp-multihop
3191:
3192: -- BGP: neighbor PEER description ...
3193: -- BGP: no neighbor PEER description ...
3194: Set description of the peer.
3195:
3196: -- BGP: neighbor PEER version VERSION
3197: Set up the neighbor's BGP version. VERSION can be 4, 4+ or 4-.
3198: BGP version 4 is the default value used for BGP peering. BGP
3199: version 4+ means that the neighbor supports Multiprotocol
3200: Extensions for BGP-4. BGP version 4- is similar but the neighbor
3201: speaks the old Internet-Draft revision 00's Multiprotocol
3202: Extensions for BGP-4. Some routing software is still using this
3203: version.
3204:
3205: -- BGP: neighbor PEER interface IFNAME
3206: -- BGP: no neighbor PEER interface IFNAME
3207: When you connect to a BGP peer over an IPv6 link-local address, you
3208: have to specify the IFNAME of the interface used for the
3209: connection. To specify IPv4 session addresses, see the `neighbor
3210: PEER update-source' command below.
3211:
3212: This command is deprecated and may be removed in a future release.
3213: Its use should be avoided.
3214:
3215: -- BGP: neighbor PEER next-hop-self
3216: -- BGP: no neighbor PEER next-hop-self
3217: This command specifies an announced route's nexthop as being
3218: equivalent to the address of the bgp router.
3219:
3220: -- BGP: neighbor PEER update-source <IFNAME|ADDRESS>
3221: -- BGP: no neighbor PEER update-source
3222: Specify the IPv4 source address to use for the BGP session to this
3223: neighbour, may be specified as either an IPv4 address directly or
3224: as an interface name (in which case the `zebra' daemon MUST be
3225: running in order for `bgpd' to be able to retrieve interface
3226: state).
3227: router bgp 64555
3228: neighbor foo update-source 192.168.0.1
3229: neighbor bar update-source lo0
3230:
3231: -- BGP: neighbor PEER default-originate
3232: -- BGP: no neighbor PEER default-originate
3233: `bgpd''s default is to not announce the default route (0.0.0.0/0)
3234: even it is in routing table. When you want to announce default
3235: routes to the peer, use this command.
3236:
3237: -- BGP: neighbor PEER port PORT
3238: -- BGP: neighbor PEER port PORT
3239:
3240: -- BGP: neighbor PEER send-community
3241: -- BGP: neighbor PEER send-community
3242:
3243: -- BGP: neighbor PEER weight WEIGHT
3244: -- BGP: no neighbor PEER weight WEIGHT
3245: This command specifies a default WEIGHT value for the neighbor's
3246: routes.
3247:
3248: -- BGP: neighbor PEER maximum-prefix NUMBER
3249: -- BGP: no neighbor PEER maximum-prefix NUMBER
3250:
3251:
3252: File: quagga.info, Node: Peer filtering, Prev: BGP Peer commands, Up: BGP Peer
3253:
3254: 9.4.3 Peer filtering
3255: --------------------
3256:
3257: -- BGP: neighbor PEER distribute-list NAME [in|out]
3258: This command specifies a distribute-list for the peer. DIRECT is
3259: `in' or `out'.
3260:
3261: -- BGP command: neighbor PEER prefix-list NAME [in|out]
3262:
3263: -- BGP command: neighbor PEER filter-list NAME [in|out]
3264:
3265: -- BGP: neighbor PEER route-map NAME [in|out]
3266: Apply a route-map on the neighbor. DIRECT must be `in' or `out'.
3267:
3268:
3269: File: quagga.info, Node: BGP Peer Group, Next: BGP Address Family, Prev: BGP Peer, Up: BGP
3270:
3271: 9.5 BGP Peer Group
3272: ==================
3273:
3274: -- BGP: neighbor WORD peer-group
3275: This command defines a new peer group.
3276:
3277: -- BGP: neighbor PEER peer-group WORD
3278: This command bind specific peer to peer group WORD.
3279:
3280:
3281: File: quagga.info, Node: BGP Address Family, Next: Autonomous System, Prev: BGP Peer Group, Up: BGP
3282:
3283: 9.6 BGP Address Family
3284: ======================
3285:
3286:
3287: File: quagga.info, Node: Autonomous System, Next: BGP Communities Attribute, Prev: BGP Address Family, Up: BGP
3288:
3289: 9.7 Autonomous System
3290: =====================
3291:
3292: The AS (Autonomous System) number is one of the essential element of
3293: BGP. BGP is a distance vector routing protocol, and the AS-Path
3294: framework provides distance vector metric and loop detection to BGP.
3295: `RFC1930, Guidelines for creation, selection, and registration of an
3296: Autonomous System (AS)' provides some background on the concepts of an
3297: AS.
3298:
3299: The AS number is a two octet value, ranging in value from 1 to 65535.
3300: The AS numbers 64512 through 65535 are defined as private AS numbers.
3301: Private AS numbers must not to be advertised in the global Internet.
3302:
3303: * Menu:
3304:
3305: * AS Path Regular Expression::
3306: * Display BGP Routes by AS Path::
3307: * AS Path Access List::
3308: * Using AS Path in Route Map::
3309: * Private AS Numbers::
3310:
3311:
3312: File: quagga.info, Node: AS Path Regular Expression, Next: Display BGP Routes by AS Path, Up: Autonomous System
3313:
3314: 9.7.1 AS Path Regular Expression
3315: --------------------------------
3316:
3317: AS path regular expression can be used for displaying BGP routes and AS
3318: path access list. AS path regular expression is based on `POSIX
3319: 1003.2' regular expressions. Following description is just a subset of
3320: `POSIX' regular expression. User can use full `POSIX' regular
3321: expression. Adding to that special character '_' is added for AS path
3322: regular expression.
3323:
3324: `.'
3325: Matches any single character.
3326:
3327: `*'
3328: Matches 0 or more occurrences of pattern.
3329:
3330: `+'
3331: Matches 1 or more occurrences of pattern.
3332:
3333: `?'
3334: Match 0 or 1 occurrences of pattern.
3335:
3336: `^'
3337: Matches the beginning of the line.
3338:
3339: `$'
3340: Matches the end of the line.
3341:
3342: `_'
3343: Character `_' has special meanings in AS path regular expression.
3344: It matches to space and comma , and AS set delimiter { and } and AS
3345: confederation delimiter `(' and `)'. And it also matches to the
3346: beginning of the line and the end of the line. So `_' can be used
3347: for AS value boundaries match. `show ip bgp regexp _7675_'
3348: matches to all of BGP routes which as AS number include 7675.
3349:
3350:
3351: File: quagga.info, Node: Display BGP Routes by AS Path, Next: AS Path Access List, Prev: AS Path Regular Expression, Up: Autonomous System
3352:
3353: 9.7.2 Display BGP Routes by AS Path
3354: -----------------------------------
3355:
3356: To show BGP routes which has specific AS path information `show ip bgp'
3357: command can be used.
3358:
3359: -- Command: show ip bgp regexp LINE
3360: This commands display BGP routes that matches AS path regular
3361: expression LINE.
3362:
3363:
3364: File: quagga.info, Node: AS Path Access List, Next: Using AS Path in Route Map, Prev: Display BGP Routes by AS Path, Up: Autonomous System
3365:
3366: 9.7.3 AS Path Access List
3367: -------------------------
3368:
3369: AS path access list is user defined AS path.
3370:
3371: -- Command: ip as-path access-list WORD {permit|deny} LINE
3372: This command defines a new AS path access list.
3373:
3374: -- Command: no ip as-path access-list WORD
3375: -- Command: no ip as-path access-list WORD {permit|deny} LINE
3376:
3377:
3378: File: quagga.info, Node: Using AS Path in Route Map, Next: Private AS Numbers, Prev: AS Path Access List, Up: Autonomous System
3379:
3380: 9.7.4 Using AS Path in Route Map
3381: --------------------------------
3382:
3383: -- Route Map: match as-path WORD
3384:
3385: -- Route Map: set as-path prepend AS-PATH
3386:
3387:
3388: File: quagga.info, Node: Private AS Numbers, Prev: Using AS Path in Route Map, Up: Autonomous System
3389:
3390: 9.7.5 Private AS Numbers
3391: ------------------------
3392:
3393:
3394: File: quagga.info, Node: BGP Communities Attribute, Next: BGP Extended Communities Attribute, Prev: Autonomous System, Up: BGP
3395:
3396: 9.8 BGP Communities Attribute
3397: =============================
3398:
3399: BGP communities attribute is widely used for implementing policy
3400: routing. Network operators can manipulate BGP communities attribute
3401: based on their network policy. BGP communities attribute is defined in
3402: `RFC1997, BGP Communities Attribute' and `RFC1998, An Application of
3403: the BGP Community Attribute in Multi-home Routing'. It is an optional
3404: transitive attribute, therefore local policy can travel through
3405: different autonomous system.
3406:
3407: Communities attribute is a set of communities values. Each
3408: communities value is 4 octet long. The following format is used to
3409: define communities value.
3410:
3411: `AS:VAL'
3412: This format represents 4 octet communities value. `AS' is high
3413: order 2 octet in digit format. `VAL' is low order 2 octet in
3414: digit format. This format is useful to define AS oriented policy
3415: value. For example, `7675:80' can be used when AS 7675 wants to
3416: pass local policy value 80 to neighboring peer.
3417:
3418: `internet'
3419: `internet' represents well-known communities value 0.
3420:
3421: `no-export'
3422: `no-export' represents well-known communities value `NO_EXPORT'
3423: (0xFFFFFF01). All routes carry this value must not be advertised
3424: to outside a BGP confederation boundary. If neighboring BGP peer
3425: is part of BGP confederation, the peer is considered as inside a
3426: BGP confederation boundary, so the route will be announced to the
3427: peer.
3428:
3429: `no-advertise'
3430: `no-advertise' represents well-known communities value
3431: `NO_ADVERTISE'
3432: (0xFFFFFF02). All routes carry this value must not be advertise
3433: to other BGP peers.
3434:
3435: `local-AS'
3436: `local-AS' represents well-known communities value
3437: `NO_EXPORT_SUBCONFED' (0xFFFFFF03). All routes carry this value
3438: must not be advertised to external BGP peers. Even if the
3439: neighboring router is part of confederation, it is considered as
3440: external BGP peer, so the route will not be announced to the peer.
3441:
3442: When BGP communities attribute is received, duplicated communities
3443: value in the communities attribute is ignored and each communities
3444: values are sorted in numerical order.
3445:
3446: * Menu:
3447:
3448: * BGP Community Lists::
3449: * Numbered BGP Community Lists::
3450: * BGP Community in Route Map::
3451: * Display BGP Routes by Community::
3452: * Using BGP Communities Attribute::
3453:
3454:
3455: File: quagga.info, Node: BGP Community Lists, Next: Numbered BGP Community Lists, Up: BGP Communities Attribute
3456:
3457: 9.8.1 BGP Community Lists
3458: -------------------------
3459:
3460: BGP community list is a user defined BGP communites attribute list.
3461: BGP community list can be used for matching or manipulating BGP
3462: communities attribute in updates.
3463:
3464: There are two types of community list. One is standard community
3465: list and another is expanded community list. Standard community list
3466: defines communities attribute. Expanded community list defines
3467: communities attribute string with regular expression. Standard
3468: community list is compiled into binary format when user define it.
3469: Standard community list will be directly compared to BGP communities
3470: attribute in BGP updates. Therefore the comparison is faster than
3471: expanded community list.
3472:
3473: -- Command: ip community-list standard NAME {permit|deny} COMMUNITY
3474: This command defines a new standard community list. COMMUNITY is
3475: communities value. The COMMUNITY is compiled into community
3476: structure. We can define multiple community list under same name.
3477: In that case match will happen user defined order. Once the
3478: community list matches to communities attribute in BGP updates it
3479: return permit or deny by the community list definition. When
3480: there is no matched entry, deny will be returned. When COMMUNITY
3481: is empty it matches to any routes.
3482:
3483: -- Command: ip community-list expanded NAME {permit|deny} LINE
3484: This command defines a new expanded community list. LINE is a
3485: string expression of communities attribute. LINE can include
3486: regular expression to match communities attribute in BGP updates.
3487:
3488: -- Command: no ip community-list NAME
3489: -- Command: no ip community-list standard NAME
3490: -- Command: no ip community-list expanded NAME
3491: These commands delete community lists specified by NAME. All of
3492: community lists shares a single name space. So community lists
3493: can be removed simpley specifying community lists name.
3494:
3495: -- Command: show ip community-list
3496: -- Command: show ip community-list NAME
3497: This command display current community list information. When
3498: NAME is specified the specified community list's information is
3499: shown.
3500:
3501: # show ip community-list
3502: Named Community standard list CLIST
3503: permit 7675:80 7675:100 no-export
3504: deny internet
3505: Named Community expanded list EXPAND
3506: permit :
3507:
3508: # show ip community-list CLIST
3509: Named Community standard list CLIST
3510: permit 7675:80 7675:100 no-export
3511: deny internet
3512:
3513:
3514: File: quagga.info, Node: Numbered BGP Community Lists, Next: BGP Community in Route Map, Prev: BGP Community Lists, Up: BGP Communities Attribute
3515:
3516: 9.8.2 Numbered BGP Community Lists
3517: ----------------------------------
3518:
3519: When number is used for BGP community list name, the number has special
3520: meanings. Community list number in the range from 1 and 99 is standard
3521: community list. Community list number in the range from 100 to 199 is
3522: expanded community list. These community lists are called as numbered
3523: community lists. On the other hand normal community lists is called as
3524: named community lists.
3525:
3526: -- Command: ip community-list <1-99> {permit|deny} COMMUNITY
3527: This command defines a new community list. <1-99> is standard
3528: community list number. Community list name within this range
3529: defines standard community list. When COMMUNITY is empty it
3530: matches to any routes.
3531:
3532: -- Command: ip community-list <100-199> {permit|deny} COMMUNITY
3533: This command defines a new community list. <100-199> is expanded
3534: community list number. Community list name within this range
3535: defines expanded community list.
3536:
3537: -- Command: ip community-list NAME {permit|deny} COMMUNITY
3538: When community list type is not specifed, the community list type
3539: is automatically detected. If COMMUNITY can be compiled into
3540: communities attribute, the community list is defined as a standard
3541: community list. Otherwise it is defined as an expanded community
3542: list. This feature is left for backward compability. Use of this
3543: feature is not recommended.
3544:
3545:
3546: File: quagga.info, Node: BGP Community in Route Map, Next: Display BGP Routes by Community, Prev: Numbered BGP Community Lists, Up: BGP Communities Attribute
3547:
3548: 9.8.3 BGP Community in Route Map
3549: --------------------------------
3550:
3551: In Route Map (*note Route Map::), we can match or set BGP communities
3552: attribute. Using this feature network operator can implement their
3553: network policy based on BGP communities attribute.
3554:
3555: Following commands can be used in Route Map.
3556:
3557: -- Route Map: match community WORD
3558: -- Route Map: match community WORD exact-match
3559: This command perform match to BGP updates using community list
3560: WORD. When the one of BGP communities value match to the one of
3561: communities value in community list, it is match. When
3562: `exact-match' keyword is spcified, match happen only when BGP
3563: updates have completely same communities value specified in the
3564: community list.
3565:
3566: -- Route Map: set community none
3567: -- Route Map: set community COMMUNITY
3568: -- Route Map: set community COMMUNITY additive
3569: This command manipulate communities value in BGP updates. When
3570: `none' is specified as communities value, it removes entire
3571: communities attribute from BGP updates. When COMMUNITY is not
3572: `none', specified communities value is set to BGP updates. If BGP
3573: updates already has BGP communities value, the existing BGP
3574: communities value is replaced with specified COMMUNITY value.
3575: When `additive' keyword is specified, COMMUNITY is appended to the
3576: existing communities value.
3577:
3578: -- Route Map: set comm-list WORD delete
3579: This command remove communities value from BGP communities
3580: attribute. The WORD is community list name. When BGP route's
3581: communities value matches to the community list WORD, the
3582: communities value is removed. When all of communities value is
3583: removed eventually, the BGP update's communities attribute is
3584: completely removed.
3585:
3586:
3587: File: quagga.info, Node: Display BGP Routes by Community, Next: Using BGP Communities Attribute, Prev: BGP Community in Route Map, Up: BGP Communities Attribute
3588:
3589: 9.8.4 Display BGP Routes by Community
3590: -------------------------------------
3591:
3592: To show BGP routes which has specific BGP communities attribute, `show
3593: ip bgp' command can be used. The COMMUNITY value and community list
3594: can be used for `show ip bgp' command.
3595:
3596: -- Command: show ip bgp community
3597: -- Command: show ip bgp community COMMUNITY
3598: -- Command: show ip bgp community COMMUNITY exact-match
3599: `show ip bgp community' displays BGP routes which has communities
3600: attribute. When COMMUNITY is specified, BGP routes that matches
3601: COMMUNITY value is displayed. For this command, `internet'
3602: keyword can't be used for COMMUNITY value. When `exact-match' is
3603: specified, it display only routes that have an exact match.
3604:
3605: -- Command: show ip bgp community-list WORD
3606: -- Command: show ip bgp community-list WORD exact-match
3607: This commands display BGP routes that matches community list WORD.
3608: When `exact-match' is specified, display only routes that have an
3609: exact match.
3610:
3611:
3612: File: quagga.info, Node: Using BGP Communities Attribute, Prev: Display BGP Routes by Community, Up: BGP Communities Attribute
3613:
3614: 9.8.5 Using BGP Communities Attribute
3615: -------------------------------------
3616:
3617: Following configuration is the most typical usage of BGP communities
3618: attribute. AS 7675 provides upstream Internet connection to AS 100.
3619: When following configuration exists in AS 7675, AS 100 networks
3620: operator can set local preference in AS 7675 network by setting BGP
3621: communities attribute to the updates.
3622:
3623: router bgp 7675
3624: neighbor 192.168.0.1 remote-as 100
3625: neighbor 192.168.0.1 route-map RMAP in
3626: !
3627: ip community-list 70 permit 7675:70
3628: ip community-list 70 deny
3629: ip community-list 80 permit 7675:80
3630: ip community-list 80 deny
3631: ip community-list 90 permit 7675:90
3632: ip community-list 90 deny
3633: !
3634: route-map RMAP permit 10
3635: match community 70
3636: set local-preference 70
3637: !
3638: route-map RMAP permit 20
3639: match community 80
3640: set local-preference 80
3641: !
3642: route-map RMAP permit 30
3643: match community 90
3644: set local-preference 90
3645:
3646: Following configuration announce 10.0.0.0/8 from AS 100 to AS 7675.
3647: The route has communities value 7675:80 so when above configuration
3648: exists in AS 7675, announced route's local preference will be set to
3649: value 80.
3650:
3651: router bgp 100
3652: network 10.0.0.0/8
3653: neighbor 192.168.0.2 remote-as 7675
3654: neighbor 192.168.0.2 route-map RMAP out
3655: !
3656: ip prefix-list PLIST permit 10.0.0.0/8
3657: !
3658: route-map RMAP permit 10
3659: match ip address prefix-list PLIST
3660: set community 7675:80
3661:
3662: Following configuration is an example of BGP route filtering using
3663: communities attribute. This configuration only permit BGP routes which
3664: has BGP communities value 0:80 or 0:90. Network operator can put
3665: special internal communities value at BGP border router, then limit the
3666: BGP routes announcement into the internal network.
3667:
3668: router bgp 7675
3669: neighbor 192.168.0.1 remote-as 100
3670: neighbor 192.168.0.1 route-map RMAP in
3671: !
3672: ip community-list 1 permit 0:80 0:90
3673: !
3674: route-map RMAP permit in
3675: match community 1
3676:
3677: Following exmaple filter BGP routes which has communities value 1:1.
3678: When there is no match community-list returns deny. To avoid filtering
3679: all of routes, we need to define permit any at last.
3680:
3681: router bgp 7675
3682: neighbor 192.168.0.1 remote-as 100
3683: neighbor 192.168.0.1 route-map RMAP in
3684: !
3685: ip community-list standard FILTER deny 1:1
3686: ip community-list standard FILTER permit
3687: !
3688: route-map RMAP permit 10
3689: match community FILTER
3690:
3691: Communities value keyword `internet' has special meanings in
3692: standard community lists. In below example `internet' act as match
3693: any. It matches all of BGP routes even if the route does not have
3694: communities attribute at all. So community list `INTERNET' is same as
3695: above example's `FILTER'.
3696:
3697: ip community-list standard INTERNET deny 1:1
3698: ip community-list standard INTERNET permit internet
3699:
3700: Following configuration is an example of communities value deletion.
3701: With this configuration communities value 100:1 and 100:2 is removed
3702: from BGP updates. For communities value deletion, only `permit'
3703: community-list is used. `deny' community-list is ignored.
3704:
3705: router bgp 7675
3706: neighbor 192.168.0.1 remote-as 100
3707: neighbor 192.168.0.1 route-map RMAP in
3708: !
3709: ip community-list standard DEL permit 100:1 100:2
3710: !
3711: route-map RMAP permit 10
3712: set comm-list DEL delete
3713:
3714:
3715: File: quagga.info, Node: BGP Extended Communities Attribute, Next: Displaying BGP routes, Prev: BGP Communities Attribute, Up: BGP
3716:
3717: 9.9 BGP Extended Communities Attribute
3718: ======================================
3719:
3720: BGP extended communities attribute is introduced with MPLS VPN/BGP
3721: technology. MPLS VPN/BGP expands capability of network infrastructure
3722: to provide VPN functionality. At the same time it requires a new
3723: framework for policy routing. With BGP Extended Communities Attribute
3724: we can use Route Target or Site of Origin for implementing network
3725: policy for MPLS VPN/BGP.
3726:
3727: BGP Extended Communities Attribute is similar to BGP Communities
3728: Attribute. It is an optional transitive attribute. BGP Extended
3729: Communities Attribute can carry multiple Extended Community value.
3730: Each Extended Community value is eight octet length.
3731:
3732: BGP Extended Communities Attribute provides an extended range
3733: compared with BGP Communities Attribute. Adding to that there is a
3734: type field in each value to provides community space structure.
3735:
3736: There are two format to define Extended Community value. One is AS
3737: based format the other is IP address based format.
3738:
3739: `AS:VAL'
3740: This is a format to define AS based Extended Community value.
3741: `AS' part is 2 octets Global Administrator subfield in Extended
3742: Community value. `VAL' part is 4 octets Local Administrator
3743: subfield. `7675:100' represents AS 7675 policy value 100.
3744:
3745: `IP-Address:VAL'
3746: This is a format to define IP address based Extended Community
3747: value. `IP-Address' part is 4 octets Global Administrator
3748: subfield. `VAL' part is 2 octets Local Administrator subfield.
3749: `10.0.0.1:100' represents
3750:
3751: * Menu:
3752:
3753: * BGP Extended Community Lists::
3754: * BGP Extended Communities in Route Map::
3755:
3756:
3757: File: quagga.info, Node: BGP Extended Community Lists, Next: BGP Extended Communities in Route Map, Up: BGP Extended Communities Attribute
3758:
3759: 9.9.1 BGP Extended Community Lists
3760: ----------------------------------
3761:
3762: Expanded Community Lists is a user defined BGP Expanded Community Lists.
3763:
3764: -- Command: ip extcommunity-list standard NAME {permit|deny}
3765: EXTCOMMUNITY
3766: This command defines a new standard extcommunity-list.
3767: EXTCOMMUNITY is extended communities value. The EXTCOMMUNITY is
3768: compiled into extended community structure. We can define
3769: multiple extcommunity-list under same name. In that case match
3770: will happen user defined order. Once the extcommunity-list
3771: matches to extended communities attribute in BGP updates it return
3772: permit or deny based upon the extcommunity-list definition. When
3773: there is no matched entry, deny will be returned. When
3774: EXTCOMMUNITY is empty it matches to any routes.
3775:
3776: -- Command: ip extcommunity-list expanded NAME {permit|deny} LINE
3777: This command defines a new expanded extcommunity-list. LINE is a
3778: string expression of extended communities attribute. LINE can
3779: include regular expression to match extended communities attribute
3780: in BGP updates.
3781:
3782: -- Command: no ip extcommunity-list NAME
3783: -- Command: no ip extcommunity-list standard NAME
3784: -- Command: no ip extcommunity-list expanded NAME
3785: These commands delete extended community lists specified by NAME.
3786: All of extended community lists shares a single name space. So
3787: extended community lists can be removed simpley specifying the
3788: name.
3789:
3790: -- Command: show ip extcommunity-list
3791: -- Command: show ip extcommunity-list NAME
3792: This command display current extcommunity-list information. When
3793: NAME is specified the community list's information is shown.
3794:
3795: # show ip extcommunity-list
3796:
3797:
3798: File: quagga.info, Node: BGP Extended Communities in Route Map, Prev: BGP Extended Community Lists, Up: BGP Extended Communities Attribute
3799:
3800: 9.9.2 BGP Extended Communities in Route Map
3801: -------------------------------------------
3802:
3803: -- Route Map: match extcommunity WORD
3804:
3805: -- Route Map: set extcommunity rt EXTCOMMUNITY
3806: This command set Route Target value.
3807:
3808: -- Route Map: set extcommunity soo EXTCOMMUNITY
3809: This command set Site of Origin value.
3810:
3811:
3812: File: quagga.info, Node: Displaying BGP routes, Next: Capability Negotiation, Prev: BGP Extended Communities Attribute, Up: BGP
3813:
3814: 9.10 Displaying BGP Routes
3815: ==========================
3816:
3817: * Menu:
3818:
3819: * Show IP BGP::
3820: * More Show IP BGP::
3821:
3822:
3823: File: quagga.info, Node: Show IP BGP, Next: More Show IP BGP, Up: Displaying BGP routes
3824:
3825: 9.10.1 Show IP BGP
3826: ------------------
3827:
3828: -- Command: show ip bgp
3829: -- Command: show ip bgp A.B.C.D
3830: -- Command: show ip bgp X:X::X:X
3831: This command displays BGP routes. When no route is specified it
3832: display all of IPv4 BGP routes.
3833:
3834: BGP table version is 0, local router ID is 10.1.1.1
3835: Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
3836: Origin codes: i - IGP, e - EGP, ? - incomplete
3837:
3838: Network Next Hop Metric LocPrf Weight Path
3839: *> 1.1.1.1/32 0.0.0.0 0 32768 i
3840:
3841: Total number of prefixes 1
3842:
3843:
3844: File: quagga.info, Node: More Show IP BGP, Prev: Show IP BGP, Up: Displaying BGP routes
3845:
3846: 9.10.2 More Show IP BGP
3847: -----------------------
3848:
3849: -- Command: show ip bgp regexp LINE
3850: This command display BGP routes using AS path regular expression
3851: (*note Display BGP Routes by AS Path::).
3852:
3853: -- Command: show ip bgp community COMMUNITY
3854: -- Command: show ip bgp community COMMUNITY exact-match
3855: This command display BGP routes using COMMUNITY (*note Display BGP
3856: Routes by Community::).
3857:
3858: -- Command: show ip bgp community-list WORD
3859: -- Command: show ip bgp community-list WORD exact-match
3860: This command display BGP routes using community list (*note
3861: Display BGP Routes by Community::).
3862:
3863: -- Command: show ip bgp summary
3864:
3865: -- Command: show ip bgp neighbor [PEER]
3866:
3867: -- Command: clear ip bgp PEER
3868: Clear peers which have addresses of X.X.X.X
3869:
3870: -- Command: clear ip bgp PEER soft in
3871: Clear peer using soft reconfiguration.
3872:
3873: -- Command: show ip bgp dampened-paths
3874: Display paths suppressed due to dampening
3875:
3876: -- Command: show ip bgp flap-statistics
3877: Display flap statistics of routes
3878:
3879: -- Command: show debug
3880:
3881: -- Command: debug event
3882:
3883: -- Command: debug update
3884:
3885: -- Command: debug keepalive
3886:
3887: -- Command: no debug event
3888:
3889: -- Command: no debug update
3890:
3891: -- Command: no debug keepalive
3892:
3893:
3894: File: quagga.info, Node: Capability Negotiation, Next: Route Reflector, Prev: Displaying BGP routes, Up: BGP
3895:
3896: 9.11 Capability Negotiation
3897: ===========================
3898:
3899: When adding IPv6 routing information exchange feature to BGP. There
3900: were some proposals. IETF (Internet Engineering Task Force) IDR (Inter
3901: Domain Routing) WG (Working group) adopted a proposal called
3902: Multiprotocol Extension for BGP. The specification is described in
3903: `RFC2283'. The protocol does not define new protocols. It defines new
3904: attributes to existing BGP. When it is used exchanging IPv6 routing
3905: information it is called BGP-4+. When it is used for exchanging
3906: multicast routing information it is called MBGP.
3907:
3908: `bgpd' supports Multiprotocol Extension for BGP. So if remote peer
3909: supports the protocol, `bgpd' can exchange IPv6 and/or multicast
3910: routing information.
3911:
3912: Traditional BGP did not have the feature to detect remote peer's
3913: capabilities, e.g. whether it can handle prefix types other than IPv4
3914: unicast routes. This was a big problem using Multiprotocol Extension
3915: for BGP to operational network. `RFC2842, Capabilities Advertisement
3916: with BGP-4' adopted a feature called Capability Negotiation. `bgpd' use
3917: this Capability Negotiation to detect the remote peer's capabilities.
3918: If the peer is only configured as IPv4 unicast neighbor, `bgpd' does
3919: not send these Capability Negotiation packets (at least not unless
3920: other optional BGP features require capability negotation).
3921:
3922: By default, Quagga will bring up peering with minimal common
3923: capability for the both sides. For example, local router has unicast
3924: and multicast capabilitie and remote router has unicast capability. In
3925: this case, the local router will establish the connection with unicast
3926: only capability. When there are no common capabilities, Quagga sends
3927: Unsupported Capability error and then resets the connection.
3928:
3929: If you want to completely match capabilities with remote peer.
3930: Please use `strict-capability-match' command.
3931:
3932: -- BGP: neighbor PEER strict-capability-match
3933: -- BGP: no neighbor PEER strict-capability-match
3934: Strictly compares remote capabilities and local capabilities. If
3935: capabilities are different, send Unsupported Capability error then
3936: reset connection.
3937:
3938: You may want to disable sending Capability Negotiation OPEN message
3939: optional parameter to the peer when remote peer does not implement
3940: Capability Negotiation. Please use `dont-capability-negotiate' command
3941: to disable the feature.
3942:
3943: -- BGP: neighbor PEER dont-capability-negotiate
3944: -- BGP: no neighbor PEER dont-capability-negotiate
3945: Suppress sending Capability Negotiation as OPEN message optional
3946: parameter to the peer. This command only affects the peer is
3947: configured other than IPv4 unicast configuration.
3948:
3949: When remote peer does not have capability negotiation feature, remote
3950: peer will not send any capabilities at all. In that case, bgp
3951: configures the peer with configured capabilities.
3952:
3953: You may prefer locally configured capabilities more than the
3954: negotiated capabilities even though remote peer sends capabilities. If
3955: the peer is configured by `override-capability', `bgpd' ignores
3956: received capabilities then override negotiated capabilities with
3957: configured values.
3958:
3959: -- BGP: neighbor PEER override-capability
3960: -- BGP: no neighbor PEER override-capability
3961: Override the result of Capability Negotiation with local
3962: configuration. Ignore remote peer's capability value.
3963:
3964:
3965: File: quagga.info, Node: Route Reflector, Next: Route Server, Prev: Capability Negotiation, Up: BGP
3966:
3967: 9.12 Route Reflector
3968: ====================
3969:
3970: -- BGP: bgp cluster-id A.B.C.D
3971:
3972: -- BGP: neighbor PEER route-reflector-client
3973: -- BGP: no neighbor PEER route-reflector-client
3974:
3975:
3976: File: quagga.info, Node: Route Server, Next: How to set up a 6-Bone connection, Prev: Route Reflector, Up: BGP
3977:
3978: 9.13 Route Server
3979: =================
3980:
3981: At an Internet Exchange point, many ISPs are connected to each other by
3982: external BGP peering. Normally these external BGP connection are done
3983: by `full mesh' method. As with internal BGP full mesh formation, this
3984: method has a scaling problem.
3985:
3986: This scaling problem is well known. Route Server is a method to
3987: resolve the problem. Each ISP's BGP router only peers to Route Server.
3988: Route Server serves as BGP information exchange to other BGP routers.
3989: By applying this method, numbers of BGP connections is reduced from
3990: O(n*(n-1)/2) to O(n).
3991:
3992: Unlike normal BGP router, Route Server must have several routing
3993: tables for managing different routing policies for each BGP speaker.
3994: We call the routing tables as different `view's. `bgpd' can work as
3995: normal BGP router or Route Server or both at the same time.
3996:
3997: * Menu:
3998:
3999: * Multiple instance::
4000: * BGP instance and view::
4001: * Routing policy::
4002: * Viewing the view::
4003:
4004:
4005: File: quagga.info, Node: Multiple instance, Next: BGP instance and view, Up: Route Server
4006:
4007: 9.13.1 Multiple instance
4008: ------------------------
4009:
4010: To enable multiple view function of `bgpd', you must turn on multiple
4011: instance feature beforehand.
4012:
4013: -- Command: bgp multiple-instance
4014: Enable BGP multiple instance feature. After this feature is
4015: enabled, you can make multiple BGP instances or multiple BGP views.
4016:
4017: -- Command: no bgp multiple-instance
4018: Disable BGP multiple instance feature. You can not disable this
4019: feature when BGP multiple instances or views exist.
4020:
4021: When you want to make configuration more Cisco like one,
4022:
4023: -- Command: bgp config-type cisco
4024: Cisco compatible BGP configuration output.
4025:
4026: When bgp config-type cisco is specified,
4027:
4028: "no synchronization" is displayed. "no auto-summary" is displayed.
4029:
4030: "network" and "aggregate-address" argument is displayed as "A.B.C.D
4031: M.M.M.M"
4032:
4033: Quagga: network 10.0.0.0/8 Cisco: network 10.0.0.0
4034:
4035: Quagga: aggregate-address 192.168.0.0/24 Cisco: aggregate-address
4036: 192.168.0.0 255.255.255.0
4037:
4038: Community attribute handling is also different. If there is no
4039: configuration is specified community attribute and extended community
4040: attribute are sent to neighbor. When user manually disable the feature
4041: community attribute is not sent to the neighbor. In case of `bgp
4042: config-type cisco' is specified, community attribute is not sent to the
4043: neighbor by default. To send community attribute user has to specify
4044: `neighbor A.B.C.D send-community' command.
4045:
4046: !
4047: router bgp 1
4048: neighbor 10.0.0.1 remote-as 1
4049: no neighbor 10.0.0.1 send-community
4050: !
4051: router bgp 1
4052: neighbor 10.0.0.1 remote-as 1
4053: neighbor 10.0.0.1 send-community
4054: !
4055:
4056: -- Command: bgp config-type zebra
4057: Quagga style BGP configuration. This is default.
4058:
4059:
4060: File: quagga.info, Node: BGP instance and view, Next: Routing policy, Prev: Multiple instance, Up: Route Server
4061:
4062: 9.13.2 BGP instance and view
4063: ----------------------------
4064:
4065: BGP instance is a normal BGP process. The result of route selection
4066: goes to the kernel routing table. You can setup different AS at the
4067: same time when BGP multiple instance feature is enabled.
4068:
4069: -- Command: router bgp AS-NUMBER
4070: Make a new BGP instance. You can use arbitrary word for the NAME.
4071:
4072: bgp multiple-instance
4073: !
4074: router bgp 1
4075: neighbor 10.0.0.1 remote-as 2
4076: neighbor 10.0.0.2 remote-as 3
4077: !
4078: router bgp 2
4079: neighbor 10.0.0.3 remote-as 4
4080: neighbor 10.0.0.4 remote-as 5
4081:
4082: BGP view is almost same as normal BGP process. The result of route
4083: selection does not go to the kernel routing table. BGP view is only
4084: for exchanging BGP routing information.
4085:
4086: -- Command: router bgp AS-NUMBER view NAME
4087: Make a new BGP view. You can use arbitrary word for the NAME.
4088: This view's route selection result does not go to the kernel
4089: routing table.
4090:
4091: With this command, you can setup Route Server like below.
4092:
4093: bgp multiple-instance
4094: !
4095: router bgp 1 view 1
4096: neighbor 10.0.0.1 remote-as 2
4097: neighbor 10.0.0.2 remote-as 3
4098: !
4099: router bgp 2 view 2
4100: neighbor 10.0.0.3 remote-as 4
4101: neighbor 10.0.0.4 remote-as 5
4102:
4103:
4104: File: quagga.info, Node: Routing policy, Next: Viewing the view, Prev: BGP instance and view, Up: Route Server
4105:
4106: 9.13.3 Routing policy
4107: ---------------------
4108:
4109: You can set different routing policy for a peer. For example, you can
4110: set different filter for a peer.
4111:
4112: bgp multiple-instance
4113: !
4114: router bgp 1 view 1
4115: neighbor 10.0.0.1 remote-as 2
4116: neighbor 10.0.0.1 distribute-list 1 in
4117: !
4118: router bgp 1 view 2
4119: neighbor 10.0.0.1 remote-as 2
4120: neighbor 10.0.0.1 distribute-list 2 in
4121:
4122: This means BGP update from a peer 10.0.0.1 goes to both BGP view 1
4123: and view 2. When the update is inserted into view 1, distribute-list 1
4124: is applied. On the other hand, when the update is inserted into view 2,
4125: distribute-list 2 is applied.
4126:
4127:
4128: File: quagga.info, Node: Viewing the view, Prev: Routing policy, Up: Route Server
4129:
4130: 9.13.4 Viewing the view
4131: -----------------------
4132:
4133: To display routing table of BGP view, you must specify view name.
4134:
4135: -- Command: show ip bgp view NAME
4136: Display routing table of BGP view NAME.
4137:
4138:
4139: File: quagga.info, Node: How to set up a 6-Bone connection, Next: Dump BGP packets and table, Prev: Route Server, Up: BGP
4140:
4141: 9.14 How to set up a 6-Bone connection
4142: ======================================
4143:
4144: zebra configuration
4145: ===================
4146: !
4147: ! Actually there is no need to configure zebra
4148: !
4149:
4150: bgpd configuration
4151: ==================
4152: !
4153: ! This means that routes go through zebra and into the kernel.
4154: !
4155: router zebra
4156: !
4157: ! MP-BGP configuration
4158: !
4159: router bgp 7675
4160: bgp router-id 10.0.0.1
4161: neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 remote-as AS-NUMBER
4162: !
4163: address-family ipv6
4164: network 3ffe:506::/32
4165: neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 activate
4166: neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 route-map set-nexthop out
4167: neighbor 3ffe:1cfa:0:2:2c0:4fff:fe68:a231 remote-as AS-NUMBER
4168: neighbor 3ffe:1cfa:0:2:2c0:4fff:fe68:a231 route-map set-nexthop out
4169: exit-address-family
4170: !
4171: ipv6 access-list all permit any
4172: !
4173: ! Set output nexthop address.
4174: !
4175: route-map set-nexthop permit 10
4176: match ipv6 address all
4177: set ipv6 nexthop global 3ffe:1cfa:0:2:2c0:4fff:fe68:a225
4178: set ipv6 nexthop local fe80::2c0:4fff:fe68:a225
4179: !
4180: ! logfile FILENAME is obsolete. Please use log file FILENAME
4181:
4182: log file bgpd.log
4183: !
4184:
4185:
4186: File: quagga.info, Node: Dump BGP packets and table, Next: BGP Configuration Examples, Prev: How to set up a 6-Bone connection, Up: BGP
4187:
4188: 9.15 Dump BGP packets and table
4189: ===============================
4190:
4191: -- Command: dump bgp all PATH
4192: -- Command: dump bgp all PATH INTERVAL
4193: Dump all BGP packet and events to PATH file.
4194:
4195: -- Command: dump bgp updates PATH
4196: -- Command: dump bgp updates PATH INTERVAL
4197: Dump BGP updates to PATH file.
4198:
4199: -- Command: dump bgp routes PATH
4200: -- Command: dump bgp routes PATH
4201: Dump whole BGP routing table to PATH. This is heavy process.
4202:
4203:
4204: File: quagga.info, Node: BGP Configuration Examples, Prev: Dump BGP packets and table, Up: BGP
4205:
4206: 9.16 BGP Configuration Examples
4207: ===============================
4208:
4209: Example of a session to an upstream, advertising only one prefix to it.
4210:
4211: router bgp 64512
4212: bgp router-id 10.236.87.1
4213: network 10.236.87.0/24
4214: neighbor upstream peer-group
4215: neighbor upstream remote-as 64515
4216: neighbor upstream capability dynamic
4217: neighbor upstream prefix-list pl-allowed-adv out
4218: neighbor 10.1.1.1 peer-group upstream
4219: neighbor 10.1.1.1 description ACME ISP
4220: !
4221: ip prefix-list pl-allowed-adv seq 5 permit 82.195.133.0/25
4222: ip prefix-list pl-allowed-adv seq 10 deny any
4223:
4224: A more complex example. With upstream, peer and customer sessions.
4225: Advertising global prefixes and NO_EXPORT prefixes and providing
4226: actions for customer routes based on community values. Extensive use of
4227: route-maps and the 'call' feature to support selective advertising of
4228: prefixes. This example is intended as guidance only, it has NOT been
4229: tested and almost certainly containts silly mistakes, if not serious
4230: flaws.
4231:
4232: router bgp 64512
4233: bgp router-id 10.236.87.1
4234: network 10.123.456.0/24
4235: network 10.123.456.128/25 route-map rm-no-export
4236: neighbor upstream capability dynamic
4237: neighbor upstream route-map rm-upstream-out out
4238: neighbor cust capability dynamic
4239: neighbor cust route-map rm-cust-in in
4240: neighbor cust route-map rm-cust-out out
4241: neighbor cust send-community both
4242: neighbor peer capability dynamic
4243: neighbor peer route-map rm-peer-in in
4244: neighbor peer route-map rm-peer-out out
4245: neighbor peer send-community both
4246: neighbor 10.1.1.1 remote-as 64515
4247: neighbor 10.1.1.1 peer-group upstream
4248: neighbor 10.2.1.1 remote-as 64516
4249: neighbor 10.2.1.1 peer-group upstream
4250: neighbor 10.3.1.1 remote-as 64517
4251: neighbor 10.3.1.1 peer-group cust-default
4252: neighbor 10.3.1.1 description customer1
4253: neighbor 10.3.1.1 prefix-list pl-cust1-network in
4254: neighbor 10.4.1.1 remote-as 64518
4255: neighbor 10.4.1.1 peer-group cust
4256: neighbor 10.4.1.1 prefix-list pl-cust2-network in
4257: neighbor 10.4.1.1 description customer2
4258: neighbor 10.5.1.1 remote-as 64519
4259: neighbor 10.5.1.1 peer-group peer
4260: neighbor 10.5.1.1 prefix-list pl-peer1-network in
4261: neighbor 10.5.1.1 description peer AS 1
4262: neighbor 10.6.1.1 remote-as 64520
4263: neighbor 10.6.1.1 peer-group peer
4264: neighbor 10.6.1.1 prefix-list pl-peer2-network in
4265: neighbor 10.6.1.1 description peer AS 2
4266: !
4267: ip prefix-list pl-default permit 0.0.0.0/0
4268: !
4269: ip prefix-list pl-upstream-peers permit 10.1.1.1/32
4270: ip prefix-list pl-upstream-peers permit 10.2.1.1/32
4271: !
4272: ip prefix-list pl-cust1-network permit 10.3.1.0/24
4273: ip prefix-list pl-cust1-network permit 10.3.2.0/24
4274: !
4275: ip prefix-list pl-cust2-network permit 10.4.1.0/24
4276: !
4277: ip prefix-list pl-peer1-network permit 10.5.1.0/24
4278: ip prefix-list pl-peer1-network permit 10.5.2.0/24
4279: ip prefix-list pl-peer1-network permit 192.168.0.0/24
4280: !
4281: ip prefix-list pl-peer2-network permit 10.6.1.0/24
4282: ip prefix-list pl-peer2-network permit 10.6.2.0/24
4283: ip prefix-list pl-peer2-network permit 192.168.1.0/24
4284: ip prefix-list pl-peer2-network permit 192.168.2.0/24
4285: ip prefix-list pl-peer2-network permit 172.16.1/24
4286: !
4287: ip as-path access-list asp-own-as permit ^$
4288: ip as-path access-list asp-own-as permit _64512_
4289: !
4290: ! #################################################################
4291: ! Match communities we provide actions for, on routes receives from
4292: ! customers. Communities values of <our-ASN>:X, with X, have actions:
4293: !
4294: ! 100 - blackhole the prefix
4295: ! 200 - set no_export
4296: ! 300 - advertise only to other customers
4297: ! 400 - advertise only to upstreams
4298: ! 500 - set no_export when advertising to upstreams
4299: ! 2X00 - set local_preference to X00
4300: !
4301: ! blackhole the prefix of the route
4302: ip community-list standard cm-blackhole permit 64512:100
4303: !
4304: ! set no-export community before advertising
4305: ip community-list standard cm-set-no-export permit 64512:200
4306: !
4307: ! advertise only to other customers
4308: ip community-list standard cm-cust-only permit 64512:300
4309: !
4310: ! advertise only to upstreams
4311: ip community-list standard cm-upstream-only permit 64512:400
4312: !
4313: ! advertise to upstreams with no-export
4314: ip community-list standard cm-upstream-noexport permit 64512:500
4315: !
4316: ! set local-pref to least significant 3 digits of the community
4317: ip community-list standard cm-prefmod-100 permit 64512:2100
4318: ip community-list standard cm-prefmod-200 permit 64512:2200
4319: ip community-list standard cm-prefmod-300 permit 64512:2300
4320: ip community-list standard cm-prefmod-400 permit 64512:2400
4321: ip community-list expanded cme-prefmod-range permit 64512:2...
4322: !
4323: ! Informational communities
4324: !
4325: ! 3000 - learned from upstream
4326: ! 3100 - learned from customer
4327: ! 3200 - learned from peer
4328: !
4329: ip community-list standard cm-learnt-upstream permit 64512:3000
4330: ip community-list standard cm-learnt-cust permit 64512:3100
4331: ip community-list standard cm-learnt-peer permit 64512:3200
4332: !
4333: ! ###################################################################
4334: ! Utility route-maps
4335: !
4336: ! These utility route-maps generally should not used to permit/deny
4337: ! routes, i.e. they do not have meaning as filters, and hence probably
4338: ! should be used with 'on-match next'. These all finish with an empty
4339: ! permit entry so as not interfere with processing in the caller.
4340: !
4341: route-map rm-no-export permit 10
4342: set community additive no-export
4343: route-map rm-no-export permit 20
4344: !
4345: route-map rm-blackhole permit 10
4346: description blackhole, up-pref and ensure it cant escape this AS
4347: set ip next-hop 127.0.0.1
4348: set local-preference 10
4349: set community additive no-export
4350: route-map rm-blackhole permit 20
4351: !
4352: ! Set local-pref as requested
4353: route-map rm-prefmod permit 10
4354: match community cm-prefmod-100
4355: set local-preference 100
4356: route-map rm-prefmod permit 20
4357: match community cm-prefmod-200
4358: set local-preference 200
4359: route-map rm-prefmod permit 30
4360: match community cm-prefmod-300
4361: set local-preference 300
4362: route-map rm-prefmod permit 40
4363: match community cm-prefmod-400
4364: set local-preference 400
4365: route-map rm-prefmod permit 50
4366: !
4367: ! Community actions to take on receipt of route.
4368: route-map rm-community-in permit 10
4369: description check for blackholing, no point continuing if it matches.
4370: match community cm-blackhole
4371: call rm-blackhole
4372: route-map rm-community-in permit 20
4373: match community cm-set-no-export
4374: call rm-no-export
4375: on-match next
4376: route-map rm-community-in permit 30
4377: match community cme-prefmod-range
4378: call rm-prefmod
4379: route-map rm-community-in permit 40
4380: !
4381: ! #####################################################################
4382: ! Community actions to take when advertising a route.
4383: ! These are filtering route-maps,
4384: !
4385: ! Deny customer routes to upstream with cust-only set.
4386: route-map rm-community-filt-to-upstream deny 10
4387: match community cm-learnt-cust
4388: match community cm-cust-only
4389: route-map rm-community-filt-to-upstream permit 20
4390: !
4391: ! Deny customer routes to other customers with upstream-only set.
4392: route-map rm-community-filt-to-cust deny 10
4393: match community cm-learnt-cust
4394: match community cm-upstream-only
4395: route-map rm-community-filt-to-cust permit 20
4396: !
4397: ! ###################################################################
4398: ! The top-level route-maps applied to sessions. Further entries could
4399: ! be added obviously..
4400: !
4401: ! Customers
4402: route-map rm-cust-in permit 10
4403: call rm-community-in
4404: on-match next
4405: route-map rm-cust-in permit 20
4406: set community additive 64512:3100
4407: route-map rm-cust-in permit 30
4408: !
4409: route-map rm-cust-out permit 10
4410: call rm-community-filt-to-cust
4411: on-match next
4412: route-map rm-cust-out permit 20
4413: !
4414: ! Upstream transit ASes
4415: route-map rm-upstream-out permit 10
4416: description filter customer prefixes which are marked cust-only
4417: call rm-community-filt-to-upstream
4418: on-match next
4419: route-map rm-upstream-out permit 20
4420: description only customer routes are provided to upstreams/peers
4421: match community cm-learnt-cust
4422: !
4423: ! Peer ASes
4424: ! outbound policy is same as for upstream
4425: route-map rm-peer-out permit 10
4426: call rm-upstream-out
4427: !
4428: route-map rm-peer-in permit 10
4429: set community additive 64512:3200
4430:
4431:
4432: File: quagga.info, Node: Configuring Quagga as a Route Server, Next: VTY shell, Prev: BGP, Up: Top
4433:
4434: 10 Configuring Quagga as a Route Server
4435: ***************************************
4436:
4437: The purpose of a Route Server is to centralize the peerings between BGP
4438: speakers. For example if we have an exchange point scenario with four
4439: BGP speakers, each of which maintaining a BGP peering with the other
4440: three (*note fig:full-mesh::), we can convert it into a centralized
4441: scenario where each of the four establishes a single BGP peering
4442: against the Route Server (*note fig:route-server::).
4443:
4444: We will first describe briefly the Route Server model implemented by
4445: Quagga. We will explain the commands that have been added for
4446: configuring that model. And finally we will show a full example of
4447: Quagga configured as Route Server.
4448:
4449: * Menu:
4450:
4451: * Description of the Route Server model::
4452: * Commands for configuring a Route Server::
4453: * Example of Route Server Configuration::
4454:
4455:
4456: File: quagga.info, Node: Description of the Route Server model, Next: Commands for configuring a Route Server, Up: Configuring Quagga as a Route Server
4457:
4458: 10.1 Description of the Route Server model
4459: ==========================================
4460:
4461: First we are going to describe the normal processing that BGP
4462: announcements suffer inside a standard BGP speaker, as shown in *note
4463: fig:normal-processing::, it consists of three steps:
4464:
4465: * When an announcement is received from some peer, the `In' filters
4466: configured for that peer are applied to the announcement. These
4467: filters can reject the announcement, accept it unmodified, or
4468: accept it with some of its attributes modified.
4469:
4470: * The announcements that pass the `In' filters go into the Best Path
4471: Selection process, where they are compared to other announcements
4472: referred to the same destination that have been received from
4473: different peers (in case such other announcements exist). For each
4474: different destination, the announcement which is selected as the
4475: best is inserted into the BGP speaker's Loc-RIB.
4476:
4477: * The routes which are inserted in the Loc-RIB are considered for
4478: announcement to all the peers (except the one from which the route
4479: came). This is done by passing the routes in the Loc-RIB through
4480: the `Out' filters corresponding to each peer. These filters can
4481: reject the route, accept it unmodified, or accept it with some of
4482: its attributes modified. Those routes which are accepted by the
4483: `Out' filters of a peer are announced to that peer.
4484:
4485: