Интернет-маршрутизация: сложнее, чем вы думали
Введение
С момента появления Интернета несколько десятилетий назад возникла потребность в маршрутизации трафика с одного компьютера на другой и из одной сети в другую. По мере роста Интернета росла и сложность этого процесса. Сегодня существует множество протоколов, доступных для маршрутизации трафика, включая протокол пограничного шлюза и протокол Open Shortest Path First. Один протокол, с которым большинство пользователей Интернета не работают напрямую, называется протоколом пограничного шлюза, но этот протокол необходим для работы Интернета и является важной частью избыточности Интернета. В этой статье я буду использовать протокол пограничного шлюза, чтобы передать некоторые сложные вопросы, о которых большинство людей не знают или, по крайней мере, не часто думают о них.
Общие сведения о BGP
Интернет состоит из тысяч отдельных сетей. Эти сети сгруппированы в районы, называемые автономными системами (AS), которых насчитывается несколько десятков тысяч. Когда компьютеру в одной из этих AS нужно отправить пакеты на компьютер в другой AS, тогда пакет должен пройти через различные «окрестности», чтобы достичь нужной AS. Этот процесс перемещения пакетов по AS называется маршрутизацией. Протокол, облегчающий эту маршрутизацию, называется протоколом пограничного шлюза (BGP). См. рис. 1 ниже для графического представления маршрутизации между логическими автономными системами. Это отличается от других протоколов маршрутизации, таких как Open Shortest Path First (OSPF), который очень распространен в средних и крупных корпоративных сетях. Протокол OSPF, однако, плохо масштабируется до масштаба, для которого был разработан BGP. Хотя BGP не ограничивается маршрутизацией пакетов между автономными системами и часто может быть полезен для очень крупных корпоративных сетей.
Рис . 1. Маршрутизация BGP между автономными системами, любезно предоставлено http://www.cisco.com
BGP часто называют внешним BGP (EBGP), когда он используется для маршрутизации пакетов между AS, и внутренним BGP (IBGP), когда он используется внутри AS. Как я уже упоминал, IBGP часто может быть полезен для очень больших корпоративных сетей. Одной из причин, по которой сетевой администратор может решить внедрить IBGP в своей сети, может быть использование преимущества множественной адресации BGP, которая может улучшить избыточность сети для нескольких точек доступа.
Вопросы производительности
Когда большие сети реализуют BGP, все одноранговые узлы должны подключаться друг к другу в так называемой полносвязной сети, что просто означает, что каждый маршрутизатор должен взаимодействовать с другим маршрутизатором в обоих направлениях. Это может быть большим налогом на требования к памяти маршрутизатора. Излишне говорить, что это также может быстро привести к большому сетевому трафику. Однако существуют методы, которые можно использовать для преодоления некоторых из этих проблем с масштабируемостью.
Одной из проблем, с которой Интернету пришлось столкнуться несколько лет назад, был экспоненциальный рост таблиц маршрутизации. Это было «решено» (они все еще довольно велики) с введением бесклассовой междоменной маршрутизации (CIDR). Чем больше таблица маршрутизации, тем больше времени потребуется маршрутизатору для обновления этой таблицы, что может привести к значительным задержкам в работе сети. Это также может привести к скачку загрузки ЦП, что само по себе может привести к задержкам маршрутизации.
Один из методов, который может использовать разработчик сети, называется конфедерациями. С помощью конфедераций крупная корпоративная сеть может быть разделена на логические AS, при этом каждая AS реализует полносвязные соединения, а затем дополнительную маршрутизацию между AS. По сути, это означает, что корпоративная сеть будет отражать то, как выглядит Интернет с архитектурной точки зрения.
Сеть, реализующая IBGP, также может реализовать схему Router Reflecting (RR). В этой схеме несколько маршрутизаторов могут взаимодействовать с центральной точкой, выступающей в роли сервера-отражателя маршрутизатора, в то время как другие маршрутизаторы становятся клиентами-отражателями маршрутизатора. Это может значительно сократить количество сеансов, которые должен поддерживать маршрутизатор, и значительно повысить производительность маршрутизатора. Однако такая схема может привести к неоптимальной маршрутизации. Как всегда есть компромисс.
Еще одна характеристика производительности, которую необходимо учитывать разработчикам сети, называется переключением маршрутов. Графический пример переключения маршрутов см. на рис. 2 ниже. В любой крупной сети довольно часто таблицы маршрутизации BGP обновляются по мере того, как каналы передаются вверх и вниз. Однако для любого конкретного маршрутизатора этот тип активности должен быть относительно редким. Однако иногда маршрутизаторы настроены неправильно; это часто приводит к повторяющимся и чрезмерным циклам подъемов и спадов. Затем это может привести к чрезмерной активности со всеми одноранговыми маршрутизаторами. Когда маршрутизатор подключается к сети, будь то в первый раз или после короткого простоя, происходит повторное объявление (или объявление) каждому из его одноранговых узлов. Это потенциально может привести к довольно высокой загрузке ЦП в течение короткого периода времени (несколько секунд). Это действие называется изменением маршрута. Чтобы преодолеть колебания маршрутов, многие реализации BGP включают гашение колебаний маршрутов.
Демпфирование флуктуаций маршрутов — это процесс, который пытается ограничить распространяющиеся негативные эффекты флуктуаций маршрутов. Когда используется подавление колебаний маршрута, оно работает путем игнорирования повторяющихся повторных объявлений (когда маршрутизатор снова становится доступным) в течение более продолжительных периодов времени. Ранее демпфирование отклонений маршрута считалось весьма эффективным методом уменьшения колебания маршрута. Однако, поскольку производительность маршрутизаторов и их способность обновлять свои таблицы маршрутизации значительно возросли, а скорость соединений между одноранговыми узлами маршрутизатора увеличилась, поскольку увеличенное демпфирование колебаний маршрута часто является препятствием для оптимальной производительности сети. Многие сетевые профессионалы в настоящее время выступают против демпфирования колебаний маршрута. Чтобы быть в безопасности, если вы являетесь сетевым администратором, вероятно, лучше всего просто эффективно управлять маршрутизатором!
Рисунок 2 : Чрезмерный эффект переключения маршрутов, предоставлено www.inetdevgrp.org.
Архитектура маршрутизаторов
Что заставило эти маршрутизаторы работать настолько лучше, что больше не требуется демпфирование колебаний маршрута? Ну есть много очевидных причин. Во-первых, процессоры маршрутизаторов увеличили свою производительность так же, как процессоры настольных компьютеров увеличили свою производительность. Во-вторых, скорость автобусов также значительно увеличилась. Еще одним важным изменением, которое способствовало повышению производительности маршрутизатора, являются архитектурные изменения, произошедшие за последние несколько лет. В частности, я говорю об изменении, в результате которого таблицы маршрутов обновляются процессорами маршрутов на интерфейсных картах. Эти процессоры интерфейсных плат также выполняют фактическую маршрутизацию. ЦП обрабатывает операционную систему и любые задачи управления, выполняемые администратором. Эта децентрализация значительно улучшила общую производительность маршрутизации сети.
Как видите, существует множество факторов, влияющих на разработку реализации маршрутизации для больших сетей. Этот тип мышления начинается на этапе проектирования протокола, продолжается до этапа проектирования маршрутизатора (проект аппаратного обеспечения, программного обеспечения и всей архитектуры маршрутизатора) и продолжается еще дальше до этапа проектирования сети, где проектировщики а администраторы используют инструменты, доступные им в протоколе и на самих маршрутизаторах, чтобы оптимизировать маршрутизацию для своей сети. До следующего раза!