Борьба с перегрузками

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

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

Возникновение таких перегрузок является платой за отказ от применения алгоритма доступа к разделяемой среде, так как в дуплексном режиме работы портов теряется контроль за потоками кадров,"направляемых конечными узлами в сеть. В полудуплексном режиме, свойственном технологиям с разделяемой средой, поток кадров регулировался самим методом доступа к разделяемой среде. При переходе на дуплексный режим узлу разрешается отправлять кадры в коммутатор всегда, когда это ему нужно, поэтому в данном режиме коммутаторы сети могут сталкиваться с перегрузками, не имея при этом никаких средств «притормаживания» потока кадров.

Таким образом, если входной трафик неравномерно распределяется между выходными портами, легко представить ситуацию, когда на какой-либо выходной порт коммутатора будет направляться трафик с суммарной средней интенсивностью большей, чем протокольный максимум. На рис. 1 показана как раз такая ситуация, когда на порт 3 коммутатора Ethernet направляется от портов 1, 2, 4 и 6 поток кадров размером в 64 байт с суммарной интенсивностью в 22 100 кадров в секунду. Вспомним, что максимальная скорость в кадрах в секунду для сегмента Ethernet составляет 14 880. Естественно, что когда кадры поступают в буфер порта со скоростью 22 100 кадров в секунду, а уходят со скоростью 14 880 кадров в секунду, то внутренний буфер выходного порта начинает неуклонно заполняться необработанными кадрами.

Рис. 1 Переполнение буфера порта из-за нестабильности трафика

В приведенном примере нетрудно подсчитать, что при размере буфера в 100 Кбайт полное заполнение буфера произойдет через 0,22 секунды после начала работы в таком интенсивном режиме. Увеличение размера буфера до 1 Мбайт даст увеличение времени заполнения буфера до 2,2 секунды, что также неприемлемо. Проблему можно решить с помощью средств контроля перегрузки.

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

В этом разделе мы рассмотрим механизм обратной связи, который был стандартизован для сетей Ethernet в марте 1997 как спецификация IEEE 802.Зх. Механизм обратной связи 802.3х используется только в дуплексном режиме работы портов коммутатора. Этот механизм очень важен для коммутаторов локальных сетей, так как он позволяет сократить потери кадров из-за переполнения буферов независимо от того, обеспечивает сеть дифференцированную поддержку показателей QoS для разных типов трафика или же предоставляет базовый сервис по доставке с максимальными усилиями («по возможности»). Другие механизмы поддержания показателей QoS рассматриваются в следующей главе.

Спецификация 802.3 вводит новый подуровень в стеке протоколов Ethernet — подуровень управления уровня MAC. Он располагается над уровнем MAC и является необязательным (рис. 2).

Рис. 2. Подуровень управления уровня MAC

Кадр подуровня управления отличается от кадров пользовательских данных тем, что в поле типа всегда содержится шестнадцатеричное значение 88-08. Формат кадра подуровня управления рассчитан на универсальное применение, поэтому он достаточно сложен (рис. 3).

Рис. 3. Формат кадра подуровня управления

В качестве адреса назначения можно указывать зарезервированное для этой цели значение группового адреса 01-80-С2-00-00-01. Это удобно, когда соседний узел также является коммутатором (так как порты коммутатора не имеют уникальных МАС-адресов). Если сосед — конечный узел, можно также использовать уникальный МАС-адрес.

В поле кода операции подуровня управления указывается шестнадцатеричный код 00-01, поскольку, как уже было отмечено, пока определена только одна операция подуровня управления — она называется PAUSE (пауза) и имеет шестнадцатеричный код 00-01.

В поле параметров подуровня управления указывается время, на которое узел, получивший такой код, должен прекратить передачу кадров узлу, отправившему кадр с операцией PAUSE. Время измеряется в 512 битовых интервалах конкретной реализации Ethernet, диапазон возможных вариантов приостановки равен 0-65535.

Как видно из описания, этот механизм обратной связи относится к типу 2 в соответствии с классификацией. Специфика его состоит в том, что в нем предусмотрена только одна операция — приостановка на определенное время. Обычно же в механизмах этого типа используются две операции — приостановка и возобновление передачи кадров.
Проблема, иллюстрируемая рис. 1, может быть решена и другим способом: применением так называемого магистрального, или восходящего (uplink), порта. Магистральные порты в коммутаторах Ethernet — это порты следующего уровня иерархии скорости по сравнению с портами, предназначенными для подключения пользователей. Например, если коммутатор имеет 12 портов Ethernet стандарта 10 Мбит/с, то магистральный порт должен быть портом Fast Ethernet, чтобы его скорость была достаточна для передачи до 10 потоков от входных портов. Обычно низкоскоростные порты коммутатора служат для соединения с пользовательскими компьютерами, а магистральные порты — для подключения либо сервера, к которому обращаются пользователи, либо коммутатора болеевысокого уровня иерархии.
На рис. 4 показан пример коммутатора, имеющего 24 порта стандарта Fast Ethernet с о скоростью 100 Мбит/с, к которым подключены пользовательские компьютеры, и один порт стандарта Gigabit Ethernet со скоростью 1000 Мбит/с, к которому подключен сервер.

При такой конфигурации коммутатора вероятность перегрузки портов существенно снижается по сравнению с вариантом, когда все порты поддерживают одинаковую скорость. Хотя возможность перегрузки по-прежнему существует, для этого необходимо, чтобы  более чем 10 пользователей одновременно обменивались с сервером данными со средней скоростью, близкой к максимальной скорости их соединений — а такое событие достаточно маловероятно.

Рис. 4. Коммутатор рабочей группы

Из приведенного примера видно, что вероятность перегрузки портов коммутаторов зависит о т распределения трафика между его портами, кроме того, понятно, что даже при хорошем соответствии скорости портов наиболее вероятному распределению трафика полностью исключить перегрузки невозможно.

Поэтому в общем случае для уменьшения потерь кадров из-за перегрузок нужно применять оба средства: подбор скорости портов для наиболее вероятного распределения трафика в сети и протокол 802.3х для снижения скорости источника трафика в тех случаях, когда перегрузки все-таки возникают.