**Maršrutēšanas informācijas protokols** (angļu: *Routing Information Protocol* (**RIP**)) vēsturiski bija viens no biežāk lietotajiem maršrutēšanas protokoliem. Pārsvarā tas tiek lietots nelielos iekšējos tīklos.

Neskatoties uz to, ka eksistē daudzi citi maršrutēšanas protokoli, kas pārspēj RIP konverģences ātrumā un mērogojamībā (EIGRP, OSPF, IS-IS u.c.), RIP joprojām tiek pielietots, jo to atbalsta daudzas iekārtas un operētājsistēmas un šī protokola konfigurācija ir ļoti vienkārša.
RIP priekšteci — protokolu *Gateway Information Protocol* izstrādāja *Xerox PARC* kā protokolu kopas *PARC Universal Packet* sastāvdaļu. Vēlāka šī protokola versija *Routing Information Protocol* bija iekļauta XNS protokolu kopā.

Pirmā RIP versija, kas atbalstīja IP bija iekļauta BSD UNIX kā *routed* dēmons. 1988. gadā RIP tika standartizēts ar RFC 1058.

RIP ir *distance-vector* maršrutēšanas protokols un izmanto Bellmana-Forda algoritmu.

Par metriku tas izmanto lēkumu skaitu *hop-count* — maršrutētāju skaitu caur kuriem paketei jāiet, lai sasniegtu adresātu. Lēkumu skaita maksimālā vērtība RIP protokolā ir 15. Vērtība 16 nozīmē nesasniedzamu maršrutu. Nelielā maksimālā vērtība samazina maršrutēšanas cilpu rašanās iespējamību, bet arī ierobežo RIP protokola mērogojamību.

RIP izmanto split horizon un holddown mehānismus lai nesūtītu nepareizu maršrutēšanas informāciju un nepieļautu maršrutēšanas cilpas. RIP rotokolā *holddown* taimeris ir 180 sekundes.

RIP protokols sūta citiem maršrutētājiem pilnu maršrutēšanas informācijas tabulu katras 30 sekundes. Mazā tīkla ar nelielām maršrutēšanas tabulām tas nerada problēmas, bet lielākos tīklos RIP maršrutēšanas jauninājumi var veidot lielu datu apjomu. Mūsdienu RIP realizācijās jauninājumu izsūtīšanas laiks tiek mainīts, lai izvairītos no situācijas, kad maršrutētāji sūta jauninājumus reizē.

Maršrutēšanas informācijas pārraidei RIP protokla datu bloki (PDU) tiek iekapsulēti UDP. RIP izmanto UDP porta numuru 520.

Ir trīs RIP protokola versijas: RIPv1, RIPv2 un RIPng.

RIPv1
-----

RIPv1 ir *classful* maršrutēšanas protokols, tas neatbalsta VLSM. Šajā versijā nav arī autentificēšanas mehānismu.

RIPv1 izmanto apraides (*broadcast*) adresi (255.255.255.255) maršrutēšanas informācijas nosūtīšanai.

RIPv1 ir aprakstīts RFC 1058.

### PDU formāts

RIPvi PDU sastāv no 4 baitu galvenes (*header*) un *RIP entry* ierakstiem.

**RIPv1 PDU**| Biti | 0—7 | 8—15 | 16—23 | 24—31 |
| --- | --- | --- | --- | --- |
| 0 | **Komanda** (1) | **Versija** (1) | Neizmantots (2) |
| 32 | ***RIP entry*** (20) |
| ... |

RIPv1 PDU satur sekojošus laukus:

* **Komanda**

1. *pieprasījums* tiek lietota lai prasītu citiem maršrutētājiem nosūtīt maršrutēšanas tabulu. RIP sūta šādu PDU, uzsākot darbu;
2. *atbilde* tiek lietots gan kā atbilde uz pieprasījuma PDU, gan regulāro jauninājumu izsūtīšanai.
3. *traceon* vairs netiek izmantots, PDU ar šādu lauka vērtību tiek ignorēti.
4. *traceoff* vairs netiek izmantots, PDU ar šādu lauka vērtību tiek ignorēti.
5. rezervēts Sun Microsystems.

* **Versija** — RIPv1 šī lauka vērtība ir 1.

***RIP entry*** satur informāciju par vienu maršrutu, tā formāts ir sekojošs;

