Глава 7. Спецификация, верификация и реализация коммуникационных протоколов

Введение

7.1 Сетевая модель альтернативно-битового протокола

7.2 Протокол HDLC

7.3 Протоколы случайного множественного доступа

7.4. Вопросы реализациикоммуникационных протоколов

7.5 Реализация протокола установления коллективного соединения в локальной вычислительной сети

7.2 Протокол HDLC

Протокол канального уровня HDLC (Higher-levelDataLinkControl), разработанный МОС, является бит-ориентированным протоколом конвейерного типа. Он эквивалентен протоколу ADCCP Американского национального института стандартов (ANSI). Подмножество HDLC используется в качестве канального протокола X.25 МККТТ. Различные промышленные фирмы пользуются своими производными от HDLC, среди которых наиболее известен протокол SDLC фирмы IBM. Протокол HDLC становится наиболее принятым протоколом канального уровня для распределенной обработки и компьютерных сетей. Подробное описание протокола можно найти в [18].

Кадр в протоколе HDLC имеет следующую структуру:

ФЛАГ АДРЕС УПРАВЛЕНИЕ ИНФОРМАЦИЯ КПП ФЛАГ

8 бит 8 бит 8/16 бит N бит 16 бит 8 бит

Этот формат кадра называют информационным. Имеется также управляющий формат, который отличается от информационного тем, что не имеет поля информации. Для обнаружения ошибок в кадрах используется кадровая проверочная последовательность (КПП). В адресном поле записывается адрес вторичной станции или направление передачи кадра по каналу.

В HDLC имеется три типа кадров: информационный (I-кадр), cупервизорный (или управляющий) (S-кадр) и ненумерованный (U-кадр). Полный перечень кадров представлен в табл. 7.1.

Таблица 7.1
Типы кадров HDLC


Название кадра Мнемоника Функция
Информационный

Супервизорные:

Готовность к приему

Неготовность к приему

Отказ

Селективный отказ

Ненумерованные:

Установить режим нормальных
ответов (расширенный)

Установить режим асинхронных
ответов (расширенный)

Установить сбалансированный
асинхронный режим (расширенный)

Разъединить соединение

Установить режим инициализации

Запрос режима инициализации

Запрос передачи (ненумерованный)

Сброс

Ненумерованный информационный

Обмен идентификаторами

Ненумерованное подтверждение

Режим разъединения

Запрос разъединения

Отказ от кадра

I

RR

RNR

REJ

SREJ



SNRM(E)

SARM(E)


SABM(E)

DISC

SIM

RIM

UP

RSET

UI

XID

UA

DM

RD

FRMR

Команда/Ответ

Команда/Ответ

Команда/Ответ

Команда/Ответ

Команда/Ответ



Команда

Команда


Команда

Команда

Команда

Ответ

Команда

Команда

Команда/Ответ

Команда/Ответ

Ответ

Ответ

Ответ

Команда/Ответ

I-кадры предназначены для переноса пользовательских данных. Кодировка управляющего поля I-кадра следующая: бит 1 – 0 (признак информационного кадра); биты 2, 3, 4 – NS; бит 5 – P/F; биты 6, 7, 8 – NR, где NS – номер передаваемого кадра, P/F – бит запроса/ответа, NR – номер ожидаемого (при приеме) кадра.

С помощью S-кадров выполняются функции управления передачей данных. Поле управления S-кадра имеет следующий формат: биты 1, 2 – 10 (признак S-кадра); биты 3, 4 – S; бит 5 – P/F; биты 6, 7, 8 – NR, где S – разновидность S-кадра.

U-кадры используются для дополнительных функций управления звеном передачи и предназначены главным образом для запуска и завершения процедур на уровне канала, а также для передачи информации о состоянии выполнения этих процедур. Поле управления U-кадра имеет следующий формат: биты 1, 2 – 11 (признак U-кадра); бит 5 – P/F; биты 3, 4, 6, 7, 8 – М (модификатор). Поле модификатора определяет разновидность U-кадра.

Кадры делятся на команды и ответы в зависимости от того, станция какого типа их пересылает. В HDLC существует три типа станций:

– первичные станции (ПрС) – те, которые посылают команды, принимают ответы и являются ответственными за восстановление ошибок канального уровня;

– вторичные станции (ВтС) – те, которые принимают команды, посылают ответы и могут участвовать в действиях по восстановлению ошибок;

– комбинированные станции – станции, сочетающие функции первичных и вторичных.

Существует несколько классов процедур HDLC,компонентами которых являются:

– три типа станций: первичная, вторичная и комбинированная;

– три типа потоков данных: сбор данных, рассылка данных или то и другое;

– два типа ответов: нормальный и асинхронный;

– три типа конфигураций: несбалансированная (для первичной и вторичной станций), симметричная (для пар станций первичная – вторичная) и сбалансированная (для комбинированных станций);

– два диапазона порядковых номеров: по модулю 8 и по модулю 128.

Режим нормальных ответов является рабочим режимом, в котором вторичная станция получает разрешение на передачу в тот момент, когда она принимает команду с битом запроса, равным 1. После этого вторичная станция передает серию кадров, а о завершении этого цикла передачи указывает установкой бита окончания, равного 1, в последнем кадре передаваемой последовательности.

В режиме асинхронных ответов вторичная станция сама принимает решение о передаче данных и не должна ждать для этого получения запроса передачи от первичной станции.

В HDLC обеспечиваются четыре метода восстановления потерь I-кадров. Самым основным из них является метод восстановления с помощью тайм-аута, который был рассмотрен на примере АБ-протокола. Кроме этого, в протоколе HDLC предусматривается посылка отрицательных квитанций. С этой целью вводятся две разновидности S-кадров – отказ (REJ) и селективный отказ (SREJ). При нарушении последовательности номеров принимающая станция посылает кадр REJ c номером NR ожидаемого кадра и уничтожает все поступающие I-кадры без каких-либо действий, пока не получит кадр с ожидаемым номером.

Для повышения эффективности использования канала вместо кадра REJ можно воспользоваться кадром селективного отказа SREJ, требующего повторной передачи только одного I-кадра. После передачи кадра REJ или SREJ передача другого кадра отказа запрещается до получения требуемого I-кадра.

Последний метод, который может использоваться в процедурах HDLC, для восстановления после ошибок, – это контроль с помощью бита запроса/окончания. Станция, выдавшая команду с битом запроса, равным 1, не может передать вторую команду с этим же битом, пока не получит ответную реакцию на первый бит запроса в виде ответа с битом конца передачи, равным 1. Станция может повторить передачу команды с битом запроса, равным 1, при отсутствии ответа на ранее выданный запрос только в случае окончания тайм-аута. Станция, принявшая команду с признаком запроса, должна при первой возможности выдать ответ с битом окончания, равным 1. В фазе нормального переноса данных номер NR ответа с битом окончания должен подтверждать все I-кадры, переданные до кадра с запросом или одновременно с ним. Если этого не происходит, что означает возникновение ошибки, то станция, выдавшая запрос передачи, будет передавать еще раз кадры, начиная с номера NR, указанного в ответе с признаком окончания.

