SD-WAN 网关 在标准 Hypervisor(KVM 或 VMware ESXi)上运行。

最低服务器要求

要运行 Hypervisor,必须具备:

  • CPU:需要最小时钟速度为 2.0 Ghz 的 Intel XEON(至少需要 10 核,用于运行单个 8 核网关虚拟机)以实现最大性能。
    • ESXi vmxnet3 网络计划功能必须为每个网关虚拟机 (VM) 预留 2 个内核,而无论分配给网关的内核数如何。
      • 示例:假设有一个运行 ESXi+vmxnet3 的 24 核服务器。您可以部署 2 个(8 核)网关。即,2 个网关乘以 8 个内核等于 16 个内核,这要求为网关应用程序预留 16 个内核,并剩下 8 个空闲内核。按照上述公式,为了支持这两个网关以高峰性能水平运行,ESXi/vmxnet3 系统需要使用额外的 4 个内核(部署的两个网关各需要两个内核)。也就是说,总共需要 20 个内核才能在 24 核系统上运行 2 个网关。
        注: 在使用 SR-IOV 时,网络计划功能将分流到 pNIC 以获得更高的性能。不过,Hypervisor 仍需执行其他计划功能,如 CPU、内存、NUMA 分配管理。需要始终保留两个空闲内核以供 Hypervisor 使用。
  • CPU 必须支持并启用以下指令集:AES-NI、SSSE3、SSE4、RDTSC、RDSEED、RDRAND、AVX/AVX2/AVX512。
  • 除了分配给 PGW 虚拟机的内存以外,必须最少为服务器系统提供 4 GB 可用 RAM。一个网关虚拟机需要使用 16 GB RAM;如果启用了基于证书的身份验证,则需要使用 32 GB RAM。
  • 最少 150 GB 磁盘卷或基于 SSD 的永久磁盘卷(如果启用了基于证书的身份验证,一个网关虚拟机需要使用 64 GB 或 96 GB 磁盘卷)。
  • 所需的最低 IOPS 性能:200 IOPS。
  • 最少 1 个 10Ge 网络接口端口;在启用网关合作伙伴切换接口时,最好使用 2 个端口(支持 1Ge 网卡,但会出现性能瓶颈)。支持 SR-IOV 的物理网卡包括 Intel 82599/82599ES 和 Intel X710/XL710 芯片组。(请参阅“启用 SR-IOV”指南。)
    注: SR-IOV 不支持网卡绑定。对于冗余上行链路,请使用 ESXi vSwitch。
  • VMware SD-WAN 网关是一种数据平面密集型工作负载,需要使用专用 CPU 周期以确保获得最佳的性能和可靠性。需要满足这些定义的设置,以确保网关虚拟机不会超额订阅基础硬件并导致可能破坏网关服务稳定性的操作(例如,NUMA 边界跨越、内存和/或 vCPU 超额订阅)。
  • 确保 SD-WAN 合作伙伴网关虚拟机和用于支持它的资源可以放在一个 NUMA 节点中。
  • 如果可能,请尽量在网络接口、内存、物理 CPU 和虚拟机与单个 NUMA 节点之间保持完全垂直对齐。
  • 注: 按如下方式配置主机 BIOS 设置:

    - 超线程 - 已关闭

    - 节能 - 已关闭

    - CPU Turbo - 已启用

    - AES-NI - 已启用

    - NUMA 节点交错 - 已关闭

服务器规范示例

网卡芯片组 硬件 规格
Intel 82599/82599ES HP DL380G9 http://www.hp.com/hpinfo/newsroom/press_kits/2014/ComputeEra/HP_ProLiantDL380_DataSheet.pdf
Intel X710/XL710 Dell PowerEdge R640 https://www.dell.com/en-us/work/shop/povw/poweredge-r640
  • CPU 型号和内核 - 双插槽 Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz(每个插槽 16 个内核)
  • 内存 - 384 GB RAM
Intel X710/XL710 Supermicro SYS-6018U-TRTP+ https://www.supermicro.com/en/products/system/1U/6018/SYS-6018U-TRTP_.cfm
  • CPU 型号和内核 - 双插槽 Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz(每个插槽 10 个内核)
  • 内存 - 256 GB RAM

SR-IOV 支持所需的网卡规范

硬件制造商 固件版本 适用于 Ubuntu 18.04 的主机驱动程序 适用于 ESXi 6.7 的主机驱动程序
适用于 40GbE QSFP+ 的双端口 Intel Corporation 以太网控制器 XL710 7.0 2.10.19.30 1.8.6 和 1.10.9.0
适用于 10GbE SFP+ 的双端口 Intel Corporation 以太网控制器 X710 7.0 2.10.19.30 1.8.6 和 1.10.9.0
适用于 10GbE SFP+ 的四端口 Intel Corporation 以太网控制器 X710 7.0 2.10.19.30 1.8.6 和 1.10.9.0
Dell rNDC X710/350 卡 nvm 7.10 和固件 19.0.12 2.10.19.30 1.8.6 和 1.10.9.0

支持的 Hypervisor 版本

Hypervisor 支持的版本
VMware
  • Intel 82599/82599ES - ESXi 6.7 U3 至 ESXi 7.0。要使用 SR-IOV,需要 vCenter 和 vSphere Enterprise Plus 许可证。
  • Intel X710/XL710 - ESXi 6.7 与 VMware vSphere Web Client 6.7.0 至 ESXi 7.0 与 VMware vSphere Web Client 7.0。
KVM
  • Intel 82599/82599ES - Ubuntu 16.04 LTS 和 Ubuntu 18.04 LTS
  • Intel X710/XL710 - Ubuntu 16.04 LTS 和 Ubuntu 18.04 LTS
重要说明: 在 Ubuntu 18.04 LTS 服务器上安装 Intel i40e 主机驱动程序版本 2.10.19.30 可能会导致编译错误。如果发生这种情况,建议客户修补主机驱动程序。

SD-WAN 网关虚拟机 (Virtual Machine, VM) 规范

对于 VMware,OVA 已指定最低虚拟硬件规格。对于 KVM,提供了一个示例 XML 文件。最低虚拟硬件规格包括:
  • 如果使用 VMware ESXi:
    • 必须将“延迟敏感度”(Latency Sensitivity) 设置为“高”(High)。
      • 过程(调整延迟敏感度)
        1. 在 vSphere Client 中浏览到虚拟机。
          1. 要查找虚拟机,请选择一个数据中心、文件夹、集群、资源池或主机。
          2. 单击虚拟机 (VMs) 选项卡。
        2. 右键单击虚拟机,然后单击编辑设置 (Edit Settings)
        3. 单击虚拟机选项 (VM Options),然后单击高级 (Advanced)
        4. 延迟敏感度 (Latency Sensitivity) 下拉菜单中选择一种设置。
        5. 单击确定 (OK)
      • “CPU 预留”(CPU reservation) 设置为 100%。
      • “CPU 份额”(CPU shares) 设置为高 (high)
      • “CPU 限制”(CPU Limit) 必须设置为无限制 (Unlimited)
      • 8 个 vCPU(支持 4 个 vCPU,但预计性能较低)。
        重要说明: 所有 vCPU 内核都应映射到同一个插槽,并将“每个插槽内核数”(Cores per Socket) 参数设置为 8(使用 8 个 vCPU)或 4(使用 4 个 vCPU)。
        注: 必须停用超线程才能实现最大性能。
      • 分配 CPU 资源的过程:
        1. 单击 VMware Host Client 清单中的虚拟机 (Virtual Machines)
        2. 右键单击列表中的一个虚拟机,然后从弹出菜单中选择编辑设置 (Edit settings)
        3. 虚拟硬件 (Virtual Hardware) 选项卡上,展开 CPU 并为该虚拟机分配 CPU 容量。
        选项 描述
        预留 (Reservation) 该虚拟机的保证 CPU 分配。
        限制 (Limit) 该虚拟机的 CPU 分配上限。可以选择“无限制”(Unlimited) 以指定无上限。
        份额 (Shares) 该虚拟机在父虚拟机的总 CPU 资源中所占的份额。同级虚拟机根据它们的相对份额值共享资源,这些值是由预留和限制限定的。请选择“低”(Low)、“正常”(Normal) 或“高”(High),它们分别以 1:2:4 比率指定份额值。选择“自定义”(Custom) 将为每个虚拟机提供特定数量的份额,这些份额表示成比例的权重。
    • 必须启用 CPU 关联性。请按照下面的步骤进行操作。
      1. 在 vSphere Web Client 中,转到虚拟机设置 (VM Settings) 选项卡。
      2. 选择选项 (Options) 选项卡,然后单击高级常规 (Advanced General) > 配置参数 (Configuration Parameters)
      3. 为 numa.nodeAffinity=0、numa.nodeAffinity=1 等添加条目,其中 0 和 1 是处理器插槽号。
    • vNIC 必须为“vmxnet3”类型(或“SR-IOV”,请参阅“SR-IOV”一节以了解支持详细信息)。
    • 至少为以下 vNIC 之一:
      • 第一个 vNIC 是公用(外部)接口,它必须是未标记的接口。
      • 第二个 vNIC 是可选的,它充当可支持 VLAN 标记 dot1q 和 Q-in-Q 的专用(内部)接口。该接口通常面向 PE 路由器或 L3 交换机。
    • 可选的 vNIC(如果需要单独的管理/OAM 接口)。
    • “内存预留”(Memory reservation) 设置为“最大值”(maximum)。
      • 16 GB 内存(在启用基于证书的身份验证时,需要使用 32 GB RAM)。
    • 64 GB 虚拟磁盘(在启用基于证书的身份验证时,需要使用 96 GB 磁盘)。
      注: VMware 使用上面定义的设置以获取规模和性能数字。不符合上述要求的设置没有经过 VMware 测试,可能会产生不可预测的性能和规模结果。
  • 如果使用 KVM:
    • vNIC 必须为“Linux 网桥”(Linux Bridge) 类型。(需要使用 SR-IOV 以获得较高的性能;有关支持详细信息,请参阅 SR-IOV 一节。)
    • 8 个 vCPU(支持 4 个 vCPU,但预计性能较低)。
      重要说明: 所有 vCPU 内核都应映射到同一个插槽,并将“每个插槽内核数”(Cores per Socket) 参数设置为 8(使用 8 个 vCPU)或 4(使用 4 个 vCPU)。
      注: 必须停用超线程才能实现最大性能。
    • 16 GB 内存(在启用基于证书的身份验证时,需要使用 32 GB RAM)。
    • 至少为以下 vNIC 之一:
      • 第一个 vNIC 是公用(外部)接口,它必须是未标记的接口。
      • 第二个 vNIC 是可选的,它充当可支持 VLAN 标记 dot1q 和 Q-in-Q 的专用(内部)接口。该接口通常面向 PE 路由器或 L3 交换机。
    • 可选的 vNIC(如果需要单独的管理/OAM 接口)。
    • 64 GB 虚拟磁盘(在启用基于证书的身份验证时,需要使用 96 GB 磁盘)。