**RIP entry**| Biti | 0—7 | 8—15 | 16—23 | 24—31 |
| --- | --- | --- | --- | --- |
| 0 | **Adrešu saime** (2) | Neizmantots (2) |
| 32 | **Adrese** (4) |
| 64 | Neizmantots (8) |
| 96 |
| 128 | **Metrika** (4) |

*RIP entry* ir 20 baitu ieraksts, kas satur sekojošus laukus:

* **Adrešu saime** (*Address-family identifier*, *AFI*) — nosaka izmantotās adreses tipu. IP protokolam šī lauka vērtība ir 2.
* **Adrese** — satur attiecīgās adrešu saimes adresi.
* **Metrika** — satur lēkumu skaitu.

Visu neizmantoto lauku vērtībai ir jābūt 0.

*RIP entry* vienā PDU var atkārtoties līdz 25 reizēm (viens PDU var saturēt informāciju par 25 maršrutiem). Tas kopā veido 25 \* 20 + 4 = 504 baitus garu RIP PDU. Kopā ar 8 baitu UDP galveni (*header*) tas veido 512 baitu datagrammu.

RIPv2
-----

RIPv2 tika izstrādāts 1994. gadā. Tā galvenais uzlabojums ir CIDR atbalsts. RIPv2 ir *classless* maršrutēšanas protokols.

Papildus tika pievienota arī RIPv2 atbalsta arī atklāta teksta autentificēšanu. 1997. gadā tas tika papildināts arī ar MD5 autentificēšanas iespēju (RFC 2082).

Lai samazinātu slodzi tīkla iekārtām, kas nepiedalās RIP maršrutēšanā, RIPv2 izmanto multiraides (*multicast*) adresi (224.0.0.9) maršrutēšanas informācijas nosūtīšanai.

RIPv2 ir aprakstīts RFC 2453.

### PDU formāts

RIPv2 PDU formāts ir līdzīgs RIPv1 PDU. Lauka **Versija** vērtība RIPv2 ir 2.
RIPv2 nosaka savādāku *RIP entry* formātu.

**RIP entry (RIPv2)**| Biti | 0—7 | 8—15 | 16—23 | 24—31 |
| --- | --- | --- | --- | --- |
| 0 | **Adrešu saime** (2) | **Maršruta atzīme** (2) |
| 32 | **Adrese** (4) |
| 64 | **Apakštīkla maska** (4) |
| 96 | **Nākamais lēkums** (4) |
| 128 | **Metrika** (4) |

*RIP entry* (RIPv2) ieraksts satur sekojošus laukus:

* **Versija** — RIPv2 šī lauka vērtība ir 2.
* **Adrešu saime** — tādas pašas vērtības kā RIPv1. Ja PDU pirmajā *RIP entry* ierakstā šī lauka vērtība 0xFFFF, tad pārējā ieraksta daļa satur autentificēšanas informāciju.
* **Maršruta atzīme** (*route tag*) — nosaka vai dotais maršruts ir RIP. Vai no cita maršrutēšanas protokola (*external route*).
* **Apakštīkla maska** — satur apakštīkla masku.
* **Nākamais lēkums** (*next hop*) — maršrutētāja adrese uz kuru jāsūta paketes, lai sasniegtu adresi.

Ja *RIP entry* satur autentificēšanas informāciju, tās formāts ir šāds.

**RIPv2 autentificēšanas ieraksts**| Biti | 0—7 | 8—15 | 16—23 | 24—31 |
| --- | --- | --- | --- | --- |
| 0 | 0xFFFF | **Autentificēšanas tips (2)** |
| 32 | **Autentificēšanas informācija** (16) |
| ... |
| 128 |

**Autentificēšanas tips** laukam RIPv2 definēta tikai viena vērtība — 2, kas nozīmē atklāta teksta autentificēšanu.
**Autentificēšanas informācija** — autentificēšanas parole. Ja tā ir īsāka par 16 simboliem, atlikušie baiti tiek aizpildīti ar nullēm.

Citu lauku nozīme un vērtības ir tādi paši, kā RIPv1.

### RIPv2 MD5 autentificēšana

Ja RIPv2 tiek izmantota MD5 autentificēšana, tiek izmainīts PDU formāts *Autentificēšanas informācija* laukā tiek ievietots papildus autentificēšanas apraksts. Autentificēšanas informācija tiek pievienota RIP PDU noslēgumā (*trailer*). RFC 2082 aprakstītais PDU formāts pieļauj arī citu autentificēšanas algoritmu izmantošanu (šobrīd tādi nav definēti).

