добрый день, господа!
Проясните, пожалуйста, ситуацию с использованием SIP-заголовка Contact: в телефоне DPH-120S
Имеется вот такая ситуация, на мой взгляд, неполного соответствия реализации SIP рекомендации RFC-3261.
С телефона DPH-120S (версия софта P160S-DLINK-010013-200610311.azf), через SIP-proxy, поисходит звонок на телефон-2. Ниже приводятся SIP-пакеты, полученные при помощи команды ngrep и отредактированные (чтобы убрать инфорацию, не относящуюся к делу)
Вызов от DPH-120S на прокси:
INVITE sip:user2@domain2:5060 SIP/2.0
From: "User1" <sip:user1@192.168.100.77:5060>;tag=00179A52BC45_T274066640
To: <sip:user2@domain2:5060>
CSeq: 1896037482 INVITE
Contact: <sip:user1@192.168.100.77:5060>
Вызов переправляется на телефон-2:
INVITE sip:user2@domain2:5060 SIP/2.0
From: "User1" <sip:user1@192.168.100.77:5060>;tag=00179A52BC45_T274066640
To: <sip:user2@domain2:5060>
CSeq: 1896037482 INVITE
Contact: <sip:user1@192.168.100.77:5060>
От телефона-2 следует промежуточный ответ:
SIP/2.0 180 Ringing
To: <sip:user2@domain2:5060>;tag=25056775
From: "User1"<sip:user1@192.168.100.77:5060>;tag=00179A52BC45_T274066640
CSeq: 1896037482 INVITE
Contact: <sip:user2@192.168.100.200:5060;param=yes>
а затем финальный:
SIP/2.0 200 OK
To: <sip:user2@domain2:5060>;tag=25056775
From: "User1"<sip:user1@192.168.100.77:5060>;tag=00179A52BC45_T274066640
CSeq: 1896037482 INVITE
Contact: <sip:user2@192.168.100.200:5060;param=yes>
DPH-120S шлет подтверждение:
ACK sip:user2@192.168.100.200:5060 SIP/2.0
To: <sip:user2@domain2:5060>;tag=25056775
From: "User1"<sip:user1@192.168.100.77:5060>;tag=00179A52BC45_T274066640
CSeq: 1896037482 ACK
и вот в этом-то подтверждении и обнаруживается странность: в соответствии с разделом 17 абзац последний документа RFC-3261 -- за генерацию подтверждения для ответов класса 2xx отвечает UAC core. Последнее подчиняется разделу 13 того же документа, а раздел 13 отсылает нас к разделу 12, в котором описаны правила создания диалога.
В подразделе 12.1.2 абзац 4 записано:
"The remote target MUST be set to the URI from the Contact header field of the response."
Таким образом, URI, со всеми параметрами, содержащееся в ответе 200 от телефона-2 к DPH-120S становистя "remote target" для данного диалога.
А в подразделе 12.2.1.1 (абзац 6-8) записано как формируется Request-URI для ACK:
"The UAC uses the remote target and route set to build the Request-URI
and Route header field of the request."
(далее по тексту)
Таким образом, в нашем случае, подтверждение ACK должно выглядеть следующим образом:
ACK sip:user2@192.168.100.200:5060;param=yes SIP/2.0
Замечу, что проблема имено в подтверждении ACK, потому что, например BYE для данного диалога выглядит корректно:
BYE sip:user2@192.168.100.200:5060;param=yes SIP/2.0
Собственно вопрос в следующем: это моя неверная трактовка RFC-3261 или фича DPH-120S? Если последнее, то что нужно сделать для запуска процесса устранения этой фичи?
Заранее спасибо!
--
С уважением,
Гамов Виктор
|