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