Все описанные выше процедуры восстановления после ошибок можно объединять для получения устойчивого ко внешним воздействиям и эффективного протокола. Однако делать это надо с осторожностью, чтобы избежать взаимного влияния процедур друг на друга, которое в определенных случаях может вызвать неправильное функционирование протокола, включая блокировки [18].

Рассмотрим более подробно использование протокола HDLC на примере распределенной системы сбора информации.

Архитектура распределенной системы сбора информации

Распределенная система сбора информации (РССИ) предназначена для ввода информации с удаленных периферийных станций (ПС), где производится накопление информации, в центральную станцию (ЦС) для ее предварительной обработки. В системе допускается передача информации от ЦС к ПС. ПС подчиняется ЦС, установление и разъединение связи может производиться только ЦС. При установленной связи возможна передача информации в обоих направлениях, как от ЦС к ПС, так и от ПС к ЦС. Передача информации производится в виде сообщений. Через определенные интервалы времени ЦС осуществляет опрос состояния ПС. В качестве физической среды передачи используется низкоскоростной моноканал. Под моноканалом подразумевается общая шина, по которой производится передача информации в последовательной форме. Структура РССИ представлена на рис. 7.19.

Рис. 7.19. Распределенная система сбора информации

Архитектура связи РССИ основывается на эталонной модели взаимосвязи открытых систем [21] и во многом является сходной с архитектурой локальных вычислительных сетей (ЛВС). Для ЛВС архитектура связи упрощена. В стандартах IEEE802 для ЛВС канальный уровень подразделяется на два подуровня: подуровень управления логическим каналом (LLC – подуровень) и подуровень управления средой передачи (MAC – подуровень) [20]. Уровни, расположенные выше канального, к системе передачи данных (СПД) РССИ не относятся и в работе не рассматриваются.

На MAC-подуровне используются протоколы случайного множественного доступа (СМД), наиболее подходящие для моноканала с низким трафиком передач. На подуровне LLC используется модифицированная версия HDLC-протокола.

Протокол HDLC рассматривается в следующем объеме: тип канала связи – полудуплексный; конфигурация канала – несбалансированная; режим работы – режим асинхронных ответов; набор кадров для первичной станции (ПрС): SARM, DISC, I, RR, REJ, RNR, UP; набор кадров для вторичной станции (ВтС): CMDR, DM, RR, REJ, RNR, UA.

Рассматриваются следующие типы ошибок, определяемые средой передачи: потеря кадра, искажение полей NR и NS кадра, искажение типа кадра, приводящее к появлению как непредусмотренного протоколом кадра, так и кадра, возможного по протоколу. В последнем случае возможно сохранение правильной последовательности обмена управляющей информацией.

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

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

Ниже приводится формализованное описание протокола HDLC в форме СМ, разработанное с использованием методики, представленной в работе [12]. При описании СМ будем придерживаться следующего порядка: описание интерфейса СМ, описание элементов, описание функционирования. Считается, что нетерминальные элементы и соответствующие им СМ имеют одинаковые имена. Для устранения дублирования описания входов-выходов нетерминалов и соответствующих им СМ, описание входов-выходов будет производиться только для СМ. Приводится только часть СМ, описывающих протокол HDLC. Верхний уровень (ВУ) и нижний уровень (НУ) для протокола HDLC не рассматриваются.

Общая сетевая модель

Сетевая модель для исследования протокола HDLC представлена следующими СМ: ZWEI – начальное СМ, представляющее логический канал; STAT1 – ПрС; STAT2 – ВтС; CONN – установление соединения; DISC – разъединение соединения; TRANS – передача I-кадров; REC – прием I- и S-кадров; RECU1 – прием U- и недействительных кадров на ПрС; RECU2 – прием U- и недействительных кадров на ВтС; TIMER – таймер; HALFD – среда передачи; HIGH1 – генератор тестовых последовательностей кадров для ПрС; HIGH2 – генератор тестовых последовательностей кадров для ВтС. Иерархическая структура сетевой модели протокола HDLC представлена на рис. 7.20.

Рис. 7.20. Структура сетевой модели, предназначенной
для исследования HDLC-протокола.

Кадр в модели имеет следующие атрибуты: 1) тип кадра; 2) поле NS кадра (номер посланного кадра); 3) поле NR кадра (номер ожидаемого при приеме кадра); 4) длина I-кадра; 5) признак прерванного кадра; 6) признак искаженного кадра. Параметры модели протокола HDLC представлены в табл. 7.2.

Таблица 7.2
Параметры сетевой модели HDLC-протокола


Параметр
Интерпретация
IT1

IT2

MAXLEN

MINLEN

MODUL

NREP

PIFCS


PINR

PINS

Средний интервал времени между поступлениями сообщений с ВУ ЦС

Средний интервал времени между поступлениями сообщений с ВУ ПС

Максимальная длина кадра

Минимальная длина кадра

Модуль нумерации I-кадров

Максимально допустимое число повторных передач

Вероятность искажения кадра, приводящего к недействительной последовательности FSC, при передаче кадра

Вероятность искажения поля NR

Вероятность искажения поля NS

Параметр
Интерпретация
PITYP

SPEED

TIMEOUT

TOTBUSY

TOTCONN

TOTERR

TOTPOOL

TOTREADY

Вероятность искажения типа кадра

Скорость передачи по каналу связи

Величина тайм-аута

Временной интервал занятости BY

Длительность фазы передачи кадров с ВУ ЦС

Временной интервал между окончанием и инициированием нового соединения со стороны ВУ ЦС

Время между соседними опросами состояния ПС, проводимыми ЦС

Временной интервал незанятости ВУ

Модель первичной HDLC-станции

СМ, представляющее ПрС, изображено на рис. 7.21. СМ имеет следующие входы: CONNREQ – запрос соединения от ВУ; DATAREQ – запрос передачи данных от ВУ; DISCREQ – запрос разъединения от ВУ; POOL – опрос состояния ПС; BUSYWU – ВУ занят; READYWU – ВУ свободен; ENDTR – нижний уровень (НУ) свободен; INFRAME – приходящий из НУ кадр.

СМ имеет следующие выходы: CONNCONF – подтверждение соединения; DATAIND – индикация данных; DISCCONF – подтверждение разъединения; ERRHDLC – ошибка при передаче кадра; REJZW – отказ от соединения; ZWUST – звено установлено; INLINE – передаваемый на НУ кадр.


Рис. 7.21. Сетевая модель первичной HDLC-станции.

Функции нетерминалов определяются функциями соответствующих им СМ, перечисленных выше. Функция по приему кадров и выработке управляющих воздействий представлена двумя нетерминалами – REC и RECU1, так как функция REC используется также на стороне ВтС. Кадры, не анализируемые в нетерминале REC, через выходы INVNR или OTHER передаются для анализа в нетерминал RECU1.

Выделено шесть основных состояний HDLC-станций, состояние обмена информацией разделено на ряд подсостояний. В сетевой модели протокола HDLC часть позиций определяет основные состояния, "контексты" состояний и некоторые признаки. Ниже приводится их перечень, причем позиции, используемые как в модели ПрС, так и в модели ВтС, отмечены комбинацией 1, 2, но если в модели ПрС – цифрой 1, а в модели ВтС – цифрой 2. Различие состояний и признаков ПрС и ВтС связано с несбалансированной конфигурацией канала передачи.

Позиции, определяющие основные состояния: D1 – станция отключена (1, 2); D2 – готовность к соединению (1, 2); D3 – установление звена (1); D4 – обмен информацией (1, 2); D5 – разъединение звена (1); D6 – ожидание внешнего восстановления (1, 2).

Позиции, определяющие "контексты" состояний и некоторые признаки: RVCRNR – принят кадр RNR (запрет передачи) (1, 2); SNDREJ – послан кадр REJ (1, 2); BUSY – станция занята (1, 2); SNDCMDR – посылался кадр CMDR (2); RESFR – в состоянии "занято" отбрасывались правильные I-кадры (1, 2); RVCDM – получен кадр DM (1); SNDUP – послан кадр UP (1).

Позиция LINE представляет статус НУ. Если M(LINE) = 0, то НУ занят, если M(LINE) = 1 – свободен. Позиция #RET представляет счетчик числа повторно передаваемых кадров; QW – очередь переданных неподтвержденных кадров.

Переменные VS и VR представляют соответственно переменные передачи и приема HDLC-станции.

Через вход BUSYWU поступает сигнал о занятости ВУ. При этом формируется кадр, свидетельствующий о неготовности ПрС к приему I-кадров, для посылки его ВтС, а также устанавливается признак BUSY (переход TRRNR). Переход TR осуществляет передачу сформированного кадра на НУ. Занятие НУ имитируется удалением метки из позиции LINE.

Через вход READYWU от ВУ поступает сигнал о его готовности к приему I-кадров. Сбрасывается признак BUSY (переход RSETBUSY), формируется или кадр RR (переход RSETBUSY), или кадр REJ (переход TRREJ) в зависимости от того, отбрасывались ли в состоянии "занято" правильные I-кадры. Если отбрасывались (M(RESFR) > 0), то срабатывает переход TRREJ, если нет (M(RESFR) = 0), то переход TRRR.

Текст модели представлен на рис. 7.22.

MODEL @STAT1(CONNREQ,DATAREQ,DISCREQ:TDATA;

POOL:TDATA;

BUSYWU,READYWU:TDATA;

ENDTR:TSIMPL;

INFRAME:TDATA

/CONNCONF,DATAIND,DISCCONF:PDATA;

ERRHDLC,REJZW,ZWUST:PSIMPL;

INLINE:PDATA);

SUBMOD TRANS(IFRAME:PDATA;

ACK:TSIMPL;

TIMEOUT:TSIMPL;

SWITCHQ:PSIMPL

/ERRHDLC:TSIMPL;

INLINE:TDATA;

PQIN:PDATA;

STIMER,PTIMER:TSIMPL);

CONN(CONNREQ,RECONN:PDATA;

FUA,FDM:TDATA;

TIMEOUT:TSIMPL

/ERRHDLC:TSIMPL;

CONNCONF,INLINE:TDATA;

REJZW,STIMER,PTIMER,SWITCHQ:TSIMPL);

DISC(DISCREQ,VDISC:PDATA;

FUA,FDM:TDATA;

TIMEOUT:TSIMPL

/ERRHDLC:TSIMPL;

DISCCONF,INLINE:TDATA;

STIMER,PTIMER:TSIMPL);

REC(INFRAME:PDATA;

PQIN:TDATA

/INLINE,OTHER,INVNR,DATAFR:TDATA;

ACK:PSIMPL);

RECU1(INFRAME,INVNR:PDATA

/RECONN,VDISC:TDATA;

REJZW,ZWUST:TSIMPL;

FUA,FDM:PDATA);

TIMER(START,STOP:PSIMPL

/TIMEOUT:PSIMPL);

PLACE -- состояния станции

-------- ------

D1: -- станция отключена

NONLOCAL SIMPLE;

D2: -- готовность к соединению

MARK=1 NONLOCAL SIMPLE;

D3, -- установление звена

D4, -- обмен информацией

D5, -- разъединение звена

D6, -- ожидание внешнего восстановления

-- контексты состояния D4

-------- -------- --

RVCRNR, -- принят кадр RNR (запрет передачи)

SNDREJ, -- послан кадр REJ

BUSY, -- станция занята

SNDCMDR, -- посылался кадр CMDR

-- другие признаки

------ --------

RESFR, -- в состоянии "занято" отбрасывались

-- правильные I-кадры

RVCDM, -- получен DM

SNDUP, -- послан UP

#RET: -- счетчик числа повторно передаваемых кадров

NONLOCAL SIMPLE;

LINE: -- состояние канала связи

NONLOCAL SIMPLE MARK=1;

QW:NONLOCAL DATA; -- очередь неподтвержденных кадров

P1,P2,P3,P4,P5:DATA;

GUARD1:MARK=1 NONLOCAL SIMPLE; -- защита анализа кадров

TRAN TRRNR,TRRR,TRREJ,TR,TRUP,RSETBUSY;

LINK @STAT1.CONNREQ=>CONN.CONNREQ;

@STAT1.DATAREQ=>TRANS.IFRAME;

@STAT1.DISCREQ=>DISC.DISCREQ;

CONN.CONNCONF=>@STAT1.CONNCONF;

REC.DATAFR=>@STAT1.DATAIND;

DISC.DISCCONF=>@STAT1.DISCCONF;

(TRANS.ERRHDLC;CONN.ERRHDLC;DISC.ERRHDLC)=>@STAT1.ERRHDLC;

(TRANS.STIMER;CONN.STIMER;DISC.STIMER)=>TIMER.START;

(TRANS.PTIMER;CONN.PTIMER;DISC.PTIMER)=>TIMER.STOP;

TIMER.TIMEOUT=>(TRANS.TIMEOUT;CONN.TIMEOUT;DISC.TIMEOUT);

CONN.SWITCHQ=>TRANS.SWITCHQ;

(TRANS.INLINE;CONN.INLINE;DISC.INLINE;REC.INLIE)=>

@STAT1.INLINE;

@STAT1.INFRAME=>REC.INFRAME;

TRANS.PQIN=>REC.PQIN;

REC.INVNR=>RECU1.INVNR;

REC.OTHER=>RECU1.INFRAME;

RECU1.FDM=>(CONN.FDM;DISC.FDM);

RECU1.FUA=>(CONN.FUA;DISC.FUA);

