Skip to main content

1E 23.7 (SaaS)

Download resumption and consistency checking

To minimize repeated downloads of the same content from the Distribution Point, Nomad supports download resumption and consistency checking.

Refer to Deploying software with Configuration Manager for example scenarios about deploying Applications and Packages where Nomad is integrated with Configuration Manager and how you can monitor those deployments using the Nomad app.

Download resumption

Nomad downloads include checkpoint recovery, so if the connection to the distribution point is disrupted during a download, it is resumed when the connection is next available. Download resumption starts from the point it had reached when the connection was lost. This means that no previous time spent downloading the package is wasted.

Consistency checking

Nomad must be installed on all the Configuration Manager DPs. This not only lets central multicast work, but also enables package file checksums to be calculated centrally allowing efficient recovery from file transfer issues if one exists. The central creation of the checksums also minimizes the computational overhead.

Nomad uses manifest files to describe the download contents of Configuration Manager applications and packages. This enables it to provide file-level transfer and, when integrated with Configuration Manager remote differential compression (RDC), file delta downloads. The Nomad client automatically generates a manifest for each version of each package. The generation request occurs as the first Nomad client attempts to download the newest version of a package.

Manifest files

The manifest, a LSZ file, is stored in the root of the Nomad cache. This lists each file, its time stamp, a CRC checksum and the Configuration Manager hash value for the content. Nomad uses this manifest to ensure that the correct files have been downloaded for each package and to enable the rapid detection of changes between versions of packages.

Hash checks for Windows 10 service updates

Nomad now gets the hash from the LSZ file and validates the calculated hash with it. Since the LSZ file can contain SHA2 or SHA1 hashes, along with cyclic redundancy checks (CRC) for individual files, the precedence of the validation is:

  1. Use HashV4 (which is SHA2) if it exists, for the validation.

  2. Use Hash (which is SHA1) if it exists, for the validation.

  3. Otherwise, only perform CRCs on all the files that have that value in the LSZ file.

This enables standalone downloads to get the hash check on the server side (from the .ini file) as well as on the client side (from the LSZ file).

Distribution point resilience

If a DP becomes unavailable during a download, Nomad will failover to the next DP on the list ensuring download resilience efficient content delivery.Configuration Manager provides a list of DPs from which the content for packages can be downloaded. Under certain circumstances, DPs may become unavailable. Using a list supports failover by selecting a new DP to continue the download.

Earlier versions of Nomad would only attempt to download once from each DP in the list. If a DP was not available, Nomad would abort the download. However since v4, Nomad now cycles through the list of DPs until a connection is established. If no DP is accessible, it will wait for a time before trying the list again until a timeout is reached.

  • The delay before retrying the DP list is configured in the RecycleDPDelay registry value

  • The maximum download timeout is configured in the DownloadTimeout registry value.

File-level delta downloads

Nomad is able to perform package updates efficiently not only by downloading just the files whose versions have changed, but also by downloading just the portions of the changed files that are different. In a similar way to file consistency checking, Nomad can also efficiently deal with package updates.

In this example, if a package that has been previously downloaded has one of its files updated, Nomad compares each of the file versions for its cached package with the file versions for the incoming updated package. If a file has an older version, it is requested for download. if that is the only file that has been updated the transfer is complete and the package is updated.

Efficient package updates