AXE-10 GUTSFUCK
===============
1.Введение
2.Терминология
3.Состав AXE-10
4.IOG/MML
5.Команды
5.1.Управление маршрутами
5.2.Управление БС
5.3.Управление абонентами
6.Слушаем чужого абонента
7.Скриптинг в WinFIOL
1.Введение
----------
"Разноцветный" фрикинг умер с появлением ОКС7 и все игры с тональностью
сигнала, подаваемого в линию при помощи замороченных девайсов, остались
далеко в прошлом. Однако телефония, как технология связи, постоянно
совершенствуется в условиях конкуренции на рынке связи и требований,
выдвигаемых современных обществом..
Впрочем, это все лирика. Сегодня мы не будем говорить о перспективах
развития технологий связи, а остановимся на вещах уже существующих.
В частности,речь пойдет о коммутаторах AXE-10 фирмы Ericsson, о том что
они собой представляют, какой цели служат,как осуществляется управление
ими и о многом другом.
2.Терминология
--------------
Имеет смысл очертить несколько базовых терминов, которые будут то и
дело встречаться на протяжении статьи, чтобы люди,далекие от телефонии,
тоже могли понять о чем идет речь.
Коммутация - грубо говоря, процедура соединения (проключения) двух или
более абонентских линий. Чтобы было понятней, телефонная сеть
представляет собой обычную электрическую цепь где в качестве узлов
цепи выступают абонентские терминалы (телефонные аппараты). В обычном
положении цепь разомкнута, а когда пользователь инициирует исходящий
вызов или принимает входящий, цепь замыкается, образуя таким образом
связь между конечными абонентами.
Коммутатор - устройство, основное назначение которого состоит в
автоматическом (то есть оператор в этом процессе не участвует)
соединении абонентских линий. Но этим функции коммутатора не
исчерпываются - он также контролирует всю деятельность, происходящую
в телефонной сети и является своего рода зеркалом состояния сети.
Наиболее распространненным отечественным продуктом является линейка
систем "КВАНТ", про которые так много можно узнать в старых журналах.
Базовая станция (сота) - любая сеть мобильной телефонной связи состоит
как минимум из трех компонентов: коммутатора, базовых станций и
абонентских терминалов (обычных мобильных трубок). Причем абонентские
аппараты взаимодействуют с коммутатором не напрямую, а посредством
базовых станций, обслуживающих свои зоны покрытия. Проводя грубые
аналогии с компьютерными сетями, можно представить сеть, состоящую из
центрального суперкомпьютера (коммутатор), ряда хабов (базовых станций)
и рабочих станций (абонентских терминалов). Задача хаба проста -
пробросить пакеты, полученные от рабочей станции, суперкомпьютеру и
наоборот. Ну и тут примерно так же - базовая станция выступает в роли
"трубы" между абонентом и коммутатором.
AXE-10 - это полнофункциональный коммутатор, разработанный шведской
фирмой Ericsson, который в силу ряда причин обрел огромную популярность
в России, равно как и за ее пределами. Главной особенностью, отличавшей
его от аналогичных девайсов, выпускаемых в то время, является его
модульность. То есть, это почти как компьютер - прикупил дополнительный
блок, и есть у тебя теперь SMS-центр. Стало у тебя больше абонентов
- докупил еще один блок, расширив тем самым номерную емкость и число
свободных интерфейсов для подключения базовых станций.
Надо сказать, что современное коммутационное оборудование, что
естесственно,претерпело сильные изменения в сравнении с предшествующими
поколениями девайсов.
К примеру,в настоящий момент прослеживается тенденция к децентрализации
сети - появляются контроллеры базовых станций, которые выполняют
часть функций коммутатора, обеспечивая тем самым его разгрузку и
сосредоточение его на основной функции - коммутации абонентских линий.
И тем не менее, я считаю данную информацию актуальной - поскольку
оборудование AXE-10 распространено повсеместно, да и к тому же большие
сомнения у меня вызывает возможность скорой замены оборудования АТС в
нашей стране в ближайшие 10 лет в условиях действующей жидократии.
Оптомультиплексор - преобразует электрический интерфейс в оптический,
то есть преобразует электрический сигнал в сигнал,пригодный дляпередачи
по оптоволокну (как правило, E1 потоки) и наоборот.
3.Состав AXE-10
---------------
Рассматриваемый нами девайс может работать в следуюших режимах:
- коммутатор сети мобильной связи в стандарте NMT-450
- коммутатор проводной телефонной сети
- транзитный коммутатор
Мы, главным образом, сконцентрируемся на работе AXE-10 в качестве
коммутатора для мобильной сети. Одной из интересных особенностей
рассматриваемого девайса (девайс, наверное, слишком просто -
представьте себе с десяток шкафчиков, напичканных различным
оборудованием) является то, все основные блоки в нем дублируются для
обеспечения корректности работы и отказоустойчивости. То есть он имеет
два центральных процессора, два флопа, и так далее.
AXE-10 состоит из следующих __основных__ блоков:
AMU (Automatic maintenance unit) - блок, следящий за правильностью
работы обоих процессоров (APZ).
MT - (Magnet Type) - блок, предназначенный для записи резервных
копий конфигурации и файлов тарификации звонков на магнитную ленту
(стример).
SPG - (SupportProcessorGroup) - суппортпроцессорная группа, управляет
всей подсистемой I/O, что включает в себя управление файловой системой,
жесткими дисками, флопами, терминалами, стримером.
RP - (Regional Processor) - региональные процессоры, это
вспомогательные устройства, занимающиеся управлением такими блоками
как CLM, TSM, CCD и так далее. То есть, по сути, они являются
отдельными процессорами, работающими паралельно основным, но
обслуживающими лишь конкретные блоки.
CCD - модуль, осуществляющий подключение к уже установленному сеансу
связи - используется для организации конференц-связи, для тестирования
линии, а также для спецслужб ).
TSM - (Time Switch Module) - кристаллическая решетка, в которой и
происходит коммутация линий. На рассвете телефонии сидел себе оператор
в комнатке, принимал заказы на соединение и физически перетыкал
провода. В настоящий же момент, коммутатор сам разбирает поступающие
пакеты,в которых передается A-номер(SRC) и B-номер(DST), и на основании
этих данных решает кого, с кем, и как соединить.
CLM - генератор тактов, сердце коммутатора.
Кроме вышеуказанного к основным элементам также необходимо отнести
порты терминалов (обычные COM-порты, либо интерфейсы ethernet), через
которые происходит подключение компьютеров операторов к коммутатору,
и интерфейсы базовых станций (БС), посредством которых осуществляется
подключение БС к коммутатору. Тут стоит отметить что потоки БС
заводятся в промежуточное устройство - кросс-коннектор,а вот уже с него
попадают на интерфейсы подключения БС коммутатора. В крайне
упрощенном варианте схема соединения выглядит так:
[коммутатор] <-- [кросс-коннектор] <-- [кросс] <-- [оптомультиплексор]\
<-- [БС] <-- [абонент]
В зависимости от удаленности БС от коммутатора соединение
осуществляется при помощи релейных станций и прямого оптоволоконного
кабеля.
С самыми азами физической работы сети я вас ознакомил, хотя тут
еще масса нюансов, в частности то, что для разных устройств
(стационарных аппаратов, мобильных аппаратов, базовых станций)
используются разные типы сигнализации и разные типы интерфейсов.
Небольшое объяснение будет дано в ходе описания команд, но если вас
это действительно интересует, то в конце статьи есть ссылки на
источники информации, где вы сможете найти все что нужно.
4.IOG/MML
---------
Перейдем к программной части -к управлению сетью.В коммутаторе AXE-10,
равно как и в любом другом коммутационном оборудовании типа
маршрутизаторов, свитчей, DSL-модемов и так далее используется
собственный встроенный программный комплекс IOG -Ericsson Input/Output
Group. Он много сложнее нежели, скажем, Cisco IOS в виду того, что
должен выполнять существенно более широкий спектр функций и
обслуживать большее число различных аппаратных блоков. Естественно
что ПО коммутатора также как и ПО других устройств имеет
возможность обновления, поэтому на разных коммутаторах могут
существовать различные версии IOG. Наиболее распространена IOG-11.
Коммутатор "понимает" стандартный язык MML (Man-Machine Language), а
потому все общение с ним оператора построено на формате команд MML. В
кратце объясню синтаксис:
Команда:Параметр=Значение;
Команда -состоит из 5 символов латинского алфавита в верхнем регистре.
Для отделения названия команды от параметров используется двоеточие;
команда должна заканчиваться точкой с запятой, если она не составная
(об этом позже). Команда может не иметь параметров вообще, может иметь
необязательные параметры - все как в обычных операционных системах.
Из нестандартного - параметру может передаваться несколько конкретных
значений (разделяются амперсандом), а также их диапазоны (начальное и
конечное значения разделяются двумя амперсандами). Примеры:
# параметру передается три значения
Команда:Параметр=Значение1&Значение2&Значение3;
# параметру передается диапазон значений
Команда:Параметр=НачальноеЗначение&&КонечноеЗначение;
Да, про символы, из которых составлено имя команды. Если вы подумали,
что это что-то вроде "SATAN", "HELLO" или "DEATH", то мне придется
разрушить ваш сказочный мир. Например:
Команда IOFAT:
- Первые две буквы - группа, к которой относится команда (IO - Input/
Output)
- Следуюшие две идентифицируют саму команду [FA - File to Alphanumeric
device]
- Пятая - действие команды [T - Transfer]
О значениях и группах команд можно узнать из справки, идущей с
терминальной программой, а вот с действиями я вас познакомлю, ибо их
гораздо меньше:
P - print [вывести]
I - initiate [инициировать, активировать]
C - change [заменить, изменить]
R - reset [сбросить]
E - end [отменить, удалить, закрыть]
L - load [загрузить]
S - setup [установить]
T - transfer [передать]
Это основные значения пятого символа команды. В целом это и все.
Скриптинг осуществляется на уровне терминального приложения (как
правило, эриксоновские FIOL или WinFIOL - скачать можно в ed2k,
простой терминалкой работать не очень удобно). Самих команд существует
более 10000, не считая недокументированных - но все их знать нам и не
нужно. Тут стоит упомянуть, что в принципе, мы имеем все средства,
чтобы делать с коммутатором все что нам заблагорассудится, однако
разработчики Ericsson создали нормальные интерфейсы далеко не ко всем
имеющимся функциям, а ряд функций специально не упоминается в
документации, поскольку имеет специальное значение и предназначен
для специальных служб. Так или иначе, мы рассмотрим некоторые
наиболее важные и часто используемые команды, применяемые операторами.
5.Команды
---------
Существует бесчисленное множество команд, понимаемых AXE-10, служащих
самым различным целям. Многие из них недокументированы. Здесь эти
команды условно разбиты на четыре группы; в каждой группе приводится
ряд примеров команд, которые используются наиболее часто.
5.1.Управление маршрутами
-------------------------
По сути, маршрут - это логическая группа каналов БС. Типичный пример
маршрута:
<strdp:r=route1to;
DEVICE STATE SURVEY
R NDV NOCC NIDL NBLO RSTAT
ROUTE1TO 8 1 6 1 NORES
DEVICE STATE DETAILS
DEV STATE BLS/FS ADM ABS
MBTD45-9 BLOC MBL H'F2
MBTD45-28 IDLE H'00
MBTD45-29 INCO H'A2
MBTD45-46 IDLE H'00
MBTD45-47 SEBU H'10
MBTD45-49 SEBU H'30
MBTD45-51 IDLE H'00
MBTD45-56 IDLE H'00
END
Команда STRDP выводит информацию о состоянии каналов маршрута.В данном
случае мы видим,что всего доступно 8 каналов, 1 из которых использован
для входящего соединения, 6 свободно, и 1 в блокировке (MBL значит
Manualy Blocked, то есть заблокирован непосредственно оператором). Все
каналы имеют тип MBTD45, что говорит о их принадлежности к БС, а не к
какому-либо другому типу каналов.
Синтаксис: strdp:r=маршрут[to/ti];
Также можно отфильтровать каналы по состоянию:
strdp:r=маршрут[to/ti], state=IDLE;
to и ti - это, соответственно, исходящее и входящее направления.
Кроме того, можно использовать strsp - эта команда отображает сводную
информацию по каждому из заданных маршрутов (или по всем маршрутам):
<strsp:r=route1i&route2i;
DEVICE STATE SURVEY
R NDV NOCC NIDL NBLO RSTAT
ROUTE1I 116 0 115 1 NORES
ROUTE2I 87 49 36 2 NORES
END
Синтаксис: strdp:r=маршрут[o/i]&маршрут2[o/i];
или
Синтаксис: strdp:r=ALL;
o и i - опять же, соответствуют, исходящему и входящему направлениям.
Существует масса команд для изменения свойств маршрутов, контрольной
информации, и так далее. Ниже перечислены некоторые из них без
распечаток, так как есть риск что ваши действия будут замечены.
Блокировка/разблокирова каналов:
--------------------------------
blodi:dev=mbtd45-28; # блокировка
Синтаксис: blodi:dev=<тип_канала>-<номер_канала>;
blode:dev=mbtd45-28; # разблокировка
Синтаксис: blode:dev=<тип_канала>-<номер_канала>;
Можно указывать диапазон каналов, например: blodi:dev=mbtd45-28&&-46;
Работа с контрольными данными маршрута:
---------------------------------------
Вывод текущих данных:
blurp:r=route1to;
Выводит класс алармов, и их пределы.
Изменение текущих данных:
blurc:r=route1o,lvb=1&2,acl=a2;
Синтаксис: blurc:r=<маршрут>,lvb=<лимиты>,acl=<класс аларма>
И так далее.
5.2.Управление БС
-----------------
Алармы:
mnbip:bst=bs1,dev=all; # выводит все текущие алармы по данной БС
<mnbip:bst=bs1,dev=all;
BASE STATION ALARM INDICATORS STATUS
BST DEV RCH DCH HCH
CAW ACL
BS1 MBTD45-22 YES
REDUNDANT POWER SUPPLY A1
END
В данном случае, по каналу 22 БС-1 висит аларм, означающий сбой по
питанию.
mnbir:bst=bs1,dev=all; # пытается сбросить все алармы по данной БС
Можно указывать несколько БС, все БС (значение bst=ALL), и выборочно
каналы (вместо dev=all).
Состояние каналов:
mncdp:bst=bs1;
Команда аналогична strdp, но выводит состояние каналов не маршрута, а
БС. Только тех каналов, которые к ней физически привязаны.
5.3.Управление абонентами
-------------------------
Что касается абонентов и их разговоров, то есть тут небольшой нюанс:
в системе имеется параметр, задаваемый оператором, определяющий время
(например 20 минут), через которое будет выводится предупреждение о
слишком длительном звонке.И каждые n минут коммутатор сравнивает новую
таблицу звонков с предыдущей. Если через 20 минут коммутатор обнаружит
в таблице абонента, который присутствовал там при предыдущей проверке,
то оператору будет выведено об этом сообщение (называемое PARTIAL
PRINTOUT).
Особо странного здесь ничего нет - абонент мог просто долго
разговаривать, и в то же время есть шанс, что его сеанс просто подвис
и его надо завершить, чтобы прекратить тарификацию этого звонка. Для
этого необходимо прослушать линию, и если разговора там нет, завершить
соединение.
Ну а теперь перейдем, собственно, к командам.
Основная команда:
suscp:snb=6666,LIST; # 6666 - RID абонента
LIST - необязательный параметр, который выводит дополнительную
информацию.
Выводит информацию о статусе и категориях абонента.
<suscp:snb=6666;
SUBSCRIBER DATA
SNB DEV DETY SUT SCL MIS
6666 PB CBB-0
OBA-215
MCT-1
CTR-1
TRB-1
TRN-4
END
Изменение категорий:
suscc:snb=6666,scl=bic-1&boc-1;
В данном случае абоненту с RID 6666 добавлены категории BIC-1 и BOC-1,
то есть блокировку входящих и исходящих вызовов.
Отслеживание абонента:
ctrmi:snb=6666;
Команда показывает, какие каналы используются абонентом для совершения
или приема вызова (если в настоящий момент трубка абонента находится в
состоянии разговора). Эта команда пригодится при необходимости
послушать разговор.
Прерывание звонка абонента:
mnsdi:snb=6666; # крайне полезная команда :).
Работа с PIN-кодом абонента:
mnpwp:snb=6666; # выводит PIN абонента
mnpwc:snb=6666,mspw=666; # меняет PIN на 666
Мониторинг линии:
В сочетании с выводом команды ctrmi у нас появляется возможность не
только протеcтировать качество связи, но и узнать не простудился ли
прослушиваемый абонент :).
mocoi:dev=upd0-123;
На самом деле существует команда,специально заточенная для этого дела,
но она не документирована. Подробности можно спросить на axenet.ru
Пожалуй, достаточно.
6.Слушаем чужого абонента
-------------------------
В разделе 5.3 вы узнали, что коммутатор проверяет длительность текущих
звонков, и по истечении n минут разговора выдает сообщение о том, что
звонок по такому-то номеру длится более n минут. Если этот номер
"приписан" к нашему коммутатору, то нам не составляет труда выяснить
в чем причина - абонент заговорился или же сеанс подвис. Не смотря на
то, что чаще всего "длинные" звонки возникают между абонентами одного
оператора (в виду льготных или бесплатных тарифов на разговоры внутри
сети), иногда бывает что абонент звонит, скажем, на городской номер.
Для такой ситуации технари в Ericsson не придумали специальной
команды, а следовательно,послушать такой звонок мы вроде как не можем.
Однако, поскольку звонок идет через наш коммутатор, то о нем
обязательно должны храниться записи, другое дело что добраться до них
будет сложнее. Вот пример сообщения PARTIAL PRINTOUT для чужого
абонента:
PARTIAL PRINTOUT MSNB(B)=80959802247
END
Для того чтобы узнать какие каналы используются абонентами для
разговора мы пойдем на небольшой хак. Суть его состоит в переводе
системы в особый отладочный режим и применении низкоуровневых
инструкций, обращении к регистрам коммутатора.
1) Входим в режим отладки:
test system;
На этом этапе должно появиться сообщение о том, что с такого-то
терминала был активирован отладочный режим.
2) Выводим список всех активных телефонных разговоров. Отмечу что
указанное в команде смещение является постоянным - там коммутатор
всегда хранит информацию об активных звонках:
print var cdr 0-:33;
После чего появится следующего формата список. Строк там может быть
очень много, я приведу только одну.
H'0048:....) H'3204 H'2278 H'2201 H'5204 H'2234 H'2224 H'7422 H'2204
Часть "H'0048" сообщает нам адрес первой ячейки в этой строке.
Нумерация, как вы уже успели понять, шестнадцатиричная, следовательно,
после 48, будет 49, а после него 4A, а не 50.
3) Ищем смещение, соответствующее нужному нам звонку. Для этого
осуществляем поиск по списку на предмет последних четырех цифр номера
в обратном порядке. То есть в нашем случае это 2247, стало быть искать
нам нужно число 7422.
H'0048:....) H'3204 H'2278 H'2201 H'5204 H'2234 H'2224 H'7422 H'2204
48 49 4A 4B 4C 4D 4E 4F
Итак, как мы можем видеть, адресом искомой ячейки является 4E.
Обращу ваше внимание, что ячеек со значением 7422 может быть
несколько - поэтому вам нужно найти и проверить все из них.
4) Проверяем правильный ли мы нашли адрес, выполнив команду:
# вместо 4E нужно подставить найденный вами адрес
print var cdr h'4E:34;
на что коммутатор ответит примерно так:
CDR VAR H'004E:H'0022=H'F874
Последние две цифры вывода соответствуют последним двум цифрам номера
телефона, записанным в обратном порядке. В данном случае мы, похоже,
нашли то что нужно - 74 это 47,что соответствует последним двум цифрам
номера 80959802247.
5) Теперь, имея необходимые данные, получаем адрес разговора:
# опять же вместо 4E подставте найденный вами адрес
print var cdr h'4E:164;
Ответ системы:
CDR VAR H'004E:H'0022=H'0194
Интересующее нас значение равно 0194 - это и есть адрес ячейки
искомого разговора.
6) И наконец, выясняем какие каналы используются для разговора:
CTRAI:DEV=CLCOF-H'194;
7.Скриптинг в WinFIOL
---------------------
Ну это довольно просто. Клиент (например, WinFIOL) позволяет выполнять
ранее записанные команды из файла, что очень удобно и требуется для
автоматизации :). Вот некоторые из наиболее распространенных команд:
@CONNECT - подключиться (аналог кнопки F5, можно сократить до @S)
@RELEASE - отключиться (аналог кнопки Esc, можно сократить до @E)
@LOG ON <путь_к_файлу> - вести протокол в файл (можно сократить до @L)
@CLOSE - закрыть лог-файл
@ASK <имя_переменной> <значение> - присвоить значение переменной
@CLEAR - удалить все ранее созданные переменные
@DEC <имя_переменной> <число> - применить операцию декремента по числу
@INC <имя_переменной> <число> - инкремент по числу
@IF <условие> THEN <оператор> - условный оператор
@! - комментарий
@T <число_секунд> - вставить задержку (аналог sleep())
@M <число_минут> - вставить задержку на заданное число минут
@LABEL <имя_метки> - задать метку
@J <имя_метки> - безусловный переход к метке
@C <метка|метка> - условный переход к метке
@K <HH:MM:SS> - начать выполнение блока команд в заданное время
Это, пожалуй, основные операторы, хотя существуют еще несколько более
специфичных, и реже используемых. Сами команды коммутатора размещаются
в файле как есть, то есть им не должен предшествовать какой-либо
оператор или символ "@".
[-] Трактатъ о системе сигнализации NMT:
http://nmt.btv.ru/index.php?page=NMTSS
[-] Отличный ресурс по оборудованию AXE-10:
http://axenet.ru особенно доки из раздела http://axenet.ru/intuse/
К О Н Е Ц