Waiting
Login processing...

Trial ends in Request Full Access Tell Your Colleague About Jove
Click here for the English version

Engineering

将5G实验基础设施集成到多站点NFV生态系统中

Published: February 3, 2021 doi: 10.3791/61946
* These authors contributed equally

Summary

所述协议的目标是通过基于VPN的覆盖网络架构,支持将5G实验基础设施灵活地整合到多站点NFV生态系统中。此外,该协议还定义了如何验证集成的有效性,包括使用具有NFV功能的小型飞行器进行多站点垂直服务部署。

Abstract

网络功能虚拟化(NFV)被认为是 五代移动网络(5G)的关键推动因素之一。这种模式可以减少对专用硬件的依赖,以部署电信和垂直服务。为此,它依靠虚拟化技术来软化网络功能,简化其开发并减少部署时间和成本。在此背景下,马德里卡洛斯三世大学,西班牙电信和IMDEA网络研究所在5TONIC内部开发了一个NFV生态系统,这是一个专注于5G技术的开放式网络创新中心,能够在一组分布式NFV基础设施中创建复杂,接近现实的实验场景,这些场景可以由不同地理位置的利益相关者提供。本文介绍了为将新的远程 NFV 站点合并到基于 5TONIC 的多站点 NFV 生态系统中而定义的协议,描述了现有和新合并的基础结构的要求、它们通过覆盖网络体系结构的连接性以及包含新站点所需的步骤。该协议通过向5TONIC NFV生态系统中合并外部站点来举例说明。之后,协议详细说明了验证成功站点集成所需的验证步骤。其中包括使用远程NFV基础设施和小型无人机(SUAV)部署多站点垂直服务。这有助于展示该协议在实现分布式试验方案方面的潜力。

Introduction

自本世纪初以来,第五代移动网络(5G)的引入意味着电信行业的革命性变化,要求电信运营商解决在5G保护伞下开发的新网络服务和应用的更苛刻的规范1,2.这些新规范包括但不限于数据速率提高、无线传输延迟改进和运营成本降低。在构成新一代改进基础的技术中,网络功能虚拟化3(NFV)已成为其主要推动因素之一。NFV 提供了软加密网络功能的能力,传统上通过使用通用物理设备(如数据中心中的服务器计算机)在专用硬件上进行中继。通过这种新模式,电信运营商和垂直行业可以将网络功能和服务部署为一组软件组件,节省业务部署和维护成本,并促进更高的网络基础设施弹性。这种方法减轻或消除了对大多数网络和垂直特定功能使用专用(通常更复杂且可重用性较低)设备的必要性,并支持更高和更密集的操作自动化程度,从而降低部署和维护成本。

考虑到NFV环境能够提供的所有优势,来自电信行业的大量相关利益相关者自然越来越多地参与在NFV环境中测试新的服务理念。在此背景下,Telefónica和IMDEA网络研究所创建了5TONIC4,这是一个专注于5G技术的开放式研究和创新实验室。该实验室位于马德里(西班牙),拥有广泛的技术可供研究和合作伙伴使用,以促进5G服务的开发和验证。特别是,该实验室有一个实验性的NFV平台,开发人员可以在符合ETSI标准的NFV生态系统5上部署和测试他们新的基于NFV的应用程序和服务。因此,关于设计选择和技术建议的实验结论可以在比生产网络更灵活的现实环境中得出。该平台旨在支持跨多个外部站点的实验活动,这些站点可以使用明确定义的协议灵活地互连到5TONIC。

为5TONIC NFV生态系统采用的技术解决方案考虑了单个NFV编排器的利用率,该编排器使用ETSI托管的开源MANO(OSM)软件6实现。这是负责管理和协调网络服务 (NS) 生命周期的元素。这些服务可以构建为虚拟化网络/垂直功能(VNF)的组合,可以部署在NFV平台上集成的任何站点上。5TONIC NFV生态系统的设计是在H2020 5GINFIRE项目7,8的背景下完成的其中该平台用于支持超过25个实验的执行,这些实验是通过竞争性的公开呼叫过程选择的,跨越位于欧洲的八个垂直特定实验基础设施和一个位于巴西的实验基础设施,后者通过跨洋链路连接。此外,该平台还用于在西班牙建立国家规模的分布式NFV测试平台,支持西班牙5GCity项目9,10中的实验活动。最近,另一个巴西站点已被整合到该平台中,以支持巴西和欧洲之间建立的研究和创新合作背景下的联合示范活动(即5GRANGE项目11,12)。最后但并非最不重要的一点是,该基础设施已用于支持5G-VINNI项目13,14范围内的第三方实验。NFV平台的地理分布如图1所示。

托管自己的 NFV 基础设施的相关组织可以灵活地连接到 5TONIC NFV 生态系统,但须经 5TONIC 指导委员会批准,成为分布式生态系统内的测试平台提供商,并参与联合实验和演示活动。为此,它们必须具有符合 OSM 软件堆栈的 VIM(虚拟基础架构管理器)。5TONIC NFV 编排器能够与给定服务部署中涉及的站点上的 VIM 进行交互,协调构成网络服务的 VNF 实例化和互连所需的计算、存储和网络资源的分配和设置,并控制其生命周期(从载入到最终退役)。

为了管理所有互连站点内的控制和数据流量交换,5TONIC NFV生态系统利用基于虚拟专用网络(VPN)的覆盖网络架构。这种方法提供了对集成到5TONIC生态系统中的外部站点的安全基于PKI的访问,允许在OSM软件堆栈和分布在测试台上的不同VIM之间交换NFV控制信息,以及交换管理和配置所有VNF所需的信息。此外,该覆盖网络支持在部署在不同站点的VNF之间传播数据流量。

在此上下文中,本文详细介绍了旨在将外部站点合并到NFV生态系统的协议。该协议假定生态系统由安装在中央站点的单个 NFV 编排器控制,并且外部站点具有符合编排器软件堆栈的 VIM 解决方案。拟议的协议允许通过灵活地整合NFV站点和垂直特定基础设施来增加实验生态系统的资源组合。这使得能够创建一个分布式MANO平台,该平台能够在单个NFV编排器的控制下跨多个站点测试和验证新的网络和垂直服务。为了说明协议的内部操作,该过程将通过向当前的5TONIC NFV生态系统添加外部NFV站点来举例说明,描述外部站点和5TONIC上所需的组件,以及在集成过程中要采取的所有步骤。 图 2 概述了集成的目标,通过中央站点与其他外部基础架构之间的 VPN 连接,将新的基于 NFV 的测试平台连接到 5TONIC 平台,从该平台可以部署网络服务。