RECU1.RECONN=>CONN.RECONN;

RECU1.VDISC=>DISC.VDISC;

(CONN.REJZW;RECU1.REJZW)=>@STAT1.REJZW;

RECU1.ZWUST=>@STAT1.ZWUST;

REC.ACK=>TRANS.ACK;

--

@STAT1.POOL=>P5=>TRUP=> @STAT1.INLINE;

TRUP=>SNDUP;

@STAT1.BUSYWU=>P1=>TRRNR=>P4=>TR=>@STAT1.INLINE;

@STAT1.READYWU=>P2=>RSETBUSY=>P3=>(TRRR;TRREJ)=>P4;

TRRNR=>BUSY=><0,ALL>RSETBUSY;

LINE=>(TR;TRUP);

RESFR=>(<->TRRR;<1,ALL>TRREJ);

@STAT1.ENDTR=>LINE

VAR VS,VR:INTEGER; -- переменные передачи и приема

PTRQW:INTEGER;

VAR LASTNR:INTEGER;

PROC FOR TRUP:

P5.1.P[1]:=10;

END;
--
PROC FOR TRREJ:
P3.1.P[1];=2;
P3.1.P[3]:=VR;
END;
--
PROC FOR TRRR:
P3.1.P[1]:=3;
P3.1.P[3]:=VR;
END;
--
PROC FOR TRRNR:
P1.1.P[1]:=4;
P1.1.P[3]:=VR
END;
END @STAT1;

Рис. 7.22. Модель первичной HDLC-cтанции

Модель установления соединения

СМ, являющееся моделью установления соединения (CONN), изображено на рис. 7.23. СМ имеет следующие входы: CONNREQ – запрос соединения от ВУ; RECONN – запрос повторного соединения; FUA – уведомление о принятии UA-кадра; FDM – уведомление о принятии DM-кадра; TIMEOUT – уведомление об окончании тайм-аута.

СМ имеет следующие выходы: CONNCONF – подтверждение соединения; REJZW – отказ соединения; ERRHDLC – ошибка при установлении соединения; STIMER – запуск таймера; PTIMER – останов таймера; INLINE – передаваемый на НУ SARM-кадр; SWITCHQ – переключение очереди QW в режим входной очереди.

Прием запроса соединения от ВУ возможен в состоянии готовности к соединению (состояние D2) или в состоянии ожидания внешнего восстановления (состояние D6). В остальных состояниях станции запрос игнорируется. Переход TRSARM производит передачу кадра SARM на НУ и запуск таймера. Метка в позиции SARMSEND свидетельствует о том, что кадр SARM послан и ожидается получение кадров UA, DM или сигнала окончания тайм-аута.

Рис. 7.23. Сетевая модель установления соединения

При получении кадра UA срабатывает переход RVCFUA, в результате чего обнуляются переменные VS и VR, станция из состояния D3 переходит в состояние D4, останавливается таймер, на ВУ через выход CONNCONF посылается сигнал подтверждения соединения, через выход SWITCHQ посылается сигнал о переходе очереди QW в режим входной очереди кадров.

При получении кадра DM, свидетельствующего об отказе от соединения противоположной станции, срабатывает переход RVCDM, в результате чего станция из состояния D3 переходит в состояние D2, останавливается таймер, на ВУ через выход REJZW передается сигнал об отказе соединения.

При получении сигнала окончания тайм-аута срабатывает переход TO, в результате чего увеличивается на единицу значение переменной N2, определяющей число повторных передач кадра. Если N2 стало равным максимальному допустимому значению, то кадр перемещается в позицию E16, срабатывает переход ERR, в результате чего станция переходит в состояние D6, на ВУ через выход ERRHDLC посылается сигнал об ошибке при установлении соединения. Если N2 меньше своего максимально допустимого значения, то метка передается в позицию C2, что приводит к повторному срабатыванию перехода TRSARM.

Текст модели представлен на рис. 7.24.

MODEL @CONN (CONNREQ,RECONN:TDATA;

FUA,FDM:PDATA;

TIMEOUT:PSIMPL -- входы

/ERRHDLC:PSIMPL;

CONNCONF,INLINE:PDATA;

REJZW,STIMER,PTIMER,SWITCHQ:PSIMPL); -- выходы

PLACE P1,P2,C2,SARMSEND,E16,LT16:DATA;

D2,D3,D4,D6, -- осн. состояния станции

SNDCMDR,RVCDM,RVCRNR,SNDREJ,BUSY,RESFR,LINE:DECLARED SIMPLE;

-- контексты состояний

GUARD1:MARK=1 DECLARED SIMPLE; -- защита анализа кадра

TRAN T23,T63,DEL,RSETPRZ,TRSARM,TO,ERR,RESEND,RVCFUA,RVCFDM;

LINK -- пути запроса соединения

@CONN.CONNREQ=>P1=>(T23;T63)=>P2=>RSETPRZ=>C2=>TRSARM=>

(@CONN.INLINE;SARMSEND=>(TO=>(E16=>ERR;

LT16=>RESEND=>C2);

RVCFUA=>@CONN.CONNCONF;

RVCFDM=>@CONN.REJZW));

ERR=>@CONN.ERRHDLC;

@CONN.RECONN=>P2;

-- переходы состояний

RVCFDM=>D2=>(T23;<->DEL);

(T23;T63)=>D3=>(<1,0>TO;RVCFUA;RVCFDM;<0,ALL>ERR);

RVCFUA=>D4;

ERR=>D6=>(T63;<->DEL);

-- управление таймером

@CONN.TIMEOUT=>TO;

TRSARM=>@CONN.STIMER;

(RVCFUA;RVCFDM)=>@CONN.PTIMER;

-- сброс признаков

(SNDCMDR;RVCDM;RVCRNR;SNDREJ;BUSY;RESFR)=><0,ALL>RSETPRZ;

RVCFUA=>@CONN.SWITCHQ;

-- остальное

P1=>DEL;LINE=>TRSARM;

@CONN.FUA=>RVCFUA;

@CONN.FDM=>RVCFDM

--

VAR N2:INTEGER; -- число повторных передач

VAR VR,VS:INTEGER DECLARED;

VAR NREP:INTEGER DECLARED;

VAR LASTNR:INTEGER DECLARED;

PROC FOR RSETPRZ:N2:=0;END;

PROC FOR TRSARM:

C2.1.P[1]:=5; -- SARM

END;

PROC FOR TO:

N2:=N2+1;

OUTPRED(*,E16):=N2>=NREP;

OUTPRED(*,LT16):=N2<NREP;

END;

PROC FOR RVCFUA:

VR:=0;VS:=0;LASTNR:=0;

END;

END @CONN;
Рис. 7.24. Модель установления соединения

Результаты исследования сетевых моделей протоколов

Представим результаты исследования сетевой модели HDLC-протокола.

