Днес започваме с изучаването на рутери. Ако сте преминали през видеокурса ми от първи до седмия урок, вече познавате основите на суичове. Сега преминаваме към след устройството - рутера. Както знаете от предходния видеолекцион, една от темите на курса CCNA се нарича – Cisco Switching & Routing.
В тази серия няма да изучаваме рутерите Cisco, а ще разгледаме концепцията за маршрутизация в общ план. Ще имаме три теми. Първата е преглед на това, което вече знаете за рутерите, и разговор за това как това може да се прилага заедно с познанията, които сте получили при изучаването на суичовете. Трябва да разберем какво е сътрудничеството между суичовете и рутерите.

След това ще разгледаме какво представлява маршрутизацията, какво означава и как работи, а след това ще преминем към видовете маршрутизиращи протоколи. Днес използвам топология, която вече сте виждали в предходните уроци.
Разгледахме как данните преминават през мрежата и как се извършва трисетапно изпълнение на TCP. Първото съобщение, изпратено в мрежата, е SYN-пакет. Нека видим как протича трисетапното изпълнение, когато компютър с IP адрес 10.1.1.10 иска да се свърже със сървър 30.1.1.10, т.е. опитва се да установи FTP връзка.
За да започне връзката, компютърът създава изходящ порт с произволен номер 25113. Ако сте забравили как се случва това, препоръчвам ви да прегледате предишните видеоуроци, в които се разглеждаше този въпрос.

След това той поставя в кадъра номера на целевия порт, като знае, че трябва да се свърже с порт 21, след което добавя информация от третото ниво на OSI, т.е. собствения IP адрес и IP адреса на целта. Данните, обведени с черна линия, не се променят, докато не достигнат крайната точка. Когато достигнат сървъра, те също не се променят, но сървърът добавя информация от второто ниво на кадъра, т.е. MAC адреса. Това е така, защото суичовете разпознават само информацията от второто ниво на OSI. В този сценарий рутерът е единственото мрежово устройство, което разглежда информацията от трето ниво, естествено, компютърът също работи с тази информация. Така че, суичът работи само с информация от второто ниво, а рутерът – от третото.
Свитч знае изходния MAC-адрес XXXX:XXXX:1111 и иска да узнае MAC-адреса на сървъра, към който се обръща компютърът. Той сравнява изходния IP-адрес с адреса на дестинацията, осъзнава, че тези устройства са разположени в различни подсистеми и взема решение да използва шлюз, за да излезе в друга подсистема.
Често ми задават въпрос, кой решава какъв да бъде IP-адресът на шлюза. На първо място, това решава мрежовият администратор, който създава мрежата и предоставя IP-адрес на всяко устройство. Като администратор, можете да назначите на рутера произволен адрес, който попада в диапазона на разрешените адреси на вашата подсистема. Обикновено това е първият или последният допустим адрес, но няма строги правила относно назначаването му. В нашия случай администраторът назначи адреса на шлюза, или рутера, 10.1.1.1 и го присвои на порта F0/0.
Когато настройвате мрежа на компютър със статичен IP-адрес 10.1.1.10, вие задавате маска на подсистемата 255.255.255.0 и шлюз по подразбиране 10.1.1.1. Ако не използвате статичен адрес, то компютърът използва DHCP, който назначава динамичен адрес. Независимо от това, кой IP-адрес използва компютърът, статичен или динамичен, трябва да има адрес на шлюз за изход в друга мрежа.
Така компютърът 10.1.1.10 знае, че трябва да изпрати фрейм до рутера 10.1.1.1. Тази предаване се извършва в рамките на локалната мрежа, където IP-адресът няма значение, а важен е само MAC-адресът. Нека предположим, че преди това компютърът никога не е комуникирал с рутера и не знае неговия MAC-адрес, затова той трябва първо да изпрати ARP-заявка, в която пита всички устройства в подсистемата: „ей, кой от вас има адрес 10.1.1.1? Моля, съобщете ми вашия MAC-адрес!“. Тъй като ARP е широкообхватно съобщение, то достига до всички портове на всички устройства, включително рутера.
Компютър 10.1.1.12, получавайки ARP, мисли: «не, моят адрес не е 10.1.1.1» и отхвърля заявката; подобно постъпва и компютър 10.1.1.13. Рутерът, получавайки заявката, разбира, че става дума за него, и изпраща MAC адреса на порт F0/0 - а всички портове имат различен MAC адрес - на компютър 10.1.1.10. Сега, знаейки адреса на шлюза XXXX:AAAA, който в този случай е адресът на назначенията, компютърът го добавя в края на фрейма, адресиран към сървъра. Заедно с него той задава заглавието на фрейма FCS/CRC, представляващо механизъм за проверка на грешки в предаването.

