Things to note when working with RDC

  • On Configuration Manager 2012, RDC will not be used for Applications. This is because an Application's content version always remains at 1, only the content revision gets updated with a new content ID and hence RDC for Applications will not occur. This is not a limitation of Nomad, but simply the way the Application model is implemented in Configuration Manager 2012.
  • The NomadBranch service skips RDC calculations while generating LSZ of a package for which LSZ of version n-1 has not been generated earlier or if the LSZgen request is for the first version of the package. Nomad only performs BDR for packages that are 1 version different (N-1) from the cached version. If the content is at version 3 and the client retrieving content has version 1 in cache, the client will retrieve the entire package. This sounds like a big caveat, but chances are that when Nomad goes to get the content there will be a peer in the local site that has it already, so the package will not be transferred across the WAN link. Also, if the machine doesn’t have the N-1 version and another machine in the site does have the N-1 version, that content will be retrieved from the peer and only the delta content will be retrieved from the DP. In the event that it did have to traverse the WAN, Nomad will never step on your business traffic. See http://www.1e.com/blogs/2014/09/01/nomad-and-binary-differential-replication/ 
  • RDC is done between the DP and the elected master only in a subnet. The remaining machines or peers in the subnet will copy all the blocks of files modified in the package using normal P2P or local multicast. RDC_alt copy takes place when the elected master does not have the previous version of the package but another machine on the subnet has it. The elected master can still do RDC file copy by copying the required blocks using RDC_alt copy from the other machine on the subnet.
  • Nomad automatically performs BDR functionality for packages over 125MB in size. Packages smaller than this do not benefit from BDR.

The state of the NomadBranch log when things are working

Client log

The Nomad client has to download version 50 of the package and it has set RDC previous version to 49 which must be present in order for RDC to work:

05-12-2016 18:27:24       WARNING: stale ELD P010051E(49)           Copy_P010051E(50)        8644 (0x21C4)
05-12-2016 18:27:24       LM16294 caching "http://1ETRAINCMPRI.1ETRAIN.lOCAL/SMS_DP_SMSPKG$/P010051E" to "C:\ProgramData\1E\NomadBranch\P010051E_Cache"  Copy_P010051E(50)        8644 (0x21C4)
05-12-2016 18:27:24       CopyLoop started. PackageID: P010051E(50), PackageSource: http://1ETRAINCMPRI.1ETRAIN.lOCAL/SMS_DP_SMSPKG$/P010051E, CachePath: C:\ProgramData\1E\NomadBranch\P010051E_Cache      Copy_P010051E(50)        8644 (0x21C4)
05-12-2016 18:27:24       Setting RDC prev Version=49      Copy_P010051E(50)        8644 (0x21C4)
05-12-2016 18:27:24       PkgCacheStatusExtra P010051E(50) was 49           Copy_P010051E(50)        8644 (0x21C4)
05-12-2016 18:27:24       PkgCacheStatusExtra2 P010051E(50) was 49        Copy_P010051E(50)        8644 (0x21C4)
05-12-2016 18:27:24       WARNING: CalcPercent version changed local=49 required=50    Copy_P010051E(50)        8644 (0x21C4)
05-12-2016 18:27:24       RequestElection "P010051E"(50) - Startup            Copy_P010051E(50)        8644 (0x21C4)

DP log

Nomad logging events while it is generating LSZ file for version 50 with CRC and RDC. And it could find that RDC for LSZ version 49 was already processed:

