Рутирање и протоколи за рутирање

Рутирање – У свакодневном животу често се срећемо са мрежним уређајем званим рутер (енг. router). Добар део нас зна да је основна функција рутера прослеђивање, тј. рутирање података до жељеног одредишта. Захваљујући овим уређајима, подаци могу да стигну с једног на други крај света, веома брзо и ефикасно.

Мањи број људи је упознат са начином на који рутери обављају рутирање података и процесима који се одвијају “испод хаубе”. Уколико вас занима шта је табела рутирања, шта су протоколи за рутирање и како раде, у овом тексту ћемо покушати да дамо објашњење – даћемо генерални опис табеле рутирања и три најзаступљенија протокола за рутирање.

Табела рутирања

Примарна функција рутера је прослеђивање пакета до мреже у којој се налази одредишна адреса. Да би ово било могуће рутери користе информације садржане у табели рутирања (енг. routing table). Табела рутирања представља податке похрањене у RAM меморији који говоре рутеру како проследити примљени пакет суседној или удаљеној мрежи.

Основне информације сваког записа у табели чине удаљена или суседна мрежна IP адреса и интерфејс рутера или IP адреса суседног рутера преко ког се ова мрежа може досегнути. Појединачни запис у табели рутрања се назива рута (енг. route). У табели се могу наћи неколико различитих типова рута. Статичким рутама се називају све оне руте које се уносе ручно од стране мрежног администратора. Динамичким рутама се називају све руте које су резултат рада протокола за рутирање.

Поред статичких и динамичких рута, постоје и руте за директно повезане мреже. Ове руте се аутоматски уписују у табелу након успешног повезивања интерфејса рутера са интерфејсом суседног рутера. Обично у табели за рутирање, испред рута за директно повезане мреже стоји ознака C (енг. connected) , а испред статичких рута стоји ознака S (енг. static).

За динамичке руте се користи ознака у зависности од ког протокола за рутирање је рута научена. Тако је на пример за RIP протокол ознака R , за EIGRP ознака D и ЕX , за OSPF ознака О и за BGP ознака B.

Приказ табеле за рутирање у мрежној архитектури са четири мрежна сегмента
Приказ табеле за рутирање у мрежној архитектури са четири мрежна сегмента

На слици 1. дат је пример са четири мреже (192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24 и 192.168.4.0/24) и два рутера (R1 и R2). Уколико на рутеру R1 извршимо команду show ip route добићемо приказ активних рута. Рутер зна да су мреже 192.168.1.0/24 и 192.168.2.0/24 директно повезане и прослеђивање свих пакета намењених овим мрежама се врши преко интерфејса Fa0/0 и S0/0/0 респективно. Испред ових рута наравно постоји ознака C .

Поред ових рута у мрежи постоји статичка рута са ознаком S која говори рутеру R1 како да проследи пакете који су усмерени ка мрежи 192.168.3.0 /24. Другим речима ова рута говори рутеру да се мрежа 192.168.3.0/24 може досегнути уз помоћ интерфејса рутера R2 који се налази на мрежи 192.168.2.0/24 и има IP адресу 192.168.2.2. У терминологији рутирања ово се зове следећи скок (енг. next-hop). Next-hop представља интерфејс суседног рутера који помаже у процесу рутирања.

Све пакете намењене мрежи 192.168.3.0/24 рутер прослеђује из два корака. Први корак је да се у табели рутирања нађе рута која одговара овој мрежи. У првом проласку кроз табелу рутер закључује да једино статичка рута одговара овој мрежи и да се може досегнути уз помоћ интерфејса 192.168.2.2 који се налази у оквиру мреже 192.168.2.0/24.

Укратко, поента је да се сви пакети намењени мрежи 192.168.3.0/24 проследе рутеру R2 и њему препусти даљи ток рутирања. У другом кораку рутер треба да нађе начин како да проследи пакет до мреже 192.168.2.0/24. По други пут анализира табелу рутирања и на основу друге руте у табели закључује да је то директно повезана мрежа и да се пакет треба проследити на интерфејс S0/0/0. Рутер R2 прима овај пакет и прослеђује даље до одредишне мреже 192.168.3.0/24. Рутер R2 је директно повезан са овом мрежом тако да он прослеђује пакет након само једног пролаза кроз табелу.

