it-консалтинг и аутсорсинг
что мы делаем контакты блог

Агрегация каналов в Mac OS X

Василий Колосов 04.04.2011

Идея объединения нескольких Ethernet-каналов в один выглядит довольно-таки заманчиво. Формально, использование N линков дает нам увеличение пропускной способности в такое же количество раз. Однако, не все так просто: у протокола LACP (Link Aggregation Control Protocol) есть особенности, которые нужно учесть перед тем, как приступать к активным действиям.

Все заключается в алгоритме, по которому работает LACP.  При передаче пакета ему присваивается порядковый номер от 0 до 7, который получается путем хэширования MAC-адреса назначения соответствующей функцией. Для одного и того же MAC-адреса номер будет одинаковым.

Каждому из каналов в свою очередь соответствует один или несколько номеров от 0 до 7. Почему несколько? Если наш логический канал состоит из восьми физических, каждый получит по одному. Если каналов четыре — по два (у первого 0 и 4, у второго 1 и 5, у третьего 2 и 6, у четвертого 3 и 7). В случае использования, например, шести каналов, двум из них будет присвоено два номера, а каждому из оставшихся четырех — один. В итоге пакеты распределяются по каналам в соответствии с их номерами.

Очевидно, что для пакетов с одним и тем же MAC-адресом назначения будет задействован только один канал. То есть, при агрегированном линке в 8 Гбит каждое отдельное соединение будет по прежнему работать со скоростью в 1 Гбит. С другой стороны, мы получаем то, что обозначается термином load balancing — выравнивание нагрузки: большее количество устройств могут работать без уменьшения скорости передачи, плюс увеличивается отказоустойчивость, так как при обрыве одного из каналов произойдет failover и соединение останется в рабочем состоянии. Кстати, равномерного распределения удастся добиться только при использовании двух, четырех или восьми линков — иначе, как показано выше, какие-то будут нагружены больше, чем остальные.

Что же касается настройки, то первым делом ее нужно произвести на коммутаторе. Например, на свитчах Allied Telesis соответствующие команды будут выглядеть следующим образом:

enable lacp 
create lacp aggregator=fcs port=3.4,3.6 distribution=macboth

В Mac OS X настройка сводится к следующим шагам:

  1. В панели настроек Network нажать на кнопку с шестеренкой (находится под списком доступных интерфейсов) и выбрать пункт «Manage Virtual Interfaces…»
  2. В открытом окне нажать на «+» и выбрать «New Link Aggregate…»
  3. Выбрать все интерфейсы, которые требуется объединить, задать имя для виртуального адаптера и нажать «Create», затем «Done».
  4. Задать сетевые настройки для нового интерфейса
  5. Сохранить изменения нажатием кнопки «Apply»

Все адаптеры, входящие в Aggregate Link, должны получать адрес автоматически (он будет иметь вид 169.254.x.x).

  • А скриншотик?

  • После трех дней сношений с аггрегацией портов в Mac Pro и управляемом свитче от Allied я понял, что без волшебной команды ifconfig interface bondmode static ничего работать у меня не будет. Хотя, по умолчанию Mac OS 10.6 делала именно lacp бонд.