Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#302 closed баг (fixed)

1IND: ошибка при входящем МГ вызове

Reported by: alx Owned by: alx
Priority: средний Milestone: 1 очередь
Component: any Keywords:
Cc: san

Description

Нам поступило сообщение о неправильной работе входящего МГ вызова при установке ненулевого значения параметра "Макс. число запросов АОН".

Схема вызова была следующей:

АМТС --(SS7)--> Iskratel Si2000 --(индуктивный код)--> VE-01 (1IND)

Параметр "Макс. число запросов АОН" установлен в значение 1.

После набора номера вызывающим телефон вызываемого не звенит, завершается по таймауту. Перед завершением вызова канальное окончание 1IND находится в состоянии NumRecv.

Трассировка вызова с Si2000:

________________________________________________________________________
 | H|  |  |   |RELATIV|    |    |    |MODUL|PORT   |CHAN|MESS|PAR.|ADDIT
S| O| M| S| M |TIME TO|TRC |SIG |UNIT|TRGID|IDENTIT| ID |DESC|    |PAR. 
E| U| I| E| S |PREVIOS|    |    |    |CDAID| GENID |    |    |    |     
Q| R| N| C| C |MESSAGE|TYPE|TYPE|TYPE|STBUS| RECID |    |    |    |     
1 16:17:31,880       0 SSN7    0    0     0      20    0 Binary File
2 16:17:31,888       8 CAS       TRID T= 47              LOUT SZDK     0
2 16:17:31,888       0 CAS       TRID T= 47              SOUT SZ   
2 16:17:32,388     500 CAS       TRID T= 47              LOUT DIG      9
2 16:17:32,388       0 CAS       TRID T= 47              SOUT DDGR     9
2 16:17:33,288     900 CAS       TRID T= 47              SIN  DGS  
2 16:17:33,288       0 CAS       TRID T= 47              LOUT DIG      9
2 16:17:33,288       0 CAS       TRID T= 47              SOUT DDGR     9
2 16:17:34,888    1600 CAS       TRID T= 47              SIN  DGS  
2 16:17:34,888       0 CAS       TRID T= 47              LOUT DIG      9
2 16:17:34,888       0 CAS       TRID T= 47              SOUT DDGR     9
2 16:17:36,488    1600 CAS       TRID T= 47              SIN  DGS  
2 16:17:36,488       0 CAS       TRID T= 47              LOUT DIG     10
2 16:17:36,488       0 CAS       TRID T= 47              SOUT DDGR    10
2 16:17:38,188    1700 CAS       TRID T= 47              SIN  DGS  
2 16:17:38,188       0 CAS       TRID T= 47              LOUT DIG      2
2 16:17:38,188       0 CAS       TRID T= 47              SOUT DDGR     2
2 16:17:39,088     900 CAS       TRID T= 47              SIN  DGS  
2 16:17:39,284     196 CAS       TRID T= 47              LIN     1 16642
2 16:17:39,372      88 CAS       TRID T= 47              LIN     9 16664
2 16:17:39,372       0 CAS       TRID T= 47              SIN  EOSF 
2 16:17:39,372       0 CAS       TRID T= 47              LOUT RING     0
2 16:17:39,372       0 CAS       TRID T= 47              SOUT OPR  
3 16:17:39,376       4 SSN7    0 TRID T=  0              Binary File
2 16:17:39,892     516 CAS       TRID T= 47              LIN     1 16794
2 16:17:39,980      88 CAS       TRID T= 47              LIN     9 16816
2 16:17:39,980       0 CAS       TRID T= 47              LOUT IDLE     0
2 16:17:39,980       0 CAS       TRID T= 47              SIN  ANSW 
3 16:17:39,984       4 SSN7    0 TRID T=  0              Binary File
2 16:17:59,932   19948 CAS       TRID T= 47              LIN     1 21804
2 16:18:00,340     408 CAS       TRID T= 47              LIN     9 21906
2 16:18:00,340       0 CAS       TRID T= 47              SIN  FRL  
2 16:18:00,340       0 CAS       TRID T= 47              LOUT CLF      0
2 16:18:00,340       0 CAS       TRID T= 47              SOUT CLF  
3 16:18:00,340       0 SSN7    0 TRID T=  0              Binary File
1 16:18:00,544     204 SSN7    0    0     0      20    0 Binary File
2 16:18:00,640      96 CAS       TRID T= 47              LOUT IDLE     0

ABBREVIATIONS :

