В статье я рассмотрю, как недорого в лабораторных условиях собрать и на практике использовать GSM NetMonitor на основе открытого программного продукта Osmocom, более известного в IT-среде по проекту OpenBTS, позволяющему создавать персональные базовые станции. Так, входящая в его состав программа OsmocomBB помогает узнать большое количество различных технических характеристик, задействованных в стеке GSM-протоколов для удовлетворения личного исследовательского интереса. В образовательной среде она поможет понять и на практике изучить работу рассматриваемых телекоммуникационных сетей, на которых в той или иной степени базируются определённые 3G, 4G и 5G-решения. Чтобы минимизировать заимствования из схожих публикаций, материал носит практический характер (за редким исключением). Дополнительно я раскрою явным образом недокументированную, но полезную возможность рассматриваемого программного обеспечения по одновременному NetMonitor сигналов от различных операторов.

▍ 1. Введение


Интерес к устройству сетей сотовой связи, внешние элементы которых знакомы каждому, давно прямо или косвенно привёл к появлению общедоступных баз данных, содержащих технические характеристики базовых станций различных сетей. На основе информации из этих источников наши мобильные устройства могут осуществлять геолокацию без необходимости вычисления GPS-координат, а в условиях плотной городской застройки, когда вычисленные GPS-координаты сильно отличаются от действительных, выступают в качестве источника дополнительной информации для повышения достоверности местоопределения. Наполнение полезной информацией осуществляется с помощью людей, намеренно или непреднамеренно передающих геолокационную информацию куда и кому нужно. Доступ пользователей к подобным данным обычно называется NetMonitor и может быть реализован с помощью внешнего программного обеспечения для Android или встроенного и глубоко интегрированного в iOS нативного приложения (*3001#12345#*).

Инженерно-технический персонал операторов сотовой связи в своей профессиональной деятельности использует куда более прокаченные девайсы с ошеломляющей обычного человека стоимостью и соответствующим этой стоимости функционалом. Однако вернёмся к открытому программному обеспечению. Проект OpenBTS неоднократно и достаточно подробно разбирался на Хабре, например (из классики), публикация 1, публикация 2, публикация 3. При этом до сих пор эта тема вызывает определённый интерес в сообществе, что видно из обсуждений статьи, опубликованной в начале года.

▍ 2. Tutorial для гика


Кроме всего того, что уже разобрано, OsmocomBB позволяет недорого и увлекательно покопаться в технических аспектах работы сетей сотовой связи 2-го поколения стандарта GSM, реализуя ряд протоколов управления и передачи соответствующих команд на совместимые с ним модели телефонов Motorola (C115, C117, C123, C121, C118, C140, C139, C155, V171, приобрести их можно в подземных переходах, на eBay или Авито). Для подключения к компьютеру можно применять платы сопряжения интерфейсов UART и USB, например, модель P2102. Для этого традиционно кабель подключения к телефону Motorola собирается на коленках. Программную часть можно установить самостоятельно (всё-таки свободный софт), или поискать готовые образы для Raspberry.

Для понимания возможностей OsmocomBB представим его в качестве виртуального сотового телефона (софтфона), в котором реализованы канальный, сетевой и прикладной уровни абонентского оборудования. В составе имеется прога Mobile, отвечающая за управление софтфоном посредством telnet. При этом сам телефон непосредственно реализует физический уровень. Загрузка в Motorola L1 прошивки осуществляется следующей командой:

~/osmocombb/src/host/osmocon/osmocon -p /dev/ttyUSB0 -m c123xor -c ~/osmocombb/src/target/firmware/board/compal_e88/layer1.highram.bin

-p /dev/ttyUSB0 – интерфейс подключения телефона
-m c123xor – режим работы протокола, загружаемого в телефон
-c ~/osmocombb/src/target/firmware/board/compal_e88/layer1.highram.bin - прошивка

L2 и L3 активируются так:

~/osmocombb/src/host/layer23/src/mobile/mobile -i 127.0.0.1

Далее управление осуществляется посредством CLI:

telnet 127.0.0.1 4247


По умолчанию конфиг для мобилы выглядит следующим образом:

show running-config
Current configuration:
!
!
line vty								настройки консоли
 no login								доступ без авторизации
!
gps device /dev/ttyACM0					настройки GPS
gps baudrate default
no gps enable
!
no hide-default							настройки отображения конфигурации
!
ms 1									описание mobile station 1
 layer2-socket /tmp/osmocom_l2
 sap-socket /tmp/osmocom_sap
 sim reader
 network-selection-mode auto			режим выбора сети
 imei 000000000000000 0					imei
 imei-fixed
 no emergency-imsi
 no sms-service-center					номер SMS-центра
 no call-waiting						настройки вызова
 no auto-answer
 no force-rekey
 no clip
 no clir
 tx-power auto							управление мощностью
 no simulated-delay
 no stick
 location-updating						управление работой с сотовой сетью
 neighbour-measurement
 codec full-speed prefer				настройки вокодеров
 codec half-speed
 no abbrev
 support								поддерживаемые режимы
  sms
  a5/1
  a5/2
  p-gsm
  e-gsm
  r-gsm
  no gsm-850
  dcs
  no pcs
  class-900 4
  class-850 4
  class-dcs 1
  class-pcs 1
  channel-capability sdcch+tchf+tchh	поддержка логических каналов
  full-speech-v1
  full-speech-v2
  half-speech-v1
  min-rxlev -106						минимальный уровень приёма
  dsc-max 90
  no skip-max-per-band
 exit
 test-sim								настройки SIM-модуля
  imsi 001010000000000					(это целое отдельное устройство внутри телефона)
  no barred-access
  no rplmn
  hplmn-search foreign-country
 exit
 no shutdown
exit
!
end


При желании его можно отредактировать:

nano /home/Mike/.osmocom/bb/mobile.cfg

Далее активируется командный режим, и после возможно выполнение предустановленных команд:

enable
show ms
show cell 1
showsubscriber 1

В прошлом проект Osmocom активно развивался, поэтому изменялись команды, передаваемые на софтфон, а некоторые сегодня имеют дублирующие функции:

Команды cli
help							вызов справки Mobile
list							вывод перечня поддерживаемых команд
writeterminal					запись назначенных параметров в память софтфона
writefile						запись назначенных параметров в файл
writememory						запись назначенных параметров в оперативную память
show running-config				вывод текущей конфигурации Mobile
exit							выход из текущей сессии telnet и запуск сессии с параметрами по умолчанию
disable							отключить командный режим
configureterminal				изменить конфигурацию софтфона
copyrunning-configstartup-config использовать текущую конфигурацию софтфона в качестве конфигурации по умолчанию
showstartup-config				показать конфигурацию по умолчанию
showversion						показать текущую версию Osmocom
showonline-help					показать справку онлайн
terminallength<0-512>			назначение количества выводимых строк
terminalnolength				вывод неограниченного количества строк
showhistory						история вводимых команд
terminalmonitor					перевод софтфона в режим мониторинга
terminalnomonitor				отключение мониторинга софтфона сети связи
showms [MS_NAME]				вывод характеристик сети связи
showsubscriber [MS_NAME]		вывод характеристик, записанных в SIM-карту софтфона
showsupport [MS_NAME]			вывод поддерживаемых сетью связи технологий
showcell MS_NAME				вывод характеристик базовой станции
showcell MS_NAME <0-1023> [pcs]	сканирование каналов базовых станций и вывод их характеристик
showneighbour-cell MS_NAME		вывод списка соседей для текущей базовой станции
showba MS_NAME [MCC] [MNC]		вывод списка частот, используемых текущей сетью связи
show forbidden location-area MS_NAME	вывод текущей зоны местоположения
showforbiddenplmn MS_NAME		вывод значений MCC и MNC, на которых настроен софтфон
monitornetwork MS_NAME			перевод софтфона в режим мониторинга заданной сети
nomonitornetwork MS_NAME		отключение мониторинга софтфона заданной сети
off								отключение софтфона
simtestcard MS_NAME MCC MNC LAC TMSI attached	передача параметров зоны местоположения и временного номера софтфону
simreader MS_NAME				присоединение SIM-карты софтфона к устройству SIM Reader
simremove MS_NAME				отсоединение SIM-карты софтфона от устройства SIM Reader
sim pin MS_NAME PIN				установка PIN-кода
sim disable-pin MS_NAME PIN		отключение PIN-кода
sim enable-pin MS_NAME PIN		включение PIN-кода
sim change-pin MS_NAME OLD NEW	изменение PIN-кода
sim unblock-pin MS_NAME PUC NEW	разблокировка PIN-кода
simlai MS_NAME MCC MNC LAC		присвоение софтфону зоны местоположения
network search MS_NAME			поиск сети связи
networkshow MS_NAME				отображение параметров сети связи
network select MS_NAME MCC MNC [force]	выбор сети связи
call MS_NAME (NUMBER|emergency|answer|hangup|hold)	осуществление вызова
call MS_NAME retrieve [NUMBER]	осуществление повторного вызова
call MS_NAME dtmf DIGITS		осуществление вызова по технологии DTMF
sms MS_NAME NUMBER .LINE		отправка SMS-сообщения
service MS_NAME (*#06#|*#21#|*#67#|*#61#|*#62#|*#002#|*#004#|*xx*number#|*xx#|#xx#|##xx#|STRING|hangup)	отправка USSD-запроса
deleteforbiddenplmn NAME MCC MNC удаление параметров зоны местоположения


Чтобы посмотреть состояние софтфона, определить MCC (код страны — здесь и далее в скобках будет указано простым языком, что это такое) и MNC (условный код, закреплённый за оператором), к которому выполнено подключение, а также ARFCN (номер частотного / физического канала), LAC (номер района, объединяющего несколько базовых станций) и CELLID текущей базовой станции (цифровой код сектора), выполняем следующее:

show ms
% (MS 1)
% Trying to registering with network...
1
MS '1' is up, service is limited (pending)
  IMEI: 000000000000000
     IMEISV: 0000000000000000
     IMEI generation: fixed
  automatic network selection state: A1 trying RPLMN
                                     MCC=XXX MNC=XXX
  cell selection state: C3 camped normally
                        ARFCN=715(DCS) MCC=XXX MNC=XX LAC=0xXXXX CELLID=0xXXXX
  radio ressource layer state: idle
  mobility management layer state: MM idle, attempting to update


DCS означает, что сотовый подключён к базовой станции, работающей в диапазоне 1800 МГц. Это также понятно из значения ARFCN. Кстати, написанные вместе MCC + MNC + LAC = LAI (международный идентификатор зоны местоположения). Ниже приведу соответствие значений ARFCN его физическим величинам (МГц):

Таблица ARFCN для GSM-900 и 1800


Увидеть значения IMSI (15-значный десятичный номер, закреплённый оператором за своим пользователем), временного номера TMSI (16-ричный номер, который меняется от LAI к LAI для сохранения приватности), сеансового ключа шифрования (симметричный ключ шифрования):

show subscriber 1
Mobile Subscriber of MS '1':
 IMSI: XXXXXXX
 ICCID: XXXXXXXXX
 Service Provider Name: XXXXXXX
 Status: U1_UPDATED  IMSI detached  TMSI 0xXXXXXX
         LAI: MCC XXX  MNC XX  LAC 0xXXXX
 Key: sequence 0  8f 30 d7 21 bc 1a 24 6c
 Registered PLMN: MCC XXX  MNC XX
 Access barred cells: no
 Access classes: C3
 List of preferred PLMNs:
        MCC    |MNC
        -------+-------
        XXX    |XX      


1 – это порядковый номер mobile station. Тот же вывод, если в Motorola не вставлена SIM-карта, будет выглядеть следующим образом:

Mobile Subscriber of MS '1':
 No SIM present.

Как раз приведённое выше значение ключа шифрования (sequence=0, key=8f30d721bc1a246c) может быть использовано для расшифровки собственного трафика в среде разработки GNU Radio при применении флоуграфа gr-gsm. На иллюстрации ниже я отправил SMS с текстом «Go», записал радиосигнал с помощью SDR-приёмника и указанного флоуграфа, декодировал и дешифровал первоначальный текст:



Можно получить подробную информацию о работе конкретной соты и увидеть псевдографическое представление частотной сетки (76 – это номер рабочей частоты соты). Легенда для схемы прилагается: 'S' = serv. cell 'n' = SI2 (neigh.) 'r' = SI5 (rep.) 'b' = SI2+SI5:

show cell 1 76
ARFCN = 76  channels 512+ refer to DCS (1800)
Available SYSTEM INFORMATIONS = 2 3

SI2 (neigh.) BA=0: 53,57,62,67,73,113

   0 .....................................................n...n....n. 63
  64 ...n.....n.......................................n...........    127
 128                                                                  191
 192                                                                  255
 256                                                                  319
 320                                                                  383
 384                                                                  447
 448                                                                  511
 512 ................................................................ 575
 576 ................................................................ 639
 640 ................................................................ 703
 704 ................................................................ 767
 768 ................................................................ 831
 832 ......................................................           895
 896                                                            ..... 959
 960 ................................................................ 1023
 'S' = serv. cell  'n' = SI2 (neigh.)  'r' = SI5 (rep.)  'b' = SI2+SI5

Serving Cell:
 BSIC = 0,5  MCC = XXX  MNC = XX  LAC = XXXX  Cell ID = XXXX
 Country = XXXXXXXX  Network Name = XXXXX
 MAX_RETRANS = 4  TX_INTEGER = 32  re-establish = allowed
 Cell barred = no  barred classes =
 CBQ = 0  CRO = 0  TEMP_OFFSET = 0  PENALTY_TIME = 0
NCC Permitted BCCH = 0 1 2 3 4 5 6 7

Neighbor Cell:
 MAX_RETRANS = 4  TX_INTEGER = 32  re-establish = allowed
 Cell barred = no  barred classes =

MX_TXPWR_MAX_CCCH = 5  CRH = 6  RXLEV_MIN = -102  NECI = 1  ACS = 0
BCCH link timeout = 52  DTX = 1  PWRC = 1
SACCH link timeout = 0  DTX = 0  PWRC = 0
CCCH Config = 1 CCCH  BS-PA-MFMS = 2  Attachment = allowed
BS-AG_BLKS_RES = 2  T3212 = 21600 sec.
chan_nr = 0x00 TSC = 0  ARFCN = 0


Странные аббревиатуры SI2 и т. п. являются не чем иным, как сокращением от имени служебных сообщений system information type, применяемых в системе связи. Получить подробную информацию о соседних с сотой базовых станциях, так называемый neighbour-cells, можно следующим образом:

show neighbour-cells 1
Serving cell:

ARFCN=619(DCS)  RLA_C=-59  C1=43  C2=43  LAC=XXXXX

Neighbour cells:

#      |ARFCN  |RLA_C  |C1     |C2     |CRH    |prio   |LAC    |cell ID|usable |state
---------------------------------------------------------------------------------------
 1     | 553   |   -75 |  20   |  20   |   0   |normal |0xXXXX |0xXXXX |yes    |SYSINFO
 2     |  53   |   -77 |  25   |  25   |   0   |normal |0xXXXX |0xXXXX |yes    |SYSINFO
 3     | 520   |   -77 |  25   |  25   |   0   |normal |0xXXXX |0xXXXX |yes    |SYSINFO
 4     | 113   |   -78 |  24   |  24   |   0   |normal |0xXXXX |0xXXXX |yes    |SYSINFO
 5     |  76   |   -81 |  21   |  21   |   0   |normal |0xXXXX |0xXXXX |yes    |SYSINFO
 6     | 529   |   -83 |  12   |  12   |   0   |normal |0xXXXX |0xXXXX |yes    |SYSINFO
--- unmonitored cells: ---
 7     |  74   |   -85 |  17   |  17   |   0   |normal |0xXXXX |0xXXXX |yes    |SYSINFO
 8     | 631   |   -85 |  17   |  17   |   0   |normal |0xXXXX |0XXXXX |yes    |SYSINFO
 9     | 512   |  -101 |-      |-      |-      |-      |-      |-      |no     |RLA_C
10     | 515   |   -98 |-      |-      |-      |-      |-      |-      |no     |RLA_C
11     | 517   |   -91 |-      |-      |-      |-      |-      |-      |no     |RLA_C
12     | 521   |   -87 |-      |-      |-      |-      |-      |-      |no     |RLA_C
13     | 616   |   -92 |-      |-      |-      |-      |-      |-      |no     |RLA_C
14     | 623   |  -101 |-      |-      |-      |-      |-      |-      |no     |RLA_C


RLA_C — это уровень принимаемого сигнала, С1 и С2 — это вычисляемые качественные показатели, на основании которых мобила выполняет переключение cell selection и cell reselection. Эти параметры работают только в idle mode. Handover decision происходит на контроллере в сети. Отличная возможность разобраться на практике с выбором соты. Ещё одна команда про то же самое — показать Band Allocation:

show ba 1
Band Allocation of network: MCC XXX MNC XX
 53 74 76 113 512(DCS) 515(DCS) 517(DCS) 520(DCS) 521(DCS) 529(DCS) 553(DCS) 616(DCS) 619(DCS) 623(DCS) 624(DCS) 628(DCS) 631(DCS)
Band Allocation of network: MCC XXX MNC XX
 77 82 85 88 89 91 94 95 97 99 100 102 104 680(DCS) 682(DCS) 764(DCS) 765(DCS) 767(DCS) 770(DCS) 776(DCS) 777(DCS) 778(DCS) 779(DCS) 782(DCS) 790(DCS) 793(DCS) 802(DCS) 807(DCS) 810(DCS)
Band Allocation of network: MCC XXX MNC XX
 26 28 30 31 37 38 40 45 46 48 51 640(DCS) 641(DCS) 649(DCS) 656(DCS) 711(DCS) 715(DCS) 717(DCS) 719(DCS) 721(DCS) 723(DCS) 724(DCS) 729(DCS) 735(DCS) 736(DCS) 740(DCS) 741(DCS) 742(DCS) 752(DCS) 753(DCS)


Какого-то практического применения этой информации я не вижу. Позволю себе немного отклониться от темы и без излишней детализации показать, что может настраиваться непосредственно на базовой станции, а что на контроллере, управляющем их группой. Многие параметры уже знакомы по результатам NetMonitor. Ниже представлен конфигурационный файл для проекта OsmoBTS, в котором видно, что на базе особо нечего задать:

osmo-bts.cfg
phy 0
 instance 0
 osmotrx ms-power-loop -65
 osmotrx legacy-setbsic
bts 0
 band 1800
 ipa unit-id 1801 0
 oml remote-ip 127.0.0.1
 trx 0
  phy 0 instance 0


А это пример конфигурации OpenBSC (контроллера), где как раз есть чем заняться. В нашем распоряжении: MCC, MNC, высвечиваемое на сотовом телефоне имя сети (name(s)), параметры шифрования (encryption) и много чего ещё. Каждая базовая станция номеруется как bts 0. Коротко напомню о структуре основных логических каналов управления в стандарте GSM: BCCH + CCCH + SDCCH + TCH + TCH… Количество временных слотов timeslots (временное разделение всё-таки) равно 8. Числа 4 и 8 для SDCCH означают «количественную ёмкость» логического канала. Больше значение — больше количество одновременно обслуживаемых сотовых телефонов. F в TCH канале означает использование полноскоростного кодирования для голоса. Когда все временные слоты использованы (сконфигурированы), тогда базе могут быть добавлены дополнительные физические каналы.

openbsc.cfg
e1_input
 e1_line 0 driver ipa
network
 network country code ХХХ
 mobile network code ХХ
 short name ХХХ
 long name ХХХ
 auth policy accept-all
 location updating reject cause 13
 encryption a5 0
 neci 1
 rrlp mode none
 mm info 1
 handover 0
 handover window rxlev averaging 10
 handover window rxqual averaging 1
 handover window rxlev neighbor averaging 10
 handover power budget interval 6
 handover power budget hysteresis 3
 handover maximum distance 9999
 bts 0
  type sysmobts
  band DCS1800
  cell_identity XXXX
  location_area_code XXXXX
  training_sequence_code 7
  base_station_id_code XX
  ms max power 15
  cell reselection hysteresis 4
  rxlev access min 0
  channel allocator ascending
  rach tx integer 9
  rach max transmission 7
  ip.access unit_id 1801 0
  oml ip.access stream_id 255 line 0
  gprs mode none
  trx 0
   rf_locked 0
   arfcn 514
   nominal power 23
   max_power_red 30
   rsl e1 tei 0
   timeslot 0
    phys_chan_config CCCH+SDCCH4
    hopping enabled 0
   timeslot 1
    phys_chan_config SDCCH8
    hopping enabled 0
   timeslot 2
    phys_chan_config TCH/F
    hopping enabled 0
   timeslot 3
    phys_chan_config TCH/F
    hopping enabled 0
   timeslot 4
    phys_chan_config TCH/F
    hopping enabled 0
   timeslot 5
    phys_chan_config TCH/F
    hopping enabled 0
   timeslot 6
    phys_chan_config TCH/F
    hopping enabled 0
   timeslot 7
    phys_chan_config TCH/F
    hopping enabled 0


В результате хаотичного жима клавиш клавиатуры научных изысканий найдена интересная недокументированная возможность, позволяющая переводить телефон Motorola в режим сканирования всех операторов сотовой связи, а не только того, чья SIM-карта установлена внутри:

testcard MS_NAME MCC MNC LAC TMSI attached

Подставляем в неё правдоподобные значения (шаблон можно подсмотреть из результатов выполнения команд выше) и получаем устройство для выполнения NetMonitor одновременно всех операторов сотовой связи. Это очень удобно, так как не надо переставлять туда-сюда SIM-карту. В консоль выводятся значения MCC, MNC, LAC, CID, ARFCN, уровень сигнала базовых станций. Это является достаточным для определения радиочастотного покрытия GSM:

show cell 1
ARFCN  |MCC    |MNC    |LAC    |cell ID|forb.LA|prio   |min-db |max-pwr|rx-lev
-------+-------+-------+-------+-------+-------+-------+-------+-------+-------
  27   |XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-73
  28   |XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-78
  30   |XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-83
  31   |XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-80
  32   |XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-81
  36   |XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-79
  38   |XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-83
  46   |XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-67
  51   |XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-82
  53   |XXX    |BB     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-83
  61   |XXX    |BB     |0xXXXX |0xXXXX |no     |normal |-102   |   5   |-80
  76   |XXX    |BB     |0xXXXX |0xXXXX |n/a    |n/a    |-102   |   5   |-98
  97   |XXX    |CC     |0xXXXX |0xXXXX |no     |normal |-104   |   5   |-82
 100   |XXX    |CC     |0xXXXX |0xXXXX |no     |normal |-104   |   5   |-73
 113   |XXX    |AA     |0xXXXX |0xXXXX |n/a    |n/a    |-102   |   5   |-94
 520DCS|XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   0   |-78
 529DCS|XXX    |AA     |0xXXXX |0xXXXX |n/a    |n/a    | -95   |   0   |-86
 553DCS|XXX    |AA     |0xXXXX |0xXXXX |no     |normal | -95   |   0   |-75
 554DCS|XXX    |AA     |0xXXXX |0xXXXX |no     |normal |-102   |   0   |-83
 616DCS|XXX    |BB     |0xXXXX |0xXXXX |n/a    |n/a    | -95   |   0   |-89
 631DCS|XXX    |BB     |0xXXXX |0xXXXX |no     |normal |-102   |   0   |-86
 641DCS|XXX    |BB     |0xXXXX |0xXXXX |no     |normal |-102   |   0   |-86
 715DCS|XXX    |CC     |0xXXXX |0xXXXX |no     |normal |-102   |   0   |-77
 736DCS|XXX    |CC     |0xXXXX |0xXXXX |no     |normal |-102   |   0   |-86
 741DCS|XXX    |CC     |0xXXXX |0xXXXX |no     |normal |-102   |   0   |-84
 764DCS|XXX    |CC     |0xXXXX |0xXXXX |no     |normal |-100   |   0   |-86


Как раз всё, что нам нужно, для работы с соответствующими агрегаторами:


Другой документированной возможностью OsmocomBB является определение удалённости базовых станций от точки измерения по параметру Time Advance (TA). В этом случае Motorola сканирует физические каналы работы базовых станций и определяет значения: ARFCN, MCC, MNC и TA (однако отсутствует вывод информации о CID и LAC). Значение TA, равное 1, означает, что базовая станция находится на удалении от 550 до 1100 метров, значение TA, равное 2, означает расстояние от 1100 до 1650 метров и т. д. Имеется возможность подключения внешнего GPS через TTY для автоматической привязки результатов измерений к геоинформации. Работа возможна как от аккумуляторных батарей, так и от зарядного устройства:

~/osmocombb/src/host/layer23/src/misc/cell_log


Здесь стоит упомянуть, что кроме программы Mobile имеются другие, позволяющие обрабатывать нешифрованную информацию, постоянно передающуюся на радиоинтерфейсе. Так, чтобы декодировать канал CCCН (для 741 ARFCN), работаем с этой программой:

~/osmocombb/src/host/layer23/src/misc/ccch_scan -a 741 -i 127.0.0.1

Для перебора каналов BCCH и декодирования соответствующих пакетов с возможностью последующей работы в Wireshark:

~/osmocombb/src/host/layer23/src/misc/bcch_scan -i 127.0.0.1

Получение служебной информации из cell broadcast channel (как раз там, где передаются SMS-сообщения):

~/osmocombb/src/host/layer23/src/misc/cbch_sniff -a 741 -i 127.0.0.1

Упомянутый выше флоуграф также позволяет всё это обрабатывать.

▍ 3. Tutorial для преподавателя


Описанный технический инструментарий может быть применим в учебном процессе профильных высших учебных заведений. Достаточно легко нарастить его необходимым интерактивом для повышения интереса и внимательности аудитории. Теоретическая часть подлежит рассмотрению в формате лекции. После практических занятий или лабораторных работ знания начнут занимать своё место в голове. Закрепление их в формате самостоятельной работы, например, подготовка курсовых проектов по радиообследованию кампуса университета и прилегающей к нему территории, разнесённый замер технических характеристик систем связи, сличение с имеющейся информацией из общедоступных ресурсов, визуализация полученных результатов – всё это будет в разы лучше, чем сотрясание воздуха лектория или изучение скучных и пыльных учебников. Наконец, обсуждение в формате семинаров применённых технических решений, их слабых и сильных сторон (например, простоты), миграции в современные стандарты связи, общих черт и отличий работы 3G, 4G и 5G-сетей, вопросов информационной безопасности и т. д. позволит не только углубиться в тему, но и почувствовать себя специалистом инженером, а сам учебный процесс будет хотя бы немного походить на участие в современной IT-конференции.

▍ 4. Заключение


При прослушивании в лектории радиотехнического университета этих малопонятных терминов, да ещё на английском языке (на русском они порой выглядят ещё страшнее), в голове складывается кашеобразная картина, мало отражающая реальную работу сетей. Подобные открытые проекты позволяют самым волшебным образом прикоснуться ко многим техническим аспектам их работы, что исключительно полезно для удовлетворения собственного интереса или в образовательной среде: в работе преподавателя или тянущегося к качественным знаниям студента. Финансовые вложения при этом минимальные. Хотелось бы, чтобы отечественное образование оставалось конкурентноспособным и соответствующим требованиям современного технологичного мира не только на бумаге, в планах и концепциях.

Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх

Комментарии (3)


  1. Sagittarius67
    00.00.0000 00:00
    +1

    С1 и С2 — это вычисляемые качественные показатели, на основании которых мобила выполняет переключение между сотами. Отличная возможность разобраться на практике с хендовером.

    C1 и C2 это не про хендовер. Это про cell selection и cell reselection, т.е. эти параметры работают только в idle mode. Handover decision происходит на BTS или на BSC. По ссылке, кстати, так и написано - "The C1 and C2 is used in GSM cell selection and reselection respectively. ".


    1. olegtsss Автор
      00.00.0000 00:00
      +1

      Хотел сначала написать: "Первая пасхалка найдена внимательным читателем!" Но не все будет правдой. Спасибо, исправлено.


  1. MaFrance351
    00.00.0000 00:00
    +2

    Огромное спасибо за статью. Всё ещё продолжаю интересоваться этой темой.

    (И очень рад, что меня вспомнили!)