惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
Cloudbric
Cloudbric
I
InfoQ
V
V2EX
博客园_首页
The Register - Security
The Register - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Secure Thoughts
Vercel News
Vercel News
Forbes - Security
Forbes - Security
云风的 BLOG
云风的 BLOG
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
D
DataBreaches.Net
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
A
About on SuperTechFans
N
News and Events Feed by Topic
Apple Machine Learning Research
Apple Machine Learning Research
Help Net Security
Help Net Security
Attack and Defense Labs
Attack and Defense Labs
N
Netflix TechBlog - Medium
Spread Privacy
Spread Privacy
F
Full Disclosure
Recorded Future
Recorded Future
AWS News Blog
AWS News Blog
博客园 - 【当耐特】
The Cloudflare Blog
T
Threatpost
T
Tor Project blog
Google DeepMind News
Google DeepMind News
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
A
Arctic Wolf
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News - Newest:
Hacker News - Newest: "LLM"
WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
小众软件
小众软件
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
Security Latest
Security Latest
The Last Watchdog
The Last Watchdog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Спутниковая связь в симуляторе NS-3. Часть 1
Игорь Пластов · 2026-06-01 · via Все публикации подряд на Хабре

Средний

7 мин

7K

Введение

Данное руководство содержит сведения, необходимые для быстрого начала работы с симулятором компьютерных сетей NS-3 и модулем симуляции спутниковой связи Satellite. Описаны установка, проверка функционирования, запуск симуляции, организация папок проекта и т.д. Официальное руководство по началу работы с NS-3 версии 3.29 (русский перевод) можно скачать по следующей ссылке: https://vk.cc/awFMSX. Перевод был опубликован 25 июня 2020 года. При ознакомлении следует учитывать, что NS-3 не останавливался в своем развитии - какие-то подходы и инструменты себя не оправдали или устарели. Это явилось одной из причин написания данного оригинального руководства по NS-3 версии 3.45 и модулю Satellite.

NS-3 (NS3, ns3, Network Simulator 3) - это дискретнособытийный симулятор сетей с открытым исходным кодом, предназначенный в первую очередь для исследований и обучения в области сетевых технологий. Он разрабатывается и поддерживается международным сообществом исследователей.

Модуль спутниковой связи (Satellite) изначально разработанный при поддержке ЕКА и CNES, полностью интегрирован в основную ветку NS-3 и предназначен для детального моделирования спутниковых систем связи и гибридных наземно-космических сетей. Ключевые возможности модуля:

  • Поддержка орбит GEO, MEO и LEO, включая автоматическое формирование группировок (созвездий) с расчётом положений по TLE/SGP4.

  • Моделирование физики канала: доплеровские сдвиги, переменные задержки распространения, атмосферные и ионосферные потери, многолучевое распространение.

  • Поддержка стандартов DVB-S2/S2X, DVB-RCS2, LoRa, настройка использования частотного ресурса, мощности передатчиков, схем модуляции и кодирования, а также моделей ошибок (PER/BER на основе SNR).

  • Реализация механизмов переключения между спутниками (handover) и работы с многолучевыми антенными системами с диаграммами направленности.

  • Полная интеграция с транспортными протоколами (TCP, UDP, QUIC) и механизмами маршрутизации (AODV, OLSR, статические таблицы) для сквозного моделирования трафика.

Область применения

  • Моделирование компьютерных сетей (проводных, беспроводных, WiFi, WiMAX, LTE, 5G, спутниковых и т.д.).

  • Тестирование новых сетевых протоколов и архитектур.

  • Анализ производительности сетей.

  • Образование (позволяет изучать поведение сетей без реального оборудования).

Рабочий процесс

Пользователь пишет программу на C++ или Python, описывающую топологию сети, настраивающую устройства и приложения. Симулятор обрабатывает события (например, отправку пакета) в хронологическом порядке. Результаты выводятся в виде трасс (pcap–файлы), статистики или файлов логов.

