Одна из моих любимых книг — High Performance Browser Networking Ильи Григорика от 2013 года. В ней можно найти не только разумные советы, но и потрясающие истории из жизни.

46% заряда аккумулятора тратится на передачу 0,2% байтов


Когда пользователь сервиса Pandora проигрывает песню, весь файл передаётся одним куском, и это правильно – передавай сразу столько данных, сколько можешь, а потом держи радио выключенным как можно дольше.

Однако после этой передачи приложение каждую минуту отсылает пинги для периодического анализа аудитории. И что в итоге? Эти пинги занимают 0,2% от общих переданных данных, потребляя при этом 46% всей энергии, использованной приложением!

Илья Григорик, High Performance Browser Networking


Каждый раз в книге Илья довольно широко раскрывает свою точку зрения, подкрепляя её объёмными примерами. Чтобы рассказать читателям о времени работы аккумулятора телефона, он целую главу посвящает деталям работы модема GSM, UMTS и LTE. Интересно бывает осознавать, как возникающая на одном из уровней проблема уходит корнями на несколько уровней ниже.

Изучая весь стек технологий, книга не просто даёт нам набор фактов, а продвигает целую философию.

Хорошие разработчики знают, как что работает.
Великие разработчики знают, почему это работает.

Стив Саудерс, предисловие к книге High Performance Browser Networking


Старая идея по-новому


В 2013 году, когда я читал книгу, я думал, что было бы круто провести собственное расследование на эту тему, и визуализировать то, как радиомодем перепрыгивает с вышки на вышку при движении телефона.

С телефоном 2013 года под управлением iOS этого было сделать нельзя, он не давал доступ к нужным данным. Но сегодня у меня Pixel, и такой проблемы у него нет. LocationManager ежесекундно выдаёт местоположение по GPS (широту и долготу)., TelephonyManager выдаёт cellID=(mmc,mcc,lac,cid) для сотовой вышки.

База данных cellID поможет узнать широту и долготу каждой вышки. Останется лишь ежесекундно рисовать маршрут (красным) и связь с вышками, для каждой из которых выбран свой цвет.


Поездка из Саннивейл в Маунтин-Вью (кликабельно)

На диаграмме видно 7-минутную поездку длиной 3,7 км с телефоном с поддержкой LTE (UE, от User Equipment). По пути встретились пять вышек и девять ячеек связи (eNB, от Evolved NodeB).

Анализ


Комбинируя Google StreetView и Wikipedia, можно во многом разобраться.


(кликабельно)

По одним и тем же координатам eNB могут находиться несколько cellID. Просто антенна на eNB покрывают не 360°. Угол направления и дальность работы каждой антенны режут пространство на сектора.

Местоположение и направление антенн выбирается стратегически. На карте выше вышки расставлены вдоль шоссе 85, и антенны смотрят параллельно ему. У некоторых антенн сектор приёма-передачи получается узким и длинным – возможно, это позволяет увеличить максимальное количество обслуживаемых телефонов во время пробок.

Плотность eNB гораздо выше, чем я думал. В интернете пишут, что дальность действия сотовой вышки составляет 45 миль. Возможно, это в дикой местности, но в городе плотность населения и плотность расстановки eNB связаны. В Саннивейл вышки стоят через каждые полтора километра.

Вышки не всегда делят несколько операторов. Точность базы данных CellID такая большая, что я смог найти эти вышки на Google StreetView. Я думал, что обнаружу там большие монолиты, усеянные антеннами, по нескольку штук на каждого оператора, но в большинстве случаев на вышке висит по одной антенне.

Антенны eNB крепят не только на вышках. Иногда они располагаются в церквях, на высоковольтных линиях электропередач и даже на коммерческих зданиях.



Как только вы начинаете искать эти вышки, они для вас из невидимых превращаются в объекты, которые невозможно игнорировать.

LTE-радио умеет прыгать между разными сотами. Судя по всему, достаточно часто это происходит несколько раз в минуту, для того, чтобы справиться с тем, что здания загораживают вышки.

Выбор вышки кажется детерминистским. На двух картах выше подключения карт на одном и том же участке пути выглядят похоже. Выбор делает конечный автомат, конфигурацию которого каждая ячейка задаёт посредством SIB-сообщений. Переход состояния зависит от многих факторов, в т.ч. от порогового значения силы сигнала предыдущей соты или порогового значения силы сигнала следующей соты.

Проехав достаточно большое расстояние, 16 км, я обратил внимание на то, что код района LAC (Location Area Code), вшитый в CellID, не менялся. По спецификации LTE, сотовые вышки не обязаны выполнять передачу UE, если LAC не меняется. Телефон переключается на следующую вышку, оставаясь в режиме RCC_IDLE и не передавая данные. Это не только экономит батарею, но и означает, что сотовый оператор не знает точного местоположения телефона, если LAC не менялся (хотя по поводу точности определения местоположения по сотам идут споры ещё со времён появления GSM).

Судя по всему, на каждой вышке стоит по три антенны с сектором действия в 120°. Это очевидно, если покружить вокруг одной из них.



Лезем глубже в кроличью нору


Рисовать карты было интересно. Мне захотелось больше узнать об этой области. Я обнаружил, что она не только глубокая, но и широкая. Даже для того, чтобы нарисовать минимальную таблицу по итогам изысканий, пришлось достаточно много времени потратить на разборки с акронимами.

Поколение Технология Маркетинг Примечания
0G Телефоны в автомобилях Как у Филипа Драммонда [персонаж ситкома Diff'rent Strokes / прим. пер.]
1G DynaTAC Как у Гордона Гекко [персонаж фильма «Уолл-Стрит» / прим. пер.]
2G GSM GSM Nokia 3310 (он же «кирпич»). Поддержка SMS
GPRS Голос или данные
EDGE iPhone 1
cdmaOne CDMA
3G UMTS HSPA iPhone 3GS. И голос и данные одновременно
HSPA+
CDMA2000 C2K
4G LTE LTE iPhone 5 / Pixel 1
LTE Advanced LTE+
LTE Advanced Pro LTE Pro
5G 5G 5G iPhone 12 / Pixel 4a 5g
5G mmWave 5G mmWave iPhone 12 Pro Max /Pixel 5G


Эзотерический мир


Начиная с 2G (GSM) в 1998 году стандарты и документацию для всех технических стеков делали 3GPP. Все эти спецификации растягиваются на сотни документов, и чтобы понять их, потребуется, похоже, вся жизнь.

Я не нашёл LTE-стека с открытым кодом, на котором можно было бы учиться. А если бы он и был, то радиопередача в сотовом диапазоне тщательно регулируется, чтобы эти частоты не замусоривали неисправные модемы.

По этому вопросу издано немного книг, и все они крайне дорогие. Меня лично вдохновили на изыскания следующие три:
  • An introduction to LTE by Christopher Cox.
  • LTE Advanced by Sassan Ahmadi.
  • Long Term Evolution In Bullets, 2nd Edition by Chris Johnnson.


Наконец, существуют приложения, позволяющие вам заглянуть под капот модема, прочитать его состояние и сообщение. Но я решил их не использовать – они дорогие, к тому же, требуют рута.