Введение
Коммутатор с балансировкой нагрузки — это архитектура коммутатора, гарантирующая 100% пропускную способность без какого-либо центрального арбитража, но за счет двойной передачи каждого пакета через коммутационную матрицу. Коммутаторы с балансировкой нагрузки являются объектом исследований для крупных маршрутизаторов, масштабируемых за пределы возможностей практического центрального арбитража.
Введение
Интернет-маршрутизаторы обычно строятся на основе линейных карт, соединенных с коммутатором. Маршрутизаторы, поддерживающие умеренную общую пропускную способность, могут использовать шину в качестве коммутатора, но маршрутизаторы с высокой пропускной способностью обычно используют перекрестную коммутацию. В перекрестной коммутации каждый выход соединен с одним входом, что позволяет информации проходить через каждый выход одновременно. Перекрестные коммутаторы, используемые для коммутации пакетов, обычно переконфигурируются десятки миллионов раз в секунду. Расписание этих переконфигураций определяется центральным арбитром, например, арбитром Wavefront, в ответ на запросы линейных карт о передаче информации друг другу. Идеальная арбитрация привела бы к пропускной способности, ограниченной только максимальной пропускной способностью каждого входа или выхода перекрестного коммутатора. Например, если весь трафик, поступающий на линейные карты A и B, предназначен для линейной карты C, то максимальный трафик, который карты A и B могут обработать совместно, ограничен пропускной способностью C. Показано, что идеальная арбитрация требует огромного объема вычислений, который масштабируется значительно быстрее, чем количество портов на перекрестном коммутаторе. Практические системы используют неидеальные эвристики арбитрации (например, iSLIP), которые могут быть вычислены за разумное время. Коммутатор с балансировкой нагрузки не следует путать с коммутатором балансировки нагрузки, который представляет собой тип маршрутизатора, используемый в качестве фронтенда для фермы веб-серверов для распределения запросов к одному веб-сайту по нескольким серверам.
Основная архитектура
Как показано на рисунке справа, коммутатор с балансировкой нагрузки имеет N входных линейных карт, каждая из которых имеет пропускную способность R, и каждая из них соединена с N буферами по каналу пропускной способностью R/N. Эти буферы, в свою очередь, соединены с N выходными линейными картами, каждая из которых имеет пропускную способность R, по каналам пропускной способностью R/N. Буферы в центре разделены на N виртуальных выходных очередей. Каждая входная линейная карта равномерно распределяет свои пакеты по N буферам, что она может делать без конфликтов. Каждый буфер записывает эти пакеты в единую локальную буферную память с общей пропускной способностью R. Одновременно каждый буфер отправляет пакеты из головы каждой виртуальной выходной очереди на каждую выходную линейную карту, опять же со скоростью R/N на каждую карту. Выходная линейная карта может четко пересылать эти пакеты по линии без конфликтов. Каждый буфер в коммутаторе с балансировкой нагрузки действует как коммутатор с общей памятью, а коммутатор с балансировкой нагрузки по сути является способом масштабирования коммутатора с общей памятью, за счет дополнительной задержки, связанной с пересылкой пакетов со скоростью R/N дважды. Исследовательская группа Стэнфорда, изучающая коммутаторы с балансировкой нагрузки, сосредоточена на реализациях, где количество буферов равно количеству линейных карт. На каждую линейную карту помещается один буфер, и две взаимосвязанные сети фактически представляют собой одну и ту же сеть, обеспечивая пропускную способность 2R/N между каждой парой линейных карт. Однако базовая архитектура коммутатора с балансировкой нагрузки не требует размещения буферов на линейных картах или одинакового количества буферов и линейных карт. Одно из интересных свойств коммутатора с балансировкой нагрузки заключается в том, что, хотя сеть, соединяющая линейные карты с буферами, должна соединять каждую линейную карту с каждым буфером, нет требования, чтобы эта сеть действовала как неблокирующая кросс-шина, или чтобы соединения реагировали на какую-либо модель трафика. Такое соединение намного проще, чем кросс-шина с централизованным арбитражем.
Содержание пакетов в порядке
Если два пакета, предназначенных для одного и того же выходного порта, поступают последовательно на одну линейную карту, они будут распределены по двум разным буферам, которые могут иметь разную степень заполнения, и, следовательно, пакеты могут быть переупорядочены к моменту их передачи на выход. Хотя переупорядочение допустимо, оно обычно нежелательно, поскольку TCP плохо работает с переупорядоченными пакетами. Добавляя дополнительную задержку и буферизацию, коммутатор с балансировкой нагрузки может сохранять порядок пакетов в потоках, используя только локальную информацию. Одним из таких алгоритмов является FOFF (Fully Ordered Frames First). FOFF имеет дополнительные преимущества, такие как устранение уязвимости к неблагоприятным шаблонам трафика и предоставление механизма для реализации приоритетов.
Однокристальный перекрестный столб с балансировкой нагрузки
Проект Стэнфордского университета Tiny Tera (см. Abrizio) представил архитектуру коммутатора, для реализации переключающей ткани которой требовалось как минимум два чипа (сегмент кроссбара и арбитр). Модернизация арбитра с добавлением балансировки нагрузки и объединение этих устройств могли бы обеспечить преимущества в плане надежности, стоимости и пропускной способности.
Один глобальный маршрутизатор
Поскольку линейные карты в коммутаторе с балансировкой нагрузки не обязаны физически находиться рядом друг с другом, одним из возможных вариантов реализации является использование континентальной или глобальной магистральной сети в качестве сети взаимосвязи, а ядра маршрутизаторов – в качестве "линейных карт". Такая реализация приводит к увеличению всех задержек до удвоенной максимальной задержки передачи. Однако она обладает рядом интересных преимуществ:
Большие магистральные пакетные сети обычно имеют значительный избыток пропускной способности (в 10 раз и более) для компенсации неточного планирования емкости, перегрузок и других проблем. Коммутатор с балансировкой нагрузки может обеспечить 100% пропускную способность при избытке всего в 2 раза, измеренном по всей системе. Основой крупных магистральных сетей обычно служат оптические каналы, которые нельзя быстро переключить. Они хорошо соответствуют каналам с постоянной скоростью 2R/N в сетке коммутатора с балансировкой нагрузки. Нет необходимости изменять таблицы маршрутизации на основе информации о глобальных перегрузках, поскольку глобальных перегрузок не возникает. Перемаршрутизация в случае отказа узла требует изменения конфигурации оптических каналов. Однако перемаршрутизацию можно вычислить заранее (существует конечное число узлов, которые могут выйти из строя), и она не вызывает перегрузки, которая потребовала бы дальнейших изменений в таблице маршрутизации.