У горе представљеној табели постоји и једна динамичка рута. Ова рута говори рутеру како треба прослеђивати саобраћај намењен мрежи 192.168.4.0/24. Испред руте се може запазити ознака R што значи да је ова рута научена уз помоћ RIP протокола за рутирање.

Статичке и динамичке руте

Неко ће поставити очигледно питање зашто се користе динамичке руте када се статичким рутама може завршити посао. На ово питање постоји више одговора. Разматрајмо мрежну топологију у претходном примеру без коришћења динамичких рута, тј. без коришћења протокола за рутирање.

Да би сви хостови могли међусобно комуницирати неопходно је у рутеру R1 унети две статичке руте и у рутеру R2 једну статичку руту. Другим речима рутер R1 треба да зна где се налазе мреже 192.168.3.0/24 и 192.168.4.0/24 , док рутер R2 треба да зна на ком је интерфејсу мрежа 192.168.1.0/24. Број статичких рута за један рутер у зависности од броја мрежа у топологији и броја суседних мрежа за тај рутер, рачуна се по принципу:


Број статичких рута = Укупан број мрежа – Број суседних мрежа


Из формуле се закључује да број статичких рута које треба унети ручно зависи од укупног броја мрежа у топологији. За мали број мрежа није проблем подесити статичке руте, али код већег броја мрежа ово постаје реалан проблем за мрежног администратора.

Један од највећих проблема је у чињеници да статичке руте нису отпорне на промене у топологији мреже. Уколико се деси да нека мрежа откаже или промени мрежну адресу, статичке руте у табели више неће бити валидне. Администратор мора брзо да реагује и измени руте у табели како би мрежни саобраћај наставио да се одвија несметано. Овде протоколи за рутирање долазе до изражаја.

Ако се у мрежној структури користи један или више протокола за рутирање, рутери међусобно комуницирају и уче о постојећим мрежама. Табела рутирања се аутоматски попуњава и мења уколико дође до промене после одређеног временског интервала. Уколико дође до премене у топологији онда се табела аутоматски ажурира.

У кратком временском интервалу, захваљујући протоколима за рутирање, рутер је свестан промене и несметано наставља да врши своју функцију. Нема никакве потребе за интервенцијом мрежног администратора. Сваки од протокола за рутирање има своје предности и мане. У даљем тексту биће описани неки од најчешће коришћених протокола за рутирање.

Метрика и административна дистанца

Да би рутери знали која је најбоља путања за одређену мрежу и која је цена користе се параметри као што су метрика (енг. metric) и административна дистанца (енг. administrative distance). Ови параметри се налазе у саставу рута. Метрика се користи да се одреди цена руте. Различити протоколи за рутирање имају различите метрике. Тако на пример код RIP протокола то је број рутера (next-hop) до одредишне мреже, код EIGRP-а за добијање цене се користи математичка формула у коју улазе одређени параметри (проток, кашњење…).

Поставља се питање шта се дешава ако у једној табели рутирања имамо две руте за исту мрежу, где је једна научена од RIP протокола, а друга на пример од EIGRP-а. Код једног је цена изражена у броју рутера до одредишне мреже, док је код другог добијена формулом.

Да би смо одредили која је рута поузданија и бржа не можемо само просто упоредити цене, другим речима “не можемо упоређивати бабе и жабе”. У оваквим ситуацијама се користи административна дистанца која представља поузданост протокола за рутирање. Мања вредност административне дистанце индицира већу поузданост. Најмања административна дистанца је за руте које се односе на директно повезане мреже, што је и логично, јер је цена за ове мреже минимална. У табели се могу видети административне дистанце које се додељују протоколима за рутирање.

adm_dist_tabela

RIP

