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

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

Поведение таймера времени текущего оборота токена TRT
Рис. 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.