此外,为了展示该协议的有效性,将展示使用5TONIC生态系统和具有NFV功能的小型无人机(SUAV)的外部站点部署简单的垂直服务。垂直服务的设计受到Vidal等人9中提出的实验的启发,该实验已为本文的插图目的进行了简化。 图3 概述了该服务,旨在帮助偏远地区的智能农业活动。该服务考虑了一个智能农业服务提供商,该服务提供商使用SUAV收集和传播散布在农田上的气象传感器产生的数据。为简单起见,本文中提出的实验考虑了单个SUAV和传感器,能够提供温度,湿度和压力测量。在实验中,外部 NFV 站点托管一个 Wi-Fi 接入点,该接入点通过 SUAV 部署为 VNF。此 VNF 提供与传感器的网络访问连接,将检测到的数据转发到网关功能。后者作为VNF部署在地面设备(迷你ITX计算机)上。将数据从传感器传播到网关功能遵循基于消息队列遥测传输 (MQTT) 协议15的发布/订阅方法。网关功能处理数据,然后将其传播到物联网(IoT)服务器,该服务器基于Mainflux16 开源平台,在NFV生态系统的中心站点上作为VNF提供。最后,该方案假设一个远程区域,其中 Internet 连接由蜂窝非 3GPP 接入网络提供。因此,该服务包括两个附加的VNF:1)接入路由器VNF,其实现连接到非3GPP接入网络17的3GPP用户设备的用户面协议栈;2)5G核心网的基线实现,支持接入路由器和物联网服务器VNF之间的信息转发。为此,5G核心VNF提供了非3GPP互通功能和用户面功能的用户面的简化实现,如3GPP17所定义。

最后, 图 4 表示协议开发过程中涉及的最相关的流程,突出显示了它们的逻辑互连以及负责其执行的实体。

Protocol

1. 提供NFV生态系统的中心站点(实验的先决条件)

  1. 分配中央站点要使用的 IP 地址空间。出于此协议的目的,将使用专用地址空间 10.4.0.0/16。
  2. 在中央站点中安装管理和编排 (MANO) 软件堆栈。特别是,在整个协议中进行的实验使用开源MANO(OSM)版本SEVEN18,它需要以下资源:Ubuntu 18.04作为操作系统,2个中央处理器(CPU),8 GB随机存取存储器(RAM),40 GB硬盘和至少一个具有Internet访问权限的网络接口。对于安装,请按照 OSM 第七版文档18中提供的说明进行操作。
  3. 在中央站点中设置与 OSM 兼容的虚拟基础架构管理器 (VIM)。具体来说,该实验使用OpenStack版本Ocata20,运行在具有Ubuntu 16.04的虚拟机(VM)上,4个CPU,16 GB的RAM和200 GB的硬盘驱动器。此 VIM 处理的 NFV 基础结构 (NFVI) 由三台服务器计算机组成,每台计算机都带有 Ubuntu 16.04、8 个 CPU、32 GB RAM 和 2 TB 存储。对于安装,请遵循 Ocata 发布文档21
    1. 在 OpenStack 云平台中部署虚拟网络,使用步骤 1.1 中分配的地址空间的 IP 地址范围。此网络(以下简称管理网络)将用于支持 OSM 与在中央站点实例化的虚拟网络功能 (VNF) 之间的 NFV 编排信息交换。
    2. 配置虚拟网络(以下称为数据网络)以支持中央站点的 VNF 与外部站点执行的其他 VNF 之间的站点间数据通信。为此,请使用步骤 1.1 的地址空间中的 IP 地址范围。
      注意:步骤 1.3.1 和 1.3.2 中提到的网络的实现是使用 OpenStack 的提供商网络完成的。提供商网络必须连接到中央站点的物理网络基础结构,以确保适当的操作。
  4. 将虚拟专用网络(即管理和数据网络)以及 VIM 和 OSM 机器连接到提供边缘路由功能的设备。该路由器将作为NFV生态系统中央站点的入口点。
  5. 提供公共实验存储库,以提供执行实验所需的所有内容。特别是,此协议使用22处的公共存储库。