Ово је један од најосновнијих протокола за рутирање и долази из групе distance-vector протокола. RIP (енг. Routing Information Protocol) ради по принципу да након одређеног временског интервала, на све активне интерфејсе, шаље руте из табеле рутирања. Званично постоји у две верзије. RIPv1 не подржава поделу класне адресе на подмреже, (енг. classful) , док RIPv2 подржава (енг. classless). Подела на подмреже и различите дужине мрежне маске среће се под називом VLSM (енг. Variable-Length Subnet Masking).

Као метрику RIP користи број рутера (енг. next-hop) до одређене мреже. Максималан број рутера је 15, све што је изнад овога сматра се да је мрежа недостижна. Може да подржи максимално 6 различитих путања до исте мреже, али само ако је цена иста. Код путања са истом ценом, могућ је load-balancing. Подразумевани интервал за слање update пакета осталим рутерима је 30 секунди, invalid и holddown тиме је по 180 секунди, док је flush time 240 секунди.

Разматрајмо пример са три рутера (латинично A, B и C) и четири мреже (1.0.0.0, 2.0.0.0, 3.0.0.0 и 4.0.0.0) као што је приказано на слици. На почетку, пре стартовања RIP протокола или било ког другог протокола за рутирање, сви рутери у својим табелама за рутирање садрже само информације о директно повезаним мрежама где је наравно метрика једнака нули. Поред метрике ту је наравно и информација о интерфејсу рутера тј. где се ове мреже налазе. Претпоставићемо да су сви рутери уредно конфигурисани и сви интерфејси активни.

Након старотвања RIP-а рутер А шаље своју табелу рутирања рутеру B
Након старотвања RIP-а рутер А шаље своју табелу рутирања рутеру B

Када се стартује RIP протокол, на сваких тридесет секунди се шаљу update пакети. Рутер А шаље информације из своје табеле рутеру B. Након примања update-а од рутера А, рутер B учи о мрежи 1.0.0.0 , и у својој табели уписује руту за ову мрежу са метриком 1. Рутер B учи и о мрежи 2.0.0.0 , али како је ово директно повезана мрежа он већ има руту са минималном метриком 0 , па одбацује руту за мрежу 2.0.0.0 научену од рутера А.

Ruter B šalje svoju tabelu rutiranja ruterima A i C
Рутер Б шаље своју табелу рутирања рутерима А и C

Рутер B шаље информације о својим рутама рутерима А и C. Анализирајући информације које је послао рутер B, рутер А учи о мрежи 3.0.0.0, а рутер C учи о мрежама 1.0.0.0 и 2.0.0.0. Сада рутер C шаље своје информације о рутама рутеру B. Рутер B учи о мрежи 4.0.0.0 и одмах шаље update до рутера А. На овај начин се информација пропагира преко више рутера и рутер А може да научи да се мрежа 4.0.0.0 налази на интерфејсу Е1 са метриком 2. Након ових операција, у свим рутерима табеле су у потпуности ажуриране, и сви рутери знају како да проследе пакет на било коју од горе поменутих мрежа.

Рутер C шаље своју табелу рутирања до B, B учи о новој мрежи и обавештава А
Рутер C шаље своју табелу рутирања до B, B учи о новој мрежи и обавештава А

Постоје одређене реалне ситуације када може доћи до проблема у рутирању и до појаве бесконачне петље. Узмимо на пример да се из неког разлога десио квар на мрежи 4.0.0.0 и да она више није активна, као што је то приказано у горњем левом углу на слици. Рутер C ажурира своју табелу рутирања, али рутери А и B још увек немају појма о паду мреже и њихова табела остаје непромењена. Проблем неће настати уколико рутер C пошаље update пре B. На овај начин ће се табеле код рутера А и B уредно ажурирати.

Међутим, уколико рутер B пошаље први update, рутер C научиће о мрежи 4.0.0.0 и додати метрику 2 , јер од B добија информацију о овој мрежи са метриком 1. Сада рутер C има лажну информацију да је мрежа 4.0.0.0 активна и да се налази на интерфејсу Е0. Проблем се не завршава овде. Када рутер C пошаље нови update B ће ажурирати своју руту за мрежу 4.0.0.0 метриком 3, даље C прима од B update и ажурира метрику на 4 и тако у бесконачност. Ово је у мрежној терминологији познато као бројање у бесконачност (енг. counting to infinity).

