К детерминированным методам доступа к среде в первую очередь можно отнести такие методы, как: вставки регистра, тактированного доступа, передачи маркера по кольцу, передачи маркера по шине.
Метод вставки регистра - этот метод используется в кольцевых сетях. Его принцип действия заключается в том, что когда некоторая станция (сетевой адаптер) располагает информацией, которую необходимо отправить, эта информация помещается в сдвиговый регистр, который может быть последовательно включен в канал передачи данных. В этом случае данные будут проходить через этот регистр. Регистр подключается последовательно к остальной части кольца, когда образуется подходящий для этого промежуток между пакетами, циркулирующими по кольцу. Регистр остается включенным в кольцо, и все пакеты проходят через него. Когда пакет, который был впервые передан станцией, возвращается к ней и полностью загружается в регистр, последний отсоединяется от кольца. Станция-приемник пакета должна после чтения данных выставлять флаг — сигнал того, что данные приняты.
Принцип работы регистра очень прост, однако практически реализовать этот метод сложно, так как поток данных, проходящих по кольцу, нельзя останавливать, и необходимы высокая скорость, с которой регистр подсоединяется к кольцу и отсоединяется от него, а также высокий уровень синхронизации. С целью уменьшения требований к величине пауз между пакетами, передаваемыми в кольцевой сети, и к времени подсоединения регистра к кольцу применяется вариант вставки регистра, который базируется на использовании двух регистров (одного для передачи, другого для приема). Для увеличения производительности кольцевой сети известен метод вставки регистра с использованием трех регистров: передающего, приемного и буферного. Этот метод позволяет удалять передаваемый пакет в узле назначения сети, не дожидаясь его возврата в узел-отправитель. Этот метод применялся в раннем варианте ЛС Cambridge Ring.
Метод тактированного доступа - этот метод используется в кольцевых сетях. Работа кольца с тактированным доступом не требует применения сдвигающих регистров и высокоскоростных электронных переключателей в станциях, подсоединенных к кольцу. Один или несколько контейнерных пакетов (или тактов) непрерывно циркулируют по кольцу. Их количество никогда не изменяется и определяется длительностью пакета (такта), общей длиной кольца и процедурой начального запуска кольца. Если кольцо очень короткое, то используемые пакеты (такты) должны быть тоже короткими, а их количество не может быть большим, так как придется вставлять в кольцо буфер с задержкой. Это объясняется тем, что начало пакета может вернуться к отправителю раньше, чем тот закончит передачу конца этого пакета. По этой причине во многих практических реализациях этого метода используется только один короткий такт и буфер с задержкой. В момент запуска кольца одна из станций формирует такт (рис. 4.1) и отправляет его по кольцу. Когда он возвращается к отправителю, это означает, что кольцо замкнуто и можно начинать работу.
Флажок начала
Флажок пусто/занято
Адрес
Информация
Ответ
Рисунок 4.1 - Структура такта
Если станция располагает информацией, которую необходимо передать, то она загружает эту информацию в регистр и ожидает, когда к ней поступит пустой такт. Пустой такт легко различается по контрольному полю в заголовке. Станция не пытается сохранить такт (это привело бы к значительному замедлению передачи информации по кольцу), а лишь сдвигает пакет данных из своего передающего регистра в поля данных такта в соответствии с прохождением такта через станцию. При этом флажок, отображающий состояние такта, переходит в состояние "занято", и в заголовке помещается адрес той станции, для которой предназначен пакет. Потом такт передается дальше по кольцу, пока он не прибудет на станцию-приемник, которая считывает информацию, которая находится в такте, но не удаляет ее из него. Уничтожение информации не происходит потому, что флажок состояния "пусто/занято" находится в заголовке такта и уже прошел через станцию в тот момент, когда она начинает читать адресное поле. Возможно и другое техническое решение, при котором станция, получившая отправленный ей пакет, выставляет в конце такта флажок того, что пакет получен. Такт (флажок которого все еще указывает на состояние "занято") потом идет от станции к станции, пока не достигнет станции-передатчика. Станция передатчик, посчитав количество тактов в кольце, распознает отправленный к ней такт и переводит флажок состояния такта в состояние "пусто", позволяя какой-нибудь другой станции использовать этот такт. Если в такте есть поле подтверждения, то станция-передатчик проверяет его содержание, чтобы убедиться в том, что станция-приемник действительно получила отправленный ей пакет.
В одном из разновидностей этого метода станции-передатчику не нужно помечать такт флажком "пусто", если эта станция имеет намерение использовать этот такт еще раз. Это может, однако, привести к тому, что какая-нибудь из станций будет удерживать такт у себя столько времени, сколько она считает нужным. В тех кольцах, где используется лишь один такт, такое состояние, является, очевидно, неприемлемым. Поэтому в большинстве реализаций такт освобождается после каждого сделанного им оборота в кольце. В этом случае остается возможность по очереди использовать такт при передаче его от станции до станции. Если станцию-приемник отключено и она не смогла прочесть пакет или нашла ошибку в такте, то станции-передатчику сообщают об этом с помощью соответствующего флажка в поле подтверждения. Тогда передатчик может еще раз передать тот же самый пакет, поместив его в следующем свободном такте. Таким образом, несмотря на явные потери времени, так как заполненный такт заставляют сделать полный оборот, он используется как на прямом пути для передачи данных к станции-приемнику, так и на обратном пути для подтверждения доставки данных станции-приемнику. Если использованный такт не был освобожден станцией-передатчиком (например, из-за сбоя на этой станции после передачи), то такт с меткой "занято" продолжает циркулировать по кольцу. На практике одной из станций предоставляется право освобождать такты, проходящие через нее в неизменном состоянии свыше одного раза. Это задание возлагается на специальную станцию, которая отвечает за пуск сети в роботу и следит за ошибками. Этот метод использован в коммерческой ЛС Cambridge Ring.
Передача маркера по кольцу при использовании метода тактированного доступа, управление кольцом становится неявно связано с пустым тактом. Альтернативным решением является доступ с передачей маркера. Маркер - это специфическая комбинация битов, которая передается от станции к станции в определенной последовательности. Если на станции есть данные, которые должны быть переданы, она вынуждена ждать, когда предыдущая станция пришлет ей маркер, т.к. доступ к моноканалу предоставляется лишь той станции, у которой в данный момент находится маркер. После получения маркера, станция на некоторое время удаляет его из кольца и помещает сразу же за пакетом данных, который содержится в сдвиговом регистре для передачи. Затем сдвиговый регистр последовательно подсоединяется к кольцу и его содержание (вместе с маркером в конце пакета) передается по кольцу. Далее регистр удаляется из кольца, а станция ожидает возвращения отправленного ею пакета. Поэтому первый же полученный пакет заносится в приемный регистр для анализа. После этого восстанавливается обычная цепь кольца, что напоминает метод вставки регистра. Станция-передатчик переходит в состояние ожидания следующего маркера, если в ней осталась информация, которую необходимо передать. Таким образом, поток информации, поступающей на некоторую станцию, всегда начинается с пакета, который отправлен этой станцией. Каждый передатчик отвечает за удаление своих пакетов из кольца. Каждый передаваемый пакет всегда становится последним в последовательности пакетов, предшествующих маркеру. В этой схеме не требуется отводить входной поток в буферный регистр с задержкой при необходимости передать какой-то пакет. Станция-приемник обычно работает аналогично станции-передатчику при тактированном доступе. Она читает пакет по мере его прохождения и может выставить флажок подтверждения в конце пакета, не изменяя при этом самого пакета. Основные сложности в кольце с курсирующим маркером возникают в случае, если маркер потерялся или передатчик не удаляет своего пакета. Первая ситуация может возникнуть в том случае, если маркер, удаленный какой-нибудь станцией, передающей информацию, потом не восстанавливается из-за аппаратного сбоя или маркер, поврежденный при передаче, нельзя распознать. Пакет может остаться не удаленным из-за того, что возникла ошибка на станции-передатчике, а поток поступающей информации не был отведен в приемный буфер. С обеими ситуациями позволяет успешно справиться специальное следящее устройство, которое распознает отсутствие маркера в конце потока данных или факт циркуляции какого-нибудь пакета по кольцу. В первом случае генерируется новый маркер, во втором — уничтожается пакет.
В случае отсутствия специальной станции, следящей за работой кольца, проблему потери маркера легко решить, позволив какой-нибудь станции создавать новый маркер, если в течение некоторого произвольного промежутка времени эта станция не приняла такой маркер. При этом возможно дублирование маркера, если какие-нибудь две станции генерируют новые маркеры одновременно. Однако этого можно избежать, если каждая из станций, генерирующих маркер, всегда помещает перед ним контрольный пакет и следит за тем, чтобы он вернулся первым. Каждый пакет, появляющийся на входе, проверяется и сбрасывается, если он отличается от переданного пакета. Если две станции делают это одновременно, то они уничтожают маркеры и пакеты друг друга. После произвольного промежутка времени в некоторой точке кольца вновь генерируется маркер. Если каждая из станций, которая уже передала пакет, будет всегда уничтожать первые пакеты, которые пришли к ней по кольцу, пока не дойдет до своего пакета, то проблема неудаленных пакетов будет решена. Метод передачи маркера очень эффективен, и к тому же не требует такого сложного следящего устройства, как при тактированном доступе. Но для реализации переключения регистров и управления маркером он требует значительно более сложного программного обеспечения для каждой из станций. Метод передачи маркера по кольцу используется в ЛС RingNet.
Передача маркера по шине. Суть метода заключается в том, что по шине от одного устройства к другому передается маркер (специальный пакет с легко распознаваемой последовательностью битов) (рис. 4.2).
0000
Адрес приемника
Адрес передатчика
Контрольная сумма (FCS)
Рисунок 4.2 - Кадр типа маркер
Сам маркер не несет никаких данных, для станций он служит разрешением на передачу кадров. В каждый момент времени в сети может существовать только один маркер. Вначале маркер создается специальной станцией или одной из соединенных станций. Появившись в сети, маркер передается от станции к станции по ранее установленным правилам. Если какая-нибудь из станций готова передать информацию, она ожидает появления маркера. Прежде, чем отправить маркер к следующей станции, данная станция вначале передает свой пакет. Станция-приемник прочтет пакет обычным способом. Потом передатчик посылает маркер, в адресном поле которого записан адрес следующей станции. Благодаря этому никакие станции не начнут передачу в одно и то же время, поэтому никакой пакет не будет поврежден из-за столкновения с другим пакетом.
Следует указать две проблемы, возникающие при реализации этого метода. Первая касается самого маркера. Если он посылается какой-нибудь станции, а та не может его прочитать (возможно, из-за того, что сама не работает), то маркер исчезает из сети. Никакая станция не может передать информацию, пока она не получит маркер. Поэтому необходима некоторая процедура, которая гарантировала бы генерацию маркера через некоторый промежуток времени, в течение которого никакой пакет не был бы передан. Маркер может генерироваться одной станцией, специально для этого предназначенной, или любой другой станцией. В последнем случае не исключена возможность одновременного возникновения в сети более чем одного маркера. Для уничтожения дубликата маркера также необходима определенная процедура. Чтобы минимизировать вероятность появления дубликатов, интервал времени появления маркера, который отсчитывается с момента последней передачи, выбирается для каждой станции случайным образом. Вторая проблема связана с добавлением новых станций в сеть и удалением из нее некоторых станций. Если отключается одна из станций, принадлежащих к логической последовательности передачи маркера, то маркер не должен посылаться этой станции. Иначе он будет потерян. Такую станцию необходимо исключить из логической последовательности. Исключение станций — простая процедура. Для ее выполнения достаточно послать предыдущей в последовательности станции сообщение, которое изменит адрес приемника маркера. При добавлении в сеть новой станции необходимо, чтобы она передала сообщение, которое просит прислать маркер на ее адрес. Вместе с маркером должен быть прислан адрес следующей станции из логической последовательности.
Основной принцип маркерного доступа не является сложным в реализации, однако из-за угрозы потери маркера в случае добавления или отключения устройств он значительно усложняется. Реализацию можно упростить, если возложить на одну из станций исполнение функций сетевого контроллера. Шину с передачей маркера использует ЛС ARCNET.