?

Log in

No account? Create an account
dump -0f - /dev/mind
Я знаю Haskell, OCaml, GSM, эндофункторы и много других страшных слов
Легенда о триангуляциях в сети GSM и ее разоблачение 
14th-Nov-2006 10:10 am
Вот типичный комментарий от govorun на один из моих постов: "чисто теоретически, если можно стандартными средствами определить расстояние от БС до телефона, то по расстояниям от трех БС можно получить точные координаты аппарата, а во расстоянию от двух БС - 2 точки, в одной из которых будет находиться телефон".

Комментарий достаточно типичный - подобное мнение широко распространено на просторах интернета. Так как часть этого утверждения - сущая правда (стандартными средствами иногда можно определить расстояние от БС до телефона (тсс! ни слова о точности измерения!)), кажется, что все утверждение целиком - тоже правда. Так ли это? Давайте разберем его на части и исследуем подробнее.

UPDATE: для тех, кто в материале. Я в курсе, что существуют A-GPS, TOA, AOA, и другие страшные слова. Я в курсе, что иногда достаточно знать местоположение телефона с точностью до location area. Я в курсе, что можно послать на телефон SMS или позвонить, и при этом обновится информация о camped cell, что тоже может быть приемлимым способом "засечь" местоположение конкретного телефона для каких-то конкретных применений. Данный пост не ставит своей целью показать, что все эти способы - чушь и не могут существовать. Данный пост посвящен одной вполне конкретной легенде: что, мол, базовые станции GSM триангулируют местоположение телефона (вариант - всех телефонов в зоне покрытия) и эта возможность является стандартной функцией любой BS.

Начнем с аналогии (кто же из нас не любит начать с аналогии?). Рассмотрим такое утверждение: "поскольку при помощи ping-а можно определить расстояние от одного компьютера до другого, то по расстояниям от трех компьютеров (зная их координаты), можно получить точные координаты искомого компьютера". Не торопитесь кричать: "Бред!".

А что если мы возьмем четыре компьютера, соединим их проводами (если надо - с репитерами) по схеме "звезда" (один - в центре, три - соединены с ним), причем провода проложим строго по прямой, и обеспечим такую длину проводов, чтобы ошибка измерения времени пинга не влияла существенно на вычисление расстояния.

Сможем ли мы в таком случае определить координаты центрального компьютера, зная координаты периферийных и пользуясь только ping-ом? Сможем. Означает ли это, что подобный способ можно использовать всегда? Безусловно, нет. Во-первых, провода редко соединяют два компьютера строго по прямой, во-вторых мы как правило не знаем точных координат тех машин, которые мы пингуем, и т.п. Думаю, вы сами сможете продолжить этот список.

Теперь вернемся к исходному утверждению. Можно ли "стандартными средствами определить расстояние от БС до телефона?". Короткий и ничего не объясняющий ответ - "можно". Зададимся дополнительными вопросами:
1)Кто сказал, что это будет кратчайшее расстояние?
2)Кто занимается измерениями - базовая или телефон?
3)С какой точностью будет произведено измерение?

Ответы на эти вопросы будут такими:
Действительно, базовая станция в процессе обслуживания разговора занимается расчетом величин т.н. timing advance и передает их телефону. Телефон использует их, чтобы корректировать ход своего clock timer-а так, чтобы у него и у базовой "часы тикали одинаково". Действительно, базовая "замеряет" время прохождения сигнала от базовой до телефона, но ей абсолютно пофиг, сколько раз по пути следования сигнал отразился от зданий и т.п.

Итак, вот первая ложка дегтя: несмотря на то, что базовая измеряет время прохождения сигнала от себя до телефона, делает она это только в процессе обслуживания звонка и мы не можем рассчитать на основании этого времени расстояние от базовой до телефона по прямой. Плюс ко всему, даже в идеальных условиях TA дает точность измерения до 500 метров [1].

