Annotation of embedaddon/quagga/doc/quagga.info-1, revision 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: