Communicator 2007 R2 Desktop Sharing Call Flow Part 1 – Peer to Peer
I had worked on a case recently where a firewall existed between the OCS 2007 R2 Pool and the internal Communicator 2007 R2 clients concerning call flow and what direct ports needed to be open in the firewall (inbound, outbound, or both) using the Communicator Policies for enabling minimum and maximum media ports.
That said I’m going to cover basic call flow with no policy set just to show what is happening behind the scenes from an initial peer-to-peer desktop sharing which is elevated to a multiparty session by adding a third user.
My environment consists of an OCS 2007 R2 Standard Edition server with the latest QFE2 updates and three machines with Communicator 2007 R2 (logging enabled) and several test accounts (r2user1, r2user2, and r2user3).
r2user1 right clicks contact r2user2 and selects the Share/Share Desktop as shown in the following screen shot.
r2user2 click to accepts the toast
and now r2user2 sees r2user1’s desktop.
So what happened behind the scenes?
Opening up the Communicator-uccapi-0.uccapilog (found in %userprofile%\tracing on workstation) in Snooper.exe (found in OCS 2007 R2 Resource Kit) I find the SIP INVITE to user r2user2 information in the client log for r2user1.
Looking at the same client log for r2user2 I find the matching conversation to the SIP dialog.
First we’ll look at the SIP INVITE from r2user1 to r2user2
=================================================================
08/25/2009|13:47:02.915 17B4:15C0 INFO :: Sending Packet - 192.168.100.69:5061 (From Local Address: 192.168.100.65:2217) 1852 bytes:
08/25/2009|13:47:02.915 17B4:15C0 INFO :: INVITE sip:r2user2@aj.local SIP/2.0
Via: SIP/2.0/TLS 192.168.100.65:2217
Max-Forwards: 70
From: <sip:r2user1@aj.local>;tag=c19d554b25;epid=10e9cc7f1f
To: <sip:r2user2@aj.local>
Call-ID: da937b708b5844869143c7c325110766
CSeq: 1 INVITE
Contact: <sip:r2user1@aj.local;opaque=user:epid:zKV7abW3A1uSjfYfC9sbQQAA;gruu>
User-Agent: UCCAPI/3.5.6907.37 OC/3.5.6907.37 (Microsoft Office Communicator 2007 R2)
Ms-Conversation-ID: AcolrAxlCSZJMA0BQP2a06VfCBBNKQ==
Supported: timer
Supported: histinfo
Supported: ms-safe-transfer
Supported: ms-sender
Supported: ms-early-media
ms-keep-alive: UAC;hop-hop=yes
Allow: INVITE, BYE, ACK, CANCEL, INFO, UPDATE, REFER, NOTIFY, BENOTIFY, OPTIONS
Proxy-Authorization: Kerberos qop="auth", realm="SIP Communications Service", opaque="C29EF240", targetname="sip/AJ-SE-HS-R2.aj.local", crand="b37ce389", cnum="10", response="602306092a864886f71201020201011100fffffffff4fec35d826eb40b6d98ebc9df978058"
Content-Type: application/sdp
Content-Length: 854
v=0
o=- 0 0 IN IP4 192.168.100.65
s=session
c=IN IP4 192.168.100.65
b=CT:99980
t=0 0
m=applicationsharing 50019 TCP/RTP/AVP 127
a=ice-ufrag:WnBn
a=ice-pwd:Eu5diRjJD53zZ0s9aIuKX1WZ
a=candidate:1 1 TCP-PASS 2120613887 192.168.100.65 50016 typ host
a=candidate:1 2 TCP-PASS 2120613374 192.168.100.65 50016 typ host
a=candidate:2 1 TCP-ACT 2121006591 192.168.100.65 50019 typ host
a=candidate:2 2 TCP-ACT 2121006078 192.168.100.65 50019 typ host
a=cryptoscale:1 client AES_CM_128_HMAC_SHA1_80 inline:Gz/jt1b6x3OSCjVoPxEA4tpCEQsv2mMgopkdcnDM|2^31|1:1
a=crypto:2 AES_CM_128_HMAC_SHA1_80 inline:alLwpSEgI558l41mbr5Kt4WMhJQ0mLFIW5kdMHR6|2^31|1:1
a=setup:active
a=connection:new
a=rtcp:50019
a=mid:1
a=rtpmap:127 x-data/90000
a=x-applicationsharing-session-id:1
a=x-applicationsharing-role:sharer
a=x-applicationsharing-media-type:rdp
08/25/2009|13:47:02.915 17B4:15C0 INFO :: End of Sending Packet - 192.168.100.69:5061 (From Local Address: 192.168.100.65:2217) 1852 bytes
=================================================================
Note: To gain a further understanding of the Session Description Protocol (SDP) session level descriptions and attributes see RFC4566 and [MS-SDPEXT]: Session Description Protocol (SDP) Version 2.0 Protocol Extensions.
In the above SIP INVITE we see that the media type is applicationsharing which indicates that user r2user1 wants to share their desktop with r2user2. Also note the role of sharer and media-type of rdp in the a-=x-applicationssharing attributes.
The SIP INVITE also includes a list of ICE candidates (IP addresses and port) for establishing connectivity. In the a=candidate list you see TCP-PASS and TCP-ACT on the candidate pairs passed.When the user agents perform address allocations to gather TCP-based candidates, two types of candidates can be obtained. These are active candidates (TCP-ACT) or passive candidates (TCP-PASS). An active candidate is one for which the agent will attempt to open an outbound connection, but will not receive incoming connection requests. A passive candidate is one for which the agent will receive incoming connection attempts, but not attempt a connection.
When r2user2 accepts the invite by accepting the toast their Office Communicator client sends back a SIP/2.0 200 OK that includes their list of ICE candidates.
=================================================================
08/25/2009|13:47:05.652 F40:B70 INFO :: Sending Packet - 192.168.100.69:5061 (From Local Address: 192.168.100.80:2125) 2047 bytes:
08/25/2009|13:47:05.652 F40:B70 INFO :: SIP/2.0 200 OK
Via: SIP/2.0/TLS 192.168.100.69:5061;branch=z9hG4bKDEE5EF7A.BF6B243466DDFB06;branched=FALSE;ms-internal-info="caRyyi_UkbLXmM_cwQl-4yVh2nkcs0JGu_zXOeeAAA"
Via: SIP/2.0/TLS 192.168.100.65:2217;ms-received-port=2217;ms-received-cid=27300
From: "r2user1"<sip:r2user1@aj.local>;tag=c19d554b25;epid=10e9cc7f1f
To: <sip:r2user2@aj.local>;epid=a95e9231f2;tag=f5691fb8af
Call-ID: da937b708b5844869143c7c325110766
CSeq: 1 INVITE
Record-Route: <sip:AJ-SE-HS-R2.aj.local:5061;transport=tls;opaque=state:T:F:Ci.R27400;lr;ms-route-sig=ecz81J8HcFoT0Zh-VRdvOjXurWDYo0JGu_ODrQ8gAA>;tag=54291250A705C55B30D9DD2028FEF17F
Contact: <sip:r2user2@aj.local;opaque=user:epid:cBiHrFl9wlyErbCkKxK1lAAA;gruu>
User-Agent: UCCAPI/3.5.6907.37 OC/3.5.6907.37 (Microsoft Office Communicator 2007 R2)
Supported: histinfo
Supported: ms-safe-transfer
Allow: INVITE, BYE, ACK, CANCEL, INFO, UPDATE, REFER, NOTIFY, BENOTIFY, OPTIONS
Session-Expires: 720;refresher=uac
Supported: ms-conf-invite
Proxy-Authorization: Kerberos qop="auth", realm="SIP Communications Service", opaque="B617E06D", targetname="sip/AJ-SE-HS-R2.aj.local", crand="aae59dcd", cnum="13", response="602306092a864886f71201020201011100fffffffff937df89260fd7afe33f261d9dd45f8c"
Content-Type: application/sdp
Content-Length: 755
v=0
o=- 0 0 IN IP4 192.168.100.80
s=session
c=IN IP4 192.168.100.80
b=CT:99980
t=0 0
m=applicationsharing 24042 TCP/RTP/SAVP 127
a=ice-ufrag:ooWD
a=ice-pwd:nRmXmAExInRQb86LlNM0DNYx
a=candidate:1 1 TCP-PASS 2120613887 192.168.100.80 18851 typ host
a=candidate:1 2 TCP-PASS 2120613374 192.168.100.80 18851 typ host
a=candidate:2 1 TCP-ACT 2121006591 192.168.100.80 24042 typ host
a=candidate:2 2 TCP-ACT 2121006078 192.168.100.80 24042 typ host
a=crypto:2 AES_CM_128_HMAC_SHA1_80 inline:bB8NYCDMHg5gku25YjWVFCJI5qmXIek9tG2ldHJN|2^31|1:1
a=setup:active
a=connection:existing
a=rtcp:24042
a=mid:1
a=rtpmap:127 x-data/90000
a=x-applicationsharing-session-id:1
a=x-applicationsharing-role:viewer
a=x-applicationsharing-media-type:rdp
08/25/2009|13:47:05.652 F40:B70 INFO :: End of Sending Packet - 192.168.100.69:5061 (From Local Address: 192.168.100.80:2125) 2047 bytes
=================================================================
r2user1 client sends back an acknowledgement to r2user2 clients acceptance of the invite.
Then r2user1 sends a new SIP INVITE message that contains the winning IP address for that workstation as shown below.
==========================================================
08/25/2009|13:47:06.038 17B4:15C0 INFO :: Sending Packet - 192.168.100.69:5061 (From Local Address: 192.168.100.65:2217) 1863 bytes:
08/25/2009|13:47:06.038 17B4:15C0 INFO :: INVITE sip:r2user2@aj.local;opaque=user:epid:cBiHrFl9wlyErbCkKxK1lAAA;gruu SIP/2.0
Via: SIP/2.0/TLS 192.168.100.65:2217
Max-Forwards: 70
From: <sip:r2user1@aj.local>;tag=c19d554b25;epid=10e9cc7f1f
To: <sip:r2user2@aj.local>;epid=a95e9231f2;tag=f5691fb8af
Call-ID: da937b708b5844869143c7c325110766
CSeq: 2 INVITE
Route: <sip:AJ-SE-HS-R2.aj.local:5061;transport=tls;opaque=state:F:T:Eu:Ci.R27300;lr;ms-route-sig=ec-QNRPqugyjLhqIvpyd2ADcGOcFU0JGu_ODrQ8gAA>
Contact: <sip:r2user1@aj.local;opaque=user:epid:zKV7abW3A1uSjfYfC9sbQQAA;gruu>
User-Agent: UCCAPI/3.5.6907.37 OC/3.5.6907.37 (Microsoft Office Communicator 2007 R2)
Supported: ms-dialog-route-set-update
Ms-Conversation-ID: AcolrAxlCSZJMA0BQP2a06VfCBBNKQ==
Supported: timer
Supported: histinfo
Supported: ms-safe-transfer
Supported: ms-sender
Supported: ms-early-media
ms-keep-alive: UAC;hop-hop=yes
Proxy-Authorization: Kerberos qop="auth", realm="SIP Communications Service", opaque="C29EF240", targetname="sip/AJ-SE-HS-R2.aj.local", crand="4a1cc8bd", cnum="12", response="602306092a864886f71201020201011100ffffffffc701b54e409b3e5822bfeb459eee9dbd"
Content-Type: application/sdp
Content-Length: 686
v=0
o=- 0 0 IN IP4 192.168.100.65
s=session
c=IN IP4 192.168.100.65
b=CT:99980
t=0 0
m=applicationsharing 50009 TCP/RTP/SAVP 127
a=ice-ufrag:WnBn
a=ice-pwd:Eu5diRjJD53zZ0s9aIuKX1WZ
a=candidate:2 1 TCP-ACT 2121006591 192.168.100.65 50009 typ host
a=candidate:2 2 TCP-ACT 2121006078 192.168.100.65 50009 typ host
a=crypto:2 AES_CM_128_HMAC_SHA1_80 inline:alLwpSEgI558l41mbr5Kt4WMhJQ0mLFIW5kdMHR6|2^31|1:1
a=remote-candidates:1 192.168.100.80 18851 2 192.168.100.80 18851
a=setup:active
a=connection:existing
a=rtcp:50009
a=mid:1
a=rtpmap:127 x-data/90000
a=x-applicationsharing-session-id:1
a=x-applicationsharing-role:sharer
a=x-applicationsharing-media-type:rdp
08/25/2009|13:47:06.038 17B4:15C0 INFO :: End of Sending Packet - 192.168.100.69:5061 (From Local Address: 192.168.100.65:2217) 1863 bytes
=================================================================
You may notice that the From: and To: information doesn’t change as the From: indicates the initiator of the request and this may be different than the initiator of the dialog.
r2user1 acknowledges and establishes a SRTP session over TCP communication as seen in the network trace below.
As an informational aside r2user2 could have chosen the Redirect option on the toast if they were currently busy or wanted more info before viewing r2user1’s desktop.
Also if they choose to ignore the toast it will expire within about 30 seconds.
The Communicator-uccapilog would show the following in a no response scenario.
=================================================================
09/04/2009|11:17:17.838 15B4:125C INFO :: Sending Packet - 192.168.100.69:5061 (From Local Address: 192.168.100.65:4997) 671 bytes:
09/04/2009|11:17:17.838 15B4:125C INFO :: CANCEL sip:r2user2@aj.local SIP/2.0
Via: SIP/2.0/TLS 192.168.100.65:4997
Max-Forwards: 70
From: <sip:r2user1@aj.local>;tag=a8b738f224;epid=10e9cc7f1f
To: <sip:r2user2@aj.local>
Call-ID: 1e5c04dabc1b47a58c98f8e5e54e0e87
CSeq: 1 CANCEL
User-Agent: UCCAPI/3.5.6907.37 OC/3.5.6907.37 (Microsoft Office Communicator 2007 R2)
Ms-client-diagnostics: 52023; reason="Caller timeout on no response"
Proxy-Authorization: Kerberos qop="auth", realm="SIP Communications Service", opaque="92595B50", targetname="sip/AJ-SE-HS-R2.aj.local", crand="148aefdf", cnum="16", response="602306092a864886f71201020201011100ffffffff159cfea53f6a348e36d4997cc65623bb"
Content-Length: 0
09/04/2009|11:17:17.838 15B4:125C INFO :: End of Sending Packet - 192.168.100.69:5061 (From Local Address: 192.168.100.65:4997) 671 bytes
================================================================
09/04/2009|11:17:18.088 15B4:125C INFO :: Data Received - 192.168.100.69:5061 (To Local Address: 192.168.100.65:4997) 708 bytes:
09/04/2009|11:17:18.088 15B4:125C INFO :: SIP/2.0 487 Request terminated
Proxy-Authentication-Info: Kerberos rspauth="602306092A864886F71201020201011100FFFFFFFF88D59A08B2142ABC250A46B13688B954", srand="891C7171", snum="23", opaque="92595B50", qop="auth", targetname="sip/AJ-SE-HS-R2.aj.local", realm="SIP Communications Service"
From: <sip:r2user1@aj.local>;tag=a8b738f224;epid=10e9cc7f1f
To: <sip:r2user2@aj.local>;tag=54291250A705C55B30D9DD2028FEF17F
Call-ID: 1e5c04dabc1b47a58c98f8e5e54e0e87
CSeq: 1 INVITE
Via: SIP/2.0/TLS 192.168.100.65:4997;ms-received-port=4997;ms-received-cid=88700
ms-diagnostics: 5002;reason="Request was cancelled";source="AJ-SE-HS-R2.aj.local";AppUri="https://www.microsoft.com/LCS/ApiModule"
Content-Length: 0
09/04/2009|11:17:18.088 15B4:125C INFO :: End of Data Received - 192.168.100.69:5061 (To Local Address: 192.168.100.65:4997) 708 bytes