МАС-уровень

Функции МАС-уровня

В соответствии со стандартами IEEE 802 канальный уровень в локальных сетях состоит из двух подуровней - LLC и МАС. Стандарт FDDI не вводит свое определение подуровня LLC, а использует его сервисы, описанные в документе IEEE 802.2 LLC.

Подуровень МАС выполняет в технологии FDDI следующие функции:

В данном разделе для иллюстрации работы МАС-уровня будет использоваться в качестве иллюстрации станция с двойным подключением и одним блоком МАС, то есть станция DA/SM. Ее внутренняя структура показана на рисунке 2.19.

Рис. 2.19. Внутренняя структура станции с двойным подключением и одним блоком МАС

В каждом блоке МАС параллельно работают два процесса: процесс передачи символов - MAC Transmit и процесс приема символов - MAC Receive. За счет этого МАС может одновременно передавать символы одного кадра и принимать символы другого кадра.

Форматы кадра и токена

По сети FDDI информация передается в форме двух блоков данных: кадра и токена. Формат кадра FDDI представлен на рисунке 2.20.

Рис. 2.20. Формат кадра FDDI

Рассмотрим назначение полей кадра.

На рисунке 2.21 показан формат токена.

Рис. 2.21. Формат токена

Токен состоит по существу из одного значащего поля - поля управления, которое содержит в этом случае 1 в поле С и 0000 в поле ZZZZ.

Операции МАС-уровня

С помощью операций МАС-уровня станции получают доступ к кольцу и передают свои кадры данных. Цикл передачи кадра от одной станции к другой состоит из нескольких этапов: захвата токена станцией, которой необходимо передать кадр, передачей одного или нескольких кадров данных, освобождением токена передающей станцией, ретрансляцией кадра промежуточными станциями, распознаванием и копированием кадра станцией-получателем и удалением кадра из сети станцией-отправителем.

Рассмотрим эти операции.

Захват токена. Если станция имеет право захватить токен, то она после ретрансляции на выходной порт символов PA и SD токена, удаляет из кольца символ FC, по которому она распознала токен, а также конечный ограничитель ED. Затем она передает вслед за уже переданным символом SD символы своего кадра, таким образом, формируя его из начальных символов токена (рисунок 2.22).

Рис. 2.22. Захват токена

Передача кадра. После удаления полей FC и ED токена станция начинает передавать символы кадров, которые ей предоставил для передачи уровень LLC. Станция может передавать кадры до тех пор, пока не истечет время удержания токена.

Для сетей FDDI предусмотрена передача кадров двух типов трафика - синхронного и асинхронного.

Синхронный трафик предназначен для приложений, которые требуют предоставления им гарантированной пропускной способности для передачи голоса, видеоизображений, управления процессами и других случаев работы в реальном времени. Для такого трафика каждой станции предоставляется фиксированная часть пропускной способности кольца FDDI, поэтому станция имеет право передавать кадры синхронного трафика всегда, когда она получает токен от предыдущей станции.

Асинхронный трафик - это обычный трафик локальных сетей, не предъявляющий высоких требований к задержкам обслуживания. Станция может передавать асинхронные кадры только в том случае, если при последнем обороте токена по кольцу для этого осталась какая-либо часть неизрасходованной пропускной способности. Интервал времени, в течение которого станция может передавать асинхронные кадры, называется временем удержания токена (Token Holding Time, THT). Каждая станция самостоятельно вычисляет текущее значение этого параметра по алгоритму, рассмотренному ниже.

Рисунок 2.23 иллюстрирует процесс передачи кадра.

Рис. 2.23. Передача кадра

В ходе передачи символов собственного кадра станция удаляет из кольца все поступающие от предыдущей станции символы. Такой процесс называется МАС-заменой (MAC Overwriting). Первоначальный источник удаляемого из сети кадра не имеет значения - это может быть и данный МАС-узел, который ранее поместил этот кадр в кольцо, либо другой МАС-узел. Процесс удаления кадров во время передачи никогда не приводит к удалению еще необработанных кадров: если сеть работает корректно, то удаляются только усеченные кадры, которые образуются либо при захвате токена (этот вариант уже рассмотрен), либо при удалении своего кадра станцией-источником (этот вариант будет рассмотрен ниже). В любом случае, усеченный кадр (remnant frame) - это кадр, у которого есть начальный ограничитель, но отсутствует конечный ограничитель, а вместо него и, может быть, еще некоторых полей вставлены символы простоя Idle.

