Програма Tracer призначена для обробки результатів трасування пакетних видів сигналізацій.
Вікно програми складається з таких частин:
На панелі інструментів є такі кнопки:
Є два режими створення сеансу трасування - з файлу і зі станції. При відкритті файлу трасування слід вказати лише метод декодування пакетів. При отриманні даних зі станції, слід вказати IP-адресу і udp-порт на яких працює програма NexusSrv - транслятор отриманих від AgentRgt даних.
При натисканні правої кнопки миші на списку пакетів з'являється контекстне меню, яке дозволяє експортувати інформацію про трасовані пакети в текстовому і декодованому вигляді.
Основні колонки списку трасованих пакетів:
Решта полів залежать від протоколу сигналізації.
Вікно відображення можна переключити у режим декодування, шістнадцяткових даних, статистики і вибору профілю відображення за допомогою кнопок внизу.
Пошук і фільтрація пакетів здійснюються за допомогою умови пошуку/фільтрації. В результаті декодування пакету створюється набір декодованих параметрів, які можна використовувати в умовах пошуку/фільтрації. Декодовані параметри представлені двома наборами $CHASH та $DHASH. $CHASH представляє список даних, які відображаються в таблиці. $DHASH - набір даних, які не відображаються в таблиці пакетів. Основні параметри, доступні через ці два набори описані в таблиці:
Доступ до комірок таблиці пакетів | |
---|---|
Параметр | Опис |
$CHASH{'TimeStamp'} | Часова мітка пакету |
$CHASH{'LinkID'} | Ідентифікатор ланки сигналізації |
$CHASH{'RepeatCnt'} | Лічильник повторів сигнальних одиниць |
$CHASH{'Flags'} | Прапорці R-прийнятий, E-прийнятий з помилкою, T-переданий пакет |
$CHASH{'Protocol'} | Протокол взаємодії |
$CHASH{'BIB'} | Зворотній біт індикації |
$CHASH{'BSN'} | Зворотній порядковий номер |
$CHASH{'FIB'} | Прямий біт індикації |
$CHASH{'FSN'} | Прямий порядковий номер |
$CHASH{'NET'} | Ідентифікатор мережі |
$CHASH{'SIF'} | Ідентифікатор підсистеми користувача |
$CHASH{'DPC'} | Пункт призначення (Текстовий) |
$CHASH{'OPC'} | Пункт відправки (Текстовий) |
$CHASH{'SLC'} | Код ланки сигналізації |
$CHASH{'CIC'} | Ідентифікатор каналу |
$CHASH{'MT'} | Тип повідомлення (Текстовий) |
$CHASH{'ExtraPars'} | Декодовані дані (Текстовий вигляд) |
$CHASH{'CREF'} | Мітка з'єднання PRI |
$CHASH{'NReceived'} | Номер прийнятого пакету PRI |
$CHASH{'NSent'} | Номер переданого пакету PRI |
Доступ до декодованих параметрів пакетів | |
---|---|
Параметр | Опис |
$DHASH{'LI'} | Ідентифікатор довжини сигнальної одиниці |
$DHASH{'DPC'} | Код пункту призначення |
$DHASH{'OPC'} | Коду пункту відправки |
$DHASH{'MT'} | Код повідомлення |
$DHASH{'CPN.NOA'} | Октет з NatureOfAddress CalledParty |
$DHASH{'CPN.NPL'} | Октет з NumberingPlan CalledParty |
$DHASH{'CPN.NUM'} | Номер CalledParty |
$DHASH{'TMR'} | Вимоги до середовища передачі TransmissionMediuRequirement |
$DHASH{'NoC'} | NatureOfConnection |
$DHASH{'FCI'} | ForwardCallIndicators |
$DHASH{'OFCI'} | Optional ForwardCallIndicators |
$DHASH{'BCI'} | BackwardCallIndicators |
$DHASH{'OBCI'} | Optional BackwardCallIndicators |
$DHASH{'CPC'} | CallingPartyCategory |
$DHASH{'CV.LOC'} | Октет з Location of Cause |
$DHASH{'CV.VAL'}[i] | Причина відбою з індексом i = 0..N |
$DHASH{'RIF'} | RedirectionInformation |
$DHASH{'SUPERV'} | SupervisoryFunction |
$DHASH{'RANGE'} | Range |
$DHASH{'CLPN.NOA'} | Октет з NatureOfAddress CallingParty |
$DHASH{'CLPN.NPL'} | Октет з NumberingPlan CallingParty |
$DHASH{'CLPN.NUM'} | Номер CallingParty |
$DHASH{'RDPN.NOA'} | Октет з NatureOfAddress RedirectingParty |
$DHASH{'RDPN.NPL'} | Октет з NumberingPlan RedirectingParty |
$DHASH{'RDPN.NUM'} | Номер RedirectingParty |
$DHASH{'RPN.NOA'} | Октет з NatureOfAddress RedirectionNumber |
$DHASH{'RPN.NPL'} | Октет з NumberingPlan RedirectionNumber |
$DHASH{'RPN.NUM'} | Номер RedirectionNumber |
$DHASH{'ADI'} | AccessDeliveryInformation |
$DHASH{'PROPCNT'} | PropagationDelayCounter |
$DHASH{'DIVINF'} | CallDiversionInformation |
$DHASH{'ECHOINFO'} | EchoInformation |
$DHASH{'INRID'} | InformationRequestIndicators |
$DHASH{'INFID'} | InformationIndicators |
$DHASH{'COTID'} | ContinuityIndicators |
$DHASH{'HOPCNT'} | HopCounter |
$DHASH{'RNR'} | RedirectionNumberRestriction |
$DHASH{'LPN.NOA'} | LocationNumber NatureOfAddress |
$DHASH{'LPN.NPL'} | LocationNumber NumberingPlan |
$DHASH{'LPN.NUM'} | Номер LocationNumber |
$DHASH{'CCNR'} | CCNRPossibleIndicators |
$DHASH{'SUSRESID'} | Suspend/Resume Indicators |
$DHASH{'EVENT'} | Even |
$DHASH{'GNOT'} | GenericNotification |
$DHASH{'HISTORY'} | CallHistory |
$DHASH{'GPN.NQF'} | GenericNumber NumberQualifier |
$DHASH{'GPN.NOA'} | GenericNumber NatureOfAddress |
$DHASH{'GPN.NPL'} | GenericNumber NumberingPlan |
$DHASH{'GPN.NUM'} | Номер GenericNumber |
$DHASH{'TBLIDX'} | Індекс точки аналізу (лише для внутрішнього протоколу) |
Операції порівняння:
Для числових даних | ДляСимвольних даних | Пояснення |
---|---|---|
== | eq | порівняння на рівність |
!= | ne | порівняння на нерівність |
> | gt | порівняння на більше |
< | lt | порівняння на менше |
= > | ge | порівняння на більше або рівно |
< = | le | порівняння на менше або рівно |
Логічні операції:
Операція | Пояснення | |
---|---|---|
&& | and | Логічне І |
|| | or | Логічне АБО |
xor | Логічне СУМУВАННЯ ПО МОДУЛЮ 2 | |
! | not | Логічне НЕ |
Логічні операції:
Операція | Пояснення |
---|---|
& | Побітове І |
| | Побітове АБО |
^ | Побітове СУМУВАННЯ ПО МОДУЛЮ 2 |
~ | Побітове НЕ |
>> | Зсув вправо |
<< | Зсув вліво |
Крім того для порівняння можна застосовувати регулярні вирази PERL
Приклади запитів для фільтрації:
$DHASH{'DPC'} == 1234
($DHASH{'OPC'} > 5000) && ($DHASH{'OPC'} < 5100)
$CHASH{'SIF'} == 5
$CHASH{'Flags'} eq 'E'
$DHASH{'CV.VAL'}
($DHASH{'LI'} > 0) && {$DHASH{'LI'} < 3)
$DHASH{'GPN.NUM'}
$CHASH{'CIC'} == 30
$DHASH{'СLPN.NUM'} =~ /^32123/
Режим зв'язаних індексів дозволяє знайшовши потрібну сигнальну одиницю у фільтрованих даних швидко знайти її в нефільтрованих даних і навпаки. Для використання цієї функції слід ввімкнути режим зв'язаних індексів, клацнути лівою кнопкою миші на потрібну сигнальну одиницю, а потім на документ, в якому необхідно знайти цю ж сигнальну одиницю.
Цей режим працює для документів, які мають один і той самий файл даних.
Якщо потрібної сигнальної одинці в документі немає, то курсор встановлюється якомога ближче до того місця, де вона повинна була бути.
Статистика обраховується згідно умови фільтрації одночасно з виконанням самої фільтрації даних. За результатами виконання умови фільтрації будується таблиця всіх можливих значень і підраховується кількість кожного зі значень. Наприклад для умови користувача (Виділення всіх пакетів, в яких є поле причина) можна визначити розподіл причин: Умова: {{ :extrasoft:tracer2:tracercondition.png |Умова виділення причини} Статистика такої умови:
Підсвічування здійснюється згідно умови користувача, яка може бути збережена у файлі *.cfg, назва якого повинна співпадати з назвою основного файлу даних. Умова будується в масиві %ColorMap у вигляді:
%ColorMap = ( # Умова textcolor background - у форматі 0xRRGGBB q($CHASH{'MT'} eq 'IAM'),q(0x000000,0xFFAAAA), q($CHASH{'MT'} eq 'REL'),q(0x000000,0xAAFFAA), q($CHASH{'MT'} eq 'RLC'),q(0x000000,0xAAAAFF), q($CHASH{'MT'} eq 'ACM'),q(0xFFFFFF,0x444466), q($CHASH{'MT'} eq 'COT'),q(0xFFFFFF,0x554466), q($CHASH{'MT'} eq 'INR'),q(0xFFFFFF,0x334466), q($CHASH{'MT'} eq 'CPG'),q(0xFFFFFF,0x224466), );
Користувацька часова прив'язка здійснюється згідно правил користувача, які можуть бути збережені у файлі *.cfg, назва якого повинна співпадати з назвою основного файлу даних. Прив'язки вказуються в масиві %TimeStamp0 у такому вигляді:
#proc real_time station_time %TimeStamp0 = (q(A),q(2009.12.11 00:00:00 == 0.000), q(C),q(2009.12.15 14:29:40 == 0.000), q(D),q(2009.12.11 00:00:00 == 0.000), q(DECODE_ID),q(2009.12.24 11:43:00 == 0.000), );