1. Выбрана последовательность анализа кадров и выработки управляющих воздействий (ПАКВУВ). В описании стандартов протокола HDLC ПАКВУВ не определяется. Однако от использованной ПАКВУВ во многом зависит корректность и эффективность реализации протокола в случае, когда используется "интерпретирующий" анализ кадра, т. е. когда выработка управляющих воздействий производится по мере проведения анализа кадра.

2. Случаи потери работоспособности СПД РССИ (появление тупиков, блокировок, бесполезных зацикливаний) на уровне одного логического канала при заданных типах ошибок зафиксированы не были, что, однако, не гарантирует их отсутствия. Это является недостатком метода тестирования с использованием случайных тестовых последовательностей. В этом случае исследование протокола тем полнее, чем длительнее время прогона модели на инструментальной ЭВМ.

3. Зафиксированы случаи:

а) дублирования кадра. Пример: на переданный I-кадр выдается ответ RR, который теряется. Следом идет повторная инициализация канала передачи (кадр SARM). Неподтвержденный, но принятый I-кадр передается второй раз;

б) потери кадра. Пример: при передаче по каналу связи поле NR кадра увеличилось, но так, что осталось еще действительным. При приеме такого кадра будут подтверждены также те кадры, которые в действительности не должны подтверждаться.

HDLC-протокол не гарантирует обнаружения и исправления ошибок типа потери и дублирования кадров, поэтому для обеспечения надежной связи возможно введение еще одного уровня протоколов связи.

4. Выбран критерий качества функционирования протокола, названный эффективностью передачи по направлению ( – от ПрС к ВтС, – от ВтС к ПрС), определяемый как отношение числа принятых без ошибок I-кадров к общему числу переданных по направлению кадров. При моделировании HDLC-протокола использовались следующие режимы работы канала передачи:

1) отсутствие ошибок в канале передачи;

2) искажение поля NS кадра;

3) искажение поля NR кадра;

4) искажение типа кадра;

5) наличие ошибок каждого типа.

Из анализа результатов моделирования сделан вывод, что при использованных параметрах протокола наибольшее влияние на снижение эффективности передачи оказывают ошибки типа "искажение поля NR" и "искажение типа кадра", что объясняется тем, что ошибки этого типа обычно вызывают повторную инициализацию канала передачи. Превышение над для режимов 3–5 обусловлено несбалансированностью звена передачи – для восстановления после некоторых типов ошибок объем управляющей информации в сторону ПрС превышает объем управляющей информации в сторону ВтС.

Mодель обмена данными в протоколе HDLC

Ниже представлена сетевая имитационная модель звена передачи данных (ЗПД), основанного на протоколе HDLC, причем рассматривается только фаза обмена данными. Предлагаемая сетевая модель является законченной и независимой от рассмотренных выше сетевых моделей. При описании модели, если это не вызывает неопределенности, будем допускать смешение понятий модели и моделируемой области.

В данной модели протокол HDLC рассматривается в следующем объеме: режим работы – асинхронный балансный режим (ABM); типы потоков данных – сбор и рассылка данных; конфигурация канала – сбалансированная; диапазон порядковых номеров – по модулю 8; набор кадров для комбинированной станции – I, RR, REJ. Следует отметить, что представленная сетевая модель может быть использована для исследования симметричных конфигураций с режимом асинхронных ответов. Используемый алгоритм обмена данными представлен на рис. 7.25.

ПЕРЕДАЧА НОВОГО КАДРА
------------- ---------- ---------

ЕСЛИ W>0,
ТО
{ W:=W-1;
ЕСЛИ очередь QW пуста,
ТО Перезапустить таймер;
Выбрать кадр из входной очереди;
NS:=VS;
Поместить копию кадра в QW;
VS:=[VS+1]mod 8;
NR:=VR;
Послать кадр; }

ОКОНЧАНИЕ ТАЙМ-АУТА
---------------- ---------------
ПОВТОРНАЯ ПЕРЕДАЧА КАДРОВ;

ПОВТОРНАЯ ПЕРЕДАЧА КАДРОВ
--------------- ------------- ----------
NRET:=<Число кадров в QW>;
i:=1; -- Указатель кадра в QW
ПОКА i<=NRET ДЕЛАТЬ
Выбрать i-й кадр (копию) из QW;
NR:=VR;
Послать кадр;
i:=i+1;
КОНЕЦ ПОКА;
Перезапустить таймер;

ПОДТВЕРЖДЕНИЕ КАДРОВ
---------------------- ----------
Удалить первые ACK-кадров из QW;
W:=W+ACK;
ЕСЛИ очередь QW пуста,
ТО остановить таймер;

ПРИЕМ КАДРА
--------- --------
ЕСЛИ недействительна КПП,
ТО { Уничтожить кадр; Перейти на КОН; }
-- Проверка поля NR
ЕСЛИ [NR<=VS]mod 8,
ТО -- действительный номер NR
ЕСЛИ NR-LASTNR>0,
ТО -- есть подтвержденные кадры
{ ACK:=NR LASTNR;
ПОДТВЕРЖДЕНИЕ КАДРОВ;
LASTNR:=NR; }
ИНАЧЕ ;
ИНАЧЕ { Уничтожить кадр; Перейти на КОН; }
-- Проверка типа кадра
ЕСЛИ тип кадра REJ,
ТО
ПОВТОРНАЯ ПЕРЕДАЧА КАДРОВ;
ИНАЧЕ
ЕСЛИ кадр информационный,
ТО -- проверка поля NS
ЕСЛИ NS=VR,
ТО -- Правильная последовательность
{ [VR:=VR+1]mod 8;
Передать принятый кадр на ВУ;
SNDREJ:=0;
ЕСЛИ входная очередь кадров пуста,
ТО
{ Сформировать кадр RR;
NR:=VR;
Послать кадр RR; }}
ИНАЧЕ
{ ЕСЛИ SNDREJ=0, -- кадр REJ не посылался
ТО
{ Сформировать кадр REJ;
NR:=VR;
Послать кадр REJ;
SNDREJ:=1; }
Уничтожить кадр; }
КОН: ;

Рис. 7.25.Определение фазы передачи данных протокола HDLC
в виде программы
W – переменная, определяющая число кадров, которые можно передать без подтверждения;
VS – переменная передачи;
VR – переменная приема;
NS – порядковый номер информационного кадра;
NR – номер ожидаемого (при приеме) кадра;
LASTNR – поле NR последнего правильно принятого кадра;
QW – очередь переданных, но не подтвержденных кадров;
NRET – число повторно передаваемых кадров;
ACK – число подтверждаемых кадров;
КПП – кадровая проверочная последовательность
Рассматриваемая модель HDLC-протокола включает следующие СМ: HDLC – звено передачи данных (начальное СМ); STAT – комбинированная станция; TRANS – передача информационных кадров (I-кадров); REC – прием кадров; MEDIUM – среда передачи; GENER – генератор I-кадров; TIMER – таймер. Метка, представляющая кадр, имеет следующие атрибуты: P[1] – тип кадра (если P[1] = 1, то I-кадр; если P[1] = 2, то RR-кадр; если P[1] = 3, то REJ-кадр); P[2] – поле NS кадра; P[3] – поле NR кадра; P[4] – длина кадра; P[5] – признак искажения кадра. В сетевой модели используются следующие глобальные переменные: VS – переменная передачи; VR – переменная приема; LASTNR – поле NR последнего правильно принятого кадра; PTRQW – указатель кадра в очереди QW. Спецификация сетевой модели представлена таблицами интерпретации переходов (табл. 7.3) и позиций (табл. 7.4). В данных таблицах под W понимается число кадров, которые можно передать без подтверждения.
Таблица 7.3
Интерпретация переходов сетевой модели протокола HDLC