В случае, если удаляемые символы принадлежат кадру, ранее сгенерированному данным МАС-узлом, то одновременно с удалением кадра из кольца проверяются признаки статуса кадра из поля FS - распознавания адреса, копирования и ошибки. Если признак ошибки установлен, то МАС-уровень не занимается повторной передачей кадра, оставляя это уровню LLC или другим верхним уровням коммуникационного стека протоколов.

Станция прекращает передачу кадров в двух случаях: либо при истечении времени удержания токена THT, либо при передаче всех имеющихся у нее кадров до истечения этого срока. После передачи последнего своего кадра станция формирует токен и передает его следующей станции.

Повторение кадра. Если кадр не адресуется данному МАС-узлу, то последний должен просто повторить каждый символ кадра на выходном порту. Каждый МАС-узел должен подсчитывать количество полученных им полных кадров (усеченные не включаются в подсчет). Каждая станция проверяет повторяемый кадр на наличие ошибок с помощью контрольной последовательности. Если ошибка обнаружена, а признак ошибки в поле FS не установлен, то МАС-узел устанавливает этот признак в кадре, а также наращивает счетчик ошибочных кадров, распознанных данным МАС-узлом.

Обработка кадра станцией назначения. Станция назначения, распознав свой адрес в поле DA, начинает копировать символы кадра во внутренний буфер одновременно с повторением их на выходном порту. При этом станция назначения устанавливает признак распознавания адреса. Если же кадр скопирован во внутренний буфер, то устанавливается и признак копирования (невыполнение копирования может произойти, например, из-за переполнения внутреннего буфера). Устанавливается также и признак ошибки, если ее обнаружила проверка по контрольной последовательности.

Удаление кадра из кольца. Каждый МАС-узел ответственен за удаление из кольца кадров, которые он ранее в него поместил. Этот процесс известен под названием Frame Stripping. Если МАС-узел при получении своего кадра занят передачей следующих кадров, то он удаляет все символы вернувшегося по кольцу кадра. Если же он уже освободил токен, то он повторяет на выходе несколько полей этого кадра прежде, чем распознает свой адрес в поле SA. В этом случае в кольце возникает усеченный кадр, у которого после поля SA следуют символы Idle и отсутствует конечный ограничитель. Этот усеченный кадр будет удален из кольца какой-нибудь станцией, принявшей его в состоянии собственной передачи.

Инициализация кольца

Процедура инициализации кольца, известная под названием Claim Token (это название в свободном переводе можно может интерпретироваться как "соревнование претендентов на генерацию токена"), выполняется для того, чтобы все станции кольца убедились в его потенциальной работоспособности, а также пришли к соглашению о значении параметра T_Opr - максимально допустимому времени оборота токена по кольцу, на основании которого все станции вычисляют время удержания токена THT.

Процедура Claim Token выполняется в нескольких ситуациях:

Для выполнения процедуры инициализации каждая станция сети должна знать о своих требованиях к максимальному времени оборота токена по кольцу. Эти требования содержатся в параметре, называемом "требуемое время оборота токена" - TTRT (Target Token Rotation Time). Параметр TTRT отражает степень потребности станции в пропускной способности кольца - чем меньше время TTRT, тем чаще станция желает получать токен для передачи своих кадров. Процедура инициализации позволяет станциям узнать о требованиях ко времени оборота токена других станций и выбрать минимальное время в качестве общего параметра T_Opr, на основании которого в дальнейшем будет распределяться пропускная способность кольца. Параметр TTRT должен находиться в пределах от 4 мс до 165 мс и может изменяться администратором сети.

Для проведения процедуры инициализации станции обмениваются служебными кадрами МАС-уровня - кадрами Claim. Эти кадры имеют в поле управления значение 1L00 0011, поле адреса назначения содержит адрес источника (DA = SA), а в поле информации содержится 4-х байтовое значение запрашиваемого времени оборота токена T_Req.

Если какая-либо станция решает начать процесс инициализации кольца по своей инициативе, то она формирует кадр Claim Token со своим значением требуемого времени оборота токена TTRT, то есть присваивает полю T_Req свое значение TTRT. Захвата токена для отправки кадра Claim не требуется. Любая другая станция, получив кадр Claim Token, начинает выполнять процесс Claim Token. При этом станции устанавливают признак нахождения кольца в работоспособном состоянии Ring_Operational в состояние False, что означает отмену нормальных операций по передаче токена и кадров данных. В этом состоянии станции обмениваются только служебными кадрами Claim.

