Annotation of embedaddon/quagga/doc/main.texi, revision 1.1.1.2

1.1       misho       1: @node Zebra
                      2: @chapter Zebra
                      3: 
                      4: @c SYNOPSIS
                      5: @command{zebra} is an IP routing manager.  It provides kernel routing
                      6: table updates, interface lookups, and redistribution of routes between
                      7: different routing protocols.
                      8: 
                      9: @menu
                     10: * Invoking zebra::              Running the program
                     11: * Interface Commands::          Commands for zebra interfaces
                     12: * Static Route Commands::       Commands for adding static routes
                     13: * zebra Route Filtering::       Commands for zebra route filtering
1.1.1.2 ! misho      14: * zebra FIB push interface::    Interface to optional FPM component
1.1       misho      15: * zebra Terminal Mode Commands::  Commands for zebra's VTY
                     16: @end menu
                     17: 
                     18: 
                     19: @node Invoking zebra
                     20: @section Invoking zebra
                     21: 
                     22: Besides the common invocation options (@pxref{Common Invocation Options}), the
                     23: @command{zebra} specific invocation options are listed below.
                     24: 
                     25: @table @samp
                     26: @item -b
                     27: @itemx --batch
                     28: Runs in batch mode.  @command{zebra} parses configuration file and terminates
                     29: immediately.
                     30: 
                     31: @item -k
                     32: @itemx --keep_kernel
                     33: When zebra starts up, don't delete old self inserted routes.
                     34: 
                     35: @item -r
                     36: @itemx --retain
                     37: When program terminates, retain routes added by zebra.
                     38: 
                     39: @end table
                     40: 
                     41: @node Interface Commands
                     42: @section Interface Commands
                     43: 
                     44: @deffn Command {interface @var{ifname}} {}
                     45: @end deffn
                     46: 
                     47: @deffn {Interface Command} {shutdown} {}
                     48: @deffnx {Interface Command} {no shutdown} {}
                     49: Up or down the current interface.
                     50: @end deffn
                     51: 
                     52: @deffn {Interface Command} {ip address @var{address/prefix}} {}
                     53: @deffnx {Interface Command} {ipv6 address @var{address/prefix}} {}
                     54: @deffnx {Interface Command} {no ip address @var{address/prefix}} {}
                     55: @deffnx {Interface Command} {no ipv6 address @var{address/prefix}} {}
                     56: Set the IPv4 or IPv6 address/prefix for the interface.
                     57: @end deffn
                     58: 
                     59: @deffn {Interface Command} {ip address @var{address/prefix} secondary} {}
                     60: @deffnx {Interface Command} {no ip address @var{address/prefix} secondary} {}
                     61: Set the secondary flag for this address. This causes ospfd to not treat the
                     62: address as a distinct subnet.
                     63: @end deffn
                     64: 
                     65: @deffn {Interface Command} {description @var{description} ...} {}
                     66: Set description for the interface.
                     67: @end deffn
                     68: 
                     69: @deffn {Interface Command} {multicast} {}
                     70: @deffnx {Interface Command} {no multicast} {}
                     71: Enable or disables multicast flag for the interface.
                     72: @end deffn
                     73: 
                     74: @deffn {Interface Command} {bandwidth <1-10000000>} {}
                     75: @deffnx {Interface Command} {no bandwidth <1-10000000>} {}
                     76: Set bandwidth value of the interface in kilobits/sec.  This is for 
                     77: calculating OSPF cost. This command does not affect the actual device 
                     78: configuration.
                     79: @end deffn
                     80: 
                     81: @deffn {Interface Command} {link-detect} {}
                     82: @deffnx {Interface Command} {no link-detect} {}
                     83: Enable/disable link-detect on platforms which support this. Currently 
                     84: only Linux and Solaris, and only where network interface drivers support reporting
                     85: link-state via the IFF_RUNNING flag.
                     86: @end deffn
                     87: 
                     88: @node Static Route Commands
                     89: @section Static Route Commands
                     90: 
                     91: Static routing is a very fundamental feature of routing technology.  It
                     92: defines static prefix and gateway.
                     93: 
                     94: @deffn Command {ip route @var{network} @var{gateway}} {}
                     95: @var{network} is destination prefix with format of A.B.C.D/M.
                     96: @var{gateway} is gateway for the prefix.  When @var{gateway} is
                     97: A.B.C.D format.  It is taken as a IPv4 address gateway.  Otherwise it
                     98: is treated as an interface name. If the interface name is @var{null0} then
                     99: zebra installs a blackhole route.
                    100: 
                    101: @example
                    102: ip route 10.0.0.0/8 10.0.0.2
                    103: ip route 10.0.0.0/8 ppp0
                    104: ip route 10.0.0.0/8 null0
                    105: @end example
                    106: 
                    107: First example defines 10.0.0.0/8 static route with gateway 10.0.0.2.
                    108: Second one defines the same prefix but with gateway to interface ppp0. The
                    109: third install a blackhole route.
                    110: @end deffn
                    111: 
                    112: @deffn Command {ip route @var{network} @var{netmask} @var{gateway}} {}
                    113: This is alternate version of above command.  When @var{network} is
                    114: A.B.C.D format, user must define @var{netmask} value with A.B.C.D
                    115: format.  @var{gateway} is same option as above command
                    116: 
                    117: @example
                    118: ip route 10.0.0.0 255.255.255.0 10.0.0.2
                    119: ip route 10.0.0.0 255.255.255.0 ppp0
                    120: ip route 10.0.0.0 255.255.255.0 null0
                    121: @end example
                    122: 
                    123: These statements are equivalent to those in the previous example.
                    124: @end deffn
                    125: 
                    126: @deffn Command {ip route @var{network} @var{gateway} @var{distance}} {}
                    127: Installs the route with the specified distance.
                    128: @end deffn
                    129: 
                    130: Multiple nexthop static route
                    131: 
                    132: @example
                    133: ip route 10.0.0.1/32 10.0.0.2
                    134: ip route 10.0.0.1/32 10.0.0.3
                    135: ip route 10.0.0.1/32 eth0
                    136: @end example
                    137: 
                    138: If there is no route to 10.0.0.2 and 10.0.0.3, and interface eth0
                    139: is reachable, then the last route is installed into the kernel.
                    140: 
                    141: If zebra has been compiled with multipath support, and both 10.0.0.2 and
                    142: 10.0.0.3 are reachable, zebra will install a multipath route via both
                    143: nexthops, if the platform supports this.
                    144: 
                    145: @example
                    146: zebra> show ip route
                    147: S>  10.0.0.1/32 [1/0] via 10.0.0.2 inactive
                    148:                       via 10.0.0.3 inactive
                    149:   *                   is directly connected, eth0
                    150: @end example
                    151: 
                    152: @example
                    153: ip route 10.0.0.0/8 10.0.0.2
                    154: ip route 10.0.0.0/8 10.0.0.3
                    155: ip route 10.0.0.0/8 null0 255
                    156: @end example
                    157: 
                    158: This will install a multihop route via the specified next-hops if they are
                    159: reachable, as well as a high-metric blackhole route, which can be useful to
                    160: prevent traffic destined for a prefix to match less-specific routes (eg
                    161: default) should the specified gateways not be reachable. Eg:
                    162: 
                    163: @example
                    164: zebra> show ip route 10.0.0.0/8             
                    165: Routing entry for 10.0.0.0/8
                    166:   Known via "static", distance 1, metric 0
                    167:     10.0.0.2 inactive
                    168:     10.0.0.3 inactive
                    169: 
                    170: Routing entry for 10.0.0.0/8
                    171:   Known via "static", distance 255, metric 0
                    172:     directly connected, Null0
                    173: @end example
                    174: 
                    175: @deffn Command {ipv6 route @var{network} @var{gateway}} {}
                    176: @deffnx Command {ipv6 route @var{network} @var{gateway} @var{distance}} {}
                    177: These behave similarly to their ipv4 counterparts.
                    178: @end deffn
                    179: 
                    180: 
                    181: @deffn Command {table @var{tableno}} {}
                    182: Select the primary kernel routing table to be used.  This only works
                    183: for kernels supporting multiple routing tables (like GNU/Linux 2.2.x
                    184: and later).  After setting @var{tableno} with this command, 
                    185: static routes defined after this are added to the specified table.
                    186: @end deffn
                    187: 
                    188: @node zebra Route Filtering
                    189: @section zebra Route Filtering
                    190: Zebra supports @command{prefix-list} and @command{route-map} to match
                    191: routes received from other quagga components.  The
                    192: @command{permit}/@command{deny} facilities provided by these commands
                    193: can be used to filter which routes zebra will install in the kernel.
                    194: 
                    195: @deffn Command {ip protocol @var{protocol} route-map @var{routemap}} {}
                    196: Apply a route-map filter to routes for the specified protocol. @var{protocol}
                    197: can be @b{any} or one of
                    198: @b{system},
                    199: @b{kernel},
                    200: @b{connected},
                    201: @b{static},
                    202: @b{rip},
                    203: @b{ripng},
                    204: @b{ospf},
                    205: @b{ospf6},
                    206: @b{isis},
                    207: @b{bgp},
                    208: @b{hsls}.
                    209: @end deffn
                    210: 
                    211: @deffn {Route Map} {set src @var{address}}
                    212: Within a route-map, set the preferred source address for matching routes
                    213: when installing in the kernel.
                    214: @end deffn
                    215: 
                    216: @example
                    217: The following creates a prefix-list that matches all addresses, a route-map
                    218: that sets the preferred source address, and applies the route-map to all
                    219: @command{rip} routes.
                    220: 
                    221: @group
                    222: ip prefix-list ANY permit 0.0.0.0/0 le 32
                    223: route-map RM1 permit 10
                    224:      match ip address prefix-list ANY
                    225:      set src 10.0.0.1
                    226: 
                    227: ip protocol rip route-map RM1
                    228: @end group
                    229: @end example
                    230: 