Большинство пользователей NS-3 при создании программ описания топологии используют C++. Есть поддержка Python, но она используется реже. Начиная с версии ns3.37, NS-3 использует cppyy. для генерации привязок Python во время выполнения, NS-3 доступен в репозиториях Pip начиная с версии ns-3.39. Симулятор может быть установлен в следующих операционных системах:

  • Linux

  • macOS

  • Windows(Subsystem for Linux)

В дальнейшем изложении описывается установка и использование симулятора на примере ОС Linux (Ubuntu).

Глава 1. Установка

В некоторые системы, такие как Ubuntu, NS-3 можно установить обычным образом, используя готовые пакеты установки. Однако, на данный момент проект NS-3 не уделяет особого внимания такому способу установки. Вместо этого рекомендуется скачивать исходный код и компилировать симулятор без установки на системном уровне. Это связано, главным образом, с тем, что большинство пользователей NS-3 предпочитают изменять или расширять библиотеки NS-3, возможно, собирать их определенным образом (для отладки, оптимизации или крупномасштабных симуляций). Система сборки симулятора активируется командой install, которую можно использовать для установки библиотек и заголовочных файлов в системные каталоги. При этом часто требуются права администратора, но обычно библиотеки просто собираются и используются из каталога сборки NS-3. Симулятор NS-3 использует систему сборки CMake (до версии 3.36 использовалась система сборки Waf). Порядок установки описан здесь: https://www.nsnam.org/docs/installation/html/

1.1 Подготовка инструментов

Необходимые для установки и функционирования инструменты перечисляются в таблице 1.1.

Таблица 1.1: Инструменты сборки

Назначение

Инструмент

Минимально необходимая версия

Скачивание

git (для скачивания через Git) или tar и bunzip2 (для Web–загрузки)

Любая версия

Компилятор

g++ / clang++

>= 10 / >= 11

Конфигурирование

python3

>= 3.8

Система сборки

cmake и хотя бы одна из списка: make, ninja, Xcode

>= 3.13 / любая версия

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

Таблица 1.2: Проверка версий инструментов

Инструмент

Команда проверки версии

g++

$ g++ --version

clang++

$ clang++ --version

python3

$ python3 -V

cmake

$ cmake --version

1.2 Скачивание исходного кода

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

workspace_ns[version name]

и уже в неё устанавливать симулятор. В главе 4 нам как раз потребуется использовать не новейшую версию симулятора, а более раннюю - ту с которой способна работать и протестирована модель спутниковой связи Satellite.

Допустим, мы устанавливаем версию 3.45. Для этого переходим в домашнюю директорию пользователя и создаем директорию workspace_ns3.45:

$ cd ~ 
$ mkdir workspace_ns3.45

Переходим в созданную директорию:

$ cd workspace_ns3.45

Выполняем скачивание исходного кода симулятора:

$ wget https://www.nsnam.org/releases/ns-allinone-3.45.tar.bz2

Разархивируем исходный код:

$ tar xfj ns-allinone-3.45.tar.bz2

Переходим в папку с файлами симулятора:

$ cd ns-allinone-3.45

1.3 Сборка симулятора

Чтобы собрать симулятор, из директории ns-allinone-3.45 переходим в директорию ns-3.45:

$ cd ns-3.45

и выполняем команду конфигурирования сборки:

$ ./ns3 configure --enable-examples --enable-tests

Затем используем программу ns3 для сборки библиотек модулей и исполняемых файлов симулятора:

$ ./ns3 build

По завершению сборки выполняем проверку результата, запустив тесты:

$ ./test.py

Если тесты завершаются без ошибок, в консоль выводится сообщение примерно такого содержания:

927 of 927 tests passed (927 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors) 

Это означает, что симулятор был успешно установлен. Для версии симулятора 3.43, с которой способен работать модуль Satellite, результат будет такой:

866 of 866 tests passed (866 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors) 