Переход
Интерпретация и действия
Модель передачи кадров
FROMINQU Вход в критическую секцию. Выборка информационного кадра из входной очереди для передачи.
Уменьшение W на единицу
STARTT Запуск таймера
Переход
Интерпретация и действия
SEND Формирование полей NS и NR информационного кадра. Увеличение переменной передачи VS. Посылка
информационного кадра в линию. Занесение копии информационного кадра в очередь переданных, но не подтвержденных кадров (очередь QW). Выход из критической секции
SECSEND Вход в критическую секцию. Выборка (копирование) информационного кадра из очереди QW для повторной передачи. Формирование поля NR. Уменьшение
счетчика повторно переданных кадров (NRET) на единицу
RESEND Посылка информационного кадра в линию. Выход из критической секции
STAR Посылка последнего информационного кадра из очереди QW. Перезапуск таймера. Выход из критической секции
UST Установка счетчика повторно передаваемых кадров
(при окончании тайм-аута)
FROMREC Удаление из очереди QW подтвержденного кадра.
Уменьшение счетчика подтверждаемых кадров (ACKNOW) на единицу. Увеличение W на единицу
TOTIMER Останов таймера при подтверждении всех кадров из очереди QW
RETIMER Перезапуск таймера при подтверждении не всех кадров из очереди QW
Модель приема кадров
TESTFCS Вход в критическую секцию. Проверка последовательности FCS кадра
DESTROY1 Уничтожение искаженных кадров. Выход из критической секции
TESTNR Проверка поля NR. Установка счетчика подтверждаемых кадров
TESTTYP Проверка типа кадра
TESTNS Проверка поля NS
GOODNS Увеличение переменной приема VR. Сброс признака посылки кадра REJ (SNDREJ)
Переход
Интерпретация и действия
NA Передача правильно принятого информационного кадра на верхний уровень. Выход из критической секции
TRRR Передача правильно принятого информационного кадра на верхний уровень. Посылка подтверждения
RR в линию. Выход из критической секции
DESTROY3 Удаление кадра RR. Выход из критической секции
POSTREJ Установка счетчика повторно передаваемых кадров (NRET) при приеме кадра REJ. Выход из критической секции
TRREJ Удаление информационного кадра при нарушении последовательности номеров NS кадров. Посылка кадра REJ в линию. Установка признака посылки кадра REJ (SNDREJ). Выход из критической секции
DESTROY2 Удаление информационного кадра при нарушении последовательности номеров NS кадров. Выход из критической секции
Модель генератора кадров
T1 Задержка на время формирования следующего информационного кадра
Модель канала передачи кадров
CANAL1 Задержка на время передачи кадра по линии
CANAL2 Задержка на время передачи кадра по линии

Таблица 7.4
Интерпретация позиций сетевой модели протокола HDLC


Позиция
Интерпретация
INQUE Входная очередь кадров
QW Очередь переданных, но не подтвержденных кадров
NRET Счетчик повторно передаваемых кадров
ACKNOW Счетчик подтверждаемых кадров
SNDREJ Признак посылки кадра REJ
W Переменная, определяющая число кадров, которые можно передать без подтверждения
INTIMER Признак окончания таймаута
GUARD Двоичный семафор

Кратко рассмотрим данную сетевую модель. Начальное СМ (имя СМ – HDLC) представлено на рис. 7.26, а его текстовое представление – на рис. 7.27.

Рис. 7.26. Сетевая модель звена передачи данных

Представленное СМ включает следующие нетерминальные элементы: GENER[1], GENER[2] – генераторы I-кадров соответственно на стороне первой и второй станций; STAT[1], STAT[2] – cоответственно первую и вторую комбинированные HDLC-станции; MEDIUM – среду передачи. В данном СМ четко прослеживаются два направления передачи информации – от первой станции ко второй (направление стрелок на рисунке – слева направо) и от второй станции к первой (направление стрелок на рисунке – справо налево).

MODEL HDLC();

-- Звено передачи данных

CONST N=2; --Число станций

SUBMOD STAT[N](DATAREQ,INFRAME:PDATA/INLINE,DATAIND:TDATA);

GENER[N](/INTREQ:TDATA);

MEDIUM(IN1,IN2:PDATA/OUT1,OUT2:TDATA);

PLACE QUE1,QUE2:DATA;

TRAN GLOBAL1,GLOBAL2;

LINK GENER[1].INTREQ=>STAT[1].DATAREQ;

GENER[2].INTREQ=>STAT[2].DATAREQ;

STAT[1].INLINE=>MEDIUM.IN1;

STAT[2].INLINE=>MEDIUM.IN2;

MEDIUM.OUT1=>STAT[2].INFRAME;

MEDIUM.OUT2=>STAT[1].INFRAME;

STAT[1].DATAIND=>QUE1=>GLOBAL1;

STAT[2].DATAIND=>QUE2=>GLOBAL2

END HDLC;

Рис. 7.27. Модель звена передачи данных

СМ, представляющее комбинированную станцию (STAT), изображено на рис. 7.28, а его текстовое представление – на рис. 7.29. СМ имеет следующие входы: DATAREQ – запрос передачи данных от ВУ (информационный кадр для передачи); INFRAME – поступающий из среды передачи кадр. СМ имеет следующие выходы: INLINE – передаваемый в среду передачи кадр; DATAIND – индикация данных (принятый информационный кадр для ВУ). Представленное СМ включает только нетерминальные элементы. Нетерминал TRANS, представляющий функцию передачи I-кадров, взаимодействует с нетерминалом TIMER, представляющим таймер, путем посылки в последний управляющих сигналов запуска таймера (через контакты TRANS.STIMER и TIMER.START) и останова таймера (через контакты TRANS.PTIMER и TIMER.STOP). В свою очередь, нетерминал TIMER посылает в нетерминал TRANS сигнал окончания тайм-аута.

Рис. 7.28. Сетевая модель HDLC-станции


MODEL STAT(DATAREQ,INFRAME:TDATA/INLINE,DATAIND:PDATA);

-- Станция HDLC

SUBMOD REC(INFRAME:PDATA;PQIN:TDATA/

ACK:PSIMPL;DATAFR,INLINE:TDATA);

