The vast majority of VMware Homelabs is still Intel-based today but I have been seeing a slow rise of AMD-based kits being adopted, especially with AMD's desktop line of CPUs known as Ryzen. One of the considerations on whether you could use an AMD processor was whether you were planning to deploy NSX-T and in earlier releases, only Intel was supported as the NSX-T Edge required support for Data Plane Development Kit (DPDK) and this was only supported with Intel-based processors.
With the latest NSX-T 3.0 release, AMD-based processors are now supported and per the release notes, the following CPUs can be used:
- AMD EPYC 7xx1 Series (Naples)
- AMD EPYC 3000 Embedded Family and newer
- AMD EPYC 7xx2 Series (Rome)
You will notice that only AMD's server line of CPUs known as EPYC are currently supported, which makes sense for running Production workloads. If you attempt to deploy an NSX-T Edge Node running on a non-EPYC platform, you will get an error message stating the CPU is not supported and I figured this was probably due to the lack of DPDK support in the consumer CPUs.
Yesterday, in our internal "Homelab" Slack channel, I came across an interesting tidbit from Andrea Spagnolo, a Sr. Field Engineer in our Cloud Native Business Unit who shared a pretty neat trick on how to get latest NSX-T 3.0 release to work with a Ryzen-based CPU.
Disclaimer: This is not officially supported by VMware. The behaviors described here can change in the future
First off, I want to thank Andrea for sharing but also credit to Beniamino Guarnaschelli and his blog post here which actually gave Andrea the idea to take a closer look as he was trying to get this setup in his own personal homelab.
The way NSX-T ensures you that you a supported AMD CPU is by looking for the "AMD EPYC" string in the model name which is performed within the NSX-T Edge using the following /opt/vmware/nsx-edge/bin/config.py script. To bypass this check, we just need to comment out the lines that does the actual check.
Step 1 - Deploy an NSX-T Edge (either standalone or using the NSX-T Manager workflow)
Step 2 - SSH to NSX-T Edge as root and comment out lines 181-184
su - admin
start service dataplane
Step 4 - You can now configure the NSX-T Edge as a Transport Node and you will not run into any errors
Note: One additional issue that Andrea ran into was that IOMMU was NOT enabled on his motherboard which is requirement. Once this was done along with the configuration tweak above, he was able to get NSX-T Edge working on his AMD (3700x) kit.
Andrea has also confirmed this trick works with both NSX-T 2.5 as well as the latest 3.0 release in case folks wanted to try this out on an earlier version.