Основными характеристиками коммутатора, измеряющими его производительность, являются:
- скорость фильтрации (filtering);
- скорость маршрутизации (forwarding);
- пропускная способность (throughput);
- задержка передачи кадра.
Кроме того, существует несколько характеристик коммутатора, которые в наибольшей степени влияют на указанные характеристики производительности. К ним относятся:
- размер буфера (буферов) кадров;
- производительность внутренней шины;
- производительность процессора или процессоров;
- размер внутренней адресной таблицы.
Скорость фильтрации и продвижения кадров - это две основные характеристики производительности коммутатора. Эти характеристики являются интегральными показателями, они не зависят от того, каким образом технически реализован коммутатор.
Скорость фильтрации определяет скорость, с которой коммутатор выполняет следующие этапы обработки кадров:
- прием кадра в свой буфер,
- просмотр адресной таблицы с целью нахождения порта для адреса назначения кадра,
- уничтожение кадра, так как его порт назначения совпадает с портом-источником.
Скорость продвижения определяет скорость, с которой коммутатор выполняет следующие этапы обработки кадров:
- прием кадра в свой буфер,
- просмотр адресной таблицы с целью нахождения порта для адреса назначения кадра,
- передача кадра в сеть через найденный по адресной таблице порт назначения.
Как скорость фильтрации, так и скорость продвижения измеряются обычно в кадрах в секунду. Если в характеристиках коммутатора не уточняется, для какого протокола и для какого размера кадра приведены значения скоростей фильтрации и продвижения, то по умолчанию считается, что эти показатели даются для протокола Ethernet и кадров минимального размера, то есть кадров длиной 64 байта (без преамбулы), с полем данных в 46 байт. Если скорости указаны для какого-либо определенного протокола, например, Token Ring или FDDI, то они также даны для кадров минимальной длины этого протокола (например, кадров длины 29 байт для протокола FDDI). Применение в качестве основного показателя скорости работы коммутатора кадров минимальной длины объясняется тем, что такие кадры всегда создают для коммутатора наиболее тяжелый режим работы по сравнению с кадрами другого формата при равной пропускной способности переносимых пользовательских данных. Поэтому при проведении тестирования коммутатора режим передачи кадров минимальной длины используется как наиболее сложный тест, который должен проверить способность коммутатора работать при наихудшем сочетании для него параметров трафика. Кроме того, для пакетов минимальной длины скорость фильтрации и продвижения имеют максимальное значение, что имеет немаловажное значение при рекламе коммутатора.
Пропускная способность коммутатора измеряется количеством переданных в единицу времени через его порты пользовательских данных. Так как коммутатор работает на канальном уровне, то для него пользовательскими данными являются те данные, которые переносятся в поле данных кадров протоколов канального уровня - Ethernet, Token Ring, FDDI и т.п. Максимальное значение пропускной способности коммутатора всегда достигается на кадрах максимальной длины, так как при этом и доля накладных расходов на служебную информацию кадра гораздо ниже, чем для кадров минимальной длины, и время выполнения коммутатором операций по обработке кадра, приходящееся на один байт пользовательской информации, существенно меньше.
Зависимость пропускной способности коммутатора от размера передаваемых кадров хорошо иллюстрирует пример протокола Ethernet, для которого при передаче кадров минимальной длины достигается скорость передачи в 14880 кадров в секунду и пропускная способность 5.48 Мб/с, а при передаче кадров максимальной длины - скорость передачи в 812 кадров в секунду и пропускная способность 9.74 Мб/c. Пропускная способность падает почти в два раза при переходе на кадры минимальной длины, и это еще без учета потерь времени на обработку кадров коммутатором.
Задержка передачи кадра измеряется как время, прошедшее с момента прихода первого байта кадра на входной порт коммутатора до момента появления этого байта на выходном порту коммутатора. Задержка складывается из времени, затрачиваемого на буферизацию байт кадра, а также времени, затрачиваемого на обработку кадра коммутатором - просмотр адресной таблицы, принятие решения о фильтрации или продвижении и получения доступа к среде выходного порта.
Величина вносимой коммутатором задержки зависит от режима его работы. Если коммутация осуществляется "на лету", то задержки обычно невелики и составляют от 10 мкс до 40 мкс, а при полной буферизации кадров - от 50 мкс до 200 мкс (для кадров минимальной длины).
Коммутатор - это многопортовое устройство, поэтому для него принято все приведенные выше характеристики (кроме задержки передачи кадра) давать в двух вариантах. Первый вариант - суммарная производительность коммутатора при одновременной передаче трафика по всем его портам, второй вариант - производительность, приведенная в расчете на один порт.
Так как при одновременной передаче трафика несколькими портами существует огромное количество вариантов трафика, отличающегося размерами кадров в потоке, распределением средней интенсивности потоков кадров между портами назначения, коэффициентами вариации интенсивности потоков кадров и т.д. и т.п., то при сравнении коммутаторов по производительности необходимо принимать во внимание, для какого варианта трафика получены публикуемые данные производительности. К сожалению, для коммутаторов (как, впрочем, и для маршрутизаторов) не существует общепринятых тестовых образцов трафика, которые можно было бы применять для получения сравнимых характеристик производительности, как это делается для получения таких характеристик производительности вычислительных систем, как TPC-А или SPECint92. Некоторые лаборатории, постоянно проводящие тестирование коммуникационного оборудования, разработали детальные описания условий тестирования коммутаторов и используют их в своей практике, однако общепромышленными эти тесты пока не стали.
В идеальном случае коммутатор, установленный в сети, передает кадры между узлами, подключенными к его портам, с той скоростью, с которой узлы генерируют эти кадры, не внося дополнительных задержек и не теряя ни одного кадра. В реальной практике коммутатор всегда вносит некоторые задержки при передаче кадров, а также может некоторые кадры терять, то есть не доставлять их адресатам. Из-за различий во внутренней организации разных моделей коммутаторов, трудно предвидеть, как тот или иной коммутатор будет передавать кадры какого-то конкретного образца трафика. Лучшим критерием по-прежнему остается практика, когда коммутатор ставится в реальную сеть и измеряются вносимые им задержки и количество потерянных кадров. Однако, существуют несложные расчеты, которые могут дать представление о том, как коммутатор будет вести себя в реальной ситуации.
Посмотрим, как можно оценить поведение коммутатора на примере сети, изображенной на рисунке 4.8.
Рис. 4.8. Распределение трафика в сети, построенной на коммутаторе
Основой для оценки того, как будет справляться коммутатор со связью узлов или сегментов, подключенных к его портам, являются данные о средней интенсивности трафика между узлами сети. Для приведенного примера это означает, что нужно каким-то образом оценить, сколько в среднем кадров в секунду узел, подключенный к порту P2, генерирует узлу, подключенному к порту P4 (трафик P24), узлу, подключенному к порту P3 (трафик P23), и так далее, до узла, подключенного к порту P6. Затем эту процедуру нужно повторить для трафика, генерируемого узами, подключенными к портам 3, 4, 5 и 6. В общем случае, интенсивность трафика, генерируемого одним узлом другому, не совпадает с интенсивностью трафика, генерируемого в обратном направлении.
Результатом исследования трафика будет построение матрицы трафика, приведенной на рисунке 4.9. Трафик можно измерять как в кадрах в секунду, так и в битах в секунду. Так как затем требуемые значения трафика будут сравниваться с показателями производительности коммутатора, то нужно их иметь в одних и тех же единицах. Для определенности будем считать, что в рассматриваемом примере трафик и производительность коммутатора измеряются в битах в секунду.
Рис. 4.9. Матрица средних значений интенсивностей трафика
Подобную матрицу строят агенты RMON MIB (переменная Traffic Matrix), встроенные в сетевые адаптеры или другое коммуникационное оборудование.
Для того, чтобы коммутатор справился с поддержкой требуемой матрицы трафика, необходимо выполнение нескольких условий.
1. Общая производительность коммутатора должна быть больше или равна суммарной интенсивности передаваемого трафика:
B і Sij Pij ,
где B - общая производительность коммутатора, Pij - средняя интенсивность трафика от i-го порта к j-му; сумма берется по всем портам коммутатора, от 1 до 6.
Если это неравенство не выполняется, то коммутатор заведомо не будет справляться с потоком поступающих в него кадров и они будут теряться из-за переполнения внутренних буферов. Так как в формуле фигурируют средние значения интенсивностей трафика, то никакой, даже очень большой размер внутреннего буфера или буферов коммутатора не сможет компенсировать слишком медленную обработку кадров.
Суммарная производительность коммутатора обеспечивается достаточно высокой производительностью каждого его отдельного элемента - процессора порта, коммутационной матрицы, общей шины, соединяющей модули и т.п. Независимо от внутренней организации коммутатора и способов конвейеризации его операций, можно определить достаточно простые требования к производительности его элементов, которые являются необходимыми для поддержки заданной матрица трафика. Перечислим некоторые из них.
2. Номинальная максимальная производительность протокола каждого порта коммутатора должна быть не меньше средней интенсивности суммарного трафика, проходящего через порт:
Сk і Sj Pkj + Si Pik,
где Сk - номинальная максимальная производительность протокола k-го порта (например, если k-ый порт поддерживает Ethernet, то Сk равно 10 Мб/с), первая сумма равна интенсивности выходящего из порта трафика, а вторая - входящего. Эта формула полагает, что порт коммутатора работает в стандартном полудуплексном режиме, для полнодуплексного режима величину Сk нужно удвоить.
3. Производительность процессора каждого порта должна быть не меньше средней интенсивности суммарного трафика, проходящего через порт. Условие аналогично предыдущему, но вместо номинальной производительности поддерживаемого протокола в ней должна использоваться производительность процессора порта.
4. Производительность внутренней шины коммутатора должна быть не меньше средней интенсивности суммарного трафика, передаваемого между портами, принадлежащими разным модулям коммутатора:
Bbus і Sij Pij ,
где Bbus - производительность общей шины коммутатора, а сумма Sij Pij берется только по тем i и j, которые принадлежат разным модулям.
Эта проверка должна выполняться, очевидно, только для тех коммутаторов, которые имеют внутреннюю архитектуру модульного типа с использованием общей шины для межмодульного обмена. Для коммутаторов с другой внутренней организацией, например, с разделяемой памятью, несложно предложить аналогичные формулы для проверки достаточной производительности их внутренних элементов.
Приведенные условия являются необходимыми для того, чтобы коммутатор в среднем справлялся с поставленной задачей и не терял кадров постоянно. Если хотя бы одно из приведенных условий не будет выполнено, то потери кадров становятся не эпизодическим явлением при пиковых значениях трафика, а явлением постоянным, так как даже средние значения трафика превышают возможности коммутатора.
Условия 1 и 2 применимы для коммутаторов с любой внутренней организацией, а условия 3 и 4 приведены в качестве примера необходимости учета производительности отдельных портов.
Так как производители коммутаторов стараются сделать свои устройства как можно более быстродействующими, то общая внутренняя производительность коммутатора часто с некоторым запасом превышает среднюю интенсивность любого варианта трафика, который можно направить на порты коммутатора в соответствии с их протоколами. Такие коммутаторы называются неблокирующими, что подчеркивает тот факт, что любой вариант трафика передается без снижения его интенсивности.
Однако, какой бы общей производительностью не обладал коммутатор, всегда можно указать для него такое распределение трафика между портами, с которым коммутатор не справится и начнет неизбежно терять кадры. Для этого достаточно, чтобы суммарный трафик, передаваемый через коммутатор для какого-нибудь его выходного порта, превысил максимальную пропускную способность протокола этого порта. В терминах условия 2 это будет означать, что второе слагаемое Si Pik превышает пропускную способность протокола порта Сk. Например, если порты P4, Р5 и Р6 будут посылать на порт Р2 каждый по 5 Мб/c, то порт Р2 не сможет передавать в сеть трафик со средней интенсивностью 15 Мб/с, даже если процессор этого порта обладает такой производительностью. Буфер порта Р2 будет заполняться со скоростью 15 Мб/с, а опустошаться со скоростью максимум 10 Мб/с, поэтому количество необработанных данных будет расти со скоростью 5 Мб/с, неизбежно приводя к переполнению любого буфера конечного размера, а значит и к потере кадров.
Из приведенного примера видно, что коммутаторы могут полностью использовать свою высокую внутреннюю производительность только в случае хорошо сбалансированного трафика, когда вероятности передачи кадров от одного порта другим примерно равны. При "перекосах" трафика, когда несколько портов посылают свой трафик преимущественно одному порту, коммутатор может не справиться с поставленной задачей даже не из-за недостаточной производительности своих процессоров портов, а по причине ограничений протокола порта.
Коммутатор может терять большой процент кадров и в тех случаях, когда все приведенные условия соблюдаются, так как они являются необходимыми, но недостаточными для своевременного продвижения получаемых на приемниках портов кадров. Эти условия недостаточны потому, что они очень упрощают процессы передачи кадров через коммутатор. Ориентация только на средние значения интенсивностей потоков не учитывает коллизий, возникающих между передатчиками порта и сетевого адаптера компьютера, потерь на время ожидания доступа к среде и других явлений, которые обусловлены случайными моментами генерации кадров, случайными размерами кадров и другими случайными факторами, значительно снижающими реальную производительность коммутатора. Тем не менее использование приведенных оценок полезно, так как позволяет выявить случаи, когда применение конкретной модели коммутатора для конкретной сети заведомо неприемлемо.
Так как интенсивности потоков кадров между узлами сети оценить удается далеко не всегда, то в заключение этого раздела приведем соотношение, которое позволяет говорить о том, что коммутатор обладает достаточной внутренней производительностью для поддержки потоков кадров в том случае, если они проходят через все его порты с максимальной интенсивностью. Другими словами, получим условие того, что при данном наборе портов коммутатор является неблокирующим.
Очевидно, что коммутатор будет неблокирующим, если общая внутренняя производительность коммутатора B равна сумме максимальных пропускных способностей протоколов всех его портов Сk:
B = Sk Сk
То есть, если у коммутатора имеется, например, 12 портов Ethernet и 2 порта Fast Ethernet, то внутренней производительности в 320 Мб/с будет достаточно для обработки любого распределения трафика, попавшего в коммутатор через его порты. Однако, такая внутренняя производительность является избыточной, так как коммутатор предназначен не только для приема кадров, но и для их передачи на порт назначения. Поэтому все порты коммутатора не могут постоянно с максимальной скоростью только принимать информацию извне - средняя интенсивность уходящей через все порты коммутатора информации должна быть равна средней интенсивности принимаемой информации. Следовательно, максимальная скорость передаваемой через коммутатор информации в стабильном режиме равна половине суммарной пропускной способности всех портов - каждый входной кадр является для какого-либо порта выходным кадром. В соответствии с этим утверждением для нормальной работы коммутатора достаточно, чтобы его внутренняя общая производительность была равна половине суммы максимальных пропускных способностей протоколов всех его портов:
B = (Sk Сk)/2
Поэтому, для коммутатора с 12 портами Ethernet и 2 портами Fast Ethernet вполне достаточно иметь среднюю общую производительность в 160 Мб/с, для нормальной работы по передаче любых вариантов распределения трафика, которые могут быть переданы его портами в течение достаточно длительного периода времени.
Еще раз нужно подчеркнуть, что это условие гарантирует только то, что внутренние элементы коммутатора - процессоры портов, межмодульная шина, центральный процессор и т.п. - справятся с обработкой поступающего трафика. Несимметрия в распределении этого трафика по выходным портам всегда может привести к невозможности своевременной передачи трафика в сеть из-за ограничений протокола порта. Для предотвращения потерь кадров многие производители коммутаторов применяют фирменные решения, позволяющие "притормаживать" передатчики узлов, подключенных к коммутатору, то есть вводят элементы управления потоком не модифицируя протоколы портов конечных узлов. Эти способы будут рассмотрены ниже при рассмотрении дополнительных возможностей коммутаторов.
Кроме пропускных способностей отдельных элементов коммутатора, таких как процессоры портов или общая шина, на производительность коммутатора влияют такие его параметры как размер адресной таблицы и объем общего буфера или отдельных буферов портов.
Максимальная емкость адресной таблицы определяет максимальное количество MAC-адресов, с которыми может одновременно оперировать коммутатор. Так как коммутаторы чаще всего используют для выполнения операций каждого порта выделенный процессорный блок со своей памятью для хранения экземпляра адресной таблицы, то размер адресной таблицы для коммутаторов обычно приводится в расчете на один порт. Экземпляры адресной таблицы разных процессорных модулей не обязательно содержат одну и ту же адресную информацию - скорее всего повторяющихся адресов будет не так много, если только распределение трафика каждого порта не полностью равновероятное между остальными портами. Каждый порт хранит только те наборы адресов, которыми он пользуется в последнее время.
Значение максимального числа МАС-адресов, которое может запомнить процессор порта, зависит от области применения коммутатора. Коммутаторы рабочих групп обычно поддерживают всего несколько адресов на порт, так как они предназначены для образования микросегментов. Коммутаторы отделов должны поддерживать несколько сотен адресов, а коммутаторы магистралей сетей - до нескольких тысяч, обычно 4К - 8К адресов.
Недостаточная емкость адресной таблицы может служить причиной замедления работы коммутатора и засорения сети избыточным трафиком. Если адресная таблица процессора порта полностью заполнена, а он встречает новый адрес источника в поступившем пакете, то он должен вытеснить из таблицы какой-либо старый адрес и поместить на его место новый. Эта операция сама по себе отнимет у процессора часть времени, но главные потери производительности будут наблюдаться при поступлении кадра с адресом назначения, который пришлось удалить из адресной таблицы. Так как адрес назначения кадра неизвестен, то коммутатор должен передать этот кадр на все остальные порты. Эта операция будет создавать лишнюю работу для многих процессоров портов, кроме того, копии этого кадра будут попадать и на те сегменты сети, где они совсем необязательны.
Некоторые производители коммутаторов решают эту проблему за счет изменения алгоритма обработки кадров с неизвестным адресом назначения. Один из портов коммутатора конфигурируется как магистральный порт, на который по умолчанию передаются все кадры с неизвестным адресом. В маршрутизаторах такой прием применяется давно, позволяя сократить размеры адресных таблиц в сетях, организованных по иерархическому принципу.
Передача кадра на магистральный порт производится в расчете на то, что этот порт подключен к вышестоящему коммутатору, который имеет достаточную емкость адресной таблицы и знает, куда нужно передать любой кадр. Пример успешной передачи кадра при использовании магистрального порта приведен на рисунке 4.10. Коммутатор верхнего уровня имеет информацию о всех узлах сети, поэтому кадр с адресом назначения МАС3, переданный ему через магистральный порт, он передает через порт 2 коммутатору, к которому подключен узел с адресом МАС3.
Рис. 4.10. Использование магистрального порта для доставки кадров
с неизвестным адресом назначения
Хотя метод магистрального порта и будет работать эффективно во многих случаях, но можно представить такие ситуации, когда кадры будут просто теряться. Одна из таких ситуаций изображена на рисунке 4.11. Коммутатор нижнего уровня удалил из своей адресной таблицы адрес МАС8, который подключен к его порту 4, для того, чтобы освободить место для нового адреса МАС3. При поступлении кадра с адресом назначения МАС8, коммутатор передает его на магистральный порт 5, через который кадр попадает в коммутатор верхнего уровня. Этот коммутатор видит по своей адресной таблице, что адрес МАС8 принадлежит его порту 1, через который он и поступил в коммутатор. Поэтому кадр далее не обрабатывается и просто отфильтровывается, а, следовательно, не доходит до адресата. Поэтому более надежным является использование коммутаторов с достаточным количеством адресной таблицы для каждого порта, а также с поддержкой общей адресной таблицы модулем управления коммутатором.
Рис. 4.11. Потеря кадра при использовании магистрального порта
Внутренняя буферная память коммутатора нужна для временного хранения кадров данных в тех случаях, когда их невозможно немедленно передать на выходной порт. Буфер предназначен для сглаживания кратковременных пульсаций трафика. Ведь даже если трафик хорошо сбалансирован и производительность процессоров портов, а также других обрабатывающих элементов коммутатора достаточна для передачи средних значений трафика, то это не гарантирует, что их производительности хватит при очень больших пиковых значениях нагрузок. Например, трафик может в течение нескольких десятков миллисекунд поступать одновременно на все входы коммутатора, не давая ему возможности передавать принимаемые кадры на выходные порты.
Для предотвращения потерь кадров при кратковременном многократном превышении среднего значения интенсивности трафика (а для локальных сетей часто встречаются значения коэффициента пульсации трафика в диапазоне 50 - 100) единственным средством служит буфер большого объема. Как и в случае адресных таблиц, каждый процессорный модуль порта обычно имеет свою буферную память для хранения кадров. Чем больше объем этой памяти, тем менее вероятны потери кадров при перегрузках, хотя при несбалансированности средних значений трафика буфер все равно рано или поздно переполниться.
Обычно коммутаторы, предназначенные для работы в ответственных частях сети, имеют буферную память в несколько десятков или сотен килобайт на порт. Хорошо, когда эту буферную память можно перераспределять между несколькими портами, так как одновременные перегрузки по нескольким портам маловероятны. Дополнительным средством защиты может служить общий для всех портов буфер в модуле управления коммутатором. Такой буфер обычно имеет объем в несколько мегабайт.
Предыдущая глава | Оглавление | Следующая глава