TRANS(IFRAME:PDATA;TIMEOUT:PSIMPL;ACK:TSIMPL/

INLINE:TDATA;STIMER,PTIMER:TSIMPL;PQIN:PDATA);

TIMER(START,STOP:PSIMPL/TIMEOUT:TSIMPL);

PLACE NRET:NONLOCAL SIMPLE;

QW:NONLOCAL DATA;

GUARD:NONLOCAL SIMPLE MARK=1;

LINK STAT.DATAREQ=>TRANS.IFRAME;TRANS.STIMER=>TIMER.START;

TRANS.PTIMER=>TIMER.STOP;TIMER.TIMEOUT=>TRANS.TIMEOUT;

TRANS.INLINE=>STAT.INLINE;TRANS.PQIN=>REC.PQIN;

REC.INLINE=>STAT.INLINE;STAT.INFRAME=>REC.INFRAME;

REC.DATAFR=>STAT.DATAIND;REC.ACK=>TRANS.ACK

VAR VS,VR,PTRQW:INTEGER;

END STATH;

Рис. 7.29. Модель HDLC-станции
Взаимодействие нетерминала TRANS с нетерминалом REC, представляющим функцию приема кадров, осуществляется через контакты PQIN и ACK, причем дуги, связывающие соответствующие пары контактов, являются проверочными и по ним не передаются сообщения. Через контакты PQIN передается информация о состоянии входной очереди кадров (пуста/непуста), а через контакты ACK передается информация о числе подтверждаемых кадров.

СМ, представляющее передачу I-кадров (TRANSH), изображено на рис. 7.30, а его текстовое представление – на рис. 7.31. СМ имеет следующие входы: IFRAME – поступающий с ВУ I-кадр для передачи; TIMEOUT – сигнал тайм-аута; ACK – число подтверждаемых кадров. СМ имеет следующие выходы: INLINE – передаваемый в среду передачи кадр; STIMER – запуск таймера; PTIMER – останов таймера.

Рис. 7.30 Сетевая модель передачи информационных кадров





MODEL TRANS(IFRAME:TDATA;TIMEOUT:TSIMPL;ACK:PSIMPL/

INLINE:PDATA;STIMER,PTIMER:PSIMPL;PQIN:TDATA);

-- Передача кадров

PLACE INQUE,STARTR,SENDER:DATA;

INTIMER:SIMPLE;

GUARD:DECLARED SIMPLE MARK=1;

NRET:DECLARED DATA;

RESENDER,STOPER:BOUND=1;

W:MARK=7;

TRAN FROMINQU,STARTT,NOSTARTT,SEND;SECSEND,RESEND,STARTT2:PRIOR=+1;

UST;DESTROY,FROMREC,TOTIMER:PRIOR=+2;

LINK TRANS.IFRAME=>INQUE=>FROMINQU=>STARTR=>PEREDACA=>SENDER=>

SEND.1=>QW=><1,0>SECSEND=>RESENDER=>RESEND=>TRANS.INLINE;

INQUE=>TRANS.PQIN;STARTR=>STARTT=>SENDER;

SEND.1=>TRANS.INLINE;STARTT=>TRANS.STIMER;QW<Ш >=>STARTT;

QW=><1,0>NOSTARTT;QW=>FROMREC;QW<Ш >=>TOTIMER;

TRANS.TIMEOUT=>INTIMER=>UST=>NRET<Ш >=>STARTT2=>TRANS.STIMER; NRET=>SECSEND;NRET=><1,0>RESEND;RESENDER=>STARTT2=>TRANS.INLINE;

TRANS.ACK=>FROMREC=>STOPER=>TOTIMER=>TRANS.PTIMER;

TRANS.ACK<Ш >=>TOTIMER;FROMREC=>W=>FROMINQU;

NRET<Ш >=>UST;STOPER=>DESTROY=>TRANS.STIMER;

SEND=>GUARD=>FROMINQU;(RESEND;STAR)=>GUARD=>SECSEND

VAR VS,VR,PTRQW:INTEGER DECLARED;

PROC FOR UST:

IF $M(QW)=0 THEN

OUTPRED(*,NRET):=0;

ELSE DO;

OUTPRED(*,NRET):=1;

$MULTY(UST,NRET):=$M(QW);

END;

PTRQW:=1;

END;

PROC FOR SEND:

SENDER.1.P[2]:=VS;

VS:=VS+1;

IF VS>7 THEN VS:=0;

SENDER.1.P[3]:=VR;

END;

PROC FOR SECSEND:

PTRQ(QW):=PTRQW;

QW.PTRQW.P[3]:=VR;

PTRQW:=PTRQW+1;

END;

PROC FOR STAR:

PTRQW:=1;

END;

END TRANS;

Рис. 7.31. Модель передачи информационных кадров

Данное СМ представляет несколько процессов: передачи I-кадра, повторной передачи I-кадров, подтверждения I-кадров. Помимо этого, в другом СМ (REC) описывается процесс приема и анализа кадра. Для корректности функционирования этой системы процессов, которые в принципе могут выполняться параллельно, вводится упорядочение процессов с использованием разделяемых позиций и механизма приоритетов переходов. Для взаимного исключения процессов передачи и повторной передачи I-кадров, процесса приема и анализа кадра в модели используется разделяемая позиция GUARD, представляющая по сути двоичный семафор. Процесс подтверждения кадров, порождаемый процессом приема и анализа кадров, в модели является наиболее приоритетным из рассматриваемых процессов, что достигнуто путем присвоения переходам FROMREC, TOTIMER, RETIMER приоритета на две единицы большего, чем остальным переходам модели.

Около ряда переходов написаны действия, выполняемые при их срабатывании (процедуры переходов). Надпись M(QW) на дуге (UST,NRET) означает, что при срабатывании перехода UST в позицию NRET будет добавлено столько меток, сколько их находится на данный момент в позиции QW.

СМ, представляющее прием и анализ кадров (RECH), изображено на рис. 7.32, а его текстовое представление – на рис. 7.33. СМ имеет один вход INFRAME – поступающий из среды передачи кадр. СМ имеет следующие выходы: DATAFR – передаваемый на ВУ правильно принятый I-кадр; INLINE – передаваемый в среду передачи кадр; ACK – число подтверждаемых кадров.

Рис. 7.32 Сетевая модель приема кадров






MODEL REC(INFRAME:TDATA;PQIN:PDATA/

ACK:TSIMPL;DATAFR,INLINE:PDATA);

-- Прием кадров

PLACE P1,NORMFCS,ERRFCS,P2,I,REJ,NORMNS,ERRNS,P3,RR:DATA;

ACKNOW,SNDREJ:SIMPLE;

GUARD:DECLARED SIMPLE MARK=1;

NRET:DECLARED SIMPLE;

QW:DECLARED DATA;

TRAN TESTFCS,DESTROY1;TESTNR:PRIOR=+1;TESTTYP,TESTNS,GOODNS,