ANSW....Answer
CAS ....CAS
CLF ....Clear Forward, Uncond. Clearing from Calling Side
DDGR....Decadic Digit Received
DGS ....Decadic Digit Sent
DIG ....Digit
EOSF....End of Selection Free, Free State of Called Party
FRL ....Forced Release, Uncond. Clearing from Called Side
IDLE....Idle
LIN ....Change on Line Detected, IO Level
LOUT....Line Signal to Send, IO Level
OPR ....Operator Ring
RING....Ring
SIN ....Line Signal Received,SC Level
SOUT....Line Signal to Send, SC Level
SSN7....SSN7
SZ  ....Seizure
SZDK....Seizure for DK
TRID....Trunk Identific. No.

Change History (7)

comment:1 by alx, 6 years ago

Как видно из трассировки, после передачи номера "99902" из Si2000 в VE-01 в 16:17:39,372 VE-01 передает в СЛ запрос АОН (линейный сигнал "Ответ" + тональный сигнал 500 Гц). Но Si2000 воспринимает наш запрос АОН как сигнал "Б свободен" (EOSF), и в ответ дает нам сигнал "Послать вызов" (OPR). Мы такого сигнала не ожидаем, и "от удивления" канальное окончание 1IND начинает прием номера с самого начала (очищает уже принятые цифры, запускает таймер ожидания первой цифры на 20 секунд)...

Так как Si2000 номер уже передала, больше она ничего нам не передает. Через 20 секунд старабывает таймер, и канальное окончание 1IND дает в СЛ отбойный сигнал.

comment:2 by alx, 6 years ago

Канальное окончание 1IND передает сигнал "Б свободен" по факту получения ответа "180 Ringing", так как нет иного надежного способа узнать, свободен ли абонент, кроме как послать INVITE (есть SUBSCRIBE/PUBLISH, но их поддержка не является обязательной). А чтобы послать INVITE, надо знать номер вызывающего абонента. Именно поэтому наше канальное окончание сначала запрашивает номер вызывающего, затем посылает INVITE и по результату посылки передает сигнал "Б свободен" или "Б занят".

Вероятно, что с точки зрения сигнализации это неверная последовательность (строго говоря, с точки зрения сигнализации, запрос АОН должен использоваться при вызове от местной АТС к АМТС, а не наоборот!). МГ вызов предполагает, что принимающая вызов станция проверяет состояние абонента до посылки ему вызова, а затем, по результатам теста вызываемому абоненту либо посылается вызов (если он свободен), либо оператор вмешивается в разговор (если абонент занят местным вызовом), либо следует отбой.

Какие могут быть варианты решения проблемы?

Во-первых, наверное неправильно, что получив неожиданный длинный сигнал, канальное окончание пошло принимать номер вызываемого заново (мы попали в ветку default оператора switch). Надо бы сделать проверки более разборчивыми к состояниям.

Во-вторых, можно попробовать "схитрить", передавая сигнал "Б свободен" безусловно - независимо от того, действительно ли он свободен, или нет. В этом случае мы вроде бы ничего не теряем, так как возможности вмешательства оператора в существующее соединение у нас все равно нет. Если передать "Б свободен" сразу после завершения приема номера вызываемого, в ответ мы получим "Послать вызов". С этого момента исходящая станция ожидает "Ответ", и это более правильное состояние для того чтобы попытаться запросить у нее АОН. Затем, получив (или не получив) номер вызывающего, можно сформировать и послать INVITE. Если в результате окажется, что вызываемый все-таки занят - пошлем отбойный сигнал, это сделать, я думаю, никогда не поздно... :)

В-третьих, можно просто добавить конфигурационный флаг, запрещающий запрос АОН при входящем МГ вызове...

comment:3 by san, 6 years ago

Мне нравится вариант "схитрить", действительно в этом варианте мы кажется ничего не теряем.

comment:4 by alx, 6 years ago

Resolution: fixed
Status: newclosed

In 1542/sip_ua:

Изменены логика работы канальных окончаний 1IND при входящем МГ вызове.
После завершения приема номера канальное окончание сразу передает сигнал
"Б свободен", после чего переходит в новое состояние BFree, ожидая сигнала
"Послать вызов". После получения сигнала "Послать вызов" выполняется либо
запрос АОН, либо сразу отправка INVITE - как и при местном вызове.
Closes #302.

comment:5 by alx, 6 years ago

Как показал новый тест, сделанное изменение не привело к правильной работе в описанной схеме. Вот новая трассировка со стороны станции Si2000:

________________________________________________________________________
 | H|  |  |   |RELATIV|    |    |    |MODUL|PORT   |CHAN|MESS|PAR.|ADDIT