Могућа бесконачна петља након пада мреже
Могућа бесконачна петља након пада мреже

Наведени проблем се решава применом следећих техника:

  • Split horizont код ове технике рутер никад неће слати информацију о мрежи на интерфејс са ког је научена. У примеру на слици ако је рутер B научио од рутера C да је мрежа 4.0.0.0 на интерфејсу Е1, неће слати update за ту мрежу на том интерфејсу.
  • Route poisoning – техника подразумева да када се деси пад мреже рутер не брише руту из табеле, него је проглашава невалидном односно додељује јој метрику 16. На пример када откаже мрежа 4.0.0.0 рутер C поставља метрику 16 за ту мрежу.
  • Poison reverse – овде не важи split horizont, већ се у тренутку добијања руте са метриком 16 , на исти интерфејс шаље update за ту мрежу. Овако се осигурава да сви рутери у мрежу имају валидне податке о неактивној мрежи.
  • Hold down interval – када рутер сазна за руту са метриком 16 , покреће се тајмер за ову руту. Уколико се у одређеном временском интервалу (hold down interval) добије иста рута са бољом метриком, рута опет постаје активна, иначе се брише. На пример уколико рутер B прими информацију од C да рута за мрежу 4.0.0.0 има метрику 16 , онда се стартује тајмер за ту руту. Уколико пре истека интервала, рутер C обавести B да има бољу метрику за ту руту, онда се рута обнавља, иначе се брише.
  • Triggered update – у тренутку пада било које мреже не чека се редовни update него се одмах шаље информација осталим рутерима са метриком 16 за ту мрежу.
  • Counting to infinity – максимална метрика је 15 , уколико рута има метрику 16 , сматра се невалидном.

OSPF

Представља један од најшире коришћених link state протокола. Његова највећа предност је што је јавни протокол и сви произвођачи мрежних уређаја га могу искористити. Овај протокол је веома комплексан. Ажурирања се врше једино када се деси промена у мрежној топологији.

У случају промене тј. промене линка рутер креира LSA (енг. Link-State Аdvertisement) , аналогно update-у код RIP протокола. Ова информација се шаље свим суседним уређајима (енг. neighboring devices). Сви LSA записи се чувају у специјалној бази података LSDB (енг. Link-State DataBase). У тренутку стартовања протокола креира се LSDB која садржи само један запис тј. сопствени LSA.

Постоји неколико типова OSPF пакета:

  • Hello – користи се при успостављању и одржавању суседства са осталим OSPF рутерима. Такође се користи при избору DR (енг. Designated Router) BDR (енг. Backup Designated Router).
  • Database Description (DBD) – садржи краћу листу записа која се проверава са главном базом
  • Link-State Request (LSR) – пријемни рутери користе овај пакет за извршавање упита над базом
  • Link-State Update (LSU) – користи се као одговор на LSR као и за ажурирање са новим информацијама
  • Link-State Acknowledgement (LSAck) – потврда да је LSU пакет примљен

Код OSPF протокола постоје три типа табела:

  • Табела суседства (енг. neighbor table) – ова табела садржи информације о суседима. За суседе се сматрају сви они рутери с којима се дели линк на истој мрежи. LSA пакети се шаљу само суседима.
  • Табела топологије (енг. topology table) – садржи информације о свим мрежама и путањама како се достижу. Сви LSA записи се уписују у ову табелу. У тренутку промене топологије генерише се нови LSA и шаље кроз мрежу. У овој табели се за одређивање најкраће путање користи Дикстра алгоритам
  • Табела рутирања (енг. routing table) – ажурира се након покретања алгоритма над табелом топологије и садржи руте са најбољом метриком.

Једна од најбитнијих карактеристика OSPF протокола је да није у ничијем власништву. Свако од произвођача мрежних уређаја га може искористити. Срж овог протокола је Дикстра алгоритам који подржава VLSM и сумаризацију рута. Велике мреже дели на области (енг. areas) и омогућава хијерархијску структуру. Област 0 или Area 0 се назива backbone area , и све остале области су повезане директно с њом. Свака OPSF мрежа мора имати ову област.