Для выполнения процедуры инициализации каждая станция поддерживает таймер текущего времени оборота токена TRT (Token Rotation Timer), который используется также и в дальнейшем при работе кольца в нормальном режиме. Для упрощения изложения будем считать, что этот таймер, как и другие таймеры станции, инициализируется нулевым значением и затем наращивает свое значение до определенной величины, называемой порогом истечения таймера. (В реальном кольце FDDI все таймеры работают в двоичном дополнительном коде).

Таймер TRT запускается каждой станцией при обнаружении момента начала процедуры Claim Token. В качестве предельного значения таймера выбирается максимально допустимое время оборота токена, то есть 165 мс. Истечение таймера TRT до завершения процедуры означает ее неудачное окончание - кольцо не удалось инициализировать. В случае неудачи процесса Claim Token запускается процессы Beacon и Trace, с помощью которых станции кольца пытаются выявить некорректно работающую часть кольца и отключить ее от сети.

Во время выполнения процесса Claim Token каждая станция сначала может отправить по кольцу кадр Claim со значением T_Req, равным значению ее параметра TTRT. При этом она устанавливает значение T_Opr, равное значению TTRT. Рассмотрим пример инициализируемого кольца, приведенный на рисунке 2.24.

Рис. 2.24. Процесс инициализации кольца

В некоторый момент времени все станции передали по кольцу свои предложения о значении максимального времени оборота токена: 72 мс, 37 мс, 51 мс и 65 мс. Станция, приняв кадр Claim от предыдущей станции, обязана сравнить значение T_Req, указанное в кадре со значением TTRT своего предложения. Если другая станция просит установить время оборота токена меньше, чем данная (то есть T_Req < TTRT), то данная станция перестает генерировать собственные кадры Claim и начинает повторять чужие кадры Claim, так как видит, что в кольце есть более требовательные станции. Одновременно станция фиксирует в своей переменной T_Opr минимальное значение T_Req, которое ей встретилось в чужих кадрах Claim. Если же пришедший кадр имеет значение T_Req больше, чем собственное значение TTRT, то он удаляется из кольца.

Процесс Claim завершается для станции в том случае, если она получает кадр Claim со своим адресом назначения. Это означает, что данная станция является победителем состязательного процесса и ее значение TTRT оказалось минимальным. В рассматриваемом примере это станция B со значением TTRT, равным 37 мс. Другие станции кольца не смогут получить свой кадр Claim, так как он не сможет пройти через станцию B. При равных значениях параметра TTRT преимущество отдается станции с большим значением МАС-адреса.

После того, как станция обнаруживает, что она оказалась победителем процесса Claim Token, она должна сформировать токен и отправить его по кольцу. Первый оборот токена - служебный, так как за время этого оборота станции кольца узнают, что процесс Claim Token успешно завершился. При этом они устанавливают признак Ring_Ope-
rational в состояние True, означающее начало нормальной работы кольца. При следующем проходе токена его можно будет использовать для захвата и передачи кадров данных.

Если же у какой-либо станции во время выполнения процедур инициализации таймер TRT истек, а токен так и не появился на входе станции, то станция начинает процесс Beacon.

После нормального завершения процесса инициализации у всех станций кольца устанавливается одинаковое значение переменной T_Opr.

Управление доступом к кольцу

Управление доступом к кольцу FDDI распределено между его станциями. Каждая станция при прохождении через нее токена самостоятельно решает, может она его захватить или нет, а если да, то на какое время.

Если у станции имеются для передачи синхронные кадры, то она всегда может захватить токен на фиксированное время, выделенное ей администратором.

Если же у станции имеются для передачи асинхронные кадры, то условия захвата определяются следующим образом.

Станция ведет уже упомянутый таймер текущего времени оборота токена TRT, а также счетчик количества опозданий токена Late_Ct. Время истечения таймера TRT равно значению максимального времени оборота токена T_Opr, выбранному станциями при инициализации кольца.

Счетчик Late_Ct всегда сбрасывается в нуль, когда токен проходит через станцию. Если же токен опаздывает, то таймер достигает значения T_Opr раньше очередного прибытия токена. При этом таймер обнуляется и начинает отсчет времени заново, а счетчик Late_Ct наращивается на единицу, фиксируя факт опоздания токена. При прибытии опоздавшего токена (при этом Late_Ct = 1) таймер TRT не сбрасывается в нуль, а продолжает считать, накапливая время опоздания токена. Если же токен прибыл раньше, чем истек интервал T_Opr у таймера TRT, то таймер сбрасывается в момент прибытия токена.

На рисунке 2.25 приведены различные случаи прибытия токена. Значение максимального времени оборота токена для примера, приведенного на этом рисунке, равно 30 мс.

