Метод коммутации store and forward

Сетевой коммутатор (жарг. свитч, свич от англ. switch — переключатель) — устройство, предназначенное для соединения нескольких узлов компьютерной сети в пределах одного или нескольких сегментов сети. Коммутатор работает на канальном (втором) уровне модели OSI. Коммутаторы были разработаны с использованием мостовых технологий и часто рассматриваются как многопортовые мосты. Для соединения нескольких сетей на основе сетевого уровня служат маршрутизаторы (3 уровень OSI).

В отличие от концентратора (1 уровень OSI), который распространяет трафик от одного подключённого устройства ко всем остальным, коммутатор передаёт данные только непосредственно получателю (исключение составляет широковещательный трафик всем узлам сети и трафик для устройств, для которых неизвестен исходящий порт коммутатора). Это повышает производительность и безопасность сети, избавляя остальные сегменты сети от необходимости (и возможности) обрабатывать данные, которые им не предназначались.

Далее в этой статье рассматриваются исключительно коммутаторы для технологии Ethernet.

Содержание

Принцип работы коммутатора [ править | править код ]

Коммутатор хранит в памяти (т.н. ассоциативной памяти) таблицу коммутации, в которой указывается соответствие MAC-адреса узла порту коммутатора. При включении коммутатора эта таблица пуста, и он работает в режиме обучения. В этом режиме поступающие на какой-либо порт данные передаются на все остальные порты коммутатора. При этом коммутатор анализирует фреймы (кадры) и, определив MAC-адрес хоста-отправителя, заносит его в таблицу на некоторое время. Впоследствии, если на один из портов коммутатора поступит кадр, предназначенный для хоста, MAC-адрес которого уже есть в таблице, то этот кадр будет передан только через порт, указанный в таблице. Если MAC-адрес хоста-получателя не ассоциирован с каким-либо портом коммутатора, то кадр будет отправлен на все порты, за исключением того порта, с которого он был получен. Со временем коммутатор строит таблицу для всех активных MAC-адресов, в результате трафик локализуется.

Стоит отметить малую латентность (задержку) и высокую скорость пересылки на каждом порту интерфейса.

Режимы коммутации [ править | править код ]

Существует три способа коммутации. Каждый из них — это комбинация таких параметров, как время ожидания и надёжность передачи.

  1. С промежуточным хранением (Store and Forward). Коммутатор читает всю информацию в кадре, проверяет его на отсутствие ошибок, выбирает порт коммутации и после этого посылает в него кадр.
  2. Сквозной (cut-through). Коммутатор считывает в кадре только адрес назначения и после выполняет коммутацию. Этот режим уменьшает задержки при передаче, но в нём нет метода обнаружения ошибок.
  3. Бесфрагментный (fragment-free) или гибридный. Этот режим является модификацией сквозного режима. Передача осуществляется после фильтрации фрагментов коллизий (первые 64 байта кадра анализируются на наличие ошибки и при её отсутствии кадр обрабатывается в сквозном режиме).

Задержка, связанная с «принятием коммутатором решения», добавляется к времени, которое требуется кадру для входа на порт коммутатора и выхода с него, и вместе с ним определяет общую задержку коммутатора.

Симметричная и асимметричная коммутация [ править | править код ]

Свойство симметрии при коммутации позволяет дать характеристику коммутатора с точки зрения ширины полосы пропускания для каждого его порта. Симметричный коммутатор обеспечивает коммутируемые соединения между портами с одинаковой шириной полосы пропускания, например, когда все порты имеют ширину пропускания 10 Мбит/с или 100 Мбит/с.

Асимметричный коммутатор обеспечивает коммутируемые соединения между портами с различной шириной полосы пропускания, например, в случаях комбинации портов с шириной полосы пропускания 10 Мбит/с или 100 Мбит/с и 1000 Мбит/с.

Асимметричная коммутация используется в случае наличия больших сетевых потоков типа клиент-сервер, когда многочисленные пользователи обмениваются информацией с сервером одновременно, что требует большей ширины пропускания для того порта коммутатора, к которому подсоединён сервер, с целью предотвращения переполнения на этом порте. Для того, чтобы направить поток данных с порта 100 Мбит/с на порт 10 Мбит/с без опасности переполнения на последнем, асимметричный коммутатор должен иметь буфер памяти [ источник не указан 777 дней ] .

Читайте также:  Ea access the vault

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

Буфер памяти [ править | править код ]

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

Буфер памяти может использовать два метода хранения и отправки фреймов: буферизация по портам и буферизация с общей памятью. При буферизации по портам пакеты хранятся в очередях (queue), которые связаны с отдельными входными портами. Пакет передаётся на выходной порт только тогда, когда все фреймы, находившиеся впереди него в очереди, были успешно переданы. При этом возможна ситуация, когда один фрейм задерживает всю очередь из-за занятости порта его пункта назначения. Эта задержка может происходить даже в том случае, когда остальные фреймы могут быть переданы на открытые порты их пунктов назначения.