След това фреймът на компютъра 10.1.1.10 се изпраща по жиците към рутера 10.1.1.1. След получаването на фрейма рутерът премахва FCS/CRC, използвайки същия алгоритъм за проверка, който и компютърът. Данните представляват не нищо друго освен набор от нули и единици. Ако данните са повредени, т.е. 1 става 0 или 0 става 1, или има изтичане на данни, което често се случва при използване на хъб, устройството трябва да прехвърли фрейма отново.
Ако проверката на FCS/CRC е успешна, рутерът гледа на MAC адресите на източника и назначенията и ги премахва, тъй като това е информация от 2-ро ниво, и преминава към тялото на фрейма, в което се съдържа информация от 3-то ниво. От него той научава, че информацията, съдържаща се във фрейма, е предназначена за устройство с IP адрес 30.1.1.10.
Рутерът по някакъв начин знае къде се намира това устройство. Не обсъждахме този въпрос, когато разглеждахме работата на комутаторите, затова ще го разгледаме сега. Рутерът има 4 порта, затова добавих няколко допълнителни връзки към него. И така, откъде знае рутерът, че данните за устройството с IP адрес 30.1.1.10 трябва да се изпратят през порт F0/1? Защо не ги изпраща през порт F0/3 или F0/2?
Става въпрос, че рутерът работи с таблица за маршрутизация. Всеки рутер притежава такава таблица, позволяваща му да реши през кой порт да предаде конкретния фрейм.

В този случай порт F0/0 е конфигуриран с IP адрес 10.1.1.1, което означава, че е свързан с мрежата 10.1.1.10/24. По аналогия, порт F0/1 е конфигуриран с адрес 20.1.1.1, тоест свързан е с мрежата 20.1.1.0/24. Рутерът знае и двете мрежи, тъй като те са директно свързани с неговите портове. По този начин информацията, че трафикът за мрежата 10.1.10/24 трябва да премине през порт F0/0, а за мрежата 20.1.1.0/24 – през порт F0/1, е известна по подразбиране. От къде обаче рутерът знае през кои портове да работи с останалите мрежи?
Виждаме, че мрежата 40.1.1.0/24 е свързана с порт F0/2, мрежата 50.1.1.0/24 – с порт F0/3, а мрежата 30.1.1.0/24 свързва втория рутер със сървъра. Вторият рутер също има таблица за маршрутизиране, в която е записано, че мрежата 30. е свързана с неговия порт, да го обозначим 0/1, а с първия рутер той е свързан през порт 0/0. Този рутер знае, че порт 0/0 е свързан с мрежата 20., а порт 0/1 – с мрежата 30., и не знае нищо повече.
По аналогия, първият рутер знае за мрежите 40. и 50., свързани с портовете 0/2 и 0/3, но не знае нищо за мрежата 30. Протоколът за маршрутизиране предоставя на рутерите информацията, която те не притежават по подразбиране. Механизмът, по който тези рутери взаимодействат помежду си, е основата на маршрутизацията, като съществуват динамична и статична маршрутизация.
Статичната маршрутизация означава, че на първия рутер се дава информация: ако е необходимо да се свърже с мрежата 30.1.1.0/24, трябва да се използва порт F0/1. Въпреки това, когато на втория рутер постъпи трафик от сървъра, предназначен за компютър 10.1.1.10, той не знае какво да направи, тъй като в неговата таблица за маршрутизиране има само данни за мрежите 30. и 20. Затова на този рутер също трябва да му се зададе статична маршрутизация: ако получи трафик за мрежата 10., трябва да го изпрати през порт 0/0.
Проблемът с статичната маршрутизация е, че трябва ръчно да конфигурирам първия рутер да работи с мрежата 30., а втория рутер – да работи с мрежата 10. Това е лесно, ако имам само 2 рутера, но когато имам 10 маршрутизатора, конфигурирането на статичната маршрутизация отнема много време. В такъв случай има смисъл да се използва динамична маршрутизация.
И така, след като компютърът е получил фрейм, първият рутер преглежда своята таблица за маршрутизация и решава да го изпрати през порт F0/1. В същото време той добавя MAC адреса на източника XXXX.BBBB и MAC адреса на назначения XXXX.СССС.

След получаването на този фрейм, вторият рутер „отрязва“ MAC адресите, свързани с втория слой на OSI, и преминава към информацията от третия слой. Той вижда, че IP адресът на назначения 30.1.1.10 принадлежи на същата мрежа като порт 0/1 на рутера, добавя MAC адреса на източника и MAC адреса на устройството назначения и изпраща фрейма на сървъра.

Както вече споменах, след това аналогичният процес се повтаря в обратната посока, тоест се извършва вторият етап на ръкостискането, при който сървърът изпраща обратно SYN ACK съобщение. Преди това той отхвърля цялата ненужна информация и оставя само SYN пакета.

След получаването на този пакет, вторият рутер разглежда получената информация, добавя към нея и я изпраща нататък.
Така, в предишните уроци изучихме как работи суичът, а сега разбраха как работят рутерите. Нека отговорим на въпроса какво представлява маршрутизиране в глобален смисъл. Да предположим, че сте се сблъскали с такъв указател за движение, поставен на кръстовище с кръгово движение. Виждате, че първото отклонение води към базата на Кралските въздушни сили Фейрфакс, второто към летището, третото на юг. Ако изберете четвъртия изход, ще попаднете в задънена улица, а през петия може да преминете през центъра на града към замъка Брексби.

Общо казано, маршрутизацията е това, което кара рутера да взема решения относно посоката на трафика. В този случай вие, като шофьор, трябва да вземете решение, по кой изход от кръстовището да преминете. В мрежите рутерите трябва да решават накъде да изпращат пакети или фреймове. Трябва да разберете, че маршрутизацията позволява създаването на таблици, на основата на които рутерите вземат тези решения.
Както казах, има статична и динамична маршрутизация. Нека разгледаме статичната маршрутизация, за което ще нарисувам 3 устройства, свързани помежду си, като първото и третото устройство са свързани с мрежи. Да предположим, че една мрежа 10.1.1.0 иска да се свърже с мрежа 40.1.1.0, а между рутерите са разположени мрежите 20.1.1.0 и 30.1.1.0.

В този случай портовете на рутерите трябва да принадлежат на различни подсегменти. Рутер 1 по подразбиране знае само за мрежите 10. и 20. и не знае нищо за останалите мрежи. Рутер 2 знае само за мрежите 20. и 30., тъй като те са свързани към него, а рутер 3 знае само за мрежите 30. и 40. Ако мрежа 10. иска да се свърже с мрежа 40., трябва да уведомя рутер 1 за мрежата 30. и че ако иска да предаде фрейм от мрежа 40., трябва да използва интерфейса за мрежа 20. и да изпрати фрейма по същата тази мрежа 20.
На втория рутер трябва да зададем 2 маршрута: ако иска да предаде пакет от мрежа 40. в мрежа 10., трябва да използва порта на мрежа 20., а за предаване на пакет от мрежа 10. в мрежа 40. – порта на мрежа 30. По същия начин трябва да информирам рутер 3 за мрежите 10. и 20.
Ако имате малки мрежи, статичната маршрутизация е много лесна за настройка. Обаче, колкото повече се разраства мрежата, толкова по-големи стават проблемите със статичната маршрутизация. Представете си, че сте създали нова връзка, която директно свързва първия и третия рутер. В този случай протоколът за динамична маршрутизация автоматично ще актуализира таблицата за маршрутизация на рутер 1, указвайки следното: „ако трябва да се свържете с рутер 3, използвайте директен маршрут!“

Съществуват два типа протоколи за маршрутизация: протокол на вътрешен шлюз IGP и протокол на външен шлюз EGP. Първият протокол работи в рамките на отделна, автономна система, известна като домейн на маршрутизация. Представете си, че имате малка организация, в която има само 5 рутера. Когато говорим само за свързване между тези рутери, имаме предвид IGP; ако обаче използвате мрежата си, за да се свържете с интернет, както правят ISP провайдърите, тогава използвате EGP.