Рис. 2.25. Поведение таймера времени текущего оборота токена TRT
и счетчика опозданий токена Late_Ct

Приведенный пример иллюстрирует следующие события:
Момент А:Токен прибыл вовремя, так как таймер TRT не достиг порога T_Opr. Таймер TRT перезапускается и начинает считать заново.
Момент В:Токен прибыл вовремя. Таймер перезапускается.
Момент С:Таймер истек раньше, чем токен прибыл на станцию. Таймер TRT перезапускается, а счетчик Late_Ct наращивается на единицу.
Момент D:Токен наконец прибыл, но он опоздал - это отмечает счетчик Late_Ct, равный 1. Счетчик сбрасывается в нуль, но таймер не перезапускается, так как при приходе токена счетчик не был равен нулю.
Момент Е:Токен прибыл на станцию. Так как он прибыл до истечения таймера и при нулевом значении счетчика Late_Ct, то считается, что он прибыл вовремя. Таймер перезапускается.

Теперь рассмотрим, каким образом значения таймера TRT и счетчика Late_Ct используются при выяснении возможности захвата токена и времени его удержания.

Станция может захватывать токен только в том случае, когда он прибывает вовремя - то есть в момент его прибытия счетчик Late_Ct равен нулю.

Время удержания токена управляется таймером удержания токена THT (Token Holding Timer). Если станция имеет в буфере кадры для передачи в момент прибытия токена и токен прибыл вовремя, то станция захватывает его и удерживает в течение периода (T_Opr - TRT), где TRT - значение таймера TRT в момент прихода токена. Для отслеживания разрешенного времени удержания токена в момент захвата токена значение TRT присваивается таймеру THT, а затем таймер TRT обнуляется и перезапускается. Таймер THT считает до границы T_Opr, после чего считается, что время удержания токена исчерпано. Станция перестает передавать кадры данных и передает токен.

Описанный алгоритм позволяет адаптивно распределять пропускную способность кольца между станциями, а точнее - ту ее часть, которая осталась после распределения между синхронным трафиком станций.

Пример работы алгоритма выделения времени для передачи асинхронного трафика приведен на рисунке 2.26. как и в предыдущем примере, время максимального оборота токена равно 30 мс.

Рис. 2.26. Выделение времени для асинхронного трафика

Рассмотрим события, иллюстрируемые примером:
Момент А:Токен прибыл вовремя, так как таймер TRT не достиг порога T_Opr. Таймер TRT перезапускается и начинает считать заново. Станция не имеет в это время асинхронных кадров, поэтому просто передает токен соседу.
Момент В:Токен прибыл вовремя. Станция имеет к этому моменту асинхронные кадры для передачи. Таймеру THT присваивается значение таймера TRT (16), и он начинает считать до значения T_Opr (30). Таймер TRT перезапускается. Станция начинает передавать кадры. Она может это делать в течение 14 мс. Если она закончит передачу имеющихся кадров раньше, то она обязана немедленно освободить токен.
Момент С:Таймер THT истек, и станция должна прекратить передачу асинхронных кадров. Станция завершает передачу текущего кадра и передает токен соседней станции. Счетчик TRT при этом продолжает работать.
Момент D:Таймер TRT истекает раньше очередного прибытия токена. Таймер перезапускается, а счетчик Late_Ct наращивается на 1.
Момент Е:Токен прибывает, но он опоздал, так как Late_Ct имеет значение 1. Станция не может захватить токен при значении Late_Ct, отличном от нуля.
Токен передается соседней станции. Счетчик Late_Ct обнуляется, а таймер TRT не перезапускается.
Момент F: Токен прибывает на станцию. Так как таймер TRT еще не истек, а значение Late_Ct равно 0, то токен прибыл вовремя. Таймер THT инициализируется значением таймера TRT (22) и начинает считать до границы T_Opr. TRT перезапускается.
Станция может передавать кадры в течение 8 мс.
Момент G:Таймер THT истекает, и передача асинхронных кадров прекращается. Станция передает токен соседней станции.

В стандарте FDDI определено также еще два механизма управления доступом к кольцу. Во-первых, в токене можно задавать уровень приоритета токена, а для каждого уровня приоритета задается свое время порога, до которого считает таймер удержания токена THT. Во-вторых, определена особая форма токена - сдерживающий токен (restricted token), с помощью которого две станции могут монопольно некоторое время обмениваться данными по кольцу.

Если таймер TRT истечет при значении Late_Ct, равном 1, то такое событие считается потерей токена и порождает выполнение процесса реинициализации кольца Claim Token.

Предыдущая глава | Оглавление | Следующая глава


Copyright © CIT