Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The StifleR client prioritizes BITS and Windows 10 Delivery Optimization (DO) downloads by checking through its queue of active jobs and matching them against a locally held XML configuration file. This file contains a set of Administrator configured rules that define various download types and the priority that should be assigned to each.
It is also possible to assign ‘Auxiliary Bandwidth’ to a certain type (or types) of content which is in addition to the Target Bandwidth that is assigned to a subnet/location.
This allows you to configure the download priority, i.e. which type of download goes first, second, third etc. in the download queue, according to download type, as well as how much bandwidth is assigned to each of these specific download types. This allows the Administrator highly granular control over all content transfers.
The actual XML file is named StifleRulez.xml and is installed to:
%PROGRAMDATA%\2Pint Software\StifleR\Client
A rule is matched to the download job that you want to control using different matching verbs. Once a download has been matched, it is then linked to a StifleR “download type”. The processing order is:
* The BITS/DO job name is matched and assigned a Job type.
* The Job type is then associated with a Download Type, against which the BITS/DO priority is set.
The StifleR client first needs to determine the ‘Type’ of download according to the rules within the XML. It starts at the top of the first section and works through the rules until it either has a match for the download type, or there are no matching criteria, in which case the download will be classed as ‘Unknown’.
Once a download type is found, (even if that type is ‘Unknown’), the client looks at the second section of the XML to find a match for that type of download which defines the settings for that transfer.
The first section of the file contains some version information. This can be useful if you are maintaining your own custom rules definitions, or in checking that you have the latest 2Pint version.
Next the <TypeData> section of the file is parsed, starting from the top. If there is a match, the search stops, so therefore it is important to enter the TypeData rules in the correct order. The rules need to identify a BITS Job by a certain attribute of that job, be it title, download URL or some other marker.
The XML file contains a number of ways to determine the type of download as follows:
These entries attempt to exactly match the title of a BITS/DO download. The comparison string in contained within the > <
In the example above, we know that all Microsoft ConfigMgr content downloads have a BITS job title of “CCMDTS Job”. More on ConfigMgr specifics later in this document.
If you only know part of the Job title you can use the ‘Contains’ verb to obtain a match.
This means that if the Job title includes the string contained within the > < (which in the case above is “Microsoft Outlook Offline Address Book”) a match will be made.
This checks if the display name of the job starts with the defined Value.
The above rule would match “Microsoft Outlook Offline Address Book” but could also match “Microsoft Outlook Some other download” – which is why it is important to order your TypeID rules correctly.
Windows 10 Delivery Optimization download jobs are tracked by StifleR. Currently the only types of DO content that can be prioritized are Windows Store and Windows Update DO jobs, but we expect this to change, and will add new rules as and when DO functionality changes.
Issues can arise where, for instance, some jobs are created using only a GUID ID as the name, making it hard for an administrator to classify the job. StifleR solves this by looking at the URL of the files within the job.
This checks if the URL of the active file being downloaded contains the Value contained within the > < . Use this to track hostnames or even ConfigMgr package ID’s etc.
The above rule is used to match all ConfigMgr Policy Traffic as the URL always contains “sms_pol”
This can be used to match a download whose source is a public IP address. StifleR Classes 192/172 and 10 subnets as internal and anything else as external.
“0” equates to a non-internet download.
This line will match any download with a URL containing “adobe.com” that originates from an external address.
Used to distinguish BranchCache Enabled downloads from non-BranchCache jobs.
This would match a job that was BranchCache aware, AND came from an external URL. You might use this type of rule as a ‘Catch-All’ rule further down the TypeID section to match any other job types.
Catch-all values that simply compare the size of the download file with the value between the > < and match accordingly.
Because ConfigMgr assigns the same name to ALL content downloads, i.e. “CCMDTS Job”, this can make it impossible to identify the job any further. To provide more granularity with these ConfigMgr jobs, the StifleR Client can identify a certain type of download, and this is expressed within the rules. You can also identify and differentiate a job that is a ‘Required’ installation from an ‘Available’ installation performed by the user within ConfigMgr Software Center or Company Portal, along with Jobs that are running within WinPE. This can be extremely useful in allocating priority and/or bandwidth to differing types of ConfigMgr download.
Matching specific Configuration Manager download types can be a little complicated. We shall use the following XML file line as an example:
Used to match for Well Connected sites
In our example WellConnected="0" is a match for a normal StifleR bandwidth-controlled site,
Used to identify a specific type of ConfigMgr deployment
0 = Package/Program
4 = Task Sequence
5 = Software Update
8 = Application
In our example CCMDTSType="4" matches a ConfigMgr Task Sequence download.
Specifies whether the download job was started by a user (“1”) or not (“0”)
In the example UserInitiated="1" would only match ConfigMgr downloads which were triggered by the user.
Specifies if the download is coming from WinPE.
In our example WinPE="1" will only match if the download is running in WinPE
Putting all three of the above rules together we can see that this line will match to Task Sequence Download, initiated by the user, running in WinPE.
Identifies Task Sequence download behavior
This rule will apply for a TS which has been set to Download Content as required rather than before execution of the Task Sequence ( CCMDTSType="4" )
Once the download has been matched to a TypeData and assigned a TypeID the next section of the XML is parsed to set the StifleRPriority. This can then be used to give a recognizable description to the download, allocate a priority to the job, and even to allocate specific bandwidth to a certain download type.
The StifleRPriority value is simply the priority given to a particular job in relation to other jobs. The lower the StifleRPriority value, the higher the priority.
Using our previous example, the download matched TypeID=”209” which, we can see above, is assigned StifleRPriority="1000". There is also the option to set a Name for the job, which will be displayed in the StifleR Dashboard, in this case "CM Required TS"
Looking further down the list we can see:
As you can note from Name="CM Required Application this is a Configuration Manager Required Application which in the default StifleRulez.xml file it will be configured with StifleRPriority="2000" meaning that it has a lower priority than the Name="CM Required TS" and will throttle down until the other completes.
StifleR can assign bandwidth to clients that are NOT Red Leader, based on the StifleR rules. This can be useful, for instance, if you wish to allow certain download types to use more than the default NonRedLeader Bandwidth amount.
Important: The Red Leader for a subnet will always use the Target Bandwidth amount for that subnet. The Auxiliary Bandwidth should be used carefully as it contributes to bandwidth use, over and above, the target bandwidth.
Use Case:
Auxiliary Bandwidth can be used to ‘boost’ certain types of download so that a particular download type does not become ‘stuck’ in a queue behind a Red Leader download. A prime candidate for this would be ‘User Initiated’ downloads where the user expects to see progress in the UI. Using the Auxiliary Bandwidth then allows the download to proceed alongside the Red Leader download bandwidth.
Usage:
A user-initiated download is matched as follows to TypeID="212"
This TypeID has been assigned a Priority, Name AND Bandwidth as follows
This is an example where a Download Type has been allocated 512Kbs bandwidth – even if the system is not a Red Leader.
Tip: If you think that there will be a lot of these types of download, you may wish to reduce the Target Bandwidth for that location accordingly so that the cumulative Auxiliary Bandwidth does not impact adversely on network performance.
The following is a sample rules definition which uses examples of all available parameters as described above.