TSHOOT. Разрыв звонка при снятии с удержания UCM-LYNC

Posted: 2014-03-28 in Cisco, MS Lync, UCM
Tags: , , , , ,

Некоторое время назад заказчик из Венгрии столкнулся с проблемой разрыва звонка между АТС Cisco UСM and Microsoft Lync Server 2010. Звонок с телефона зарегистрированного на Cisco АТС в сторону Lync Client устанавливался без проблем. Но когда пользователь Microsoft Lync ставил собеседника на удержание (on hold), а затем снимал его с удержания (off hold) происходил разрыв звонка. Надо было помочь человеку. Ниже обзор проблемы и решение.

###  Исходные данные.
Номер А: 1111
Номер Б: 2222
Адрес UCM Server: 10.101.14.201
Адрес Lync Server: 10.248.220.2

###  Анализ.

Сначала найдем сообщения по номеру. Нашли первое сообщение ниже.

INVITE sip:2222@lync02.test.com:5060 SIP/2.0
Via: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16cae24dddf10
From: “CUSTOMER1” <sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
To: <sip:2222@lync02.test.com>
Date: Tue, 25 Mar 2014 13:18:27 GMT
Call-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
Supported: timer,resource-priority,replaces
Min-SE: 1800
User-Agent: Cisco-CUCM9.1
Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY
CSeq: 102 INVITE
Expires: 180
Allow-Events: presence
Supported: X-cisco-srtp-fallback,X-cisco-original-called
Cisco-Guid: 4011321472-0000065536-0000001038-3373163786
Session-Expires: 1800
P-Asserted-Identity: “CUSTOMER1” <sip:1111@10.101.14.201>
Remote-Party-ID: “CUSTOMER1” <sip:1111@10.101.14.201>;party=calling;screen=yes;privacy=off
Contact: <sip:1111@10.101.14.201:5060;transport=tcp>
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 217

v=0
o=CiscoSystemsCCM-SIP 829115 1 IN IP4 10.101.14.201
s=SIP Call
c=IN IP4 10.101.120.201
t=0 0
m=audio 29908 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=ptime:20
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15

 

Для того чтобы отфильтровать нужные нам сообщения среди множества используем поле CallId с уникальным значением для всех сообщений в пределах одного звонка. Для текущего звонка это
Call-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201

Также я обращаю внимание на время для текущего сообщения, но заголовок ниже не обязательный, поэтому он не всегда присутствует.
Date: Tue, 25 Mar 2014 13:18:27 GMT

Далее приведены сообщения стандартного звонка. 100, 183, 180.
SIP/2.0 100 Trying
FROM: “CUSTOMER1″<sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
TO: <sip:2222@lync02.test.com>
CSEQ: 102 INVITE
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
VIA: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16cae24dddf10
CONTENT-LENGTH: 0

SIP/2.0 183 Session Progress
FROM: “CUSTOMER1″<sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
TO: <sip:2222@lync02.test.com>;tag=8b433cbb;epid=F77635223D
CSEQ: 102 INVITE
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
VIA: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16cae24dddf10
CONTACT: <sip:Lync02.test.com:5060;transport=Tcp;maddr=10.248.220.2>
CONTENT-LENGTH: 0
ALLOW: CANCEL
ALLOW: BYE
ALLOW: UPDATE
ALLOW: PRACK
SERVER: RTCC/4.0.0.0 MediationServer

SIP/2.0 180 Ringing
FROM: “CUSTOMER1″<sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
TO: <sip:2222@lync02.test.com>;tag=8b433cbb;epid=F77635223D
CSEQ: 102 INVITE
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
VIA: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16cae24dddf10
CONTACT: <sip:Lync02.test.com:5060;transport=Tcp;maddr=10.248.220.2>
CONTENT-LENGTH: 0
ALLOW: CANCEL
ALLOW: BYE
ALLOW: UPDATE
ALLOW: PRACK
SERVER: RTCC/4.0.0.0 MediationServer

 