S| O| M| S| M |TIME TO|TRC |SIG |UNIT|TRGID|IDENTIT| ID |DESC|    |PAR. 
E| U| I| E| S |PREVIOS|    |    |    |CDAID| GENID |    |    |    |     
Q| R| N| C| C |MESSAGE|TYPE|TYPE|TYPE|STBUS| RECID |    |    |    |     
1 14:38:39,064       0 SSN7    0    0     0      20    0 Binary File
2 14:38:39,072       8 CAS       TRID T= 46              LOUT SZDK     0
2 14:38:39,072       0 CAS       TRID T= 46              SOUT SZ   
2 14:38:39,572     500 CAS       TRID T= 46              LOUT DIG      9
2 14:38:39,572       0 CAS       TRID T= 46              SOUT DDGR     9
2 14:38:40,472     900 CAS       TRID T= 46              SIN  DGS  
2 14:38:40,472       0 CAS       TRID T= 46              LOUT DIG      9
2 14:38:40,472       0 CAS       TRID T= 46              SOUT DDGR     9
2 14:38:42,072    1600 CAS       TRID T= 46              SIN  DGS  
2 14:38:42,072       0 CAS       TRID T= 46              LOUT DIG      9
2 14:38:42,072       0 CAS       TRID T= 46              SOUT DDGR     9
2 14:38:43,672    1600 CAS       TRID T= 46              SIN  DGS  
2 14:38:43,672       0 CAS       TRID T= 46              LOUT DIG     10
2 14:38:43,672       0 CAS       TRID T= 46              SOUT DDGR    10
2 14:38:45,372    1700 CAS       TRID T= 46              SIN  DGS  
2 14:38:45,372       0 CAS       TRID T= 46              LOUT DIG      2
2 14:38:45,372       0 CAS       TRID T= 46              SOUT DDGR     2
2 14:38:46,272     900 CAS       TRID T= 46              SIN  DGS  
2 14:38:46,460     188 CAS       TRID T= 46              LIN     1 62460
2 14:38:46,548      88 CAS       TRID T= 46              LIN     9 62482
2 14:38:46,548       0 CAS       TRID T= 46              SIN  EOSF 
2 14:38:46,548       0 CAS       TRID T= 46              LOUT RING     0
2 14:38:46,548       0 CAS       TRID T= 46              SOUT OPR  
3 14:38:46,552       4 SSN7    0 TRID T=  0              Binary File
2 14:38:47,100     548 CAS       TRID T= 46              LIN     1 62620
2 14:38:47,188      88 CAS       TRID T= 46              LIN     9 62642
2 14:38:47,188       0 CAS       TRID T= 46              LOUT IDLE     0
2 14:38:47,188       0 CAS       TRID T= 46              SIN  ANSW 
3 14:38:47,192       4 SSN7    0 TRID T=  0              Binary File
2 14:38:47,700     508 CAS       TRID T= 46              LIN     1 62770
2 14:38:47,788      88 CAS       TRID T= 46              LIN     9 62792
2 14:38:47,788       0 CAS       TRID T= 46              SIN  CLB  
2 14:38:47,788       0 CAS       TRID T= 46              LOUT CLF      0
2 14:38:47,788       0 CAS       TRID T= 46              SOUT CLF  
3 14:38:47,788       0 SSN7    0 TRID T=  0              Binary File
2 14:38:47,892     104 CAS       TRID T= 46              LIN     1 62818
2 14:38:47,980      88 CAS       TRID T= 46              LIN     9 62840
2 14:38:47,980       0 CAS       TRID T= 46              LOUT IDLE     0
1 14:38:48,000      20 SSN7    0    0     0      20    0 Binary File
2 14:38:48,288     288 CAS       TRID T= 46              LOUT IDLE     0

Как видно из трасисровки, после получения сигнала "Б свободен" Si2000 передает сигнал "Послать вызов". До этого места обмен работает согласованно. После получения сигнала "Послать вызов" VE-01 отправляет запрос АОН. Si2000 интерпретирует запрос АОН как сигнал "Ответ" (ANSW). После окончания времени ожидания ответа на запрос АОН VE-01 посылает сигнал "Снятие ответа", который Si2000 интерпретирует как сигнал "Отбой" (CLB), передавая на него также отбой в прямом направлении.

comment:6 by alx, 6 years ago

In 1544/sip_ua:

Канальное окончание 1IND не передает сигнал "Б свободен" при получении
"180 Ringing" - мы уже передавали этот сигнал до посылки INVITE. See #302.

comment:7 by alx, 6 years ago

In 1546/sip_ua:

Коммиты 1542 и 1544 откачены, так как предпринятые меры не привели к реальному улучшению,
а в результате изменения алгоритма есть шанс сломать то, что уже работало. See #302.

Note: See TracTickets for help on using tickets.