tmsi realloc что это

NetMonitor.Ru Forum

Форум проекта по исследованию сетей мобильной связи

Вопрос экспертам: Autentification & TMSI Reallocation. — Общие вопросы, касающиеся принципов работы GSM-сетей

Вопрос экспертам: Autentification & TMSI Reallocation.

Сообщение Waveman » Ср, 04-04-2007, 12:22

Собственно вопрос в следующем:
С какой частотой целесообразно проводить эти процедуры (при Location Update (external, Internal, Periodic), MOC, MTC, SMS, IMSI Attach) чтобы получить оптимальное соотношение безопасности в сети и нагрузки?
И для каких видов соединений эти процедуры вообще не нужны?

Под частотой подразумевается: всегда\каждое N-ое соединение\никогда
Есть у кого-нибудь мнения на этот счет?

И вообще есть ли угрозы безопасности сети при полном отключении этих процедур? (кроме скажем IMSI Attach)

Сообщение WishMaster » Ср, 04-04-2007, 14:22

Сообщение Barabek » Ср, 04-04-2007, 16:13

Сообщение 2000 » Чт, 05-04-2007, 10:28

Сообщение Валентин » Чт, 05-04-2007, 11:51

Сообщение Waveman » Чт, 05-04-2007, 11:53

Сообщение Валентин » Чт, 05-04-2007, 12:15

Сообщение Waveman » Чт, 05-04-2007, 14:34

Сообщение Waveman » Чт, 05-04-2007, 14:38

Сообщение Barabek » Чт, 05-04-2007, 15:32

Re: Вопрос экспертам: Autentification & TMSI Reallocat

Сообщение utka » Пт, 06-04-2007, 14:45

Сообщение utka » Пт, 06-04-2007, 14:50

с трудом верится!
Я думаю, что просто в связи с множеством ЛАКов и тд и тп очень часто проходит локейшин апдейт, при котором и происходит TMSI-Realloc.+Auth.

Пришлите трейс на котором без смены лака происходят данные операции при МТС/MOC/SMS, поверю )

Сообщение Waveman » Пт, 06-04-2007, 17:19

с трудом верится!
Я думаю, что просто в связи с множеством ЛАКов и тд и тп очень часто проходит локейшин апдейт, при котором и происходит TMSI-Realloc.+Auth.

Пришлите трейс на котором без смены лака происходят данные операции при МТС/MOC/SMS, поверю )

Сообщение Waveman » Пт, 06-04-2007, 17:21

с трудом верится!
Я думаю, что просто в связи с множеством ЛАКов и тд и тп очень часто проходит локейшин апдейт, при котором и происходит TMSI-Realloc.+Auth.

Пришлите трейс на котором без смены лака происходят данные операции при МТС/MOC/SMS, поверю )

Источник

easynetwork

easynetwork

Запись опубликована EasyNetwork. Пожалуйста оставляйте свои комментарии тут.

CC (Country Code) – Код страны, в которой подключался к сети абонент (там где выдали SIM).

SN (Subscriber Number)- Номер абонента.

Конкретные длины составляющих частей регулируются международным и локальным законодательствами, например: Россия: CC=1 цифра (7), NDC=3 цифры (например, 910), SN=7 цифр (1234567), итого — 11 цифр (итоговый пример: 7-910-1234567).

Проверить какому оператору связи принадлежит тот или иной номер можно например на сайте MTT.

MCC – Mobile Country Code. Код страны в которой находится оператор. Описывает “домашнюю” страну мобильного абонента. Например в России MCC=250.

MNC – Mobile Network Code. Код мобильной сети. Уникально описывает сеть абонента. MNC наших операторов. MNC = 01 МТС, MNC = 02 Мегафон, MNC = 99 Билайн, MNС = 20 TELE2 Россия.

IMSI идентифицирует абонента в HLR. При регистрации абонента в MSC или SGSN аппарат абонента передает IMSI, по которому происходит его идентификация в HLR (разрешить/запретить доступ к сети, информация о подключенных услугах и пр.). Во избежание перехвата, этот номер посылается через сеть настолько редко, насколько это возможно — в тех случаях, когда это возможно вместо него VLR и SGSN могут использовать случайно сгенерированный TMSI. При этом в VLR и SGSN содержится соответствие IMSI и TMSI для каждой MS. Для CS сервисов используется TMSI, а для PS P-TMSI.

