В чем разница между балансировкой нагрузки между доменами и внутридоменами?

Итак, я прочитал, что когда маршрутизатор знает два пути с равной стоимостью назначения, он может выполнять балансировку нагрузки. Эта балансировка нагрузки происходит междоменной или внутридоменной. Я не могу раскрыть это, потому что я знаю, что BGP выбирает «маленький» IP-адрес, когда два пути имеют одинаковую стоимость.

2 голоса | спросил R. Luis 24 J0000006Europe/Moscow 2016, 23:29:07

2 ответа


5

Чтобы ответить на этот вопрос, мы должны определить термин «домен». Легко говоря, Интернет - это сеть сетей. В терминологии BGP существует множество автономных систем (AS) в Интернете, каждая из которых является сетью (или доменом). Одна компания, например, может иметь очень большую сеть, но представлена ​​единой AS, следовательно, это единственный «узел» в BGP.

Термин междоменная маршрутизация описывает процесс маршрутизации префиксов между автономными системами, где intradomain routing относится к маршрутизации внутри одной AS.

Я не уверен, однако, что вы имеете в виду с последним предложением. Когда два пути к одному и тому же пункту назначения имеют одинаковую стоимость (то есть в большинстве базовых BGP длина пути AS, следовательно, количество AS, с которым пересек маршрут). Подробное обсуждение того, как BGP выбирает пути, выглядит, например, на этом документ Cisco .

Обновление

Как оказалось в комментариях, я мог бы неправильно интерпретировать вопрос OP. Фактически возникает вопрос, как выполняется балансировка нагрузки и где различия в балансировке нагрузки в общих междоменных маршрутных протоколах и внутридоменных протоколах маршрутизации.

Междоменная маршрутизация

BGP, являясь стандартом де-факто для междоменной маршрутизации, по умолчанию не выполняет балансировку нагрузки. Однако он может быть настроен для этого. Здесь есть два основных варианта:

  1. Настройка BGP для сопряжения с использованием loopback-интерфейса и использование некоторой неуправляемой маршрутизации (например, статической маршрутизации или другого внутреннего протокола маршрутизации) для обеспечения равных путей к противоположной стороне, что эффективно активирует балансировку нагрузки
  2. Использование многопутевой функции BGP, которая, однако, немного сложнее. Нужно учитывать, следует ли балансировку нагрузки выполнять с помощью iBGP (внутренний) или eBGP (внешний) одноранговый узел или, возможно, оба. Чтобы быть кандидатами на многолучевое распространение, маршруты должны быть равны по следующим атрибутам:
    • Вес
    • Локальные предпочтения
    • Длина AS-PATH
    • Происхождение
    • MED

Вы можете найти подробную информацию о многопутеризации BGP, выполнив поиск по этому ключевому слову или взглянув на это документ Cisco .

Маршрутизация внутридоменов

Большинство внутренних протоколов маршрутизации поддерживают упрощение балансировки нагрузки. Как только используется одна метрика, в таблицу маршрутизации можно установить несколько маршрутов с равными затратами. Например, OSPF использует до четырех маршрутов равной стоимости. Другие протоколы маршрутизации, такие как EIGRP, могут даже неравномерно распределять затраты. Обратитесь к определению фактического протокола маршрутизации, чтобы узнать их поведение по умолчанию.

Заключительное предложение

Сделать ясно: до протокола маршрутизации можно использовать равные пути или нет. В любом случае, если есть равные пути, оба пути устанавливаются в локальную таблицу переадресации на маршрутизаторе, а другие, а не на протоколы определенного протокола, механизмы, такие как CEF на маршрутизаторах Cisco, используются для фактической балансировки нагрузки.

ответил waza-ari 24 J0000006Europe/Moscow 2016, 23:39:58
3

Два пути с равной стоимостью часто называют механизмом многолучевости (ECMP) с равным затратом. ECMP часто работает хорошо, но есть несколько предостережений. Прежде чем вы столкнетесь с проблемой работы BGP по параллельным ссылкам, важно посмотреть, как трафик делится на несколько параллельных ссылок.