2. 虚拟专用网络服务的配置

  1. 分配IP地址空间,支持多站点生态系统的适当运行,以便在多个站点之间有效地建立网络通信。
    注意:要在多个站点之间实现有效的网络通信,需要仔细设计 NFV 生态系统以及需要连接到它的外部站点使用的 IP 地址空间。特别是,分配给站点间通信的地址空间不应与已在所有其他站点用于其他目的的地址空间发生冲突。
    1. 分配要由外部站点使用的 IP 地址空间。此块中的地址将分配给外部站点的 NFV 实体(例如 VIM)和 VNF。为了举例说明此协议,将使用专用地址空间 10.154.0.0/16。
    2. 为外部站点和 NFV 生态系统之间的虚拟链路分配 IP 地址空间。这些虚拟链接将由 VPN 服务支持。为了举例说明此协议,这些虚拟链路将使用地址范围 10.154.254.0/24。
  2. 设置设备以提供虚拟专用网络 (VPN) 服务(即 VPN 服务器)。特别是,该实验使用具有Ubuntu 16.04(64位变体映像),六个独立CPU,16 GB RAM,1 TB存储磁盘和两个网络接口的服务器计算机。
    1. 配置 VPN 服务器的一个网络接口,以允许通过 Internet 接收来自外部站点的连接请求。为此,有必要使用配置有公共 IP 地址的服务器接口。
    2. 配置 VPN 服务器与中央站点边缘路由器之间的链路。在实验中,此链接被分配了地址范围 10.4.255.0/24。在 VPN 服务器上配置适当的网络路由,以便可以从连接到 VPN 服务的外部站点访问 NFV 生态系统。
  3. OpenVPN23 项目提供的VPN开源软件安装到VPN服务器中。具体来说,这个实验使用 OpenVPN 版本2.3.10,它的部署是用bash脚本"openvpn-install.sh"完成的,http://github.com/Nyr/openvpn-install(其他安装选项在OpenVPN 文档24中描述)。bash 脚本提供了将导致 VPN 服务配置的替代参数。
    1. 选择要侦听 VPN 连接请求的 IP 地址(即公共 IP 地址)。
    2. 确定应使用哪种协议(UDP 或 TCP)来驱动通过 VPN 进行通信。在本例中,实验利用了推荐的协议 UDP。
    3. 指定将组成将用于接收服务连接请求的 duple(以及公共 IP 地址)的端口。默认情况下,分配的值为 1194。
    4. 选择由助手提示的列表中的 DNS 服务器之一,该服务器将处理由 VPN 服务的客户端执行的名称解析请求。
    5. 按任意键以启用 VPN 服务安装过程的自动启动。
  4. 编辑位于"/etc/openvpn/server/"目录下的配置文件"server.conf",并包括"客户端到客户端"指令,旨在扩展步骤2.3提供的基本设置。因此,连接到VPN服务的不同客户端将能够相互访问。
  5. 在 VPN 设置中启用单个客户端配置,以便能够独立管理每个客户端的路由分配。
    1. 添加 "client-config-dir ccd" 指令,编辑与步骤 2.4 中相同的配置文件。
    2. 使用命令"mkdir /etc/openvpn/ccd/"创建目录"ccd"。此目录将在协议的下一节中提供,以放置包含与要集成到平台中的客户端关联的路由指令的文件。
  6. 设置允许与服务连接所需的防火墙规则,同时保护 VPN 服务器免受恶意攻击。为此,此实验利用 了 iptables25,这是一个为配置 Linux 内核防火墙而开发的命令行实用程序。
    1. 首先,使用命令"iptables -P INPUT DROP"阻止传入 VPN 服务器的流量。
    2. 允许使用命令"iptables -A INPUT -i -m state --state NEW -p udp --dport 1194 -j ACCEPT"(是具有公共IP地址的VPN服务器接口的名称)和"iptables -A INPUT -i tun+ -j ACCEPT"来接收VPN连接请求。
    3. 允许在VPN服务器接口(即公共接口和由称为 tun0的VPN服务创建的虚拟接口)之间转发流量,以使VPN服务器能够处理服务连接请求。为此,请执行命令"iptables -A FORWARD -i tun+ -o -m state RELATED,built-j ACCEPT && iptables -A FORWARD -i -o tun+ -m state --state RELATED,built -j ACCEPT"。
    4. 使 VPN 服务器能够提供网络地址转换 (NAT) 功能,目的是为中央站点提供 Internet 访问,执行:"iptables -t nat -A POSTrouting -s 10.4.0.0/16 -o -j MASQUERADE && iptables -A OUTPUT -o tun+ -j ACCEPT"。