TAC – Type Approval Code. Назначается сериям мобильных телефонов после тестирования. До 2002 TAC состоял только из 6 цифр, оставшиеся 2 цифры составляли код места окончательной сборки (FAC). С 2003 до 2004 проходил переходной период, во время которого все коды FAC равнялись цифрам 00. В 2004 FAC прекратил своё существование, а TAC был расширен до 8 цифр.

FAC – Final Assembly Code. Это код окончательно собранного изделия. Добавляется для идентификации производителя.

SNR – Serial Number. Серийный номер

Источник

Содержание

Процедура обновления локации

Процедура обновления местоположения позволяет мобильному устройству информировать сотовую сеть всякий раз, когда оно перемещается из одной области местоположения в другую. Мобильные телефоны отвечают за обнаружение кодов местоположения (LAC). Когда мобильный телефон обнаруживает, что код области местоположения отличается от его последнего обновления, он выполняет другое обновление, отправляя в сеть запрос на обновление местоположения вместе со своим предыдущим местоположением и своим временным идентификатором мобильного абонента (TMSI).

Мобильный телефон также сохраняет текущий LAC на SIM-карте, объединяя его со списком недавно использованных LAC. Это сделано для того, чтобы избежать ненужных процедур присоединения IMSI в случае, если мобильный телефон был принудительно выключен (например, путем извлечения аккумулятора), не имея возможности уведомить сеть об отсоединении IMSI, а затем включился сразу после его включения. выключенный. Принимая во внимание тот факт, что мобильный телефон все еще связан с центром коммутации мобильной связи / регистром местоположения посетителей (MSC / VLR) области текущего местоположения, нет необходимости выполнять какие-либо процедуры присоединения IMSI.

Читайте также:  какие сейчас модные попытки

Когда абонент получает пейджинговый поиск в попытке доставить вызов или SMS, и абонент не отвечает на эту страницу, тогда абонент помечается как отсутствующий как в MSC / VLR, так и в домашнем регистре местоположения (HLR) (флаг недоступности мобильного телефона MNRF установлено). В следующий раз, когда мобильный телефон выполняет обновление местоположения, HLR обновляется, а флаг недоступности мобильного телефона сбрасывается.

Сеть также может изменить TMSI мобильного телефона в любое время. И обычно это делается для того, чтобы абонент не был идентифицирован и не отслеживался перехватчиками радиоинтерфейса. Это затрудняет отслеживание того, какой мобильный телефон является каким, кроме кратковременного, когда мобильный телефон только что включен, или когда данные в мобильном телефоне становятся недействительными по той или иной причине. В этот момент в сеть должен быть отправлен глобальный «международный идентификатор мобильного абонента» ( IMSI ). IMSI отправляется как можно реже, чтобы избежать его идентификации и отслеживания.

Размер TMSI составляет 4 октета с полными шестнадцатеричными цифрами, но не может быть полностью FF, поскольку SIM-карта использует 4 октета со всеми битами, равными 1, чтобы указать, что действительный TMSI недоступен.

Блуждая

Типы площадей

Район расположения

Если зоны расположения большие и умеренно населенные, вероятно, будет одновременно работать большое количество мобильных телефонов, что приведет к очень высокому пейджинговому трафику. Это связано с тем, что каждый запрос поискового вызова должен транслироваться на каждую базовую станцию ​​в зоне расположения. В конечном итоге это приводит к потере пропускной способности и мощности мобильных устройств, требуя от них слишком частого прослушивания широковещательных сообщений. Точно так же, если, с другой стороны, существует слишком много небольших участков местоположения, мобильное устройство должно очень часто связываться с сетью для изменения местоположения, что также приведет к разрядке аккумулятора устройства. Следовательно, важно соблюдать баланс между размером области расположения и количеством пользователей мобильных устройств в области расположения.

Область маршрутизации

