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