3. 外部NFV站点的集成

  1. 获取适当的 IP 地址范围,以将站点集成到 NFV 生态系统中。此地址范围将由NFV生态系统的网络运营中心提供。根据该协议的步骤 2.1.1,实验将使用 10.154.0.0/16 范围内外部站点的 IP 地址范围。
  2. 创建并提供安全凭据以连接到 NFV 生态系统。
    1. 生成 VPN 凭据,该凭据将允许新基础结构与 VPN 服务器建立安全连接。为此,请在VPN服务器中执行命令"bash openvpn-install.sh",选择提示列表中的选项"1)添加新客户端",并提供要与该凭据关联的名称,例如,uc3m_infrastructure。此步骤将生成一个包含 VPN 凭据的文件(在示例中名为"uc3m_infrastructure.ovpn")。
    2. 在 VPN 服务器的"/etc/openvpn/ccd/"目录中创建一个文本文件,包括每次使用 VPN 凭据建立与 VPN 服务的连接时,VPN 服务器必须推送的路由指令(如 OpenVPN 文档24中所指定)。
      注意:文本文件的名称必须与创建 VPN 凭据(例如,uc3m_infrastructure)期间指定的名称匹配,以便为每个 VPN 客户端提供自定义配置。
    3. 将 VPN 凭据文件提供给外部站点的技术人员。这必须通过安全可靠的渠道来完成。在此实验中,使用手动加密过程。要加密 VPN 凭据,请执行命令"7za a -tzip '-p' -mem=AES256 <加密文件><凭据名称>",将<密码>设置为所需的加密密钥,<加密文件>作为加密文件的选定名称,将<凭据文件>设置为 VPN 凭据文件的文件名(例如, uc3m_infrastructure.ovpn).
    4. 通过安全通信通道向新站点的技术人员提供加密凭据以及允许解密过程的密钥。
      注意:在此实验中,加密的凭据通过电子电子邮件提供,而解密密钥则使用短消息服务 (SMS) 通过单独的通道发送,并具有电话号码的脱机协议。
  3. 在新站点设置环境,以便与 NFV 生态系统建立连接,并允许将远程 NFVI 连接到中央站点的 OSM 堆栈。
    1. 在计算机中安装 OpenVPN24 提供的VPN软件,以启用外部站点和NFV生态系统中央站点之间的虚拟链接。装有 OpenVPN 软件的计算机将用作外部站点的VPN客户端或VPN端点。虚拟链路将通过VPN端点和VPN服务器之间的受保护VPN隧道来实现。在实验中,VPN 终结点在具有 Ubuntu 18.04、8 CPU、8 GB RAM、128 GB 存储磁盘和 3 GbE 接口(一个用于通过 Internet 连接到 VPN 服务)的服务器计算机中运行。
    2. 在 VPN 终结点中激活 IP 转发以支持网络路由功能。为此,请在位于"/etc/sysctl.conf"路径中的系统配置文件中包含行"net.ipv4.ip_forward=1",并使用命令"sudo sysctl -p"加载更新的配置。
    3. 使用命令"7za e <加密文件>",使用步骤 3.2.4 中收到的信息解密 VPN 凭据文件,其中<加密文件>是加密 VPN 凭据的文件名。在命令提示时指定解密密钥。
    4. 使用命令"sudo openvpn --config "(是VPN凭据的文件名)使用解密的凭据文件启动 OpenVPN 软件。这样,VPN 终结点将向 VPN 服务器进行身份验证,并将自动接收相应的 VPN 配置参数和网络路由。这样,VPN 端点将充当边缘路由器,具有到 NFV 生态系统中央站点的虚拟链路。
    5. 验证 VPN 端点的正确操作,使用 ping 命令验证与中央站点的某个节点(例如,OSM 堆栈设备)的连接的可用性。
    6. 在新站点中,选择符合 OSM 标准的 VIM 以允许使用 MANO 平台进行操作。对于此实验,使用了OpenStack版本Ocata。
      注意:OSM Release SEVEN 支持以下虚拟基础架构管理器:OpenStack、OpenVIM26、VMware的 vCloud Director27、AmazonWeb Service28、MicrosoftAzure29和 Eclipse fog0530(有关特定配置的详细信息,请参阅 OSM 文档18)。
    7. 安装 OpenStack 版本 Ocata20( 请参阅发布文档21中的详细过程)。
    8. 在外部站点中部署 NFV 基础结构并将其附加到 VIM。特别是,此实验使用NFV基础架构,包括三台单板计算机(SBC),每台计算机的计算容量为1 GB RAM,4 CPU和32 GB存储磁盘;以及一台具有8个CPU,8 GB RAM和128 GB存储的mini-ITX计算机。
      注意:本协议中举例说明的外部站点基于支持NFV的小型无人机(SUAV)的NFV基础设施。Nogales等人31提供了实现这种基础设施的后续细节。步骤 3.3.6 到 3.3.8 是可选的,因为外部站点上可能已存在 NFV 基础结构。
    9. 创建一个 OpenStack 项目,以指定将集成到 NFV 生态系统中的外部站点的计算资源集。为此,请访问 OpenStack 提供的图形用户界面 (GUI),使用管理员凭据登录到系统,单击"标识->项目"选项卡的"+创建项目"按钮,然后创建一个项目,使用请求的信息完成显示的表单。
    10. 创建一个有效的用户,该用户将管理在上一步中创建的项目。为此,请使用与上一步相同的登录名访问" 标识->用户 "选项卡,单击 "+ 创建用户", 然后填写所显示表单的必填字段(用户名和密码),选择新创建的项目作为主项目,然后选择 管理员 角色。
    11. 修改安全规则以允许新站点中的 VNF 通信权限(特别是,启用 SSH 和 ICMP 流量)。为此,请使用在上一步中创建的用户的凭据访问 OpenStack GUI,按照以下顺序操作:项目 -> 网络 -> 安全组 -> + 添加规则,然后选择规则下拉列表的SSH选项。重复该过程,但选择下拉菜单中包含的所有 ICMP选项。
    12. 从公共实验存储库下载 OSM 社区提供的试用服务 、Ping Pong 网络服务("Fedora-x86_64-20-20131211.1-sda-ping"和"Fedora-x86_64-20131211.1-sda-pong")的映像,并将其上传到外部站点的 VIM。为此,请按照 "项目 ->计算 -> 图像 -> + 创建图像"序列进行操作,然后使用显示的窗体创建图像并选择每个图像。
    13. 在外部站点的地址空间内分配两个 IP 地址范围(在步骤 3.1 中分配)。这些范围将分别用于支持外部站点的 VNF 的管理,并分别实现 VNF 之间的站点间数据通信。
    14. 使用 VIM 创建提供程序网络(控制提供程序)。出于管理目的,该网络将支持中央站点的 OSM 堆栈与新站点上部署的 VNF 之间的 NFV 通信。这种类型的通信还将使 OSM 堆栈能够在部署后配置 VNF。要在 OpenStack 中创建提供商网络,请按照 "管理 ->系统 ->网络 -> + 创建网络" 序列,并使用上一步中选定的 IP 地址范围填写新网络的详细信息。
    15. 使用 VIM 创建第二个提供程序网络(数据提供程序)。该网络将支持站点的VNF和NFV生态系统的其他VNF之间的数据通信。要在 OpenStack 中创建此提供商网络,请按照 "管理员 ->系统 ->网络 -> + 创建网络"序列,并使用分配的地址范围填写新网络的详细信息。
      注意:有关如何创建虚拟网络的说明因 VIM 软件而异。有关详细信息,请查看其各自的软件文档。
    16. 与中央站点的技术人员共享与 VIM 相关的信息(特别是用户名/密码以及在步骤 3.3.9 和 3.3.10 中创建的项目),以便将 VIM 连接到 OSM 软件堆栈。
  4. 使用从步骤 3.3.16 获得的信息,将外部 NFV 基础结构附加到中央站点的 OSM 软件堆栈。
    1. 使用 ping 工具验证中央站点的 OSM 堆栈与新站点的 VIM 之间的连接。
    2. 如果之前的连接测试成功,请将外部 VIM 附加到中央站点的 OSM 堆栈。为此,请在 OSM 计算机中使用以下命令:"osm vim-create --name --user --password --auth_url <身份验证 URL> --tenant --account_type "。在此命令中:<外部 VIM-name>是选择用于标识 OSM 堆栈中 VIM 的名称,是有权处理外部站点资源的用户的名称(请参阅步骤 3.3.10),是指定用户的密码,<身份验证 URL>是 VIM 提供的用于启用来自 OSM 堆栈的请求的 API 的链接, <项目名称>是在步骤 3.3.9 中定义的项目名称,是使用的 VIM 软件(在本实验中为 OpenStack)。
  5. 验证新 VIM 是否正确连接到 NFV 生态系统的 OSM 堆栈。
    1. 执行命令"ro_id=$(docker ps |格雷普osm_ro |cut -d ' ' -f 1)" 以标识在 OSM 系统中实现资源协调器 (RO) 模块的容器的 id。此模块负责与 VIM 交互,以便在部署后续网络服务时协调和分配所需的资源。
    2. 使用命令"docker exec -it $ro_id bash"访问 RO 容器。此命令利用在执行上一步时获得的标识符。
    3. 使用命令"openmano datacenter-list"检查新 VIM 是否包含在可用数据中心列表中。新站点应以与步骤 3.4.2 中先前引入的名称相同的名称显示在列表中,并具有<外部 VIM 名称>参数。
    4. 使用命令"openmano vim-image-list--datacenter "列出已上传到外部站点的VIM的图像。<外部 VIM 名称>参数表示选择用于标识 OSM 堆栈中 VIM 的名称。如果此命令的执行成功,则表示已成功建立与外部 VIM 的连接。检查列表中是否包含 乒乓球 图像。
    5. 使用命令"openmano vim-net-list --datacenter "列出新站点上可用的网络。检查 控制提供程序数据提供程序 是否存在。
  6. 使用 OSM 社区提供的试用服务对新站点的正确集成执行初步验证(这方面的所有内容都包含在实验存储库中)。为此,以下步骤中包含的命令将在托管 OSM 堆栈的设备中执行。
    1. 将 VNF 描述符 (VNFD) 载入 OSM 堆栈,为组成试用服务的每个 VNF 运行命令"osm vnfd-create "(对应于 VNFD 包的文件名)。
    2. 在试用版服务的 NS 描述符 (NSD) 上,并显示命令"osm nsd-create ",其中 指示 NSD 包的文件名(在本实验中,ping_pong_ns.tar.gz)。"。
    3. 使用命令"osm ns-create --ns_name --nsd_name ping_pong_ns --vim_account --config '{vnf: [{member-vnf-index: '2', vim_account: }]}",在外部和中央站点上启动 Ping Pong Network Service (NS) 的实例化。<外部 VIM 站点>参数标识 OSM 堆栈中外部站点的 VIM。"--config"选项指示组成服务的所有 VNF 都必须部署在由该 VIM 处理的外部站点上,但 NS 中的索引 2 标识的 VNF 除外,该 VNF 将部署在中央站点中(中央站点的 VIM 在参数中指定)。
    4. 使用命令"osm ns-list"检查 NS 是否已部署及其状态。如果实例化成功,则状态将更改为"就绪"。
    5. 使用"osm vnf-list"检查两个 VNF 中每个 VNF 的 IP 地址(之后登录计算机所必需的)。
    6. 使用命令"ssh fedora@"(表示要连接到的 VNF 的 IP 地址,在上一步中获取),通过 SSH 连接到每个 VNF。在 SSH 提示时引入密码"fedora"。登录到两台计算机后,使用命令"ip 地址显示"检查其接口,并获取连接到 数据提供程序 网络的接口上的 IP 地址(两个 VNF 中的接口 eth1)。从其中一个 VNF,使用 数据提供程序 网络中的远程 IP 地址对另一个 VNF 执行 ping 操作。如果存在连接,则初步验证测试将被视为成功。

