Exploring SoftGrid with NetMon Part 2: Application Launch

In part 1 we took a look at what happens when a SoftGrid client does a DC Refresh. During DC Refresh we identified the applications we were allowed to run, downloaded the OSD and ICO files, and placed the icons on the host OS. So now that we have our icons populated, let’s take a look at what happens when the user actually double-clicks one of these icons.

Disclaimer: Just as last time, my goal here is to explain a concept, specifically in the context of a default SoftGrid installation. Certain technical details will be skipped and some degree of SoftGrid and packet sniffer proficiency is assumed.

So with that said, let’s jump right in. When the user double-clicks on our icon, in this case the icon for Foxit Reader, the client (111.1.1.69) knows where to go to find the SFT for that application based on the OSD it previously downloaded. We’re going to be streaming the app so our first step is to sync over RTSP (port 554). We see this in frames 1-3 below:

Once we complete our three way handshake, we next request some information about our stream and get ready to play it. This happens in frames 4-9 below:

What’s important above is what’s in frame 7. This is the response to our DESCRIBE method where the server provides our client with some critical information about our stream, including the high port we need to connect to in order to play it. In my example, when I opened this packet it looked something like this:

We can see in the example above that our server is instructing us to make our secondary connection over port 49152. As a side note, if you launch multiple streamed apps, each will use its own unique high port. There’s also some other cool information in here such as package names, GUIDs, etc. Now I’m not going to go into all of the details about the RTSP conversation but the important thing is that you’ll next see the client sync over our high port beginning in frame 10:

Once this completes we tell the server to begin playing. This request to play happens over port 554 and in our example is in frames 13-16 below:

Then the stream begins to play over our high port (49152):

Now I know that there were a lot of packets that I skipped over for the sake of brevity but to summarize this is what we do:

1. The client connects to the server using RTSP (port 554).
2. The client and server negotiate a high port to use when actually streaming the app.
3. The client connects to the server using the high port and streams the app.

Here’s my highly modified trace of the process one more time:

Hopefully this will give you a better idea of what the SoftGrid client does when a virtual application is launched and will help you troubleshoot these kinds of problems should you encounter them. As always, if you have any requests for content please send them my way.

J.C. Hornbeck