05-12-2016 18:27:27       Generating "P010051E_50.LsZ" from SIS location D:\SCCMContentLib\P010051E with hash 800C8C13CC3DBE5EEDF5C6625E99B5BCE9F2825C7057CB9FE82E6394A462DBB9                LSZwork_P010051E(50)                15084 (0x3AEC)
05-12-2016 18:27:27       Generating List LSZFILES\P010051E_50.LsZ with CRCs and with RDCdata from P010051E.50                LSZwork_P010051E(50) 15084 (0x3AEC)
05-12-2016 18:27:27       RDC: Processed previous version LSZ (P010051E_49.LsZ) - OK       LSZwork_P010051E(50)                15084 (0x3AEC)
05-12-2016 18:27:27       Comparing \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.49.tar \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.50.tar for "install - Original.xml" to "\\?\C:\ProgramData\1E\NomadBranch\LSZFILES\RDCdata\P010051E_49_50\install - Original.xml.needs.bin"                LSZwork_P010051E(50) 15084 (0x3AEC)
05-12-2016 18:27:27       Comparing \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.49.tar \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.50.tar for "Install.bat" to "\\?\C:\ProgramData\1E\NomadBranch\LSZFILES\RDCdata\P010051E_49_50\Install.bat.needs.bin"                LSZwork_P010051E(50) 15084 (0x3AEC)
05-12-2016 18:27:27       Comparing \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.49.tar \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.50.tar for "install.xml" to "\\?\C:\ProgramData\1E\NomadBranch\LSZFILES\RDCdata\P010051E_49_50\install.xml.needs.bin"                LSZwork_P010051E(50) 15084 (0x3AEC)
05-12-2016 18:27:27       Comparing \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.49.tar \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.50.tar for "setup.exe" to "\\?\C:\ProgramData\1E\NomadBranch\LSZFILES\RDCdata\P010051E_49_50\setup.exe.needs.bin"                LSZwork_P010051E(50) 15084 (0x3AEC)
05-12-2016 18:27:27       Comparing \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.49.tar \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.50.tar for "uninstall.xml" to "\\?\C:\ProgramData\1E\NomadBranch\LSZFILES\RDCdata\P010051E_49_50\uninstall.xml.needs.bin"                LSZwork_P010051E(50) 15084 (0x3AEC)
05-12-2016 18:27:27       Comparing \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.49.tar \\?\C:\ProgramData\1E\NomadBranch\LSZfiles\TarFiles\P010051E.50.tar for "Office\Data\v32.cab" to "\\?\C:\ProgramData\1E\NomadBranch\LSZFILES\RDCdata\P010051E_49_50\Office\Data\v32.cab.needs.bin"                LSZwork_P010051E(50) 15084 (0x3AEC)


The state of the NomadBranch log when it cannot find the previous version

Client log

Client log at 10:00: Client tried to download the content P010051E(42) from DP 1ETRAINCMPRI.1ETRAIN.lOCAL.

18-11-2016 10:01:37       Starting TransferFile 0.000% blks=34945 (F=)       Copy_P010051E(42)        6336 (0x18C0)
18-11-2016 10:01:37       Nomad Branch event Evt_StartedCopy :  HTTP from http://1ETRAINCMPRI.1ETRAIN.lOCAL/SMS_DP_SMSPKG$/P010051E for P010051E               Copy_P010051E(42)                6336 (0x18C0)

DP log

DP log: DP also received the LSZ gen request but could not find the previous version because it could not find the previous version 41 of this package, so it downloaded version 42 from the DP.

18-11-2016 10:00:55       Generating "P010051E_42.LsZ" from SIS location D:\SCCMContentLib\P010051E with hash 3A0C6CAD223B5B244D8AF3CAE1C127B916699F91AD4D8D57B7EE69B2980FE834              LSZwork_P010051E(42)
18-11-2016 10:00:55       Generating List LSZFILES\P010051E_42.LsZ with CRCs and with RDCdata from P010051E.42                LSZwork_P010051E(42) 5472 (0x1560)
18-11-2016 10:00:55       No RDC: Cannot find previous version LSZ (\\?\C:\ProgramData\1E\NomadBranch\LSZFILES\P010051E_41.LsZ) - The system cannot find the file specified                LSZwork_P010051E(42) 5472 (0x1560)

Things to note

When you are resolving RDC issues:

  • Ensure that RDC installed on the site server and on any Branch Distribution Points (BDP). The Nomad client does not need RDC on it.
  • Additionally, you will need to select the Binary Differential Replication checkbox in the properties of any package for which you want to use BDR. 
  • Ensure that the RDC content are one version different from the cached version.
  • Ensure that the content size is more than 125 MB. Packages smaller than this do not benefit from BDR. 
  • Check where the SMSSIG$ folder is on the DP and compare it with the path in the Nomad registry setting HKLM\Softwares\1E\Nomad\SigsFolder. If it is not set, Nomad assumes that signature files location as C:\SMSSIG$, if it exists.