4. 通过逼真的垂直服务验证NFV多站点平台

  1. 按照步骤3.3.12中详述的过程,从公共存储库下载 VNF 映像并将其上传到其相应站点的 VIM 中(参见图 3)。特别是,外部站点将托管接入点 VNF、路由器 VNF、MQTT 网关 VNF 和接入路由器 VNF。中央站点将托管5G核心VNF物联网服务器VNF。
  2. 将智能农业服务的 VNFD 和 NSD 载入 OSM 堆栈(所有描述符都可以从实验存储库下载)。
    1. 将 VNFD 载入 OSM 堆栈,为网络服务的每个 VNF 执行命令"osm vnfd-create "。在这种情况下,参数对应于 VNFD 包的文件名。
    2. 使用命令"osm nsd-create "将 NSD 载入 OSM 堆栈,其中 指示 NSD 包的文件名(在本实验中,jove_uavs_scenario_nsd.tar.gz)。
  3. 部署智能农网服务。为此,请从 OSM 命令行界面运行以下命令:osm ns-create --ns_name --nsd_name jove_uavs_scenario_nsd --vim_account --config '{vnf: [ {member-vnf-index: "5", vim_account: }, {member-vnf-index: "6", vim_account: } ], wim_account: False }'.
    注意:如步骤 3.6.3 中所示,<外部 VIM 名称>和<中 VIM 名称>参数指示要部署 VNF 的站点。特别是,构成智能农业服务的所有VNF将被放置在新的外部站点中,除了那些索引为5和6的 VNF(5G核心物联网服务器VNF)将被分配给中央站点。
  4. 请按照步骤 3.6.4 中的相同过程检查是否已部署 NS。
  5. 使用命令"ssh mosquittosubscriber@"访问 物联网服务器VNF, 并通过命令"ip地址显示dev eth1"检查其配置为与 MQTT网关VNF 通信的接口。在 OSM 命令行中执行"osm vnf-list"可以获得 VNF () 的 IP 地址。
  6. 按照类似的过程,访问MQTT 网关 VNF,并运行命令 "sudo python3 publisher_MQTT_GW.py -ma -ba ",其中 是在上一步中获得的,执行MQTT 网关 VNF中的"IP 地址显示 dev eth1"命令。此步骤初始化MQTT网关VNF,它将使用MQTT标准15接收传感器生成的数据,使用相同的标准将这些数据传输到物联网服务器VNF。
  7. 准备一台单板计算机(SBC),连接气象传感器,并具有收发器容量,可将传感器读数传输到MQTT网关VNF。
    注意:为了举例说明此协议,特别使用了SBC模型。因此,在使用不同的SBC平台的情况下,可能需要调整以下步骤。
    1. 按照 图5的配置方案,将传感器的电路板引脚连接到SBC的通用输入/输出(GPIO)引脚(例如,使用锡焊铜线)。
    2. 启用 SBC 中的 I2C 内核模块,以便能够验证是否检测到传感器。为此,请运行命令"sudo raspi-config",按照显示菜单中的 "接口选项 -> I2C -> 是 "序列进行操作,然后重新启动 SBC 以使更改生效。
    3. 验证是否检测到传感器 在 SBC 中安装软件 i2c 工具 ,然后执行命令"sudo i2cdetect -y 1"。如果是这样,应出现一个网格,指示检测到传感器的位置。
    4. 安装相应的软件库,以允许 SBC 读取和发送传感器提供的数据。特别是,这个实验利用了 RPi.bme28032paho-mqtt33 Python库。
  8. 使用SUAV的移动应用程序,取下承载 接入点VNF的飞行器,并将其定位以通过传感器为SBC提供无线覆盖。
    注意:支持NFV的SUV的飞行独立于网络服务的操作行为,无论SUV是在飞行还是在休息状态下都能运行,以减轻电池消耗。因此,步骤 4.8 是可选的。
  9. 将负责读取传感器收集的数据的 SBC 连接到 接入点 VNF提供的 Wi-Fi 无线接入点。成功连接后,将启用从传感器到 MQTT 网关 VNF的无线网络路径。
  10. 开始传输感测到的数据,运行命令"python3 /home/ubuntu/sensorDataTransmission.py -a ",其中包含传感器(是在步骤 4.6 中获取的 IP 地址)。
  11. 访问物联网服务器VNF提供的Web GUI,以检查检测数据的正确实时接收。为此,请使用命令"osm vnf-list"检查 IoT 服务器 VNF 的 IP 地址,然后在 Web 浏览器中键入以下统一资源定位器 (URL):http://:3001,其中 IoT 服务器 VNF的 IP 地址。然后,单击"主页"选项卡的"传感器数据收集"按钮,并在收到数据时验证仪表板中包含的图形的实时更新。
    注意:为了能够访问步骤 4.12 中提到的 URL,具有尝试访问该资源的 Web 浏览器的设备必须连接到 NFV 生态系统,并与 IoT 服务器 VNF建立 IP 连接。VPN服务也可用于此目的。
  12. 等待适当的时间段,以获得智能农业服务执行的代表性结果。然后,收集存储在 IoT 服务器 VNF 中的数据以进行进一步分析。考虑到该实验中包含的传感器每5秒提供一次温度、湿度和压力读数,实验中的服务运行时间为10分钟,产生180个感测数据样本(每种气象值类型为60个)。
  13. 访问 物联网服务器VNF 的数据库以检索感知到的数据以进行进一步分析。为此,请执行命令"id_database=$(sudo docker ps |grep 'influxdb:' |在 IoT Server VNF 上剪切 -d ' ' -f 1)",然后"sudo docker exec -it $id_database bash"
  14. 将数据导出到逗号分隔值 (CSV) 文件,运行命令"influx -database 'mainflux' -execute "SELECT * FROM MESSAGES WHERE \"name\" = '' " -format csv > /tmp/.csv"。修改参数以选择要导出的检测数据类型以及"温度"、"湿度"或"压力",并设置<文件名>参数为将保留结果的输出文件选择名称。
  15. 保存在上一步中生成的数据文件,以便以后表示(请参阅代表性结果部分)并验证智能农业服务的正常运行。

