Configuring IIS Smooth Streaming and Application Request Routing Disk Caching.

 

I recently worked with a customer who was looking at using IIS Smooth Streaming as their Content Distribution mechanism.

They also wanted to use ARR Disk Caching to cache the content on the ARR Tier to prevent round trips to the Smooth Streaming Server.
(Editors note: This was all pre-recorded content and so caching is a good idea. For Live Streaming you may not want to cache traffic.)

So I configured 2 Servers with IIS Media Services 4.1 and set them up with the Big Buck Bunny content.

https://www.microsoft.com/en-us/download/details.aspx?id=18199

I set up the Content Player from https://go.microsoft.com/?linkid=9752687 also on these Servers.

I then tested this by browsing from a client machine and connected to the Stream on both machines.

Then on my ARR Server I created a Server Farm as discussed at
https://www.iis.net/learn/extensions/configuring-application-request-routing-(arr)/define-and-configure-an-application-request-routing-server-farm 

I also enabled Disk Caching as discussed at
https://www.iis.net/learn/extensions/configuring-application-request-routing-(arr)/configure-and-enable-disk-cache-in-application-request-routing

I used C:\ARRCache as my cache folder and we would recommend that you also consider using a secondary storage location on a file share.

Then I changed the Content Player URL to point to https://DNSNAMEOFARR/BigBuckBunny/BigBuckBunny.ism/manifest

I tested this again from the Client and I can see the fragments being cached on the disk.

C:\>tree C:\ArrCache

C:\ARRCACHE

└───testurl

    └───BigBuckBunny

        └───BigBuckBunny.ism

├───QualityLevels(1427000)

├───QualityLevels(160000)

├───QualityLevels(2056000)

├───QualityLevels(230000)

├───QualityLevels(2962000)

├───QualityLevels(331000)

├───QualityLevels(477000)

├───QualityLevels(688000)

            └───QualityLevels(991000)

You might also want to consider enabling Request Consolidation as discussed below.

https://www.iis.net/learn/extensions/configuring-application-request-routing-(arr)/configure-request-consolidation-feature-in-application-request-routing 

“ARR has introduced the concept of request consolidation. The idea is to check the cache-miss requests that are "in flight" before forwarding the requests to the origin server (or if the cache nodes are tiered, the requests will be sent to the next tier server.) “

This might help reduce the number of requests sent to the origin servers.

I hope this helps.