Самый простой способ сделать это - передать пакет 1 по ссылке A, пакет 2 по ссылке B, пакет 3 по ссылке A снова, пакет 4 по ссылке B и т. д. Это балансировка загрузки пакетов. Проблема с балансировкой нагрузки по каждому пакету заключается в том, что когда пакеты 1, 3 и 4 представляют собой 1500-байтовые пакеты данных, принадлежащие к одному и тому же сеансу TCP, но пакет 2 представляет собой небольшой пакет TCP ACK, пакет 3 должен ждать пакет 1 для передачи, но пакет 4 не должен ждать почти столько же времени за гораздо более коротким пакетом 2, поэтому пакет 4 заканчивается передачей перед пакетом 3.

Таким образом, балансировка нагрузки на пакет вызывает переупорядочение. Теоретически это прекрасно, поскольку TCP просто буферизирует переупорядоченные пакеты и доставляет данные внутри получающему приложению в правильном порядке. Однако прием пакетов не соответствует порядку, и TCP считает, что произошла потеря пакетов, поэтому он повторно передает пакеты и замедляет скорость передачи. Чтобы избежать таких проблем, маршрутизаторы и коммутаторы работают, чтобы убедиться, что все пакеты, принадлежащие одному сеансу TCP (или потоку UDP), передаются по одной и той же ссылке. Конечно, это, в свою очередь, имеет недостаток, что один сеанс TCP может использовать только одну ссылку; поэтому ECMP полезен только в том случае, если трафик состоит из нескольких сеансов TCP.

Маршрутизаторы и коммутаторы обычно не в состоянии отслеживать отдельные сеансы TCP, поэтому их пакеты могут передаваться по одной и той же ссылке. Вместо этого они просматривают несколько полей в заголовках IP /TCP /UDP /ICMP и групповых пакетов вместе на основе содержимого этих полей. Некоторые коммутаторы не могут даже заглянуть внутрь IP-заголовка и, таким образом, выполнять балансировку нагрузки на основе MAC-адресов Ethernet. Это не работает так хорошо, потому что таким образом весь трафик между двумя маршрутизаторами передается по одной и той же ссылке.

Более гранулированный способ балансировки нагрузки основан на 3-кортеже: номер протокола в заголовке IP (т. е. TCP, UDP, ICMP, ...) и IP-адрес источника и адреса назначения. Это работает лучше, чем просто использование MAC-адресов для определения того, какие пакеты должны передаваться по одной и той же ссылке. Лучший способ выполнения ECMP - использовать 5-кортеж: номер протокола, IP-адреса и номера портов источника и назначения TCP или UDP. Маршрутизаторы и коммутаторы, реализующие ECMP, вычисляют хэш-функцию по этим полям, а затем используют (часть) получающееся хеш-значение для выбора ссылки для передачи пакета. (См. RFC 2992 ) Поскольку поля в 5-кортеже одинаковы для всех пакетов, принадлежащих тот же сеанс и, таким образом, хеш-то же самое, все пакеты, принадлежащие к одному и тому же сеансу, заканчиваются тем же соединением. Это хорошо работает, но на практике все равно может потребоваться до тысячи сеансов TCP, прежде чем все ссылки будут использованы одинаково.

Прежде чем алгоритм ECMP может распространять пакеты по параллельным ссылкам, протоколы маршрутизации, такие как BGP , должны быть сначала убеждены в использовании нескольких ссылок в параллели. Существует три способа взаимодействия BGP и ECMP:

  • Объединение ссылок на уровне Ethernet с использованием IEEE 802.3ad или EtherChannel
  • С одним сеансом BGP по нескольким ссылкам с использованием обратных адресов
  • С отдельным сеансом BGP по каждой из параллельных ссылок

Для балансировки нагрузки следующие атрибуты пути должны быть одинаковыми для префиксов, полученных в параллельных сеансах BGP:

    вес литий>
  • местные предпочтения
  • Длина пути AS
  • Происхождение
  • MED

соседний AS или весь путь AS (в зависимости от версии IOS) Использование отдельного сеанса BGP для каждой из параллельных ссылок использует большепамяти и процессора, поэтому, в общем, это не самый предпочтительный вариант. Однако этот параметр имеет важное преимущество: в отличие от двух других параметров, этот также работает, если ссылки подключаются к другим маршрутизаторам с другой стороны, если перечисленные выше атрибуты одинаковы.

ответил Dgitsss 29 J0000006Europe/Moscow 2016, 12:53:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132