<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7654.12">
<TITLE>[Blink] Chat stream failed: MSRPBindSessionTimeout</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Hello,<BR>
<BR>
We tried setting up a MSRP chat session between two blinks(let's call them Blink-1, Blink-2) with a SBC lying in the signalling and media paths.<BR>
As far as signalling plane(SBC-SP) is concerned the SBC sbove is in a strict B2BUA mode. In the media plane(SBC-MP) it's acting strictly as a relay (i.e. NAT-PT mode).<BR>
<BR>
Now, the scenario we've setup is a special one.<BR>
It's a [RFC6135] MSRP Alternative Connection Model (ACM) scenario wherein we've ensured that OFFER and ANSWER both contain 'a=setup:active' attribute.<BR>
What this means is that the SBC will be receiving SYNs from both the Blinks and handling them using the 'TCP splicing' technique.<BR>
It's basically making both the UAs think that they've each initiated and setup a MSRP TCP connection.<BR>
<BR>
The partial call flow below should clear up things a little more:<BR>
<BR>
| 10.201.1.152(Blink-1)                 | 10.201.1.99(Blink-2)                  |<BR>
|                   |10.204.1.28(SBC-SP)|                   |10.207.1.100(SBC-MP)<BR>
|         Request: INVITE sip           |                   |                   |SIP/SDP: Request: INVITE sip:12345@10.204.1.28, with session description<BR>
|(5060)------------->(5060)             |                   |                   |<BR>
|         Status: 100 Trying            |                   |                   |SIP: Status: 100 Trying<BR>
|(5060)<-------------(5060)             |                   |                   |<BR>
|                   |         Request: INVITE sip           |                   |SIP/SDP: Request: INVITE sip:12345@10.201.1.99, with session description<BR>
|                   |(5060)------------->(5060)             |                   |<BR>
|                   |         Status: 100 Trying            |                   |SIP: Status: 100 Trying<BR>
|                   |(5060)<-------------(5060)             |                   |<BR>
|                   |         Status: 180 Ringing           |                   |SIP: Status: 180 Ringing<BR>
|                   |(5060)<-------------(5060)             |                   |<BR>
|         Status: 180 Ringing           |                   |                   |SIP: Status: 180 Ringing<BR>
|(5060)<-------------(5060)             |                   |                   |<BR>
|                   |         Status: 200 OK                |                   |SIP/SDP: Status: 200 OK, with session description<BR>
|                   |(5060)<-------------(5060)             |                   |<BR>
|         Status: 200 OK                |                   |                   |SIP/SDP: Status: 200 OK, with session description<BR>
|(5060)<-------------(5060)             |                   |                   |<BR>
|         Request: ACK sip              |                   |                   |SIP: Request: ACK sip:12345@10.204.1.28:5060<BR>
|(5060)------------->(5060)             |                   |                   |<BR>
|                   |         Request: ACK sip              |                   |SIP: Request: ACK sip:12345@10.201.1.99<BR>
|                   |(5060)------------->(5060)             |                   |<BR>
|         53502 > 15002 [SYN]           |                   |                   |TCP: 53502 > 15002 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=3 TSV=856688003 TSER=0<BR>
|(53502)---------------------------------------------------->(15002)            |<BR>
|                   |                   |         49838 > 15000 [SYN]           |TCP: 49838 > 15000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=3 TSV=971262787 TSER=0<BR>
|                   |                   |(49838)------------>(15000)            |<BR>
|         15002 > 53502 [SYN, ACK]      |                   |                   |TCP: 15002 > 53502 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=3 TSV=856688003 TSER=0<BR>
|(53502)<----------------------------------------------------(15002)            |<BR>
|                   |                   |         15000 > 49838 [SYN, ACK]      |TCP: 15000 > 49838 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=3 TSV=971262787 TSER=0<BR>
|                   |                   |(49838)<------------(15000)            |<BR>
|                   |                   |         49838 > 15000 [ACK]           |TCP: 49838 > 15000 [ACK] Seq=1 Ack=1 Win=524280 Len=0 TSV=971262787 TSER=971262787<BR>
|                   |                   |(49838)------------>(15000)            |<BR>
|         [TCP Dup ACK]                 |                   |                   |TCP: [TCP Dup ACK 921#1] 15002 > 53502 [ACK] Seq=1 Ack=1 Win=524280 Len=0 TSV=971262787 TSER=971262787<BR>
|(53502)<----------------------------------------------------(15002)            |<BR>
|         53502 > 15002 [ACK]           |                   |                   |TCP: 53502 > 15002 [ACK] Seq=1 Ack=1 Win=524280 Len=0 TSV=856688003 TSER=856688003<BR>
|(53502)---------------------------------------------------->(15002)            |<BR>
|                   |                   |         [TCP Dup ACK]                 |TCP: [TCP Dup ACK 922#1] 15000 > 49838 [ACK] Seq=1 Ack=1 Win=524280 Len=0 TSV=856688003 TSER=856688003<BR>
|                   |                   |(49838)<------------(15000)            |<BR>
|         Request: SEND Trans           |                   |                   |MSRP: Request: SEND Transaction ID: 745f0cb1fb640e52<BR>
|(53502)---------------------------------------------------->(15002)            |<BR>
|                   |                   |         Request: SEND Trans           |MSRP: Request: SEND Transaction ID: 745f0cb1fb640e52<BR>
|                   |                   |(49838)<------------(15000)            |<BR>
|                   |                   |         [TCP Dup ACK]                 |TCP: [TCP Dup ACK 923#1] 49838 > 15000 [ACK] Seq=1 Ack=1 Win=524280 Len=0 TSV=971262787 TSER=971262787<BR>
|                   |                   |(49838)------------>(15000)            |<BR>
|         [TCP Dup ACK 921#2]           |                   |                   |TCP: [TCP Dup ACK 921#2] 15002 > 53502 [ACK] Seq=1 Ack=1 Win=524280 Len=0 TSV=971262787 TSER=971262787<BR>
|(53502)<----------------------------------------------------(15002)            |<BR>
|                   |                   |         Request: SEND Trans           |MSRP: Request: SEND Transaction ID: 6ed1199a610a6a7d<BR>
|                   |                   |(49838)------------>(15000)            |<BR>
|         Request: SEND Trans           |                   |                   |MSRP: Request: SEND Transaction ID: 6ed1199a610a6a7d<BR>
|(53502)<----------------------------------------------------(15002)            |<BR>
|         53502 > 15002 [ACK]           |                   |                   |TCP: 53502 > 15002 [ACK] Seq=227 Ack=226 Win=524280 Len=0 TSV=856688003 TSER=971262787<BR>
|(53502)---------------------------------------------------->(15002)            |<BR>
|                   |                   |         15000 > 49838 [ACK]           |TCP: 15000 > 49838 [ACK] Seq=227 Ack=226 Win=524280 Len=0 TSV=856688003 TSER=971262787<BR>
|                   |                   |(49838)<------------(15000)            |<BR>
|                   |                   |         [TCP Retransmission           |MSRP: [TCP Retransmission] Request: SEND Transaction ID: 6ed1199a610a6a7d<BR>
|                   |                   |(49838)------------>(15000)            |<BR>
|         [TCP Retransmission           |                   |                   |MSRP: [TCP Retransmission] Request: SEND Transaction ID: 6ed1199a610a6a7d<BR>
|(53502)<----------------------------------------------------(15002)            |<BR>
|         [TCP Dup ACK]                 |                   |                   |TCP: [TCP Dup ACK 935#1] 53502 > 15002 [ACK] Seq=227 Ack=226 Win=524280 Len=0 TSV=856688012 TSER=971262796<BR>
|(53502)---------------------------------------------------->(15002)            |<BR>
|                   |                   |         [TCP Dup ACK]                 |TCP: [TCP Dup ACK 936#1] 15000 > 49838 [ACK] Seq=227 Ack=226 Win=524280 Len=0 TSV=856688012 TSER=971262796<BR>
|                   |                   |(49838)<------------(15000)            |<BR>
|         [TCP Retransmission           |                   |                   |MSRP: [TCP Retransmission] Request: SEND Transaction ID: 745f0cb1fb640e52<BR>
|(53502)---------------------------------------------------->(15002)            |<BR>
|                   |                   |         [TCP Retransmission           |MSRP: [TCP Retransmission] Request: SEND Transaction ID: 745f0cb1fb640e52<BR>
|                   |                   |(49838)<------------(15000)            |<BR>
|                   |                   |         [TCP Dup ACK                  |TCP: [TCP Dup ACK 1027#1] 49838 > 15000 [ACK] Seq=226 Ack=1 Win=524280 Len=0 TSV=971262806 TSER=971262787<BR>
|                   |                   |(49838)------------>(15000)            |<BR>
|         [TCP Dup ACK                  |                   |                   |TCP: [TCP Dup ACK 1028#1] 15002 > 53502 [ACK] Seq=226 Ack=1 Win=524280 Len=0 TSV=971262806 TSER=971262787<BR>
|(53502)<----------------------------------------------------(15002)            |<BR>
<BR>
<BR>
Now with reference to the above, I've got a few questions:<BR>
1. The 'SEND Transaction 745f0cb1fb640e52' from Blink-1 receives an incorrect 'Ack=1' from Blink-2 causing its retransmission. What could be the reason for this incorrect ACK from Blink-2?<BR>
   (Also note above that we've relayed the final ACKs during the handshake from the Blinks to the other unnecessarily.)<BR>
2. Although 'SEND Transaction 6ed1199a610a6a7d' from BLink-2 does receive a correct ACK, the 'SEND' keeps getting retransmitted multiple times for some reason by Blink-2. What could be wrong here?<BR>
3. Is it possible that each Blink isn't sending a '200 OK' to the SENDs received because they're not expecting a SEND? i.e. are they only looking to do a SEND?<BR>
4. Does Blink support this likely scenario wherein they're both behind NATs and have no option but to use msrp-acm to resolve NAT issues (i.e. have no relays available)?<BR>
5. It appears Blink-2 is misbehaving i.e. it's sending a wrong ACK and keeps retransmitting an acknowledged TCP segment over and over again.<BR>
   Its logs shows the following error: 'Chat stream failed: MSRPBindSessionTimeout'. Do you agree with this analysis?<BR>
<BR>
Attached is the wireshark trace file and Blink logs are below. Hope this helps!<BR>
<BR>
<BR>
Gaurav<BR>
<BR>
<BR>
Blink-1 logs:<BR>
2011-03-25 15:36:44   [session to 12345] Changing Session state to CONNECTING<BR>
2011-03-25 15:36:44   [session to 12345] Connecting Session...<BR>
2011-03-25 15:36:44   Outgoing Session request to To: <sip:12345@10.204.1.28> (['chat'])<BR>
2011-03-25 15:36:47   [session to 12345] Session will start<BR>
2011-03-25 15:36:47   Chat stream established to msrp://10.207.1.100:15002/8e943e31a8e49a6597f0;tcp (12345)<BR>
2011-03-25 15:36:48   [session to 12345] Changing chat state to CONNECTED<BR>
2011-03-25 15:36:48   [session to 12345@10.204.1.28] Changing Session state to CONNECTED<BR>
2011-03-25 15:36:48   [session to 12345@10.204.1.28] Session started<BR>
2011-03-25 15:36:58   [session to 12345@10.204.1.28] Session will end (remote)<BR>
2011-03-25 15:36:58   [session to 12345@10.204.1.28] Changing Session state to FINISHED<BR>
2011-03-25 15:36:58   Session <sipsimple.session.Session object at 0x115fa310> ended, disposing...<BR>
2011-03-25 15:36:58   [session to 12345@10.204.1.28] Session ended<BR>
2011-03-25 15:36:58   Chat stream ended<BR>
2011-03-25 15:36:58   [session to 12345@10.204.1.28] Changing chat state to IDLE<BR>
<BR>
Blink-2 logs:<BR>
2011-03-25 15:36:44   Incoming session from From: "56789" <sip:56789@10.204.1.28>;tag=3509990736-382361 with proposed streams chat<BR>
2011-03-25 15:36:47   Accepting session to From: "56789" <sip:56789@10.204.1.28>;tag=3509990736-382361<BR>
2011-03-25 15:36:47   [session to 56789] Handling incoming chat Stream<BR>
2011-03-25 15:36:47   [session to 56789] Changing chat state to INCOMING<BR>
2011-03-25 15:36:47   [session to 56789] Session will start<BR>
2011-03-25 15:36:57   Chat stream failed: MSRPBindSessionTimeout<BR>
2011-03-25 15:36:58   [session to 56789] Changing chat state to FAILED<BR>
2011-03-25 15:36:58   [session to 56789] Session will end (local)<BR>
2011-03-25 15:36:58   Chat stream ended<BR>
2011-03-25 15:36:59   [session to 56789] Changing Session state to FINISHED<BR>
2011-03-25 15:36:59   Session <sipsimple.session.Session object at 0x3439e30> ended, disposing...<BR>
2011-03-25 15:36:59   [session to 56789] Session ended<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>