30 KiB
title, manager, description, keywords, ms.prod, ms.mktglfcycl, audience, author, ms.localizationpriority, ms.author, ms.collection, ms.topic
title | manager | description | keywords | ms.prod | ms.mktglfcycl | audience | author | ms.localizationpriority | ms.author | ms.collection | ms.topic |
---|---|---|---|---|---|---|---|---|---|---|---|
Microsoft Connected Cache for Internet Service Providers (ISPs) | dougeby | Details on Microsoft Connected Cache (MCC) for Internet Service Providers (ISPs). | updates, downloads, network, bandwidth | w10 | deploy | itpro | carmenf | medium | carmenf | M365-modern-desktop | article |
Microsoft Connected Cache for Internet Service Providers (ISPs)
Applies to
- Windows 10
- Windows 11
Overview
Important
Microsoft Connected Cache is currently a private preview feature. During this phase we invite customers to take part in early access for testing purposes. This phase does not include formal support, and should not be used for production workloads. For more information, see Supplemental Terms of Use for Microsoft Azure Previews.
Microsoft Connected Cache (MCC) preview is a software-only caching solution that delivers Microsoft content within Enterprise networks. MCC can be deployed to as many physical servers or VMs as needed, and is managed from a cloud portal. Microsoft cloud services handle routing of consumer devices to the cache server for content downloads.
MCC is a hybrid (a mix of on-prem and cloud resources) SaaS solution built as an Azure IoT Edge module; it is a Docker compatible Linux container that is deployed to your Windows devices. IoT Edge for Linux on Windows (EFLOW) was chosen because it is a secure, reliable container management infrastructure. EFLOW is a Linux virtual machine, based on Microsoft's first party CBL-Mariner operating system. It’s built with the IoT Edge runtime and validated as a tier 1 supported environment for IoT Edge workloads. MCC will be a Linux IoT Edge module running on the Windows Host OS. Azure IoT Edge consists of three components that the MCC infrastructure will utilize:
- A cloud-based interface that enables secure, remote installation, monitoring, and management of MCC nodes.
- A runtime that securely manages the modules deployed to each device.
- Modules/containers that run the MCC functionality on your device.
How MCC works
The following steps describe how MCC is provisioned and used.
-
The Azure Management Portal used to create and manage MCC nodes.
-
The MCC container is deployed and provisioned to the server.
-
The Azure Management Portal is used to configure Microsoft Delivery Optimization Services to route traffic to the MCC server by providing two pieces of information:
- The publicly accessible IPv4 address of the server hosting the MCC container.
- The CIDR blocks that represent the client IP address space, which should be routed to the MCC node.
-
Microsoft end-user devices periodically connect with Microsoft Delivery Optimization Services, and the services match the IP address of the client with the IP address of the corresponding MCC node.
-
Microsoft end-user devices make the range requests for content from the MCC node.
-
An MCC node pulls content from the CDN, seeds its local cache stored on disk, and delivers the content to the client.
-
Subsequent requests from end-user devices for content will now come from cache.
-
If the MCC node is unavailable, the client will pull content from CDN to ensure uninterrupted service for your subscribers.
ISP Requirements for MCC
-
Azure subscription: The MCC management portal is hosted within Azure, and is used to create the Connected Cache Azure resource and IoT Hub resource. Both are free services.
Your Azure subscription ID is first used to provision MCC services, and enable access to the preview. The MCC server requirement for an Azure subscription will cost you nothing. If you don't have an Azure subscription already, you can create an Azure Pay-As-You-Go account which requires a credit card for verification purposes. For more information, see the Azure Free Account FAQ.
The resources used for the preview, and in the future when this product is ready for production, will be completely free to you - like other caching solutions.
Note
If you request Exchange or Public peering in the future, business email addresses must be used to register ASN's, because Microsoft does not accept gmail or other non-business email addresses.
-
Hardware to host MCC: The recommended configuration will serve approximately 35,000 consumer devices, downloading a 2GB payload in 24-hour timeframe at a sustained rate of 6.5 Gbps.
Disk requirements:
- SSDs are recommended due to improved cache read speeds of SSD, compared to HDD.
- Using multiple disks is recommended to improve cache performance.
- RAID disk configurations are discouraged because cache performance will be impacted. If you're using RAID disk configurations, ensure striping.
- The maximum number of disks supported is 10.
NIC requirements:
- Multiple NICs on a single MCC instance are not supported.
- 10Gbps NIC is the minimum speed recommended, but any NIC is supported.
Sizing recommendations
Component | Minimum | Recommended |
---|---|---|
OS | Ubuntu 20.04 LTS VM or physical server | Ubuntu 20.04 LTS VM or physical server (preferred) |
NIC | 10 Gbps | at least 10 Gbps |
Disk | SSD 1 drive 2TB each |
SSD 2-4 drives at least 2TB each |
Memory | 8GB | 32GB or greater |
Cores | 4 | 8 or more |
Steps to deploy MCC
To deploy MCC:
- Provide Microsoft with the Azure subscription ID
- Create the MCC Resource in Azure
- Create an MCC Node: IP address space approval information is required for this step.
- Edit Cache Node Information
- Set up your server
- Install MCC on a physical server or VM
- Verify proper functioning MCC server
- Review the MCC summary report
- Review common issues if needed.
For questions regarding these instructions contact msconnectedcache@microsoft.com
Provide Microsoft with the Azure Subscription ID
As part of the MCC preview onboarding process an Azure subscription ID must be provided to Microsoft.
Important
Contact Microsoft and provide your Azure subscription ID if you have not already. You'll not be able to proceed if you skip this step.
For information about creating or locating your subscription ID, see Steps to obtain an Azure Subscription ID.
Create the MCC resource in Azure
The MCC Azure management portal is used to create and manage MCC nodes. An Azure Subscription ID is used to grant access to the preview and to create the MCC resource in Azure and Cache nodes.
Send email to the MCC team (msconnectedcache@microsoft.com) with your Azure subscription ID to get access to the preview. The team will send you a link to the Azure portal, which will allow you to create the resource described below.
-
Choose Create a resource
-
Type Microsoft Connected Cache into the search box, and hit Enter to show search results.
-
Select Microsoft Connected Cache and choose Create on the next screen to start the process of creating the MCC resource.
-
Fill in the required fields to create the MCC resource.
- Choose the subscription that you provided to Microsoft.
- Azure resource groups are logical groups of resources. Create a new resource group and choose a name for your resource group.
- Choose (US) West US” for the location of the resource. This choice will not impact MCC if the physical location isn't in the West US, it is just a limitation of the preview.
Note
Your MCC resource will not be created properly if you don't select (US) West US
-
Once all the information has been entered, click the Review + Create button. Once validation is complete, click the Create button to start the resource creation.
Error: Validation failed
-
If you get a Validation failed error message on your portal, it is likely because you selected the Location as US West 2 or some other location that isn't (US) West US.
-
To resolve this error, go to the previous step and choose (US) West US.
Create an MCC node in Azure
Creating a MCC node is a multi-step process and the first step is to access the MCC private preview management portal.
-
After the successful resource creation click on the Go to resource.
-
Under Cache Node Management section on the leftmost panel, click on Cache Nodes.
-
On the Cache Nodes blade, click on the Create Cache Node button.
-
Clicking the Create Cache Node button will open the Create Cache Node page; Cache Node Name is the only field required for cache node creation.
Field Name | Expected Value | Description |
---|---|---|
Cache Node Name | Alphanumeric name that includes no spaces. | The name of the cache node. You may choose names based on location like Seattle-1. This name must be unique and can't be changed later. |
Server II Address | Ipv4 Address | IP address of your MCC server. This is used to route end-user devices in your network to the server for Microsoft content downloads. The IP address must be publicly accessible. |
Address Range/CIDR Blocks | IPv4 CIDR notation | IP Address range/CIDR blocks that should be routed to the MCC server as a comma separated list. For example: 2.21.234.0/24 , 3.22.235.0/24 , 4.23.236.0/24 |
Enable Cache Node | Enable/Disable Radio Button | Enable permits the cache node to receive content requests. Disable prevents the cache node from receiving content requests. Cache nodes are enabled by default. |
Hovering your cursor next to each field will populate the details of that field.
There are two other read-only fields on this page that are populated after the cache node is created:
Field Name | Description |
---|---|
IP Space | Number of IP addresses that will be routed to your cache server. |
Activation Keys | Set of keys to activate your cache node with the MCC services. Copy the keys for use during install. The CustomerID is your Azure subscripiton ID. |
-
Enter the information for the Cache Node and click on the Create button. In the screenshot below only the Cache Node Name is provided, but all information can be included if desired.
If there are errors the form will provide guidance on how to correct the errors. For example:
- The cache node name is in use in the resource or is an incorrect format.
- If the CIDR block notation or list is incorrect.
- The server IP address or CIDR block are already in use.
See the following example with all information entered:
Once the MCC Node has been created, the installer instructions will be exposed. More details on the installer instructions will be addressed later in this doc can be found at the Install Connected Cache section.
IP address space approval
There are three states for IP address space that are explained in the table below. The preview will require approval from Microsoft CIDR block ranges that contain more than 50,000 IP addresses. In the future, MCC configuration will support BGP and will therefore have automatic routing capabilities.
IP address space status | Description |
---|---|
Valid | The IP address space is below the 50,000 IP address space threshold and the space does not overlap with existing cache nodes. |
In Review | The IP address space exceeds the 50,000 IP address space and is under review with Microsoft to ensure valid IP address space. |
Attention Required | The IP address space has been reviewed and an issue was discovered. Some examples include: IP address space overlap with existing cache node belonging to another customer. IP address space was exceedingly large. Contact Microsoft for more information if your IP address space has this status. |
See the following example:
Edit Cache Node Information
IP address or CIDR information can be modified for existing MCC nodes in the portal.
To edit IP address or CIDR information, click on the Cache Node Name which will open the Cache Node Configuration page. Cache nodes can be deleted here by clicking the check box to the left of a Cache Node Name and then clicking the delete toolbar item. Be aware that if a cache node is deleted, there is no way to recover the cache node or any of the information related to the cache node.
The Server IP Address, Address Range/CIDR Blocks, and Enable Cache Node are all editable as show below:
Set up a server with SR or an Ubuntu
The MCC module is optimized for Ubuntu 20.04 LTS. Install Ubuntu 20.04 LTS on a physical server or VM of your choice. As discussed earlier, the recommended configuration (details below) will serve approximately 35,000 consumer devices downloading a 2GB payload in 24-hour timeframe at a sustained rate of 6.5 Gbps.
Minimum | Recommended | |
---|---|---|
Server | Ubuntu 20.04 LTS VM or physical server | Ubuntu 20.04 LTS VM or physical server (preferred) |
NIC | 10 Gbps | 10 Gbps |
Disk | SSD 1 – 2 drives minimum 2 TB each minimum | SSD 2 – 4 drives minimum 2 TB each minimum |
Memory | 8 GB | 32 GB or more |
Cores | 4 | 8 or more |
Install MCC
Installing MCC on your physical server or VM is a straightforward process. A Bash script installer performs the following tasks:
- Azure IoT Edge relies on an OCI-compatible container runtime. The script will install the Moby engine and CLI.
- Installs IoT Edge.
- Installs SSH to support remote access to the server
- Enables the firewall and opens port 80 for inbound and outbound traffic. Port 80 is used by MCC.
- Configures Connected Cache tuning settings.
- Creates the necessary FREE Azure resource - IoT Hub/IoT Edge.
- Deploys the MCC container to server.
Important
Ensure that port 5000 is open so Microsoft can verify proper functioning of the cache server
Steps to install MCC
-
Download and unzip mccinstaller.zip from the create cache node page or cache node configuration page which contains the necessary installation files.
Files contained in the mccinstaller.zip file:
- installmcc.sh – main installer file.
- installIotEdge.sh – Installs the necessary prerequisites like IoT Edge runtime and Docker and makes necessary host OS settings to optimization caching performance.
- resourceDeploymentForConnectedCache.sh – Creates Azure cloud resources required to support MCC control plane.
- mccdeployment.json – Deployment manifest used by IoT Edge to deploy the MCC container and configure settings on the container like cache drives location sizes.
-
Copy all 4 installation files to your Linux server (physical or VM)
-
Before proceeding, ensure that you have a data drive configured on your server. You'll need to specify the location for this cache drive on step 9. Mimimum size for the data drive is 100GB. For instructions to mount a disk on a Linux VM, see Attach a data disk to a Linux VM
-
Open a terminal and change the access permissions to execute on the installmcc.sh Bash script file using chmod.
sudo chmod +x installmcc.sh
-
Copy the Bash script line provided and run the Bash script from the terminal.
-
You'll be prompted to sign in to the Azure Portal using a device code.
-
You'll be prompted to enter the Azure Container Registry (ACR) password for access to the MCC container.
-
You'll then be prompted with the number of drives to configure.
-
The script will prompt for location and size of the cache drives.
Important
The permissions / ownerships on the cache drive location will be changed to everyone via chmod 777
Don't point the cache drive location to any of the following: “.”, “./var”, “/”, “<space>”
Specifying any of the directories mentioned above will corrupt the VM and you will need to provision a new one.
-
If this is your first MCC deployment, select “n” when prompted for an IoT Hub. If this is not your first MCC deployment, you can use an existing IoT hub from your previous MCC installation. After selecting “Y”, we will display your existing IoT Hubs, you can copy and paste the resulting IoT Hub name to continue.
-
If there are no errors go to the next step.
- If there are errors, inspect the installer logs which are under /etc/mccresourcecreation/.
- If there were follow the instructions to [Troubleshoot your IoT Edge device(/azure/iot-edge/troubleshoot).
Verify Proper Functioning MCC Server
Verify client side
Sign in to the Connected Cache server or ssh and run the following command from a terminal to see the running modules (containers):
sudo iotedge list
If edgeAgent and 8edgeHub containers are listed, but not “MCC”, you may view the status of the IoTEdge security manager using the command:
sudo journalctl -u iotedge -f
For example, this command provides the current status of the starting, stopping of a container, or the container pull and start as is shown in the sample below:
Verify server side
It can take a few minutes for the container to deploy.
For a validation of properly functioning MCC, run the following command in the terminal of the cache server or any device in the network. Replace <CacheServerIP> with the IP address of the cache server.
wget http://<CacheServerIP>/mscomtest/wuidt.gif?cacheHostOrigin=au.download.windowsupdate.com
A successful test result will look like this:
Similarly, enter the following URL into a web browser on the network:
http://<CacheServerIP>/mscomtest/wuidt.gif?cacheHostOrigin=au.download.windowsupdate.com
If the test fails, see the common issues section below for more information.
Common Issues
Note
Consult the IoT Edge troubleshooting guide for any issues you may encounter configuring IoT Edge. A few common issues are listed below.
Use the following command to check the IoT Edge Journal:
sudo journalctl -u iotedge –f
DNS needs to be configured
Run the following IoT Edge setup/install state check:
sudo iotedge check --verbose
If you see issues with ports 5671, 443, and 8883 similar to the screenshot below, it means that your IoT Edge device needs to update the DNS for Docker.
Follow the steps below to configure the device to work with your DNS:
-
Use ifconfig to find appropriate NIC adapter name.
ifconfig
-
Run nmcli device show <network adapter> to show you the DNS name for Ethernet adapter. For example to show DNS information for eno1:
nmcli device show eno1
-
Open/create the Docker configuration file used to configure the DNS server
sudo nano /etc/docker/daemon.json
-
Paste the following into the daemon.json file (In the example above IP4.DNS[1] is used)
{ "dns": ["x.x.x.x"]}
-
Save the file changes to daemon.json. Note: You might need to change permissions on this file. For example:
sudo chmod 555 /etc/docker/daemon.json
-
Restart Docker (to pick up the new DNS) and restart IoTEdge
sudo systemctl restart dockersudo systemctl daemon-reloadsudo restart IoTEdge
Diagnostics Script
If you're having issues with your MCC, we included a diagnostics script which will collect all your logs and zip them into a single file. You can then send us these logs via email for the MCC team to debug.
To run this script:
- Navigate to the following folder in the MCC installation files:
mccinstaller > MccResourceInstall > Diagnostics
-
Run the following commands:
sudo chmod +x collectMccDiagnostics.sh sudo ./collectMccDiagnostics.sh
-
The script stores all the debug files into a folder and the creates a tar file. After the script is finished running, it will output the path of the tar file that you can share with the MCC team. The file should be /etc/mccdiagnostics/support_bundle_$timestamp.tar.gz.
-
Email the MCC team and attach this tar file, asking for debugging support. Screenshots of the error along with any other warnings you saw will be helpful during out debugging process.
Updating your MCC
Throughout the private preview phase, we will send you security and feature updates for MCC. Please follow these steps to perform the update.
Run the following commands with the arguments we provided in the email to update your MCC:
sudo chmod +x updatemcc.sh
sudo chmod +x installIoTEdge.sh
sudo ./updatemcc.sh version="\<**VERSION**\>" tenantid="\<**TENANTID**\>" customerid="\<**CUSTOMERID**\>" cachenodeid="\<**CACHENODEID**\>" customerkey="\<**CUSTOMERKEY**\>"
For example:
sudo ./updatemcc.sh version="msconnectedcacheprod.azurecr.io/mcc/linux/iot/mcc-ubuntu-iot-amd64:1.2.1.981" tenantid="799a999aa-99a1-99aa-99aa-9a9aa099db99" customerid="99a999aa-99a1-99aa-99aa-9aaa9aaa0saa" cachenodeid=" aa99aaaa-999a-9aas-99aa99daaa99 " customerkey="a99d999a-aaaa-aa99-0999aaaa99aa”
Uninstalling MCC
In the zip file, you'll find the file uninstallmcc.sh which uninstalls MCC and all the related components. Please contact the MCC Team before running this script and only run this script if you're facing issues with MCC installation. Exercise caution before running this script as existing IoT workflows in this VM will also be erased.
The uninstallmcc.sh script will remove the following:
- IoT Edge
- Edge Agent
- Edge Hub
- MCC
- Moby CLI
- Moby Engine
To run the script, enter the following commands:
sudo chmod +x uninstallmcc.sh
sudo ./uninstallmcc.sh
Appendix
Steps to obtain an Azure Subscription ID
- Sign in to https://portal.azure.com/ and navigate to the Azure services section.
- Click on Subscriptions. If you don't see Subscriptions, click on the More Services arrow and search for Subscriptions.
- If you already have an Azure Subscription, skip to step 5. If you don't have an Azure Subscription, select + Add on the top left.
- Select the Pay-As-You-Go subscription. You'll be asked to enter credit card information, but you'll not be charged for using the MCC service.
- On the Subscriptions blade, you'll find details about your current subscription. Click on the subscription name.
- After you select the subscription name, you'll find the subscription ID in the Overview tab. Click on the Copy to clipboard icon next to your Subscription ID to copy the value.
Performance of MCC in Hypervisor environments
We have observed in hypervisor environments the cache server peak egress at around 1.1 Gbps. If you wish to maximize the egress in hypervisor environments it is critical to make two settings changes.
-
Enable SR-IOV in the BIOS AND enable SR-IOV in the NIC properties, and finally, enable SR-IOV in the hypervisors for the MCC VM. Microsoft has found these settings to double egress when using a Microsoft Hyper-V deployment.
-
Enable “high performance” in the BIOS as opposed to energy savings. Microsoft has found this setting nearly doubled egress a Microsoft Hyper-V deployment.
Setting up a VM on Windows Server
You can use hardware that will natively run Ubuntu 20.04 LTS, or you can run an Ubuntu VM. The following steps describe how to set up a VM on Hyper-V.
-
Download the ISO. You can use either Ubuntu Desktop or Ubuntu Server.
-
Start the New Virtual Machine Wizard, give your VM a name, and choose a location.
-
Choose a Generation 2 VM, and specify the startup memory. You can't change the VM generation 2 later.
-
Choose the network adapter.
-
Set the virtual hard disk parameters. You should specify enough space for the OS and the content that will be cached. That example below allocates one terabyte.
-
Install from the ISO for Ubuntu 20.04 LTS that you downloaded.
-
Finish the creation of the Ubuntu VM.
-
Before you start the Ubuntu VM make sure secure boot is disabled and that you have allocated multiple cores to the VM. The example below has allocated 12, but your configuration may vary.
-
Start the VM and choose the option that will Install Ubuntu. Choose your default language.
-
Choose the options you wish for installing updates and third party hardware. In the example below, we have chosen to download updates and install third party software drivers.
-
If you had a previous version of Ubuntu installed, we recommend erasing and installing Ubuntu 16.04. Choose your time zone, and keyboard layout.
-
Choose your username, a name for your computer, and a password. Remember, everything is case sensitive in Linux. You'll be asked to reboot in order to complete the installation.
-
Important: When prompted with the option to upgrade, decline.
Your Ubuntu VM should now be ready to Install MCC.
IoT Edge runtime
The Azure IoT Edge runtime enables custom and cloud logic on IoT Edge devices. The runtime sits on the IoT Edge device, and performs management and communication operations. The runtime performs several functions:
- Installs and update workloads (Docker containers) on the device.
- Maintains Azure IoT Edge security standards on the device.
- Ensures that IoT Edge modules (Docker containers) are always running.
- Reports module (Docker containers) health to the cloud for remote monitoring.
- Manages communication between an IoT Edge device and the cloud.
For more information on Azure IoT Edge, please see the Azure IoT Edge documentation.
Also see
Microsoft Connected Cache for Enterprise and Education
Introducing Microsoft Connected Cache