CN116382854B - 一种可编程虚拟网卡、代码运行方法及云系统 - Google Patents

一种可编程虚拟网卡、代码运行方法及云系统 Download PDF

Info

Publication number
CN116382854B
CN116382854B CN202310602799.0A CN202310602799A CN116382854B CN 116382854 B CN116382854 B CN 116382854B CN 202310602799 A CN202310602799 A CN 202310602799A CN 116382854 B CN116382854 B CN 116382854B
Authority
CN
China
Prior art keywords
network card
source code
virtual network
module
preset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310602799.0A
Other languages
English (en)
Other versions
CN116382854A (zh
Inventor
肖渝鹏
赵欣
段经璞
王瑾璠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southern University of Science and Technology
Original Assignee
Southern University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southern University of Science and Technology filed Critical Southern University of Science and Technology
Priority to CN202310602799.0A priority Critical patent/CN116382854B/zh
Publication of CN116382854A publication Critical patent/CN116382854A/zh
Application granted granted Critical
Publication of CN116382854B publication Critical patent/CN116382854B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种可编程虚拟网卡、代码运行方法及云系统,所述可编程虚拟网卡包括运行环境模块和虚拟网卡模块,运行环境模块部署于软件交换机内,虚拟网卡模块以外围设备形成为网络节点提供网络功能;运行环境模块可以接收并检测云租户上传的源代码,将检测合格的源代码上载给虚拟网卡模块,并通过虚拟网卡模块运行源代码。本申请将智能网卡虚拟化成可编程虚拟网卡,通过可编程虚拟网卡中的运行环境模块接收并检测云租户的源代码,并通过可编程虚拟网卡中的虚拟网卡模块对检测合格的源代码进行运行,这样使得云租户可以直接通过提交的源代码来访问底层的可编程虚拟网卡,通过可编程虚拟网卡为云租户提供资源并享受可编程网卡带来的可编程能力。

Description

一种可编程虚拟网卡、代码运行方法及云系统
技术领域
本申请涉及仿真网络技术领域,特别涉及一种可编程虚拟网卡、代码运行方法及云系统。
背景技术
近年来,随着移动计算的浪潮和5G时代的来临,服务器承载的网络流量也在不断地攀升。在处理海量流量的关键数据中心内,服务器硬件的接入带宽在从10Gbps逐渐攀升到100Gbps,并有向200Gbps快速迈进的趋势,这使得服务器需要耗费大量CPU时间来执行网络包抓取,协议栈处理等基础网络任务,侵占了业务逻辑的运行时间,降低了整个服务器的运行效率。因此,在网络流量快速增长的大背景下,如何将服务器从网络任务处理的负担中解放出来,使其能够专注于业务逻辑的处理,并取得更加优异的整体性能,成为了一个重要的研究问题。
智能网卡的出现在一定程度上为这个问题给出了答案。智能网卡是一种混合型设备,它在装备有常规网卡硬件的同时,还配备有FPGA芯片或片上SoC系统,用来运行用户的定制程序。在智能网卡中运行的程序可以避免通过PCIe总线与CPU通信,克服了PCIe总线的带宽和传输延迟限制,与服务器CPU中运行的程序相比有明显的加速效果。搭载智能网卡的服务器可将原先由CPU处理的网络任务剥离出来,卸载到智能网卡中运行。这使得服务器可以充分利用CPU资源来运行业务逻辑和处理用户请求,进而提高了服务器程序的整体吞吐量。
然而,在当前阶段,智能网卡的编程只能由具有极高系统权限的硬件集群管理人员完成。云环境中的普通云租户无法在高度虚拟化的云环境中访问智能网卡,这是由于如果将智能网卡的编程接口赋予云租户直接操作,若编程接口被不受信任的云租户使用则会产生严重的安全隐患,进而影响整个云系统的正常运行。
因而现有技术还有待改进和提高。
发明内容
本申请要解决的技术问题在于,针对现有技术的不足,提供一种可编程虚拟网卡、代码运行方法及云系统。
为了解决上述技术问题,本申请实施例第一方面提供了一种可编程虚拟网卡,所述可编程虚拟网卡包括运行环境模块和虚拟网卡模块,所述运行环境模块部署于软件交换机内,为虚拟网卡模块提供安全执行环境;所述虚拟网卡模块以外围设备形式为网络节点提供网络功能,其中,运行环境模块用于接收并检测云租户上传的源代码;所述虚拟网卡模块用于运行通过运行环境模块检测的源代码。
所述可编程虚拟网卡,其中,所述可编程虚拟网卡所采用的编程语言为Rust语言。
所述可编程虚拟网卡,其中,所述可编程虚拟网卡设置有核心逻辑卸载接口、NFV功能接口和云系统管理员编程接口,其中,所述核心逻辑卸载接口用于云租户进行应用程序核心逻辑的卸载操作,所述NFV功能接口用于提供网络功能程序模板,所述云系统管理员编程接口用于对应用所述可编程虚拟网卡的云系统进行操作。
本申请实施例第二方面提供了一种云系统,其包括至少一个后台服务器,所述后台服务器内部署有若干如上所述的可编程虚拟网卡、若干网络节点和软件交换机,若干可编程虚拟网卡与若干网络节点一一对应;各可编程虚拟网卡中的运行环境模块均部署于所述软件交换机内,各可编程虚拟网卡中的虚拟网卡模块以外围设备形成为其对应的网络节点提供网络功能。
所述云系统,其中,所述软件交换机内设置有调度器,所述调度器与运行环境模块以及所述软件交换机内的软件交换模块相连接,并用于基于时间片算法对运行程序模块以及所述软件交互机中的软件交换模块进行调度。
所述云系统,其中,所述基于时间片算法对运行程序模块以及所述软件交互机中的软件交换模块进行调度的具体过程包括:
对所述源代码进行边界检测;
当所述源代码的边界满足预设要求时,将所述源代码添加至预设源代码队列,其中,所述预设要求为未包含无限循环或者循环次数大于预设次数阈值的代码;
基于预设源代码队列确定运行程序模块对应的优先级,并基于时间片算法按照优先级对运行环境模块进行调度,以使得运行环境模块调用其对应的预设源代码队列中的源代码。
所述云系统,其中,所述优先级的计算公式为:
其中,表示优先级,/>表示预设源代码队列中的队首数据包的排队延迟,/>表示预设源代码队列中的源代码数量,/>和/>表示系数因子。
本申请实施例第三方面提供了一种基于可编程虚拟网卡的代码运行方法,所述可编程虚拟网卡包括运行环境模块和虚拟网卡模块,所述运行环境模块部署于软件交换机内,所述虚拟网卡模块以外围设备形成为网络节点提供网络功能;所述代码运行方法具体包括:
接收云租户上传的源代码,通过运行环境模块对所述源代码进行检测;
当所述源代码检测合格时,通过运行环境模块将所述源代码传输给虚拟网卡模块,并通过所述虚拟网卡模块运行所述源代码。
所述基于可编程虚拟网卡的代码运行方法,其中,所述源代码所采用的编程语言为Rust语言。
所述基于可编程虚拟网卡的代码运行方法,其中,所述通过所述运行环境模块对接收到的源代码进行检测具体包括:
对所述源代码进行静态分析,以检测所述源代码的安全性;
当所述源代码的安全性满足预设条件时,检测所述源代码所调用的功能模块是否包含于预设功能模块集合;
当功能模块包含于预设功能模块集合时,判定所述源代码检测合格;
当功能模块未包含于预设功能模块集合,或者所述源代码的安全性为满足预设条件时,判定所述源代码检测不合格。
所述基于可编程虚拟网卡的代码运行方法,其中,所述通过运行环境模块对接收到的源代码进行检测之前,所述方法还包括:
对所述源代码进行边界检测;
当所述源代码的边界满足预设要求时,将所述源代码添加至预设源代码队列,其中,所述预设要求为未包含无限循环或者循环次数大于预设次数阈值的代码;
基于预设源代码队列确定运行程序模块对应的优先级,并基于时间片算法按照优先级对运行环境模块进行调度,以使得运行环境模块调用其对应的预设源代码队列中的源代码。
所述基于可编程虚拟网卡的代码运行方法,其中,所述优先级的计算公式为:
其中,表示优先级,/>表示预设源代码队列中的队首数据包的排队延迟,/>表示预设源代码队列中的源代码数量,/>和/>表示系数因子。
有益效果:与现有技术相比,本申请提供了一种可编程虚拟网卡、代码运行方法及云系统,所述可编程虚拟网卡包括运行环境模块和虚拟网卡模块,所述运行环境模块部署于软件交换机内,所述虚拟网卡模块以外围设备形成为网络节点提供网络功能;运行环境模块可以接收并检测云租户上传的源代码,将检测合格的源代码上载给虚拟网卡模块,并通过所述虚拟网卡模块运行所述源代码。本申请将智能网卡虚拟化成可编程虚拟网卡,通过可编程虚拟网卡中的运行环境模块接收并检测云租户的源代码,并通过可编程虚拟网卡中的虚拟网卡模块对检测合格的源代码进行运行,这样使得云租户可以直接通过提交的源代码来访问底层的可编程虚拟网卡,以通过可编程虚拟网卡为云租户提供资源并享受可编程网卡带来的可编程能力。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员而言,在不符创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的可编程虚拟网卡的示意图。
图2为本申请提供的可编程虚拟网卡的原理图。
图3为运行环境模块的调度器的示意图。
图4为本申请提供的基于可编程虚拟网卡的代码运行方法的流程图。
具体实施方式
本申请提供一种可编程虚拟网卡、代码运行方法及云系统,为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
应理解,本实施例中各步骤的序号和大小并不意味着执行顺序的先后,各过程的执行顺序以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
经过研究发现,近年来,随着移动计算的浪潮和5G时代的来临,服务器承载的网络流量也在不断地攀升。在处理海量流量的关键数据中心内,服务器硬件的接入带宽在从10Gbps逐渐攀升到100Gbps,并有向200Gbps快速迈进的趋势,这使得服务器需要耗费大量CPU时间来执行网络包抓取,协议栈处理等基础网络任务,侵占了业务逻辑的运行时间,降低了整个服务器的运行效率。在网络流量快速增长的大背景下,如何将服务器从网络任务处理的负担中解放出来,使其能够专注于业务逻辑的处理,并取得更加优异的整体性能,成为了一个重要的研究问题。
智能网卡的出现在一定程度上为这个问题给出了答案。智能网卡是一种混合型设备,它在装备有常规网卡硬件的同时,还配备有FPGA芯片或片上SoC系统,用来运行用户的定制程序。在智能网卡中运行的程序可以避免通过PCIe总线与CPU通信,克服了PCIe总线的带宽和传输延迟限制,与服务器CPU中运行的程序相比有明显的加速效果。搭载智能网卡的服务器可将原先由CPU处理的网络任务剥离出来,卸载到智能网卡中运行。这使得服务器可以充分利用CPU资源来运行业务逻辑和处理用户请求,进而提高了服务器程序的整体吞吐量。
然而,在当前阶段,智能网卡的编程只能由具有极高系统权限的硬件集群管理人员完成。云环境中的普通云租户无法在高度虚拟化的云环境中访问智能网卡,这是由于如果将智能网卡的编程接口赋予云租户直接操作,若编程接口被不受信任的云租户使用则会产生严重的安全隐患,进而影响整个云系统的正常运行。
为了解决上述问题,在本申请实施例提供了一种可编程虚拟网卡,所述可编程虚拟网卡包括运行环境模块和虚拟网卡模块,所述运行环境模块部署于软件交换机内,所述虚拟网卡模块以外围设备形成为网络节点提供网络功能;运行环境模块可以接收并检测云租户上传的源代码,将检测合格的源代码上载给虚拟网卡模块,并通过所述虚拟网卡模块运行所述源代码。本申请将智能网卡虚拟化成可编程虚拟网卡,通过可编程虚拟网卡中的运行环境模块接收并检测云租户的源代码,并通过可编程虚拟网卡中的虚拟网卡模块对检测合格的源代码进行运行,这样使得云租户可以直接通过提交的源代码来访问底层的可编程虚拟网卡,以通过可编程虚拟网卡为云租户提供资源并享受可编程网卡带来的可编程能力。
下面结合附图,通过对实施例的描述,对申请内容作进一步说明。
本实施例提供了一种可编程虚拟网卡,如图1所示,所述可编程虚拟网卡向下对接软件交换机,向上对接网络节点,如虚拟机和容器等,网络节点可以利用可编程虚拟网卡收发数据,并且可编程虚拟网卡向云租户提供编程接口,云租户可以通过编程接口向可编程虚拟网卡上载自己编写的源代码,并在可编程虚拟网卡中运行该源代码,以使得云租户可以直接通过提交的源代码来访问底层的可编程虚拟网卡,以通过可编程虚拟网卡为云租户提供资源并享受可编程网卡带来的可编程能力。
如图2所示,可编程虚拟网卡包括运行环境模块和虚拟网卡模块,运行环境模块与虚拟网卡模块建立通信,运行环境模块部署于软件交换机内,虚拟网卡模块部署于网络节点内。运行环境模块为虚拟网卡模块提供安全执行环境,虚拟网卡模块向上以外围设备形式为网络节点提供网络功能,向下依赖于运行环境。本实施例提供的可编程虚拟网卡通过运行环境模块对云租户上载的源代码进行安全检测,并将检测合格的源代码上载给虚拟网卡模块以通过虚拟网卡模块运行该源代码,这样一方面可以使得云租户可以直接通过提交的源代码来访问底层的可编程虚拟网卡,使得云租户可以进行核心逻辑的卸载加速,另一方面可以提高上载给可编程虚拟网卡的源代码的安全性,避免可编程虚拟网卡被不受信任的云租户使用所产生的安全隐患问题,保证了云系统的安全性。
在一个实现方式中,所述可编程虚拟网卡所采用的编程语言为Rust语言,Rust语言具有内存对象生命周期管理机制,对象的引用指向有效内存地址,通过利用借用规则和引用生命周期实现在无引用计数器和内存垃圾回收机制的情况下对对象进行安全地分配和回收。同时,Rust语言还具备完备的模块权限系统,可以保证没有权限的软件模块无法访问其他软件模块中的核心数据结构。Rust语言中的所有安全机制都在源码的编译时期由编译器的静态分析功能来保证,其编译生成的二进制代码不含有任何影响运行效率的软件指令,可以取得与C/C++程序相似的运行效率,因此,通过采用Rust语言作为编程语言,可以提高可编程虚拟网卡的安全性和高效性。
由于可编程虚拟网卡采用编程语言为Rust语言,从而云租户上载的源代码也采用Rust语言。运行环境模块在接收到源代码后,可以对源代码进行编译,并在编程过程中对源代码进行静态分析,以对源代码的安全性进行检测,其中,所述静态分析可以采用Rust静态分析工具,例如,MirChecker等。此外,Rust编码器内的内存安全检测机制会对源代码进行内存安全检测,并之后将内存安全检测通过的源代码加载到虚拟网卡模块中,可以进一步保障被虚拟网卡模块执行的源代码的安全性。
进一步,在对源代码进行静态分析后,还可以对源代码调用的功能模块进行检测,例如,预先设置功能模块集合,在源代码安全性检测通过后,检测源代码调用的功能模块是否包含于预设功能模块集合,如果包含于预设功能模块集合,说明源代码调用的功能模块为被允许调用的功能模块,反之,如果未包含于预设功能模块集合,说明源代码调用的功能模块为不被允许调用的功能模块,那么判断源代码为不安全代码。例如,预设功能模块集合包括系统功能模块,那么当源代码调用的功能模块包括API功能模块时,源代码被判断为不安全源代码。可以理解的是,只有当源代码通过静态分析的安全性检测以及通过预设功能模块集合的验证,才会被上载到虚拟网卡模块,反之,当源代码未通过静态分析,或者源代码调用的功能模块未包含于预设功能模块集合,源代码会被判断为不安全代码,不会被上载至虚拟网卡模块,这样通过静态分析和预设功能模块集合,可以及时发现云租户的恶意行为,并立即阻止恶意行为对应的源代码被编译或者运行,从而可以提高可编程虚拟网卡的安全性,提高了应用可编程虚拟网卡的云系统的安全性。
所述虚拟网卡模块可以复用现有虚拟网卡,并以外围虚拟设备的形式被网络节点所使用,例如,被虚拟机和/或容器所使用。此外,云系统中的服务器通常会被部署多个网络节点,此时,多个网络节点可以对用有多个可编程虚拟网卡,多个网络节点与多个可编程虚拟网卡一一对应,每个可编程虚拟网卡中的虚拟网卡模块作为其对应的网络节点的外围设备被网络节点使用,各可编程虚拟网卡的运行环境模块均部署于服务器上的软件交换机中。
在一个实现方式中,为了使得云租户可以直接向可编程虚拟网卡提交源代码,可编程虚拟网卡可以设置有编程接口,编程接口可以包括核心逻辑卸载接口、NFV功能接口和云系统管理员编程接口。其中,核心逻辑卸载接口用于云租户进行应用程序核心逻辑的卸载操作,这样可以为核心逻辑卸载的应用场景提供辅助工具与编程框架,以降低用户的开发难度。NFV功能接口用于提供网络功能程序模板;所述云系统管理员编程接口用于对所述可编程虚拟网卡的云系统进行操作。
进一步,核心逻辑卸载接口提供数据包解析器和缓存容器,数据包解析器用于解析网络协议,例如,Ethernet,ARP,及TCP/IP等。缓存容器用于在可编程虚拟网卡内缓存应用层数据,其中,缓存容器提供缓存替换策略供用户选择,例如,LFU,LRU及随机替换等。此外,核心逻辑卸载接口还可以提供类似于Click软件交换机中的Element Graph结构,来简化卸载逻辑的实现过程,其中,Element Graph结构可以帮助用户对程序进行解耦,并且基础功能模块(如,数据包解析等)可以被放进一个Element中,不同的Element之间可以连接成图,被Element处理过的数据包则会根据图的连接而被后续的Element处理。
NFV功能接口用于提供网络功能程序模板,以使得云租户可以直接使用NFV功能接口提供的网络功能程序模板来搭建NFV服务,而无需自己编写代码。对于需要实现的定制化NFV服务的云租,NFV功能接口还可以提供若干预设功能,例如,数据包头解析,带状态流处理,TCP字节流重建等,桶预设功能来降低网络功能程序的实现难度。此外,NFV功能接口还可以利用Rust语言的Future/Promise抽象来提供异步编程的功能,用于实现需要进行异步调用的网络功能。
云系统管理员编程接口允许云系统管理员扩展整个云系统的功能,通过在软件交换机中嵌入高性能网络协议栈和高性能RPC框架,并为设定应用提供高性能协议栈加速服务。
综上所述,本实施例提供了一种可编程虚拟网卡,所述可编程虚拟网卡包括运行环境模块和虚拟网卡模块,所述运行环境模块部署于软件交换机内,所述虚拟网卡模块以外围设备形成为网络节点提供网络功能;运行环境模块可以接收并检测云租户上传的源代码,将检测合格的源代码上载给虚拟网卡模块,并通过所述虚拟网卡模块运行所述源代码。本申请将智能网卡虚拟化成可编程虚拟网卡,通过可编程虚拟网卡中的运行环境模块接收并检测云租户的源代码,并通过可编程虚拟网卡中的虚拟网卡模块对检测合格的源代码进行运行,这样使得云租户可以直接通过提交的源代码来访问底层的可编程虚拟网卡,以通过可编程虚拟网卡为云租户提供资源并享受可编程网卡带来的可编程能力。
基于上述可编程虚拟网卡,本实施例提供了一种云系统,如图3所示,所述云系统至少包括一个后台服务器,所述后台服务器内部署有若干可编程虚拟网卡、若干网络节点和软件交换机,若干可编程虚拟网卡与若干网络节点一一对应;各可编程虚拟网卡中的运行环境模块均部署于所述软件交换机内,各可编程虚拟网卡中的虚拟网卡模块以外围设备形成为其对应的网络节点提供网络功能。此外,值得说明的是,在实际应用中,若干网络节点中也可以部分网络节点设置有可编程虚拟网卡,部分网络节点未设置有可编程虚拟网卡。同时,当云系统内设置多个服务器时,可以每个服务器中均设置有可编程虚拟网卡,也可以是部分服务器内设置有可编程虚拟网卡,部分服务器未设置有可编程虚拟网卡。
进一步,当服务器内设置有多个网络节点时,每个网络节点对应有可编程虚拟网卡时,由于服务器的资源限制,从而需要对各可编程虚拟网卡所需要的服务器资源进行调度。可编程虚拟网卡包括运行环境模块和虚拟网卡模块,运行环境模块部署于软件交换机内,虚拟网卡模块以外围设置形式供网络节点使用,从而可编程虚拟网卡的调度器可以分为两部分,一部分用于调度虚拟网卡模块,另一部分用于调度运行环境模块。其中,对于虚拟网卡模块而言,虚拟网卡模块是作为外围设备被网络节点使用的,虚拟网卡模块在其对应的网络节点运行时才会被操作系统访问和使用,从而虚拟网卡模块的调度器可以复用网络节点的调度器,这样可以降低可编程虚拟网卡的调度器的实现难度。
运行环境模块部署于软件交换机内,运行环境模块与软件交换机中的软件交换模块共享CPU资源,那么既需要对部署于软件交换机内的若干运行环境模块进行调度,还需要保证软件交换机获得足够的CPU时间以完成包交换工作。基于此,本实施例为软件交换机设置调度器,如图3所示,调度器设置于软件交换机内,并分别与各软件交换机中的各运行程序模块和软件交换模块相连接,以基于时间片算法对运行程序模块以及所述软件交互机中的软件交换模块进行调度。本实施例通过调度器对运行程序模块和软件交换模块进行调度,合理的对运行程序模块和软件交换模块进行CPU资源分配,可以使得获得充足CPU资源进行包交换,维护云系统的正常运行,同时,还可以对运行程序模块进行合理调配,提高云系统的工作效率。
在一个实现方式中,所述基于时间片算法对运行程序模块以及所述软件交互机中的软件交换模块进行调度的具体过程包括:
对所述源代码进行边界检测;
当所述源代码的边界满足预设要求时,将所述源代码添加至预设源代码队列,其中,所述预设要求为未包含无限循环或者循环次数大于预设次数阈值的代码;
基于预设源代码队列确定运行程序模块对应的优先级,并基于时间片算法按照优先级对运行环境模块进行调度,以使得运行环境模块调用其对应的预设源代码队列中的源代码。
具体地,所述边界检测用于检测源代码中是否包含无线循环或者循环次数大于预设次数阈值的代码,从而边界检测可以避免恶意程序通过死循环或者运行计算量大的任务来过度消耗CPU资源,以形成软件交换机的正常运行,进而影响云系统。
所述边界检测可以在编译阶段对源代码的循环边界进行检测,例如,在如下代码中,在编译阶段会对“do something”部分的代码来判断该循环是否为无限循环,如果是则拒绝编译。
//Receive a Packet
let pkt=RecvPacket()
while true{
//do something
}。
进一步,所述优先级为基于预设源代码队列中的源代码排队延迟和预设源代码队列中的源代码数据确定,预设源代码队列中的源代码排队延迟越长,源代码数量越多,其对应的运行程序模块的优先级越高。也就是说,软件交换机中部署的每个运行程序模块均对应的预设源代码队列,当运行程序模块接收到源代码时,将源代码添加至预设源代码队列,然后基于预设源代码队列的源代码排队延迟和预设源代码队列中的源代码数量确定该运行程序模块对应的优先级,并基于各运行程序模块的优选级按照时间片算法对运行程序模块和软件交换机进行调用,其中,当运行程序模块被调度运行时,运行程序模块对其自身对应的预设源代码队列中位于队首的源代码进行检测。
在一个实现方式中,所述优先级的计算公式为:
其中,表示优先级,/>表示预设源代码队列中的队首数据包的排队延迟,/>表示预设源代码队列中的源代码数量,/>和/>表示系数因子。
基于上述可编程虚拟网卡和云系统,本实施例通过了一种基于可编程虚拟网卡的代码运行方法,如图4所示,所述代码运行方法具体包括:
S10、接收云租户上传的源代码,通过运行环境模块对所述源代码进行检测;
S20、当所述源代码检测合格时,通过运行环境模块将所述源代码传输给虚拟网卡模块,并通过所述虚拟网卡模块运行所述源代码。
具体地,所述源代码所采用的编程语言为Rust语言,源代码为基于可编程虚拟网卡提供的核心逻辑卸载接口上载至运行环境模块,运行环境模块对源代码进行检测,以确定源代码是否可以被虚拟网卡模块运行。这样可以保证通过虚拟网卡模块运行的源代码的安全性。
在一个实现方式中,所述通过所述运行环境模块对接收到的源代码进行检测具体包括:
对所述源代码进行静态分析,以检测所述源代码的安全性;
当所述源代码的安全性满足预设条件时,检测所述源代码所调用的功能模块是否包含于预设功能模块集合;
当功能模块包含于预设功能模块集合时,判定所述源代码检测合格;
当功能模块未包含于预设功能模块集合,或者所述源代码的安全性为满足预设条件时,判定所述源代码检测不合格。
在一个实现方式中,所述通过运行环境模块对接收到的源代码进行检测之前,所述方法还包括:
对所述源代码进行边界检测;
当所述源代码的边界满足预设要求时,将所述源代码添加至预设源代码队列,其中,所述预设要求为未包含无限循环或者循环次数大于预设次数阈值的代码;
基于预设源代码队列确定运行程序模块对应的优先级,并基于时间片算法按照优先级对运行环境模块进行调度,以使得运行环境模块调用其对应的预设源代码队列中的源代码。
在一个实现方式中,所述优先级的计算公式为:
其中,表示优先级,/>表示预设源代码队列中的队首数据包的排队延迟,/>表示预设源代码队列中的源代码数量,/>和/>表示系数因子。
此外,上述基于可编程虚拟网卡的代码运行方法的具体过程在上述可编程虚拟网卡和云系统中已经详细说明,在这里就不再一一陈述。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (3)

1.一种可编程虚拟网卡,其特征在于,所述可编程虚拟网卡包括运行环境模块和虚拟网卡模块,所述运行环境模块部署于软件交换机内,为虚拟网卡模块提供安全执行环境;所述虚拟网卡模块以外围设备形式为网络节点提供网络功能,其中,运行环境模块用于接收并检测云租户上传的源代码;所述虚拟网卡模块用于运行通过运行环境模块检测的源代码,可编程虚拟网卡向云租户提供编程接口,以使得云租户直接通过提交的源代码来访问底层的可编程虚拟网卡,以通过可编程虚拟网卡为云租户提供资源并享受可编程网卡带来的可编程能力,其中,运行环境模块对源代码进行静态分析的安全性检测和通过预设功能模块集合的验证,所述可编程虚拟网卡设置有核心逻辑卸载接口、NFV功能接口和云系统管理员编程接口,所述核心逻辑卸载接口用于云租户进行应用程序核心逻辑的卸载操作,所述NFV功能接口用于提供网络功能程序模板,所述云系统管理员编程接口用于对应用所述可编程虚拟网卡的云系统进行操作;核心逻辑卸载接口包括数据包解决器和缓存容器,数据包解析器用于解析网络协议,缓存容器提供缓存替换策略供用户选择,用于在可编程虚拟网卡内缓存应用层数据;
所述软件交换机内设置有调度器,所述调度器与运行环境模块以及所述软件交换机内的软件交换模块相连接,并用于基于时间片算法对运行程序模块以及所述软件交换机中的软件交换模块进行调度;
所述基于时间片算法对运行程序模块以及所述软件交换机中的软件交换模块进行调度的具体过程包括:
对所述源代码进行边界检测;
当所述源代码的边界满足预设要求时,将所述源代码添加至预设源代码队列,其中,所述预设要求为未包含无限循环或者循环次数大于预设次数阈值的代码;
基于预设源代码队列确定运行程序模块对应的优先级,并基于时间片算法按照优先级对运行环境模块进行调度,以使得运行环境模块调用其对应的预设源代码队列中的源代码;
所述优先级的计算公式为:
其中,表示优先级,/>表示预设源代码队列中的队首数据包的排队延迟,/>表示预设源代码队列中的源代码数量,/>和/>表示系数因子。
2.一种云系统,其特征在于,其包括至少一个后台服务器,所述后台服务器内部署有若干如权利要求1所述的可编程虚拟网卡、若干网络节点和软件交换机,若干可编程虚拟网卡与若干网络节点一一对应。
3.一种基于可编程虚拟网卡的代码运行方法,其特征在于,基于如权利要求1所述的可编程虚拟网卡;所述代码运行方法具体包括:
接收云租户上传的源代码,通过运行环境模块对所述源代码进行检测;
当所述源代码检测合格时,通过运行环境模块将所述源代码传输给虚拟网卡模块,并通过所述虚拟网卡模块运行所述源代码;
所述通过所述运行环境模块对接收到的源代码进行检测具体包括:
对所述源代码进行静态分析,以检测所述源代码的安全性;
当所述源代码的安全性满足预设条件时,检测所述源代码所调用的功能模块是否包含于预设功能模块集合;
当功能模块包含于预设功能模块集合时,判定所述源代码检测合格;
当功能模块未包含于预设功能模块集合,或者所述源代码的安全性不满足预设条件时,判定所述源代码检测不合格;
所述通过运行环境模块对接收到的源代码进行检测之前,所述方法还包括:
对所述源代码进行边界检测;
当所述源代码的边界满足预设要求时,将所述源代码添加至预设源代码队列,其中,所述预设要求为未包含无限循环或者循环次数大于预设次数阈值的代码;
基于预设源代码队列确定运行程序模块对应的优先级,并基于时间片算法按照优先级对运行环境模块进行调度,以使得运行环境模块调用其对应的预设源代码队列中的源代码;
所述优先级的计算公式为:
其中,表示优先级,/>表示预设源代码队列中的队首数据包的排队延迟,/>表示预设源代码队列中的源代码数量,/>和/>表示系数因子。
CN202310602799.0A 2023-05-26 2023-05-26 一种可编程虚拟网卡、代码运行方法及云系统 Active CN116382854B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310602799.0A CN116382854B (zh) 2023-05-26 2023-05-26 一种可编程虚拟网卡、代码运行方法及云系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310602799.0A CN116382854B (zh) 2023-05-26 2023-05-26 一种可编程虚拟网卡、代码运行方法及云系统

Publications (2)

Publication Number Publication Date
CN116382854A CN116382854A (zh) 2023-07-04
CN116382854B true CN116382854B (zh) 2023-11-21

Family

ID=86961877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310602799.0A Active CN116382854B (zh) 2023-05-26 2023-05-26 一种可编程虚拟网卡、代码运行方法及云系统

Country Status (1)

Country Link
CN (1) CN116382854B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113285892A (zh) * 2020-02-20 2021-08-20 华为技术有限公司 报文处理系统、方法、机器可读存储介质以及程序产品
CN113821310A (zh) * 2021-11-19 2021-12-21 阿里云计算有限公司 数据处理方法、可编程网卡设备、物理服务器及存储介质
CN114281339A (zh) * 2021-12-24 2022-04-05 阿里巴巴(中国)有限公司 程序编译方法、编译器、设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113285892A (zh) * 2020-02-20 2021-08-20 华为技术有限公司 报文处理系统、方法、机器可读存储介质以及程序产品
CN113821310A (zh) * 2021-11-19 2021-12-21 阿里云计算有限公司 数据处理方法、可编程网卡设备、物理服务器及存储介质
CN114281339A (zh) * 2021-12-24 2022-04-05 阿里巴巴(中国)有限公司 程序编译方法、编译器、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Antelope: A Framework for Dynamic Selection of Congestion Control Algorithms";Jianer Zhou et al.;《2021 IEEE 29th International Conference on Network Protocols》;第1-11页 *
基于多租户云计算的网络功能虚拟化研究;赵中楠等;通讯世界(第08期);第138-139页 *

Also Published As

Publication number Publication date
CN116382854A (zh) 2023-07-04

Similar Documents

Publication Publication Date Title
CN107852413B (zh) 用于将网络分组处理卸载到gpu的网络设备、方法与存储介质
US20240264871A1 (en) Storage transactions with predictable latency
US20210117360A1 (en) Network and edge acceleration tile (next) architecture
CN114189571B (zh) 用于实施加速网络分组处理的装置和方法
CN109426549B (zh) 多芯片封装、装置及计算机系统
Fusco et al. High speed network traffic analysis with commodity multi-core systems
US20190280991A1 (en) Quality of service traffic management in high-speed packet processing systems
EP2647163B1 (en) A method and system for improved multi-cell support on a single modem board
US20060026169A1 (en) Communication method with reduced response time in a distributed data processing system
Guan et al. CIVSched: A communication-aware inter-VM scheduling technique for decreased network latency between co-located VMs
CN107070709B (zh) 一种基于底层numa感知的nfv实现方法
EP4123449A1 (en) Resource scheduling method and related device
Rodriguez et al. VNF modeling towards the Cloud-RAN implementation
CN112600882A (zh) 一种基于共享内存通信模式的硬件加速方法
CN116382854B (zh) 一种可编程虚拟网卡、代码运行方法及云系统
CN111158782B (zh) 一种基于DPDK技术的Nginx配置热更新系统和方法
US20230109396A1 (en) Load balancing and networking policy performance by a packet processing pipeline
US20220291928A1 (en) Event controller in a device
Qi et al. LIFL: A Lightweight, Event-driven Serverless Platform for Federated Learning
US20230409511A1 (en) Hardware resource selection
US20230185624A1 (en) Adaptive framework to manage workload execution by computing device including one or more accelerators
EP4187868A1 (en) Load balancing and networking policy performance by a packet processing pipeline
Malm et al. Latency‐Aware Power Management in Software‐Defined Radios
Xie et al. Overload Detecting in High Performance Network I/O Frameworks
Ji et al. Research on Virtualization Technology of Power Information Network Security Access

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant