Лекции 2010-го года (1130544), страница 46
Текст из файла (страница 46)
Еслиесть n станций, соединенных в кольцо, и передача кадра занимает Т сек., то максимальноевремя ожидания передачи кадра будет не более nT. Специалистам по системам реальноговремени нравилась идея кольца, но не нравилась ее физическая реализация. Во-первых,кольцо не надежно - обрыв в одном месте разрушает всю систему. Во-вторых, оно плохосоответствовало топологии многих сборочных линий на заводах. В результате былразработан стандарт, который объединял достоинства 802.3 с гарантированнымнаихудшим временем передачи и приоритетностью кадров.Этот стандарт был назван 802.4 и описывал шину с маркером.
Физически шина смаркером имеет линейную или древовидную топологию. Логически станции объединеныв кольцо (рисунок 4-22), где каждая станция знает своего соседа справа и слева. Когдакольцо инициализировано, станция с наибольшим номером может послать первый кадр.После этого она передает разрешение на передачу кадра своему непосредственномусоседу, посылая ему специальный управляющий кадр - маркер. Передача кадра разрешенатолько той станции, которая владеет маркером.
Так как маркер один, то всегда толькоодна станция может осуществлять передачу, и коллизий не возникает.Рисунок 4-22. Маркерная шинаВажно отметить, что на порядок передач влияет только логические номера станций, а неих физическое размещение. Маркер передается только логическому соседу. Естественно,протокол должен учитывать случай, когда станция подключается к кольцу в ходефункционирования.802.4 МАС - очень сложный протокол, который поддерживает 10 таймеров и более 24внутренних переменных.
Его описание занимает более 200 страниц.28На физическом уровне 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 и End delimiter предназначены для распознавания начала и концакадра.
Они имеют специальную кодировку, которая не может встретиться у пользователя.Поэтому поля длины кадра не требуется. Поле Frame control отделяет управляющие поляот полей данных. Для кадров данных здесь указывается приоритет кадра. Это поле такжеиспользуется станцией-получателем для подтверждения корректного или некорректногополучения кадра. Для этого отправитель устанавливает в этом поле специальныйиндикатор подтверждения. При наличии такой установки станция-получатель, даже неимея маркера, может послать подтверждение. Без этого поля получатель был бы лишенвозможности давать подтверждения - у него было бы маркера.Рисунок 4-23. Формат кадра для шины с маркером29В управляющих кадрах это поле используется для указания типа кадра.
Среди нихпередача маркера, всевозможные кадры для поддержки кольца, например, включениестанции в кольцо и исключение станции из кольца.Поле адреса получателя и адреса отправителя такие же, как и в стандарте 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, то станция-обладательмаркера закрывает окно ответа и продолжает функционировать, как обычно.
Если естьровно один отклик, то откликнувшаяся станция включается в кольцо и становитсяследующей в кольце. Если две или более станции откликнулись, то фиксируется коллизия.Станция-обладатель маркера запускает алгоритм разрешения коллизий, посылая кадр30RESOLVE_CONTENTION. Этот алгоритм - модификация алгоритма обратного двоичногосчетчика на два разряда.У каждой станции в интерфейсе есть два бита, устанавливаемых случайно. Их значения 0,1, 2 и 3. Значение этих битов определяют величину задержки при отклике станции наприглашение подключиться к кольцу. Значения этих бит переустанавливаются каждые 50мсек.Процедура подключения новой станции к кольцу не нарушает наихудшеегарантированное время для передачи маркера по кольцу.
У каждой станции есть таймер,который сбрасывается, когда станция получает маркер. Прежде чем он будет сброшен, егозначение сравнивается с некоторой величиной. Если оно больше, то процедураподключения станции к кольцу не запускается. В любом случае за один раз подключаетсяне более одной станции. Теоретически станция может ждать подключения к кольцу скольугодно долго, на практике, не более нескольких секунд. Однако с точки зренияприложений реального времени это одно из наиболее слабых мест 802.4.Отключение станции от кольца очень просто.
Станция Х с предшественником S ипоследователем Р шлет кадр SET_SUCCESSOR, который указывает Р, что отныне егопредшественником является S. После этого Х прекращает передачу.Инициализация кольца - это специальный случай подключения станции к кольцу. Вначальный момент станция включается и слушает канал. Если она не обнаруживаетпризнаков передачи, то она генерирует маркер CLAIM_TOKEN. Если конкурентов необнаружилось, то она генерирует маркер сама и устанавливает кольцо из одной станции.Периодически она генерирует кадры SOLICIT_SUCCESSOR, приглашая другие станциивключиться в кольцо. Если в начальный момент сразу две станции были включены, тозапускается алгоритм обратного двоичного счетчика с двумя разрядами.Из-за ошибок передач и сбоев оборудования могут возникать проблем с передачеймаркера.
Например, станция передала маркер соседней, а та неожиданно «грохнулась» что делать? Стандарт дает прямолинейное решение - передав маркер, станция слушает.Если не последует передач кадра или маркера, то маркер посылается вторично.Если и при повторной передаче маркера ничего не последовало, то станция посылает кадрWHO_FOLLOWS, где указан не отвечающий сосед. Увидев этот кадр, станция, длякоторой не отвечающая станция - предшественник, шлет кадр SET_SUCCESSOR истановится новым соседом. При этом не отвечающая станция за плохое поведениеисключается из кольца.Теперь предположим, что остановилась не только следующая станция, но и следующая заней.