StifleRulez.xml Configuration Guide

Introduction

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

The default version of the StifleRulez.xml file can be found on GitHub: https://github.com/2pintsoftware/StifleRRules/blob/master/StifleRulez.xml

Process

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.

<StifleRData xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <VersionInfo>
    <Issuer>2Pint Software</Issuer>
    <Version>2.2.0.0</Version>
    <Date>07-06-2019</Date>
  </VersionInfo>

Rules are processed in the top down order of the <TypeData> TypeID nodes and stops at the first match that evaluates to true according to the matching rules. The TypeID is then matched in the top <DownloadTypes> section and the Download Priority set accordingly.

A sample basic StifleRulez.xml rule file is shown below.

<StifleRData xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<VersionInfo>
<Issuer>2Pint Software</Issuer>
<Version>1.7.6.0</Version>
<Date>06-06-2018</Date>
</VersionInfo>
<TypeData>
<Type TypeID="001" Match="Equals">Download StifleRulez File</Type> <!-- StifleR Rules Update-->
<Type TypeID="002" Match="URLContains">Express</Type> <!-- MS Express Update-->
<!-- Generic Windows Downloads Section-->
<Type TypeID="100" Match="Contains">Push Notification Platform Job</Type>
<Type TypeID="101" Match="Equals">WU Client Download</Type> <!-- Windows Update-->
<Type TypeID="102" Match="Equals">Windows Store</Type> <!-- Windows Store - W10 DO Only-->
<Type TypeID="103" Match="Equals">UpdateBinary</Type><!-- MS OneDrive-->
<Type TypeID="104" Match="Equals">SpeechModelDownloadJob</Type>
<Type TypeID="105" Match="Equals">SkypeUpdate</Type>
<Type TypeID="106" Match="Equals">Setup Installer</Type>
<Type TypeID="107" Match="Equals">Font Download</Type>
<Type TypeID="108" Match="Contains">DMRCBitsJob</Type>
<Type TypeID="109" Match="Contains">Microsoft Outlook Offline Address Book</Type>
<Type TypeID="110" Match="Equals">Silverlight Updater</Type>
<Type TypeID="111" Match="URLContains">MicrosoftMaps</Type> <!-- MS Maps Update-->
<Type TypeID="112" Match="Equals">PreSignInSettingsConfigJSON</Type>
<Type TypeID="113" Match="Equals">Windows DLP Manager</Type>
<!-- MS ConfigMgr Section-->
<Type TypeID="200" Match="Contains">CCMSETUP DOWNLOAD</Type> <!--CM Auto upgrade client job-->
<Type TypeID="201" Match="URLContains">SCCM_BranchCache$</Type> <!--All types of CM PeerCache transfers-->
<Type TypeID="202" Match="URLContains">SCRIPTGUID</Type> <!-- CM Run SCript-->
<Type TypeID="203" Match="URLContains">sms_dcm</Type> <!-- CM Configuration Baseline Traffic-->
<Type TypeID="204" Match="URLContains">sms_pol</Type> <!-- ConfigMgr Policy Traffic-->
<Type TypeID="205" Match="Contains">CCM Message Upload</Type> <!-- ConfigMgr Inventory Upload-->
<Type TypeID="207" Match="Equals" WellConnected="0" CCMDTSType="4" WinPE="1">CCMDTS Job</Type> <!--Task Sequence in WinPE :
Required deployment-->
<Type TypeID="227" Match="Equals" WellConnected="1" CCMDTSType="4" WinPE="1">CCMDTS Job</Type> <!--Task Sequence in WinPE :
Required deployment-->
<Type TypeID="208" Match="Equals" UserInitiated="1" DownloadOnDemand="1" CCMDTSType="4">CCMDTS Job</Type> <!--Task Sequence in
Full OS : User Initiated : Download on Demand-->
<Type TypeID="209" Match="Equals" DownloadOnDemand="1" CCMDTSType="4">CCMDTS Job</Type> <!--Task Sequence in Full OS :
Required Deployment : Download on Demand -->
<Type TypeID="210" Match="Equals" UserInitiated="1" DownloadOnDemand="0" CCMDTSType="4">CCMDTS Job</Type> <!--Task Sequence in
Full OS : User Initiated : Download All B4 Execute -->
<Type TypeID="211" Match="Equals" DownloadOnDemand="0" CCMDTSType="4">CCMDTS Job</Type> <!--Task Sequence in Full OS :
Required Deployment : Download All B4 Execute -->
<Type TypeID="212" Match="Equals" UserInitiated="1" CCMDTSType="8">CCMDTS Job</Type> <!--Application/Virtual in Full OS : User
Initiated -->
<Type TypeID="213" Match="Equals" CCMDTSType="8">CCMDTS Job</Type> <!--Application/Virtual in Full OS : Required Deployment -->
<Type TypeID="214" Match="Equals" UserInitiated="1" CCMDTSType="0">CCMDTS Job</Type> <!--Pkg/Program in Full OS : User Initiated -->
<Type TypeID="215" Match="Equals" CCMDTSType="0">CCMDTS Job</Type> <!--Pkg/Program in Full OS : Required Deployment -->
<Type TypeID="216" Match="Equals" UserInitiated="1" CCMDTSType="5">CCMDTS Job</Type> <!-- Software Update in Full OS : User Initiated -
->
<Type TypeID="217" Match="Equals" CCMDTSType="5">CCMDTS Job</Type> <!-- Software Update in Full OS : Required Deployment -->
<!-- All others Misc Section includes Internet based downloads and catch-all rules-->
<Type TypeID="300" Match="Contains">.crx</Type>
<Type TypeID="301" Match="Contains">chrome_installer.exe</Type>
<Type TypeID="302" Match="Contains">ArmReaderJobsID</Type>
<Type TypeID="303" Match="URLContains" Internet="1">adobe.com</Type>
<Type TypeID="304" Match="Contains">DropBoxClient</Type>
<Type TypeID="305" Match="Contains">GoogleEarth</Type>
<!-- This should always be the last section - catch-all rules for anything that isn't detected above-->
<Type TypeID="900" Match="SmallerThan" Internet="0">32768</Type>
<Type TypeID="901" Match="LargerThan" Internet="0">1073741824</Type>
<Type TypeID="902" Match="SmallerThan" Internet="1">32768</Type>
<Type TypeID="903" Match="LargerThan" Internet="1">1073741824</Type>
<Type TypeID="904" BranchCache="1" Internet="1" />
<Type TypeID="905" BranchCache="1" Internet="0" />8
<Type TypeID="906" BranchCache="0" Internet="1" />
<Type TypeID="907" BranchCache="0" Internet="0" />
</TypeData><!-- ***** END OF TYPEDATA SECTION *****-->
<DownloadTypes>
<Download TypeID="001" StifleRPriority="100" Name="StifleR Rules Updater"/>
<Download TypeID="002" StifleRPriority="100" Name="CM Express Update"/>
<Download TypeID="100" StifleRPriority="3000" Name="Windows Platform"/>
<Download TypeID="101" StifleRPriority="1000" Name="Windows Update"/>
<Download TypeID="102" StifleRPriority="1000" Name="Windows Store"/>
<Download TypeID="103" StifleRPriority="3000" Name="Microsoft OneDrive Update"/>
<Download TypeID="104" StifleRPriority="3000" Name="Microsoft Speech Update"/>
<Download TypeID="105" StifleRPriority="3000" Name="Skype Updater"/>
<Download TypeID="106" StifleRPriority="3000" Name="Windows Setup Installer"/>
<Download TypeID="107" StifleRPriority="3000" Name="Font Download" />
<Download TypeID="108" StifleRPriority="3000" Name="Windows Device Management"/>
<Download TypeID="109" StifleRPriority="100" Name="Microsoft Outlook OAB Sync" Bandwidth="512" />
<Download TypeID="110" StifleRPriority="3000" Name="Silverlight Updater"/>
<Download TypeID="111" StifleRPriority="3000" Name="Microsoft Maps Update"/>
<Download TypeID="112" StifleRPriority="3000" Name="OneDrive Settings"/>
<Download TypeID="113" StifleRPriority="3000" Name="WIP Manager Update"/>
<Download TypeID="200" StifleRPriority="1000" Name="CM Client Upgrade"/>
<Download TypeID="201" StifleRPriority="100" Name="CM Peer Cache P2P" />
<Download TypeID="202" StifleRPriority="100" Name="CM Run Script" />
<Download TypeID="203" StifleRPriority="100" Name="CM Configuration Baseline"/>
<Download TypeID="204" StifleRPriority="100" Name="CM Policy Download"/>
<Download TypeID="205" StifleRPriority="3000" Name="CM Inventory Upload"/>
<Download TypeID="206" StifleRPriority="1000" Name="CM WinPE User TS" Bandwidth="512" />
<Download TypeID="256" StifleRPriority="100" Name="CM WinPE User TS Well Connected"/>
<Download TypeID="207" StifleRPriority="1000" Name="CM WinPE Required TS"/>
<Download TypeID="227" StifleRPriority="100" Name="CM WinPE Required TS WC"/>
<Download TypeID="208" StifleRPriority="1000" Name="CM Available TS" Bandwidth="512" />
<Download TypeID="209" StifleRPriority="1000" Name="CM Required TS"/>
<Download TypeID="210" StifleRPriority="1000" Name="CM Available TS" Bandwidth="512" />
<Download TypeID="211" StifleRPriority="1000" Name="CM Required TS"/>
<Download TypeID="212" StifleRPriority="1000" Name="CM Available Application" />
<Download TypeID="213" StifleRPriority="2000" Name="CM Required Application" />
<Download TypeID="214" StifleRPriority="1000" Name="CM Available Package" />
<Download TypeID="215" StifleRPriority="2000" Name="CM Required Package" />
<Download TypeID="216" StifleRPriority="1000" Name="CM Available Update" />
<Download TypeID="217" StifleRPriority="1000" Name="CM Required Update" />
<Download TypeID="300" StifleRPriority="3000" Name="Google Chrome Updater" Bandwidth="512" />
<Download TypeID="301" StifleRPriority="3000" Name="Google Chrome Updater" Bandwidth="512" />
<Download TypeID="302" StifleRPriority="3000" Name="Adobe Updater" Bandwidth="512" />
<Download TypeID="303" StifleRPriority="3000" Name="Adobe Updater" Bandwidth="512" />
<Download TypeID="305" StifleRPriority="3000" Name="Google Earth Installer" Bandwidth="512" />
<Download TypeID="900" StifleRPriority="2000" Name="Small Internal Prio 2" Bandwidth="64" />
<Download TypeID="901" StifleRPriority="3000" Name="Large Internal Prio 3" Bandwidth="64" />
<Download TypeID="902" StifleRPriority="2000" Name="Small Internet Prio 2" Bandwidth="128" />
<Download TypeID="903" StifleRPriority="3000" Name="Large Internet Prio 3" Bandwidth="256" />
<Download TypeID="904" StifleRPriority="2000" Name="BranchCache External" Bandwidth="64" />
<Download TypeID="905" StifleRPriority="2000" Name="BranchCache Internal" Bandwidth="64" />
<Download TypeID="906" StifleRPriority="3000" Name="Non-BranchCache External" Bandwidth="128" />
<Download TypeID="907" StifleRPriority="3000" Name="Non-BranchCache Internal" Bandwidth="256" />
</DownloadTypes>
</StifleRData>