防火墙/NAT 要求

注: 如果 SD-WAN 网关 部署在防火墙和/或 NAT 设备后面,则这些要求适用。
  • 防火墙需要允许从 SD-WAN 网关 到 TCP/443 的出站流量(用于与 SASE Orchestrator 进行通信)。
  • 防火墙需要允许从 Internet 到 UDP/2426 (VCMP)、UDP/4500 和 UDP/500 的入站流量。如果不使用 NAT,则防火墙还需要允许 IP/50 (ESP)。
  • 如果使用 NAT,则必须将上述端口转换为可从外部访问的 IP 地址。支持 1:1 NAT 和端口转换。

包含模板和示例的 Git 存储库

以下 Git 存储库包含模板和示例。

git clone https://gitlab.eng.vmware.com/velocloud/velocloud.src.git
注: 有关更多信息,请参阅 Partner Connect 门户中发布的 《VMware SD-WAN 性能和规模数据表》。要访问该数据表,必须使用您的合作伙伴凭据(用户名和密码)登录到 Partner Connect 门户。

SD-WAN 网关 上使用 DPDK

为了提高数据包吞吐量性能,SD-WAN 网关 利用数据平面开发工具包 (Data Plane Development Kit, DPDK) 技术。DPDK 是由 Intel 提供的一组数据平面库和驱动程序,用于将 TCP 数据包处理从操作系统内核卸载到在用户空间中运行的进程,从而提高数据包吞吐量。有关更多详细信息,请参阅 https://www.dpdk.org/

在 VMware 托管的网关和合作伙伴网关上,DPDK 用于管理数据平面流量的接口,而不用于为管理平面流量保留的接口。例如,在典型的 VMware 托管网关上,eth0 用于管理平面流量,而不会使用 DPDK。相比之下,eth1、eth2 和 eth3 用于数据平面流量并使用 DPDK。