GSM на столі

Наприклад, у Нейроні сидять хлопці з компанії Fairwaves, які розробляють GSM обладнання для недорогих стільникових мереж. Весь стек – від заліза до софту – доступний під open source ліцензією. Так, так, включаючи залізо. Тому зовсім не обов'язково працювати у Fairwaves, щоб познайомитись із цією технологією. І результат копання можна викласти на GitHub або зробити внесок у проект. Як мінімум, чим буде похвалитися на співбесідах.

Пара днів читання документації, перегортання коду, десятки нав'язливих питань та експериментів (дякую Олександру Чемерису та Івану Ключникову за допомогу). І ось результат – власна GSM-мережа під контролем мого Макбука:

столі
Тестувати мережу прийшли постояльці хакспейсу:

Ubuntu

Про що вони говорять?

USRP

Як це працює? Ось так:

На комп'ютері працює VirtualBox з Ubuntu, на якому запущений Docker контейнер з Ubuntu 12.04 та open source контролером базових станцій OpenBSC (Base Station Controller, BSC). У моєму випадку OpenBSC працює в режимі network-in-the box і включає не тільки BSC, але і просту реалізацію всіх інших компонентів, необхідних для невеликої GSM-мережі (MSC, HLR, VLR, AuC і SMSC).

До контролера локальної мережі підключається базова станція Fairwaves UmSITE, на якому крутиться OsmoBTS — open source реалізація базової станції GSM (Base Transceiver Station, BTS):

USRP

Для запуску GSM-мережі достатньо однієї (!) команди:

(Ні Докера? Встановіть його. У вас не Ubuntu і Докер не ставиться? Тоді дивіться нижче.)

А якщо у мене не Ubuntu?

Якщо у вас немає Ubuntu 12.04+, встановіть Vagrant та VirtualBox та запустіть віртуалку Ubuntu + Docker за допомогою цих команд:

Чому Docker?

Так, Docker використовувати необов'язково. Можна і руками все поставити та налаштувати. Але, по-перше, мені хотілося поекспериментувати з Docker. По-друге, з ним можна надійно загорнути, а потім повторити конфігурацію всієї машини (debian-пакети, вручну встановлені програми, файли конфігурації). По-третє, список із десятків команд та маніпуляцій замінюється на одну – docker run … .

Чому не OpenBTS?

Крім описаних проектів Osmocom (OpenBSC, OsmoBTS, OsmoTRX) є ще одна open source реалізація GSM протоколів — OpenBTS. Вік обох проектів приблизно однаковий, але OpenBTS відоміший в інтернеті завдяки трохи більшій доброзичливості до новачків. Якщо не вникати в технічні відмінності, то в реальних умовах працює Osmocom:

Випускається використання Osmocom software при запуску цього року і повідомила, що його роботи дуже потрібні в реальному житті розробок не OpenBTS. It майже never crashes, has more features, scales better and is more flexible.

Де взяти обладнання?

Найпростіший варіант для мешканців Москви - користуватися обладнанням у хакспейсі Нейрон :)

Якщо ви живете не в Москві або просто хочете мати обладнання, щоб пограти з GSM у себе вдома, є дві порівняно недорогі альтернативи для лабораторного застосування:

  • Ettus Research USRP різних версій
  • Fairwaves UmTRX
За можливостями вони приблизно близькі, але UmTRX має переваги:

  • усі схеми плати та вихідні коди софту доступні під open source ліцензією
  • дешевше, ніж аналогічна конфігурація USRP
  • плата може працювати з двома незалежними каналами, у той час як USRP мають лише один канал
  • GPS для точного підстроювання опорного генератора частотивже вбудований, а не закуповується окремо, як у USRP (плавуча частота генератора призводить до GSM до несподіваних проблем)
  • підтримка українського виробника (і не треба платити митниці)
Якщо хочеться трохи заощадити і не страшні проблеми з опорним генератором, можна використовувати USRP B200. У неї лише один канал, але для домашніх експериментів це не важливо. Опорний генератор USRP B200 не відповідає за точністю стандарту GSM, але в більшості випадків його вистачає для простої роботи «на столі». З USRP B200 можуть виникнути проблеми при хендовері від однієї вашої базової станції до іншої, але ж ви не плануєте будувати підноцінну мережу на коліні, правда?

Але я можу бути необ'єктивним, перевіряйте самі.