Ниже сообщения специфичные для Lync Server касательно переадресации звонка.

SIP/2.0 183 Session Progress
FROM: “CUSTOMER1″<sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
TO: <sip:2222@lync02.test.com>;tag=bbcbf69da9;epid=F77635223D
CSEQ: 102 INVITE
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
VIA: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16cae24dddf10
CONTACT: <sip:Lync02.test.com:5060;transport=Tcp;maddr=10.248.220.2>
CONTENT-LENGTH: 233
CONTENT-TYPE: application/sdp
ALLOW: CANCEL
ALLOW: BYE
ALLOW: UPDATE
ALLOW: PRACK
SERVER: RTCC/4.0.0.0 MediationServer

v=0
o=- 0 0 IN IP4 172.24.112.114
s=session
c=IN IP4 172.24.112.114
b=CT:99980
t=0 0
m=audio 22620 RTP/AVP 0 101
c=IN IP4 172.24.112.114
a=rtcp:22621
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16

 

SIP/2.0 181 Call Is Being Forwarded
FROM: “CUSTOMER1″<sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
TO: <sip:2222@lync02.test.com>;tag=8b433cbb;epid=F77635223D
CSEQ: 102 INVITE
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
VIA: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16cae24dddf10
CONTACT: <sip:Lync02.test.com:5060;transport=Tcp;maddr=10.248.220.2>
CONTENT-LENGTH: 0
ALLOW: CANCEL
ALLOW: BYE
ALLOW: UPDATE
ALLOW: PRACK
SERVER: RTCC/4.0.0.0 MediationServer

 

SIP/2.0 183 Session Progress
FROM: “CUSTOMER1″<sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
TO: <sip:2222@lync02.test.com>;tag=8b433cbb;epid=F77635223D
CSEQ: 102 INVITE
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
VIA: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16cae24dddf10
CONTACT: <sip:Lync02.test.com:5060;transport=Tcp;maddr=10.248.220.2>
CONTENT-LENGTH: 0
ALLOW: CANCEL
ALLOW: BYE
ALLOW: UPDATE
ALLOW: PRACK
SERVER: RTCC/4.0.0.0 MediationServer

 

Ответ от MS Lync Server с медиапараметрами на опции полученные в INVITE SDP.

SIP/2.0 200 OK
FROM: “CUSTOMER1″<sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
TO: <sip:2222@lync02.test.com>;tag=bbcbf69da9;epid=F77635223D
CSEQ: 102 INVITE
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
VIA: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16cae24dddf10
CONTACT: <sip:Lync02.test.com:5060;transport=Tcp;maddr=10.248.220.2>
CONTENT-LENGTH: 233
SUPPORTED: timer
SUPPORTED: 100rel
CONTENT-TYPE: application/sdp
ALLOW: ACK
SERVER: RTCC/4.0.0.0 MediationServer
Allow: CANCEL,BYE,INVITE,PRACK,UPDATE
Session-Expires: 1800;refresher=uac
Min-SE: 1800

v=0
o=- 0 1 IN IP4 172.24.112.114
s=session
c=IN IP4 172.24.112.114
b=CT:99980
t=0 0
m=audio 22620 RTP/AVP 0 101
c=IN IP4 172.24.112.114
a=rtcp:22621
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16

 

Из сообщения выше следует, что согласован кодек G.711u и DTMF RFC2833. Также прошу обратить внимание на использование записи b=CT:99800. Эта запись используется Misrosoft Lync Server для ограничения используемой полосы. Cisco UCM поддерживает данную опцию. Напомню, что это для всех сессий в конференции (в нашем случае для одной сессии для аудио звонка точка-точка). Кто забыл статья ниже.
https://palavdin.wordpress.com/2014/03/26/sip_sdp_tias_as_ct/

 

 

