МАС-уровень
В соответствии со стандартами IEEE
802 канальный уровень в локальных
сетях состоит из двух подуровней -
LLC и МАС. Стандарт FDDI не вводит свое
определение подуровня LLC, а
использует его сервисы, описанные в
документе IEEE 802.2 LLC.
Подуровень МАС выполняет в
технологии FDDI следующие функции:
- Поддерживает сервисы для
подуровня LLC;
- Формирует кадр определенного
формата;
- Управляет процедурой передачи
токена;
- Управляет доступом станции к
среде;
- Адресует станции в сети;
- Копирует кадры,
предназначенные для данной
станции, в буфер и уведомляет
подуровень LLC и блок управления
станцией SMT о прибытии кадра;
- Генерирует контрольную
последовательность кадра (CRC) и
проверяет ее у всех кадров,
циркулирующих по кольцу;
- Удаляет из кольца все кадры,
которые сгенерировала данная
станция;
- Управляет таймерами, которые
контролируют логическую
работу кольца - таймером
удержания токена, таймером
оборота токена и т.д.;
- Ведет ряд счетчиков событий,
что помогает обнаружить и
локализовать неисправности;
- Определяет механизмы,
используемые кольцом для
реакции на ошибочные ситуации -
повреждение кадра, потерю
кадра, потерю токена и т.д.
В данном разделе для иллюстрации
работы МАС-уровня будет
использоваться в качестве
иллюстрации станция с двойным
подключением и одним блоком МАС, то
есть станция DA/SM. Ее внутренняя
структура показана на рисунке 2.19.
Рис. 2.19. Внутренняя
структура станции с двойным
подключением и одним блоком МАС
В каждом блоке МАС параллельно
работают два процесса: процесс
передачи символов - MAC Transmit и
процесс приема символов - MAC Receive.
За счет этого МАС может
одновременно передавать символы
одного кадра и принимать символы
другого кадра.
По сети FDDI информация передается
в форме двух блоков данных: кадра и
токена. Формат кадра FDDI представлен
на рисунке 2.20.
Рис. 2.20. Формат кадра FDDI
Рассмотрим назначение полей
кадра.
- Преамбула (Preamble, PA). Любой кадр
должен предваряться
преамбулой, состоящей как
минимум из 16 символов Idle (I). Эта
последовательность
предназначена для вхождения в
синхронизм генератора RCRCLK,
обеспечивающего прием
последующих символов кадра.
- Начальный ограничитель (Starting
Delimiter, SD). Состоит из пары
символов JK, которые позволяют
однозначно определить границы
для остальных символов кадра.
- Поле управления (Frame Control, FC).
Идентифицирует тип кадра и
детали работы с ним. Имеет 8-ми
битовый формат и передается с
помощью двух символов. Состоит
из подполей, обозначаемых как
CLFFZZZZ, которые имеют следующее
назначение:
- С - говорит о том, какой тип
трафика переносит кадр -
синхронный (значение 1) или
асинхронный (значение 0);
- L - определяет длину адреса
кадра, который может состоять
из 2-х байт или из 6-ти байт;
- FF - тип кадра, может иметь
значение 01 для обозначения
кадра LLC (пользовательские
данные) или 00 для обозначения
служебного кадра MAC-уровня.
Служебными кадрами МАС-уровня
являются кадры трех типов -
кадры процедуры инициализации
кольца Claim Frame, кадры процедуры
сигнализации о логической
неисправности Beacon Frame и кадры
процедуры управления кольцом
SMT Frame;
- ZZZZ - детализирует тип кадра.
- Адрес назначения (Destination Address, DA)
- идентифицирует станцию
(уникальный адрес) или группу
станций (групповой адрес),
которой(ым) предназначен кадр.
Может состоять из 2-х или 6-ти
байт.
- Адрес источника (Source Address, SA) -
идентифицирует станцию,
сгенерировавшую данный кадр.
Поле должно быть той же длины,
что и поле адреса назначения.
- Информация (INFO) - содержит
информацию, относящуюся к
операции, указанной в поле
управления. Поле может иметь
длину от 0 до 4478 байт (от 0 до 8956
символов). Стандарт FDDI
допускает размещение в этом
поле маршрутной информации
алгоритма Source Routing,
определенной в стандарте 802.5.
При этом в два старших бита
поля адреса источника SA
помещается комбинация 102 -
групповой адрес, комбинация, не
имеющая смысла для адреса
источника, а обозначающая
присутствие маршрутной
информации в поле данных.
- Контрольная
последовательность (Frame Check
Sequence, FCS) - содержит 32-х битную
последовательность,
вычисленную по стандартному
методу CRC-32, принятому и для
других протоколов IEEE 802.
Контрольная
последовательность охватывает
поля FC, DA, SA, INFO и FCS.
- Конечный ограничитель (Ending
Delimiter, ED) - содержит
единственный символ Terminate (T),
обозначающий границу кадра.
Однако за ним располагаются
еще признаки статуса кадра.
- Статус кадра (Frame Status, FS). Первые
три признака в поле статуса
должны быть индикаторами
ошибки (Error, E), распознавания
адреса (Address recognized, A) и
копирования кадра (Frame Copied, C).
Каждый из этих индикаторов
кодируется одним символом,
причем нулевое состояние
индикатора обозначается
символом Reset (R), а единичное - Set
(S). Стандарт позволяет
производителям оборудования
добавлять свои индикаторы
после трех обязательных.
На рисунке 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 выполняется в
нескольких ситуациях:
- При включении новой станции в
кольцо и при выходе станции из
кольца.
- При обнаружении какой-либо
станцией факта утери токена.
Токен считается утерянным,
если станция не наблюдает его в
течение двух периодов времени
максимального оборота токена
T_Opr.
- При обнаружении длительного
отсутствия активности в
кольце, когда станция в течение
определенного времени не
наблюдает проходящих через нее
кадров данных.
- По команде от блока управления
станцией SMT.
Для выполнения процедуры
инициализации каждая станция сети
должна знать о своих требованиях к
максимальному времени оборота
токена по кольцу. Эти требования
содержатся в параметре, называемом
"требуемое время оборота
токена" - 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.
Предыдущая
глава | Оглавление
| Следующая глава
|