**RIPv2 MD5 PDU**| Biti | 0—7 | 8—15 | 16—23 | 24—31 |
| --- | --- | --- | --- | --- |
| 0 | **Komanda** (1) | **Versija** (1) | **Maršrutēsanas domēns** (2) |
| 32 | 0xFFFF | **Autentificēšanas tips** (2) |
| 64 | **Paketes garums** (2) | **Atslēgas ID** (1) | **Aut. datu garums** (1) |
| 96 | **Kārtas numurs** (4) |
| 128 | Neizmantots (8) |
| 160 |
| 192 | ***RIP entry*** (20) |
| ... |
|  | 0xFFFF | 0x01 |
| ... | **Autentificēšanas dati** |

RIPv2 MD5 PDU satur sekojošus laukus:

* **Autentificēšanas tips** — MD5 autentificēšanai šī lauka vērtība ir 3.
* **Paketes garums** — attālums baitos no RIP PDU galvenes līdz autentificēšanas informācijai.
* **Atslēgas ID** — autentificēšanas atslēgas identifikators. Ja RIP realizācija uztur dažādus algoritmus, norāda arī algoritma veidu.
* **Autentificēšanas datu garums** — PDU noslēgumā pievienoto autentificēšanas datu garuma. Atļauj izmantot citus algoritmus. Lauka vērtība MD5 gadījumā ir 16.
* **Kārtas numurs** — Skaitlis, kuram jābūt pieaugošam, maršrutētāja izsūtītajos RIP PDU ar vienādu *Atslēgas ID*.
* **Autentificēšanas dati** — MD5 gadījumā 16 baitu MD5 jaucējsumma (*hash*).

Citu lauku nozīme un vērtības ir tādi paši, kā RIPv2, RIPv1.

RIPng
-----

RIPng ir RIP papildinājums IPv6 atbalstam.

RIPng neatbalsta autentificēšanu. IPv6 vidē to paredzēts darīt ar IPSec.

RIPv2 atzīmes atbalsta, bet RIPng ne.

RIPv2 pievieno nākamā lēkuma (*next hop*) adresi katram maršrutam, bet RIPng to nosūta atsevišķi maršrutu kopai.

RIPng ir aprakstīts RFC 2080.

### PDU formāts

RIPng PDU formāts ir tāds pats kā RIPv1 PDU. Lauka **Versija** vērtība RIPng ir 1.
Šajā versijā nav definēts maksimālais meršrutu skaits vienā PDU. Tas ir atkarīgs no MTU saskarnes.
RIPv2 nosaka savādāku *RIP entry* formātu. To sauc par *Route Table Entry* (RTE).

**RTE**| Biti | 0—7 | 8—15 | 16—23 | 24—31 |
| --- | --- | --- | --- | --- |
| 0 | **IPv6 prefikss** (16) |
| ... |
| 96 |
| 128 | **Maršruta atzīme** (2) | **Prefiksa garums** (1) | **Metrika** (1) |

RTE ieraksts satur sekojošus laukus:

* **IPv6 prefikss** — 128 bitu IPv6 adrese.
* **Prefiksa garums** — prefiksa garums 1-128.

Citu lauku nozīme un vērtības ir tādi paši, kā RIPv1.

Kā redzams, RTE nesatur informāciju par *next hop*. Pievienot katram ierakstam 16 baitus būtu neekonomiski, tāpēc RIPng izmanto īpašu *next hop RTE*:

**next-hop RTE**| Biti | 0—7 | 8-15 | 16-23 | 24-31 |
| --- | --- | --- | --- | --- |
| 0 | **IPv6 hext hop adrese** (16) |
| ... |
| 96 |
| 128 | 0x00 | 0x00 | 0xFF |

**next-hop RTE** norādīta *next hop* adrese un metrikas lauka vērtība ir 255. Pārējiem laukiem jābūt 0. Norādītā adrese tiek izmantota par *next hop* visiem sekojošajiem RTE līdz nākamajam *next-hop RTE*.

Atsauces
--------

1. ↑  Akadēmiskā terminu datubāze — Routing Information Protocol

Skatīt arī
----------

* *Border Gateway Protocol* (BGP)
* *Intermediate System to Intermediate System* (IS-IS)
* *Open Shortest Path First* (OSPF)
* *Shortest Path Bridging* (SPB)

Ārējās saites
-------------

* RFC 1058 — Routing Information Protocol
* RFC 2080 — RIPng for IPv6
* RFC 2082 — RIP-2 MD5 Authentication
* RFC 2453 — RIP Version 2