Use cipango as the webrtc signaling server

142 views
Skip to first unread message

Mirror Xu

unread,
Jun 28, 2013, 9:37:06 PM6/28/13
to cipan...@googlegroups.com
Hello,
 
Forgive my poor English.
I am trying to use cipango as the webrtc signaling server(sip over websocket),my webrtc client is jssip which support sip over websocket too.
When I use the sip over websocket function of cipango, I have a problem about the route of sip messages.
First, I can register successful.Then, jssip send an INVITE message to cipango, cipango return a 200OK. Next, the client send a ACK and cipango cannot get the ACK message. In my opinion, It's beacause the websocket connector did not route the ack message to the sip servlet.
Has anyone test the cipango with webrtc client before? I need your help.
 
Thanks in advance.
Mirror

pierrick grasland

unread,
Jul 1, 2013, 8:13:04 AM7/1/13
to cipan...@googlegroups.com
Hello,

We were able to use Cipango 3.0.0.M1 with JsSIP, using the websocket connector.

Main problem encountered during the implementation was due to routing (as you have encountered). Js SIP use the following contact format :

Contact: <sip:ohen...@a4lb49uu74er.invalid;transport=ws>;reg-id=1;+sip.instance="<urn:uuid:a38dc777-6caf-457e-b920-fe9cb4be02a0>";expires=300
Cipango will be able to route the REGISTER and its 200 OK, but any subsequent requests will not be routable to the correct websocket client (the contact is invalid).
This comportement is specified on Sip Over Websocket draft, appendix B.1 ( http://tools.ietf.org/html/draft-ietf-sipcore-sip-websocket-09#appendix-B.1 ).

Appendix B of the draft also propose a guideline implementation, with the following elements :
- an Outbound Edge Proxy (described here : http://tools.ietf.org/html/rfc5626#section-5 )
- a registrar, supporting PATH.

Our implementation mimic these elements in order to follow this call flow :


Alice    (SIP WS)            cipango    (SIP UDP)           Registrar       (SIP UDP)     cipango         (SIP WS)       Bob        
   |                             |                             |                             |                             |
   |REGISTER [1]                 |                             |                             |                             |
   |---------------------------->| REGISTER [2]                |                             |                             |
   |                             |---------------------------->|                             |                             |
   |                             | 200 OK                      |                             |                             |
|200 OK [3] |<----------------------------| | |
|<----------------------------| | | |
| | | |REGISTER [1] |
| | | REGISTER [2] |<----------------------------|
| | |<----------------------------| |
| | | 200 OK | |
| | |---------------------------->|200 OK [3] |
|INVITE [4] | | |---------------------------->|
|---------------------------->|INVITE [5] | | |
| |---------------------------->|INVITE [6] | |
  | | |---------------------------->|INVITE [7] | | | | |---------------------------->| | | | |200 OK | | |200 OK | |<----------------------------| |200 OK |<----------------------------------------------------------| | |<----------------------------| | | | |ACK [8] | | | | |---------------------------->| |ACK [9] | | | |---------------------------------------------------------->|ACK [10] | | | | |---------------------------->| | | | | | | | | | | | Bidirectional RTP Media | |<=====================================================================================================================>| | | | |BYE | | |BYE | |<----------------------------| |BYE |<----------------------------------------------------------| | |<----------------------------| | | | | 200 OK | | | | |---------------------------->| |200 OK | | | |---------------------------------------------------------->| | | | | |200 OK | | | | |---------------------------->| | | | | |
Registration :

[1] Initial REGISTER. Contact is invalid.
[2] Modified REGISTER. Contact now target our cipango proxy. By doing this, we work around the need to support PATH in our registrar. Cipango proxy must save the correct transport informations for our websocket user (by using request.getRemoteHost() and request.getRemotePort() ). We do this with a contact parameter.
[3] REGISTER's 200 OK contact is also modified, in order to set the contact to a valid value for our user (by reusing initial contact value or by passing websocket host / port value).


INVITE :

[4] Initial INVITE
[5] Our proxy is set as RECORD-ROUTE, and is task to manage the flow by adding a token (we are doing this by adding parameters to our record route uri).
[6] The registrar retreive our contact information, and send the request to the proxy (callee is another websocket user).
[7] The proxy again set a RECORD-ROUTE (Because Cipango use dual routing, our outgoing message will now have 4 record route at this point). From the request URI, cipango detect that our call must go to a websocket client, and will proxying it to the callee.

200 OK (and provisionnal responses) :

Cipango will correctly route all responses to a request.

ACK :

[8] JS SIP will generate an ACK with 4 routes.
[9] On the outgoing branch, our proxy must ignore the token used to mark this message as using websocket.
[10] On the incoming branch, we will retreive the token and correctly proxy the request to its final recipient.

BYE :

BYE handling is similar to ACK handling. The proxy will find the final recipient by using the correct token in the route parameters.

I hope that this will help you. Also, don't forget that Websocket as a 5 minutes timeout, and that you will need to set your REGISTER expire time to 300s in JS SIP (else, you will loose your websocket connection).

Regards,


2013/6/29 Mirror Xu <xumin...@huawei.com>

--
You received this message because you are subscribed to the Google Groups "cipango-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cipango-dev...@googlegroups.com.
To post to this group, send email to cipan...@googlegroups.com.
Visit this group at http://groups.google.com/group/cipango-dev.
For more options, visit https://groups.google.com/groups/opt_out.

--
Pierrick Grasland



Mirror Xu

unread,
Jul 2, 2013, 10:16:37 PM7/2/13
to cipan...@googlegroups.com, pierrick...@nexcom.fr
Hello grasland,

Thanks very very much for give me reply.

In your call flow, cipango and registar exchanges sip message using udp? 

In your call flow, I can see cipango is using as a proxy server. But in my call flow, cipango is using as a B2BUA server.The below is my call flow:(registar is implement in the Cipango as internal program which save the webrtc client's contact address. Same with you, I use the result of request.getRemoteHost(),and getRemotePort() to set as the client's contact address since the contact hearder in the REGISTER is invalid)

    A        (WS)    Cipango      (WS)      B
     |(1) INVITE          |                          |
     |----------------------->|                          |
     |                         |(2) INVITE           |
     |                         |------------------------>|
     |                         |(3) 200 OK          |
     |                         |<------------------------|   
     |(4) 200 OK         |                          |
     |<-----------------------|                          |
     |(5) ACK             |                          |
     |----------------------->|
     |                         |(6) ACK              |
     |                         |----------------------->|
     |(7) RTP              |                         |
     |...................................................|
     | (8) BYE            |                          |
     |----------------------->|(9) BYE              |
     |                         |------------------------>|
     |                         |(10) 200/BYE      |
     |                         |<------------------------|
     |(11) 200/BYE      |                         |
     |<-----------------------|                          |
     |                         |                          |

[1] [2][3][4] is all ok. But in [5] when JSSIP send ACK, I can see the cipango have print the log that it has recv the ack message, but my sip servlet procedure can't got the message by doRequest() or doAck().
After test many times,It is the reason that the request uri of ACK which is the contact hearder of the previous 200OK is not approved by the cipango, so cipango don't report the ack message to the my sip servlet procedure. When I change the request uri of ack to specified value, the cipango can report the ack message to my sip servlet procedure.

Since JSSIP is follow of the RFC3261... (The request uri of ACK is the contact address of the pre response message), so I want to know whether cipango support B2BUA model?
And, is there any problem with my call flow where cipango act as a b2bua?

Thanks much again.
Mirror

在 2013年7月1日星期一UTC+8下午8时13分04秒,pierrick grasland写道:
Hello,

We were able to use Cipango 3.0.0.M1 with JsSIP, using the websocket connector.

Main problem encountered during the implementation was due to routing (as you have encountered). Js SIP use the following contact format :

Contact: <sip:ohen27ab@a4lb49uu74er.invalid;transport=ws>;reg-id=1;+sip.instance="<urn:uuid:a38dc777-6caf-457e-b920-fe9cb4be02a0>";expires=300

pierrick grasland

unread,
Jul 3, 2013, 4:08:18 AM7/3/13
to Mirror Xu, cipan...@googlegroups.com
Hello,

Can you please link the cipango logs ?

I can't confirm it without the logs, but it seems that your proxy is not set as record route (using proxy.setRecordRoute(true) );

Your call flow in this case will be something like this :


  A        (WS)    Cipango      (WS)      B
     |(1) INVITE          |                          |
     |----------------------->|                          |
     |                         |(2) INVITE           |
     |                         |------------------------>|
     |                         |(3) 200 OK          |
     |                         |<------------------------|   
     |(4) 200 OK         |                          |
     |<-----------------------|                          |
     |(5) ACK             |                          |
     |------------------------------------------------->|

If you are in the ACK's route, you will able to get the ACK in your servlet using doRequest or doAck.

An ACK from JS SIP will have the following request URI :

ACK sip:mrng...@2526sa8aromi.invalid;transport=ws SIP/2.0

If you are not record route, Cipango will try to forward it to JS SIP, which can't be done (the request URI is invalid).

By using record-route, your servlet will be invoked on all subsequent request, which will allow you to set a correct request URI for your websocket client :

ACK sip:mrng...@192.168.2.119:49345;transport=ws SIP/2.0


You can do this by creating a SIP proxy or a SIP B2BUA. Cipango can easily do both, You can find example here for both case:

https://github.com/cipango/cipango/tree/master/tests/load-sipapp/src/main/java/org/cipango/test

Regards,

2013/7/3 Mirror Xu <xumin...@huawei.com>



--
Pierrick Grasland

Mirror Xu

unread,
Jul 3, 2013, 9:43:53 AM7/3/13
to cipan...@googlegroups.com, Mirror Xu, pierrick...@nexcom.fr
Hello,

thanks very much for your reply.

In my call flow, cipango is not a proxy server but a b2bua server, A and cipango is a sip session, B and cipango is another sip session. So I think I should not use the proxy.setRecordRoute(true), right?

I refered to the b2bua demo provided by the cipango too.

The attachment below is my cipango logs. (user a is the caller, and b is the callee)

And the question now is: When cipango recv a 200OK from the callee b,then it use the request.createResponse(200) to create a 200OK response to caller a. The contact of the 200OK response to a is the cipango's sip uri (cipango server ip, server port). After the caller a recv the 200OK, it generate an ACK message, the request -uri of the ack is the contact address of the pre 200OK(cipango server ip, server port).

Refer to the sip RFC, I think these are all correct. But my sip servlet code(doRequest) can't listen to the recv of this ACK message. In the cipango logs,it had printed the ack message, so I think it was the sip stack who ignored and abandoned the message. Since the sip stact didn't accept the ack message, then it keeped sending the 200OK to the caller a.

Have you ever test the cipango with two webrtc clients, in the B2BUA model?

Below attachment is my cipango logs, cipango was acted as a b2bua server between caller a , and callee b.

I don't know whether it is the problem of my computer, I can't add a file in this reply, so I can only paste my cipango logs as the below text:

======================================================================================================
2013-07-02 22:09:30 IN  WS /10.166.41.126:18080 < /10.166.41.126:46877

REGISTER sip:10.166.41.126:18080 SIP/2.0
Allow: ACK, CANCEL, BYE, OPTIONS, INVITE
Call-ID: og3it7uf6nqgn18ntj3quv
Contact: <sip:fd43...@luk4a3al5kar.invalid;transport=ws>;reg-id=1;+sip.instance="<urn:uuid:9720f561-9339-4905-93c0-1ec5029a879b>";expires=600
Content-Length: 0
CSeq: 81 REGISTER
From: <sip:a...@10.166.41.126:18080>;tag=stba6p1dqd
Max-Forwards: 69
Route: <sip:10.166.41.126:18080;transport=ws;lr>
Supported: path, outbound, gruu
User-Agent: JsSIP 0.3.0
Via: SIP/2.0/WS luk4a3al5kar.invalid;branch=z9hG4bK9796433


2013-07-02 22:09:30 OUT WS /10.166.41.126:18080 > /10.166.41.126:46877

SIP/2.0 200 OK
Call-ID: og3it7uf6nqgn18ntj3quv
Contact: <sip:fd43...@luk4a3al5kar.invalid;transport=ws>;reg-id=1;+sip.instance="<urn:uuid:9720f561-9339-4905-93c0-1ec5029a879b>";expires=600;pub-gruu="sip:a...@10.166.41.126:18080;gr=urn:uuid:9720f561-9339-4905-93c0-1ec5029a879b"
;temp-gruu="sip:a...@10.166.41.126:18080;gr"
;expires=3600
CSeq: 81 REGISTER
From: <sip:a...@10.166.41.126:18080>;tag=stba6p1dqd
To: <sip:a...@10.166.41.126:18080>;tag=1Y6.3oR5pAautUF-bEFU7
Via: SIP/2.0/WS luk4a3al5kar.invalid;branch=z9hG4bK9796433;received=10.166.41.126
Content-Length: 0


2013-07-02 22:09:32 IN  WS /10.166.41.126:18080 < /10.166.41.126:46879

REGISTER sip:10.166.41.126:18080 SIP/2.0
Allow: ACK, CANCEL, BYE, OPTIONS, INVITE
Call-ID: v0fvin3ou0ip28u3j88nqo
Contact: <sip:9qk6...@7m0e529frbnl.invalid;transport=ws>;reg-id=1;+sip.instance="<urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e>";expires=600
Content-Length: 0
CSeq: 81 REGISTER
From: <sip:b...@10.166.41.126:18080>;tag=95di90h446
Max-Forwards: 69
Route: <sip:10.166.41.126:18080;transport=ws;lr>
Supported: path, outbound, gruu
User-Agent: JsSIP 0.3.0
Via: SIP/2.0/WS 7m0e529frbnl.invalid;branch=z9hG4bK621975


2013-07-02 22:09:32 OUT WS /10.166.41.126:18080 > /10.166.41.126:46879

SIP/2.0 200 OK
Call-ID: v0fvin3ou0ip28u3j88nqo
Contact: <sip:9qk6...@7m0e529frbnl.invalid;transport=ws>;reg-id=1;+sip.instance="<urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e>";expires=600;pub-gruu="sip:b...@10.166.41.126:18080;gr=urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e"
;temp-gruu="sip:b...@10.166.41.126:18080;gr"
;expires=3600
CSeq: 81 REGISTER
From: <sip:b...@10.166.41.126:18080>;tag=95di90h446
To: <sip:b...@10.166.41.126:18080>;tag=1Y6.3iBXnnWSDsD-17lBms
Via: SIP/2.0/WS 7m0e529frbnl.invalid;branch=z9hG4bK621975;received=10.166.41.126
Content-Length: 0


2013-07-02 22:09:46 IN  WS /10.166.41.126:18080 < /10.166.41.126:46877

Allow: ACK, CANCEL, BYE, OPTIONS, INVITE
Call-ID: 49q3vik5243l5758cq8u
Contact: <sip:a...@10.166.41.126:18080;gr=urn:uuid:9720f561-9339-4905-93c0-1ec5029a879b;ob>
Content-Length: 1489
Content-Type: application/sdp
CSeq: 6778 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=99mcpgmnr4
Max-Forwards: 69
Route: <sip:10.166.41.126:18080;transport=ws;lr>
Supported: path, outbound, gruu
User-Agent: JsSIP 0.3.0
Via: SIP/2.0/WS luk4a3al5kar.invalid;branch=z9hG4bK3280942

v=0
o=- 223673127 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS yK4A8hFH44whvr1nz4ZzpWxUOG2ENqdFZ2g0
m=audio 49380 RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
c=IN IP4 10.166.41.126
a=rtcp:49380 IN IP4 10.166.41.126
a=candidate:579493354 1 udp 2113937151 10.166.41.126 49380 typ host generation 0
a=candidate:579493354 2 udp 2113937151 10.166.41.126 49380 typ host generation 0
a=candidate:1812570394 1 tcp 1509957375 10.166.41.126 46881 typ host generation 0
a=candidate:1812570394 2 tcp 1509957375 10.166.41.126 46881 typ host generation 0
a=ice-ufrag:vrsZ8UYTgcQdId3R
a=ice-pwd:COAwdY1IFzlu7ITpU2uawFxI
a=ice-options:google-ice
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=mid:audio
a=rtcp-mux
a=crypto:0 AES_CM_128_HMAC_SHA1_32 inline:I/lurQ0U/0EifLrEu5gIgHsl59jSUfP86MpHCZuI
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:iWtls1qQxVw97pOE+Lk/qJkbOHNlUYPpY3wusa4C
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:107 CN/48000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:2891400832 cname:t74hX0aOD4Wr1Hfz
a=ssrc:2891400832 msid:yK4A8hFH44whvr1nz4ZzpWxUOG2ENqdFZ2g0 yK4A8hFH44whvr1nz4ZzpWxUOG2ENqdFZ2g0a0
a=ssrc:2891400832 mslabel:yK4A8hFH44whvr1nz4ZzpWxUOG2ENqdFZ2g0
a=ssrc:2891400832 label:yK4A8hFH44whvr1nz4ZzpWxUOG2ENqdFZ2g0a0

2013-07-02 22:09:46 OUT WS /10.166.41.126:18080 > /10.166.41.126:46877

SIP/2.0 100 Trying
Call-ID: 49q3vik5243l5758cq8u
CSeq: 6778 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=99mcpgmnr4
Via: SIP/2.0/WS luk4a3al5kar.invalid;branch=z9hG4bK3280942;received=10.166.41.126
Content-Length: 0


2013-07-02 22:09:46 OUT WS /10.166.41.126:18080 > /10.166.41.126:46879

INVITE sip:b...@10.166.41.126:46879;transport=ws SIP/2.0
Allow: ACK, CANCEL, BYE, OPTIONS, INVITE
Call-ID: SKbrnhG37M@X00197827
Contact: <sip:10.166.41.126:18080;transport=ws;appid=1Y6.3QLKKpBiTxI>
Content-Length: 1489
Content-Type: application/sdp
CSeq: 1 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-jp2jb
Max-Forwards: 70
Supported: path, outbound, gruu
User-Agent: JsSIP 0.3.0
Via: SIP/2.0/WS 10.166.41.126:18080;branch=z9hG4bK3FdgXrOn6iY

v=0
o=- 223673127 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS yK4A8hFH44whvr1nz4ZzpWxUOG2ENqdFZ2g0
m=audio 49380 RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
c=IN IP4 10.166.41.126
a=rtcp:49380 IN IP4 10.166.41.126
a=candidate:579493354 1 udp 2113937151 10.166.41.126 49380 typ host generation 0
a=candidate:579493354 2 udp 2113937151 10.166.41.126 49380 typ host generation 0
a=candidate:1812570394 1 tcp 1509957375 10.166.41.126 46881 typ host generation 0
a=candidate:1812570394 2 tcp 1509957375 10.166.41.126 46881 typ host generation 0
a=ice-ufrag:vrsZ8UYTgcQdId3R
a=ice-pwd:COAwdY1IFzlu7ITpU2uawFxI
a=ice-options:google-ice
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=mid:audio
a=rtcp-mux
a=crypto:0 AES_CM_128_HMAC_SHA1_32 inline:I/lurQ0U/0EifLrEu5gIgHsl59jSUfP86MpHCZuI
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:iWtls1qQxVw97pOE+Lk/qJkbOHNlUYPpY3wusa4C
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:107 CN/48000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:2891400832 cname:t74hX0aOD4Wr1Hfz
a=ssrc:2891400832 msid:yK4A8hFH44whvr1nz4ZzpWxUOG2ENqdFZ2g0 yK4A8hFH44whvr1nz4ZzpWxUOG2ENqdFZ2g0a0
a=ssrc:2891400832 mslabel:yK4A8hFH44whvr1nz4ZzpWxUOG2ENqdFZ2g0
a=ssrc:2891400832 label:yK4A8hFH44whvr1nz4ZzpWxUOG2ENqdFZ2g0a0

2013-07-02 22:09:46 IN  WS /10.166.41.126:18080 < /10.166.41.126:46879

SIP/2.0 100 Trying
Call-ID: SKbrnhG37M@X00197827
Content-Length: 0
CSeq: 1 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-jp2jb
To: <sip:b...@10.166.41.126:18080>;tag=o9si88kb8p
Via: SIP/2.0/WS 10.166.41.126:18080;branch=z9hG4bK3FdgXrOn6iY


2013-07-02 22:09:46 IN  WS /10.166.41.126:18080 < /10.166.41.126:46879

SIP/2.0 180 Ringing
Call-ID: SKbrnhG37M@X00197827
Contact: <sip:b...@10.166.41.126:18080;gr=urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e>
Content-Length: 0
CSeq: 1 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-jp2jb
To: <sip:b...@10.166.41.126:18080>;tag=u143pill29
Via: SIP/2.0/WS 10.166.41.126:18080;branch=z9hG4bK3FdgXrOn6iY


2013-07-02 22:09:46 OUT WS /10.166.41.126:18080 > /10.166.41.126:46877

SIP/2.0 180 Ringing
Call-ID: 49q3vik5243l5758cq8u
Contact: <sip:10.166.41.126:18080;transport=ws;appid=1Y6.3QLKKpBiTxI>
CSeq: 6778 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=99mcpgmnr4
To: <sip:b...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-29OO8B
Via: SIP/2.0/WS luk4a3al5kar.invalid;branch=z9hG4bK3280942;received=10.166.41.126
Content-Length: 0


2013-07-02 22:09:58 IN  WS /10.166.41.126:18080 < /10.166.41.126:46879

SIP/2.0 200 OK
Call-ID: SKbrnhG37M@X00197827
Contact: <sip:b...@10.166.41.126:18080;gr=urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e>
Content-Length: 1204
Content-Type: application/sdp
CSeq: 1 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-jp2jb
To: <sip:b...@10.166.41.126:18080>;tag=u143pill29
Via: SIP/2.0/WS 10.166.41.126:18080;branch=z9hG4bK3FdgXrOn6iY

v=0
o=- 922188810 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
m=audio 49381 RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
c=IN IP4 10.166.41.126
a=rtcp:1 IN IP4 0.0.0.0
a=candidate:579493354 1 udp 2113937151 10.166.41.126 49381 typ host generation 0
a=candidate:1812570394 1 tcp 1509957375 10.166.41.126 46883 typ host generation 0
a=ice-ufrag:kQkzZbKEnxfZZ3P+
a=ice-pwd:LQWkAPtsI7kv/n97SkHHg2VF
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=mid:audio
a=rtcp-mux
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:T0BktPPPF/Z1U/xeoLYp9zCSKJxYcrdnw61hytJq
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:107 CN/48000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:2537349872 cname:75s6CFROemL9dl9v
a=ssrc:2537349872 msid:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0
a=ssrc:2537349872 mslabel:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
a=ssrc:2537349872 label:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0

2013-07-02 22:09:58 OUT WS /10.166.41.126:18080 > /10.166.41.126:46877

SIP/2.0 200 OK
Call-ID: 49q3vik5243l5758cq8u
Contact: <sip:10.166.41.126:18080;transport=ws;appid=1Y6.3QLKKpBiTxI>
Content-Length: 1204
Content-Type: application/sdp
CSeq: 6778 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=99mcpgmnr4
To: <sip:b...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-29OO8B
Via: SIP/2.0/WS luk4a3al5kar.invalid;branch=z9hG4bK3280942;received=10.166.41.126

v=0
o=- 922188810 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
m=audio 49381 RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
c=IN IP4 10.166.41.126
a=rtcp:1 IN IP4 0.0.0.0
a=candidate:579493354 1 udp 2113937151 10.166.41.126 49381 typ host generation 0
a=candidate:1812570394 1 tcp 1509957375 10.166.41.126 46883 typ host generation 0
a=ice-ufrag:kQkzZbKEnxfZZ3P+
a=ice-pwd:LQWkAPtsI7kv/n97SkHHg2VF
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=mid:audio
a=rtcp-mux
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:T0BktPPPF/Z1U/xeoLYp9zCSKJxYcrdnw61hytJq
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:107 CN/48000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:2537349872 cname:75s6CFROemL9dl9v
a=ssrc:2537349872 msid:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0
a=ssrc:2537349872 mslabel:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
a=ssrc:2537349872 label:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0

2013-07-02 22:09:58 IN  WS /10.166.41.126:18080 < /10.166.41.126:46877

ACK sip:10.166.41.126:18080;transport=ws;appid=1y6.3qlkkpbitxi SIP/2.0
Call-ID: 49q3vik5243l5758cq8u
Content-Length: 0
CSeq: 6778 ACK
From: <sip:a...@10.166.41.126:18080>;tag=99mcpgmnr4
Max-Forwards: 69
Supported: path, outbound, gruu
To: <sip:b...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-29OO8B
User-Agent: JsSIP 0.3.0
Via: SIP/2.0/WS luk4a3al5kar.invalid;branch=z9hG4bK7912608


2013-07-02 22:09:59 IN  WS /10.166.41.126:18080 < /10.166.41.126:46879

SIP/2.0 200 OK
Call-ID: SKbrnhG37M@X00197827
Contact: <sip:b...@10.166.41.126:18080;gr=urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e>
Content-Length: 1204
Content-Type: application/sdp
CSeq: 1 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-jp2jb
To: <sip:b...@10.166.41.126:18080>;tag=u143pill29
Via: SIP/2.0/WS 10.166.41.126:18080;branch=z9hG4bK3FdgXrOn6iY

v=0
o=- 922188810 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
m=audio 49381 RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
c=IN IP4 10.166.41.126
a=rtcp:1 IN IP4 0.0.0.0
a=candidate:579493354 1 udp 2113937151 10.166.41.126 49381 typ host generation 0
a=candidate:1812570394 1 tcp 1509957375 10.166.41.126 46883 typ host generation 0
a=ice-ufrag:kQkzZbKEnxfZZ3P+
a=ice-pwd:LQWkAPtsI7kv/n97SkHHg2VF
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=mid:audio
a=rtcp-mux
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:T0BktPPPF/Z1U/xeoLYp9zCSKJxYcrdnw61hytJq
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:107 CN/48000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:2537349872 cname:75s6CFROemL9dl9v
a=ssrc:2537349872 msid:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0
a=ssrc:2537349872 mslabel:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
a=ssrc:2537349872 label:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0

2013-07-02 22:09:59 IN  WS /10.166.41.126:18080 < /10.166.41.126:46879

SIP/2.0 200 OK
Call-ID: SKbrnhG37M@X00197827
Contact: <sip:b...@10.166.41.126:18080;gr=urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e>
Content-Length: 1204
Content-Type: application/sdp
CSeq: 1 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-jp2jb
To: <sip:b...@10.166.41.126:18080>;tag=u143pill29
Via: SIP/2.0/WS 10.166.41.126:18080;branch=z9hG4bK3FdgXrOn6iY

v=0
o=- 922188810 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
m=audio 49381 RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
c=IN IP4 10.166.41.126
a=rtcp:1 IN IP4 0.0.0.0
a=candidate:579493354 1 udp 2113937151 10.166.41.126 49381 typ host generation 0
a=candidate:1812570394 1 tcp 1509957375 10.166.41.126 46883 typ host generation 0
a=ice-ufrag:kQkzZbKEnxfZZ3P+
a=ice-pwd:LQWkAPtsI7kv/n97SkHHg2VF
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=mid:audio
a=rtcp-mux
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:T0BktPPPF/Z1U/xeoLYp9zCSKJxYcrdnw61hytJq
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:107 CN/48000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:2537349872 cname:75s6CFROemL9dl9v
a=ssrc:2537349872 msid:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0
a=ssrc:2537349872 mslabel:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
a=ssrc:2537349872 label:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0

2013-07-02 22:09:59 IN  WS /10.166.41.126:18080 < /10.166.41.126:46879

SIP/2.0 200 OK
Call-ID: SKbrnhG37M@X00197827
Contact: <sip:b...@10.166.41.126:18080;gr=urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e>
Content-Length: 1204
Content-Type: application/sdp
CSeq: 1 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-jp2jb
To: <sip:b...@10.166.41.126:18080>;tag=u143pill29
Via: SIP/2.0/WS 10.166.41.126:18080;branch=z9hG4bK3FdgXrOn6iY

v=0
o=- 922188810 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
m=audio 49381 RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
c=IN IP4 10.166.41.126
a=rtcp:1 IN IP4 0.0.0.0
a=candidate:579493354 1 udp 2113937151 10.166.41.126 49381 typ host generation 0
a=candidate:1812570394 1 tcp 1509957375 10.166.41.126 46883 typ host generation 0
a=ice-ufrag:kQkzZbKEnxfZZ3P+
a=ice-pwd:LQWkAPtsI7kv/n97SkHHg2VF
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=mid:audio
a=rtcp-mux
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:T0BktPPPF/Z1U/xeoLYp9zCSKJxYcrdnw61hytJq
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:107 CN/48000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:2537349872 cname:75s6CFROemL9dl9v
a=ssrc:2537349872 msid:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0
a=ssrc:2537349872 mslabel:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
a=ssrc:2537349872 label:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0

2013-07-02 22:09:59 OUT WS /10.166.41.126:18080 > /10.166.41.126:46877

SIP/2.0 200 OK
Call-ID: 49q3vik5243l5758cq8u
Contact: <sip:10.166.41.126:18080;transport=ws;appid=1Y6.3QLKKpBiTxI>
Content-Length: 1204
Content-Type: application/sdp
CSeq: 6778 INVITE
From: <sip:a...@10.166.41.126:18080>;tag=99mcpgmnr4
To: <sip:b...@10.166.41.126:18080>;tag=1Y6.3QLKKpBiTxI-29OO8B
Via: SIP/2.0/WS luk4a3al5kar.invalid;branch=z9hG4bK3280942;received=10.166.41.126

v=0
o=- 922188810 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
m=audio 49381 RTP/SAVPF 111 103 104 0 8 107 106 105 13 126
c=IN IP4 10.166.41.126
a=rtcp:1 IN IP4 0.0.0.0
a=candidate:579493354 1 udp 2113937151 10.166.41.126 49381 typ host generation 0
a=candidate:1812570394 1 tcp 1509957375 10.166.41.126 46883 typ host generation 0
a=ice-ufrag:kQkzZbKEnxfZZ3P+
a=ice-pwd:LQWkAPtsI7kv/n97SkHHg2VF
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=mid:audio
a=rtcp-mux
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:T0BktPPPF/Z1U/xeoLYp9zCSKJxYcrdnw61hytJq
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:107 CN/48000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:2537349872 cname:75s6CFROemL9dl9v
a=ssrc:2537349872 msid:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0
a=ssrc:2537349872 mslabel:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWK
a=ssrc:2537349872 label:P2pkXPP49GqHldQfnhcbBlEyr1c1VpZMRhWKa0

==========================================================================================================




Thanks you very much for your help and your reply will be appreciated.

Regards.

Mirror

Nicolas Trangosi

unread,
Jul 3, 2013, 10:07:02 AM7/3/13
to cipan...@googlegroups.com
Hi Mirror,
I think that the reason is that the request-URI in ACK is not exactly the URI in Contact set in 200/INVITE:
URI is
and contact:
As the parameter "appid" is case sensitive, Cipango is not able to find the session.
According to RFC 3261 § 19.1.4, it seems to be a bug in Cipango. If you want a correction, please open a new issue on http://jira.cipango.org

Kind regards,
Nicolas

Mirror Xu

unread,
Jul 4, 2013, 3:11:57 AM7/4/13
to cipan...@googlegroups.com, nicolas....@nexcom.fr
Hello Nicolas,

Thanks for your reply.

It is relly the reason you said. After keeping the case of the appid value of ack request-uri same to the contact header of pre 200OK, all is normal.  You really helped me greatly!

And I have read the rfc3261, I think it is already a bug of cipango, I will open a new issue later.

Thanks again for your help, and pierrick grasland,too

Regards,
Mirror


在 2013年7月3日星期三UTC+8下午10时07分02秒,Nicolas Trangosi写道:
Contact: <sip:fd43k97k@luk4a3al5kar.invalid;transport=ws>;reg-id=1;+sip.instance="<urn:uuid:9720f561-9339-4905-93c0-1ec5029a879b>";expires=600
Content-Length: 0
CSeq: 81 REGISTER
From: <sip:a...@10.166.41.126:18080>;tag=stba6p1dqd
Max-Forwards: 69
Supported: path, outbound, gruu
User-Agent: JsSIP 0.3.0
Via: SIP/2.0/WS luk4a3al5kar.invalid;branch=z9hG4bK9796433


2013-07-02 22:09:30 OUT WS /10.166.41.126:18080 > /10.166.41.126:46877

SIP/2.0 200 OK
Call-ID: og3it7uf6nqgn18ntj3quv
Contact: <sip:fd43k97k@luk4a3al5kar.invalid;transport=ws>;reg-id=1;+sip.instance="<urn:uuid:9720f561-9339-4905-93c0-1ec5029a879b>";expires=600;pub-gruu="sip:a...@10.166.41.126:18080;gr=urn:uuid:9720f561-9339-4905-93c0-1ec5029a879b"
;expires=3600
CSeq: 81 REGISTER
From: <sip:a...@10.166.41.126:18080>;tag=stba6p1dqd
To: <sip:a...@10.166.41.126:18080>;tag=1Y6.3oR5pAautUF-bEFU7
Via: SIP/2.0/WS luk4a3al5kar.invalid;branch=z9hG4bK9796433;received=10.166.41.126
Content-Length: 0


2013-07-02 22:09:32 IN  WS /10.166.41.126:18080 < /10.166.41.126:46879

REGISTER sip:10.166.41.126:18080 SIP/2.0
Allow: ACK, CANCEL, BYE, OPTIONS, INVITE
Call-ID: v0fvin3ou0ip28u3j88nqo
Contact: <sip:9qk6gko1@7m0e529frbnl.invalid;transport=ws>;reg-id=1;+sip.instance="<urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e>";expires=600
Content-Length: 0
CSeq: 81 REGISTER
From: <sip:b...@10.166.41.126:18080>;tag=95di90h446
Max-Forwards: 69
Supported: path, outbound, gruu
User-Agent: JsSIP 0.3.0
Via: SIP/2.0/WS 7m0e529frbnl.invalid;branch=z9hG4bK621975


2013-07-02 22:09:32 OUT WS /10.166.41.126:18080 > /10.166.41.126:46879

SIP/2.0 200 OK
Call-ID: v0fvin3ou0ip28u3j88nqo
Contact: <sip:9qk6gko1@7m0e529frbnl.invalid;transport=ws>;reg-id=1;+sip.instance="<urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e>";expires=600;pub-gruu="sip:b...@10.166.41.126:18080;gr=urn:uuid:98419f24-06bd-4981-ba96-e6b3c715c73e"
Reply all
Reply to author
Forward
0 new messages