{"id":7327,"date":"2021-12-07T14:09:53","date_gmt":"2021-12-07T14:09:53","guid":{"rendered":"https:\/\/www.insentragroup.com\/au\/?p=7327"},"modified":"2024-09-20T03:28:10","modified_gmt":"2024-09-20T03:28:10","slug":"enhancing-citrix-mcs-and-microsoft-azure-part-2-accelerated-networking","status":"publish","type":"post","link":"https:\/\/www.insentragroup.com\/au\/insights\/geek-speak\/cloud-and-modern-data-center\/enhancing-citrix-mcs-and-microsoft-azure-part-2-accelerated-networking\/","title":{"rendered":"Enhancing Citrix MCS and Microsoft Azure \u2013 Part 2: Accelerated Networking"},"content":{"rendered":"\n<p>Adding capability for Accelerated Networking with Citrix MCS provisioned workloads.\u00a0<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"940\" height=\"393\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_1.png\" alt=\"\" class=\"wp-image-7329\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_1.png 940w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_1-300x125.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_1-768x321.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p>This is the second part of an ongoing series around enhancing Citrix MCS within Azure. <a href=\"https:\/\/www.insentragroup.com\/au\/insights\/geek-speak\/cloud-and-modern-data-center\/enhancing-citrix-mcs-and-microsoft-azure-part-1-identity-disk-cost-optimisation\/\" target=\"_blank\" rel=\"noreferrer noopener\">The first post<\/a> focused on optimising identity disk costs via\u00a0<a href=\"https:\/\/jkindon.com\/2020\/10\/27\/enhancing-citrix-mcs-and-microsoft-azure-part-1-identity-disk-cost-optimization\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">PowerShell and Azure Automation<\/a>. This is post will tackle one of the biggest impacting performance optimisations you can make to machines within Azure: Accelerated Networking.<\/p>\n\n\n\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/virtual-network\/create-vm-accelerated-networking-powershell\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Accelerated Networking<\/a>\u00a0is defined by Microsoft as:<\/p>\n\n\n\n<p><em>Accelerated networking enables single root I\/O virtualisation (SR-IOV) to a VM, greatly improving its networking performance. This high-performance path bypasses the host from the data path, which reduces latency, jitter and CPU utilisation for the most demanding network workloads on supported VM types<\/em><\/p>\n\n\n\n<p>Recapping on what we discussed last time, MCS in Azure uses on-demand provisioning which means for pooled or newly provisioned workloads (in the case of dedicated), which, when the machine is not powered on, it simply does not exist. The only evidence of the powered off machines existence (typically, and this assumes MCSIO is not in play) is a single identity disk and a single Network Interface. When the machine is powered on, it is created \u201con demand\u201d based on the provided provisioning scheme (ProvScheme). A new OSDisk is created (full cloned) and both the Identity disk and Network Interface attached to the machine at creation.<\/p>\n\n\n\n<p>In the context of this article, we are interested in the Network Interface. Accelerated Networking is configured on the Network Interface object itself, which works in conjunction with selected VM sizes and Operating Systems within the Azure Platform.<\/p>\n\n\n\n<p>At the time of writing, I would like to point out both the\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/virtual-network\/create-vm-accelerated-networking-powershell#supported-operating-systems\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">supported operating systems<\/a>\u00a0and\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/virtual-network\/create-vm-accelerated-networking-powershell#supported-vm-instances\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">supported VM instances<\/a>\u00a0are not reflective of what Azure is supporting. For instance, there is no mention of Windows 10 enterprise multi-session being supported, nor any mention of NV series machines. If you spin up a new machine in the portal, you will find accelerated networking is enabled by default (which only happens on a supported mix of OS and VM Instance sizes), and more importantly, the functionality of Accelerated Networking is perfectly fine across both NV series and Windows 10 Enterprise Multi-Session instances.<\/p>\n\n\n\n<p>Accelerated Networking requires a Mellanox driver. This driver is injected at machine boot and does not need to exist on the master image as demonstrated below<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"232\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_2-1024x232.png\" alt=\"\" class=\"wp-image-7331\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_2-1024x232.png 1024w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_2-300x68.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_2-768x174.png 768w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_2.png 1063w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>I have seen massive performance increases when enabling Accelerated Networking, the results can be staggering when enabled the whole way through (server and client) and as such, should be enabled everywhere it can be. Unfortunately, at the time of writing, MCS doesn\u2019t provide any mechanism to enable this feature, PowerShell however, most certainly does.<\/p>\n\n\n\n<p>I have written a script which does the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Takes an input of a single, or multiple Resource Groups and a single or multiple Subscription list (You must use the ID of the subscription and not the name). I made Resource Groups the boundary the same as MCS driven provisioning, you are going to have one or many resource groups tied to a catalogue, all with the same ProvScheme and sizing, so it\u2019s a safe boundary. I added multi subscription due to scale requirements across large deployments<\/li><li>Searches through the Resource Group\/s and gathers an array of Network Interfaces. You can add an exclusion pattern if you would like to exclude certain Network Interfaces<\/li><li>For each Interface, it checks to see if the Interface is attached to a VM<ul><li>Given the nature of on-demand provisioning in pooled environments, if the machine is off, it doesn\u2019t exist and as such the Interface is ready to be enabled for Accelerated Networking<\/li><\/ul><ul><li>For persistent environment, the Interface will be attached to the machine, so the script checks the power state of the VM. If the machine is on, it\u2019s ignored, if the machine is deallocated, then the Interface is enabled for Accelerated Networking<\/li><\/ul><\/li><\/ul>\n\n\n\n<p>A word of warning at this point. I have no way of checking to see what the machine type is when the machine doesn\u2019t exist. So, if the script finds a Network Interface which is unattached, it will enable Accelerated Networking. Do your homework before enabling this and make sure your Instance sizes are ok. Luckily, for persistent machines, the \u201cenable\u201d action will fail if attached to a machine with an unsupported Instance Size<\/p>\n\n\n\n<h3 style=\"padding-bottom: 15px;margin-bottom: 30px;margin-top: 40px;border-bottom: 1px solid #f16020;color: #f16020\"><span>EXECUTING THE SCRIPT<\/span><\/h3>\n\n\n\n<p>Once again, to provide a zero touch self-managing solution, Azure Automation Accounts is our go to. You will need:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>An Automation account with permissions adequate to alter resources in the target subscriptions. I used Contributor<\/li><li>You must import the following modules into the Automation Account (they are available in the gallery)<ul><li>AZ.Accounts<\/li><\/ul><ul><li>AZ.Resources<\/li><\/ul><ul><li>AZ.Compute<\/li><\/ul><ul><li>AZ.Network<\/li><\/ul><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"200\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_3-1024x200.png\" alt=\"\" class=\"wp-image-7332\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_3-1024x200.png 1024w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_3-300x59.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_3-768x150.png 768w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_3.png 1063w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>You can then create a PowerShell Runbook to execute the code<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_4.png\" alt=\"\" class=\"wp-image-7333\" width=\"468\" height=\"501\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_4.png 467w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_4-280x300.png 280w\" sizes=\"(max-width: 468px) 100vw, 468px\" \/><\/figure>\n\n\n\n<p>In the editor window,\u00a0<a href=\"https:\/\/github.com\/JamesKindon\/Citrix\/blob\/master\/Azure\/EnableAcceleratedNetworking.ps1\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">copy in the code<\/a>\u00a0and set the appropriate parameter values. You can change the parameter variables at this stage to your subscriptions (ID does not name) and resource groups<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"398\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_5-1024x398.png\" alt=\"\" class=\"wp-image-7334\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_5-1024x398.png 1024w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_5-300x117.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_5-768x298.png 768w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_5.png 1063w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Set the isAzureRunbook parameter to true. This will flick the authentication model over to use the Automation Account. The script can be executed manually as required by switching the parameter to false (the same rules apply permissions wise at this point). Run a test to make sure life is ok<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_6.png\" alt=\"\" class=\"wp-image-7335\" width=\"610\" height=\"168\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_6.png 844w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_6-300x83.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_6-768x212.png 768w\" sizes=\"(max-width: 610px) 100vw, 610px\" \/><\/figure>\n\n\n\n<p>Or you can save and publish the code, and move on to the schedule<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"854\" height=\"261\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_7.png\" alt=\"\" class=\"wp-image-7336\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_7.png 854w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_7-300x92.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_7-768x235.png 768w\" sizes=\"(max-width: 854px) 100vw, 854px\" \/><\/figure>\n\n\n\n<p>A schedule is used to execute the code, it is also a great place to be able to specify different values for the predefined parameters as required<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"844\" height=\"239\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_8.png\" alt=\"\" class=\"wp-image-7337\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_8.png 844w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_8-300x85.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_8-768x217.png 768w\" sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/figure>\n\n\n\n<p>Choose your schedule options (ideally at a time when the identity disks will not be in use), this can be lined up with Citrix Autoscale schedules<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"797\" height=\"560\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_9.png\" alt=\"\" class=\"wp-image-7338\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_9.png 797w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_9-300x211.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_9-768x540.png 768w\" sizes=\"(max-width: 797px) 100vw, 797px\" \/><\/figure>\n\n\n\n<p>Optionally, you can specify some parameters in the schedule rather than relying on hardcoding them in the script, else you can just use the defaults<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"819\" height=\"298\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_10.png\" alt=\"\" class=\"wp-image-7339\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_10.png 819w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_10-300x109.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_10-768x279.png 768w\" sizes=\"(max-width: 819px) 100vw, 819px\" \/><\/figure>\n\n\n\n<p>By default, the default parameters are used as per script values<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"718\" height=\"527\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_11.png\" alt=\"\" class=\"wp-image-7340\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_11.png 718w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_11-300x220.png 300w\" sizes=\"(max-width: 718px) 100vw, 718px\" \/><\/figure>\n\n\n\n<p>OK through the schedule panes and you are done (there is a minimum of 1 hour lag time for the first scheduled run from time of creation, so you might want to run the job manually)<\/p>\n\n\n\n<p>When your job executes, you should find a nice amount of verbose output, tracking through everything which has been actioned (or not)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"635\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_12-1024x635.png\" alt=\"\" class=\"wp-image-7341\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_12-1024x635.png 1024w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_12-300x186.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_12-768x476.png 768w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_12.png 1063w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>When we find Interfaces which match the criteria, the enablement occurs<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"97\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_13-1024x97.png\" alt=\"\" class=\"wp-image-7342\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_13-1024x97.png 1024w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_13-300x29.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_13-768x73.png 768w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_13.png 1063w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"851\" height=\"216\" src=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_14.png\" alt=\"\" class=\"wp-image-7343\" title=\"\" srcset=\"https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_14.png 851w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_14-300x76.png 300w, https:\/\/www.insentragroup.com\/au\/wp-content\/uploads\/sites\/22\/2021\/12\/james_kindon_blog_2_12072021_img_14-768x195.png 768w\" sizes=\"(max-width: 851px) 100vw, 851px\" \/><\/figure>\n\n\n\n<p>There you have it, fully contained within Azure, and scalable as you scale in and out with your MCS based workloads. If you scale across subscriptions, simply add your subscription ID to the process list, if you add resource groups then add to the list. The rest is handled for you.<\/p>\n\n\n\n<h3 style=\"padding-bottom: 15px;margin-bottom: 30px;margin-top: 40px;border-bottom: 1px solid #f16020;color: #f16020\"><span>SUMMARY<\/span><\/h3>\n\n\n\n<p>Once again, MCS is amazing at doing what it does, however Azure provides a number of performance enhancements which should be enabled to maximise user experience and general performance. Accelerated Networking is one capability we can tackle whilst still consuming the brains of MCS, unfortunately there are others we cannot just yet (Proximity Placement Groups etc), so if maximum performance is required with extremely latency sensitive workloads, then maybe MCS doesn\u2019t make sense right now \u2013 however this is a topic for another post.<\/p>\n\n\n\n<p>Feel free to add to the code should there be any enhancements or suggestions, happy to add or alter if there is value.<\/p>\n\n\n\n<p>The script is located in my github\u00a0<a href=\"https:\/\/github.com\/JamesKindon\/Citrix\/blob\/master\/Azure\/EnableAcceleratedNetworking.ps1\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">here<\/a>. For more of my blogs <a href=\"https:\/\/www.insentragroup.com\/au\/insights\/insights-search-results\/?author=James%20Kindon\" target=\"_blank\" rel=\"noreferrer noopener\">click here<\/a>. This blog was originally published on <a href=\"https:\/\/jkindon.com\/enhancing-citrix-mcs-and-microsoft-azure-part-2-accelerated-networking\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">jkindon.com<\/a> and reposted here with permission.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Adding capability for Accelerated Networking with Citrix MCS provisioned workloads.\u00a0<\/p>\n","protected":false},"author":86,"featured_media":7346,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[21],"tags":[],"class_list":["post-7327","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-and-modern-data-center","entry"],"_links":{"self":[{"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/posts\/7327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/users\/86"}],"replies":[{"embeddable":true,"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/comments?post=7327"}],"version-history":[{"count":4,"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/posts\/7327\/revisions"}],"predecessor-version":[{"id":8910,"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/posts\/7327\/revisions\/8910"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/media\/7346"}],"wp:attachment":[{"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/media?parent=7327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/categories?post=7327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.insentragroup.com\/au\/wp-json\/wp\/v2\/tags?post=7327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}