M-Stream

Last updated on Feb 9, 2024

M-Stream is an Access Anywhere feature that speeds up the uploading, downloading and copying of very big files. Large files are split into pieces, sent in parallel over multiple streams, and reassembled back into a contiguous file or object at the target. In this way M-Stream maximizes throughput over available network bandwidth, minimizes network latency, and increases resiliency, particularly for wide area networks.

When is M-Stream Used

M-Stream is used when moving data between any of the following storage providers provided they support range reads.

  • CIFS/SMB
  • Swift API (SwiftStack, OpenStack Swift, Swift based clouds)
  • S3 API (certified on AWS S3, Cloudian, IBM COS)
  • Azure Blob
  • Filesystem (FS, Local block storage, StorNext, Ceph FS and many others)

M-Stream will also accelerate moves, copies and renames (because renames require copying the file that is being renamed) between buckets within an S3 or OpenS3 provider.

M-Stream will also accelerate the downloads from one of the above storage providers to the Windows and Mac desktop clients. M-Stream also provides accelerated uploads through the Web File Manager when storage for which M-Stream transfers are supported is used.

M-Stream for Upload

M-Stream streams parts in parallel directly to storage providers. M-Stream will not be used when an upload is performed outside Access Anywhere, when the file size is not known, or when the file content will be encrypted.

For example when:

  • Direct upload is used (when both client and provider have 'direct upload' enabled)
  • Chunking is enabled (uncommon)
  • File uploaded through FTP (as the file size is not provided)
  • Encryption is enabled
  • Antivirus scanning is enabled.

Enabling M-Stream

To enable M-Stream follow the steps below:

From Appladmin Account

Go to Settings » Site Functionality, adjust the M-Stream field settings in light of the following information:

  • M-Stream minimum file size:
    • If set to 0, M-Stream will be disabled
    • If set too small, then too much overhead will be added, adversely affecting the performance.
    • If set too large, then full potential of M-Stream will not be utilized
    • Default multipart upload size (This only applies to S3 based storage and needs to be between 5MB and 4GB)
    • Ranged read block size for FS and HPSS providers: This only applies to FS or HPSS providers and specifies the block size for reading data. We recommend 4096 (4K) to (4M). Must be a base 2 integer.
    • Write block size for FS and HPSS providers: (Same as point 4, but controls writing to FS or HPSS)
  • M-Stream number of threads:
    • Should be set to 10 or (no. of web node vCPUs - 2), whichever is lower
    • Enable Direct Upload: Should be set to Off

From Team Admin Account

Go to Dashboard » Provider Settings:

  • Set Chunking “OFF”
  • Turn MPU/DLO “ON” (If provider supports MPU/DLO)

Go to Policies » Encryption:

  • Disable Encryption. (Accelerated transfer will not be used for files encrypted with NAA encryption. SSE encryption or other storage encryption allow accelerated transfer.)

Go to Policies » Security:

  • “Enable Antivirus for uploads:” is turned “Off”

Enabling For Windows Tools

From Cloud Tools » Control Panel » Bandwidth:

  • Enable Allow multistream downloads
  • Pick minimum file size (100 - 4096 MB)
  • Pick up to 4 streams of data (Max 1 per CPU)
  • Determine if Cloud Drive should also use M-Stream

Notes

  • Provider must support MPU/DLO and range read.
  • File system must support Random I/O. (Controlled by the read / write block size)
  • M-Stream requires no user interaction. It works automatically when conditions allow.
  • If a file is being uploaded using M-Stream then MD5 of the file will not be calculated, even if the feature “Calculate MD5 for upload” is enabled.