1.4 Документация

Документацию по симулятору можно найти онлайн:

wiki: https://www.nsnam.org/wiki/Main_Page

Документация по API симулятора: https://www.nsnam.org/docs/doxygen/index.html

При необходимости, актуальную версию документации по API можно собрать самостоятельно по исходным кодам скачанной вами версии симулятора. Для этого требуется Doxygen версии 1.11. Порядок сборки описан здесь: https://www.nsnam.org/docs/doxygen/index.html

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

Глава 2. Запуск моделирования

Замечание

Следует отметить: не смотря на то, что программы симуляции были написаны на языке Си++, в контексте NS-3 они называются сценариями.

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

$ ./ns3 run hello-simulator

Сценарий выводит в консоль текст: Hello Simulator

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

NS-3 позволяет превращать внутренние переменные сценария (с простыми типами) в аргументы командной строки сценария. Это дает возможность изменять параметры моделирования без перекомпиляции кода сценария, что сильно экономит время при запусках с перебором параметров. Кроме того, открывает возможность создавать узкоспециальные симуляторы. Более подробно об этом будет рассказано позже.

Ниже показан пример запуска сценария с именем second:

$ ./ns3 run "second --nCsma=10 --verbose=True" 

Для последовательного запуска нескольких сценариев ( пакетный запуск сценариев) можно воспользоваться утилитой nsbt (Github) которой нужно передать путь к исполняемому файлу симулятора и JSON-файл с именами тестов и аргументами:

$ ./nsbt.py --ns3path /home/igor/workspace_ns3.43/ns-3.43/ run tests.json 

JSON-файл со списком файлов должен иметь следующий формат:

{
  "test_1": {
    "test_name": "hello-simulator",
    "arguments": {}
  },
  "test_2": {
    "test_name": "second",
    "arguments": {
      "nCsma": 10,
      "verbose": true
    }
  },
  "test_3": {
    "test_name": "fourth",
    "arguments": {
      "parameter": "value"
    }
  }
} 

После запуска утилиты с указанным конфигурационным файлом мы получим следующий вывод в консоль:

============================================================
Starting Test ID: test_1
Test Name: hello-simulator
============================================================
Command: /home/igor/workspace_ns3.43/ns-3.43/ns3 run "hello-simulator"
[SUCCESS] Test test_1 passed.
Output: [0/2] Re-checking globbed directories...
ninja: no work to do.


============================================================
Starting Test ID: test_2
Test Name: second
============================================================
Command: /home/igor/workspace_ns3.43/ns-3.43/ns3 run "second --nCsma=10 --verbose=True"
[SUCCESS] Test test_2 passed.
Output: [0/2] Re-checking globbed directories...
ninja: no work to do.


============================================================
Starting Test ID: test_3
Test Name: fourth
============================================================
Command: /home/igor/workspace_ns3.43/ns-3.43/ns3 run "fourth --parameter=value"
[SUCCESS] Test test_3 passed.
Output: [0/2] Re-checking globbed directories...
ninja: no work to do.
Traced 0 to 1234

В этом листинге мы видим, что было выполнено 3 теста. Утилита выводит команды, которые применила для запуска конкретного теста.

Сегодня мы кратко ознакомились с возможностями модуля Satellite, научились устанавливать современную версию симулятора NS-3, запускать примеры симуляции. На сегодня это всё. В следующей статье мы сосредоточимся на вопросе как правильно организовать дерево проекта.

Работа выполнена в рамках Программы создания и развития центра НТИ на базе МФТИ, Физтех по направлению («сквозной» технологии) Национальной технологической инициативы «Перспективные технологии для космических систем и сервисов» при реализации комплексного научно-исследовательского и опытно-конструкторского проекта “Разработка комплексной среды моделирования и проектирования гибридных инфокоммуникационных сетей наземного, стратосферного и космического сегментов с использованием параметрического и структурного синтеза”.