Figure 16 A sample default StifleRulez.xml rule file

Example: A job with the display name of “SkypeUpdate” will be linked to the Download Priority TypeID of 3, which sets the BITS job to “3”- low priority.

You can have as many rules as you want, matching as many Download Types as you need, but keep in mind that the first matching hit will be used. In order to test and track this ensure that debug logging is enabled on the clients during your testing.

StifleR BITS Priority Values

The following BITS Priority values are applied according to the Download Priority values shown above:

        ForeGround = 0
        High = 1,
        Normal = 2,
        Low = 3

These priority values also appear in the dashboards.

Auto BITS Job Classification

Issues can arise where, for instance, some BITS 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 in the Job. It can also apply rules according to the BITS Job name, descriptions, URL or other BITS job information. With Windows 10 the PID (Process ID) creating the job is also tracked, providing additional capabilities to classify the download.

StifleR Rules Match Parameters

The following syntax can be used with the rules file, the DisplayName of the job is used on some matching and some of them uses the URL of the current file. Other rules uses the jobs progress data. No rule is case sensitive.

AutoUpdating StifleR Prioritization Rules

The Server can instruct Clients to download a new version of the StifleRulez file. This can also be done on a scheduled timer, creating a BITS job to download the source of the rules from either Internet or a corporate URL.

The client tries to update the file on simple schedule controlled by the UpdateRulesTimerInSec key value in the StifleR.ClientApp.exe.config file. By default this is set to a value of 604800 which is once a week. Set this to 0 to disable this feature.

If the rule file is missing or if the timer has triggered, the client will try to get a new file from the URL defined in the clients’ configuration file under the StifleRulezURL key string. Merge your own edits with the one downloaded from 2Pint Software and host this file internally on your corporate LAN.

NOTE This file does not support the Content-Length as it is hosted on a CDN. To allow StifleR to use HTTP download instead of BITS set the client configuration key UseBITSForRulezDownload to 0 in order to use regular HTTP instead of BITS. Set it to 1 to use BITS for downloading new definition files. BITS requires Content-Length which some NAS/Apache servers don’t do by default. The default file size is ~10Kb

Last updated