Коммутация и мультиплексирование
Обобщенная задача коммутации
Если топология сети не полносвязная, то обмен данными между произвольной парой конечных узлов (абонентов) должен идти в общем случае через транзитные узлы.
Например, в сети на рис. 1 узлы 2 и 4, непосредственно друг с другом не связанные, вынуждены передавать данные через транзитные узлы, в качестве которых могут использоваться, например, узлы 1 и 5. Узел 1 должен выполнить передачу данных с интерфейса A на интерфейс B, а узел 5 — с интерфейса F на B.
Рис. 1. Коммутация абонентов через сеть транзитных узлов.
Последовательность транзитных узлов (сетевых интерфейсов) на пути от отправителя к получателю называется маршрутом.
В самом общем виде задача коммутации — задача соединения конечных узлов через сеть транзитных узлов — может быть представлена в виде нескольких взаимосвязанных частных задач:
1. Определение информационных потоков, для которых требуется прокладывать пути.
2. Определение маршрутов для потоков.
3. Сообщение о найденных маршрутах узлам сети.
4. Продвижение – распознавание потоков и локальная коммутация на каждом транзитном узле.
5. Мультиплексирование и демультиплексирование потоков.
Определение информационных потоков
Понятно, что через один транзитный узел может проходить несколько маршрутов, например через узел 5 проходят данные, направляемые узлом 4 каждому из остальных узлов, а также все данные, поступающие в узлы 3 и 10. Транзитный узел должен уметь распознавать поступающие на него потоки данных, чтобы обеспечивать их передачу именно на те свои интерфейсы, которые ведут к нужному узлу.
Информационным потоком (data flow, data stream) называют последовательность данных, объединенных набором общих признаков, который выделяет эти данные из общего сетевого трафика.
Данные могут быть представлены в виде последовательности байтов или объединены в более крупные единицы данных — пакеты, кадры, ячейки. Например, все данные, поступающие от одного компьютера, можно определить как единый поток, а можно представить как совокупность нескольких подпотоков, каждый из которых в качестве дополнительного признака имеет адрес назначения. Каждый из этих подпотоков, в свою очередь, можно разделить на еще более мелкие подпотоки данных, например, относящихся к разным сетевым приложениям — электронной почте, копированию файлов, обращению к Web-серверу.
Понятие потока используется при решении различных сетевых задач и, в зависимости от конкретного случая, определяется соответствующий набор признаков. В задаче коммутации, суть которой — передача данных из одного конечного узла в другой, при определении потоков в роли обязательных признаков потока, очевидно, должны выступать адрес отправителя и адрес назначения данных. Тогда каждой паре конечных узлов будет соответствовать один поток и один маршрут.
Однако не всегда достаточно определить поток только парой адресов. Если на одной и той же паре конечных узлов выполняется несколько взаимодействующих по сети приложений, которые предъявляют к ней свои особые требования, поток данных между двумя конечными узлами должен быть разделен на несколько подпотоков, так чтобы для каждого из них можно было проложить свой маршрут. В таком случае выбор пути должен осуществляться с учетом характера передаваемых данных. Например для файлового сервера важно, чтобы передаваемые им большие объемы данных направлялись по каналам с высокой пропускной способностью, а для программной системы управления, которая посылает в сеть короткие сообщения, требующие обязательной и немедленной отработки, при выборе маршрута важнее надежность линии связи и минимальный уровень задержек. В таком примере набор признаков потока должен быть расширен за счет информации, идентифицирующей приложение.
Кроме того, даже для данных, предъявляющих к сети одинаковые требования, может прокладываться несколько маршрутов, чтобы за счет распараллеливания добиться одновременного использования различных каналов и тем самым ускорить передачу данных. В данном случае необходимо "пометить" данные, которые будут направляться по каждому из этих маршрутов.
Признаки потока могут иметь глобальное или локальное значение. В первом случае они однозначно определяют поток в пределах всей сети, а во втором — в пределах одного транзитного узла. Пара уникальных адресов конечных узлов для идентификации потока — это пример глобального признака. Примером признака, локально определяющего поток в пределах устройства, может служить номер (идентификатор) интерфейса устройства, с которого поступили данные. Например, узел 1 (рис. 1) может быть сконфигурирован так, что он передает все данные, поступившие с интерфейса А, на интерфейс С, а данные, поступившие с интерфейса D, на интерфейс В. Такое правило позволяет разделить два потока данных — поступающий из узла 2 и поступающий из узла 7 — и направлять их для транзитной передачи через разные узлы сети, в данном случае данные из узла 2 через узел 8, а данные из узла 7 — через узел 5.
Существует особый тип признака — метка потока. Метка может иметь глобальное значение, уникально определяющее поток в пределах сети. В таком случае она в неизменном виде закрепляется за потоком на всем протяжении его пути следования от узла источника до узла назначения. В некоторых технологиях используются локальные метки потока, значения которых динамически меняются при передаче данных от одного узла к другому.
Определить потоки – это значит задать для них набор отличительных признаков, на основании которых коммутаторы смогут направлять потоки по предназначенным для них маршрутам.
Определение маршрутов
Определение пути, то есть последовательности транзитных узлов и их интерфейсов, через которые надо передавать данные, чтобы доставить их адресату — сложная задача, особенно когда конфигурация сети такова, что между парой взаимодействующих сетевых интерфейсов существует множество путей. Задача определения маршрутов состоит в выборе из всего этого множества одного или нескольких путей. И хотя в частном случае множества имеющихся и выбранных путей могут совпадать, чаще всего выбор останавливают на одном оптимальном 1) по некоторому критерию маршруте.
В качестве критериев выбора могут выступать, например:
-
номинальная пропускная способность;
-
загруженность каналов связи;
-
задержки, вносимые каналами;
-
количество промежуточных транзитных узлов;
-
надежность каналов и транзитных узлов
Заметим, что даже в том случае, когда между конечными узлами существует единственный путь, его определение при сложной топологии сети может представлять собой нетривиальную задачу.
Маршрут может определяться эмпирически ("вручную") администратором сети, который, используя различные, часто не формализуемые соображения, анализирует топологию сети и задает последовательность интерфейсов, которую должны пройти данные, чтобы достичь получателя. Среди побудительных мотивов выбора того или иного пути могут быть: особые требования к сети со стороны различных типов приложений, решение передавать трафик через сеть определенного провайдера, предположения о пиковых нагрузках на некоторые каналы сети, соображения безопасности.
Однако эвристический подход к определению маршрутов для большой сети со сложной топологией не подходит. В этом случае такая задача решается чаще всего автоматически. Для этого конечные узлы и другие устройства сети оснащаются специальными программными средствами, которые организуют взаимный обмен служебными сообщениями, позволяющий каждому узлу составить свое представление о топологии сети. Затем на основе этого исследования и математических алгоритмов определяются наиболее рациональные маршруты.
Определить маршрут — однозначно задать последовательность транзитных узлов и их интерфейсов, через которые надо передавать данные, чтобы доставить их адресату.
Оповещение сети о выбранном маршруте
После того, как маршрут определен (вручную или автоматически), следует "сообщить" о нем всем устройствам сети. Сообщение о маршруте должно нести каждому транзитному устройству примерно такую информацию: "Если придут данные, относящиеся к потоку n, то нужно передать их на интерфейс F".
Сообщение о маршруте обрабатывается транзитным устройством, в результате чего создается новая запись в таблице коммутации, в которой локальному или глобальному признаку (признакам) потока (например, метке, номеру входного интерфейса или адресу назначения) ставится в соответствие номер интерфейса, на который устройство должно передать данные, относящиеся к этому потоку.
Ниже помещен фрагмент таблицы коммутации, содержащий запись, сделанную на основании сообщения о необходимости передачи потока n на интерфейс F.
Признаки потока |
Направление передачи данных |
n |
F |
Конечно, структура сообщения о маршруте и содержимого таблицы коммутации зависит от конкретной технологии, однако эти особенности не меняют сущности рассматриваемых процессов.
Передача информации о выбранных маршрутах так же, как и определение маршрута, может осуществляться и вручную, и автоматически. Администратор сети может зафиксировать маршрут, выполнив конфигурацию устройства вручную, например, жестко скоммутировав на длительное время определенные пары входных и выходных интерфейсов (так работали "телефонные барышни" на первых коммутаторах). Он может также по собственной инициативе внести запись о маршруте в таблицу коммутации. Однако поскольку топология сети и информационных потоков может меняться (отказ или появление новых промежуточных узлов, изменение адресов или определение новых потоков), то гибкое решение задач определения и назначение маршрутов предполагает постоянный анализ состояния сети и обновление маршрутов и таблиц коммутации, что требует применения средств автоматизации.
Оповестить сеть о найденных маршрутах — это значит вручную или автоматически настроить каждый коммутатор таким образом, чтобы он "знал", в каком направлении следует передавать каждый поток.
Продвижение — распознавание потоков и коммутация на каждом транзитном узле
Когда сеть оповещена о маршрутах, она может начать выполнять свои функции по соединению или коммутации абонентов. Для каждой пары абонентов эта операция может быть представлена совокупностью нескольких (по числу транзитных узлов) локальных операций коммутации. Отправитель должен выставить данные на тот свой порт, из которого выходит найденный маршрут, а все транзитные узлы должны соответствующим образом выполнить "переброску" данных с одного своего порта на другой, другими словами — выполнить коммутацию.
Устройство, предназначенное для выполнения коммутации, называется коммутатором (switch). Коммутатор производит коммутацию входящих в его порты информационных потоков, направляя их в соответствующие выходные порты (рис. 2).
Рис. 2. Коммутатор.
Однако, прежде чем выполнить коммутацию, коммутатор должен распознать поток. Для этого поступившие данные проверяются на предмет наличия признаков какого-либо из потоков, заданных в таблице коммутации. Если произошло совпадение, то эти данные направляются на тот интерфейс, который был определен для них в маршруте.
Термины коммутация, таблица коммутации и коммутатор в телекоммуникационных сетях могут трактоваться неоднозначно. Мы уже определили термин коммутация как процесс соединения абонентов сети через транзитные узлы. Этим же термином мы обозначаем и соединение интерфейсов в пределах отдельного транзитного узла. Коммутатором в широком смысле слова называется устройство любого типа, способное выполнять операции переключения потока данных с одного интерфейса на другой. Операция коммутации может быть выполнена в соответствии с различными правилами и алгоритмами. Некоторые способы коммутации и соответствующие им таблицы и устройства получили специальные названия (например, маршрутизация, таблица маршрутизации, маршрутизатор). В то же время за другими специальными типами коммутации и соответствующими устройствами закрепились те же самые названия – коммутация, таблица коммутации и коммутатор – которые здесь используются в узком смысле, например коммутация и коммутатор локальной сети. В телефонных сетях, которые появились намного раньше компьютерных, также используется аналогичная терминология, коммутатор является здесь синонимом телефонной станции. Из-за солидного возраста и гораздо большей (пока) распространенности телефонных сетей, чаще всего в телекоммуникациях под термином "коммутатор" понимают именно телефонный коммутатор.
Коммутатором может быть как специализированное устройство, так и универсальный компьютер со встроенным программным механизмом коммутации, в этом случае коммутатор называется программным. Компьютер может совмещать функции коммутации данных, направляемых на другие узлы, с выполнением своих обычных функций конечного узла. Однако во многих случаях более рациональным является решение, в соответствии с которым некоторые узлы в сети выделяются специально для выполнения коммутации. Эти узлы образуют коммутационную сеть, к которой подключаются все остальные. На рис. 3 показана коммутационная сеть, образованная из узлов 1, 5, 6 и 8, к которой подключаются конечные узлы 2, 3, 4, 7, 9 и 10.
Рис. 3. Коммутационная сеть.
Мультиплексирование и демультиплексирование
Как уже было сказано, прежде чем выполнить переброску данных на определенные для них интерфейсы, коммутатор должен понять, к какому потоку они относятся. Эта задача должна решаться независимо от того, поступает ли на вход коммутатора только один поток в "чистом" виде, или "смешанный" поток, который объединяет в себе несколько потоков. В последнем случае к задаче распознавания добавляется задача демультиплексирования.
Задача демультиплексирования (demultiplexing) — разделение суммарного агрегированного потока, поступающего на один интерфейс, на несколько составляющих потоков.
Как правило, операцию коммутации сопровождает также обратная операция — мультиплексирование.
Задача мультиплексирования (multiplexing) — образование из нескольких отдельных потоков общего агрегированного потока, который можно передавать по одному физическому каналу связи.
Операции мультиплексирования/демультиплексирования имеют такое же важное значение в любой сети, как и операции коммутации, потому что без них пришлось бы все коммутаторы связывать большим количеством параллельных каналов, что свело бы на нет все преимущества неполносвязной сети.
На рис. 4 показан фрагмент сети, состоящий из трех коммутаторов. Коммутатор 1 имеет пять сетевых интерфейсов. Рассмотрим, что происходит на интерфейсе 1. Сюда поступают данные с трех интерфейсов — int 3, int.4 и int.5. Все их надо передать в общий физический канал, то есть выполнить операцию мультиплексирования. Мультиплексирование представляет собой способ обеспечения доступности имеющихся физических каналов одновременно для нескольких сеансов связи между абонентами сети.
Рис. 4. Операции мультиплексирования и демультиплексирования потоков при коммутации.
Существует множество способов мультиплексирования потоков в одном физическом канале, и важнейшим из них является разделение времени. При этом способе каждый поток время от времени (с фиксированным или случайным периодом) получает в свое распоряжение физический канал и передает по нему данные. Очень распространено также частотное разделение канала, когда каждый поток передает данные в выделенном ему частотном диапазоне.
Технология мультиплексирования должна позволять получателю такого суммарного потока выполнять обратную операцию — разделение (демультиплексирование) данных на составляющие потоки. На интерфейсе int.3 коммутатор выполняет демультиплексирование потока на три составляющих подпотока. Один из них он передает на интерфейс int. 1, другой на int.2, а третий на int.5. А вот на интерфейсе int.2 нет необходимости выполнять мультиплексирование или демультиплексирование — этот интерфейс выделен одному потоку в монопольное пользование. В общем случае на каждом интерфейсе могут одновременно выполняться обе задачи — мультиплексирование и демультиплексирование.
Частный случай коммутатора (рис. 5а), у которого все входящие информационные потоки коммутируются на один выходной интерфейс, где мультиплексируются в один агрегированный поток и направляются в один физический канал, называется мультиплексором (multiplexer, mux). Коммутатор (рис. 5б), который имеет один входной интерфейс и несколько выходных, называется демультиплексором.
Рис. 5.5. Мультиплексор (а) и демультиплексор (б).
Разделяемая среда передачи данных
Еще один параметр, характеризующий использование разделяемых каналов связи — количество узлов, подключенных к такому каналу. В приведенных выше примерах к каналу связи подключались только два взаимодействующих узла, точнее — два интерфейса. В телекоммуникационных сетях используется и другой вид подключения, когда к одному каналу подключается несколько интерфейсов. Такое множественное подключение интерфейсов порождает уже рассматривавшуюся выше топологию "общая шина", иногда называемую также шлейфовым подключением. Во всех этих случаях возникает проблема согласованного использования канала несколькими интерфейсами. Ниже на рисунках показаны различные варианты разделения каналов связи между интерфейсами.
Рис. 6. Два однонаправленных физических канала.
В случае на рис. 6 коммутаторы К1 и К2 связаны двумя однонаправленными физическими каналами, то есть такими каналами, по которым информация может передаваться только в одном направлении. В этом случае передающий интерфейс является активным, и физическая среда передачи находится целиком и полностью под его управлением. Пассивный интерфейс только принимает данные. Проблемы разделения канала между интерфейсами здесь нет. Заметим, однако, что задача мультиплексирования потоков данных в канале при этом сохраняется. На практике два однонаправленных канала, реализующие в целом дуплексную связь между двумя устройствами, обычно считаются одним дуплексным каналом, а два интерфейса одного устройства рассматриваются как передающая и принимающая части одного и того же интерфейса.
Рис. 7. Один полудуплексный канал.
На рисунке 7 коммутаторы К1 и К2 связаны каналом, который может передавать данные в обе стороны, но только попеременно. При этом возникает необходимость в механизме согласования доступа интерфейсов К1 и К2 к такому каналу. Обобщением этого варианта является случай, показанный на рис. 8, когда к каналу связи подключается несколько (больше двух) интерфейсов, образуя общую шину.
Рис. 8. Схема "общая шина"
Совместно используемый несколькими интерфейсами физический канал называют разделяемым1) (shared). Часто используется также термин "разделяемая среда" (shared media) передачи данных. Разделяемые каналы связи используются не только для связей типа коммутатор-коммутатор, но и для связей компьютер-коммутатор и компьютер-компьютер.
Существуют различные способы организации совместного доступа к разделяемым линиям связи. В одних случаях используют централизованный подход, когда доступом управляет специальное устройство — арбитр, в других — децентрализованный. Внутри компьютера проблемы разделения линий связи между различными модулями также существуют — примером может служить доступ к системной шине, которым управляет либо процессор, либо специальный арбитр шины. В сетях организация совместного доступа к линиям связи имеет свою специфику из-за существенно большего времени распространения сигналов по линиям связи. Из-за этого процедуры согласования доступа к линии связи могут занимать слишком много времени и приводить к значительному снижению производительности сети.
Несмотря на все эти сложности, в локальных сетях разделяемые среды используются очень часто. Этот подход, в частности, реализован в широко распространенных классических технологиях Ethernet, Token Ring, FDDI. В глобальных сетях разделяемые между интерфейсами среды практически не используются. Это объясняется тем, что большие временные задержки при распространении сигналов вдоль протяженных каналов связи приводят к слишком длительным переговорным процедурам доступа к разделяемой среде, сокращая до неприемлемого уровня долю полезного использования канала связи на передачу данных абонентов.
Однако в последние годы наметилась тенденция отказа от разделяемых сред передачи данных и в локальных сетях. Это связано с тем, что за достигаемое таким образом снижение стоимости сети приходится расплачиваться производительностью. Сеть с разделяемой средой при большом количестве узлов всегда будет работать медленнее, чем аналогичная сеть с индивидуальными линиями связи, так как пропускная способность индивидуальной линии связи достается одному компьютеру, а при совместном использовании — делится на все компьютеры сети. Часто с такой потерей производительности приходится мириться ради увеличения экономической эффективности сети. Не только в классических, но и в совсем новых технологиях, разработанных для локальных сетей, сохраняется режим разделяемых линий связи. Например, разработчики технологии Gigabit Ethernet, принятой в 1998 году в качестве нового стандарта, включили режим разделения передающей среды в свои спецификации наряду с режимом работы по индивидуальным линиям связи.