Топологические ограничения коммутаторов в локальных сетях
Рассмотрим это ограничение на примере сети, показанной на рисунке 14.7.
Рисунок. 14.7 Влияние замкнутых маршрутов на работу коммутаторов.
Два сегмента Ethernet параллельно соединены двумя коммутаторами, так что образовалась петля. Пусть новая станция с МАС-адресом 123 впервые начинает работу в данной сети. Обычно начало работы любой операционной системы сопровождается рассылкой широковещательных кадров, в которых станция заявляет о своем существовании и одновременно ищет серверы сети.
На этапе 1 станция посылает первый кадр с широковещательным адресом назначения и адресом источника 123 в свой сегмент. Кадр попадает как в коммутатор 1, так и в коммутатор 2. В обоих коммутаторах новый адрес источника 123 заносится в адресную таблицу с пометкой о его принадлежности сегменту 1, то есть создается новая запись вида:
МАС-адрес 123 – Порт 1.
Так как адрес назначения широковещательный, то каждый коммутатор должен передать кадр на сегмент 2. Эта передача происходит поочередно в соответствии с методом случайного доступа технологии Ethernet. Пусть первым доступ к сегменту 2 получает коммутатор 1 ( этап 2 на рисунке 14.7.). При появлении кадра на сегменте 2 коммутатор 2 принимает его в свой буфер и обрабатывает. Он видит, что адрес 123 уже есть в его адресной таблице, но пришедший кадр является более свежим, и он решает, что адрес 123 принадлежит сегменту 2, а не 1. Поэтому коммутатор 2 корректирует содержимое базы и делает запись о том, что адрес 123 принадлежит сегменту 2:
МАС-адрес 123 - Порт 2.
Аналогично поступает коммутатор 1, когда коммутатор 2 передает свою копию кадра на сегмент 2.
Ниже перечислены последствия наличия петли в сети.
- □ «Размножение» кадра, то есть появление нескольких его копий (в данном случае — двух, но если бы сегменты были соединены тремя коммутаторами — то трех и т. д.).
- □ Бесконечная циркуляция обеих копий кадра по петле в противоположных направлениях, а значит, засорение сети ненужным трафиком.
- □ Постоянная перестройка коммутаторами своих адресных таблиц, так как кадр с адресом источника 123 будет появляться то на одном порту, то на другом.
- В целях исключения всех этих нежелательных эффектов коммутаторы нужно применять так, чтобы между логическими сегментами не было петель, то есть строить с помощью коммутаторов только древовидные структуры, гарантирующие наличие единственного пути между любыми двумя сегментами. Тогда кадры от каждой станции будут поступать в коммутатор всегда с одного и того же порта, и коммутатор сможет правильно решать задачу выбора рационального маршрута в сети.
В небольших сетях сравнительно легко гарантировать существование одного и только одного пути между двумя сегментами. Но когда количество соединений возрастает, то вероятность непреднамеренного образования петли оказывается высокой.
Возможна и другая причина возникновения петель. Так, для повышения надежности желательно иметь между коммутаторами резервные связи, которые не участвуют в нормальной работе основных связей по передаче информационных кадров станций, но при отказе какой-либо основной связи образуют новую связную рабочую конфигурацию без петель.
Избыточные связи необходимо блокировать, то есть переводить их в неактивное состояние. В сетях с простой топологией эта задача решается вручную, путем блокирования соответствующих портов коммутаторов. В больших сетях со сложными связями используются алгоритмы, которые позволяют решать задачу обнаружения петель автоматически. Наиболее известным из них является стандартный алгоритм покрывающего дерева(Spanning Tree Algorithm, STA).
Коммутаторы
Список ключевых слов: процессор пакетов Ethernet, коммутационная матрица, коммутации «на лету», или «напролет», неблокирующий коммутатор, метод обратного давления, агрессивный захват среды, пользовательский фильтр, коммутатор с общей шиной, разделяемая многовходовая память, комбинированный коммутатор, скорость фильтрации, скорость продвижения, задержка передачи кадра, производительность коммутатора, максимальная емкость адресной таблицы.
Особенности коммутаторов
При появлении в конце 80-х начале 90-х годов быстрых протоколов, производительных персональных компьютеров, мультимедийной информации, разделении сети на большое количество сегментов классические мосты перестали справляться с работой. Обслуживание потоков кадров между теперь уже несколькими портами с помощью одного процессорного блока требовало значительного повышения быстродействия процессора, а это довольно дорогостоящее решение.
Более эффективным оказалось решение, которое и «породило» коммутаторы: для обслуживания потока, поступающего на каждый порт, в устройство ставился отдельный специализированный процессор, который реализовывал алгоритм моста. По сути, коммутатор – это мультипроцессорный мост, способный параллельно продвигать кадры сразу между всеми парами своих портов. Но если при добавлении процессорных блоков компьютер не перестали называть компьютером, а добавили только прилагательное «мультипроцессорный», то с мультипроцессорными мостами произошла метаморфоза — они превратились в коммутаторы. Этому способствовал способ связи между отдельными процессорами коммутатора – они связывались коммутационной матрицей, похожей на матрицы мультипроцессорных компьютеров, связывающие процессоры с блоками памяти.
Со временем коммутаторы вытеснили из локальных сетей классические однопроцессорные мосты. Основная причина этого — существенно более высокая производительность, с которой коммутаторы передают кадры между сегментами сети. Если мосты могли даже замедлять работу сети, то коммутаторы всегда выпускаются с процессорами портов, которые могут передавать кадры с той максимальной скоростью, на которую рассчитан протокол. Добавление к этому возможности параллельной передачи кадров между портами предопределило судьбу мостов и коммутаторов.
Производительность коммутаторов на несколько порядков выше, чем мостов – коммутаторы могут передавать до нескольких миллионов кадров с секунду, а мосты обычно обрабатывают 3-5 тыс. кадров в секунду.
За время своего существования уже без конкурентов-мостов коммутаторы вобрали в себя многие дополнительные функции, которые появлялись в результате естественного развития сетевых технологий. К этим функциям относятся, например, поддержка виртуальных сетей (VLAN), использование магистрального порта по умолчанию и т. п.
Технология коммутации сегментов Ethernet была предложена небольшой компанией Kalpana в 1990 году в ответ на растущие потребности в повышении пропускной способности связей высокопроизводительных серверов с сегментами рабочих станций. У коммутатора компании Kalpana при свободном в момент приема кадра состоянии выходного порта задержка между получением первого байта кадра и появлением этого же байта на выходе порта адреса назначения составляла всего 40 мкс, что было гораздо меньше задержки кадра при его передаче мостом.
Структурная схема коммутатора EtherSwitch, предложенного фирмой Kalpana, представлена на рисунке 14.8
Рисунок. 14.8 Структура коммутатора EtherSwitch компании Kalpana.
Каждый из 8 портов 10Base-T обслуживается одним процессором пакетов Ethernet (Ethernet Packet Processor, EPP). Кроме того, коммутатор имеет системный модуль, который координирует работу всех процессоров ЕРР, в частности ведет общую адресную таблицу коммутатора. Для передачи кадров между портами используется коммутационная матрица.Она функционирует по принципу коммутации каналов, соединяя порты коммутатора. Для 8 портов матрица может одновременно обеспечить 8 внутренних каналов при полудуплексном режиме работы портов и 16 — при дуплексном, когда передатчик и приемник каждого порта работают независимо друг от друга.
При поступлении кадра в какой-либо порт соответствующий процессор ЕРР буферизует несколько первых байтов кадра, чтобы прочитать адрес назначения. После получения адреса назначения процессор сразу же приступает к обработке кадра, не дожидаясь прихода остальных его байтов.
1. Процессор ЕРР просматривает свой кэш адресной таблицы, и если не находит там нужного адреса, обращается к системному модулю, который работает в многозадачном режиме, параллельно обслуживая запросы всех процессоров ЕРР. Системный модуль производит просмотр общей адресной таблицы и возвращает процессору найденную строку, которую тот буферизует в своем кэше для последующего использования.
2. Если адрес назначения найден в адресной таблице и кадр нужно отфильтровать, процессор просто прекращает записывать в буфер байты кадра, очищает буфер и ждет поступления нового кадра.
3. Если же адрес найден и кадр нужно передать на другой порт, процессор, продолжая прием кадра в буфер, обращается к коммутационной матрице, пытаясь установить в ней путь, связывающий его порт с портом, через который идет маршрут к адресу назначения.
4. Коммутационная матрица может это сделать только в том случае, когда порт адреса назначения в этот момент свободен, то есть не соединен с другим портом данного коммутатора.
5. Если же порт занят, то, как и в любом устройстве с коммутацией каналов, матрица в соединении отказывает. В этом случае кадр полностью буферизуется процессором входного порта, после чего процессор ожидает освобождения выходного порта и образования коммутационной матрицей нужного пути.
6. После того как нужный путь установлен, в него направляются буферизованные байты кадра, которые принимаются процессором выходного порта. Как только процессор выходного порта получает доступ к подключенному к нему сегменту Ethernet по алгоритму CSMA/CD, байты кадра сразу же начинают передаваться в сеть. Процессор входного порта постоянно хранит несколько байтов принимаемого кадра в своем буфере, что позволяет ему независимо и асинхронно принимать и передавать байты кадра (рисунок 14.9).
Описанный выше способ передачи кадра без его полной буферизации получил название коммутации «на лету» (on-the-fly), или «напролет» (cut-through). Этот способ представляет собой, по сути, конвейерную обработку кадра, когда частично совмещаются во времени несколько этапов его передачи.
Рисунок 14.9 Передача кадра через коммутационную матрицу.
1. Прием первых байтов кадра процессором входного порта, включая прием байтов адреса назначения.
2. Поиск адреса назначения в адресной таблице коммутатора (в кэше процессора или в общей таблице системного модуля).
3. Коммутация матрицы.
4. Прием остальных байтов кадра процессором входного порта.
5. Прием байтов кадра (включая первые) процессором выходного порта через коммутационную матрицу.
6. Получение доступа к среде процессором выходного порта.
7. Передача байтов кадра процессором выходного порта в сеть.
На рисунке 14.10 подставлены два режима обработки кадра: режим коммутации «на лету» с частичным совмещением во времени нескольких этапов, и режим полной буферизации кадра с последовательным выполнением всех этапов. (Заметим, что этапы 2 и 3 совместить во времени нельзя, так как без знания номера выходного порта операция коммутации матрицы не имеет смысла).
Как показывает схема, экономия от конвейеризации получается ощутимой.
Однако главной причиной повышения производительности сети при использовании коммутатора является параллельная обработка нескольких кадров.
Рисунок. 14.10 Экономия времени при конвейерной обработке кадра:
а — конвейерная обработка,
б— обычная обработка с полной буферизацией.
Этот эффект иллюстрирует рисунок 9.11, на котором показана идеальная в отношении производительности ситуация, когда четыре порта из восьми передают данные с максимальной для протокола Ethernet скоростью 10 Мбит/с. Причем они передают эти данные на остальные четыре порта коммутатора не конфликтуя — потоки данных между узлами сети распределились так, что для каждого принимающего кадры порта есть свой выходной порт.
Рисунок. 14.11 Параллельная передача кадров коммутатором.
Если коммутатор успевает обрабатывать входной трафик при максимальной интенсивности поступления кадров на входные порты, то общая производительность коммутатора в приведенном примере составит , а при обобщении примера для N портов – (N/2) х 10 Мбит/с. В таком случае говорят, что коммутатор предоставляет каждой станции или сегменту, подключенным к его портам, выделенную пропускную способность протокола.
Естественно, что в сети не всегда складывается описанная ситуация Если двум станциям, например станциям, подключенным к портам 3 и 4, одновременно нужно записывать данные на один и тот же сервер, подключенный к порту 8, то коммутатор не сможет выделить каждой станции по 10 Мбит/с, так как порт 8 не может передавать данные со скоростью 20 Мбит/с. Кадры станций будут ожидать во внутренних очередях входных портов 3 и 4, когда освободится порт 8 для передачи очередного кадра. Очевидно, хорошим решением для такого распределения потоков данных было бы подключение сервера к более высокоскоростному порту, например Fast Ethernet.
Неблокирующие коммутаторы
Коммутатор называют неблокирующим, если он может передавать кадры через свои порты с той же скоростью, с которой они на них поступают.
Когда говорят, что коммутатор может поддерживать устойчивый неблокирующий режим работы коммутатора, то имеют в виду, что коммутатор передает кадры со скоростью их поступления в течение произвольного промежутка времени. Для обеспечения подобного режима нужно таким образом распределить потоки кадров по выходным портам, чтобы: во-первых, порты справлялись с нагрузкой, во-вторых, коммутатор мог всегда в среднем передать на выходы столько кадров, сколько их поступило на входы. Если же входной поток кадров (просуммированный по всем портам) в среднем будет превышать выходной поток кадров (также просуммированный по всем портам), то кадры будут накапливаться в буферной памяти коммутатора, и при переполнении – просто отбрасываться.
Для поддержания устойчивости неблокирующего режима работы коммутатора необходимо, чтобы его производительность удовлетворяла условию , где СК – производительность коммутатора, СPI – максимальная производительность протокола, поддерживаемого 1-м портом коммутатора.
Суммарная производительность портов учитывает каждый проходящий кадр дважды - как входящий кадр и как выходящий, а так как в устойчивом режиме входной трафик равен выходному, то минимально достаточная производительность коммутатора для поддержки неблокирующего режима равна половине суммарной производительности портов. Если порт, например Ethernet 10 Мбит/с, работает в полудуплексном режиме, то производительность порта CPI равна 10 Мбит/с, а если в дуплексном, — 20 Мбит/с.
Иногда говорят, что коммутатор поддерживает мгновенный неблокирующий режим. Это означает, что он может принимать и обрабатывать кадры от всех своих портов на максимальной скорости протокола, независимо от того, обеспечиваются ли условия устойчивого равновесия между входным и выходным трафиком. Правда, обработка некоторых кадров при этом может быть неполной – при занятости выходного порта кадр помещается в буфер коммутатора.
Для поддержки мгновенного неблокирующего режима коммутатор должен обладать большей собственной производительностью, а именно она должна быть равна суммарной производительности его портов:
Первый коммутатор для локальных сетей не случайно появился для технологии Ethernet. Помимо очевидной причины, связанной с наибольшей популярностью сетей Ethernet, существовала и другая, не менее важная причина – эта технология больше других страдает от увеличения времени ожидания доступа к среде при повышении загрузки сегмента. Поэтому сегменты Ethernet в крупных сетях в первую очередь нуждались в средстве разгрузки узких мест сети, и этим средством стали коммутаторы фирмы Kalpana, а затем и других компаний.
Некоторые компании стали развивать технологию коммутации для повышения производительности других технологий локальных сетей, таких как Token Ring и FDDI. Внутренняя организация коммутаторов различных производителей иногда очень отличалась от структуры первого коммутатора EtherSwitch.
Широкому применению коммутаторов, безусловно, способствовало то обстоятельство, что внедрение технологии коммутации не требовало замены установленного в сетях оборудования — сетевых адаптеров, концентраторов, кабельной системы. Порты коммутаторов работали в обычном полудуплексном режиме, поэтому к ним прозрачно можно было подключить как конечный узел, так и концентратор, организующий целый логический сегмент. Так как коммутаторы и мосты прозрачны для протоколов сетевого уровня, то их появление в сети не оказало никакого влияния на маршрутизаторы сети.
Вопросы:
1. Для какой цели используется алгоритм покрывающего дерева?
2. Дайте определение покрывающего дерева.
3. Какой порт коммутатора называется корневым?
4. Какой порт называется назначенным?
5. Каким образом измеряется расстояние между коммутаторами в STA?
6. Назовите три этапа построения активной топологии покрывающего дерева.
7. Каким образом выбирается корневой порт из нескольких претендентов, если расстояния до корневого коммутатора у них равны?
8. Может ли администратор влиять на выбор корневого коммутатора?
9. Каким образом коммутаторы решают, что выбор активной топологии завершен?
10. Что побуждает коммутатор начать процедуру поиска новой активной топологии?
11. В чем основной недостаток STA?
12. Чего позволяет добиться агрегирование каналов?
13. Как взаимодействуют алгоритм покрывающего дерева и агрегирование каналов?
14. В чем ограничения агрегирования каналов?
15. В чем отличие между односторонним и двусторонним транком?
16. По каким соображениям выбирает порт транка при передаче кадра?
17. Зачем учитывать принадлежность кадров к одному сеансу при использовании агрегированного канала?
18. Почему VLAN можно назвать доменом широковещательного трафика?
19. Каким образом можно объединить несколько виртуальных локальных сетей?
20. Назовите основные способы образования VLAN.
21. Почему группирование портов плохо работает в сети, построенной на нескольких коммутаторах?
22. Можно ли одновременно использовать группирование портов и стандарт IEEE802.1Q?
23. Какие механизмы обеспечения показателей QoS поддерживают коммутаторы локальных сетей?
24. На сколько классов рекомендует разделять трафик стандарт IEEE 802.1D-1998?
25. Перечислите ограничения сетей, построенных на основе коммутаторов.
26. В каких случаях целесообразнее выполнить агрегирование каналов, чем выбрать более скоростную версию технологии Ethernet?
27. Каким образом стандарт IEEE 802.1Q решает проблему построения VLAN на нескольких коммутаторах?
28. Должен ли алгоритм покрывающего дерева учитывать наличие в сети VLAN?
29. Что делать, если коммутаторы сети поддерживают меньшее количество очередей, чем существует классов трафика?
Лекция 15