Едем дальше. Знает ли базовая, сколько телефонов находятся в зоне ее покрытия в режиме ожидания и каково время прохождения сигнала до них? Нет и нет.

Знает ли телефон, какие базовые находятся в "зоне слышимости" и каково время прохождения сигнала до них? Да и нет. Телефон может измерить уровень сигнала базовой (и занимается этим все время), но он не знает/не может измерить величину затухания сигнала.

Даже если телефон мог бы измерить уровень затухания и/или время прохождения сигнала до соседних базовых, мог бы он сам вычислить свои координаты? Нет, т.к. он не знает координат базовых.

О! Идея! Раз базовые (или BSC - не суть важно) "знают" свои координаты и "знают", какова мощность их передатчиков, а телефон "знает", насколько хорошо он их "слышит", давайте каким-то образом сведем эти данные в одну точку, и там проведем расчет координат.

Допустим, в SIM-карте телефона будет специальный applet, которых по сигналу извне (или с какой-то периодичностью) будет передавать по RACH пакетик, в котором будут CellID и RxLevel соседних базовых, а BSC будет получать эти пакетики, и на их основании высчитывать координаты телефона и передавать их дальше, какому-то выделенному серверу (для простоты, назовем его LBS), который будет хранить координаты и при нужде отдавать другим системам. А если какой-то телефон надумает позвонить или принять звонок, BSC дополнительно скорректирует уже имеющиеся координаты с учетом TA.

Смотрите, мы построили систему, которая по запросу к LBS-серверу может отдать нам координаты произвольного телефона в этой GSM-сети (при условии наличия в его SIM-карте нужного нам applet-а). Казалось бы, победа?

А теперь давайте посчитаем, что нам пришлось (пусть и умозрительно) модифицировать в обычной GSM Phase 2+ сети, чтобы получить такой результат:
1)Добавить в SIM-карту applet
2)Модифицировать все BSC и/или BS
3)Добавить LBS-сервер и обеспечить его каналами (физическими или логическими) связи с BSC.

Другими словами - мы разработали и "внедрили" на сети GSM-оператора решение для предоставление location-based services.

А теперь вернемся к начальному утверждению. Как видно, понадобилось существенно модифицировать сеть для того, чтобы превратить теоретическую возможность в возможность практическую. Очевидно, что далеко не все GSM-операторы проделали такую работу (или подобную [2]) работу и обладают возможностью определять местоположение вашего телефона.

Соответственно, если не тыкать пальцем в конкретного оператора, а говорить о GSM как о технологии вообще, то лучше ограничится тем, что "стандартные возможности сети GSM допускают построение системы определения местоположения абонента на основании измерения параметров прохождения радиосигнала, но стандарта GSM Phase 2+ на такие системы/технологии - нет". И не более того.

Ну как, теперь-то тема сисек триангуляции раскрыта полностью?

Литература:

  1. http://en.wikipedia.org/wiki/Timing_advance
  2. http://gsm.net.ua/position.html
  3. http://www.technocom-wireless.com/pdf/COMDEX_Fall2001.pdf (тут - веселые картинки, которые показывают точность работы разных методов определения местоположения)
Comments 
11th-Jul-2007 07:26 pm (UTC)
Насамом деле все ОЧЕНЬ просто: мобилка должна прозвонить всех соседей, и получить от каждого ТА, которое может дать от 500м до 32км.
Используя прицип "охоты на лис" или проще радиопеленгации, можно кругами приблизительно отметить где находиться абонент.
То есть если задействовать офигенное колличество ресурсов то теоритически можно вычислить местоположение абонента.

Другое дело, что в полях, где 1 базуха на 20км мы получим погрешность...20км.

Вообще в сетях получить погрешность ниже 500м сложно, практически невыполнима.

Вообщем все что сейчас крутят по телеку фигня.
This page was loaded Nov 14th 2018, 3:36 pm GMT.