Введение
Техника приостановки передачи для предотвращения перегрузки
Управление потоком Ethernet — это механизм временной остановки передачи данных в компьютерных сетях семейства Ethernet. Целью этого механизма является предотвращение потери пакетов при возникновении сетевой перегрузки. Первый механизм управления потоком, пауза, был определён стандартом IEEE 802.3x. Последующий, приоритетный контроль потока, определённый в стандарте IEEE 802.1Qbb, предоставляет механизм управления потоком на уровне канала связи, которым можно управлять независимо для каждого класса обслуживания (CoS), как это определено в IEEE P802.1p, и применим к сетям Data Center Bridging (DCB), а также для обеспечения приоритета трафика голоса по IP (VoIP), видео по IP и синхронизации баз данных над стандартным трафиком данных и массовой передачей файлов.
Описание
Отправляющая станция (компьютер или сетевой коммутатор) может передавать данные быстрее, чем принимающая сторона может их обработать. Используя управление потоком, принимающая станция может сигнализировать отправителю о необходимости приостановить передачу, пока приемник не будет готов к приему. Управление потоком в Ethernet может быть реализовано на канальном уровне. Первый механизм управления потоком – пауза – был разработан рабочей группой Института инженеров электротехники и электроники (IEEE), которая разработала полнодуплексные сегменты линий Ethernet. Стандарт IEEE 802.3x был опубликован в 1997 году.
Пауза
Перегруженный сетевой узел может отправить паузу, которая останавливает передачу данных отправителем на определенный период времени. Для передачи команды паузы используется кадр управления доступом к среде (MAC) (EtherType 0x8808), при этом код управления (Control opcode) установлен в 0x0001 (в шестнадцатеричном формате). Использование известного адреса избавляет станцию от необходимости обнаруживать и сохранять адрес станции на другом конце канала связи. Дополнительное преимущество использования этого адреса многоадресной рассылки связано с использованием управления потоком между сетевыми коммутаторами. Конкретный адрес многоадресной рассылки выбирается из диапазона адресов, зарезервированных стандартом IEEE 802.1D, который определяет работу коммутаторов, используемых для организации мостов. Обычно кадр с адресом многоадресной рассылки, отправленный на коммутатор, пересылается на все остальные порты коммутатора. Однако этот диапазон адресов многоадресной рассылки является специальным и не будет пересылаться коммутатором, соответствующим стандарту 802.1D. Вместо этого, кадры, отправленные в этот диапазон, рассматриваются как предназначенные для обработки только внутри коммутатора. Паузовый кадр включает в себя запрашиваемый период времени паузы, представленный в виде двух байтов (16 бит) – целого числа без знака (от 0 до 65535). Это число представляет собой требуемую длительность паузы. Время паузы измеряется в единицах квантов паузы, где каждый квант равен 512 временным интервалам (битам). К 1999 году несколько производителей поддерживали прием паузовых кадров, но меньше – их отправку.
Проблемы
Одной из первоначальных причин внедрения механизма паузы было обеспечение работы с сетевыми контроллерами (NIC), которым не хватало буферной памяти для приема данных на полной скорости. С развитием скорости шин и объемов памяти эта проблема встречается реже. Более вероятным сценарием является сетевая перегрузка внутри коммутатора. Например, поток может поступать в коммутатор по каналу с более высокой скоростью, чем по каналу, по которому он отправляется, или несколько потоков могут поступать по двум или более каналам, суммарная пропускная способность которых превышает пропускную способность выходного канала. В конечном итоге это приведет к исчерпанию любого объема буферной памяти в коммутаторе. Однако блокировка отправляющего канала приведет к задержке всех потоков, проходящих через него, даже тех, которые не являются причиной перегрузки. Эта ситуация представляет собой блокировку первого пакета в очереди (HOL blocking) и может возникать чаще в магистральных коммутаторах из-за большого количества агрегированных потоков. Многие коммутаторы используют метод виртуальных выходных очередей для устранения блокировки HOL внутри себя, поэтому они никогда не отправляют кадры паузы.
Контроль потока приоритета
Контроль потока Ethernet нарушает классы обслуживания Ethernet (определенные в IEEE 802.1p), поскольку данные всех приоритетов останавливаются для освобождения существующих буферов, которые могут содержать и низкоприоритетные данные. Для решения этой проблемы Cisco Systems разработала собственное расширение контроля потока с учетом приоритетов для стандартного протокола. Этот механизм использует 14 байт из 42-байтного заполнения в стандартной паузе. Код управления MAC для паузы с приоритетом – 0x0101. В отличие от исходной паузы, пауза с приоритетом указывает время паузы в квантах для каждого из восьми классов приоритетов по отдельности. Впоследствии расширение было стандартизировано в рамках проекта Priority based Flow Control (PFC), утвержденного 27 марта 2008 года как IEEE 802.1Qbb. Версия 2.3 была предложена 7 июня 2010 года. Редактором проекта был Клаудио ДеСанти из Cisco. Работа велась в рамках группы по организации мостов для центров обработки данных, которая разрабатывала Fibre Channel over Ethernet.