简介
本文档介绍NFVIS平台为通信企业和服务网络中的VNF而提供的虚拟网络方案。
使用的组件
本文档中的信息基于以下硬件和软件组件:
- 运行NFVIS 4.7.1-FC4的ENCS5412
- 运行NFVIS 4.12.1-FC2的c8300 uCPE 1N20
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
NFVIS中的网络概述
内部管理网络(int-mgmt-net)和网桥(int-mgmt-br)在内部用于VNF监控,从10.20.0.0/24子网分配管理IP地址。
ENCS54XX平台
图 1.硬件交换机和广域网/局域网上行链路网卡内部连接
Catalyst 8200 uCPE
-
默认情况下,可以通过WAN端口或GE0/2 LAN端口访问NFVIS以进行管理。
-
默认情况下,WAN网络(wan-net和wan2-net)和WAN网桥(wan-br和wan2-br)设置为启用DHCP。默认情况下,GE0-0与WAN网桥关联,GE0-1与WAN2网桥关联。
-
Catalyst 8200 UCPE上的管理IP地址192.168.1.1可以通过GE0-2访问。
-
GE0-2与LAN网桥关联。
-
创建内部管理网络(int-mgmt-net)和网桥(int-mgmt-br),并在内部用于系统监控。
图 2. 分配给8200 NIC的内部桥接和虚拟交换机
Catalyst 8300 uCPE 1N20
1.默认情况下,可以通过FPGE(前面板千兆以太网)WAN端口或通过GE0-2 LAN端口访问NFVIS,以便进行管理
2.默认情况下,WAN网络(wan-net)和WAN网桥(wan-br)设置为启用DHCP。默认情况下,GE0-0与WAN网桥相关联
3.默认情况下会创建WAN网络(wan2-net)和WAN网桥(wan2-br),但不与任何物理端口关联
4. GE0-2与LAN网桥关联,所有其他端口不与OVS关联
5. C8300-uCPE上的管理IP 192.168.1.1可通过GE0-2访问
6.创建内部管理网络(int-mgmt-net)和网桥(int-mgmt-br),并在内部用于系统监控。
图 3. 分配给8300 NIC的内部桥接和虚拟交换机
网络虚拟化技术
开放式vSwitch(OVS)
开放式vSwitch(OVS)是一种开源的多层虚拟交换机,旨在通过编程扩展实现网络自动化,同时支持标准管理接口和协议,例如NetFlow、sFlow、IPFIX、RSPAN、CLI、LACP和802.1ag。广泛用于大型虚拟化环境,尤其是虚拟机监控程序用于管理虚拟机(VM)之间的网络流量。 它允许创建通过NFVIS接口直接管理的复杂网络拓扑和策略,为网络功能虚拟化提供通用环境。
图 4.Linux内核中的OVS配置
OVS网桥
它使用虚拟网络网桥和流量规则在主机之间转发数据包。其行为类似于物理交换机,只是虚拟化。
图 5.连接到wan-br网桥的2个VM或VNF的实施示例
环境交换缺陷
当网络数据包到达网络接口卡(NIC)时,它会触发中断,即发信号给处理器,表示需要立即引起注意。CPU暂停其当前任务以处理中断,该过程称为中断处理。在此阶段,CPU在操作系统内核的控制下,将数据包从NIC读取到内存中,并根据数据包的目的地和用途决定后续步骤。目标是快速处理数据包或将数据包路由到其预期应用,从而最大程度地减少延迟并最大化吞吐量。
情景交换是CPU从一个环境(情景)中的任务切换到另一个环境的过程。在用户模式和内核模式之间移动时,这一点尤其重要:
当应用程序需要执行需要内核级权限的操作(例如读取网络数据包)时,就会发生上下文切换。CPU从用户模式转换到内核模式以执行操作。完成后,另一情景交换机将CPU返回到用户模式以继续执行应用。此交换过程对于维护系统的稳定性和安全性至关重要,但会引入可能会影响性能的开销。
OVS主要在操作系统用户空间运行,随着数据吞吐量的增加,它可能成为瓶颈。这是因为CPU需要更多的上下文切换才能转到内核模式来处理数据包,从而降低性能。 这种限制在高数据包速率环境或精确计时至关重要时尤为明显。 为了解决这些性能限制并满足现代高速网络的需求,开发了DPDK(数据平面开发套件)和SR-IOV(单根I/O虚拟化)等技术。
数据平面开发套件(DPDK)
DPDK是一组库和驱动程序,旨在加速各种CPU架构上的数据包处理工作负载。通过绕过传统内核网络堆栈(避免情景交换),DPDK可以显着提高数据平面吞吐量并降低延迟。这对于需要低延迟通信的高吞吐量VNF特别有用,使NFVIS成为性能敏感型网络功能的理想平台。
图 6.传统OVS(左侧)和DPDK OVS(右侧)环境交换优化
NFVIS 3.10.1(ENCS)和3.12.2(其他平台)开始支持针对OVS的DPDK。
- SRIOV附近的服务链吞吐量,优于非DPDK OVS。
- VNF需要Virtio驱动程序。
- 支持的平台:
- 从ENCS 3.10.1开始。
- UCSE、UCS-C、CSP5K 3.12.1及以上版本。
- 自4.12.1起支持的端口通道的DPDK。
- 数据包/流量捕获:DPDK不支持。
- Span流量在PNIC上:DPDK不支持。
- 启用OVS-DPDK后,无法将其作为单个功能禁用。禁用DPDK的唯一方法是重置工厂。
数据复制
传统网络方法通常要求数据在到达VM内存中的目标之前被复制多次。例如,必须将数据包从NIC复制到内核空间,然后复制到用户空间,由虚拟交换机(如OVS)进行处理,最后复制到虚拟机内存。尽管DPDK通过绕过内核网络堆栈提高了性能,但每次复制操作都会产生延迟并增加CPU利用率。
这些开销包括内存副本以及在将数据包转发到VM之前在用户空间中处理数据包所需的处理时间。PCIe Passthrough和SR-IOV通过允许物理网络设备(如NIC)直接在多个VM之间共享,而不像传统虚拟化方法那样涉及主机操作系统,解决了这些瓶颈。
PCIe直通
该策略包括绕过虚拟机监控程序,以允许虚拟网络功能(VNF)直接访问网络接口卡(NIC),从而实现接近最大吞吐量的目的。此方法称为PCI直通,它允许完全的网卡专用于访客操作系统,而无需虚拟机监控程序的干预。在此设置中,虚拟机的运行方式与其直接连接到网卡。例如,两个网卡可用时,每个网卡可独占分配给不同的VNF,从而提供直接访问。
但是,此方法有一个缺点:如果只有两个NIC可供两个单独的VNF独占使用,则任何其他VNF(如第三个VNF)都将无法访问NIC,因为它没有专用的可用的NIC。 另一种解决方案是使用单根I/O虚拟化(SR-IOV)。
单根I/O虚拟化(SR-IOV)
是允许单个物理PCI设备(如网络接口卡[NIC])显示为多个独立虚拟设备的规范。此技术可让虚拟机直接访问物理网络设备,从而降低开销并提高I/O性能。其工作方式是将单个PCIe设备划分为多个虚拟片,每个虚拟片可分配给不同的VM或VNF,从而有效地解决了有限数量的NIC所带来的限制。这些虚拟片(称为虚拟功能(VF))允许在多个VNF之间共享NIC资源。物理功能(PF)是指促进SR-IOV功能的实际物理组件。
通过利用SR-IOV,NFVIS可以将专用NIC资源分配给特定VNF,通过促进直接将网络数据包内存访问(DMA)直接插入到各自的VM内存中,确保高性能和低延迟。此方法将CPU的参与降至最低,仅处理数据包,从而降低CPU使用率。这对于需要保证带宽或具有严格性能要求的应用尤其有用。
图 7.通过硬件功能分离NFVIS SR-IOV PCIe资源
物理功能(PF)
它们是功能齐全的PCIe功能,是指提供特定网络功能的专用硬件盒;它们是功能齐全的PCIe功能,可以像任何其他PCIe设备一样被发现、管理和操作。物理功能包括可用于配置和控制PCIe设备的SR-IOV功能。
虚拟功能(VF)
它们是精简的功能,配置资源最少(轻量),仅专注于将I/O作为简单的PCIe功能处理。每个虚拟功能都源自一个物理功能。设备硬件限制了虚拟功能的可能数量。一个以太网端口(物理设备)可以对应许多虚拟功能,然后这些功能可以分配给不同的虚拟机。
支持NFVIS的硬件上SR-IOV加速的建议驱动程序
Platform |
网卡 |
NIC驱动程序 |
ENCS 54XX |
背板交换机 |
i40e |
ENCS 54XX |
GE0-0和GE0-1 |
IGB |
Catalyst 8200 uCPE |
GE0-0和GE0-1 |
ixgbe |
Catalyst 8200 uCPE |
GE0-2和GE0-5 |
IGB |
DPDK和SR-IOV的使用案例
DPDK首选项
特别是在网络流量主要以东 — 西方式传输的情况下(这意味着它位于同一服务器内),DPDK的性能优于SR-IOV。其原理非常简单:当流量在服务器内部管理而不需要访问NIC时,SR-IOV不会提供任何优势。事实上,SR-IOV可能会通过不必要地扩展流量路径和消耗NIC资源而导致效率低下。因此,对于内部服务器流量管理,采用DPDK是更有效的选择。
图 8.East-to-West流量中的DPDK和SR-IOV数据包遍历
SR-IOV首选项
在网络流量从北向南、甚至从东向西流动但特别在服务器之间流动的情况下,使用SR-IOV比DPDK更具优势。对于服务器到服务器通信尤其如此。由于此类流量不可避免地必须经过网卡,因此选择DPDK增强型OVS可能会不必要地引入额外的复杂性和潜在的性能限制。因此,在这些情况下,SR-IOV成为首选方案,为处理服务器间流量提供直接而有效的路径。
图 9南北流量中的DPDK和SR-IOV数据包遍历
提示:请记住,通过将SR-IOV与DPDK集成到虚拟网络功能(VNF)中,可以增强基于SR-IOV的设置的性能,但不包括DPDK与OVS结合使用的场景(如前所述)。
配置
启用DPDK
要从GUI启用DPDK,您必须导航到配置>虚拟机>网络>网络。进入菜单后,单击交换机激活该功能
图 10.GUI上提供的幻灯片按钮用于DPDK激活
对于CLI,您必须在配置模式下从全局系统设置中启用它。
nfvis(config)# system settings dpdk enable
注意:除非从NFVIS执行出厂重置,否则无法禁用DPDK。
创建新网络并将其关联到新的OVS网桥
导航到配置 > 虚拟机 > 网络 > 网络。进入Networks页面后,点击Networks表的左上角加号(+),
图 11.NFVIS GUI中的网络表视图
命名网络并关联到新网桥。VLAN和接口绑定选项取决于网络基础设施需求。
图12.在NFVIS GUI中创建虚拟网络的“添加网络”模式
单击submit按钮后,必须能够查看附加到Networks表的新创建的网络。
图 13.NFVIS GUI中的“刷新图标”位于右上角(以红色突出显示)的网络表视图
注:如果在表中未观察到新网络,请单击右上角的刷新按钮或刷新整个页面。
如果从CLI执行,每个网络和网桥都从配置模式创建,则工作流程与GUI版本相同。
1.创建新网桥。
nfvis(config)# bridges bridge inter-vnf-br2
nfvis(config-bridge-inter-vnf-br2)# commit
2.创建新网络并将其与以前创建的网桥关联
nfvis(config)# networks network inter-vnf-net2 bridge inter-vnf-br2 trunk true native-vlan 1
nfvis(config-network-inter-vnf-net2)# commit
连接VNF
要从网络拓扑或单个VFN部署开始,必须导航到配置 > 部署。 您可以从选择列表中将VM或容器拖动到拓扑构建区域,以开始创建虚拟化基础设施。
图 14.示例部署为:c8000v-1连接Ge0-0 SR-IOV直通和自定义OVS inter-vnf网络;c8000v-2具有2个OVS连接,用于与c8000v-1和c8000v-3通信;c8000v-3具有1个OVS内vnf连接,用于与c8000v-2通信,以及通过Ge0-2 LAN端口网桥(OVS)的送出接口。
从CLI从映像创建相同拓扑的位置:
c8000v-1配置:
nfvis(config)# vm_lifecycle tenants tenant admin deployments deployment c8000v-1 vm_group c8000v-1 image c8000v-universalk9_16G_serial.17.09.04a.tar.gz flavor C8000V-small
nfvis(config-vm_group-c8kv_group)# interfaces interface 0 network GE0-0-SRIOV-1
nfvis(config-interface-0)# exit
nfvis(config-vm_group-c8kv_group)# interfaces interface 1 network inter-vnf-net
nfvis(config-interface-1)# exit
nfvis(config-vm_group-c8kv_group)# port_forwarding port ssh protocol TCP vnf_port 22 external_port_range 2228 2228
nfvis(config-external_port_range-2228/2228)# commit
c8000v-2配置:
nfvis(config)# vm_lifecycle tenants tenant admin deployments deployment c8000v-2 vm_group c8000v-2 image c8000v-universalk9_16G_serial.17.09.04a.tar.gz flavor C8000V-small
nfvis(config-vm_group-c8kv_group)# interfaces interface 0 network inter-vnf-net
nfvis(config-interface-0)# exit
nfvis(config-vm_group-c8kv_group)# interfaces interface 1 network inter-vnf-net2
nfvis(config-interface-1)# exit
nfvis(config-vm_group-c8kv_group)# port_forwarding port ssh protocol TCP vnf_port 22 external_port_range 2229 2229
nfvis(config-external_port_range-2229/2229)# commit
c8000v-3配置:
nfvis(config)# vm_lifecycle tenants tenant admin deployments deployment c8000v-3 vm_group c8000v-3 image c8000v-universalk9_16G_serial.17.09.04a.tar.gz flavor C8000V-small
nfvis(config-vm_group-c8kv_group)# interfaces interface 0 network inter-vnf-net2
nfvis(config-interface-0)# exit
nfvis(config-vm_group-c8kv_group)# interfaces interface 1 lan-net
nfvis(config-interface-1)# exit
nfvis(config-vm_group-c8kv_group)# port_forwarding port ssh protocol TCP vnf_port 22 external_port_range 2230 2230
nfvis(config-external_port_range-2230/2230)# commit
相关文章和文档
企业NFV深入探讨和实验操作
使用USB安装企业NFVIS