Тема 16.

Маршрутни протоколи RIP и BGP.


страницата се нуждае от дописване/преглеждане


RIP

RIP (Routing Information Protocol) е представител на протоколите с дистантен вектор. Той е вътрешен протокол (IGP - Interior Gateway Protocol) - предназначен е за работа вътре в автономната система. Първоначално е дефиниран в RFC 1058.
RIP е базиран на протоколи, използвани още в ARPANET за определяне на маршрути, и е създаден от Xerox PARC като част от XNS.
Съществуват 3 стандартни варианта на RIP:

  • RIPv1 - класов протокол (работи с класови адреси);
  • RIPv2 - работи с безкласови адреси и маски, позволява разбиване на подмрежи (subnetting);
  • RIPng - работи с IPv6.

Основни положения

RIP работи по алгоритъма на Bellman-Ford. За метрика се ползва броят възли (hops) по маршрута, като директно свързаните съседи имат метрика 1. За безкрайност се счита 16, което означава, че протоколът е подходящ само за малки и средни мрежи. За предотвратяване на проблеми от сорта на маршрутни цикли (routing loops) и count-to-infinity, се използват механизмите таймъри, split horizon, route poisoning и triggered updates.
Ъпдейтите се извършват по два начина:

  • Периодично разпращане на цялата маршрутна таблица до съседите на рутъра. Таблицата се изпраща във вид на записи (вектори на разстояние/отстояние/дистанция) за отделните маршрути. В едно съобщение се съдържат до 25 маршрута.
  • Triggered updates - изпращат се моментално (без изчакване на таймър) при промяна метриката на някой от маршрутите, носят информация само за него.
riptable.png
На тази картинка, малките букви обозначават мрежите, а големите - свързващите ги рутъри. В даден момент D знае маршрут до мрежа z с цена 7, минаващ през B. В следващия момент, пристига ъпдейт от A, в който се съдържа маршрут до z с цена 4. D оптимизира таблицата си - прибавя 1 към тази стойност и записва новия маршрут1.

RIP дeйтаграма

RIP предава информацията си по UDP порт 520. Ползват се 2 вида съобщения: Request и Response

RIP Request

Изпраща се от нововключил се рутър, за да попълни бързо таблицата си.
Заявката бива два вида:

  • Полето IP адрес има стойност 0 - изисква се незабавен ъпдейт с цялостна маршрутна таблица. Такава заявка изпраща нововключил се рутър.
  • Полето има някаква стойност - изисква се информация за този маршрут, и, съответно, връща се информация само за него.

RIP Response

Изпраща се при получаване на Request, или при периодичен ъпдейт. Най-често срещани RIP съобщения.
ripv2.png
В RIPv1 сивите полета са занулени. Те са били предвидени за евентуално разширяване на протокола (както е и станало с RIPv2).

  • Команда - Има две възможни стойности: 1 - request, 2 - response.
  • Версия - 1 или 2.
  • Routing domain - Идентификатор на RIP-мрежата, практически се поставя идентификаторът на автономната система, по подразбиране е 02. Използва се за разграничаване на рутъри от различни домейни - устройствата няма да обработват пакети от чужди домейни, което олекотява работата им.
  • Address Family Identifier (AFI) - Обозначава какъв тип адреси се използват. За IP мрежи стойността е 2.
  • Route tag - Обозначава маршрут, излизащ извън автономната система - научен от външни протоколи (EGP - Exterior Gateway Protocol].
  • IP адрес - Адрес на мрежа / подмрежа, до която достига този маршрут.
  • Маска - Маска на адреса (за безкласови адреси).
  • Next hop - Накъде (през кой рутър-съсед) ще поеме пакетът по пътя си към целта.
  • Метрика - цената на маршрута.

В RIPv2 е въведено удостоверяване (authentication) на ъпдейтите, за да се намали рискът от злоумишлени манипулации на таблиците. В такива отговори (responses) полето AFI е със стойност 111111112 и RIPv1 устройствата ги игнорират. В първия запис (вектор) в такова съобщение, на мястото на полето Route Tag е записано Authentication type - как ще се удостоверява автентичността на ъпдейтите. Първоначално, единствената възможност е била чрез парола. Стойността на Authentication type тогава е 2, а в оставащите 16 октета от вектора се съдържа паролата.

Таймъри

За всеки маршрут в таблицата си RIP поддържа 4 таймъра: Update, Invalid, Holddown, Flush.

  • Update отмерва времето до следващия ъпдейт. Стандартно, това време е 30 s.
  • Invalid брои времето от последния ъпдейт. При достигане до 180 s, маршрутът се обявява за невалиден.
  • Holddown започва да тече при обявяване на маршрут за невалиден. Докато тече, маршрутът не може да се ъпдейтва с маршрути с по-голяма от сегашната метрика. Трае 180 s. Holddown-таймърът не е дефиниран по стандарт, но понякога се имплементира - например, от Cisco.
  • Flush се активира при обявяване на маршрут за невалиден, заедно с Holddown. След неговото изтичане (240 s) маршрутът се изхвърля от таблицата.

Недостатъци

