Синхронная и асинхронная передача данных
Передача кадров данных происходит следующим образом:
1. Узел А, желающий послать кадр узлу В, дожидается прихода маркера, захватывает его и посылает в кольцо свой кадр. Вслед за кадром выпускается маркер.
2. Узел В копирует адресованный ему кадр в свой буфер, делает отметку в поле статуса и отправляет кадр дальше по кольцу к передатчику. Если узел не является приемником кадра, он транслирует кадр без изменения.
3. Далее узел В получает маркер, выпущенный узлом А сразу после кадра. Если узел В имеет информацию для передачи, он захватывает маркер и посылает в кольцо свой кадр, а следом и маркер. Теперь в кольце присутствуют два кадра, но только один маркер.
4. Узел, получивший по кольцу переданный им же кадр, анализирует его статус, а кадр дальше не транслирует (уничтожает).
Каждая станция гарантированно увидит маркер не реже, чем через время 2xT_OPR (это худший случай, когда станция оказалась на краю свернутого кольца). Время в течение которого она имеет право передавать кадры, удерживая маркер, указывается ей средствами SMT. Протокол предполагает дисциплинированность всех станций кольца.
Трафик, передаваемый каждой станцией, подразделяется на синхронный и асинхронный (деление условно и осуществляется приложениями, обращающимися к сети). Синхронный трафик имеет приоритет над асинхронным. Многоуровневой приоритизации и резервирования, как в Token Ring, в FDDI нет, зато имеются механизмы адаптивного планирования загрузки.
Каждая станция имеет таймер обращения маркера TRT (Token-Rotation Timer), используемый при планировании загрузки кольца. Этот таймер каждый раз по приходе маркера устанавливается в значение T_OPR, после чего начинает декрементироваться. Значение TRT на момент прихода маркера заносится в таймер ТНТ (Token Holding Timer), используемый для ограничения времени асинхронной передачи. Если маркер обернулся раньше расчетного времени T_OPR – ранний маркер (early token), то станция может начать асинхронную передачу. Если маркер пришел не рано, то станция может передавать только порцию синхронного трафика в стечение выделенного ей времени.
Если маркер пришел рано, то станция при желании может быстро передать пачку асинхронных кадров, используя всю нераспределенную (под синхронный трафик) полосу кольца. Для этого используется ограниченный маркер (restricted token) и устанавливается режим расширенного диалога (extended dialogue). Послав первую порцию асинхронных кадров, станция выпускает ограниченный маркер, который для асинхронного трафика может захватить только эта же станция и станция, являющаяся адресатом назначения переданных кадров. В результате до окончания диалога вся полоса, остающаяся от синхронного трафика, делится между этими двумя станциями для передачи их асинхронного трафика. По завершении расширенного диалога (по окончании данных) станция-инициатор выпускает обычный неограниченный маркер (non-restricted token). За длительностью диалога следит SMT, и если он затягивается дольше предопределенного времени, то его принудительно прерывает станция, заметившая это нарушение (она преобразует маркер в неограниченный).
Для того чтобы время обращения маркера выдерживалось, суммарное время передач всех станций за один оборот маркера и суммарная задержка по кольцу должны быть ограничены. Суммарное время передач связывается с T_OPR следующим соотношением:
Total_Transmission_Time = T_OРR – Maximum_Ring_Latency.
Здесь Maximum_Ring_Latency – сумма задержек, вносимых станциями и кабельными сегментами. Для максимальной конфигурации (1000 станций и 200км) это время не должно превышать 1,617 мс.
Суммарное время передач распределяется между станциями в соответствии с их потребностями, каждой станции достается полоса, определяемая как
(Transmission_Time/T_OPR) 100 Мбит/с.
Правда, здесь не учитываются накладные расходы на обрамление кадра, а также расходы на заголовки LLC и более высоких уровней.