С.А. Милованов
Локальная сеть GSM на основе OpenBTS
Часть 5. Анализ структуры программного
обеспечения приемопередатчика (OpenBTS-UHD)
1. Описание программного обеспечения трансивера
Как отмечалось в предыдущих статьях, в качестве программного обеспечения трансивера в проектируемой сети используется исходный код OpenBTS, написанный на C++ и предположительно совместимый с любой 32-битовой Unix-системой. Изначально поддерживаемыми платформами должны были быть Fedora и Darwin, но никаких признаков несовместимости с другими разновидностям Unix не обнаружено [1, стр.17].
В общем виде исходный код OpenBTS - набор параллельных “логических каналов”, соответствующих спецификации GSM 04.03. Каждый канал, в свою очередь, состоит из слоев, приблизительно соответствующих стандартной модели OSI. Краткий обзор данных слоев представлен в спецификации GSM 04.01, Раздел 7.
Согласно спецификации GSM 04.01, Раздел 7.3, слои радиоинтерфейса Um выглядят следующим образом:
· L1, “Физический уровень”, радио-модем, осуществляющий мультиплексирование с разделением по времени и кодирование с исправлением ошибок (описывается в GSM 04.04 и GSM 05.xx серии);
· L2, “Канальный уровень”, слой адресации, сегментации и повторной передачи (LAPDm), (описывается в GSM 04.05 и 04.06, ITU-T Q.921);
· L3 – уровень сигнализации и управления соединениями (описывается в GSM 04.07, 04.08, 04.10, 04.11, 04.12 и ITU-T Q.931).
При описании данных слоев, часть, интерфейсно приближенная к аппаратным средствам, называется "низшей", а часть, которая взаимодействует с высокоуровневыми функциям – «высшей».
Относительно BTS направление "снизу-в-верх" носит название “uplink”, а направление "сверху-в-низ" - “downlink”. Относительно MS данные направления полностью противоположны.
Программное обеспечение приемопередатчика осуществляет передачу потока данных по радиоинтерфейсу GSM согласно следующим сценариям.
В направлении «uplink» [1, стр.17]:
1. Радио-пакеты принимаются USRP и оцифровываются. Результат передается программному обеспечению приемопередатчика в синхронизированных по времени USB-пакетах, используя стандартный интерфейс USRP;
2. Приемопередатчик синхронизирует временные метки USRP с эталонными часами GSM, изолирует каждый радио-пакет и демодулирует его в вектор по принципу «мягких символов». Формат модуляции определен в GSM 05.04, форматы пакетов описаны в GSM 05.02, Раздел 5.2;
3. Полученный вектор для каждого радио-пакета связан с временной структурой кадра GSM и передается в стек GSM через интерфейс данных;
4. В стеке GSM TDM-подуровень (L1) демультиплексирует каждый пакет согласно его временной позиции и посылает в соответствующий логический канал;
5. Логический канал пропускает каждый пакет в L1 FEC-процессор согласно правилам, определенным в GSM 05.02;
6. L1 FEC процессор выполняет декодирование FEC, описанное в GSM 05.03. На выходе - последовательность кадров L2, которая принимается логическим каналом и посылается процессору L2;
7. Процессор L2 управляет автоматом состояний LAPDm, который выполняет запросы повторной передачи, повторную передачу и сегментацию. Данный автомат неявно определен в GMS 04.06 и явно описан в ITU-T Q.921;
8. В L3 определяется тип сообщения и вызывается соответствующая функция управления для осуществления действий, согласно содержанию сообщения. Эти функции управления также взаимодействуют с внешним миром через SIP и другие протоколы.
В направлении «downlink»:
1. В L3 функция управления формирует сообщение L3, преобразовывает сообщение в кадр L3 и посылает его в логический канал, который в свою очередь передает его вниз, в L2;
2. Процессор L2 разбирает кадр L3 на сегменты и преобразует каждый сегмент в кадр L2. Каждый кадр L2 отправляется вниз в L1 согласно аппарату состояний LAPDm. LAPDm может также формировать дополнительные кадры L2 самостоятельно, согласно запросам на повторную передачу и правилам повторной передачи;
3. Процессор L1 FEC кодирует каждый кадр L2 согласно правилам, описанным в GSM 05.03, формируя четыре исходящих радио-пакета. Каждый радио-пакет согласован с намеченным временем передачи согласно правилам TDM, описанным в GSM 05.02. Эти пакеты передаются интерфейсу TDM;
4. Нисходящий подуровень TDM представляет интерфейс, в котором радио-пакеты от L1 переформатируются в сообщения для дейтаграммного интерфейса приемопередатчика.
5. После доставки в приемопередатчик исходящие радио-пакеты сортируются в приоритетную очередь согласно времени передачи. Пакеты выбираются из очереди по мере готовности к передаче и модулируются согласно GSM 05.04. Модулированные волнообразные образцы отправляются в USRP по стандартному синхронизированному по времени интерфейсу USB. Если ни один пакет не готов к передаче в установленный срок, приемопередатчик генерирует соответствующую заполняющую последовательность;
6. В USRP образцы преобразовуются в аналоговые волны для передачи по радиоканалу.
В состав программного обеспечения приемопередатчика входят субполосный тюнер, GMSK модемы и временной синхронизатор для радиоинтерфейса [1, стр.22].
2. Установка OpenBTS-UHD
Процесс установки непосредственно OpenBTS состоит из двух этапов. Во-первых, необходимо установить вспомогательный компонент «libosip». Скачать архив с данным компонентом можно с ресурса «http://ftp.gnu.org/gnu/osip/libosip2-3.6.0.tar.gz». Для установки данного компонента необходимо выполнить команды:
cd /home/melsp/projects/openbts/
tar zxvf libosip2-3.6.0.tar.gz
mkdir linux-build
../libosip2-3.6.0/configure
make clean
make all
make
make install
После установки вспомогательного компонента необходимо скачать и установить непосредственно OpenBTS. Данные операции выполняются с помощью следующих команд:
cd /media/docum/obts
git clone git://github.com/ttsou/openbts-uhd.git
cd /home/melsp/projects/openbts/openbts-uhd/public-trunk
./bootstrap
./configure --with-usrp1 --with-singledb
make
3. Начальная настройка конфигурационного файла
Конфигурационный файл OpenBTS предназначен для установки параметров проектируемой сети и работы трансивера в частности. Он расположен по адресу '/home/melsp/projects/openbts/openbts-uhd/public-trunk/apps/OpenBTS.config'.
На начальном этапе целесообразно выделить несколько важных пунктов настройки конфигурационного файла:
1. Установка уровня журналирования – INFO - позволяет просматривать текстовые сообщения, отражающие результаты различных сценариев работы системы. Определение файла журналирования - Log.FileName - позволяет вести запись в файл. Если файл не определить, результаты журналирования будут отображаться в командном окне, в котором запущен OpenBTS:
Log.Level INFO (строка 66)
Log.FileName openbts-uhd.log (строка 77)
..
TRX.LogLevel INFO (строка 135)
TRX.LogFileName TRX-uhd.log (строка 138)
2. Так как в системе используется тактовый генератор с частотой 52 МГц, необходимо изменить TRX-путь:
TRX.Path ../Transceiver52M/transceiver (строка 121)
3. Установить открытую регистрацию (для первого теста):
Control.OpenRegistration (строка 269)
$optional Control.OpenRegistration
(Впоследствии лучше не оставлять данную настройку таковой, так как это позволит любому стороннему телефону зарегистрироваться в системе).
4.
Установить
мобильный код страны и код сети. Необходимо быть особенно осторожным, чтобы не
использовать ничего из уже реально используемого операторами. Коды стран и
сетей приведены здесь:
https://en.wikipedia.org/wiki/Mobile_Network_Code#R.
Можно выбрать MCC=250 (Российская Федерация), MNC=60 (не используемый никем код):
GSM.MCC 250 (строка 314)
GSM.MNC 60 (строка 317)
5. Установить GSM - диапазон и канал. Диапазон определен техническим заданием – GSM-900, а номер дуплексного речевого радиоканала в используемом диапазоне был определен в разделе 4.2.:
GSM.Band 900 (строка 342)
$static GSM.Band
..
GSM.ARFCN 15 (строка 346)
$static GSM.ARFCN
6. Уведомить конечных пользователей о том, что сеть не поддерживает экстренные вызовы:
GSM.RACH.AC 0x0400 (строка 460)
..
Control.NormalRegistrationWelcomeMessage Welcome to OpenBTS! We do not support emergency calls. Your IMSI is (строка 282)
На этом установку и начальную настройку программного обеспечения трансивера можно считать выполненной.
Использованная литература:
1. The Open BTS Project, David A. Burgess, Harvind S. Samra, August 3, 2008