Полный курс лекций 2009-го года (1130357), страница 46
Текст из файла (страница 46)
В стандарте нет понятия приоритета кадра,что очень важно для приложений реального времени.Простейшая система с заранее известным наихудшим случаем ожидания - кольцо. Если есть nстанций, соединенных в кольцо, и передача кадра занимает Т сек., то максимальное время ожиданияпередачи кадра будет не более nT.
Специалистам по системам реального времени нравилась идея кольца,но не нравилась ее физическая реализация. Во-первых, кольцо не надежно - обрыв в одном местеразрушает всю систему. Во-вторых, оно плохо соответствовало топологии многих сборочных линий назаводах. В результате был разработан стандарт, который объединял достоинства 802.3 с гарантированнымнаихудшим временем передачи и приоритетностью кадров.Этот стандарт был назван 802.4 и описывал шину с маркером. Физически шина с маркером имеетлинейную или древовидную топологию. Логически станции объединены в кольцо (рисунок 4-22), гдекаждая станция знает своего соседа справа и слева.
Когда кольцо инициализировано, станция снаибольшим номером может послать первый кадр. После этого она передает разрешение на передачукадра своему непосредственному соседу, посылая ему специальный управляющий кадр - маркер. Передачакадра разрешена только той станции, которая владеет маркером. Так как маркер один, то всегда толькоодна станция может осуществлять передачу, и коллизий не возникает.Рисунок 4-22.
Маркерная шинаВажно отметить, что на порядок передач влияет только логические номера станций, а не ихфизическое размещение. Маркер передается только логическому соседу. Естественно, протокол долженучитывать случай, когда станция подключается к кольцу в ходе функционирования.802.4 МАС - очень сложный протокол, который поддерживает 10 таймеров и более 24 внутреннихпеременных. Его описание занимает более 200 страниц.На физическом уровне 802.4 использует коаксиальный 75-омный кабель, три разные схемыаналоговой модуляции, скорость передачи - 1,5 и 10 Мбит/сек.
Он полностью несовместим с физическимуровнем 802.3.4.3.2.1. МАС-протокол для шины с маркеромПри инициализации станции образуют кольцо в соответствии с их адресами от старших к младшим.Маркер передают от станций с большими адресами к станциям с меньшими адресами. Каждый раз, когдастанция получает маркер, она может передавать кадры в течение определенного промежутка времени.После этого она должна передать маркер следующей станции.
Если кадры достаточно короткие, то можетбыть послано несколько последовательных кадров. Если у станции нет данных для передачи, то онапередает маркер дальше, немедленно по его получении.Шина с маркером определяет четыре приоритета для кадров: 0, 2, 4 и 6. Для простоты можнопредставить, что станция разделена внутри на четыре подстанции, по одной на уровень приоритета. Кактолько кадр поступает сверху, он распределяется на одну из подстанций в соответствии с приоритетом.Таким образом, каждая подстанция имеет свою очередь кадров на передачу.Когда маркер поступил по кабелю, он попадает на подстанцию с приоритетом 6. Если у нее есть кадрна передачу, она его передает, если нет, то маркер передается подстанции с приоритетом 4. Этаподстанция передает свои кадры в течение своего интервала времени, либо по истечении определенноговременного промежутка передает маркер подстанции с приоритетом 2.
Так продолжается до тех пор, покалибо подстанция с приоритетом 0 перешлет свои кадры, либо ее таймер исчерпается и она отдаст маркерследующей станции.Из приведенной схемы ясно, что подстанция с номером 6 имеет наивысший приоритет и в любомслучае ее кадрам обеспечена некая гарантированная пропускная способность. Эта подстанция ииспользуется для передачи трафика реального времени. Например, пусть имеется сеть из 50 станций,работающая на скорости 10 Мбит/сек. и настроенная так, что на подстанции с приоритетом 6 остается 1/3пропускной способности, тогда каждая станция имеет гарантированно для приоритета 6 скорость не менее67 Кбит/сек.
Такая пропускная способность может быть использована для управления устройствами вмасштабе реального времени.На рисунке 4-23 показан формат кадра для шины с маркером. Поле Preamble предназначено длясинхронизации таймера получателя. Его длина не короче одного байта.
Поля Start delimiter и Enddelimiter предназначены для распознавания начала и конца кадра. Они имеют специальную кодировку,которая не может встретиться у пользователя. Поэтому поля длины кадра не требуется. Поле Framecontrol отделяет управляющие поля от полей данных. Для кадров данных здесь указывается приоритеткадра.
Это поле также используется станцией-получателем для подтверждения корректного илинекорректного получения кадра. Для этого отправитель устанавливает в этом поле специальный индикаторподтверждения. При наличии такой установки станция-получатель, даже не имея маркера, может послатьподтверждение. Без этого поля получатель был бы лишен возможности давать подтверждения - у негобыло бы маркера.Рисунок 4-23. Формат кадра для шины с маркеромВ управляющих кадрах это поле используется для указания типа кадра. Среди них передачамаркера, всевозможные кадры для поддержки кольца, например, включение станции в кольцо иисключение станции из кольца.Поле адреса получателя и адреса отправителя такие же, как и в стандарте 802.3. В нем адреса могутбыть 2-байтные или 6-байтные.
Поле данных может иметь длину не более 8182 байта при 2-байтномадресе и 8174 - при 6-байтном адресе. Это в пять раз длиннее, чем в 802.3, т.к. в нем необходимопредотвратить захват одной станцией канала надолго. Здесь это не опасно, т.к. есть таймер, а дляреального времени бывает полезно иметь длинные кадры. Контрольная сумма, как и в 802.3, используетсядля обнаружения ошибок.4.3.2.2. Поддержка логического кольцаПоддержка логического кольца в основном связана с проблемами включения и выключения станций.МАС-подуровень 802.4 детально описывает алгоритм, позволяющий сохранять известным наихудшийслучай при передаче маркера.
Ниже мы рассмотрим кадры, которые используются в этом случае (таблица4-24).Таблица 4-24. Управляющие кадры шины с маркеромКонтрольное полеНазваниеЗначение поля00000000Claim_tokenЗапуск маркера при инициализации00000001Solicit_successor_1Разрешение присоединиться к кольцу00000010Solicit_successor_2Разрешение присоединиться к кольцу00000011Who_followsВосстановление при потере маркера00000100Resolve_contentionЗапуск разрешения коллизии00001000TokenПередача маркера00001100Set_successorРазрешение покинуть кольцоКогда кольцо установлено, интерфейс каждой станции хранит адреса предшествующей ипоследующей станции.
Периодически держатель маркера рассылает один из кадров SOLICIT_SUCCESSOR,предлагая новым станциям присоединиться к кольцу. В этом кадре указаны адрес отправителя и адресследующей за ним станции в кольце. Станции с адресами в этом диапазоне адресов могут присоединитьсяк кольцу. Таким образом, сохраняется упорядоченность (по возрастанию) адресов в кольце.Если ни одна станция не откликнулась на SOLICIT_SUCCESSOR, то станция-обладатель маркеразакрывает окно ответа и продолжает функционировать, как обычно.
Если есть ровно один отклик, тооткликнувшаяся станция включается в кольцо и становится следующей в кольце. Если две или болеестанции откликнулись, то фиксируется коллизия. Станция-обладатель маркера запускает алгоритмразрешения коллизий, посылая кадр RESOLVE_CONTENTION. Этот алгоритм - модификация алгоритмаобратного двоичного счетчика на два разряда.У каждой станции в интерфейсе есть два бита, устанавливаемых случайно. Их значения 0, 1, 2 и 3.Значение этих битов определяют величину задержки при отклике станции на приглашение подключиться ккольцу. Значения этих бит переустанавливаются каждые 50 мсек.Процедура подключения новой станции к кольцу не нарушает наихудшее гарантированное время дляпередачи маркера по кольцу.
У каждой станции есть таймер, который сбрасывается, когда станцияполучает маркер. Прежде чем он будет сброшен, его значение сравнивается с некоторой величиной. Еслионо больше, то процедура подключения станции к кольцу не запускается. В любом случае за один разподключается не более одной станции. Теоретически станция может ждать подключения к кольцу скольугодно долго, на практике, не более нескольких секунд. Однако с точки зрения приложений реальноговремени это одно из наиболее слабых мест 802.4.Отключение станции от кольца очень просто.
Станция Х с предшественником S и последователем Ршлет кадр SET_SUCCESSOR, который указывает Р, что отныне его предшественником является S. Послеэтого Х прекращает передачу.Инициализация кольца - это специальный случай подключения станции к кольцу. В начальныймомент станция включается и слушает канал. Если она не обнаруживает признаков передачи, то онагенерирует маркер CLAIM_TOKEN.
Если конкурентов не обнаружилось, то она генерирует маркер сама иустанавливает кольцо из одной станции. Периодически она генерирует кадры SOLICIT_SUCCESSOR,приглашая другие станции включиться в кольцо. Если в начальный момент сразу две станции быливключены, то запускается алгоритм обратного двоичного счетчика с двумя разрядами.Из-за ошибок передач и сбоев оборудования могут возникать проблем с передачей маркера.Например, станция передала маркер соседней, а та неожиданно «грохнулась» - что делать? Стандарт даетпрямолинейное решение - передав маркер, станция слушает. Если не последует передач кадра илимаркера, то маркер посылается вторично.Если и при повторной передаче маркера ничего не последовало, то станция посылает кадрWHO_FOLLOWS, где указан не отвечающий сосед.
Увидев этот кадр, станция, для которой не отвечающаястанция - предшественник, шлет кадр SET_SUCCESSOR и становится новым соседом. При этом неотвечающая станция за плохое поведение исключается из кольца.Теперь предположим, что остановилась не только следующая станция, но и следующая за ней. В этомслучае запускается новая процедура посылкой кадра SOLICIT_SUCCESSOR_2.
В ней участвует процедураразрешения конфликтов. При этом все, кто хочет подключиться к кольцу, могут это сделать. Фактическикольцо переустанавливается.Другой вид проблем возникает, когда останавливается держатель маркера и маркер исчезает изкольца. Эта проблема решается запуском процедуры инициализации кольца. У каждой станции естьтаймер, который сбрасывается каждый раз, когда маркер появляется. Если значение этого таймерапревысит некоторой заранее установленное значение, то станция генерирует кадр CLAIM_TOKEN. При этомзапускается алгоритм обратного двоичного счетчика.Если оказалось два и более маркера на шине, станция, владеющая маркером, увидев передачумаркера на шине, сбрасывает свой маркер.