При буферизации в общей памяти все фреймы хранятся в общем буфере памяти, который используется всеми портами коммутатора. Количество памяти, отводимой порту, определяется требуемым ему количеством. Такой метод называется динамическим распределением буферной памяти. После этого фреймы, находившиеся в буфере, динамически распределяются по выходным портам. Это позволяет получить фрейм на одном порте и отправить его с другого порта, не устанавливая его в очередь.

Коммутатор поддерживает карту портов, в которые требуется отправить фреймы. Очистка этой карты происходит только после того, как фрейм успешно отправлен.

Поскольку память буфера является общей, размер фрейма ограничивается всем размером буфера, а не долей, предназначенной для конкретного порта. Это означает, что крупные фреймы могут быть переданы с меньшими потерями, что особенно важно при асимметричной коммутации, то есть, когда порт с шириной полосы пропускания 100 Мбит/с должен отправлять пакеты на порт 10 Мбит/с.

Возможности и разновидности коммутаторов [ править | править код ]

Коммутаторы подразделяются на управляемые и неуправляемые (наиболее простые).

Более сложные коммутаторы позволяют управлять коммутацией на сетевом (третьем) уровне модели OSI. Обычно их именуют соответственно, например «Layer 3 Switch» или сокращенно «L3 Switch». Управление коммутатором может осуществляться посредством Web-интерфейса, интерфейса командной строки (CLI), протокола SNMP, RMON и т. п.

Многие управляемые коммутаторы позволяют настраивать дополнительные функции: VLAN, QoS, агрегирование, зеркалирование. Многие коммутаторы уровня доступа обладают такими расширенными возможностями, как сегментация трафика между портами, контроль трафика на предмет штормов, обнаружение петель, ограничение количества изучаемых mac-адресов, ограничение входящей/исходящей скорости на портах, функции списков доступа и т. п.

Сложные коммутаторы можно объединять в одно логическое устройство — стек — с целью увеличения числа портов. Например, можно объединить 4 коммутатора с 24 портами и получить логический коммутатор с 90 ((4*24)-6=90) портами либо с 96 портами (если для стекирования используются специальные порты).

Коммутация Interim Cut-Through (ICS — от Interim Cut-through Switching) является просто улучшением базового метода коммутации Cut-Through. При использовании метода ICS ретрансляция карликовых кадров подавляется, пропускаются лишь кадры, имеющие длину не менее 512 битов (64 байта). Поскольку длина карликовых кадров не превышает 512 битов, они всегда отфильтровываются.

Для достижения этого коммутатор ICS помещает по крайней мере 512 битов кадра в специальный FIFO-буфер (First In First Out — первым пришел, первым уходишь). Если кадр заканчивается прежде чем его длина достигнет 512 битов, то содержимое буфера (карлик) просто отбрасывается (рис. 4.18.). Такое решение проблемы ретрансляции карликов, возникающей в базовых коммутаторах Cut-Through, весьма элегантно, поэтому почти все современные коммутаторы используют метод ICS, а не базовый метод Cut-Through.

Первый недостаток метода ICS состоит в том, что время ожидания ретрансляции превышает 512 ВТ. В действительности эта проблема не такая уж и серьезная. В начале эпохи коммутаторов малое время ожидания ретрансляции рассматривалось как одна из самых важных характеристик производительности коммутатора Ethernet. Поскольку концентраторы характеризуются очень малой задержкой распространения начала пакета, то был сделан вывод, что переключатели должны иметь очень маленькое время ожидания ретрансляции, иначе пострадает производительность сети.

Читайте также:  Как зайти на модем byfly huawei

Рис. 4.18. Входные FIFO-буферы

Этот вывод оказался неверным. Время ретрансляции концентратора или коммутатора оказывает незначительное влияние на общую производительность сети даже в случае приложений мультимедиа, которые обычно требуют небольшого времени ожидания. Даже время ожидания, превышающее 512 ВТ, очень невелико по сравнению со временем ожидания, вызванным задержкой передачи и восстановлением после коллизии.

Хотя коммутатор ICS и не пропускает карликов, но некоторые ошибочные кадры все же проходят. Избежать этого невозможно, так как коммутатор ICS принимает решение о ретрансляции и начинает ретранслировать кадр до того, как получает возможность обнаружить ошибку в кадре.

Коммутация по методу ICS часто называют runt-free cut-through (свободным от карликов сквозным вырезанием) или modified cut-through (модифицированным сквозным вырезанием). Некоторые продавцы называют используемые для этой цели коммутаторы еще более замысловато, поэтому не всегда понятно, что речь идет о коммутаторе, поддерживающем именно метод ICS.

Метод коммутации SAF (Store And Forward — накопление и ретрансляция) сильно отличается от обоих рассмотренных. Коммутаторы Store-and-Forward больше похожи на традиционный мост: они ретранслируют кадр в полном объеме, предварительно поместив его в буфер.

Такой подход решает все проблемы рассмотренных ранее методов коммутации, поскольку карлики и ошибочные кадры никогда не ретранслируются. Коммутаторы SAF имеют еще одно большое преимущество: перегрузить их не так легко, как рассмотренные коммутаторы, потому что кадры буферизуются.

