#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 , 6 years ago
comment:2 by , 6 years ago
Канальное окончание 1IND передает сигнал "Б свободен" по факту получения ответа "180 Ringing", так как нет иного надежного способа узнать, свободен ли абонент, кроме как послать INVITE (есть SUBSCRIBE/PUBLISH, но их поддержка не является обязательной). А чтобы послать INVITE, надо знать номер вызывающего абонента. Именно поэтому наше канальное окончание сначала запрашивает номер вызывающего, затем посылает INVITE и по результату посылки передает сигнал "Б свободен" или "Б занят".
Вероятно, что с точки зрения сигнализации это неверная последовательность (строго говоря, с точки зрения сигнализации, запрос АОН должен использоваться при вызове от местной АТС к АМТС, а не наоборот!). МГ вызов предполагает, что принимающая вызов станция проверяет состояние абонента до посылки ему вызова, а затем, по результатам теста вызываемому абоненту либо посылается вызов (если он свободен), либо оператор вмешивается в разговор (если абонент занят местным вызовом), либо следует отбой.
Какие могут быть варианты решения проблемы?
Во-первых, наверное неправильно, что получив неожиданный длинный сигнал, канальное окончание пошло принимать номер вызываемого заново (мы попали в ветку default оператора switch). Надо бы сделать проверки более разборчивыми к состояниям.
Во-вторых, можно попробовать "схитрить", передавая сигнал "Б свободен" безусловно - независимо от того, действительно ли он свободен, или нет. В этом случае мы вроде бы ничего не теряем, так как возможности вмешательства оператора в существующее соединение у нас все равно нет. Если передать "Б свободен" сразу после завершения приема номера вызываемого, в ответ мы получим "Послать вызов". С этого момента исходящая станция ожидает "Ответ", и это более правильное состояние для того чтобы попытаться запросить у нее АОН. Затем, получив (или не получив) номер вызывающего, можно сформировать и послать INVITE. Если в результате окажется, что вызываемый все-таки занят - пошлем отбойный сигнал, это сделать, я думаю, никогда не поздно... :)
В-третьих, можно просто добавить конфигурационный флаг, запрещающий запрос АОН при входящем МГ вызове...
comment:3 by , 6 years ago
Мне нравится вариант "схитрить", действительно в этом варианте мы кажется ничего не теряем.
comment:5 by , 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
), передавая на него также отбой в прямом направлении.
Как видно из трассировки, после передачи номера "99902" из Si2000 в VE-01 в 16:17:39,372 VE-01 передает в СЛ запрос АОН (линейный сигнал "Ответ" + тональный сигнал 500 Гц). Но Si2000 воспринимает наш запрос АОН как сигнал "Б свободен" (EOSF), и в ответ дает нам сигнал "Послать вызов" (OPR). Мы такого сигнала не ожидаем, и "от удивления" канальное окончание 1IND начинает прием номера с самого начала (очищает уже принятые цифры, запускает таймер ожидания первой цифры на 20 секунд)...
Так как Si2000 номер уже передала, больше она ничего нам не передает. Через 20 секунд старабывает таймер, и канальное окончание 1IND дает в СЛ отбойный сигнал.