Representative Results

在仔细遵循协议将新站点合并到中央平台并运行一个网络服务以验证其正确功能后, 图 6 描绘了 open-vpn-monitor 工具的屏幕截图。可以观察到新站点如何使用VPN进行所有通信,显示其通信如何遵循VPN以允许此数据交换,从而将新站点正确添加到VPN服务中。

如图 3所示,网络服务将信息从位于远程基础设施中的传感器传递到位于中央站点的服务器。此外, 图 7 显示了从 OSM Web GUI 成功部署网络服务的情况,展示了如何从位于中央站点内的 MANO 堆栈在新的远程基础结构中正确实例化实验。此外,在实验中完成服务部署所需的时间约为 8 分钟。此值以及将服务描述符载入编排平台所需的时间(大约 9 秒,每个描述符 1.3 秒,同时考虑到 NS 和每个 VNF 描述符),可以满足服务创建时间 90 分钟的关键性能指标 (KPI),如 5G 基础结构公私合作伙伴关系34所示。在这种情况下,Vidal等人9 中介绍的工作包括使用所呈现的协议对多个站点的服务创建时间进行深入分析。

图8显示了从传感器收集的数据,包括湿度、温度和压力值。这些样本对应于从传感器发送到位于 5TONIC 中的远程服务器的所有数据,这些值存储在数据库中。所有这些数据表明,该平台能够在包含新的基础架构后部署实际的网络服务,并正确启用站点之间的通信。

Figure 1
1:VPN服务站点分发。通过平台分发VPN服务及其链路连接(全部通过5TONIC)。请点击此处查看此图的放大版本。

Figure 2
图 2.平台和 VPN 服务概述。 此图显示了平台的所有元素:中心位置,以及其NFV基础架构,VPN服务和聚合到系统的新基础架构。它还包括其元素之间的连接。 请点击此处查看此图的放大版本。

Figure 3
图3:网络服务概述。 它描述了网络服务中涉及的元素,其分布及其逻辑和网络连接。 请点击此处查看此图的放大版本。

Figure 4
图4:协议工作流。 每列代表协议的一个部分,其中描述了执行的每个操作,以及它们与负责其执行的组件之间的逻辑连接。 请点击此处查看此图的放大版本。

Figure 5
图5:引脚配置方案。 表示如何在传感器的电路板引脚和包含该传感器的 SBC 的 GPIO 引脚之间建立物理连接的图表。 请点击此处查看此图的放大版本。

Figure 6
6:OpenVPN监控快照。该图片显示聚合的基础结构已连接到 VPN 服务,包括有关其连接的一些详细信息。此外,该图还描述了属于其他远程基础设施的其他连接。请点击此处查看此图的放大版本。

Figure 7
图 7:OSMNS 部署状态。 OSM图形界面,显示测试网络服务在远程基础架构中的成功部署。 请点击此处查看此图的放大版本。

Figure 8
图8:传感器收集的数据的代表性分析。(A)传感器每5秒定期收集的温度数据图示。(B)传感器每5秒收集的湿度数据的图形表示。(C)传感器每5秒采集的压力数据的可视化描述。请点击此处查看此图的放大版本。

Discussion

前面描述的协议最重要的方面之一是它具有出色的灵活性,可以将新的计算基础设施整合到NFV生态系统中,而不管它们在地理位置方面的分布如何(只要与远程站点的网络通信的带宽和延迟支持它)。这可以通过基于VPN的覆盖网络架构来实现,该架构允许建立虚拟链路以将远程站点连接到NFV生态系统的中心场所。这种方法能够提供有效和安全的通道,以支持 NFV 生态系统站点之间的 NFV 和数据通信,从而降低外部各方访问和/或修改有关 NFV 编排流程和已部署服务数据的敏感信息的可能性。在这种情况下,该协议还描述了一种与外部站点安全地共享 VPN 凭据的特定方法,这些站点将启用新基础结构的集成。该协议已经使用马德里卡洛斯三世大学,西班牙电信和IMDEA网络研究所在5TONIC提供的NFV生态系统进行了例证,尽管它是通用的,用于其他NFV环境,满足该协议步骤1中提到的先决条件。

此外,值得强调的是,开源工具和软件在协议实现中的独占使用。尽管不同的专有解决方案(例如 Fortinet35)可以提供潜在的有益功能,但开源开发的使用由于其固有的特性(例如成本效益,开源社区提供的广泛软件支持以及高水平的可靠性)促进了协议所包含的所有元素的集成, 仅举几例。此外,利用开放源码技术还可以促进类似性质的组成部分之间的协同作用。例如,为了监视使用该平台的客户端的VPN连接状态,在整个协议中实现的VPN服务可以依赖于open-vpn监视工具36( 一种能够与OpenVPN服务器互操作的基于python的监视工具)。

另一方面,协议规范考虑跨不同站点的网络服务的实例化以进行验证。在这方面,重要的是要强调,在给定站点上部署服务取决于站点上的计算,存储和网络资源的可用性,以及执行部署可能需要的专用设备(例如,启用NFV的SUV)。这不是协议的限制,有兴趣重现本文中描述的实验的利益相关者应考虑到这一点。