IGP използва 3 популярни протоколи: RIP, OSPF и EIGRP. Учебният план CCNA споменава само за последните два протокола, тъй като RIP е остарял. Това е най-простият от маршрутизиращите протоколи, който все още се използва в някои случаи, но не осигурява необходимата мрежова безопасност. Това е една от причините, поради която Cisco е изключила RIP от учебния курс. Все пак ще ви разкажа за него, защото неговото изучаване спомага за разбирането на основите на маршрутизацията.

Класификация на протоколите EGP използва два протокола: BGP и самия протокол EGP. По време на курса CCNA ще разглеждаме само BGP, OSPF и EIGRP. Разказът за RIP може да се счита за бонусна информация, която ще бъде отразена в едно от видеозанятията.
Съществуват още 2 типа маршрутизиращи протоколи: дистанционно-векторни протоколи Distance Vector и протоколи за маршрутизиране на състоянието на канала Link State.

Първият протокол разглежда векторите на разстояние и посока. Например, мога да установя директна връзка между рутера R1 и R4, или мога да осъществя връзка по пътя R1-R2-R3-R4. Когато става въпрос за маршрутизиращи протоколи, които използват дистанционно-векторния метод, в този случай връзката винаги ще се осъществява по най-краткия маршрут. Важно е, че не се отчита, че тази връзка би имала минимална скорост. В нашия случай тя е 128 кбит/с, което е много по-бавно от връзката по маршрута R1-R2-R3-R4, където скоростта е 100 мбит/с.
Нека разгледаме дистанционно-векторния протокол RIP. Ще нарисувам пред рутера R1 мрежа 10., а зад рутера R4 – мрежа 40. Да предположим, че в тези мрежи има много компютри. Ако искам да осъществя връзка между мрежа 10. R1 и мрежа 40. R4, ще настроя R1 на статична маршрутизация от типа: "ако трябва да се свържеш с мрежа 40., използвай директна връзка с рутера R4". Важно е, че на всичките 4 рутера трябва ръчно да настроя RIP. Тогава таблицата за маршрутизация на R1 автоматично ще съобщава, че ако мрежа 10. иска да се свърже с мрежа 40., трябва да използва директна връзка R1-R4. Дори ако обходът е по-бърз, протоколът Distance Vector все пак ще избере най-краткия път с най-малкото разстояние за предаване.
OSPF е протокол за маршрутизиране на състоянието на канала, който винаги наблюдава състоянието на участъците в мрежата. В този случай той оценява скоростта на каналите, и ако установи, че скоростта на предаване на трафика по канала R1-R4 е много ниска, избира път с по-висока скорост R1-R2-R3-R4, дори и дължината му да превишава най-краткия път. Така, ако настроя протокола OSPF на всички рутери, при опит за свързване на мрежа 40. с мрежа 10., трафикът ще бъде изпратен по маршрута R1-R2-R3-R4. И така, RIP е дистанционно-векторен протокол, а OSPF – протокол за маршрутизиране на състоянието на канала.
Има и един протокол – EIGRP, собственически протокол за маршрутизация на Cisco. Ако говорим за мрежови устройства на други производители, като Juniper, те не поддържат EIGRP. Това е отличен протокол за маршрутизация, который е много по-ефективен от RIP и OSPF, но може да се използва само в мрежи, основаващи се на устройства на Cisco. По-късно ще обясня по-подробно защо този протокол е толкова добър. Временно забелязвам, че EIGRP съчетава характеристики на дистанционно-векторни протоколи и протоколи за маршрутизация на базата на състояние на канала, представлявайки хибриден протокол.
На следващия видеоурок ще се потопим в разглеждането на роутерите Cisco, ще ви разкажа малко за операционната система Cisco IOS, която е предназначена както за суичове, така и за роутери. Надявам се, в уроците на 19-ти или 20-ти ден да започнем подробното изучаване на протоколите за маршрутизация, и с примери от малки мрежи ще покажа как да конфигурирате роутерите Cisco.

Благодарим, че останахте с нас. Харесвате ли нашите статии? Искате ли да виждате повече интересни материали? Подкрепете ни, като направите поръчка или ни препоръчате на познати, 30% отстъпка за потребителите на Хабра за уникален аналог на entry-level сървъри, създаден от нас за вас: (налични опции с RAID1 и RAID10, до 24 ядра и до 40GB DDR4).
Dell R730xd два пъти по-евтин? Само при нас в Нидерландия! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — от $99! Четете за това
Източник: habr.com