ACK sip:Lync02.test.com:5060;maddr=10.248.220.2;transport=Tcp SIP/2.0
Via: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16caf5dc524b1
From: “CUSTOMER1” <sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
To: <sip:2222@lync02.test.com>;tag=bbcbf69da9
Date: Tue, 25 Mar 2014 13:18:27 GMT
Call-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
Max-Forwards: 70
CSeq: 102 ACK
Allow-Events: presence
Content-Length: 0

 

И сообщение выше говорит о том, что звонок установился.
Date: Tue, 25 Mar 2014 13:18:27 GMT

 

 

Через некоторое время ниже мы видим SIP reINVITE с SDP и важными параметрами.

Параметр a=inactive говорит о том, что это пользователь нажал на кнопочку “Hold”, т.е. поставил на удержание.
m=audio 22620 RTP/AVP 0 101
c=IN IP4 172.24.112.114
a=rtcp:22621
a=inactive

А параметр ниже указывает максимально допустимое количество полосы, которое может быть выделено для звонка. Обратите на него внимание.
b=CT:99980

INVITE sip:1111@10.101.14.201:5060;transport=tcp SIP/2.0

FROM: <sip:2222@lync02.test.com>;epid=F77635223D;tag=bbcbf69da9
TO: <sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
CSEQ: 1 INVITE
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
MAX-FORWARDS: 70
VIA: SIP/2.0/TCP 10.248.220.2:5060;branch=z9hG4bK7aec060
CONTACT: <sip:Lync02.test.com:5060;transport=Tcp;maddr=10.248.220.2;ms-opaque=bc531197472fb968>
CONTENT-LENGTH: 245
SUPPORTED: timer
SUPPORTED: 100rel
USER-AGENT: RTCC/4.0.0.0 MediationServer
CONTENT-TYPE: application/sdp
Session-Expires: 1800
Min-SE: 1800

v=0
o=- 0 2 IN IP4 172.24.112.114
s=session
c=IN IP4 172.24.112.114
b=CT:99980
t=0 0
m=audio 22620 RTP/AVP 0 101
c=IN IP4 172.24.112.114
a=rtcp:22621
a=inactive
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16

 

SIP/2.0 100 Trying
Via: SIP/2.0/TCP 10.248.220.2:5060;branch=z9hG4bK7aec060
From: <sip:2222@lync02.test.com>;tag=bbcbf69da9;epid=F77635223D
To: “CUSTOMER1” <sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
Date: Tue, 25 Mar 2014 13:18:54 GMT
Call-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
CSeq: 1 INVITE
Allow-Events: presence
Content-Length: 0

 

В сообщении ниже Cisco UCM соглашается на удержание и транслирует сообщение для телефона. Кроме того АТС берет из локальных настроек ограничение полосы и добавляет его в SIP сообщение с помощью записи ниже. Т.к. это 64kb/s полосы включая служебные заголовки этого недостаточно для согласования кодека G.711 в будущем, когда абонент снимет собеседника с удержания.

b=CT:64

SIP/2.0 200 OK
Via: SIP/2.0/TCP 10.248.220.2:5060;branch=z9hG4bK7aec060
From: <sip:2222@lync02.test.com>;tag=bbcbf69da9;epid=F77635223D
To: “CUSTOMER1” <sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
Date: Tue, 25 Mar 2014 13:18:54 GMT
Call-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
CSeq: 1 INVITE
Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY
Allow-Events: presence
Supported: replaces
Require: sdp-anat
Supported: X-cisco-srtp-fallback
Supported: Geolocation
Session-Expires: 1800;refresher=uas
Require: timer
P-Asserted-Identity: “CUSTOMER1” <sip:1111@10.101.14.201>
Remote-Party-ID: “CUSTOMER1” <sip:1111@10.101.14.201>;party=called;screen=yes;privacy=off
Contact: <sip:1111@10.101.14.201:5060;transport=tcp>
Content-Type: application/sdp
Content-Length: 238