NA,TRRR,TRREJ,DESTROY2,POSTREJ,DESTROY3;

LINK

REC.INFRAME=>P1=>TESTFCS.1=>NORMFCS=>TESTNR=>P2=>TESTTYP.1=>

I=>TESTNS.1=>NORMNS=>GOODNS=>P3=>NA=>REC.DATAFR;

TESTFCS.1=>ERRFCS=>DESTROY1;TESTNR=>ACKNOW=>REC.ACK;

TESTTYP.1=>REJ=>POSTREJ;SNDREJ=><0,ALL>GOODNS;

P3=>TRRR.1=>REC.INLINE;REC.PQIN=><1,0>NA;

TESTNS.1=>ERRNS=>TRREJ=>REC.INLINE;TRREJ=>SNDRREJ<Ш >=>TRREJ;

SNDREJ=><1,0>DESTROY2;ERRNS=>DESTROY2;TRRR.1=>REC.DATAFR;

REC.PQIN<Ш >=>TRRR;TESTTYP.1=>RR=>DESTROY3;POSTREJ=>NRET<Ш >=>

POSTREJ;(DESTROY1;DESTROY2;DESTROY3;NA;TRRR;TRREJ;POSTREJ)=>

GUARD=>TESTFCS

VAR VR,VS,PTRQW:INTEGER DECLARED;

LASTNR:INTEGER;

PROC FOR TESTFCS:

OUTPRED(*,NORMFCS):=P1.1.P[5]=0;

OUTPRED(*,ERRFCS):=P1.1.P[5]=1;

END;

PROC FOR TESTNR:

TEMPVAR VI[1];VI[1]:=0;

IF NORMFCS.1.P[3]>LASTNR THEN

VI[1]:=NORMFCS.1.P[3]-LASTNR;

ELSE IF NORMFCS.1.P[3]<LASTNR THEN

VI[1]:=8+NORMFCS.1.P[3]-LASTNR;

ELSE VI[1]:=0;

IF VI[1]>0 THEN DO;

OUTPRED(*,ACKNOW):=1;

$MULTY(*,ACKNOW):=VI[1];

END;

ELSE OUTPRED(*,ACKNOW):=0;

LASTNR:=NORMFCS.1.P[3];

END;

PROC FOR GOODNS:

VR:=VR+1;

IF VR>7 THEN VR:=0;

END;

PROC FOR TESTTYP:

OUTPRED(*,I):=P2.1.P[1]=0;

OUTPRED(*,RR):=P2.1.P[1]=2;

OUTPRED(*,REJ):=P2.1.P[1]=1;

END;

PROC FOR TESTNS:

OUTPRED(*,NORMNS):=I.1.P[2]=VR;

OUTPRED(*,ERRNS):=I.1.P[2]Ш =VR;

END;

PROC FOR POSTREJ:

IF $M(QW)=0 THEN

OUTPRED(*,NRET):=0;

ELSE DO;

OUTPRED(*,NRET):=1;

$MULTY(*,NRET):=$M(QW);

END;

PTRQW:=1;

END;

PROC FOR TRREJ:

ERRNS.1.P[3]:=VR;

ERRNS.1.P[1]:=1;

END;

PROC FOR TRRR:

P3.1.P[1]:=2;

P3.1.P[3]:=VR;

END;

END REC;

Рис. 7.33. Модель приема кадров

С началом работы процесса приема и анализа кадров закрывается двоичный семафор GUARD. При окончании данного процесса, который имеет несколько выходов, семафор открывается. У принятого кадра проверяется КПП (переход TESTFCS), поле NR (переход TESTNR) и тип кадра (переход TESTTYP). В результате анализа поля NR определяется число подтверждаемых кадров. Если принятый кадр является информационным, у него проверяется поле NS. Если поле NS кадра является действительным, то I-кадр через выход DATAFR передается на ВУ. Причем, если входная очередь кадров на данной станции пуста, то в среду передачи через выход INLINE передается ответ RR.

СМ, представляющее среду передачи, а именно, дуплексный канал связи (MEDIUM), изображено на рис. 7.34, а его текстовое представление – на рис. 7.35. СМ имеет следующие входы: IN1, IN2 – передаваемый в среду передачи кадр с первой и второй станций соответственно. СМ имеет следующие выходы: OUT1, OUT2 – принятый из среды передачи кадр на стороне первой и второй станций соответственно. В среде передачи возможны ошибки типа искажения кадра. Ошибки данного типа имитируются установкой в единицу пятого параметра метки при срабатывании переходов CANAL1 и CANAL2. Значения временной задержки переходов CANAL1 и CANAL2 определяют времена передачи кадра в ту или другую сторону.

Рис. 7.34 Сетевая модель среды передачи

MODEL MEDIUM(IN1,IN2:TDATA/OUT1,OUT2:PDATA);

-- Среда передачи кадров

CONST V=1200; -- Скорость передачи

P=0.1; -- Вероятность искажения кадра

PLACE P1,P2:DATA;

P3,P4:MARK=1;

TRAN CANAL1, CANAL2;

LINK MEDIUM.IN1=>P1=>CANAL1..=>MEDIUM.OUT1;

MEDIUM.IN2=>P2=>CANAL2..=>MEDIUM.OUT2;

CANAL1..=>P3=>CANAL1;

CANAL2..=>P4=>CANAL2

VAR IX:INTEGER;

PROC FOR INITIAL:

IX:=7;

END;

PROC FOR CANAL1:

DELAY:= P1.1.P[4]/V ; -- Время передачи

IF RANDOM(0.0,1.0,IX)<P THEN

P1.1.P[5]:=1;

END;

PROC FOR CANAL2:

DELAY:= P2.1.P[4]/V ; -- Время передачи

IF RANDOM(0.0,1.0,IX)<P THEN

P2.1.P[5]:=1;

END;

END MEDIUM;

Рис. 7.35. Mодель среды передачи

СМ, представляющее генератор кадров (GENER), изображено на рис. 7.36, а его текстовое представление – на рис. 7.37. Генератор состоит из позиции и перехода с временной задержкой, определяющей интервал времени поступления кадров в систему. Сгенерированные кадры выводятся через контакт INTREQ.

Рис. 7.36. Сетевая модель генератора кадров

MODEL GENER(/INTREQ:PDATA);

-- Генератор кадров

PLACE P1:MARK=1/5;

TRAN T1:DELAY=EXPON(1,100);

LINK P1=>T1..1=>GENER.INTREQ;

T1..1=>P1

VAR IX:INTEGЕR;

PROC FOR T1:

P1.1.P[4]:=IRANDOM(150,300,IX); -- Длина кадра

P1.1.P[1]:=0; -- Информационный кадр

END;

PROC FOR INITIAL:

IX:=1;

END;

END GENER;

Рис. 7.37. Mодель генератора кадров

СМ, представляющее таймер, было рассмотрено при описании сетевой имитационной модели АБ-протокола.