此外,应该注意的是,执行网络服务部署所需的时间在很大程度上取决于几个因素,例如编排器和不同VIM之间的网络路径,VIM与其托管计算节点之间的数据通信性能,以及这些计算节点的固有性质(不仅因为它们的可用计算资源, 以及用于执行网络功能虚拟化的技术)。

最后,鉴于该平台及其VPN服务在欧洲项目和迄今为止使用的协作作品(例如,本文档介绍中提到的5GINFIRE,5GRANGE或5GCity)上的出色表现,它将被视为马德里卡洛斯三世大学新兴欧洲项目中的重要元素, Telefónica和IMDEA Networks Institute参与其中,例如Horizon 2020 LABYRINTH,或TRUE-5G等国家项目。

Disclosures

作者没有什么可透露的。

Acknowledgments

这项工作得到了欧洲H2020迷宫项目(资助协议H2020-MG-2019-TwoStages-861696)和TRUE5G项目(PID2019-108713RB-C52PID2019-108713RB-C52 / AEI / 10.13039 / 501100011033)的部分支持。此外,Borja Nogales,Ivan Vidal和Diego R. Lopez的工作部分得到了欧洲H2020 5G-VINNI项目(赠款协议编号815279)的支持。最后,作者感谢亚历杭德罗·罗德里格斯·加西亚在实现这项工作期间的支持。

Materials

Name Company Catalog Number Comments
Bebop 2 Parrot UAV used in the experiment to transport the RPis and thus, provide mobility to the compute units of external site.
BME280 Sensor Bosch Sensor capable of providing readings of the environmental conditions regarding temperature, barometric pressure, and humidity. 
Commercial Intel Core Mini-ITX Computer Logic Suppy Computer server which hosts the OpenStack controller node (being executed as a VM) of the experiment's extternal aite. In addition, another unit of this equipment (along with the RPis) conforms the computational resources of the NFV insfrastrucure included in that site.
Iptables Netfilter - Open source tool (Software) An open source command line utility for configuring Linux kernel firewall rulset. Source-code available online: https://www.netfilter.org/projects/iptables/
Lithium Battery Pack Expansion Board. Model KY68C-UK Kuman Battery-power supply HAT (Hardware Attached on Top) for the UAV computation units composing the NFV infrastructure of the external site.
MacBook Pro  Apple Commodity laptop utilized during the experiment to obtain and gather the results as described in the manuscript.
Mainflux Mainflux Labs - Open source platform (Software) Open source Internet of Things (IoT) platform used in the experiment for implementing the virtual network function called as IoT Server VNF. In addition, this platform includes an open-source software based on Grafana which allows the visualization and formatting of the metric data. Source code available online: https://www.mainflux.com/
Open Source MANO (OSM) - Release FOUR ETSI OSM - Open source community (Software) Management and Orchestration (MANO) software stack of the NFV system configured in the experiment. Source-code available online: https://osm.etsi.org/docs/user-guide/
OpenStack - Release Ocata OpenStack - Open source community (Software) Open source software used for setting up both the NFV infrastrucure of the central site and the NFV infrastructure of external site within the experiment. Source-code available online: https://docs.openstack.org/ocata/install-guide-ubuntu
OpenVPN - Version 2.3.10 OpenVPN - Open source community Open source software implementing the VPN service presented in the experiment for the creation of the overlay network that will enable the operations of the NFV ecosystem (providing connectivity among all the sites comprising the ecosystem). Source-code available online: https://openvpn.net/ 
Openvpn-monitor Python - Open source software (Software) Open source program based on Python code that allows the visualization of the state of the VPN service, as well as the representation of the sites that are connected at every instant. For this purpose, the program check priodically the information provided by the VPN server implemented with OpenVPN. Source-code available online: https://github.com/furlongm/openvpn-monitor 
Paho-mqtt 1.5.0 Python - Open source library (Software) Open source library developed in Python code that enables the trasmission of the data read by the sensor through the use of MQTT standard  Source-code available online: https://pypi.org/project/paho-mqtt/
Ping  Debian - Open source tool (Software) An open source test tool, which verifies the connectivity between two devices connected through a communications network. In addition, this tool allows to assess the network performance since it calculates the Round Trip Time (i.e., the time taken to send and received a data packet from the network).  Source-code available online: https://packages.debian.org/es/sid/iputils-ping
Power Edge R430 Dell High-profile computer server which provides the computational capacity within the central site presented in the experiment.
Power Edge R430 Dell High-profile computer server in charge of hosting the virtual private network (VPN) service. Note that the computing requirements for provisioning this service are high due to the resource consumption of the encryption operations present in the service.
Power Edge R630 Dell Equipment used for hosting the virtual machine (VM) on charge of executing the MANO stack. In addition, the OpenStack controller node of the central site is also executed as a VM in this device. Note that the use of this device is not strictly needed. The operations carried out by this device could be done by a lower performance equipment due to the non-high resource specifications of the before mentioned VMs.
Raspberry PI. Model 3b Raspberry Pi Foundation Selected model of Single Board Computer (SBC ) used for providing the computational capacity to the experiment's external site. In addition, this SBC model is used during the deployment of the included realistic service for interpreting and sending the data collected by a sensor.
RPi.bme280 0.2.3 Python - Open source library (Software) Open source library developed in Python code that allows to interface the sensor Bosch BME280, and interpret the readings offered by that sensor. Source-code available online: https://pypi.org/project/RPi.bme280/

DOWNLOAD MATERIALS LIST