Пакетный характер трафика пакетов означает, что ожидается больше сообщений поискового вызова для каждого мобильного устройства, и поэтому стоит знать местоположение мобильного устройства более точно, чем при использовании традиционного трафика с коммутацией каналов. Переход от области маршрутизации к области маршрутизации (так называемый «Обновление области маршрутизации») осуществляется почти так же, как переход от области расположения к области расположения. Основные отличия заключаются в том, что задействованным элементом является «обслуживающий узел поддержки GPRS» ( SGSN ).

Область отслеживания

Операторы могут назначать разные списки TA разным UE. Это может избежать пиков сигнализации в некоторых условиях: например, UE пассажиров поезда могут не выполнять обновления области отслеживания одновременно.

Со стороны сети задействованным элементом является объект управления мобильностью (MME). MME настраивает списки TA с помощью сообщений NAS, таких как Attach Accept, TAU Accept или GUTI Relocation Command.

Источник

GPRS изнутри. Часть 2

Продолжаем наше знакомство с пакетной передачей в сетях мобильных операторов, которое мы с Вами начали в первой части о GPRS/EDGE технологиях. В этой статье речь пойдет о процессе аутентификации и авторизации, т.н. процедуре GPRS Attach, а также активирование услуги, запрошенной абонентом — поднятие PDP Context’а. Посмотрим какие данные хранятся на стороне SGSN’а, а какие на стороне абонента.
Ну, что ж поехали…

GPRS Attach

Процесс аутентификации и авторизации, т.н. процедура GPRS Attach, изображен на схеме ниже (картинка кликабельна).

RAI — Routing Are Identity
MCC — Mobile Country Code (международный код страны)
MNC — Mobile Network Code (международный код оператора в пределах страны)
LAC — Location Area Code (совокупность базовых станций, объединенных одним кодом)
RAC — Routing Area Code (зона, меньшая, либо равная LAC)

* — после успешной процедуры GPRS Attach, абоненту доступна только отправка коротких сообщений через сеть GPRS/EDGE, т.н. SMS over GPRS.

PDP Context Activation

После успешного прохождения процедуры GPRS Attach, пользователь может активировать PDP Context, что позволит ему воспользоваться услугами пакетной передачи данных.

Сама процедура активации контекста, чем-то напоминает процедуру активации коммуникации при Dial-Up соединении. Давайте посмотрим на эти две процедуры в сравнении.
Упрощенно, процедуру активации линка Dial-Up можно представить в качестве схемы:

Теперь давайте посмотрим на принципиальную схему активации PDP Context’a:

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

Читайте также:  андерсен русалочка чему учит сказка для читательского дневника

Определив ключевые моменты, при активации PDP Context’a, рассмотрим полную процедуру и определим, какие же данные передаются во время этой процедуры.

Схема активации PDP Context’a представлена на рисунке ниже:

* — более детально про выбор и использование APN в процессе активации контекста, можно прочитать в статье: «Не важно кто ты… важно какая у тебя APN»

internet — APN, прописанная в терминале абонента,
mnc009.mcc255.gprs — GOI некоторого виртуального оператора (Украина).

Information stored before/after GPRS Attach

Давайте разберемся, какие данные хранятся на стороне абонента, а какие на стороне SGSN’а до и после процесса аутентификации и авторизации в пакетной сети оператора.
Сводная таблица представлена ниже:

MS SGSN HLR
Before GPRS Attach IMSI
MSISDN
RAI
Ki
QoS profile
IMSI
MSISDN
Ki
QoS profile
After GPRS Attach PMM State
P-TMSI
PMM State
P-TMSI
MSISDN
RAI
Kc
QoS profile
SGSN address

APN — Access Point Name
CHAP — Challenge Handshake Authentication Protocol
EIR — Equipment Identity Register
GGSN — Gateway GPRS Support Node
GOI – GGSN Operator Identifier
GPRS — General Packet Radio Service
HLR — Home Location Register
HPLMN — Home PLMN
IMSI – International Mobile Subscriber Identity
IPCP – Internet Protocol Control Protocol
MS – Mobile Station
MSC – Mobile Switching Centre
MSISDN – Mobile Station Integrated Services Digital Number
PAP — Password Authentication Protocol
PDN — Packet Data Networks
PDP — Packet Data Protocol
PLMN — Public Land Mobile Network
PPP – Point-to-Point Protocol
RAS — Registration, Admission and Status
RNC — Radio Network Controller
SGSN — Serving GPRS Support Node
VLR — Visitors Location Register
VPLMN — Visitor PLMN

