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


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

Як це працює? Ось так:
На комп'ютері працює 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):

Для запуску 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
- усі схеми плати та вихідні коди софту доступні під open source ліцензією
- дешевше, ніж аналогічна конфігурація USRP
- плата може працювати з двома незалежними каналами, у той час як USRP мають лише один канал
- GPS для точного підстроювання опорного генератора частотивже вбудований, а не закуповується окремо, як у USRP (плавуча частота генератора призводить до GSM до несподіваних проблем)
- підтримка українського виробника (і не треба платити митниці)
Але я можу бути необ'єктивним, перевіряйте самі.