1.1.1.2 ! misho     231: @node zebra FIB push interface
        !           232: @section zebra FIB push interface
        !           233: 
        !           234: Zebra supports a 'FIB push' interface that allows an external
        !           235: component to learn the forwarding information computed by the Quagga
        !           236: routing suite.
        !           237: 
        !           238: In Quagga, the Routing Information Base (RIB) resides inside
        !           239: zebra. Routing protocols communicate their best routes to zebra, and
        !           240: zebra computes the best route across protocols for each prefix. This
        !           241: latter information makes up the Forwarding Information Base
        !           242: (FIB). Zebra feeds the FIB to the kernel, which allows the IP stack in
        !           243: the kernel to forward packets according to the routes computed by
        !           244: Quagga. The kernel FIB is updated in an OS-specific way. For example,
        !           245: the @code{netlink} interface is used on Linux, and route sockets are
        !           246: used on FreeBSD.
        !           247: 
        !           248: The FIB push interface aims to provide a cross-platform mechanism to
        !           249: support scenarios where the router has a forwarding path that is
        !           250: distinct from the kernel, commonly a hardware-based fast path. In
        !           251: these cases, the FIB needs to be maintained reliably in the fast path
        !           252: as well. We refer to the component that programs the forwarding plane
        !           253: (directly or indirectly) as the Forwarding Plane Manager or FPM.
        !           254: 
        !           255: The FIB push interface comprises of a TCP connection between zebra and
        !           256: the FPM. The connection is initiated by zebra -- that is, the FPM acts
        !           257: as the TCP server.
        !           258: 
        !           259: The relevant zebra code kicks in when zebra is configured with the
        !           260: @code{--enable-fpm} flag. Zebra periodically attempts to connect to
        !           261: the well-known FPM port. Once the connection is up, zebra starts
        !           262: sending messages containing routes over the socket to the FPM. Zebra
        !           263: sends a complete copy of the forwarding table to the FPM, including
        !           264: routes that it may have picked up from the kernel. The existing
        !           265: interaction of zebra with the kernel remains unchanged -- that is, the
        !           266: kernel continues to receive FIB updates as before.
        !           267: 
        !           268: The format of the messages exchanged with the FPM is defined by the
        !           269: file @file{fpm/fpm.h} in the quagga tree.
        !           270: 
        !           271: The zebra FPM interface uses replace semantics. That is, if a 'route
        !           272: add' message for a prefix is followed by another 'route add' message,
        !           273: the information in the second message is complete by itself, and
        !           274: replaces the information sent in the first message.
        !           275: 
        !           276: If the connection to the FPM goes down for some reason, zebra sends
        !           277: the FPM a complete copy of the forwarding table(s) when it reconnects.
        !           278: 