Источник

История про realloc (и лень)

Простой макрос

Все началось с простого макроса: (приблизительный код)

Для тех, кто не знаком с языком программирования C, поясню: этот простой макрос добавляет байт «C» в динамически выделяемый буфер (buffer), размер которого (в байтах) равен capa. Следующая позиция для записи определяется при помощи параметра offset. При каждом заполнении буфера происходит двукратное увеличение его объема (начиная с минимального размера в 16 байт).

Мы добавляем байты в динамический буфер — это одна из наиболее распространенных операций практически в любой программе (для работы со строками, массивами и т. п.).

Но как понять, насколько эффективна стратегия перераспределения? Если вы посмотрите на эту проблему с точки зрения сложности, принимая сложность realloc() равной O(N), то сразу поймете, что добавление одного байта имеет сложность в среднем O(1), что вполне неплохо.

Но какова сложность в наихудшем случае — если требуется перераспределение памяти под буфер?

Анонимус: Уверен, что это хорошая стратегия? Ты нарвешься на серьезные проблемы с производительностью, если станешь увеличивать размер большого массива, скажем, в один гигабайт. Только представь себе последствия, особенно если буфер нужно переместить из файла подкачки.

Я: Хм… Честно говоря, никогда не задумывался над этим… Но уверен, все не так страшно. Система должна успешно справиться с этой задачей.

Анонимус: А мне кажется, что связанная структура — более удачный вариант, пусть даже с той же экспоненциальной стратегией.

Я: Да нет, это пустая трата времени.

Ах вот так, значит?!

Ладно, придется обосновать свою позицию. Как и все программисты, я весьма ленив. Точнее: «Как подобает программисту, я весьма ленив». Лень — отличный стимул стать умнее и эффективнее. Вы слишком ленивы для того, чтобы решать повторяющиеся или рутинные задачи; вам нужно что-то более интеллектуальное, что-то максимально быстрое. Да, именно это иногда называют ленью. Но, по-моему, это не что иное, как эффективность.

Что-то подсказывает мне, что моя лень будет здесь как нельзя кстати. Ведь о маленьких блоках вовсе не стоит беспокоиться, а о больших позаботится виртуальная память системы.

Кстати, что такое realloc()?

Это обычная функция, соответствующая стандарту POSIX, которая реализована в библиотеке C. В случае с Linux это библиотека libc.so, в ней же находятся и родственные realloc функции malloc и free:

Для тех, кому это действительно интересно: «T» означает «text symbol» (текстовый символ), заглавная буква используется, чтобы показать, что символ этот общедоступный и видимый; текстовый сегмент программы — это код, сегмент данных — инициализированные данные (переменные), а сегмент bss — неинициализированные данные (переменные), а точнее данные (переменные), получившие в качестве начального значения ноль).

Для выделения, перераспределения и освобождения памяти используется распределитель памяти (спасибо, Капитан Очевидность!). Таких распределителей много (самый известный — buddy allocator).

Читайте также:  какие травы нужно пить при давлении

Мы можем реализовать собственный простейший распределитель с помощью великого и ужасного вызова sbrk, который просто добавляет пустое пространство в конец сегмента данных:

[Примечание. Как справедливо заметил один из читателей Hacker News, здесь нужно значение old_size, которое, например, можно было записать в начало блока после того, как блок был выделен. Но нет, мы не должны были освободить исходный блок в случае ошибок в работе realloc :)]

Разумеется, настоящий распределитель будет чуточку посложнее, потребуются сложные структуры данных, чтобы ограничить число вызовов memcpy.

Чтобы понять, что происходит с большими блоками, нам придется поближе познакомиться с Glibc на Linux.

Знакомство с Glibc

Просто скачайте последнюю версию glibc и изучите дерево исходного кода.
Там есть один интересный каталог malloc. Найдите в нем файл malloc.c и откройте его в редакторе.

