• Цикл статей «Изучаем VoIP-движок Mediastreamer2» одним pdf-файлом

    • Tutorial


    Здравствуйте, по материалам опубликованного мной ранее цикла статей, я подготовил pdf-файл, который представляет собой книгу с перекрестными ссылками, предметными указателями и т.д. В общей сложности 113 страниц.


    Файл можно свободно скачать по ссылке: pdf-файл

  • Изучаем VoIP-движок Mediastreamer2. Часть 13, заключительная

    • Tutorial

    Материал статьи взят с моего дзен-канала.



    Все статьи цикла


    Статья 1
    Статья 2
    Статья 3
    Статья 4
    Статья 5
    Статья 6
    Статья 7
    Статья 8
    Статья 9
    Статья 10
    Статья 11
    Статья 12
    Статья 13


    Книгу на основе статей можно свободно скачать по ссылке: pdf-файл.


    В прошлой статье, мы рассмотрели вопросы отладки крафтовых фильтров, связанные с перемещением данных.


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

    Читать дальше →
  • Учебник по симулятору сети ns-3 теперь одним pdf-файлом

    • Tutorial


    После завершения публикации перевода заключительных глав учебника, хочу предложить его уже в виде единого pdf-файла, снабженного оглавлением и алфавитным указателем. Файл на Google-диске: учебник.

    Если, в ходе чтения, вы обнаружите ошибки или какие-то несоответствия духу и смыслу оригинального документа, прошу присылать ваши замечания на электронный адрес, указанный в файле на странице после оглавления.
  • Учебник по симулятору сети ns-3. Заключительные главы 8, 9

    • Перевод
    • Tutorial
    image
    [главы 1,2]
    [глава 3]
    [глава 4]
    [глава 5]
    [глава 6]
    [глава 7]

    Глава 8 Сбор информации
    8.1 Мотивация
    8.2 Пример кода
    8.3 GnuplotHelper
    8.4 Поддерживаемые типы трасс
    8.5 FileHelper
    8.6 Итоги
    Глава 9 Заключение
    9.1 На будущее
    9.2 Завершение

    Глава 8 Сбор информации


    В последней главе этого руководства представлены некоторые компоненты, которые были добавлены в ns‑3 в версии 3.18 и те, что сейчас находятся в стадии разработки. Этот раздел также находится в стадии разработки.
    Читать дальше →
  • Учебник по симулятору сети ns-3. Глава 7

    • Перевод
    • Tutorial
    image

    [главы 1,2]
    [глава 3]
    [глава 4]
    [глава 5]
    [глава 6]

    Глава 7 Трассировка

    7.1 История вопроса

    7.1.1 Тупые инструменты

    7.2 Обзор

    7.2.1 Простой пример

    7.2.2 Подключение через Config

    7.2.3 Поиск источников

    7.2.4 Доступные источники

    7.2.5 Config-пути

    7.2.6 Сигнатуры обратных вызовов

    7.2.7 TracedValue

    7.3 Реальный пример

    7.3.1 Доступные источники

    7.3.2 Поиск примеров

    7.3.3 Источники динамической трассировки

    7.3.4 Разбор fifth.cc

    Запуск/останов приложений

    Приложение MyApp

    Приемник трассировки

    Основная программа

    7.3.5 Запуск fith.cc

    7.3.6 Использование помощников среднего уровня

    7.4 Помощники трассировки

    7.4.1 Помощники устройств

    PCAP

    ASCII

    7.4.2 Помощники протоколов

    7.5 Резюме


    Глава 7 Трассировка


    7.1 История вопроса


    Как упоминалось в разделе 5.3, весь смысл симуляции ns-3 заключается в генерации выходных данных для изучения. У вас есть две основные стратегии получения выходных данных от ns-3: использование общих предопределенных механизмов и анализ содержимого их массового вывода для извлечения интересующей информации или разработать некий механизм вывода, который передаст только ту информацию, которую вы хотели.
    Читать дальше →
  • Учебник по симулятору сети ns-3. Глава 6

    • Tutorial


    главы 1,2
    глава 3
    глава 4
    глава 5


    Глава 6 Строим топологии
    6.1 Построение топологии шинной сети
    6.2 Модели, атрибуты и реальность
    6.3 Построение топологии беспроводной сети
    6.4 Очереди в ns-3
    6.4.1 Модели очередей доступные в ns-3
    6.4.2 Изменение настроек по умолчанию


    Глава 6


    Строим топологии


    6.1 Построение топологии шинной сети


    В этом разделе мы собираемся расширить наши знания по сетевым устройствам и каналам ns‑3, чтобы охватить пример шинной сети. Ns‑3 предоставляет сетевое устройство и канал, который мы называем CSMA (множественный доступ с контролем несущей).


    Устройство CSMA в ns‑3 моделирует простую сеть в духе Ethernet. Настоящий Ethernet использует CSMA/CD (множественный доступ с контролем несущей и обнаружением коллизий) с экспоненциально нарастающей конкуренцией за общую среду передачи. Устройство и канал CSMA ns‑3 моделируют это только отчасти.


    Подобно тому, как мы использовали вспомогательные объекты при построении топологий точка-точка, в этом разделе мы увидим аналогичных помощников для топологии CSMA. Внешний вид и работа этих помощников должны выглядеть вам вполне знакомо.


    В нашей директории examples/tutorial мы предоставляем пример сценария. Этот скрипт основан на сценарии first.cc и добавляет сеть CSMA к симуляции точка-точка, которую мы уже рассмотрели. Откройте examples/tutorial/second.cc в вашем любимом редакторе. Вы уже видели достаточно кода ns‑3, чтобы понять большую часть того, что происходит в этом примере, но мы пройдемся по всему сценарию и рассмотрим некоторые из результатов.

    Читать дальше →
  • Изучаем VoIP-движок Mediastreamer2. Часть 12

    • Tutorial

    Материал статьи взят с моего дзен-канала.



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


    Отладка крафтовых фильтров


    После того, как мы в предыдущей статье рассмотрели механизм перемещения данных в медиастримере будет логично поговорить о скрывающихся в нем опасности. Одна из особенностей принципа "data flow" состоит в том, что выделение памяти из кучи происходит в фильтрах, которые находятся у истоков потока данных, а освобождение памяти с возвращением в кучу делают уже фильтры, расположенные в конце пути потока. Кроме этого, создание новых данных и их уничтожение может происходить где-то в промежуточных точках. В общем случае, освобождение памяти выполняет не тот фильтр, что создал блок данных.

    Читать дальше →
  • Синергия Graphviz и препроцессора C/C++

    • Tutorial

    Это статья посвящена тому, как использовать популярный инструмент рисования графов Graphviz в кооперации с препроцессором C/C++ (далее просто препроцессор).


    Ключевым моментом является то, что язык описания графов dot, который использует Graphviz, по своему синтаксису пригоден для обработки препроцессором. Так задумано разработчиками. Благодаря их прозорливости, мы при описании графов можем использовать следующие возможности (цитирую википедию по памяти):


    • замена соответствующих диграфов и триграфов на эквивалентные символы «#» и «\»;
    • удаление экранированных символов перевода строки;
    • замена строчных и блочных комментариев пустыми строками (с удалением окружающих пробелов и символов табуляции);
    • вставка (включение) содержимого произвольного файла (#include);
    • макроподстановки (#define);
    • условная компиляция (#if, #ifdef, #elif, #else, #endif);

    Теперь продемонстрируем открывшиеся возможности на практике. В качестве примера возьмем граф из моей статьи о Медиастримере2, он на рисунке ниже.


    Читать дальше →
    • +11
    • 1,6k
    • 4
  • Изучаем VoIP-движок Mediastreamer2. Часть 11

    • Tutorial

    Материал статьи взят с моего дзен-канала.



    Механизм перемещения данных


    • Блок данных dblk_t
    • Сообщение mblk_t
    • Функции работы с сообщениями mblk_t
    • Очередь queue_t
    • Функции работы с очередями queue_t
    • Соединение фильтров
    • Сигнальная точка графа обработки данных
    • Закулисная деятельность тикера
    • Буферизатор MSBufferizer
    • Функции работы с MSBufferizer

    В прошлой статье мы разработали свой собственный фильтр. Эту статью мы посветим устройству внутреннего механизма перемещения данных между фильтрами медиастримера. Это позволит в дальнейшем писать изощренные фильтры с меньшими усилиями.

    Читать дальше →
  • Учебник по симулятору сети ns-3. Глава 5

    • Tutorial


    главы 1,2
    глава 3
    глава 4


    5 Настройка
    5.1 Использование модуля журналирования
    5.1.1 Обзор журналирования
    5.1.2 Разрешение журналирования
    5.1.3 Добавление журналирования в ваш код
    5.2 Использование аргументов командной строки
    5.2.1 Переопределение значений атрибутов по умолчанию
    5.2.2 Захват ваших собственных команд
    5.3 Использование системы трассировки
    5.3.1 ASCII Трассировка
    Парсинг ASCII трасс
    5.3.2 Трассировка PCAP


    Глава 5


    Настройка


    5.1 Использование модуля журналирования


    Мы уже вкратце рассмотрели модуль журналирования ns‑3, просматривая скрипт first.cc. В этой главе мы более пристально присмотримся к возможным вариантам использования подсистемы журналирования.

    Читать дальше →
  • Изучаем VoIP-движок Mediastreamer2. Часть 10

    • Tutorial

    Материал статьи взят с моего дзен-канала.



    В прошлой статье мы сделали дуплексное переговорное устройство, выполняющее обмен звуковым сигналом через дуплексную RTP-сессию. В этой статье мы научимся писать фильтры и добавим сделанный своими руками фильтр в сделанное своими руками переговорное устройство.


    Разрабатываем плагин



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


    Чтобы использовать плагин в своей программе, вы с помощью include должны подключить заголовочный файл плагина. В теле программы, с помощью функции у ms_filter_register() выполнить регистрацию нового фильтра. Естественно, ваша программа и и исходник плагина должны быть скомпилированы и собраны в одно приложение.


    Теперь обратимся к написанию плагина. Все фильтры медиастримера и плагины подчиняются в написании общему канону, что значительно облегчает понимание устройства очередного фильтра, который вы захотели изучить. Поэтому далее, чтобы не размножать сущности, плагины буду называть фильтрами.

    Читать дальше →
  • Учебник по симулятору сети ns-3. Глава 4

    • Перевод
    • Tutorial


    главы 1,2
    глава 3


    4 Обзор концепции
    4.1 Ключевые абстракции
    4.1.1 Node (Узел)
    4.1.2 Application (Приложение)
    4.1.3 Channel (Канал)
    4.1.4 Net Device (Сетевое устройство)
    4.1.5 Топологические помощники
    4.2 Первый скрипт ns-3
    4.2.1 Boilerplate код
    4.2.2 Подключаемые модули
    4.2.3 Пространство имен ns3
    4.2.4 Журналирование
    4.2.5 Главная функция
    4.2.6 Использование топологических помощников
    4.2.7 Использование Application
    4.2.8 Симулятор
    4.2.9 Сборка вашего сценария
    4.3 ns-3 Исходный код


    Глава 4


    Обзор концепции


    Первое, что нам нужно сделать перед тем, как начать изучать или писать код ns‑3 — это объяснить несколько основных понятий и абстракций в системе. Многое из этого, для некоторых, может показаться очевидным, но мы рекомендуем уделить время для чтения этого раздела, чтобы убедиться, что вы начинаете на прочной основе.

    Читать дальше →
  • Учебник по симулятору сети ns-3. Глава 3

    • Перевод
    • Tutorial


    главы 1,2


    3 Приступая к работе
    3.1 Обзор
    3.2 Предварительные условия
    3.2.1 Загрузка релиза ns-3 в виде архива исходников
    3.3 Скачивание ns-3 с помощью Git
    3.3.1 Загрузка ns-3 с помощью Bake
    3.4 Сборка ns-3
    3.4.1 Сборка с помощью build.py
    3.4.2 Сборка с Bake
    3.4.3 Сборка с Waf
    3.5 Тестирование ns-3
    3.6 Запуск скрипта
    3.6.1 Аргументы командной строки
    3.6.2 Отладка
    3.6.3 Рабочая директория


    Глава 3


    Приступая к работе


    Эта глава направлена на то, чтобы подготовить читателя к работе, начиная с компьютера, на который, возможно, никогда не устанавливался ns‑3. Изложение охватывает поддерживаемые платформы, предварительные условия, способы получения ns‑3, способы сборки ns‑3 и способы проверки вашей сборки и запуск простых программ.

    Читать дальше →
  • Учебник по симулятору сети ns-3. Главы 1,2

    • Перевод
    • Tutorial

    Данная статья открывает серию публикаций с переводом учебника "ns-3 Tutorial Release ns-3.29" по симулятору сетей ns-3.



    Этот документ является переводом оригинального документа на английском, который написан в reStructuredText для Sphinx и хранится в директории doc/tutorial исходного кода ns-3.


    1 Предисловие
    1.1 О ns-3
    1.2 Для пользователей ns-2
    1.3 Участие в проекте
    1.4 Организация руководства
    2 Источники информации
    2.1 Сеть
    2.2 Git
    2.3 WAF
    2.4 Среда разработки
    2.5 Программирование сокетов
    глава 3
    глава 4
    глава 5
    глава 6
    глава 7
    главы 8, 9


    Скачать перевод одним pdf-файлом


    Первичная документация для проекта ns-3 доступна в пяти формах:


    Читать дальше →
  • Изучаем VoIP-движок Mediastreamer2. Часть 9

    • Tutorial

    Материал статьи взят с моего дзен-канала.



    Дуплексное переговорное устройство



    В прошлой статье было анонсировано дуплексное переговорное устройство, а в этой мы его сделаем.

    Читать дальше →
  • Изучаем VoIP-движок Mediastreamer2. Часть 8

    • Tutorial

    Материал статьи взят с моего дзен-канала.



    Структура RTP-пакета


    В прошлой статье мы с помощью TShark выполнили захват RTP-пакетов, которыми обменивались наши приемник и передатчик. Ну а в этой мы раскрасим элементы пакета в разные цвета и поговорим об их назначении.


    Взглянем на тот же пакет, но уже с подкрашенными полями и с поясняющими надписями:

    Читать дальше →
  • Изучаем VoIP-движок Mediastreamer2. Часть 7

    • Tutorial

    Материал статьи взят с моего дзен-канала.



    Используем TShark для анализа RTP-пакетов


    Вид захваченного RTP-пакета


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


    В этой статье мы продолжаем изучать передачу звукового сигнала с помощью RTP-протокола. Сначала разделим наше тестовое приложение на передатчик и приемник и научимся исследовать RTP-поток с помощью анализатора сетевого трафика.

    Читать дальше →
  • Изучаем VoIP-движок Mediastreamer2. Часть 6

    • Tutorial

    Материал статьи взят с моего дзен-канала.



    Передача звукового сигнала через RTP-поток



    В прошлой статье мы собрали схему дистанционного управления из генератора и детектора тональных сигналов, которые работают внутри одной программы. В этой статье мы научимся использовать протокол RTP (RFC 3550 — RTP: A Transport Protocol for Real-Time Applications) для приема/передачи звукового сигнала по Ethernet-сети.

    Читать дальше →
  • Изучаем VoIP-движок Mediastreamer2. Часть 5

    • Tutorial

    Материал статьи взят с моего дзен-канала.



    Обнаружитель тонального сигнала


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



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


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

    Читать дальше →
  • Изучаем VoIP-движок Mediastreamer2. Часть 4

    • Tutorial

    Материал статьи взят с моего дзен-канала.



    Создаем измеритель уровня сигнала


    В прошлой статье мы внесли ясность в корректное завершение программ использующих медиастример.


    В этой статье мы соберем схему измерителя уровня сигнала и научимся читать результат измерения из фильтра. Оценим точность измерения.

    Читать дальше →