Мы отправляем глоток звонка одному из наших партнеров. Они отправляют нам заголовки «Record-Route» и «Contact» в течение 200 сообщений OK. Наша сторона отправляет ACK на IP-адрес, указанный в Record-Route, но заменяет заголовок «Контакт» заголовком «Маршрут», а другая сторона не выполняет нашу ACK и посылает нам повторную 200 OK, что приводит к отключению вызова.Срок действия ответа SIP ACK на сообщение SIP 200 OK
Я не уверен, что мы нарушаем любой SIP RFC, изменив заголовок «Контакт» на «Маршрут», сохраняя содержимое заголовка. Может ли кто-нибудь пролить свет на него?
Вот 200 OK со стороны партнера:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 100.100.100.100;received=100.100.100.100;rport=5060
Record-Route: <sip:200.200.200.2:5060;lr>
Contact: <sip:[email protected]:7654>
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 INVITE
Allow: ACK, INVITE, BYE, CANCEL
Content-Type: application/sdp
Server: YATE/3.0.0
Content-Length: 195
v=0
o=yate 1441225325 1441225325 IN IP4 201.201.201.30
s=SIP Call
c=IN IP4 201.201.201.30
t=0 0
m=audio 19305 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
Вот наш ACK 200 OK сообщение:
ACK sip:200.200.200.2:5060 SIP/2.0
Via: SIP/2.0/UDP 100.100.100.100
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 ACK
Max-Forwards: 70
Route: <sip:[email protected]:7654>
Content-Length: 0
Вот диалог Целые SIP:
INVITE sip:[email protected]:5060 SIP/2.0
Via: SIP/2.0/UDP 100.100.100.100
To: +200<sip:[email protected]:5060>
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
Contact: +100<sip:[email protected]:5060>
User-Agent: Excel_CSP/84.11.34
Supported: timer
Session-Expires: 3660
Min-SE: 300
CSeq: 1 INVITE
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 144
v=0
o=sip 0 0 IN IP4 100.100.100.100
s=SIP_Call
c=IN IP4 100.100.100.230
t=0 0
m=audio 46750 RTP/AVP 0 101
a=rtpmap:101 telephone-event/8000
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 100.100.100.100;received=100.100.100.100;rport=5060
Record-Route: <sip:200.200.200.2:5060;lr>
To: +200<sip:[email protected]:5060>
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 INVITE
Server: YATE/3.0.0
Content-Length: 0
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 100.100.100.100;received=100.100.100.100;rport=5060
Record-Route: <sip:200.200.200.2:5060;lr>
Contact: <sip:[email protected]:7654>
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 INVITE
Allow: ACK, INVITE, BYE, CANCEL
Server: YATE/3.0.0
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 100.100.100.100;received=100.100.100.100;rport=5060
Record-Route: <sip:200.200.200.2:5060;lr>
Contact: <sip:[email protected]:7654>
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 INVITE
Allow: ACK, INVITE, BYE, CANCEL
Content-Type: application/sdp
Server: YATE/3.0.0
Content-Length: 195
v=0
o=yate 1441225325 1441225325 IN IP4 201.201.201.30
s=SIP Call
c=IN IP4 201.201.201.30
t=0 0
m=audio 19305 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
ACK sip:200.200.200.2:5060 SIP/2.0
Via: SIP/2.0/UDP 100.100.100.100
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 ACK
Max-Forwards: 70
Route: <sip:[email protected]:7654>
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 100.100.100.100;received=100.100.100.100;rport=5060
Record-Route: <sip:200.200.200.2:5060;lr>
Contact: <sip:[email protected]:7654>
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 INVITE
Allow: ACK, INVITE, BYE, CANCEL
Content-Type: application/sdp
Server: YATE/3.0.0
Content-Length: 195
v=0
o=yate 1441225325 1441225325 IN IP4 201.201.201.30
s=SIP Call
c=IN IP4 201.201.201.30
t=0 0
m=audio 19305 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
ACK sip:200.200.200.2:5060 SIP/2.0
Via: SIP/2.0/UDP 100.100.100.100
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 ACK
Max-Forwards: 70
Route: <sip:[email protected]:7654>
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 100.100.100.100;received=100.100.100.100;rport=5060
Record-Route: <sip:200.200.200.2:5060;lr>
Contact: <sip:[email protected]:7654>
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 INVITE
Allow: ACK, INVITE, BYE, CANCEL
Content-Type: application/sdp
Server: YATE/3.0.0
Content-Length: 195
v=0
o=yate 1441225325 1441225325 IN IP4 201.201.201.30
s=SIP Call
c=IN IP4 201.201.201.30
t=0 0
m=audio 19305 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
ACK sip:200.200.200.2:5060 SIP/2.0
Via: SIP/2.0/UDP 100.100.100.100
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 ACK
Max-Forwards: 70
Route: <sip:[email protected]:7654>
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 100.100.100.100;received=100.100.100.100;rport=5060
Record-Route: <sip:200.200.200.2:5060;lr>
Contact: <sip:[email protected]:7654>
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 INVITE
Allow: ACK, INVITE, BYE, CANCEL
Content-Type: application/sdp
Server: YATE/3.0.0
Content-Length: 195
v=0
o=yate 1441225325 1441225325 IN IP4 201.201.201.30
s=SIP Call
c=IN IP4 201.201.201.30
t=0 0
m=audio 19305 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
ACK sip:200.200.200.2:5060 SIP/2.0
Via: SIP/2.0/UDP 100.100.100.100
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 ACK
Max-Forwards: 70
Route: <sip:[email protected]:7654>
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 100.100.100.100;received=100.100.100.100;rport=5060
Record-Route: <sip:200.200.200.2:5060;lr>
Contact: <sip:[email protected]:7654>
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 INVITE
Allow: ACK, INVITE, BYE, CANCEL
Content-Type: application/sdp
Server: YATE/3.0.0
Content-Length: 195
v=0
o=yate 1441225325 1441225325 IN IP4 201.201.201.30
s=SIP Call
c=IN IP4 201.201.201.30
t=0 0
m=audio 19305 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
ACK sip:200.200.200.2:5060 SIP/2.0
Via: SIP/2.0/UDP 100.100.100.100
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 ACK
Max-Forwards: 70
Route: <sip:[email protected]:7654>
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 100.100.100.100;received=100.100.100.100;rport=5060
Record-Route: <sip:200.200.200.2:5060;lr>
Contact: <sip:[email protected]:7654>
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 INVITE
Allow: ACK, INVITE, BYE, CANCEL
Content-Type: application/sdp
Server: YATE/3.0.0
Content-Length: 195
v=0
o=yate 1441225325 1441225325 IN IP4 201.201.201.30
s=SIP Call
c=IN IP4 201.201.201.30
t=0 0
m=audio 19305 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
ACK sip:200.200.200.2:5060 SIP/2.0
Via: SIP/2.0/UDP 100.100.100.100
To: +200<sip:[email protected]:5060>;tag=784054843
From: +100<sip:[email protected]:5060>;tag=4244235125227
Call-ID: [email protected]
CSeq: 1 ACK
Max-Forwards: 70
Route: <sip:[email protected]:7654>
Content-Length: 0
BYE sip:[email protected]:5060 SIP/2.0
Via: SIP/2.0/UDP 200.200.200.2:5060;branch=z9hG4bK-524287-1---baf0e608a3be462e3d9534147efb1150;rport
Via: SIP/2.0/UDP 10.10.10.135:7654;rport=7654;branch=z9hG4bK962836463;received=10.10.10.135
Max-Forwards: 69
Record-Route: <sip:200.200.200.2:5060;lr>
To: <sip:[email protected]:5060>;tag=4244235125227
From: <sip:[email protected]:5060>;tag=784054843
Call-ID: [email protected]
CSeq: 95618 BYE
Allow: ACK, INVITE, BYE, CANCEL
User-Agent: YATE/3.0.0
Reason: SIP;cause=408;text="Request Timeout"
Content-Length: 0
SIP/2.0 200 OK
To: <sip:[email protected]:5060>;tag=4244235125227
From: <sip:[email protected]:5060>;tag=784054843
Call-ID: [email protected]
CSeq: 95618 BYE
Record-Route: <sip:200.200.200.2:5060;lr>
Via: SIP/2.0/UDP 200.200.200.2:5060;branch=z9hG4bK-524287-1---baf0e608a3be462e3d9534147efb1150;rport
Via: SIP/2.0/UDP 10.10.10.135:7654;rport=7654;branch=z9hG4bK962836463;received=10.10.10.135
User-Agent: Excel_CSP/84.11.34
Content-Length: 0
IP-адреса и информация SIP TO/FROM были обновлены вручную, чтобы скрыть исходный идентификатор.
Я прошел через RFC 3261 Я нашел следующее на странице # 161. Я не уверен, как читать следующую таблицу. Означает ли это, что заголовок Contact не применим в ACK для сообщений 2xx?
Header field where proxy ACK BYE CAN INV OPT REG
___________________________________________________________
Contact 2xx - - - m o o