Основното предимство на RIP е, че той е прост и не изисква тежки изчисления. Това води и до неговите основни недостатъци:

  • Бавна конвергенция: При промяна на маршрутите, далечните рутъри научават след много време. При поява на нов маршрут в рутър A, рутър B, намиращ се на разстояние 15 от A (14 междинни рутъра) ще научи след 14 x 30 = 7 минути. При отпадане на маршрут, се чака изтичането на Invalid таймъра (180 s). След това се чака изтичането на Flush таймъра (240 s), и в резултат до изхвърлянето на маршрута ще минат отново 7 минути.
  • Тъй като на всеки 30 s се обменя цялата маршрутна таблица на устройството, в една голяма мрежа това ще доведе до множество рутъри, които ще разпращат на broadcast (или multicast, за RIPv2) множество пакети, описващи вектори на дистанция. Този трафик може значително да повлияе на пропускливостта на мрежата.
  • Доказано е, че след известно време на работа на една RIP мрежа ще се наблюдава синхронизация на съобщенията: ъпдейтите на много устройства ще се разпращат по едно и също време. За да се избегне това, често прилагано решение е към стойността на Update таймъра да се добави малка по стойност и произволно избрана константа.

BGP

Маршрутизацията в интернет може да се раздели на два класа: вътрешна (IGP, Interior Gateway Protocol) и външна (EGP, Exterior Gateway Protocol). Вътрешните протоколи работят вътре в една автономна система, докато външните свързват различни AS. Най-широко използваният външен протокол е BGP (Border Gateway Protocol). BGP е сложен като протокол, има много тънкости и настройки, работи в големи, специализирани и специално администрирани рутъри3.

Логика на работа

BGP е от вида path vector - подобен на distance vector, но в ъпдейтите се пази и информация за пътя, който този ъпдейт е изминал. Това елиминира count-to-infinity: ъпдейтите, в чиято пътека текущият маршрутизатор вече се среща (т. е., затваря се цикъл), се отхвърлят. Пазенето на маршрута позволява също манипулации (точкуване), чрез които се регулира насочването на пакетите: нежеланите от администрацията маршрути се премахват независимо от метриката си, а натоварените маршрути изкуствено се завишават, за да се оттиснат.

BGP комуникира, като установява TCP връзка по порт 179 - за разлика от повечето други маршрутни протоколи, ползващи UDP. По тази връзка (съединение) се установяват съседства между рутърите, като съобщенията по нея са с лимит 4096 B. За да станат съседи, BGP рутърите, принадлежащи на различни AS, трябва да са непосредствено свързани (без междинни рутъри). Предложение за съседство се праща с OPEN. Отговорът е KEEPALIVE (положителен) или NOTIFICATION (отрицателен). След KEEPALIVE и установявавен на съседство, започват размените на ъпдейти.

BGP разпознава 3 типа AS:

  • Stub - в такава AS влиза единствен външен маршрут.
  • Transit - влизат 2 външни маршрута (или един влиза, друг излиза - зависи от гледната точка). Обикновено интернет доставчиците поддържат такива мрежи.
  • Multiconnected - AS е свързана с повече от 2 други AS.

Атрибути на маршрута

  • ORIGIN - Указва откъде е научен маршрутът. Три възможни стойности:
    • 0 - маршрутът е научен от вътрешен протокол (IGP).
    • 1 - от вътрешен (EGP).
    • 2 - по друг начин, или неизвестно откъде.
  • AS_PATH - списък от AS, през които е минал ъпдейтът (описание на маршрута). Маршрутът се натрупва по пътя.
  • AS_SEQUENCE - Начин на представяне на сегмент от маршрута в AS_PATH. Представлява подреден списък от номера на AS.
  • AS_SET - Друг начин за представяне на сегмент - неподреден (множествен) списък.
  • NEXT_HOP - Буквално next hop адрес - към кого ще бъде предаден пакет, движещ се по този маршрут. Характерно е, че NEXT_HOP може да не е адресът на рутъра, през когото минава маршрутът към целевата AS - но този рутър трябва да е достижим от рутъра. Тоест, NEXT_HOP може да указва пакетът да се препрати не на рутъра, през който минава най-евтиният път до целта, а към друг рутър, през който обаче трябва да може да се достигне най-евтиният рутър. Върши работа за регулиране на трафика, осъществяване на горещ картоф и прочие.
  • MULTI_EXIT_DISC - Multi-exit discriminator. Представлява стойността (спрямо рутъра, разпращащ ъпдейта) на метриката на избрания маршрут, с интегрирани в нея точки по системата за точкуване. Рутърът, който приема ъпдейта, може въобще да не я гледа, в зависимост от приложените му манипулации.
  • LOCAL_PREF - Горе-долу, представлява разликата в точките на избрания и неизбраните маршрути. Позволява политиката на рутъра да се влияе от тази на други рутъри.

Допълнително

Карта на traceroute и looking glass сървъри. Traceroute сървърите позволяват да се извършва трасировка от някой от поддържаните от тях рутъри до произволно избран адрес / домейн. Looking glass сървърите позволяват да се разглеждат характеристики на BGP, работещ на някой от поддържаните рутъри.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License