Выполнил:

студент группы 319 Филатов А.В.

Научный руководитель:

доцент, старший научный сотрудник Линович А.Ю.

 

В данном сообщении были решены часть проблем, записанных в раннем сообщении а именно 1,2,4,5.

 

1.Разработка интерфейса приложения.

2.Определение алгоритма работы приложения.

3.Реализация  приложения в среде QT.

4.Построение блок схемы работы приложения и реализация в среде QT.

5.Моделирование канала связи.

6.Компиляция и запуск приложения под ОС Linux.

 

1.Решение 1 задачи.

Окончательный интерфейс приложения, написанный на C++ с использованием библиотеки QT:



Рисунок 1. Интерфейс приложения.Main

На вкладке Main (рис 1)  отображается текущая дата и кнопки для запуска приложения в двух режимах (клиент и сервер), а также кнопка для записи результатов измерений в файл.

Вкладка Setting (рис 2) будет включать в  себя поля для заполнения.(Диапазон потерь и скоростей).


Рисунок 2. Интерфейс приложения.Settings

И последняя вкладка Other (в дальнейшем переименую в ‘Results’). Будет содержать в себе таблицу с измеренными потерями и скоростями.


 

Рисунок 3. Интерфейс приложения.Other

 

Решение 2 задачи.

Одна из основных задач это определение алгоритма, по которому приложение сможет вычислить скорость передачи.

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

Например, клиент сформировал пакеты и отправил в канал связи (1).Если сервер принял пакеты, которые были переданы клиентом ,то формируется сообщение для клиента (2) , показывающее отношение числа принятых пакетов к числу переданных клиентом и передается (3). Клиент на основе этих данных решает, увеличить степень загрузки канала связи или уменьшить.(Рис. 4)


Рисунок 4.модель взаимодействие клиента с сервером.

 

 

 

 

Решение 4 задачи.

Блок схема алгоритма работы сервера приведена на рисунке 5.


Рисунок 5.Блок схема работы сервера.

Установка соединения подразумевает включение приложения на двух устройствах, соединенных между собой спутниковой линией связи в различных режимах(1).

Далее начинается цикл приема (2) сообщений от клиента (3) (Определенное число пакетов.). Структура пакетов включает в себя общее число пакетов, которое было передано клиентом, исходя из этого, сервер может посчитать отношение принятых пакетов к отправленным(4) и отправить сообщение, содержащее эту информацию клиенту(5).

Если результаты вычисленных потерь соответствуют заданному диапазону, то они сохраняются в буфере приложения.(6-7). После чего цикл повторяется.

Иначе результат не сохраняется (8).

 

Блок схема алгоритма работы клиента приведена на рисунке 6.

Установка соединения подразумевает включение приложения на двух устройствах, соединенных между собой спутниковой линией связи в различных режимах(1).

Приложение считывает данные, введенные в поля вкладки settings(2). (Диапазон потерь и скоростей).

Вводится переменная U, которой присваивается среднее значение скорости передачи. А также переменная Delitel, которой присваивается значение 2(Это значение будет увеличиваться в теле цикла).(3).

Начало цикла с предусловием, которое будет выполняться в условии, что Umin<U<Umax. (4).

Клиент формирует специальные пакеты и отправляет их в канал связи со скоростью U.(5).

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

Если потери находятся в заданном диапазоне, то значение скорости и потерь записывается в буфер(9), далее скорость увеличивается(12).

Иначе клиент принимает решение просто уменьшить скорость(13).

Далее изменяется значение переменой Delta.(14)

(15)- конец цикла.

 



Рисунок 6.Блок схема работы клиента.

 

 

 

В целях быстродействия измерений в приложении предусмотрен процесс более быстрого нахождения скоростей, потери при которых будут попадать в диапазон, вводимый пользователем. Данный метод называют методом бисекции. Рисунок 6.


                                   Рисунок 6. Алгоритм изменения скорости.

Допустим пользователь ввел значения скоростей в диапазоне от 0 до 1000 Кбит/с.

На первом этапе приложение отправляет в канал связи пакеты со скоростью U1 = (0+ 1000)/2.

После чего, приняв сообщение о том, что число потерь не больше максимально допустимого, увеличивает скорость передачи, разделив  оставшийся интервал на 2. Таким образом, скорость передачи U2=500+500/2=750 Кбит/с.

Если число потерь  больше максимально допустимого, то скорость уменьшается на половину прибавляемого промежутка. U3=750-250/2.

Данный способ более эффективен в отличие от постоянного изменения скорости на одинаковую величину.

Также была частично решена 5 цель проекта.

Удалось смоделировать передачу сообщений, содержащих в себе дату передачи от  клиента к серверу по протоколу UDP .Рисунок 7.

 


Рисунок 7. Моделирование передачи сообщений.

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

P.S. Переименую UdpServer на UdpClient и наоборот.

Литература:

1.   http://www.lab.pr-group.ru/testcenter/RFC-2544.html

2.   Qt 5.3. Профессиональное программирование на C++. Макс Шлее.

3.   http://doc.qt.io/qt-5/qtexamplesandtutorials.html