Недостаток данного метода по сравнению с рассмотренными состоит в намного большем времени ретрансляции, которое обычно пропорционально размеру кадра, однако иногда может значительно превышать время передачи кадра максимально допустимого размера, равное 12144 ВТ. Перед ретрансляцией кадр должен быть помещен в буфер, что требует времени. Более старые коммутаторы SAF отличаются значительным временем ожидания ретрансляции, одинаковым для всех пакетов. В большинстве же современных коммутаторов время принятия решения на ретрансляцию или фильтрацию не зависит от размера кадра. Как отмечайтесь ранее, фактор времени ожидания ретрансляции в коммутаторе обычно не ограничивает производительности сети.

По сравнению с коммутаторами ICT коммутаторы SAF обычно имеют больший объем буферного пространства для помещения кадров. Причем чем объемнее буфер, тем лучше коммутатор справляется с перегрузкой. Обратная сторона медали: большее буферное пространство стоит больших денег.

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

Размещение буферной памяти во входных портах предполагает, что кадры будут буферизоваться там, где они появляются. Кадр не будет убран из входного буфера до тех пор, пока коммутатор не примет решения о его ретрансляции или фильтрации. Входная буферизация очень эффективна и является одним из самых интересных решений при проектировании коммутаторов.

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

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

Читайте также:  Служба поддержки эппл чат

Описанные методы буферизации кадров часто применяются в различных комбинациях. Разработчики весьма изобретательно изыскивают способы эффективного использования всех трех методов. Целью проектирования является минимизировать требуемое количество памяти, эффективно ее использовать и максимизировать возможности коммутатора по борьбе с перегрузкой. В сети с коммутаторами, схема которой представлена на рис. 4.19., используется четырехпортовый коммутатор с общей памятью.

Рис. 4.19. Схема сети со многими получателями

Если узел А передает два кадра (один для узла С, а другой для узла G), то они оба окажутся в общей памяти коммутатора. Тем не менее первый пакет нельзя немедленно направить в сегмент 2 (для узла С), потому что сегмент 2 занят передачей данных между узлами С и D, и порт 2 должен ожидать конца передачи. Это обстоятельство не мешает передать второй кадр от узла А сегменту 4 для узла G, даже несмотря на то, что он получен коммутатором позже первого.

Коммутатор не обязан поддерживать принцип FIFO для всех кадров, но он должен убедиться, что кадры, передаваемые между двумя узлами, покидают его в порядке поступления. Коммутаторы может пропустить кадр 2 раньше кадра 1 (рис. 4.19.), потому что они направлены разным узлам. Если третий кадр передается от узла А узлу С, то коммутатор должен обеспечить его ретрансляцию после передачи кадра 1.

Дата добавления: 2013-12-23 ; просмотров: 3504 ; Нарушение авторских прав

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

• коммутация с промежуточным хранением (store-and-forward);

• коммутация без буферизации (cut-through) ;

• коммутация с исключением фрагментов (fragment-free).

При коммутации с промежуточным хранением (store-and-forward) коммутатор, прежде чем передать кадр, полностью копирует его в буфер и производит проверку на наличие ошибок. Если кадр содержит ошибки (не совпадает контрольная сумма, или кадр меньше 64 байт или больше 1518 байт), то он отбрасывается. Если кадр не содержит ошибок, то коммутатор находит МАС-адрес приемника в своей таблице коммутации и определяет выходной порт . Затем, если не определены никакие фильтры, коммутатор передает кадр через соответствующий порт устройству назначения.

Несмотря на то, что этот способ передачи связан с задержками (чем больше размер кадра, тем больше времени требуется на его прием и проверку на наличие ошибок), он обладает двумя существенными преимуществами:

— коммутатор может быть оснащен портами, поддерживающими разные технологии и скорости передачи, например, 10/100 Мбит/с, 1000 Мбит/с и 10 Гбит/с;

— коммутатор может проверять целостность кадра, благодаря чему поврежденные кадры не будут передаваться в соответствующие сегменты.

Коммутация без буферизации (cut-through) была реализована в первом коммутаторе Ethernet, разработанном фирмой Kalpana в 1990 г. При работе в этом режиме коммутатор копирует в буфер только МАС-адрес назначения (первые 6 байт после префикса) и сразу начинает передавать кадр, не дожидаясь его полного приема. Коммутация без буферизации уменьшает задержку, но проверку на ошибки не выполняет. Данный метод коммутации может использоваться только в том случае, когда порты коммутатора поддерживают одинаковую скорость.

Коммутация с исключением фрагментов (fragment -free ) является компромиссным решением между методами store-and-forward и cut-through. При этом методе коммутации коммутатор принимает в буфер первые 64 байта кадра, что позволяет ему отфильтровывать коллизионные кадры перед их передачей. В соответствии со спецификацией Ethernet, коллизия может произойти во время передачи первых 64 байт. Поэтому, все кадры, с длиной больше 64 байт считаются правильными. Этот метод коммутации ожидает, пока полученный кадр не будет проверен на предмет коллизии, и только после этого, начинает его передачу.