|
|
| version 1.1.1.1, 2012/02/21 17:26:11 | version 1.1.1.3, 2016/11/02 10:09:11 |
|---|---|
| Line 10 different routing protocols. | Line 10 different routing protocols. |
| * Invoking zebra:: Running the program | * Invoking zebra:: Running the program |
| * Interface Commands:: Commands for zebra interfaces | * Interface Commands:: Commands for zebra interfaces |
| * Static Route Commands:: Commands for adding static routes | * Static Route Commands:: Commands for adding static routes |
| * Multicast RIB Commands:: Commands for controlling MRIB behavior | |
| * zebra Route Filtering:: Commands for zebra route filtering | * zebra Route Filtering:: Commands for zebra route filtering |
| * zebra FIB push interface:: Interface to optional FPM component | |
| * zebra Terminal Mode Commands:: Commands for zebra's VTY | * zebra Terminal Mode Commands:: Commands for zebra's VTY |
| @end menu | @end menu |
| Line 184 and later). After setting @var{tableno} with this com | Line 186 and later). After setting @var{tableno} with this com |
| static routes defined after this are added to the specified table. | static routes defined after this are added to the specified table. |
| @end deffn | @end deffn |
| @node Multicast RIB Commands | |
| @section Multicast RIB Commands | |
| The Multicast RIB provides a separate table of unicast destinations which | |
| is used for Multicast Reverse Path Forwarding decisions. It is used with | |
| a multicast source's IP address, hence contains not multicast group | |
| addresses but unicast addresses. | |
| This table is fully separate from the default unicast table. However, | |
| RPF lookup can include the unicast table. | |
| WARNING: RPF lookup results are non-responsive in this version of Quagga, | |
| i.e. multicast routing does not actively react to changes in underlying | |
| unicast topology! | |
| @deffn Command {ip multicast rpf-lookup-mode @var{mode}} {} | |
| @deffnx Command {no ip multicast rpf-lookup-mode [@var{mode}]} {} | |
| @var{mode} sets the method used to perform RPF lookups. Supported modes: | |
| @table @samp | |
| @item urib-only | |
| Performs the lookup on the Unicast RIB. The Multicast RIB is never used. | |
| @item mrib-only | |
| Performs the lookup on the Multicast RIB. The Unicast RIB is never used. | |
| @item mrib-then-urib | |
| Tries to perform the lookup on the Multicast RIB. If any route is found, | |
| that route is used. Otherwise, the Unicast RIB is tried. | |
| @item lower-distance | |
| Performs a lookup on the Multicast RIB and Unicast RIB each. The result | |
| with the lower administrative distance is used; if they're equal, the | |
| Multicast RIB takes precedence. | |
| @item longer-prefix | |
| Performs a lookup on the Multicast RIB and Unicast RIB each. The result | |
| with the longer prefix length is used; if they're equal, the | |
| Multicast RIB takes precedence. | |
| @end table | |
| The @code{mrib-then-urib} setting is the default behavior if nothing is | |
| configured. If this is the desired behavior, it should be explicitly | |
| configured to make the configuration immune against possible changes in | |
| what the default behavior is. | |
| WARNING: Unreachable routes do not receive special treatment and do not | |
| cause fallback to a second lookup. | |
| @end deffn | |
| @deffn Command {show ip rpf @var{addr}} {} | |
| Performs a Multicast RPF lookup, as configured with | |
| @command{ip multicast rpf-lookup-mode @var{mode}}. @var{addr} specifies | |
| the multicast source address to look up. | |
| @example | |
| > show ip rpf 192.0.2.1 | |
| Routing entry for 192.0.2.0/24 using Unicast RIB | |
| Known via "kernel", distance 0, metric 0, best | |
| * 198.51.100.1, via eth0 | |
| @end example | |
| Indicates that a multicast source lookup for 192.0.2.1 would use an | |
| Unicast RIB entry for 192.0.2.0/24 with a gateway of 198.51.100.1. | |
| @end deffn | |
| @deffn Command {show ip rpf} {} | |
| Prints the entire Multicast RIB. Note that this is independent of the | |
| configured RPF lookup mode, the Multicast RIB may be printed yet not | |
| used at all. | |
| @end deffn | |
| @deffn Command {ip mroute @var{prefix} @var{nexthop} [@var{distance}]} {} | |
| @deffnx Command {no ip mroute @var{prefix} @var{nexthop} [@var{distance}]} {} | |
| Adds a static route entry to the Multicast RIB. This performs exactly as | |
| the @command{ip route} command, except that it inserts the route in the | |
| Multicast RIB instead of the Unicast RIB. | |
| @end deffn | |
| @node zebra Route Filtering | @node zebra Route Filtering |
| @section zebra Route Filtering | @section zebra Route Filtering |
| Zebra supports @command{prefix-list} and @command{route-map} to match | Zebra supports @command{prefix-list} and @command{route-map} to match |
| Line 227 ip protocol rip route-map RM1 | Line 309 ip protocol rip route-map RM1 |
| @end group | @end group |
| @end example | @end example |
| @node zebra FIB push interface | |
| @section zebra FIB push interface | |
| Zebra supports a 'FIB push' interface that allows an external | |
| component to learn the forwarding information computed by the Quagga | |
| routing suite. | |
| In Quagga, the Routing Information Base (RIB) resides inside | |
| zebra. Routing protocols communicate their best routes to zebra, and | |
| zebra computes the best route across protocols for each prefix. This | |
| latter information makes up the Forwarding Information Base | |
| (FIB). Zebra feeds the FIB to the kernel, which allows the IP stack in | |
| the kernel to forward packets according to the routes computed by | |
| Quagga. The kernel FIB is updated in an OS-specific way. For example, | |
| the @code{netlink} interface is used on Linux, and route sockets are | |
| used on FreeBSD. | |
| The FIB push interface aims to provide a cross-platform mechanism to | |
| support scenarios where the router has a forwarding path that is | |
| distinct from the kernel, commonly a hardware-based fast path. In | |
| these cases, the FIB needs to be maintained reliably in the fast path | |
| as well. We refer to the component that programs the forwarding plane | |
| (directly or indirectly) as the Forwarding Plane Manager or FPM. | |
| The FIB push interface comprises of a TCP connection between zebra and | |
| the FPM. The connection is initiated by zebra -- that is, the FPM acts | |
| as the TCP server. | |
| The relevant zebra code kicks in when zebra is configured with the | |
| @code{--enable-fpm} flag. Zebra periodically attempts to connect to | |
| the well-known FPM port. Once the connection is up, zebra starts | |
| sending messages containing routes over the socket to the FPM. Zebra | |
| sends a complete copy of the forwarding table to the FPM, including | |
| routes that it may have picked up from the kernel. The existing | |
| interaction of zebra with the kernel remains unchanged -- that is, the | |
| kernel continues to receive FIB updates as before. | |
| The format of the messages exchanged with the FPM is defined by the | |
| file @file{fpm/fpm.h} in the quagga tree. | |
| The zebra FPM interface uses replace semantics. That is, if a 'route | |
| add' message for a prefix is followed by another 'route add' message, | |
| the information in the second message is complete by itself, and | |
| replaces the information sent in the first message. | |
| If the connection to the FPM goes down for some reason, zebra sends | |
| the FPM a complete copy of the forwarding table(s) when it reconnects. | |
| @node zebra Terminal Mode Commands | @node zebra Terminal Mode Commands |
| @section zebra Terminal Mode Commands | @section zebra Terminal Mode Commands |
| Line 270 If so, the box can't work as a router. | Line 400 If so, the box can't work as a router. |
| @deffn Command {show ipv6forward} {} | @deffn Command {show ipv6forward} {} |
| Display whether the host's IP v6 forwarding is enabled or not. | Display whether the host's IP v6 forwarding is enabled or not. |
| @end deffn | |
| @deffn Command {show zebra fpm stats} {} | |
| Display statistics related to the zebra code that interacts with the | |
| optional Forwarding Plane Manager (FPM) component. | |
| @end deffn | |
| @deffn Command {clear zebra fpm stats} {} | |
| Reset statistics related to the zebra code that interacts with the | |
| optional Forwarding Plane Manager (FPM) component. | |
| @end deffn | @end deffn |