Маршрутизация

В этой статье будет много тавтологий: итак, основное назначение маршрутизатора – маршрутизировать и делает он это при помощи маршрутов в таблице маршрутизации. Маршрутизатор может быть с продвинутой версией софта, обладать теми или иными дополнительными функциями (VPN, Firewall, и т.п.), может быть совсем простым с версией IOS «BASE», но он в любом случае будет маршрутизировать – это его главная задача.

Маршрутизация осуществляется на третьем уровне модели OSI. Если в сети есть не только IP, но и другие протоколы сетевого уровня, то процесс маршрутизации для каждого из них выполняется отдельно. В курсе CCNA рассматривается только маршрутизация IPv4 и IPv6 пакетов (тем не менее, даже это – два разных протокола и маршрутизация у них работает независимо друг от друга).

В чём же суть процесса: маршрутизатор содержит специальную таблицу – таблицу маршрутизации (routing table), в которой собирает маршруты во все сети, про которые ему довелось узнать. Каждый маршрут представляет из себя:

  1. собственно, саму сеть, в которую он ведёт
  2. направление к этой сети (направление может записываться двумя способами: это либо адрес следующего маршрутизатора на пути к нужной сети, либо имя интерфейса, из которого нужно «выдать наружу» пакет, чтобы он продолжил двигаться к нужной сети)
  3. метрика (опционально) – характеризует качество маршрута чем меньше метрика, тем «лучше» и «приоритетнее» маршрут

Маршруты могут попадать в таблицу маршрутизации тремя способами:

  1. Непосредственно подключенные (Connected). Такие маршруты появляются автоматически, когда мы включаем на маршрутизаторе какой-то интерфейс и настраиваем на нём ip адрес. Это наше действие означает, что непосредственно рядом с маршрутизатором за этим самым интерфейсом к нему примыкает указанная сеть, один из адресов которой мы настроили на новом интерфейсе. Маршрутизатор автоматически добавляет такой маршрут с указанием, что сеть доступна через данный интерфейс.
  2. Статические маршруты (Static). Если искомая сеть находится не в непосредственной близости к маршрутизатору, а хотя бы через один маршрутизатор от данного, то сам он про неё никак не узнает и один из способов сообщить, что «где-то там далеко есть такая сеть» - прописать статический маршрут. То есть явно сеть и направление к ней. Подробнее об этом можно прочитать в статье про статические маршруты.
  3. Динамическая маршрутизация. В этом случае на каждом маршрутизаторе настраивается один из протоколов динамической маршрутизации. Они бывают разными, но цели их работы одни и те же: каждый маршрутизатор берёт свои собственные непосредственно подключенные (Connected) сети (про которые, как мы уже говорили, он узнаёт автоматически), и передаёт их своим соседям. В результате каждый маршрутизатор узнаёт про все сети других маршрутизаторов и у всех в итоге получается таблица маршрутизации со всеми сетями данного участка. Динамическая маршрутизация, в отличие от статической может применяться на больших сетях, где статических маршрутов пришлось бы прописывать очень много.

Итак, тем или иным способом, таблица маршрутизации пополнилась маршрутами. Теперь, если на вход маршрутизатора приходит некий пакет, идущий в сеть N, то маршрутизатор просматривает свою таблицу в поисках искомой сети. Если сеть найдена, то берётся её направление (например, ip адрес следующего маршрутизатора) и ему пересылается данный пакет. Кроме того, существует маршрут по умолчанию, куда отправляются те пакеты, сеть получателя которых отсутствует в таблице маршрутизации. Если маршрут по умолчанию не задан, то такие пакеты уничтожаются, а отправителю может быть отправлено ICMP сообщение «Destination Unreachable»

Просмотреть содержимое таблицы маршрутизации можно с помощью команды show ip route. С этой командой необходимо разобраться детально, так как она непременно присутствует в любом траблшутинге.

Router#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route
 
Gateway of last resort is not set
 
C    192.168.0.0/24 is directly connected, FastEthernet0/0
D    192.168.2.0/24 [90/156160] via 192.168.0.1, 00:55:03, FastEthernet0/0
Router>

Итак, вначале вывода команды мы видим легенду, где показано, какая буква что обозначает. Из того что проходится в CCNA, нам потребуется: S – статический маршрут, C – непосредственно подключенная сеть и динамические протоколы (R – RIP, D – EIGRP, O – OSPF).

