С.А. Милованов

Локальная сеть 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