paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 1 | @c -*-texinfo-*- |
paul | 7190f4e | 2003-08-12 12:40:20 +0000 | [diff] [blame] | 2 | @c This is part of the Quagga Manual. |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 3 | @c @value{COPYRIGHT_STR} |
| 4 | @c See file quagga.texi for copying conditions. |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 5 | @node RIP |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 6 | @chapter RIP |
| 7 | |
| 8 | RIP -- Routing Information Protocol is widely deployed interior gateway |
| 9 | protocol. RIP was developed in the 1970s at Xerox Labs as part of the |
| 10 | XNS routing protocol. RIP is a @dfn{distance-vector} protocol and is |
| 11 | based on the @dfn{Bellman-Ford} algorithms. As a distance-vector |
| 12 | protocol, RIP router send updates to its neighbors periodically, thus |
| 13 | allowing the convergence to a known topology. In each update, the |
| 14 | distance to any given network will be broadcasted to its neighboring |
| 15 | router. |
| 16 | |
| 17 | @command{ripd} supports RIP version 2 as described in RFC2453 and RIP |
| 18 | version 1 as described in RFC1058. |
| 19 | |
| 20 | @menu |
| 21 | * Starting and Stopping ripd:: |
| 22 | * RIP Configuration:: |
Paul Jakma | 5f03f14 | 2006-05-04 07:37:37 +0000 | [diff] [blame^] | 23 | * RIP Version Control:: |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 24 | * How to Announce RIP route:: |
| 25 | * Filtering RIP Routes:: |
| 26 | * RIP Metric Manipulation:: |
| 27 | * RIP distance:: |
| 28 | * RIP route-map:: |
| 29 | * RIP Authentication:: |
| 30 | * RIP Timers:: |
| 31 | * Show RIP Information:: |
| 32 | * RIP Debug Commands:: |
| 33 | @end menu |
| 34 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 35 | @node Starting and Stopping ripd |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 36 | @section Starting and Stopping ripd |
| 37 | |
| 38 | The default configuration file name of @command{ripd}'s is |
| 39 | @file{ripd.conf}. When invocation @command{ripd} searches directory |
| 40 | @value{INSTALL_PREFIX_ETC}. If @file{ripd.conf} is not there next |
| 41 | search current directory. |
| 42 | |
paul | 152f4a8 | 2004-05-26 23:31:11 +0000 | [diff] [blame] | 43 | RIP uses UDP port 520 to send and receive RIP packets. So the user must have |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 44 | the capability to bind the port, generally this means that the user must |
| 45 | have superuser privileges. RIP protocol requires interface information |
| 46 | maintained by @command{zebra} daemon. So running @command{zebra} |
| 47 | is mandatory to run @command{ripd}. Thus minimum sequence for running |
| 48 | RIP is like below: |
| 49 | |
| 50 | @example |
| 51 | @group |
| 52 | # zebra -d |
| 53 | # ripd -d |
| 54 | @end group |
| 55 | @end example |
| 56 | |
| 57 | Please note that @command{zebra} must be invoked before @command{ripd}. |
| 58 | |
| 59 | To stop @command{ripd}. Please use @command{kill `cat |
| 60 | /var/run/ripd.pid`}. Certain signals have special meaningss to @command{ripd}. |
| 61 | |
| 62 | @table @samp |
| 63 | @item SIGHUP |
| 64 | Reload configuration file @file{ripd.conf}. All configurations are |
| 65 | reseted. All routes learned so far are cleared and removed from routing |
| 66 | table. |
| 67 | @item SIGUSR1 |
| 68 | Rotate @command{ripd} logfile. |
| 69 | @item SIGINT |
| 70 | @itemx SIGTERM |
| 71 | @command{ripd} sweeps all installed RIP routes then terminates properly. |
| 72 | @end table |
| 73 | |
| 74 | @command{ripd} invocation options. Common options that can be specified |
| 75 | (@pxref{Common Invocation Options}). |
| 76 | |
| 77 | @table @samp |
| 78 | @item -r |
| 79 | @itemx --retain |
| 80 | When the program terminates, retain routes added by @command{ripd}. |
| 81 | @end table |
| 82 | |
| 83 | @menu |
| 84 | * RIP netmask:: |
| 85 | @end menu |
| 86 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 87 | @node RIP netmask |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 88 | @subsection RIP netmask |
| 89 | |
| 90 | The netmask features of @command{ripd} support both version 1 and version 2 of |
| 91 | RIP. Version 1 of RIP originally contained no netmask information. In |
| 92 | RIP version 1, network classes were originally used to determine the |
| 93 | size of the netmask. Class A networks use 8 bits of mask, Class B |
| 94 | networks use 16 bits of masks, while Class C networks use 24 bits of |
| 95 | mask. Today, the most widely used method of a network mask is assigned |
| 96 | to the packet on the basis of the interface that received the packet. |
| 97 | Version 2 of RIP supports a variable length subnet mask (VLSM). By |
| 98 | extending the subnet mask, the mask can be divided and reused. Each |
| 99 | subnet can be used for different purposes such as large to middle size |
paul | 7190f4e | 2003-08-12 12:40:20 +0000 | [diff] [blame] | 100 | LANs and WAN links. Quagga @command{ripd} does not support the non-sequential |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 101 | netmasks that are included in RIP Version 2. |
| 102 | |
| 103 | In a case of similar information with the same prefix and metric, the |
| 104 | old information will be suppressed. Ripd does not currently support |
| 105 | equal cost multipath routing. |
| 106 | |
| 107 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 108 | @node RIP Configuration |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 109 | @section RIP Configuration |
| 110 | |
| 111 | @deffn Command {router rip} {} |
| 112 | The @code{router rip} command is necessary to enable RIP. To disable |
| 113 | RIP, use the @code{no router rip} command. RIP must be enabled before |
| 114 | carrying out any of the RIP commands. |
| 115 | @end deffn |
| 116 | |
paul | 971a449 | 2003-06-20 01:18:07 +0000 | [diff] [blame] | 117 | @deffn Command {no router rip} {} |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 118 | Disable RIP. |
| 119 | @end deffn |
| 120 | |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 121 | @deffn {RIP Command} {network @var{network}} {} |
| 122 | @deffnx {RIP Command} {no network @var{network}} {} |
| 123 | Set the RIP enable interface by @var{network}. The interfaces which |
| 124 | have addresses matching with @var{network} are enabled. |
| 125 | |
| 126 | This group of commands either enables or disables RIP interfaces between |
| 127 | certain numbers of a specified network address. For example, if the |
| 128 | network for 10.0.0.0/24 is RIP enabled, this would result in all the |
| 129 | addresses from 10.0.0.0 to 10.0.0.255 being enabled for RIP. The @code{no |
| 130 | network} command will disable RIP for the specified network. |
| 131 | @end deffn |
| 132 | |
| 133 | @deffn {RIP Command} {network @var{ifname}} {} |
| 134 | @deffnx {RIP Command} {no network @var{ifname}} {} |
| 135 | Set a RIP enabled interface by @var{ifname}. Both the sending and |
| 136 | receiving of RIP packets will be enabled on the port specified in the |
| 137 | @code{network ifname} command. The @code{no network ifname} command will disable |
| 138 | RIP on the specified interface. |
| 139 | @end deffn |
| 140 | |
| 141 | @deffn {RIP Command} {neighbor @var{a.b.c.d}} {} |
| 142 | @deffnx {RIP Command} {no neighbor @var{a.b.c.d}} {} |
| 143 | Specify RIP neighbor. When a neighbor doesn't understand multicast, |
| 144 | this command is used to specify neighbors. In some cases, not all |
| 145 | routers will be able to understand multicasting, where packets are sent |
| 146 | to a network or a group of addresses. In a situation where a neighbor |
| 147 | cannot process multicast packets, it is necessary to establish a direct |
| 148 | link between routers. The neighbor command allows the network |
| 149 | administrator to specify a router as a RIP neighbor. The @code{no |
| 150 | neighbor a.b.c.d} command will disable the RIP neighbor. |
| 151 | @end deffn |
| 152 | |
| 153 | Below is very simple RIP configuration. Interface @code{eth0} and |
| 154 | interface which address match to @code{10.0.0.0/8} are RIP enabled. |
| 155 | |
| 156 | @example |
| 157 | @group |
| 158 | ! |
| 159 | router rip |
| 160 | network 10.0.0.0/8 |
| 161 | network eth0 |
| 162 | ! |
| 163 | @end group |
| 164 | @end example |
| 165 | |
| 166 | Passive interface |
| 167 | |
paul | 971a449 | 2003-06-20 01:18:07 +0000 | [diff] [blame] | 168 | @deffn {RIP command} {passive-interface (@var{IFNAME}|default)} {} |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 169 | @deffnx {RIP command} {no passive-interface @var{IFNAME}} {} |
| 170 | This command sets the specified interface to passive mode. On passive mode |
| 171 | interface, all receiving packets are processed as normal and ripd does |
| 172 | not send either multicast or unicast RIP packets except to RIP neighbors |
paul | 971a449 | 2003-06-20 01:18:07 +0000 | [diff] [blame] | 173 | specified with @code{neighbor} command. The interface may be specified |
| 174 | as @var{default} to make ripd default to passive on all interfaces. |
| 175 | |
| 176 | The default is to be passive on all interfaces. |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 177 | @end deffn |
| 178 | |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 179 | RIP split-horizon |
| 180 | |
| 181 | @deffn {Interface command} {ip split-horizon} {} |
| 182 | @deffnx {Interface command} {no ip split-horizon} {} |
| 183 | Control split-horizon on the interface. Default is @code{ip |
| 184 | split-horizon}. If you don't perform split-horizon on the interface, |
| 185 | please specify @code{no ip split-horizon}. |
| 186 | @end deffn |
| 187 | |
Paul Jakma | 5f03f14 | 2006-05-04 07:37:37 +0000 | [diff] [blame^] | 188 | @node RIP Version Control |
| 189 | @section RIP Version Control |
| 190 | |
| 191 | RIP can be configured to send either Version 1 or Version 2 packets. |
| 192 | The default is to send RIPv2 while accepting both RIPv1 and RIPv2 (and |
| 193 | replying with packets of the appropriate version for REQUESTS / |
| 194 | triggered updates). The version to receive and send can be specified |
| 195 | globally, and further overriden on a per-interface basis if needs be |
| 196 | for send and receive seperately (see below). |
| 197 | |
| 198 | It is important to note that RIPv1 can not be authenticated. Further, |
| 199 | if RIPv1 is enabled then RIP will reply to REQUEST packets, sending the |
| 200 | state of its RIP routing table to any remote routers that ask on |
| 201 | demand. For a more detailed discussion on the security implications of |
| 202 | RIPv1 see @ref{RIP Authentication}. |
| 203 | |
| 204 | @deffn {RIP Command} {version @var{version}} {} |
| 205 | Set RIP version to accept for reads and send. @var{version} |
| 206 | can be either `1'' or `2''. |
| 207 | |
| 208 | Disabling RIPv1 by specifying version 2 is STRONGLY encouraged, |
| 209 | @xref{RIP Authentication}. This may become the default in a future |
| 210 | release. |
| 211 | |
| 212 | Default: Send Version 2, and accept either version. |
| 213 | @end deffn |
| 214 | |
| 215 | @deffn {RIP Command} {no version} {} |
| 216 | Reset the global version setting back to the default. |
| 217 | @end deffn |
| 218 | |
| 219 | @deffn {Interface command} {ip rip send version @var{version}} {} |
| 220 | @var{version} can be `1', `2' or `1 2'. |
| 221 | |
| 222 | This interface command overrides the global rip version setting, and |
| 223 | selects which version of RIP to send packets with, for this interface |
| 224 | specifically. Choice of RIP Version 1, RIP Version 2, or both versions. |
| 225 | In the latter case, where `1 2' is specified, packets will be both |
| 226 | broadcast and multicast. |
| 227 | |
| 228 | Default: Send packets according to the global version (version 2) |
| 229 | @end deffn |
| 230 | |
| 231 | @deffn {Interface command} {ip rip receive version @var{version}} {} |
| 232 | @var{version} can be `1', `2' or `1 2'. |
| 233 | |
| 234 | This interface command overrides the global rip version setting, and |
| 235 | selects which versions of RIP packets will be accepted on this |
| 236 | interface. Choice of RIP Version 1, RIP Version 2, or both. |
| 237 | |
| 238 | Default: Accept packets according to the global setting (both 1 and 2). |
| 239 | @end deffn |
| 240 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 241 | @node How to Announce RIP route |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 242 | @section How to Announce RIP route |
| 243 | |
| 244 | @deffn {RIP command} {redistribute kernel} {} |
| 245 | @deffnx {RIP command} {redistribute kernel metric <0-16>} {} |
| 246 | @deffnx {RIP command} {redistribute kernel route-map @var{route-map}} {} |
| 247 | @deffnx {RIP command} {no redistribute kernel} {} |
| 248 | @code{redistribute kernel} redistributes routing information from |
| 249 | kernel route entries into the RIP tables. @code{no redistribute kernel} |
| 250 | disables the routes. |
| 251 | @end deffn |
| 252 | |
| 253 | @deffn {RIP command} {redistribute static} {} |
| 254 | @deffnx {RIP command} {redistribute static metric <0-16>} {} |
| 255 | @deffnx {RIP command} {redistribute static route-map @var{route-map}} {} |
| 256 | @deffnx {RIP command} {no redistribute static} {} |
| 257 | @code{redistribute static} redistributes routing information from |
| 258 | static route entries into the RIP tables. @code{no redistribute static} |
| 259 | disables the routes. |
| 260 | @end deffn |
| 261 | |
| 262 | @deffn {RIP command} {redistribute connected} {} |
| 263 | @deffnx {RIP command} {redistribute connected metric <0-16>} {} |
| 264 | @deffnx {RIP command} {redistribute connected route-map @var{route-map}} {} |
| 265 | @deffnx {RIP command} {no redistribute connected} {} |
| 266 | Redistribute connected routes into the RIP tables. @code{no |
| 267 | redistribute connected} disables the connected routes in the RIP tables. |
| 268 | This command redistribute connected of the interface which RIP disabled. |
| 269 | The connected route on RIP enabled interface is announced by default. |
| 270 | @end deffn |
| 271 | |
| 272 | @deffn {RIP command} {redistribute ospf} {} |
| 273 | @deffnx {RIP command} {redistribute ospf metric <0-16>} {} |
| 274 | @deffnx {RIP command} {redistribute ospf route-map @var{route-map}} {} |
| 275 | @deffnx {RIP command} {no redistribute ospf} {} |
| 276 | @code{redistribute ospf} redistributes routing information from |
| 277 | ospf route entries into the RIP tables. @code{no redistribute ospf} |
| 278 | disables the routes. |
| 279 | @end deffn |
| 280 | |
| 281 | @deffn {RIP command} {redistribute bgp} {} |
| 282 | @deffnx {RIP command} {redistribute bgp metric <0-16>} {} |
| 283 | @deffnx {RIP command} {redistribute bgp route-map @var{route-map}} {} |
| 284 | @deffnx {RIP command} {no redistribute bgp} {} |
| 285 | @code{redistribute bgp} redistributes routing information from |
| 286 | bgp route entries into the RIP tables. @code{no redistribute bgp} |
| 287 | disables the routes. |
| 288 | @end deffn |
| 289 | |
| 290 | If you want to specify RIP only static routes: |
| 291 | |
| 292 | @deffn {RIP command} {default-information originate} {} |
| 293 | @end deffn |
| 294 | |
| 295 | @deffn {RIP command} {route @var{a.b.c.d/m}} {} |
| 296 | @deffnx {RIP command} {no route @var{a.b.c.d/m}} {} |
paul | 7190f4e | 2003-08-12 12:40:20 +0000 | [diff] [blame] | 297 | This command is specific to Quagga. The @code{route} command makes a static |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 298 | route only inside RIP. This command should be used only by advanced |
| 299 | users who are particularly knowledgeable about the RIP protocol. In |
paul | 7190f4e | 2003-08-12 12:40:20 +0000 | [diff] [blame] | 300 | most cases, we recommend creating a static route in Quagga and |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 301 | redistributing it in RIP using @code{redistribute static}. |
| 302 | @end deffn |
| 303 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 304 | @node Filtering RIP Routes |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 305 | @section Filtering RIP Routes |
| 306 | |
| 307 | RIP routes can be filtered by a distribute-list. |
| 308 | |
| 309 | @deffn Command {distribute-list @var{access_list} @var{direct} @var{ifname}} {} |
| 310 | You can apply access lists to the interface with a @code{distribute-list} |
| 311 | command. @var{access_list} is the access list name. @var{direct} is |
| 312 | @samp{in} or @samp{out}. If @var{direct} is @samp{in} the access list |
| 313 | is applied to input packets. |
| 314 | |
| 315 | The @code{distribute-list} command can be used to filter the RIP path. |
| 316 | @code{distribute-list} can apply access-lists to a chosen interface. |
| 317 | First, one should specify the access-list. Next, the name of the |
| 318 | access-list is used in the distribute-list command. For example, in the |
| 319 | following configuration @samp{eth0} will permit only the paths that |
| 320 | match the route 10.0.0.0/8 |
| 321 | |
| 322 | @example |
| 323 | @group |
| 324 | ! |
| 325 | router rip |
| 326 | distribute-list private in eth0 |
| 327 | ! |
| 328 | access-list private permit 10 10.0.0.0/8 |
| 329 | access-list private deny any |
| 330 | ! |
| 331 | @end group |
| 332 | @end example |
| 333 | @end deffn |
| 334 | |
| 335 | @code{distribute-list} can be applied to both incoming and outgoing data. |
| 336 | |
| 337 | @deffn Command {distribute-list prefix @var{prefix_list} (in|out) @var{ifname}} {} |
| 338 | You can apply prefix lists to the interface with a |
| 339 | @code{distribute-list} command. @var{prefix_list} is the prefix list |
| 340 | name. Next is the direction of @samp{in} or @samp{out}. If |
| 341 | @var{direct} is @samp{in} the access list is applied to input packets. |
| 342 | @end deffn |
| 343 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 344 | @node RIP Metric Manipulation |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 345 | @section RIP Metric Manipulation |
| 346 | |
| 347 | RIP metric is a value for distance for the network. Usually |
| 348 | @command{ripd} increment the metric when the network information is |
| 349 | received. Redistributed routes' metric is set to 1. |
| 350 | |
| 351 | @deffn {RIP command} {default-metric <1-16>} {} |
| 352 | @deffnx {RIP command} {no default-metric <1-16>} {} |
| 353 | This command modifies the default metric value for redistributed routes. The |
| 354 | default value is 1. This command does not affect connected route |
| 355 | even if it is redistributed by @command{redistribute connected}. To modify |
| 356 | connected route's metric value, please use @command{redistribute |
| 357 | connected metric} or @command{route-map}. @command{offset-list} also |
| 358 | affects connected routes. |
| 359 | @end deffn |
| 360 | |
| 361 | @deffn {RIP command} {offset-list @var{access-list} (in|out)} {} |
| 362 | @deffnx {RIP command} {offset-list @var{access-list} (in|out) @var{ifname}} {} |
| 363 | @end deffn |
| 364 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 365 | @node RIP distance |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 366 | @section RIP distance |
| 367 | |
| 368 | Distance value is used in zebra daemon. Default RIP distance is 120. |
| 369 | |
| 370 | @deffn {RIP command} {distance <1-255>} {} |
| 371 | @deffnx {RIP command} {no distance <1-255>} {} |
| 372 | Set default RIP distance to specified value. |
| 373 | @end deffn |
| 374 | |
| 375 | @deffn {RIP command} {distance <1-255> @var{A.B.C.D/M}} {} |
| 376 | @deffnx {RIP command} {no distance <1-255> @var{A.B.C.D/M}} {} |
| 377 | Set default RIP distance to specified value when the route's source IP |
| 378 | address matches the specified prefix. |
| 379 | @end deffn |
| 380 | |
| 381 | @deffn {RIP command} {distance <1-255> @var{A.B.C.D/M} @var{access-list}} {} |
| 382 | @deffnx {RIP command} {no distance <1-255> @var{A.B.C.D/M} @var{access-list}} {} |
| 383 | Set default RIP distance to specified value when the route's source IP |
| 384 | address matches the specified prefix and the specified access-list. |
| 385 | @end deffn |
| 386 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 387 | @node RIP route-map |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 388 | @section RIP route-map |
| 389 | |
| 390 | Usage of @command{ripd}'s route-map support. |
| 391 | |
| 392 | Optional argument route-map MAP_NAME can be added to each @code{redistribute} |
| 393 | statement. |
| 394 | |
| 395 | @example |
| 396 | redistribute static [route-map MAP_NAME] |
| 397 | redistribute connected [route-map MAP_NAME] |
| 398 | ..... |
| 399 | @end example |
| 400 | |
paul | 7190f4e | 2003-08-12 12:40:20 +0000 | [diff] [blame] | 401 | Cisco applies route-map _before_ routes will exported to rip route table. |
| 402 | In current Quagga's test implementation, @command{ripd} applies route-map |
| 403 | after routes are listed in the route table and before routes will be |
| 404 | announced to an interface (something like output filter). I think it is not |
| 405 | so clear, but it is draft and it may be changed at future. |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 406 | |
| 407 | Route-map statement (@pxref{Route Map}) is needed to use route-map |
| 408 | functionality. |
| 409 | |
| 410 | @deffn {Route Map} {match interface @var{word}} {} |
| 411 | This command match to incoming interface. Notation of this match is |
| 412 | different from Cisco. Cisco uses a list of interfaces - NAME1 NAME2 |
| 413 | ... NAMEN. Ripd allows only one name (maybe will change in the |
| 414 | future). Next - Cisco means interface which includes next-hop of |
| 415 | routes (it is somewhat similar to "ip next-hop" statement). Ripd |
| 416 | means interface where this route will be sent. This difference is |
| 417 | because "next-hop" of same routes which sends to different interfaces |
| 418 | must be different. Maybe it'd be better to made new matches - say |
| 419 | "match interface-out NAME" or something like that. |
| 420 | @end deffn |
| 421 | |
| 422 | @deffn {Route Map} {match ip address @var{word}} {} |
| 423 | @deffnx {Route Map} {match ip address prefix-list @var{word}} {} |
| 424 | Match if route destination is permitted by access-list. |
| 425 | @end deffn |
| 426 | |
| 427 | @deffn {Route Map} {match ip next-hop A.B.C.D} {} |
| 428 | Cisco uses here <access-list>, @command{ripd} IPv4 address. Match if |
| 429 | route has this next-hop (meaning next-hop listed in the rip route |
| 430 | table - "show ip rip") |
| 431 | @end deffn |
| 432 | |
| 433 | @deffn {Route Map} {match metric <0-4294967295>} {} |
| 434 | This command match to the metric value of RIP updates. For other |
| 435 | protocol compatibility metric range is shown as <0-4294967295>. But |
| 436 | for RIP protocol only the value range <0-16> make sense. |
| 437 | @end deffn |
| 438 | |
| 439 | @deffn {Route Map} {set ip next-hop A.B.C.D} {} |
| 440 | This command set next hop value in RIPv2 protocol. This command does |
| 441 | not affect RIPv1 because there is no next hop field in the packet. |
| 442 | @end deffn |
| 443 | |
| 444 | @deffn {Route Map} {set metric <0-4294967295>} {} |
| 445 | Set a metric for matched route when sending announcement. The metric |
| 446 | value range is very large for compatibility with other protocols. For |
| 447 | RIP, valid metric values are from 1 to 16. |
| 448 | @end deffn |
| 449 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 450 | @node RIP Authentication |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 451 | @section RIP Authentication |
| 452 | |
Paul Jakma | 5f03f14 | 2006-05-04 07:37:37 +0000 | [diff] [blame^] | 453 | RIPv2 allows packets to be authenticated via either an insecure plain |
| 454 | text password, included with the packet, or via a more secure MD5 based |
| 455 | @acronym{HMAC, keyed-Hashing for Message AuthentiCation}, |
| 456 | RIPv1 can not be authenticated at all, thus when authentication is |
| 457 | configured @code{ripd} will discard routing updates received via RIPv1 |
| 458 | packets. |
| 459 | |
| 460 | However, unless RIPv1 reception is disabled entirely, |
| 461 | @xref{RIP Version Control}, RIPv1 REQUEST packets which are received, |
| 462 | which query the router for routing information, will still be honoured |
| 463 | by @code{ripd}, and @code{ripd} WILL reply to such packets. This allows |
| 464 | @code{ripd} to honour such REQUESTs (which sometimes is used by old |
| 465 | equipment and very simple devices to bootstrap their default route), |
| 466 | while still providing security for route updates which are received. |
| 467 | |
| 468 | In short: Enabling authentication prevents routes being updated by |
| 469 | unauthenticated remote routers, but still can allow routes (I.e. the |
| 470 | entire RIP routing table) to be queried remotely, potentially by anyone |
| 471 | on the internet, via RIPv1. |
| 472 | |
| 473 | To prevent such unauthenticated querying of routes disable RIPv1, |
| 474 | @xref{RIP Version Control}. |
| 475 | |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 476 | @deffn {Interface command} {ip rip authentication mode md5} {} |
| 477 | @deffnx {Interface command} {no ip rip authentication mode md5} {} |
| 478 | Set the interface with RIPv2 MD5 authentication. |
| 479 | @end deffn |
| 480 | |
| 481 | @deffn {Interface command} {ip rip authentication mode text} {} |
| 482 | @deffnx {Interface command} {no ip rip authentication mode text} {} |
| 483 | Set the interface with RIPv2 simple password authentication. |
| 484 | @end deffn |
| 485 | |
| 486 | @deffn {Interface command} {ip rip authentication string @var{string}} {} |
| 487 | @deffnx {Interface command} {no ip rip authentication string @var{string}} {} |
| 488 | RIP version 2 has simple text authentication. This command sets |
| 489 | authentication string. The string must be shorter than 16 characters. |
| 490 | @end deffn |
| 491 | |
| 492 | @deffn {Interface command} {ip rip authentication key-chain @var{key-chain}} {} |
| 493 | @deffnx {Interface command} {no ip rip authentication key-chain @var{key-chain}} {} |
| 494 | Specifiy Keyed MD5 chain. |
| 495 | @end deffn |
| 496 | |
| 497 | @example |
| 498 | ! |
| 499 | key chain test |
| 500 | key 1 |
| 501 | key-string test |
| 502 | ! |
| 503 | interface eth1 |
| 504 | ip rip authentication mode md5 |
| 505 | ip rip authentication key-chain test |
| 506 | ! |
| 507 | @end example |
| 508 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 509 | @node RIP Timers |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 510 | @section RIP Timers |
| 511 | |
| 512 | @deffn {RIP command} {timers basic @var{update} @var{timeout} @var{garbage}} {} |
| 513 | |
| 514 | RIP protocol has several timers. User can configure those timers' values |
| 515 | by @code{timers basic} command. |
| 516 | |
| 517 | The default settings for the timers are as follows: |
| 518 | |
| 519 | @itemize @bullet |
| 520 | @item |
| 521 | The update timer is 30 seconds. Every update timer seconds, the RIP |
| 522 | process is awakened to send an unsolicited Response message containing |
| 523 | the complete routing table to all neighboring RIP routers. |
| 524 | |
| 525 | @item |
| 526 | The timeout timer is 180 seconds. Upon expiration of the timeout, the |
| 527 | route is no longer valid; however, it is retained in the routing table |
| 528 | for a short time so that neighbors can be notified that the route has |
| 529 | been dropped. |
| 530 | |
| 531 | @item |
| 532 | The garbage collect timer is 120 seconds. Upon expiration of the |
| 533 | garbage-collection timer, the route is finally removed from the routing |
| 534 | table. |
| 535 | |
| 536 | @end itemize |
| 537 | |
| 538 | The @code{timers basic} command allows the the default values of the timers |
| 539 | listed above to be changed. |
| 540 | @end deffn |
| 541 | |
| 542 | @deffn {RIP command} {no timers basic} {} |
| 543 | The @code{no timers basic} command will reset the timers to the default |
| 544 | settings listed above. |
| 545 | @end deffn |
| 546 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 547 | @node Show RIP Information |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 548 | @section Show RIP Information |
| 549 | |
| 550 | To display RIP routes. |
| 551 | |
| 552 | @deffn Command {show ip rip} {} |
| 553 | Show RIP routes. |
| 554 | @end deffn |
| 555 | |
| 556 | The command displays all RIP routes. For routes that are received |
| 557 | through RIP, this command will display the time the packet was sent and |
| 558 | the tag information. This command will also display this information |
| 559 | for routes redistributed into RIP. |
| 560 | |
| 561 | @c Exmaple here. |
| 562 | |
| 563 | @deffn Command {show ip protocols} {} |
| 564 | The command displays current RIP status. It includes RIP timer, |
| 565 | filtering, version, RIP enabled interface and RIP peer inforation. |
| 566 | @end deffn |
| 567 | |
| 568 | @example |
| 569 | @group |
| 570 | ripd> @b{show ip protocols} |
| 571 | Routing Protocol is "rip" |
| 572 | Sending updates every 30 seconds with +/-50%, next due in 35 seconds |
| 573 | Timeout after 180 seconds, garbage collect after 120 seconds |
| 574 | Outgoing update filter list for all interface is not set |
| 575 | Incoming update filter list for all interface is not set |
| 576 | Default redistribution metric is 1 |
| 577 | Redistributing: kernel connected |
| 578 | Default version control: send version 2, receive version 2 |
| 579 | Interface Send Recv |
| 580 | Routing for Networks: |
| 581 | eth0 |
| 582 | eth1 |
| 583 | 1.1.1.1 |
| 584 | 203.181.89.241 |
| 585 | Routing Information Sources: |
| 586 | Gateway BadPackets BadRoutes Distance Last Update |
| 587 | @end group |
| 588 | @end example |
| 589 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 590 | @node RIP Debug Commands |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 591 | @section RIP Debug Commands |
| 592 | |
| 593 | Debug for RIP protocol. |
| 594 | |
| 595 | @deffn Command {debug rip events} {} |
| 596 | Debug rip events. |
| 597 | @end deffn |
| 598 | |
| 599 | @code{debug rip} will show RIP events. Sending and receiving |
| 600 | packets, timers, and changes in interfaces are events shown with @command{ripd}. |
| 601 | |
| 602 | @deffn Command {debug rip packet} {} |
| 603 | Debug rip packet. |
| 604 | @end deffn |
| 605 | |
| 606 | @code{debug rip packet} will display detailed information about the RIP |
| 607 | packets. The origin and port number of the packet as well as a packet |
| 608 | dump is shown. |
| 609 | |
| 610 | @deffn Command {debug rip zebra} {} |
| 611 | Debug rip between zebra communication. |
| 612 | @end deffn |
| 613 | |
paul | 6a22b1f | 2004-11-07 19:39:13 +0000 | [diff] [blame] | 614 | This command will show the communication between @command{ripd} and |
| 615 | @command{zebra}. The main information will include addition and deletion of |
| 616 | paths to the kernel and the sending and receiving of interface information. |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 617 | |
| 618 | @deffn Command {show debugging rip} {} |
| 619 | Display @command{ripd}'s debugging option. |
| 620 | @end deffn |
| 621 | |
| 622 | @code{show debugging rip} will show all information currently set for ripd |
| 623 | debug. |