RIP (Routing Information Protocol) — это дистанционно-векторный протокол маршрутизации и самый простой протокол маршрутизации, с которого стоит начать изучать маршрутизацию. Начнем с того, что рассмотрим класс дистанционно-векторных протоколов. Что означает дистанционно-векторный?
Расстояние: в мире маршрутизации это как далеко находиться удаленная сеть. Для оценки расстояния можно использовать метрики.
Вектор: в мире маршрутизации это когда мы определяем в каком направлении и с какого интерфейса отправлять пакеты и определяем IP-адрес следующего перехода.
Я не знаю, катались ли вы когда-нибудь на велосипеде, но в Нидерландах, есть хорошие «грибные указатели», рассказывающие вам, куда и сколько двигаться (в километрах). Тот же принцип применяется к дистанционно-векторным протоколам маршрутизации.
Если вам не нравится кататься на велосипеде, то вы предпочтете дорожные знаки:
Достаточно о велоспорте и шоссе, давайте посмотрим, как работают дистанционные протоколы маршрутизации.
На этом рисунке у нас есть три маршрутизатора, и мы запускаем дистанционно-векторный протокол маршрутизации RIP. Включаем питание, маршрутизаторы по умолчанию строят таблицу маршрутизации, но единственное, что они знают, это их непосредственно подключенные интерфейсы. Вы можете видеть, что эта информация находится в их таблице маршрутизации. В красном цвете вы можете видеть тип интерфейса, а зеленый указывает на метрику. RIP использует подсчет переходов в качестве показателя, который является не более чем подсчетом количества маршрутизаторов (переходов), которые вы должны пройти, чтобы добраться до места назначения.
Теперь я собираюсь включить дистанционно-векторный протокол, то есть маршрутизацию RIP. Что произойдет, так это то, что наши маршрутизаторы скопируют свою таблицу маршрутизации и передадут непосредственно соседнему маршрутизатору. R1 скопирует таблицу маршрутизации и передаст маршрутизатору R2. А R2 скопирует свою таблицу маршрутизации и передаст R3 и наоборот.
Если маршрутизатор получает информацию о сети, о которой он еще не знает, он добавит эту информацию в свою таблицу маршрутизации:
Взгляните на R1, и вы увидите, что он узнал о сети 192.168.23.0/24 и 3.3.3.0/24 от R2. Вы видите, что он добавил интерфейс (Fa1/0), как добраться до этих сетей (векторная часть), и вы видите, что он добавил метрику (количество переходов) для этих сетей (дистанционная часть).
192.168.23.0/24 — один переход, 3.3.3.0/24 — два перехода.
Потрясающие! Вы также видите, что R2 и R3 заполнили свои таблицы маршрутизации.
Каждые 30 секунд наши маршрутизаторы отправляют полную копию своей таблицы маршрутизации своим соседям, которые могут обновлять свою собственную таблицу маршрутизации.
Пока все хорошо, наши маршрутизаторы работают, и мы знаем как добраться ко всем нашим сетям … Однако, дистанционно-векторные протоколы маршрутизации уязвимы и имеют некоторые проблемы. Давайте посмотрим, что может пойти не так:
Интерфейс FastEthernet 1/0 на R3 становится недоступен, поэтому маршрутизатор изменит свою таблицу маршрутизации. Его статус измениться с up на down.
Каждые 30 секунд наши маршрутизаторы отправляют полную копию своей таблицы маршрутизации своим соседям, и получается, что настало время для R2 отправить свою копию. R2 отправляет свою полную таблицу маршрутизации в сторону R3. Как думаете, что произойдет?
R3 получает таблицу маршрутизации от R2 и увидит, что R2 объявляет сеть 3.3.3.0/24 с переходом, равным единице. Превосходно, что R3 думает, что количество переходов 1. Это лучше, чем отсутствие сети вообще, R3 добавит эту информацию в свою таблицу маршрутизации.
Через несколько секунд R3 отправит свою таблицу маршрутизации на соседний R2. R2 придет к следующему выводу:
«Я могу достичь 3.3.3.0/24, перейдя на R3, и мой счетчик переходов должен быть 1. Я получаю таблицу маршрутизации от R3, и теперь объявляю, что количество переходов составляет 2 … Мне нужно обновить себя, чтобы включить это изменение».
Счетчик переходов на R2 теперь равен 3, он получил 2 от R3 плюс добавляет переход к R3.
R2 также отправит копию своей таблицы маршрутизации в сторону R1, которая также обновит себя.
Вы видите, что происходит? Эти маршрутизаторы будут постоянно обновлять себя до бесконечности.
Что произойдет, когда мы отправим IP-пакет в сеть 3.3.3.0/24?
Посмотрите на таблицу маршрутизации R2 и R3, они указывают друг на друга. Дамы и господа … у нас есть петля маршрутизации! Это нехорошо, у IP-пакетов есть поле TTL (Time to Live), то есть они не будут зацикливаться навсегда, как это делают Ethernet-кадры.
Чтобы маршрутизаторы не обновлялись снова и снова, у нас есть число максимальное число переходов. Для дистанционно-векторного протокола RIP это число переходов 16. 16 считается недостижимым, поэтому максимальное количество переходов, которое у вас в сети может быть, составляет 15.
Эта проблема называется счет до бесконечности (counting to infinity).
Есть кое-что еще, что мы используем для борьбы с проблемой счета до бесконечности. В нашем примере R3 объявлял сеть 3.3.3.0/24 в направлении R2. Насколько полезно, чтобы R2 объявлял эту сеть по направлению к R3?
В маршрутизации это не очень эффективно. Тоже самое, если вы что-то узнаете от своего соседа, вы не будете ему это же пересказывать. Мы называем этот механизм расщепление горизонта (split horizon).
Как только сеть станет недоступной (3.3.3.0/24 в нашем примере), маршрутизатор немедленно отправит инициированное обновление (triggered update) для обновления таблиц маршрутизации у своих соседей.
Сгенерированное обновление будет содержать сеть, которая стала недоступна и бесконечную метрику (16 в случае RIP). Отправка обновления для этой сети с помощью бесконечной метрики называется отравление маршрута (route poisoning).
Чтобы убедиться, что R3 не обновляет свою таблицу маршрутизации через какой-либо другой маршрутизатор/путь в сети, R2 отправит обратное отравление (poison reverse) в ответ на предыдущее сообщение маршрутизатора, который он получил от R3.
Я только что объяснил вам, что расщепление горизонта … «не рассказывайте все, что вы узнали от своего соседа, назад ему же».
Есть еще одна вещь, которую мы используем с протоколами маршрутизации на основе вектора расстояния. Когда R2 и R1 узнают, что сеть 3.3.3.0/24 недоступна, они также запустят таймер удержания (holddown timer). Этот таймер удержания будет работать в течение 180 секунд, и он выполняет следующие действия:
- Если мы получаем информацию о сети 3.3.3.0/24 от другого маршрутизатора с той же или худшей метрикой, которую мы имеем в настоящее время, мы игнорируем эту информацию.
- Если мы получаем информацию о сети 3.3.3.0/24 от другого маршрутизатора с лучшей метрикой, мы останавливаем таймер удержания и обновляем нашу таблицу маршрутизации этой новой информацией.
- Если мы ничего не получаем и таймер удержания истекает, мы удаляем эту сеть из таблицы маршрутизации.
Как вы думаете? Это много информации о протоколе маршрутизации RIP и дистанционно-векторных протоколах?
Позвольте мне закончить эту статью, предоставив вам сравнение RIP версии 1 и версией 2. Они схожи с несколькими отличиями:
Rip | Версия 1 | Версия 2 |
Класс | Классовый | Бесклассовый |
Тип адресса | Широковещательный | Многоадресный |
Поддержка ручной суммаризации | нет | да |
Поддержка аутентификации | нет | да |
RIP версии 1 является классовым, поэтому он не отправляет маску подсети вместе с обновлениями маршрутизации, RIP версии 2 является бесклассовым, поэтому он будет отправлять маску подсети. RIP версии 1 отправляет все, используя широковещательные рассылки. RIP версии 2 использует многоадресную рассылку (вы также можете использовать одноадресную).
Теперь вы знаете, что такое RIP как дистанционно-векторный протокол маршрутизации.
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.