Нас больше всего интересует вот эта часть: «Для очень больших запросов (>= 128 Кб по умолчанию) используются системные средства сопоставления памяти, если они поддерживаются».

Порог в 128 Кб настраивается функцией mallopt():

Итак, как я уже сказал, служба виртуальной памяти системы сама позаботится о больших блоках.

Итак, что мы знаем о man mremap:

Ага, очень эффективный realloc. Насколько эффективный?

Во-первых, mmap, munmap и mremap описаны в библиотеке glibc. На самом деле, только точки входа:

Обратите внимание на то, что точки входа по умолчанию — это в данном случае «слабые» символы. То есть они могут быть переопределены кем-то другим во время динамической компоновки. Например:

… символы могут быть переопределены библиотекой linux-vdso.so.1 — это волшебная библиотека, которая отображается во всех программах под Linux и позволяет ускорить некоторые вызовы, включая системные вызовы.
В любом случае наши символы в библиотеке glibc — это только каналы к вызовам ядра системы (syscall), будь то glibc или vdso (см. реализации по умолчанию: sysdeps/unix/sysv/linux/mmap64.c). Например:

Итак, наш первоначальный вопрос уже связан не с glibc, а с ядром Linux.

Знакомство с ядром

Скачайте последнюю версию ядра, и давайте кратко рассмотрим принципы работы mremap.

Заглянув в руководство (The Linux Kernel Howto), вы найдете очень интересный каталог:

Каталог mm содержит весь необходимый код для работы с памятью. Код управления памятью, специфичный для конкретной архитектуры, размещается в каталогах вида arch/*/mm/, например arch/i386/mm/fault.c.

Отлично. Они-то нам и нужны!
Вот интересный файл: mm/mremap.c. В нем вы найдете точку входа для системного вызова функции mremap. Вот здесь:

Именно здесь мы входим в ядро при выполнении соответствующего системного вызова в пользовательском коде (через glibc или соответствующий канал vdso).

Изучив код этой функции, вы увидите различные проверки аргументов и обработку тривиальных случаев (например, уменьшение блока памяти — нужно просто освободить страницы в конце блока).

Затем ядро попытается расширить отображенную область путем ее увеличения (то же самое делал бы распределитель в библиотеке C при помощи sbrk). В случае успешного расширения функция возвращает результат.

Все эти тривиальные случаи реализованы со сложностью O(1) (даже если учитывать затраты на вход в ядро — они будут меньше, поскольку прерывания больше не используются, но все равно будут).

А что в наихудшем случае?

Вот вызов move_vma:

Определение можно найти здесь: include/linux/mm_types.h. Эта небольшая структура содержит всю информацию об области: начальный и конечный адрес, файл на диске (если область памяти используется для отображения файла) и т. д.

Итак, эта операция перемещения достаточно проста — O(1).

А что делает функция move_page_tables?

Самое интересное, похоже, вот в этом цикле:

Этот код несколько сложноват (кроме того, нет комментариев), но в основном это базовые арифметические операции и расчеты.

Функция move_ptes содержит внутренний цикл самого нижнего уровня:

Так что же в этом цикле происходит?! Мы просто перемещаем строки таблицы страниц (PTE, Page Table Entries), соответствующие области памяти, в другое место. По сути, это целые числа, назначенные каждой странице.

Да, кстати, вы знаете, что O(N) во многих случаях сбивает с толку?

В нашем случае максимальным значением N является 2 48 (максимальный размер виртуального пространства). Большинство компьютеров работают лишь с несколькими гигабайтами памяти — не более 64 Гб для большинства архитектур (то есть 2 36 байт). Большая станица — это 2 21 байт, максимальное число операций составляет 2 15 для move_ptes (да, это всего лишь 32 768 операций).

Итак, в наихудшем случае затраты всегда крайне низкие, и я почему-то не сомневался в этом с самого начала.

Также рекомендую к прочтению: книгу Understanding the Linux Virtual Memory Manager Мела Гормана (Mel Gorman).

«Ниасилил многабукаф»? Не парьтесь. Лень и realloc — наше все.

Источник

Информ портал о технике и не только