1.1       misho     279: @node zebra Terminal Mode Commands
                    280: @section zebra Terminal Mode Commands
                    281: 
                    282: @deffn Command {show ip route} {}
                    283: Display current routes which zebra holds in its database.
                    284: 
                    285: @example
                    286: @group
                    287: Router# show ip route 
                    288: Codes: K - kernel route, C - connected, S - static, R - RIP, 
                    289:        B - BGP * - FIB route.
                    290: 
                    291: K* 0.0.0.0/0              203.181.89.241
                    292: S  0.0.0.0/0              203.181.89.1
                    293: C* 127.0.0.0/8            lo
                    294: C* 203.181.89.240/28      eth0
                    295: @end group
                    296: @end example
                    297: @end deffn
                    298: 
                    299: @deffn Command {show ipv6 route} {}
                    300: @end deffn
                    301: 
                    302: @deffn Command {show interface} {}
                    303: @end deffn
                    304: 
                    305: @deffn Command {show ip prefix-list [@var{name}]} {}
                    306: @end deffn
                    307: 
                    308: @deffn Command {show route-map [@var{name}]} {}
                    309: @end deffn
                    310: 
                    311: @deffn Command {show ip protocol} {}
                    312: @end deffn
                    313: 
                    314: @deffn Command {show ipforward} {}
                    315: Display whether the host's IP forwarding function is enabled or not.
                    316: Almost any UNIX kernel can be configured with IP forwarding disabled.
                    317: If so, the box can't work as a router.
                    318: @end deffn
                    319: 
                    320: @deffn Command {show ipv6forward} {}
                    321: Display whether the host's IP v6 forwarding is enabled or not.
                    322: @end deffn
1.1.1.2 ! misho     323: 
        !           324: @deffn Command {show zebra fpm stats} {}
        !           325: Display statistics related to the zebra code that interacts with the
        !           326: optional Forwarding Plane Manager (FPM) component.
        !           327: @end deffn
        !           328: 
        !           329: @deffn Command {clear zebra fpm stats} {}
        !           330: Reset statistics related to the zebra code that interacts with the
        !           331: optional Forwarding Plane Manager (FPM) component.
        !           332: @end deffn

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>