Использование коммутаторов для структуризации компьютерных сетей
1 Назначение и характеристики коммутаторов
Технология коммутации сегментов компьютерных сетей была предложена фирмой Kalpana в 1990 году в ответ на растущие потребности в повышении пропускной способности связей высокопроизводительных специализированных серверов как между собой, так и с сегментами рабочих мест пользователей.
Коммутатор (switch), в принципе, выполняет те же функции, что и мост, но для обслуживания потока данных, поступающего на каждый порт, в устройство устанавливается отдельный специализированный процессор, который реализует алгоритм моста. Коммутатор используется как средство сегментации — уменьшения количества узлов в доменах коллизий. В предельном случае — микросегментации — к каждому порту коммутатора подключается только один узел. При этом коммутатор должен направить в нужный порт каждый приходящий кадр, что предъявляет высокие требования к производительности процессора коммутатора.
Существуют два основных подхода к коммутации: с промежуточным сохранением кадров и коммутации «на лету».
Технология с промежуточным хранением (storeandforward) предполагает, что каждый кадр, пришедший в порт, целиком принимается в буферную память. Далее процессор анализирует его заголовок, адрес источника использует для построения своих таблиц, а по адресу назначения определяет порт, в который кадр должен быть передан. В случае многоадресной или широковещательной передачи это будет группа из всех остальных портов. Передача в порт производится по мере его освобождения согласно процедуре CSMA/CD. После успешной передачи (во все требуемые порты) кадр из памяти удаляется, освобождая место. Эта технология позволяет анализировать кадр (проверять CRC-код) и игнорировать ошибочные кадры. Недостатком такого подхода является значительная задержка передачи кадров, по крайней мере, на время приема кадра (для максимально длинного кадра при 10 Мбит/с — 1,22 мс).
Коммутация «на лету» (on-the-fly) выполняется, по возможности, без промежуточного хранения кадра. Порт принимает кадр, одновременно анализируя его поле заголовка. Как только будут приняты биты адреса назначения — первые 6 байт после преамбулы, — коммутатор уже может пересылать кадр в порт или порты назначения, если они не заняты. В случае, если порт назначения занят, промежуточное хранение неизбежно. Коммутация «на лету» вносит минимальную задержку — при свободном порте назначения она составит (8 + 6) х 8 = 112 bt (битовых интервалов), для скорости 10 Мбит/с — 11,2 мкс. Однако проверка CRC не производится, и коммутатор распространяет все кадры, в том числе и короткие, отсеченные коллизиями (что является недостатком коммутации «на лету»).
В зависимости от производительности коммутатор может быть блокирующим и неблокирующим. Неблокирующий коммутатор способен обрабатывать все кадры, приходящие на все его порты с максимальной скоростью, которую обеспечивает среда передачи. Высокие скорости создают определенные трудности, особенно при большом количестве портов. В мостах с задачей коммутации успешно справлялся один процессор.
Коммутационная матрица — это аппаратная схема (электронный коммутатор), которая позволяет организовать цепь передачи логического сигнала между любой парой портов. Процессор каждого порта принимает кадр сначала в свой буфер. Как только процессор порта определяет адрес назначения очередного кадра, он запрашивает у матрицы требуемое соединение. Если выходной порт свободен, устанавливается логическая связь, и кадр через матрицу поступает на вход передатчика выходного порта. Если выходной порт занят, кадр сохраняется в буферной памяти входного порта на время, требуемое для освобождения нужного выходного порта назначения.
Общая шина высокой производительности связывает процессоры всех портов. Кадры по ней пересылаются мелкими фрагментами (ячейками) на скорости, существенно большей битовой скорости портов. В результате каждая передача занимает малую часть времени шины, и несколько пар процессоров могут обмениваться кадрами псевдопараллельно. Производительность шины в идеале должна быть не меньше суммы пропускной способности половины портов. До тех пор, пока это условие соблюдается, увеличение количества портов не вызывает особых технических проблем. Скорость передачи по шине не зависит от скорости работы конкретных портов, а согласование размеров ячеек со стандартным для сетей технологии ATM облегчает возможность построения гибридных коммутаторов Ethernet-TokenRing-FDDI-ATM. Объединяющая шина широко используется в модульных коммутаторах на основе шасси.
Разделяемая память — это единая буферная память, доступная процессорам всех портов коммутатора. Все входящие кадры помещаются в эту память, а процессорам выходных портов передаются лишь указатели на блоки памяти, содержащие предназначенные им кадры. Процессоры выходных портов после успешной передачи данных отмечают эти блоки как свободные для дальнейшего использования. Общая память позволяет не делать больших запасов памяти для каждого порта (на случай перегрузок). Разделяемая память проще реализуется в одноплатных коммутаторах (шина памяти сугубо локальна).
Коммутаторы с фиксированным числом портов — самые дешевые устройства, применяемые для числа портов до 24-30. Часто 1-2 порта имеют скорость, на порядок большую скорости основной массы портов. Эти порты предназначаются для подключения приоритетных узлов (серверы) и связи с другими коммутаторами. Более дорогие модели могут иметь несколько гнезд для подключения различных интерфейсных модулей, в том числе оптических, с резервированием линий и т. п. В больших сетях такие коммутаторы применяются на уровне этажных распределителей.
Модульные коммутаторы могут иметь до сотни портов (в зависимости от размера шасси, плотности портов модулей и производительности). Эти коммутаторы применяют в качестве магистральных на уровне распределителей здания, а иногда и в этажных.
Стековые коммутаторы в идеале должны иметь пропускную способность стекового интерфейса не ниже суммы пропускной способности половины портов всех коммутаторов, объединяемых в стек. На практике этот интерфейс становится узким местом, и количество объединяемых устройств часто ограничивается четырьмя. Топология соединений устройств стека может быть различной: «цепочка», «кольцо», «звезда». При связи в цепочку отказ одного устройства может привести к распаду стека на две несвязанные части. Этот недостаток устраняется при закольцовывании устройств. И в «цепочке», и в «кольце» пропускная способность стекового интерфейса разделяется всеми устройствами. Этого недостатка позволяет избежать построение стека с помощью специального матричного коммутатора, к которому подключаются объединяемые коммутаторы.
Производительность коммутаторов рассматривается в двух аспектах: максимальное количество обрабатываемых кадров за единицу времени (определяется производительностью процессоров коммутатора) и максимальное количество бит, пропускаемых за единицу времени (может ограничиваться производительностью объединяющей шины и/или разделяемой буферной памятью). Однако даже если пропускная способность коммутатора будет достаточно высокой, возможны перегрузки, если ряд портов будет состязаться за право передачи кадров в один из портов. При перегрузке буфер начнет переполняться, и часть пакетов будет теряться без уведомления источника и получателя. Конечно, протоколы верхних уровней заметят пропажу кадров и организуют их повторную передачу, но это произойдет не быстро. В результате коммутатор может даже замедлить работу сетевых приложений (при формально высокой скорости передачи будет большое время отклика). По этой причине имеет смысл критичные узлы (например, серверы) подключать к высокоскоростным портам коммутатора.
В полудуплексном режиме коммутатор может довольно просто бороться с перегрузками, притормаживая входные порты. Для этого он может специально устраивать коллизии. Эти способы воздействия называются «обратным давлением* и «агрессивным поведением коммутатора».
В полнодуплексном режиме обратное воздействие вышеописанными способами невозможно. Здесь определены служебные символы «приостановить передачу на определенное время» и «продолжить передачу», которые вводятся в виде кодов физического уровня.
Дополнительные функции коммутаторов:
1. SB — индикация уровня загрузки и коллизий
2. Индикация состояния портов.
3. Защита от несанкционированного доступа — разрешение
работы портов только с определенными МАС- адресами узлов.
4. Управляемость (management) — возможность удаленного наблюдения за состоянием портов и сегментация (отключение) портов по команде оператора, управление защитой.
5. Мониторинг — сбор статистики по портам и устройству в целом.
6. Сегментируемость коммутатора (segmented) — возможность организации в одном физическом устройстве нескольких изолированных сегментов.
7. Поддержка двух скоростей — независимый (возможно,
автоматический) выбор скорости работы (10 или 100 Мбит/с) каждого порта.
8. Автоматический выбор скорости (10/100) и режима (полудуплекс/дуплекс) работы каждого порта (autosence).
9. Автоматическая коррекция полярности пар
10. Возможность объединения в стек.
2 Топология соединения коммутаторов
Классический вариант сети Ethernet строго предполагает, что между любой парой узлов возможен только один путь прохождения сигнала. Это обеспечивается шинной топологией для коаксиального кабеля и звездообразной или древовидной топологией для других сред передачи. Мосты и первые коммутаторы не позволяли нарушать это правило. Если при ошибочной коммутации образовывалась петля, то домен коллизий, в который она
попадала, становился практически неработоспособным. В нем кадры размножались и бесконечно повторялись, вызывая загрузку сегмента и массовые коллизии.