2016-08-26 1062 views
0

我想创建一个Sip代理服务器。我已经实现了基本呼叫流程的呼叫设置,但之后,当我想发送一些消息,如信息更新或再见sio UA回复481错误。我正在使用Linphone作为我的UA.Also我想知道是否有任何其他方式告诉Sip UA发送帧内帧。以下是从Wireshark的转储,请帮助我在这个问题....提前任何SIP客户端回复481交易不存在错误信息消息

INVITE sip:[email protected]:5062 SIP/2.0 
Via: SIP/2.0/UDP 192.168.0.106:5060;branch=z9hG4bK.BCislbG05;rport 
From: <sip:[email protected]>;tag=ib-gWexLD 
To: sip:[email protected] 
CSeq: 20 INVITE 
Call-ID: BSEs~ww7v8 
Max-Forwards: 70 
Supported: replaces, outbound 
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO 
Content-Type: application/sdp 
Content-Length: 212 
Contact: <sip:[email protected]:5062>;+sip.instance="<urn:uuid:2cc4cd7f-6bc9-436c-a83e-cd5fd1ab7647>" 
User-Agent: Linphone/3.7.0 (belle-sip/1.3.0) 

v=0 
o=clary 68 1084 IN IP4 192.168.0.106 
s=Talk 
c=IN IP4 192.168.0.106 
t=0 0 
m=audio 7690 RTP/AVP 0 101 
a=rtpmap:101 telephone-event/8000 
a=fmtp:101 0-15 
m=video 4790 RTP/AVP 103 
a=rtpmap:103 VP8/90000 


SIP/2.0 100 Trying 
Via: SIP/2.0/UDP 192.168.0.50:5062;rport=5062;branch=z9hG4bK.BCislbG05 
From: <sip:[email protected]:5062>;tag=ib-gWexLD 
To: <sip:[email protected]>;tag=122vaclar 
Call-ID: BSEs~ww7v8 
CSeq: 20 INVITE 
Contact: <sip:[email protected]:5062;transport=UDP>;+sip.instance="<urn:uuid:9e176788-7cef-408f-bae9-8733ffa2451b>";expires=3600 
User-Agent: Test Sip Server 
Allow: INVITE, ACK, BYE, CANCEL, INFO,OPTIONS, MESSAGE,UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE 
Supported: timer, path, replaces 
Content-Length: 0 


SIP/2.0 180 Ringing 
Via: SIP/2.0/UDP 192.168.0.50:5062;rport=5062;branch=z9hG4bK.BCislbG05 
To: <sip:[email protected]>;tag=122vaclar 
From: <sip:[email protected]:5062>;tag=ib-gWexLD 
Call-ID: BSEs~ww7v8 
CSeq: 20 INVITE 
User-Agent: Test Sip Server 
Content-Length: 0 


SIP/2.0 200 Ok 
Via: SIP/2.0/UDP 192.168.0.50:5062;rport=5062;branch=z9hG4bK.BCislbG05 
From: <sip:[email protected]:5062>;tag=ib-gWexLD 
To: <sip:[email protected]>;tag=122vaclar 
Call-ID: BSEs~ww7v8 
CSeq: 20 INVITE 
User-Agent: Test Sip Server 
Supported: outbound 
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE,UPDATE 
Contact: <sip:[email protected]:5062;transport=UDP>;+sip.instance="<urn:uuid:9e176788-7cef-408f-bae9-8733ffa2451b>" 
Content-Type: application/sdp 
Content-Length: 282 

v=0 
o=claryicon 1983 678901 IN IP4 192.168.0.50 
s=- 
i=Test sip Server 
c=IN IP4 192.168.0.50 
t=0 0 
m=audio 21483 RTP/AVP 0 
a=sendrecv 
a=rtcp:21483 
a=rtpmap:0 PCMU/8000 
m=video 21483 RTP/AVP 96 
a=sendrecv 
a=rtcp:21483 
a=rtpmap:96 VP8/90000 
a=rtcp-fb:96 nack pli 


ACK sip:[email protected]:5062;transport=UDP SIP/2.0 
Via: SIP/2.0/UDP 192.168.0.106:5060;rport;branch=z9hG4bK.MpKbnK6Bm 
From: <sip:[email protected]>;tag=ib-gWexLD 
To: <sip:[email protected]>;tag=122vaclar 
CSeq: 20 ACK 
Call-ID: BSEs~ww7v8 
Max-Forwards: 70 





INFO sip:[email protected];transport=UDP SIP/2.0 
Via: SIP/2.0/UDP 192.168.0.50:5062;branch=z9hG4bK.BCislbG05;rport 
To: <sip:[email protected]>;tag=122vaclar 
From: <sip:[email protected]>;tag=ib-gWexLD 
CSeq: 22 INFO 
Call-ID: BSEs~ww7v8 
Max-Forwards: 70 
Content-Type: application/media_control+xml 
Content-Length: 185 
User-Agent: Test Sip Server 
Allow: INVITE, ACK, BYE, CANCEL, INFO,OPTIONS, MESSAGE,UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE 
Supported: timer, path, replaces 

<?xml version="1.0" encoding="utf-8" ?><media_control> <vc_primitive> <to_encoder>  <picture_fast_update></picture_fast_update> </to_encoder> </vc_primitive></media_control> 


SIP/2.0 481 Call/transaction does not exist 
Via: SIP/2.0/UDP 192.168.0.50:5062;branch=z9hG4bK.BCislbG05;rport 
From: <sip:[email protected]>;tag=ib-gWexLD 
To: <sip:[email protected]>;tag=122vaclar 
Call-ID: BSEs~ww7v8 
CSeq: 22 INFO 

由于将被罚款....

回答

1

你真的应该对SIP交易的主体念起来对话框。

要标识对话,SIP UA使用Callid值,本地标记和远程标记。当发送请求时,本地标签会进入from头和to头中的远程标签(初始消息中为空)。

对于接收请求的UA,本地标签位于To标头中,而远程标签位于From标头中。

因此,在你的情况下,Linphone试图将INFO请求与'122vaclar'本地标签和'ib-gWexLD'的远程标签进行匹配,但该对话框不存在,因为对话框最初创建了一个本地标签'ib-gWexLD'。

在您的回复中,您也不符合from和tag中的URI。

此外,您正在重新使用INFO请求中的分支值。这是一个事务ID,不应该重复使用。

+0

感谢您的帮助。它的工作原理,我也会读对话和标签如何在SIP呼叫工作。再次感谢您指出:) –

0

请检查初始INVITE和INFO中Via头的内容:地址和端口的组合不同(Via:SIP/2.0/UDP 192.168.0.106:5060和Via:SIP/2.0/UDP 192.168.0.50:5062分别)。

当SIP服务器在内部创建对话时,它使用实际值。鉴于此,您的SIP代理将从不同地址和端口接收到的后续INFO请求视为对话外的内容,并拒绝它。