2.1.1.3 SMB 2.1 or 3.x Metadata Retrieval

A Server Message Block (SMB) 2.1 or 3.x request for Content Caching and Retrieval starts with the client application opening a remote file. During this stage, an SMB 2.1 or 3.x Tree Connect allows the content client to determine whether the remote share supports hash lists. If the file is unavailable (cannot be retrieved from the local cache) and the share supports hash lists, the local cache service requests the hash list.

After the local cache service supplies the hash list to the content cache service to retrieve the data, the data, if available, is returned to the local cache service. For unsuccessful local cache lookups (missing blocks), a request is broadcast by using the Peer Content Caching and Retrieval Discovery Protocol [MS-PCCRD]. If data is found in a peer client, the data is retrieved by using the Peer Content Caching and Retrieval: Retrieval Protocol [MS-PCCRR]. The data is placed in the content cache and delivered to the local cache service driver, which places the data in the local cache. Then, the data is returned to the client application.

The sequence of messages for an SMB 2.1 or 3.x request with Content Caching and Retrieval is shown in the following figure and is as follows:

SMB 2.1 or 3.x metadata retrieval

Figure 4: SMB 2.1 or 3.x metadata retrieval

  1. The client application opens a remote file. During this stage, an SMB 2.1 or 3.x Tree Connect allows the content client to determine whether the remote share supports hash lists.

  2. An attempt is first made to retrieve the file from the local cache.

  3. If the file is unavailable and the share supports hash lists, the local cache service requests the hash list.

  4. The SMB 2.1 or 3.x client requests hashes.

  5. The SMB 2.1 or 3.x server driver accesses the hash lists.

  6. The SMB 2.1 or 3.x server driver returns the hash list to the SMB 2.1 or 3.x client.

  7. The SMB 2.1 or 3.x client driver returns the hash list to the local cache service.

  8. The local cache service supplies the hash list to the content cache service to retrieve the data.

  9. The data, if available, is returned to the local cache service. For unsuccessful local cache lookups (missing blocks), a request is broadcast by using the Peer Content Caching and Retrieval Discovery Protocol [MS-PCCRD]. If data is found in a peer client, the data is retrieved by using the Peer Content Caching and Retrieval: Retrieval Protocol [MS-PCCRR].

  10. The data is placed in the content cache and delivered to the local cache service driver.

  11. The data is placed in the local cache.

  12. The data is returned to the client application.

  13. If no hash list was available and the data was directly returned from the content server, then the hash list generation is initiated on the content server.

  14. The hash list can be independently created by running the HashGen utility on the content server.

  15. The generated hash list is stored to make it available for future client requests.