По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Современные веб-сайты и приложения генерируют большой трафик и одновременно обслуживают многочисленные запросы клиентов. Балансировка нагрузки помогает удовлетворить эти запросы и обеспечивает быстрый и надежный отклик веб-сайта и приложений. В этой статье вы узнаете, что такое балансировка нагрузки, как она работает и какие существуют различные типы балансировки нагрузки. Что такое балансировка нагрузки? Балансировка нагрузки (Load Balancing) распределяет высокий сетевой трафик между несколькими серверами, позволяя организациям масштабироваться для удовлетворения рабочих нагрузок с высоким трафиком. Балансировка направляет запросы клиентов на доступные серверы, чтобы равномерно распределять рабочую нагрузку и улучшать скорость отклика приложений, тем самым повышая доступность веб-сайта или сервера. Балансировка нагрузки применяется к уровням 4-7 в семиуровневой модели OSI. Возможности балансировки: L4. Направление трафика на основе сетевых данных и протоколов транспортного уровня, например IP-адреса и TCP-порта. L7. Добавляет переключение содержимого в балансировку нагрузки, позволяя принимать решения о маршрутизации в зависимости от таких характеристик, как HTTP-заголовок, унифицированный идентификатор ресурса, идентификатор сеанса SSL и данные HTML-формы. GSLB. Global Server Load Balancing расширяет возможности L4 и L7 на серверы на разных сайтах. Почему важна балансировка нагрузки? Балансировка нагрузки необходима для поддержания информационного потока между сервером и пользовательскими устройствами, используемыми для доступа к веб-сайту (например, компьютерами, планшетами, смартфонами). Есть несколько преимуществ балансировки нагрузки: Надежность. Веб-сайт или приложение должны обеспечивать хороший UX даже при высоком трафике. Балансировщики нагрузки обрабатывают пики трафика, эффективно перемещая данные, оптимизируя использование ресурсов доставки приложений и предотвращая перегрузки сервера. Таким образом, производительность сайта остается высокой, а пользователи остаются довольными. Доступность. Балансировка нагрузки важна, поскольку она включает периодические проверки работоспособности между балансировщиком нагрузки и хост-машинами, чтобы гарантировать, что они получают запросы. Если одна из хост-машин не работает, балансировщик нагрузки перенаправляет запрос на другие доступные устройства. Балансировщики нагрузки также удаляют неисправные серверы из пула, пока проблема не будет решена. Некоторые подсистемы балансировки нагрузки даже создают новые виртуализированные серверы приложений для удовлетворения возросшего количества запросов. Безопасность. Балансировка нагрузки становится требованием для большинства современных приложений, особенно с добавлением функций безопасности по мере развития облачных вычислений. Функция разгрузки балансировщика нагрузки защищает от DDoS-атак, перекладывая трафик атак на общедоступного облачного провайдера, а не на корпоративный сервер. Прогнозирование. Балансировка нагрузки включает аналитику, которая может предсказать узкие места трафика и позволить организациям их предотвратить. Прогнозные аналитические данные способствуют автоматизации и помогают организациям принимать решения на будущее. Как работает балансировка нагрузки? Балансировщики нагрузки находятся между серверами приложений и пользователями в Интернете. Как только балансировщик нагрузки получает запрос, он определяет, какой сервер в пуле доступен, а затем направляет запрос на этот сервер. Направляя запросы на доступные серверы или серверы с более низкой рабочей нагрузкой, балансировка нагрузки снимает нагрузку с загруженных серверов и обеспечивает высокую доступность и надежность. Балансировщики нагрузки динамически добавляют или отключают серверы в случае высокого или низкого спроса. Таким образом, обеспечивается гибкость. Балансировка нагрузки также обеспечивает аварийное переключение в дополнение к повышению производительности. Балансировщик нагрузки перенаправляет рабочую нагрузку с отказавшего сервера на резервный, уменьшая воздействие на конечных пользователей. Типы балансировки нагрузки Балансировщики нагрузки различаются по типу хранилища, сложности и функциональности балансировщика. Ниже описаны различные типы балансировщиков нагрузки. Аппаратное обеспечение (Hardware-Based) Аппаратный балансировщик нагрузки - это специализированное оборудование с установленным проприетарным программным обеспечением. Он может обрабатывать большие объемы трафика от различных типов приложений. Аппаратные балансировщики нагрузки содержат встроенные возможности виртуализации, которые позволяют использовать несколько экземпляров виртуального балансировщика нагрузки на одном устройстве. Программное обеспечение (Software-Based) Программный балансировщик нагрузки работает на виртуальных машинах или серверах белого ящика, как правило, в составе ADC (application delivery controllers - контроллеры доставки приложений). Виртуальная балансировка нагрузки обеспечивает превосходную гибкость по сравнению с физической. Программные балансировщики нагрузки работают на обычных гипервизорах, контейнерах или как процессы Linux с незначительными накладными расходами на bare metal сервере. Виртуальный (Virtual) Виртуальный балансировщик нагрузки развертывает проприетарное программное обеспечение для балансировки нагрузки с выделенного устройства на виртуальной машине для объединения двух вышеупомянутых типов. Однако виртуальные балансировщики нагрузки не могут решить архитектурные проблемы ограниченной масштабируемости и автоматизации. Облачный (Cloud-Based) Облачная балансировка нагрузки использует облачную инфраструктуру. Вот некоторые примеры облачной балансировки нагрузки: Балансировка сетевой нагрузки. Балансировка сетевой нагрузки основана на уровне 4 и использует информацию сетевого уровня, чтобы определить, куда отправлять сетевой трафик. Это самое быстрое решение для балансировки нагрузки, но ему не хватает балансировки распределения трафика между серверами. Балансировка нагрузки HTTP(S). Балансировка нагрузки HTTP(S) основана на уровне 7. Это один из наиболее гибких типов балансировки нагрузки, позволяющий администраторам принимать решения о распределении трафика на основе любой информации, поступающей с адресом HTTP. Внутренняя балансировка нагрузки. Внутренняя балансировка нагрузки почти идентична балансировке сетевой нагрузки, за исключением того, что она может балансировать распределение во внутренней инфраструктуре. Алгоритмы балансировки нагрузки Различные алгоритмы балансировки нагрузки предлагают разные преимущества и сложность в зависимости от варианта использования. Наиболее распространенные алгоритмы балансировки нагрузки: Round Robin (По-круговой) Последовательно распределяет запросы на первый доступный сервер и по завершении перемещает этот сервер в конец очереди. Алгоритм Round Robin используется для пулов равных серверов, но он не учитывает нагрузку, уже имеющуюся на сервере. Least Connections (Наименьшее количество подключений) Алгоритм наименьшего количества подключений предполагает отправку нового запроса наименее загруженному серверу. Метод наименьшего соединения используется, когда в пуле серверов много неравномерно распределенных постоянных соединений. Least Response Time (Наименьшее время отклика) Балансировка нагрузки с наименьшим временем отклика распределяет запросы на сервер с наименьшим количеством активных подключений и с самым быстрым средним временем отклика на запрос мониторинга работоспособности. Скорость отклика показывает, насколько загружен сервер. Hash (Хеш) Алгоритм хеширования определяет, куда распределять запросы, на основе назначенного ключа, такого как IP-адрес клиента, номер порта или URL-адрес запроса. Метод Hash используется для приложений, которые полагаются на сохраненную информацию о пользователях, например, тележки на веб-сайтах интернет магазинов. Custom Load (Пользовательская нагрузка) Алгоритм Custom Load направляет запросы к отдельным серверам через SNMP (Simple Network Management Protocol). Администратор определяет нагрузку на сервер, которую балансировщик нагрузки должен учитывать при маршрутизации запроса (например, использование ЦП и памяти, а также время ответа). Заключение Теперь вы знаете, что такое балансировка нагрузки, как она повышает производительность и безопасность сервера и улучшает взаимодействие с пользователем. Различные алгоритмы и типы балансировки нагрузки подходят для разных ситуаций и вариантов использования, и вы должны иметь возможность выбрать правильный тип балансировщика нагрузки для своего варианта использования.
img
Инъекции Инъекция происходит, когда злоумышленник пытается отправить данные в веб-приложение с намерением заставить его выполнить что-то, что не было предусмотрено при разработке приложения. Наиболее распространенным примером этой уязвимости является SQL-запрос, используемый с целью извлечения конфиденциальных данных организаций. Например, злоумышленник может ввести код SQL в форму, которая ожидает имя пользователя с открытым текстом. Если эта форма ввода не защищена должным образом, это приведет к выполнению этого кода базой данных. Таким образом злоумышленник может читать, изменять и удалять информацию базы данных, которая для него не предназначена. Все, что принимает параметры в качестве входных данных потенциально может быть уязвимо для атаки путем внедрения кода. Поскольку формы пользовательского ввода являются главным способом реализации таких атак, то лучшим подходом для предотвращения таких угроз является контроль и проверка пользовательского ввода. Процесс контроля направлен на проверку того, разрешен ли тип входных данных, представленных пользователем. Проверка ввода гарантирует, что это допустимый тип, формат и длинна. Обрабатывается только то значение, которое проходит проверку. Это помогает противодействовать любым командам, вставленным во входную строку. Так же для предотвращения угрозы используется функция экранирования символов для пользовательского ввода. Это делается чтобы СУБД не путала пользовательский запрос с SQL командой. Одним из лучших способов идентификации атак с использованием инъекций SQL является использование брандмауэра веб- приложений (WAF). WAF отслеживает трафик, который приходит на веб-сервер, и определяет шаблоны которые представляют угрозу. Таким образом для предотвращения данной атаки необходимо применять проверку ввода, параметризированные запросы, хранимые процедуры и экранирование в сочетании с надежным брандмауэром. Это повысит шансы успешной защиты от данной атаки. Нарушение системы аутентификации Уязвимости в системах аутентификации (входа в систему) могут предоставить злоумышленникам доступ к учетным записям пользователей и даже возможность компрометировать всю систему с помощью учетной записи администратора, Например, злоумышленник, обладая базой тысяч известных комбинаций имени пользователя и пароля, может, используя ручные или автоматические методы может выполнить атаку грубой силы. Из-за того, что многие пользователи не соблюдают требований к сложности пароля и веб-сервис не ограничивает количество попыток ввода пароля, злоумышленник может без труда получить доступ к интересующей его учетной записи. Для уменьшения вероятности успеха данной атаки рекомендуется применять многофакторную аутентификацию, чтобы предотвратить автоматизированный ввод данных, проверку на сложность пароля, а также ограничение или задержку повторных попыток входа. Практически полностью уменьшить вероятность такой угрозы может применение аутентификации по токенам. Незащищенность конфиденциальных данных Уязвимость конфиденциальных данных является одной из наиболее распространенных уязвимостей в списке OWASP. Уязвимость заключается в доступности критичных данных, которые должны быть защищены. Если веб-приложение не защищают конфиденциальные данные, такие как финансовая информация, медицинская информация и пароли, злоумышленники могут получить доступ к этим данным и использовать их в своих целях. Плохая реализация криптографической защиты информации и использование небезопасных протоколов основные причины популярности данной угрозы. Одним из популярных способов кражи конфиденциальной информации является реализация атаки "человек посередине". Такая атака осуществляется, когда злоумышленник подключается между веб-браузером и веб-сервисом и перехватывает или изменяет соединение. Затем злоумышленник может просматривать весь трафик и собирать информацию или выдавать себя за одну из двух сторон. Например, злоумышленник может находиться между пользователем и веб-сервисом, который пользователь собирается посетить и собирать его данные для входа. Это можно сделать с помощью перехвата HTTP-соединения между пользователем и веб-сервисом. Захват этого соединения позволяет действовать злоумышленнику как прокси-сервер, собирая и изменяя информацию, передаваемую между пользователем и сайтом. Кроме того, злоумышленник может украсть файлы cookie пользователя. Это небольшие фрагменты данных, созданные веб-сайтом и хранящиеся на компьютере пользователя для идентификации и других целей. Такие файлы могут быть использованы для захвата сеанса пользователя, позволяя злоумышленнику выдавать себя за этого пользователя. Отсутствие шифрования конфиденциальных данных является основной причиной, по которой эти атаки все еще широко распространены. Риск несанкционированного получения данных может быть сведен к минимуму путем шифрования всех конфиденциальных данных, а также отключение временного хранения конфиденциальной информации для повторного использования. Одним из способов защиты передаваемых данных является наличие на веб-сервисе сертификата SSL (Secure Sockets Layer). Это стандартная технология безопасности для установления зашифрованного канала связи между веб-сервисом и браузером. Данный сертификат помогает обеспечить целостность передаваемых данных при передаче между веб-сервером и клиентом. Более новой и надежной версией протокола SSL является протокол TLS. Также для защиты от таких атак используют протокол HTTP Strict Transport Security (HSTS), который обеспечивает безопасное соединение SSL/TLS с любым браузером или приложением, блокируя любые незащищенные HTTP соединения, а также предотвращает кражу cookie. Кроме того, администраторы и разработчики веб-сервисов следует не использовать лишнюю конфиденциальную информацию. Нарушение контроля доступа Управление доступом позволяет разграничивать доступ к информации или функциям для разных пользователей. Если управление доступом нарушено, злоумышленник, имеющий доступ к учетной записи, может использовать привилегии, которые не предназначены для этой учетной записи. Это позволяет обычной учетной записи читать и копировать файлы, которые должны быть доступны только администратору. Неправильная настройка элемента управления доступом позволяет злоумышленникам обходить авторизацию и выполнять задачи, которые доступны только привилегированным пользователям, администраторам. Например, веб-приложение может позволить пользователю изменить учетную запись, в которую он вошел, просто изменим часть url-адреса без какой-либо другой проверки. Это происходит из-за неправильной конфигурации или вовсе отсутствия настройки прав на администрирование и управление приложением. Предоставляя глобальный доступ к панели управления хостингом, серверу через FTP/SSH, базе данных или другим приложениям на сервере мы открываем доступ к функциям или просмотру конфиденциальных данных и файлов. Для снижения рисков использования нарушенного контроля доступа рекомендуется предоставление только необходимые функции для выполнения задачи и только в течение времени, необходимого для выполнения указанной задачи, применение многофакторной аутентификации ко всем возможным точкам доступа, аудит веб-сервера, удаление не использующихся служб и учетных записей. Для предотвращения нарушения доступа необходимо запретить глобальный доступ к функциям управления сервером. Каждый пользователь должен иметь доступ только к его информации. Небезопасная конфигурации Наличие безопасной конфигурации всех компонентов инфраструктуры требуется для безопасности веб-сервера. Небезопасные и уязвимые компоненты могут быть представлены в различных формах: фреймворки, веб-серверы, сервер баз данных, сетевые службы и сами приложения. По умолчанию настройки компонентов сервера в своем большинстве небезопасны и это открывает злоумышленникам поле для атаки. Например, использование настроек по умолчанию в серверах баз данных может привести к доступу ка закрытой службе через публичный IP-адрес, что в сумме с использованием установленным производителем по умолчанию паролем чревато очень серьезными проблемами с утечкой или потерей критичных, или конфиденциальных данных. Злоумышленник сможет изменять и читать данные в числе которых могут быть выводимые браузером данные для пользователя или же сессионные cookies, утечка которых может привести к использованию злоумышленником платежных данных пользователей или же другой секретной информации. Ежедневно исследователи находят уязвимости в системах и компонентах. От уязвимостей нулевого дня трудно защититься. Уязвимость нулевого дня является ошибкой при разработке программного обеспечения, которая несет угрозу безопасности программного обеспечения. Термин "нулевой день" относится к недавно обнаруженной уязвимости программного обеспечения. Поскольку разработчик не знает о возможной уязвимости при проектировании ПО то, когда он узнает о найденном недостатке неожиданно, разработчик не имеет возможности сразу исправить эту уязвимость, так как для этого нужно подготовить официальный патч или обновление для исправления проблемы. У разработчика есть "ноль дней" чтобы исправить проблему, которая была обнаружена и возможно уже используется злоумышленниками, чтобы успеть защитить своих пользователей. Использование небезопасных компонентов приводит к краже и широкомасштабным атакам. Когда приложение использует небезопасные компоненты, злоумышленники могут узнать все, что им нужно знать о серверах, компонентах и многом другом. Поэтому необходимо постоянно проверять актуальность программного обеспечения, так как уязвимости могут быть обнаружены в самых разных программных компонентах таких как сервера, базы данных и операционной системе. Для предотвращения угроз, связанных с использованием неправильной конфигурации системы, следует использовать только необходимые компоненты и функции, автоматизировать процесс для проверки эффективности конфигураций и параметров во всех средах, использовать методы сегментации и контейризации для ограничения поверхности атаки. Межсайтовое выполнение сценариев XSS (Cross Site Scripting) Межсайтовое выполнение сценариев это широко распространенная уязвимость, которая затрагивает многие веб-приложения. XSS-атаки состоят из внедрения вредоносных клиентских сценариев на веб-сайт и использование ве-сайта в качестве распространения. Риск XSS заключается в том, что он позволяет злоумышленнику вводить контент на веб-сайт и изменять способ его отображения, заставляя браузер жертвы выполнять код, предоставленный злоумышленником во время загрузки страницы. Такие уязвимости возникают, когда веб-приложение позволяет пользователям добавлять пользовательский код в URL-ссылку или на веб-сайт, который будет виден другим пользователям. Эта уязвимость может быть использована для запуска вредоносного кода JavaScript в браузере жертвы. XSS-атаки не направлены на конкретную цель. Злоумышленник просто использует уязвимость сайта или приложения, внедряя код через случайного пользователя и далее этот сайт или приложение становится центром рассылки вредоносных сценариев для множества других пользователей. Например, злоумышленник может отправить жертве электронное письмо, которые выглядит как официальное письмо от банка с ссылкой на веб-сайт этого банка. Однако эта ссылка может иметь какой-то вредоносный код JavaScript, оставленный в конце URL-адреса. Если сайт банка не будет должным образом защищен от межсайтового выполнения сценариев, то этот вредоносный код будет запущен в веб-браузере жертвы, когда он пройдет по ссылке. Уязвимость XSS дает злоумышленнику почти полный контроль на самым важным программным обеспечением компьютеров в настоящее время браузерами. Существует три типа межсайтовых скриптовых атак: Хранимые XSS (постоянные). Наиболее опасный тип уязвимостей, так как злоумышленник получает доступ к серверу и уже с него может управлять вредоносным кодом. Вредоносный код постоянно хранится на целевом сервере и выполняется каждый раз при обращении к сервису. Это может произойти на любых страницах с вводом данных пользователей, например, в полях комментариев, базе данных и может быть встроен как текст картинки, или рисунки. Отраженные XSS (непостоянные). Отраженная атака происходит, когда вредоносный сценарий не хранится на сервере, а содержится во входных данных, отправленных от пользователя к серверу. Это атака реализуется путем отправки жертве ссылки, содержащей вредоносный сценарий, на электронную почту или другим способом. Проходя по ссылке, жертва отправляет запрос с вредоносным кодом к серверу, который автоматически берет данные из вредоносной строки и отправляет модифицированный ответ жертве. В итоге браузер жертвы распознает запрос как надежный и выполняет вредоносный скрипт. DOM-модели. Третий тип атаки, известный как атака на основе DOM (Document Object Model) не является распространённой, но может произойти. Атака происходит, когда среда DOM изменяется в веб-браузере жертве и приводит к запуску вредоносного кода на стороне клиента. Атаки на основе DOM отличаются тем, что они используют уязвимости на стороне клиента, а не на стороне сервера. Для снижения рисков XSS-атаки используются межсетевые экраны, которые помогают смягчить такие атаки. Также для предотвращения таких атак рекомендуется осуществлять экранирование ненадежных данных HTTP-запроса или же использовать фреймворки, которые автоматически экранируют XSS. Небезопасная дессериализация Эта угроза нацелена на многие веб-приложения, которые часто сериализиуют или дессериализуют данные. Сериализация означает получение объектов из кода приложения и преобразование их в формат, который может использоваться для других целей, таких как хранение данных на диске или их потоковая передача. Дессериализация это обратное действие, преобразование сериализованных данных обратно в объекты, которые может использовать приложение. Когда поток данных преобразуется в объекты, вредоносные или измененные объекты могут вызвать серьезные проблемы безопасности. Небезопасное осуществление десериализации является результатом десериализации данных из ненадежных источников и может привести к серьезным последствиям, таким как DDoS-атака, удаленное выполнение кода и запуска программ. Несмотря на то, что можно предотвратить такие уязвимости используя мониторинг и проверку типов, единственным надежным способом защиты от атак десериализации является запрет десериализации из ненадежных источников. Если же это сделать невозможно, то для предотвращения таких атак также может быть осуществлена проверка целостности, например, при помощи цифровой подписи, применение строгих ограничений типа при создании объектов. Также изолирование и выполнение кода, который десериализуется в средах с низким уровнем привилегий. Использование компонентов с известными уязвимостями Значительная часть веб-сервисов состоит из множества специальных компонентов, такие как библиотеки и фреймворки (англ. - framework), которые поставляются сторонними компаниями. Эти компоненты являются частями программного обеспечения, которые помогают разработчикам сократить время, избежать выполнения избыточной работы и обеспечить необходимую функциональность. Например, популярный фреймворк, применяемый для разработки интерфейсов React или же библиотеки для проведения тестирования. Злоумышленники постоянного ищут уязвимости в таких компонентах и потом используют для организации атак. Обнаружив уязвимость в безопасности одного из компонентов приложения, злоумышленник может сделать уязвимыми сотни тысяч веб-сервисов. Разработчики компонентов часто выпускают обновления для устранения известных уязвимостей, однако администраторы и разработчики не всегда имеют возможность обновить компоненты до последней версии. Чтобы свести к минимуму риск запуска компонентов с известными уязвимостями, разработчикам следует удалять неиспользуемые компоненты из своих проектов, а также проверять актуальность обновлений и получать их от надежных источников. Недостаточный мониторинг и логирование Большинство веб-сервисов не предпринимают достаточных шагов для обнаружения нарушений безопасности данных. Среднее время обнаружения нарушений составляет около 200 дней после того, как оно произошло. Это дает злоумышленникам много времени, чтобы нанести ущерб, прежде чем происходит какая-то реакция. Логирование и мониторинг необходим, чтобы оставаться в курсе любых подозрительных изменений приложения.
img
Первоначально BGP был разработан как протокол Внешнего шлюза (Exterior Gateway Protocol - EGP), что означает, что он предназначался для подключения сетей или автономных систем (AS), а не устройств. Если BGP является EGP, это должно означать, что другие протоколы маршрутизации, такие как RIP, EIGRP, OSPF и IS-IS, должны быть протоколами внутренних шлюзов (Interior Gateway Protocols- IGP). Четкое определение внутренних и внешних шлюзов оказалось полезным при проектировании и эксплуатации крупномасштабных сетей. BGP является уникальным среди широко распространенных протоколов в том, что касается расчета пути без петель. Существует три широко используемых протокола векторов расстояний (Spanning Tree, RIP и EIGRP). Существует два широко используемых протокола состояния канала связи (OSPF и IS-IS). И есть еще много примеров этих двух типов протоколов, разработанных и внедренных в то, что можно было бы считать нишевыми рынками. BGP, однако, является единственным широко развернутым протоколом вектора пути. Каковы наиболее важные цели EGP? Первый - это, очевидно, выбор путей без петель, но это явно не означает кратчайшего пути. Причина, по которой кратчайший путь не так важен в EGP, как в IGP, заключается в том, что EGP используются для соединения объектов, таких как поставщики услуг, поставщики контента и корпоративные сети. Подключение сетей на этом уровне означает сосредоточение внимания на политике, а не на эффективности - с точки зрения сложности, повышение состояния с помощью механизмов политики при одновременном снижении общей оптимизации сети с точки зрения передачи чистого трафика. BGP-пиринг BGP не обеспечивает надежной передачи информации. Вместо этого BGP полагается на TCP для передачи информации между одноранговыми узлами BGP. Использование TCP гарантирует: Обнаружение MTU обрабатывается даже для соединений, пересекающих несколько переходов (или маршрутизаторов). Управление потоком осуществляется базовым транспортом, поэтому BGP не нуждается в непосредственном управлении потоком (хотя большинство реализаций BGP действительно взаимодействуют со стеком TCP на локальном хосте, чтобы повысить пропускную способность, в частности, для BGP). Двусторонняя связь между одноранговыми узлами обеспечивается трехсторонним рукопожатием, реализованным в TCP. Несмотря на то, что BGP полагается на базовое TCP-соединение для многих функций, которые плоскости управления должны решать при построении смежности, по-прежнему существует ряд функций, которые TCP не может предоставить. Следовательно, необходимо более подробно рассмотреть процесс пиринга BGP. Рисунок 1 позволяет изучить этот процесс. Сеанс пиринга BGP начинается в состоянии ожидания (idle state). A отправляет TCP open на порт 179. B отвечает на временный порт (ephemeral port) на A. После завершения трехстороннего подтверждения TCP (сеанс TCP успешен), BGP перемещает состояние пиринга для подключения. Если пиринговый сеанс формируется через какой-либо тип фильтрации на основе состояния, такой как брандмауэр, важно, чтобы открытое TCP-сообщение передавалось «изнутри» фильтрующего устройства. В случае сбоя TCP-соединения состояние пиринга BGP переводится в активное. A отправляет BGP open в B и переводит B в состояние opensent. В этот момент A ожидает от B отправки сообщения keepalive. Если B не отправляет сообщение keepalive в течение определенного периода, A вернет сеанс обратно в состояние ожидания (idle state). Открытое сообщение содержит ряд параметров, например, какие семейства адресов поддерживают два спикера BGP и hold timer. Это называется согласованием возможностей. Самый низкий (минимальный) hold timer из двух объявленных выбирается в качестве hold timer для однорангового сеанса. Когда B отправляет A сообщение keepalive, A переводит B в состояние openconfirm. На этом этапе A отправит B сообщение keepalive для проверки соединения. Когда A и B получают сообщения поддержки активности друг друга, пиринговый сеанс переходит в established state. Два узла BGP обмениваются маршрутами, поэтому их таблицы обновлены. A и B обмениваются только своими лучшими путями, если какая-либо форма многонаправленного распространения BGP не поддерживается и не настроена на двух спикерах. Чтобы уведомить A, что он завершил отправку всей своей локальной таблицы, B отправляет A сигнал End of Table (EOT) или End of RIB (EOR). Существует два типа пиринговых отношений BGP: одноранговые узлы BGP в одной и той же автономной системе (AS, что обычно означает набор маршрутизаторов в одном административном домене, хотя это довольно общее определение) называются внутренними одноранговыми узлами BGP (internal BGP - iBGP) и Одноранговые узлы BGP между автономными системами называются внешними (или внешними - exterior) узлами BGP (eBGP). Хотя два типа пиринговых отношений BGP построены одинаково, у них разные правила объявления. Процесс выбора оптимального пути BGP Поскольку BGP предназначен для соединения автономных систем, алгоритм наилучшего пути ориентирован в первую очередь на политику, а не на отсутствие петель. Фактически, если вы изучите какое-либо стандартное объяснение процесса наилучшего пути BGP, то, является ли конкретный путь свободным от петель, вообще не будет учитываться в процессе принятия решения. Как же тогда BGP определяет, что конкретный узел объявляет маршрут без петель? Рисунок 2 демонстрирует это. На рисунке 2 каждый маршрутизатор находится в отдельной AS, поэтому каждая пара спикеров BGP будет формировать сеанс пиринга eBGP. A, который подключен к 2001: db8: 3e8: 100 :: / 64, объявляет этот маршрут к B и C. Объявления маршрута BGP несут ряд атрибутов, одним из которых является путь AS. Перед тем, как A объявит 100 :: / 64 для B, он добавляет свой номер AS в атрибут AS Path. B получает маршрут и объявляет его D. Перед объявлением маршрута к D он добавляет AS65001 к AS Path. Тогда путь AS, прослеживающийся от A до C, на каждом шаге выглядит примерно так: Получено B: [AS65000] Получено C: [AS65000, AS65001] Получено D: [AS65000, AS65001, AS65003] Когда D получил маршрут от B, он анонсирует его обратно в C (в BGP нет split horizon). Предположим, что C, в свою очередь, объявляет обратный маршрут к A по какой-то причине (в этой ситуации это не так, потому что путь через A был бы лучшим путем к месту назначения, а просто для демонстрации предотвращения петель), A будет проверять AS Path и обнаружение его локальной AS находится в AS Path. Это явно петля, поэтому A просто игнорирует маршрут. Поскольку этот маршрут игнорируется, он никогда не помещается в таблицу топологии BGP. Следовательно, с использованием процесса наилучшего пути BGP сравниваются только маршруты без петель. В большинстве реализаций процесс наилучшего пути BGP состоит из 13 шагов (первый шаг реализуется не всегда, так как это локальное решение со стороны узла BGP): Выбирается маршрут с наибольшим весом. Некоторые реализации не используют вес маршрута. Выбирается маршрут с наивысшим местным предпочтением (local preference- LOCAL PREF). Local preference собой политику выхода локальной AS - какую точку выхода из доступных точек выхода предпочел бы владелец этой AS, как и узел BGP. Предпочитайте маршрут с локальным происхождением, то есть на этом узле BGP. Этот шаг редко используется в процессе принятия решения. Предпочитайте путь с самым коротким AS Path. Этот шаг предназначен для выбора наиболее эффективного пути через объединенную сеть, выбора пути, который будет проходить через наименьшее количество автономных систем для достижения пункта назначения. Операторы часто добавляют записи AS Path, чтобы повлиять на этот шаг в процессе принятия решения. Предпочитайте путь с наименьшим значением координат. Маршруты, которые перераспределяются из IGP, предпочтительнее маршрутов с неизвестным происхождением. Этот шаг редко оказывает какое - либо влияние на процесс принятия решений. Предпочитайте путь с самым низким multiexit discriminator (MED). MED представляет входную политику удаленной AS. Таким образом, MED сравнивается только в том случае, если от одной и той же соседней AS было получено несколько маршрутов. Если один и тот же маршрут получен от двух разных соседних автономных систем, MED игнорируется. Предпочитайте маршруты eBGP маршрутам iBGP. Предпочитайте маршрут с наименьшей стоимостью IGP до следующего перехода. Если политика локального выхода не задана (в форме локального предпочтения), и соседняя AS не установила политику входа (в форме MED), то путь с ближайшим выходом из локального маршрутизатора выбирается как точка выхода. Определите, следует ли устанавливать несколько путей в таблице маршрутизации (настроена некоторая форма multipath). При сравнении двух внешних маршрутов (полученных от однорангового узла eBGP) предпочтите самый старый маршрут или маршрут, изученный первым. Это правило предотвращает отток маршрутов только потому, что маршруты обновляются. Предпочитайте маршрут, полученный от однорангового узла с наименьшим идентификатором маршрутизатора. Это просто средство разрешения конфликтов для предотвращения оттока в таблице маршрутизации. Предпочитайте маршрут с наименьшей длиной кластера. Предпочитайте маршрут, полученный от однорангового узла с наименьшим адресом пиринга. Это, опять же, просто тай-брейк, выбранный произвольно, чтобы предотвратить ненужные связи и вызвать отток в таблице маршрутизации, и обычно используется, когда два одноранговых узла BGP соединены по двум параллельным каналам. Хотя это кажется долгим процессом, почти каждое решение наилучшего пути в BGP сводится к четырем факторам: локальному предпочтению (local preference), MED, длине AS Path и стоимости IGP. Правила объявления BGP BGP имеет два простых правила для определения того, где объявлять маршрут: Объявляйте лучший путь к каждому пункту назначения каждому узлу eBGP. Объявляйте лучший путь, полученный от однорангового узла eBGP, для каждого однорангового узла iBGP. Еще один способ сформулировать эти два правила: никогда не объявлять маршрут, полученный от iBGP, другому узлу iBGP. Рассмотрим рисунок 3. На рисунке 3 A и B - это одноранговые узлы eBGP, а B и C, а также C и D - одноранговые узлы iBGP. Предположим, A объявляет 2001: db8: 3e8: 100 :: / 64 для B. Поскольку B получил это объявление маршрута от однорангового узла eBGP, он объявит 100 :: / 64 на C, который является одноранговым узлом iBGP. C, изучив этот маршрут, не будет объявлять маршрут к D, поскольку C получил маршрут от однорангового узла iBGP, а D также является одноранговым узлом iBGP. Таким образом, на этом рисунке D не узнает о 100 :: / 64. Это не очень полезно в реальном мире, однако ограничение присутствует не просто так. Рассмотрим, как BGP предотвращает образование петель маршрутизации - передавая список автономных систем, через которые прошел маршрут, в самом объявлении маршрута. При объявлении маршрута от одного спикера iBGP к другому AS Path не изменяется. Если узлы iBGP объявляют маршруты, полученные от одноранговых узлов iBGP, одноранговым узлам iBGP, петли маршрутизации могут быть легко сформированы. Одним из решений этой проблемы является простое построение многоуровневых пиринговых отношений между B и D (помните, что BGP работает поверх TCP. Пока существует IP-соединение между двумя узлами BGP, они могут построить пиринговые отношения). Предположим, что B строит пиринговые отношения с D через C, и ни B, ни D не строят пиринговые отношения с C. Что произойдет, когда трафик переключается на 100 :: / 64 посредством D на C? Что будет с пакетами в этом потоке на C? У C не будет маршрута к 100 :: / 64, поэтому он сбросит трафик. Это может быть решено несколькими способами - например, B и D могут туннелировать трафик через C, поэтому C не обязательно должен иметь доступность к внешнему пункту назначения. BGP также можно настроить для перераспределения маршрутов в любой основной запущенный IGP (это плохо - не делайте этого). Для решения этой проблемы были стандартизированы рефлекторы маршрутов BGP. Рисунок 4 иллюстрирует работу отражателей маршрута. На рисунке 4 E сконфигурирован как рефлектор маршрута. B, C и D настроены как клиенты рефлектора маршрутов (в частности, как клиенты E). A объявляет маршрут 2001: db8: 3e8: 100 :: / 64 к B. B объявляет этот маршрут E, потому что он был получен от однорангового узла eBGP, а E является одноранговым узлом iBGP. E добавляет новый атрибут к маршруту, список кластеров, который указывает путь обновления в AS через кластеры отражателя маршрута. Затем E объявит маршрут каждому из своих клиентов. Предотвращение зацикливания в этом случае обрабатывается списком кластеров. Подведение итогов о BGP Хотя изначально BGP был разработан для соединения автономных систем, его использование распространилось на центры обработки данных, передачу информации о виртуальных частных сетях. Фактически, использование BGP практически безгранично. Постепенно BGP превратился в очень сложный протокол. BGP можно описать как: Проактивный протокол, который узнает о достижимых местах назначения через конфигурацию, локальную информацию и другие протоколы. Протокол вектора пути, который объявляет только лучший путь к каждому соседу и не предотвращает образование петель в автономной системе (если не развернуты рефлекторы маршрута или какая-либо дополнительная функция) Выбор путей без петель путем изучения пути, по которому может быть достигнут пункт назначения Проверка двустороннего подключения и MTU за счет использования TCP в качестве основы для передачи информации.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59