Ниже легенды идёт список известных устройству маршрутов. Первая из строчек «Gateway of last resort is not set» означает, что маршрут по умолчанию на данном маршрутизаторе не задан, далее идут две известных сети. Первая начинается с буквы C, что означает, что сеть непосредственно подключена к нашему маршрутизатору (конкретно, интерфейс FastEthernet0/0 является её частью). Вторая строчка начинается с буквы D, если посмотреть в легенду выше, то видно, что это EIGRP маршрут, про который информация получена издалека. Можно сказать, что сеть 192.168.2.0 не граничит с нашим роутером непосредственно, а находится где-то далеко, конкретно, за другим маршрутизатором с адресом 192.168.0.1 и чтобы достичь этой сети, пакет должен быть отправлен этому маршрутизатору через интерфейс FastEthernet0/0. Два других значения, которые есть в этой строчке - [90/156160]. Первое из них – это административная дистанция, вторая – метрика. Про дистанцию можно подробнее прочитать в этой статье, что касается метрики – то она считается по-разному для каждого протокола маршрутизации и характеризует качество маршрута. Чем меньше метрика, тем лучше маршрут. Используется метрика в том случае, когда один протокол имеет более одного маршрута в одну и ту же сеть. В это случае в таблицу маршрутизации попадает только маршрут с самой лучше (читай – меньшей) метрикой. Подробнее про вычисление метрике следует читать в описании конкретного протокола.

Аналогично маршрутизатору любой компьютер имеет свою таблицу маршрутизации, но она, как правило простая: состоит из «своей сети» и шлюза по умолчанию. Например, в windows можно посмотреть такую таблицу командной route print.

Теперь, когда мы более или менее понимаем, как происходит маршрутизация, давайте задумаемся, какие выводы можно сделать из приведённого выше. В курсе CCNA три достаточно очевидных вывода сделаны за нас. Вот они:

  1. Каждый маршрутизатор самостоятельно принимает решение о том, куда надо отправить очередной проходящий через него пакет. При этом он основывается только на адресе получателя пакета и своей собственной таблице маршрутизации.
  2. Тот факт, что один маршрутизатор «знает» маршрут в некоторую сеть не гарантирует, что другой маршрутизатор будет «знать» про ту же сеть.
  3. Если маршрутизатор может переправить пакет из сети А в сеть Б, это не гарантирует, что он может переправить пакет обратно – из сети Б в сеть А.

В принципе, эти три постулата очевидно вытекают из приведённого выше описания того, как работает маршрутизация, но, тем не менее, их полезно озвучить. Так же, из первого пункта следует такая проблема как петли. Если маршрутизаторы неправильно настроены, то каждый принимая решение о маршрутизации самостоятельно может пересылать пакеты другому, в результате чего пакеты могут начать циркулировать по кругу, загружая процессоры маршрутизаторов обработкой бессмысленных пересылок. Простейшим примером могу служить два маршрутизатора, у каждого из которых указан в качестве маршрута по умолчанию адрес друг друга. В этом случае, между ними, очевидно, образуется петля. Правильная настройка сети не должна допускать возникновения петель. Подробнее про петли и поведение маршрутизаторов в случае их возникновения можно прочитать в статье TTL

Маршрутизация – очень важный процесс, так как именно он описывает структуру всего интернета. Как правило, каждое устройство знает маршруты только до нескольких сетей. Например, маршрутизатор предприятия будет знать только маршруты к сетям этого предприятия. Если пакет предназначается одной из таких сетей, то маршрутизатор переправляет его по внутренней сети, если же сеть неизвестна (например, пакет предназначается какому-то далёкому узлу в интернете), то маршрутизатор отправляет его используя маршрут по умолчанию вышестоящему провайдеру. Провайдер, в свою очередь так же знает только про сети своих клиентов. Если пакет предназначается кому-то из них, то он будет передан на маршрутизатор этого клиента, если нет, то он по маршруту по умолчанию уходит ещё выше – следующему вышестоящему провайдеру. Таким образом функционирует весь интернет.

Комментарии

"ip адрес седлающего маршрутизатора "
Порадовали, спасибо)))

Аватар пользователя bacek
:)
И снова спасибо. Редкий текст получается перечитать больше пары раз.

Добавить комментарий