Защита корневых DNS-серверов - Основы маршрутизации
ОГЛАВЛЕНИЕ
Основы маршрутизации
Если два хоста, участвующих в обмене данными друг с другом находятся в разных подсетях, то пакеты между ними доставляются посредством выполняющих специальные функции устройств сети, называемых маршрутизаторами.
Часто, два удаленных хоста в Интернете связаны между собой избыточными связями. Порой, пакет данных отосланный от хоста A теоретически может достичь хоста Б десятками различных путей. Совсем не факт, что если пакет от хоста А прошел через 3 определенных маршрутизатора, то обратный пакет от хоста Б придет через те же 3 маршрутизатора. Наличие избыточных связей дает 2 основных преимущества, первое – выход из строя одного из каналов связи не будет означать недоступности для группы хостов, второе – нагрузка при передаче данных может распределяться между различными каналами, в результате общая пропускная способность сети возрастает.
В процессе принятия решения, через какой из возможных путей переслать пакет маршрутизатор руководствуется, прежде всего, адресом назначения пакета и логикой маршрутизации. Обычно, маршрутизатор не руководствуется информацией об источнике (кто послал пакет), протоколе, портах и прочей информацией заголовков пакета данных. Но, например, у маршрутизаторов cisco есть особая фича, так называемый PBR (Policy-Based Routing) http://www.cisco.com/en/US/docs/ios/12_2/qos/configuration/guide/qcfclass.html#wpxref35843
, однако, это скорее исключение, чем правило.
Забавно, но даже сетевики со стажем не всегда четко представляют, что служит критерием принятия решения о направлении пакетов по тому либо иному маршруту. Простейшая задача, на картинке ниже вводит их в ступор.
Вопрос: пакет на хост 192.168.0.2 уйдет с верхнего или нижнего интерфейса?
Правильный ответ – с верхнего. Почему? Потому, что при выборе лучшего маршрута последовательно срабатывают следующие 3 правила.
1) Если длины префиксов подсетей, в которые попадает IP адрес хоста назначения разные, то выбирается маршрут с самым длинным префиксом.
2) Если префиксы равны, то выбирается маршрут с более приоритетным протоколом маршрутизации.
3) Если и префиксы равны и протоколы одинаковые, то срабатывает внутренняя метрика протокола маршрутизации.
В данном примере сработало первое правило.
А теперь немного подробней. Что такое префикс? Префикс это метод описания подсети. Префикс состоит из двух частей, левая – идентификатор подсети, правая – длина этого идентификатора.
Самый длинный префикс имеет длину 32 при этом левая часть такого префикса, по сути, является IP адресом. Самый короткий префикс имеет длину 0, при этом левая часть префикса также равна 0, такой префикс записывается как 0/0 или 0.0.0.0/0, и в него попадают все возможные IP адреса.
В маршрутизации для описания подсетей используются префиксы, но не идентификаторы подсетей и маски. Запись 192.168.0.0/28 описывает подсеть, в префиксе которой последовательно 28 единиц (длина префикса), что эквивалентно записи 192.168.0.0 маска 255.255.255.240. Вообще, тут несколько тонкий вопрос отличия, но маски используются для того, чтобы вычислить относится ли хост к определенной подсети, префиксы служат для описания значимой для маршрутизации информации о местоположении подсетей. Есть еще некоторые не существенные, в данном контексте отличия.
Маршруты могут вноситься ручками в конфигурацию маршрутизатора, это называется статическая маршрутизация, а могут появляться там автоматически, с помощью протоколов динамической маршрутизации.
Основной принцип динамической маршрутизации прост. Каждый маршрутизатор знает о нескольких сетях доступных через него. После включения динамической маршрутизации соседние маршрутизаторы начинают обмениваться информацией о доступных через них сетях. В конце концов, после полного обмена маршрутной информацией у каждого маршрутизатора появляется полное представление обо всех подсетях в пределах автономной системы маршрутизации (например, какие есть подсети, через какие интерфейсы они доступны, как далеко они расположены). В случае, если происходят некоторые события, например пропадает линк между маршрутизаторами, или вносятся/удаляются определенные подсети, таблицы маршрутизации автоматически пересчитываются.
Несколько слов о приоритетах протоколов маршрутизации. Статическая маршрутизация имеет наивысший приоритет, различные протоколы динамической маршрутизации имеют каждый свой приоритет. В примере, приведенном выше, если бы префиксы подсетей совпадали, то пакет, согласно второму правилу, был бы передан через нижний интерфейс. Область действия приоритетов протоколов маршрутизации локальна для каждого маршрутизатора. Если маршрутизатор A получил маршрут для сети 192.168.0.0/28 через статический маршрут, а маршрутизатор B получил маршрут 192.168.0.0/28 от маршрутизаторов A и C по OSPF, то маршрутизатор B в выборе приоритетов руководствуется метриками OSPF. То есть маршрутизатору не важно, как соседи узнали о том либо ином маршруте, важно только то, как и что он о нем узнал.
Теперь стоит объяснить, что такое метрики протоколов маршрутизации. Метрики это некоторые внутренние атрибуты протокола маршрутизации, на основании которых принимаются решения направить пакет по тому, либо другому пути. Если вы используете статическую маршрутизацию, то естественно, метрики вы выставляете вручную, когда прописываете маршрут. В случае с динамической маршрутизацией метрики, как и маршрут, чаще всего вычисляются автоматически, однако, их также можно менять и руками, заставляя маршрутизатор кидать пакеты по нужному пути.
Различные протоколы динамической маршрутизации вычисляют метрики различными способами. Для примера поверхностно рассмотрим критерии выбора маршрута протоколом динамической маршрутизации OSPF.
OSPF - Open Shortest Path first, вольно это можно перевести как лучший (маршрут) - с наименьшим доступным путем. Это значит, что в случае равнозначных (по скорости) связей между узлами сети выбирается маршрут с наименьшим количеством маршрутизаторов через которые он будет следовать. На длину пути автоматически влияет скорость, с которой работает интерфейс. Например, если интерфейс работает на скорости 100Мбит/c, то путь до соседа будет равен 1, если 10Мбит/c, то он будет равен 10 и т.д. Повлиять на дистанцию можно и ручками. Для этого надо просто прописать на нужном интерфейсе параметр bandwith (емкость), который не влияет на физическую скорость интерфейса, но влияет на процесс принятия решения маршрутизации.
В заключение, хотелось бы объяснить, почему правила маршрутизации срабатывают именно в таком, но не в другом порядке. На самом деле, все очень просто и логично.
Правило номер 1.
Задумайтесь, как описать, где расположены выходы из вашей сети, в которой крутится, допустим, тот же OSPF. Естественно, на маршрутизаторах, где они (выходы) расположены надо прописать маршрут по умолчанию (default gateway). В маршрут по умолчанию должны включаться все возможные IP адреса. Как описывается default gateway в префиксах? Вот так - 0/0. Любой IP адрес попадает в префикс 0/0, однако пакеты на default gateway должны кидаться только в том случае, если другие маршруты не срабатывают (адрес назначения не попадает ни в один другой существующий префикс маршрутизации). Default gateway – тот же маршрут, он так же передается между маршрутизаторами протоколом OSPF, следовательно, маршруты с более длинным префиксом всегда делаются более приоритетными, для того, чтобы схема с маршрутом по умолчанию работала.
Правило номер 2.
Метрики различных протоколов маршрутизации не соизмеримы. Гораздо проще дать приоритет одному протоколу маршрутизации над другим, чем, не понятно как, сопоставлять приоритеты метрик различных протоколов маршрутизации.
Правило номер 3.
Оно третье только потому, что первые 2 места уже заняты J
Для того, чтобы понять как организовывается anycast в IP сетях, понимания описанных выше принципов работы маршрутизации достаточно.