
- •Пояснительная записка
- •Оглавление
- •Цель курсового проекта.
- •Задание на курсовое проектирование
- •Вариант задания
- •Анализ задачи
- •Структура пакета
- •Размер буфера приемника
- •Снимок экрана работающей программы
- •Алгоритмы работы функций в виде блок-схем
- •Листинг программы программы
- •Список использованной литературы
Санкт-Петербургский Государственный Университет Телекоммуникаций им. проф. М.А. Бонч-Бруевича
Пояснительная записка
к курсовой работе по дисциплине «Сети Связи»
на тему
«Разработка прикладного протокола передачи речи в реальном времени»
Выполнил:
Чернов С.А.
группа СУ-11
Преподаватель:
Симонина О.А.
Санкт-Петербург 2014
Оглавление
Y
Цель курсового проекта. 3
Задание на курсовое проектирование 3
Вариант задания 3
Анализ задачи 4
Снимок экрана работающей программы 7
Алгоритмы работы функций в виде блок-схем 8
8
SDL-диаграммы 12
Листинг программы программы 14
Список использованной литературы 23
Цель курсового проекта.
Разработка протокола верхнего уровня согласно требованиям на курсовое проектирование.
Задание на курсовое проектирование
Разработать структуру протокола согласно функциям (см. табл.1):
Определить функции протокола и структуру пакета разрабатываемого протокола;
Описать поля заголовка разрабатываемого протокола, рассчитать необходимую длину полей заголовка;
Рассчитать необходимую длину буфера на приеме в зависимости от длины пакета и максимально допустимой задержки.
Разработать алгоритмы обработки данных на приеме и передаче и представить их блок-схемы.
Разработать программную реализацию протокола:
Описать разработанные функции, их назначение и структуру;
Скомпилировать файл , протестировать на реальной сети.
Вариант задания
А |
Б |
тип трафика |
значение поля дополнительной информации |
число посылок пакетов |
длина поля данных пакета, байт |
задержка воспроиз-ведения, пак. |
2 |
3 |
Real-time |
Символьное с названием кодека |
1 |
128 |
6 |
табл.1
Анализ задачи
Основное отличие трафика «реального времени» отражено в его названии и заключается в жестких требованиях к задержкам и их вариации (джиттеру), но одновременно возможны потери некоторого количества пакетов, что связано с особенностями восприятия речи и изображения человеком и с созданием сложных алгоритмов кодирования, позволяющих восстанавливать часть информации.
Для данного типа трафика хорошо подошёл протокол UDP, не гарантирующий доставки пакетов, но не вносящий дополнительных задержек на повторную передачу, как TCP. Но UDP не решал проблему джиттера. Можно было бы создать новый протокол транспортного уровня специально для передачи трафика реального времени, но многоуровневый подход диктует другое решение. Проблему обеспечения качества обслуживания для трафика реального времени решают специальные протоколы прикладного уровня, такие как RTP и RTCP.
Чтобы передать данные, необходимо упаковать их в пакеты прикладного уровня. В этих пакетах кроме поля с данными, содержащими часть передаваемого файла, должны содержаться дополнительные поля со следующей информацией:
название кодека
номер пакета
Поле данных в пакетах имеет фиксированный размер и содержит строго определенную длительность аудиоданных. Для выполнения этого условия необходимо использовать голосовой кодек с постоянной скоростью кодирования речевого сигнала.
В программе используется кодек, реализующий импульсно-кодовую модуляцию с параметрами:
- Частота дискретизации: 8кГц
- Точность отсчетов – 8бит
- Число каналов – 1 (моно)
На приемнике создается циклический буфер (джиттер-буфер). В этот буфер помещаются принимаемые аудиоданные. Через определенные промежутки времени, равные длительности воспроизведения одной ячейки буфера, из него считывается новый блок данных и воспроизводится. Между записью блока и его отправкой на воспроизведение вносится задержка. Величина этой задержки должна обеспечивать подавление эффекта джиттера. В таком случае даже если пришедшие из сети пакеты записываются в буфер через случайные моменты времени, воспроизводятся эти данные через равные промежутки времени.
Рис.1. Организация джиттер-буфера
Так как для передачи трафика используется протокол транспортного уровня UDP, пакеты могут передаваться по сети от источника к получателю по разным маршрутам. В некоторых случаях это может приводить к тому, что пакеты будут приходить не только через разные промежутки времени, но и в неправильном порядке. Чтобы предусмотреть такие ситуации в структуру пакета нужно ввести поле с номером пакета.
При передаче пакеты нумеруются по заданному модулю, а на приеме анализируется номер принятого пакета. Если приходит пакет, номер которого меньше или равен номеру предыдущего пакета, то такой пакет отбрасывается, иначе – отправляется на воспроизведение.
Помимо этого, в структуру пакета можно ввести и другие дополнительные поля для расширения функциональности протокола. Как уже отмечалось выше, в этом варианте в качестве дополнительного поля используется имя отправителя, которое задается на передающей стороне.