v=0
o=CiscoSystemsCCM-SIP 829115 2 IN IP4 10.101.14.201
s=SIP Call
c=IN IP4 10.101.120.201
b=CT:64
t=0 0
m=audio 29908 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=ptime:20
a=inactive
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15

ACK sip:1111@10.101.14.201:5060;transport=tcp SIP/2.0
FROM: <sip:2222@lync02.test.com>;epid=F77635223D;tag=bbcbf69da9
TO: <sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
CSEQ: 1 ACK
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
MAX-FORWARDS: 70
VIA: SIP/2.0/TCP 10.248.220.2:5060;branch=z9hG4bK38483c
CONTENT-LENGTH: 0
USER-AGENT: RTCC/4.0.0.0 MediationServer

 

Попытка вернуть звонок с удержания (off hold) Lync клиентом. Нужно обратить внимание на отправляемые параметры медиа потока. Здесь нет кодеков вообще, а только RFC 2833.

m=audio 22620 RTP/AVP 101

 

INVITE sip:1111@10.101.14.201:5060;transport=tcp SIP/2.0
FROM: <sip:2222@lync02.test.com>;epid=F77635223D;tag=bbcbf69da9
TO: <sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
CSEQ: 2 INVITE
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
MAX-FORWARDS: 70
VIA: SIP/2.0/TCP 10.248.220.2:5060;branch=z9hG4bK76d4f996
CONTACT: <sip:Lync02.test.com:5060;transport=Tcp;maddr=10.248.220.2;ms-opaque=bc531197472fb968>
CONTENT-LENGTH: 157
SUPPORTED: timer
SUPPORTED: 100rel
USER-AGENT: RTCC/4.0.0.0 MediationServer
CONTENT-TYPE: application/sdp
Session-Expires: 1800
Min-SE: 1800

v=0
o=- 0 3 IN IP4 172.24.112.114
s=session
c=IN IP4 172.24.112.114
b=CT:99980
t=0 0
m=audio 22620 RTP/AVP 101
c=IN IP4 172.24.112.114
a=rtcp:22621

SIP/2.0 100 Trying
Via: SIP/2.0/TCP 10.248.220.2:5060;branch=z9hG4bK76d4f996
From: <sip:2222@lync02.test.com>;tag=bbcbf69da9;epid=F77635223D
To: “CUSTOMER1” <sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
Date: Tue, 25 Mar 2014 13:18:56 GMT
Call-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
CSeq: 2 INVITE
Allow-Events: presence
Content-Length: 0

 

Как результат ниже мы видим сообщение BYE о разрыве звонка из-за несогласованных медиа параметров.

BYE sip:Lync02.test.com:5060;maddr=10.248.220.2;transport=Tcp;ms-opaque=bc531197472fb968 SIP/2.0
Via: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16cb0205e1e2
From: “CUSTOMER1” <sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
To: <sip:2222@lync02.test.com>;tag=bbcbf69da9
Date: Tue, 25 Mar 2014 13:18:56 GMT
Call-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
User-Agent: Cisco-CUCM9.1
Max-Forwards: 70
CSeq: 103 BYE
Reason: Q.850;cause=47
Content-Length: 0

 

SIP/2.0 200 OK
FROM: “CUSTOMER1″<sip:1111@10.101.14.201>;tag=829115~a8d6a685-d9f1-46da-8ca4-c7ef2dc77b36-44813507
TO: <sip:2222@lync02.test.com>;tag=bbcbf69da9;epid=F77635223D
CSEQ: 103 BYE
CALL-ID: ef17e880-3311821e-13caa-c90e650a@10.101.14.201
VIA: SIP/2.0/TCP 10.101.14.201:5060;branch=z9hG4bK16cb0205e1e2
CONTENT-LENGTH: 0
SERVER: RTCC/4.0.0.0 MediationServer

 

Вот зачем нужно учить мат-часть.

 

Хороших выходных, коллеги!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s