opsf_oblasti

Узмимо пример са два рутера R1 и R2 и претпоставимо да је OSPF управо стартован. Рутери ће пре слања Hello пакета покушати да одреде свој ID тзв. router-id. Сваки рутер код OSPF протокола има свој router-id. Он се одређује на основу IP адресе физичких или loopback интерфејса. За ID се узима највећа IP адреса loopback интерфејса. Уколико loopback интерфејс није дефинисан, онда се узима највећа IP адреса тренутно активних интерфејса. На крају router-id је могуће и ручно унети.

У примеру на слици. рутер R1 има четири интерфејса: два loopback и два активна физичка интерфејса. Интерфејс Loopback 1 има највећу IP адресу, и ова адреса се узима за router-id. Размотримо други пример са исте слике где рутер R1 нема loopback интерфејсе, али има два физичка интерфејса од којих је један неактиван ( Fa0/0). Иако Fa0/0 има већу IP адресу за router-id се бира IP адреса активног интерфејса Fa0/1. Сада су рутери спремни за слање Hello пакета и одређивање суседа.

os1
Пример како се одређује router-id

Узмимо пример са слике где рутер R1 покреће процесс откривања суседа. Рутер R1 шаље Hello поруку на multicast адреси 224.0.0.5 и сви рутери који имају стартован OSPF протокол би требало да приме ову поруку. Рутер R2 прима Hello поруку и анализира параметре.

Да би рутер R2 прихватио R1 и уписао у своју табелу суседа морају да се поклопе параметри: Hello интервал, Dead интервал и AREA number. Hello интервал одређује временски интервал после ког се шаљу Hello пакети. Dead интервал одређује временски интервал на који рутер чека пре него што избрише суседа из своје табеле. AREA number представља број области.

Проналажење суседа и размена DBD пакета
Проналажење суседа и размена DBD пакета

После одлучивања суседства рутери шаљу DBD пакете, па онда креће размена LSA пакета. Тако сваки рутер има информацију о осталим мрежама и зна како да проследи пакете. Рутери одлучују и ко ће бити master , а ко slave. Master рутер је задужен да први иницира размену DBD и LSA пакета. Slave потврђује пријем пакета тако што шаље идентични пакет натраг.

У даљем процесу врши се размена иноформација о рутама. Да су коректно примили LSA пакет рутери потврђују слањем LSAck пакета.

R2 шаље захтев за Update од R2, а затим потврђује пријем LSAck пакетом
R2 шаље захтев за Update од R2, а затим потврђује пријем LSAck пакетом

EIGRP

Главни ривал OPSF протокола је EIGRP (енг. Еnhanced Interior Gateway Routing Protocol). Овај протокол није јавни већ је власништво Cisco компаније. EIGRP је настао као наследник IGRP протокола. Спада у групу хибридних протокола јер обједињује карактеристике дистанце vector и link-state протокола. Користи комплексну метрику базирану на протоку, кашњењу, поузданости и оптерећењу (енг. bandwidth, delay, reliability and load).

За рачунање метрике се подразумевано узимају само проток и кашњење пакета. Додатна предност је што је classless протокол, што значи да подржава подмреже у оквиру једне класне адресе. За пренос својих пакета користи RTP протокол (енг. Reliable Transport Protocol) , а за селекцију најбоље путање DUAL алгоритам (енг. Diffusing Update Algorithm). Подржава више мрежних протокола (IPv4, IPv6, AppleTalk и IPX/SPX) као и load balancing са неједнаком метриком. На овај начин администратори могу боље распоредити саобраћај на мрежи. Откривање и праћење суседних уређаја се врши Hello порукама.

EIGRP користи пет различитих типова пакета:

  • Hello – ови пакети се шаљу коришћењем multicast адресе и играју главну улогу у откривању суседства
  • Update – користе се за пропагацију рута, шаљу се једино кад се деси нека промена.
  • Ack – овај пакет шаљу рутери као потврду када приме Update пакет
  • Query – користи се за проналажење алтернативних путања када су све остале путање невалидне. Шаљу се коришћењем RTP протокола
  • Reply – шаље се као одговор на Query пакет