References

  1. Gupta, A., Jha, R. K. A Survey of 5G Network: Architecture and Emerging Technologies. IEEE Access. 3, 1206-1232 (2015).
  2. Yu, H., Lee, H., Jeon, H. What is 5G? Emerging 5G Mobile Services and Network Requirements. Sustainability. 9, 1848 (2017).
  3. Yi, B., Wang, X., Li, K., Huang, M. A comprehensive survey of network function virtualization. Computer Networks. 133, 212-262 (2018).
  4. 5TONIC. An Open Research and Innovation Laboratory Focusing on 5G Technologies. 5TONIC. , Available from: https://www.5tonic.org (2020).
  5. ETSI. ETSI GS NFV 002. Network Functions Virtualization: Architectural Framework. ETSI. , V1.2.1 (2014).
  6. An Open Source NFV Management and Orchestration (MANO) software stack aligned with ETSI NFV. ETSI OSM. , Available from: https://osm.etsi.org (2020).
  7. Silva, A. P., et al. 5GinFIRE: An end-to-end open5G vertical network function ecosystem. Ad Hoc Networks. 93, 101895 (2019).
  8. Nogales, B., et al. Design and deployment of an open management and orchestration platform for multi-site nfv experimentation. IEEE Communications Magazine. 57 (1), 20-27 (2019).
  9. Vidal, I., et al. Multi-Site NFV Testbed for Experimentation With SUAV-Based 5G Vertical Services. IEEE Access. 8, 111522-111535 (2020).
  10. Nogales, B., Sanchez-Aguero, V., Vidal, I., Valera, F. Adaptable and automated small uav deployments via virtualization. Sensors. 18 (12), 4116 (2018).
  11. Gonzalez, L. F., et al. Transport-Layer Limitations for NFV Orchestration in Resource-Constrained Aerial Networks. Sensors. 19 (23), 5220 (2019).
  12. Sanchez-Aguero, V., Valera, F., Nogales, B., Gonzalez, L. F., Vidal, I. VENUE: Virtualized Environment for multi-UAV network emulation. IEEE Access. 7, 154659-154671 (2019).
  13. Kalogiros, C., et al. The potential of 5G experimentation-as-a-service paradigm for operators and vertical industries: the case of 5G-VINNI facility. IEEE 2nd 5G World Forum (5GWF). , Dresden, Germany. 347-352 (2019).
  14. Ordonez-Lucena, J., Tranoris, C., Rodrigues, J., Contreras, L. M. Cross-domain Slice Orchestration for Advanced Vertical Trials in a Multi-Vendor 5G Facility. 2020 European Conference on Networks and Communications (EuCNC). , Dubrovnik, Croatia. 40-45 (2020).
  15. OASIS. ISO/IEC 20922:2016 Information technology -- MQ Telemetry Transport (MQTT) v3.1.1. International Organization for Standardization. , (2016).
  16. An Open source IoT Platform Edge computing and Consulting services. Mainflux. , Available from: https://www.mainflux.com (2020).
  17. 3rd Generation Partnership Project. System architecture for the 5g system; stage 2. Technical Specification Group Services and System Aspects. 3GPP Technical Specification 23.501, version 16.2.0. , (2019).
  18. Open Source MANO Release SEVEN user-guide documentation. , Available from: https://osm.etsi.org/docs/user-guide (2020).
  19. Open Source Software for Creating Private and Public Clouds. OpenStack. , Available from: https://www.openstack.org (2020).
  20. OpenStack release Ocata Documentation. OpenStack. , Available from: https://docs.openstack.org/ocata (2019).
  21. OpenStack release Ocata Installation Tutorial for Ubuntu. OpenStack. , Available from: https://docs.openstack.org/ocata/install-guide-ubuntu (2019).
  22. Public Experiment Repository. , Available from: http://vm-images.netcom.it.uc3m.es/JoVE_2020/ (2020).
  23. A full-featured, open, and cost-effective VPN solution. OpenVPN. , Available from: https://openvpn.net (2020).
  24. OpenVPN How to Installation Guide. OpenVPN. , Available from: https://openvpn.net/community-resources/how-to/#installing-openvpn (2020).
  25. A Linux kernel firewall implementation. Iptables. , Available from: https://wiki.archlinux.org/index.php/Iptables (2020).
  26. An NFV VIM implementation contributed to the open source community project ETSI OSM. OpenVIM. , Available from: https://osm.etsi.org/gitweb/?p=osm/openvim.git (2020).
  27. A cloud service-delivery platform to operate and manage cloud-service businesses. VMware Cloud Director. , Available from: https://www.vmware.com/uk/products/cloud-director.html (2020).
  28. A broadly adopted cloud platform offering services from datacenters globally. Amazon Web Services (AWS). , Available from: https://aws.amazon.com (2020).
  29. Microsoft cloud computing service for developing and managing services and applications through Microsoft-managed datacenters. Microsoft Azure. , Available from: https://azure.microsoft.com/en-us (2020).
  30. Eclipse fog05, The End-to-End Compute, Storage and Networking Virtualization solution. Eclipse Foundation. , Available from: https://fog05.io (2020).
  31. Nogales, B., et al. Automated Deployment of an Internet Protocol Telephony Service on Unmanned Aerial Vehicles Using Network Functions Virtualization. Journal of Visualized Experiments. (153), e60425 (2019).
  32. RPi.bme280 0.2.3. A Python library to drive BME280 sensor over I2C. PYPI. , Available from: https://pypi.org/project/RPi.bme280/ (2020).
  33. Paho-mqtt 1.5.0. A Python library implementing the MQTT client version 3.1.1. PYPI. , Available from: https://pypi.org/project/paho-mqtt/ (2020).
  34. Public Private Partnership in Horizon 2020. Creating a Smart Ubiquitous Network for the Future Internet. Advanced 5G Network Infrastructure for the Future Internet. , (2013).
  35. Deliver Network Security Digital Transformation. Fortinet. , Available from: https://www.fortinet.com (2020).
  36. Open source tool to monitor the status of the service offered by an OpenVPN server. Openvpn-monitor. , Available from: https://github.com/furlongm/openvpn-monitor (2020).
将5G实验基础设施集成到多站点NFV生态系统中
Play Video
PDF DOI DOWNLOAD MATERIALS LIST

Cite this Article

Nogales, B., Gonzalez, L. F., Vidal, I., Valera, F., Garcia-Reinoso, J., Lopez, D. R., Rodríguez, J., Gonzalez, N., Berberana, I., Azcorra, A. Integration of 5G Experimentation Infrastructures into a Multi-Site NFV Ecosystem. J. Vis. Exp. (168), e61946, doi:10.3791/61946 (2021).More

Nogales, B., Gonzalez, L. F., Vidal, I., Valera, F., Garcia-Reinoso, J., Lopez, D. R., Rodríguez, J., Gonzalez, N., Berberana, I., Azcorra, A. Integration of 5G Experimentation Infrastructures into a Multi-Site NFV Ecosystem. J. Vis. Exp. (168), e61946, doi:10.3791/61946 (2021).

Less
Copy Citation Download Citation Reprints and Permissions
View Video

Get cutting-edge science videos from JoVE sent straight to your inbox every month.

Waiting X
Simple Hit Counter