Погледајмо пример са два рутера R1 и R2 приказан на слици 10. Претпоставимо да је управо стартован EIGRP. На почетку, рутер R1 покушава да открије суседа, шаљући Hello поруку. За Hello поруку EIGRP, користи multicast адресу 224.0.0.10. После примања Hello пакета, рутер R2 одговара својим Hello пакетом. Рутер R2 шаље и Update пакет који садржи табелу рутирања. Ово се шаље само први пут, сваки наредни пут преко Update пакета се шаље само промена која се десила, а не цела табела рутирања. R1 потврђује овај пакет шаљући Ack пакет и своју табелу рутирања. R2 рутер потврђује Ack пакетом да је примио Update пакет од R1.

Након овог би требало да сви рутери имају информације о својим суседима и путање до њих. Hello пакети се и даље шаљу, али не са циљем откривања суседа него провере да ли су активни. Update пакети више не садрже све информације из табеле рутирања већ само промене на мрежи, уколико се оне наравно десе.

Процес откривања суседа и слања Update пакета
Процес откривања суседа и слања Update пакета

Слично OSPF протоколу и EIGRP има три табеле: табелу суседства, табелу топологије и табелу рутирања. У табели суседа се држе све информације о рутерима који се третирају као суседи. У табели топологије су садржане све путање до свих мрежа, док у табели рутирања се налази најбоља путања за одређену мрежу. Код EIGRP протокола неки од најбитнијих термина су:

  • Advertised distance (AD) – представља цену путање почев од суседа до одредишне мреже
  • Feasible distance (FD) – представља цену чија је вредност збир цене путање до суседа и AD
  • Succesor – ово је назив за примарну руту која се користи код рутирања до одредишне адресе
  • Feasible succesor – представља бекап руту до исте одредишне мреже на коју указује succesor рута. Да би једна рута била feasible succesor мора да важи да је AD ове руте мање од FD succesor руте. Овај услов служи да се не појављују петље приликом рутирања.
    Пример мрежне топологије са четири рутера
    Пример мрежне топологије са четири рутера

На примеру са слике 11. дата су четири рутера: А, B, C и D. Претпоставимо да су рутери А и B управо постали суседи и разменили табеле рутирања. Рутер B обавештава рутер А да његова најбоља путања до D износи 50 и да путања од рутера А до рутера D износи 90. Када добије овај Update пакет од B, рутер А путању од B до D са метриком 50 посматра као AD, а другу путању од њега самог до D са метриком 90 посматра као FD. Рутер А добија и информацију о алтернативној путањи до рутера D, преко рутера C, где је AD=70, а FD=130. Сви ови подаци о путањама записују се као руте у табели топологије рутера А. Рутер А, руту А–>B–>D са ценом 90 , бира за succesor руту и уписује је у табелу рутирања, док руту А–>C–>D са ценом 130 бира за feasible succesor и уписује је у табелу рутирања тек ако succesor рута постане невалидна.

topologija_4rutera_tabela

Закључак

Осим горе наведених протокола, постоји још много ништа мање битних протокола за рутирање. Сходно ситуацији, у зависности од разних параметара стручњаци бирају протокол који се најбоље поклапа са њховим захтевима. Из текста смо видели да је правилно функционисање мрежа незамисливо без протокола за рутирање. Протоколи за рутирање су ту да осигурају поуздан проток информација на интернету или интранету.

Сваког дана настају нови протоколи и уводе се нови стандарди, тако да развој у овој области нимало не заостаје за другим областима у мрежним технологијама. Данашњи рутери са моћним процесорским ресурсима излазе лагано на крај са системским захтевима протокола за рутирање. Све у свему рутирање је један од најбитнијих процеса у савременим мрежама и захтева стално побољшање и корак с временом.

itmogul-logoТекст је преузет са угашеног блога ИТ модул и оригинални аутор овог текста је Саша Костадиновић. Компјутераш ИТ блог ће објављивати текстове са тог блога како ризница знања са те локације не би отишла у заборав.