CN116324712A - 用于无服务器网络功能的域特定语言 - Google Patents

用于无服务器网络功能的域特定语言 Download PDF

Info

Publication number
CN116324712A
CN116324712A CN202180064716.6A CN202180064716A CN116324712A CN 116324712 A CN116324712 A CN 116324712A CN 202180064716 A CN202180064716 A CN 202180064716A CN 116324712 A CN116324712 A CN 116324712A
Authority
CN
China
Prior art keywords
network
code
serverless
dsl
packet
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.)
Pending
Application number
CN202180064716.6A
Other languages
English (en)
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.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
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 Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN116324712A publication Critical patent/CN116324712A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • H04L41/122Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/22Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)

Abstract

本公开描述了使用域特定语言(DSL)来表达和编译无服务器网络功能以及优化无服务器网络功能在网络设备上的部署位置的技术和机制。在一些示例中,无服务器网络功能可以完全以DSL表达(例如,通过基于文本的编辑器、基于图形的编辑器等),其中DSL是专门用于特定域(例如网络功能域)的计算机语言。在附加示例中,可以使用DSL结合通用语言(GSL)来表达和编译无服务器网络功能。一旦表达和/或编译了无服务器网络功能,本公开的技术还包括确定将在其上执行无服务器网络功能的优化网络组件,以及将无服务器功能部署到该优化网络组件。

Description

用于无服务器网络功能的域特定语言
相关申请
本申请要求于2020年9月22日提交的美国专利申请No.17/028,646的优先权,其全部内容通过引用并入本文。
技术域
本公开总体上涉及使用域特定语言来表达和编译无服务器网络功能,以及优化无服务器网络功能在网络设备上的部署位置。
背景技术
计算机网络通常是一组计算机或其它设备,它们通信连接并使用一个或多个通信协议来交换数据,例如通过使用分组交换。例如,计算机联网可以指连接的计算设备(如笔记本电脑、台式机、服务器、智能手机和平板电脑)以及不断扩展的物联网(IoT)设备(如相机、门锁、门铃、冰箱、音频/视频系统、恒温器和各种传感器),这些设备相互通信。现代网络提供各种类型的网络架构,例如位于诸如建筑物之类的一个物理位置中的局域网(LAN)、扩展到较大地理区域以连接个人用户或LAN的广域网(WAN)、为大型组织构建的企业网络、运营WAN以向个人用户或企业提供连接的互联网服务提供商(ISP)网络,等等。
这些网络通常包括专门的网络设备,用于在设备之间传送表示各种数据的分组,例如在交换机、路由器、服务器、接入点等之间传送。这些设备中的每个设备都被设计和配置为执行不同的网络功能。例如,交换机充当允许网络中的设备相互通信的控制器。路由器将多个网络连接在一起,并且还将这些网络上的计算机连接到互联网,方式是通过分析通过网络发送的数据并选择用于数据传输的最佳路径来充当网络中的分配器。接入点就像网络的放大器一样,并且用于扩展路由器提供的带宽,以便网络可以支持彼此距离较远的许多设备。
计算网络已持续变得更复杂,例如随着软件定义网络(SDN)的引入而变得更复杂。在SDN中,对网络的管理集中在控制器处,使得控制平面从离散联网设备中的数据转发功能中抽取出来。SDN控制器是SDN架构的核心元素,并且使能跨物理和虚拟网络环境的集中管理和控制、自动化和策略实施。已经为SDN架构开发了各种标准或协议,例如OpenFlow、独立于编程协议的分组处理器(P4)、开放虚拟交换机数据库(OVSDB)、Python等。这些SDN协议允许SDN控制器使用例如各种应用编程接口(API)直接与网络设备(例如交换机和路由器)的转发平面交互。
传统上,SDN控制器会使用这些SDN协议来对网络设备进行编程或将变化下推到交换机/路由器流表,从而允许SDN控制器划分业务、控制流以获得最佳性能、测试新配置和应用、和/或以其它方式控制或引导数据平面业务。为了执行各种操作,网络设备传统上直接在网络设备的硬件(例如,裸机实现)上运行不同类型的网络功能(例如,分组丢弃功能、分组复制功能、分组转发功能等)。然而,在同一网络设备上运行各种类型的网络功能可能是低效的、不安全的或以其它方式是不利的。例如,由于网络设备需要执行不同类型的网络功能,有效运行这些网络功能所需的硬件的规模、多样性和成本大大增加。此外,随着网络需求的变化,可能需要更新网络中运行的软件,这可能需要更换或更新网络中的硬件(例如,更换整个网络设备或设备中的组件)。
鉴于直接在网络设备的硬件上运行网络功能的各种低效和缺点,网络功能虚拟化(NFV)技术应运而生,以将网络功能与底层硬件分离,以创建可在商品硬件上运行的虚拟化网络,从而允许网络更加灵活和更具成本效益。NFV技术使用处理特定网络功能的虚拟网络功能(VNF),例如防火墙功能、负载平衡功能、分组路由功能等。因此,网络已经发生了转变,从使用多个硬件,每个硬件执行单一功能,到在单个硬件中拥有多个虚拟机(VM),其中每个VM执行一个或多个VNF的操作。更进一步,最近的进展包括使用容器进行网络功能虚拟化。也就是说,容器不是简单地使用充当硬件虚拟化的多个VM,而是充当操作系统(OS)虚拟化。容器能够共享VM的相同主机操作系统,但可能能够以隔离的方式运行单独的VNF,以便每个VM可以支持多个容器化VNF。但是,在VM和容器中运行VNF时仍然存在各种低效和缺点。
附图说明
下面结合附图进行详细描述。在附图中,参考标号最左边的(一个或多个)数字标识参考标号首次出现的附图。在不同附图中使用相同的参考标号表示相似或相同的项目。附图中描绘的系统不是按比例绘制的,并且附图中的组件可能被描绘成不是彼此按比例绘制的。
图1示出了用户设备的用户利用域特定语言来表达和编译无服务器网络功能以执行网络操作的环境的系统架构图。图1进一步示出了网络架构中的网络控制器,网络架构将无服务器网络功能部署在网络架构中的最佳位置(例如,在最佳网络组件或设备上)。
图2示出了示例用户设备的组件图,用户可以通过该示例用户设备至少部分地使用用于表达无服务器网络功能的域特定语言来表达和编译无服务器网络功能。
图3示出了示例网络控制器的组件图,该示例网络控制器接收无服务器网络功能,并确定网络架构中部署无服务器网络功能的优化位置。
图4示出了用于用户设备的用户表达无服务器网络功能、用于域特定语言编译器生成用于执行无服务器网络功能的代码、以及用于网络控制器将无服务器网络功能的代码部署到网络架构中的一个或多个网络设备的示例方法的流程图。
图5示出了呈现在用户设备上的图形用户界面,用户可以通过该界面使用文本、图形图标和/或其组合来表达无服务器网络功能。
图6示出了用于用户设备的用户使用域特定语言和通用语言表达无服务器网络功能、用于编译器生成用于执行无服务器网络功能的代码、以及用于网络控制器将无服务器网络功能的代码部署到网络架构中的一个或多个网络设备的示例方法的流程图。
图7A和图7B示出了用于用户设备的用户使用域特定语言和通用语言表达无服务器网络功能、用于编译器生成用于执行无服务器网络功能的代码、以及用于网络控制器将无服务器网络功能的代码部署到网络架构中的一个或多个网络设备的示例方法的各个流程图。更具体地,图7A示出了使用域特定语言以及Go编程语言或Rust编程语言中的至少一种来表达无服务器网络功能,并且图7B示出了使用域特定语言以及Python编程语言来表达无服务器网络功能。
图8示出了呈现在用户设备上的图形用户界面,用户可以通过该界面使用域特定语言和通用语言的组合来表达无服务器网络功能。
图9示出了其中网络架构中的网络控制器在网络架构中的最佳位置(例如,在最佳网络组件或设备上)部署无服务器网络功能的环境的系统架构图。
图10示出了用于使用域特定语言表达无服务器网络功能并且生成用于执行无服务器网络功能的代码的示例方法的流程图。
图11示出了用于使用域特定语言和通用语言来表达无服务器网络功能并且生成用于执行无服务器网络功能的代码的示例方法的流程图。
图12示出了用于将无服务器网络功能部署到网络组件的示例方法的流程图,在该网络组件处无服务器网络功能被优化以执行。
图13是计算机架构图,示出了能够执行程序组件的设备的示例计算机架构,这些程序组件可以被用来实现本文呈现的各种技术的各方面。
具体实施方式
概述
本发明的各方面在独立权利要求中阐述并且优选特征在从属权利要求中阐述。一个方面的特征可以单独或与其它方面组合应用于任何方面。
本公开总体上涉及使用域特定语言来表达和编译无服务器网络功能,以及优化无服务器网络功能在网络设备上的部署位置。
本文描述的第一种方法包括使用域特定语言(DSL)来生成无服务器网络功能,可以包括接收以DSL表达的第一代码,该第一代码定义要由网络设备执行的无服务器网络功能。通常,DSL是一种可用于定义多个无服务器网络功能的编程语言。一些类型的网络功能可以包括被配置为选择性地在网络设备上执行以获取分组的分组获取功能、分组生成功能、分组复制功能、分组修改功能、分组丢弃功能、分组转发功能等。第一种方法还可以包括由DSL编译器并且至少部分地使用第一代码生成第二代码,该第二代码包括机器可执行指令,机器可执行指令可由网络设备执行以执行无服务器网络功能。第二代码可以包括用以下项中的至少一个表达的代码:OpenFlow编程语言程序、P4编程语言程序、Linux扩展伯克利分组过滤器(eBPF)程序、被配置为在智能网络接口控制器(NIC)上执行的程序、与现场可编程门阵列(FPGA)或专用集成电路(ASIC)中的至少一个相关联的硬件描述语言、或者矢量分组处理器(VPP)程序。
本文描述的第二种方法包括使用域特定语言(DSL)和通用语言(GPL)来生成无服务器网络功能。第二种方法可以包括接收以DSL表达的第一源代码,该第一源代码定义要由网络设备执行的无服务器网络功能的第一部分。通常,DSL可用于定义多个无服务器网络功能。第二种方法还可以包括接收以GPL表达的第二源代码,该第二源代码定义无服务器网络功能的第二部分。在某些情况下,GPL可以包括Go编程语言、Rust编程语言或Python编程语言中的至少一种。第二方法还可以包括至少部分地使用编译器生成第一源代码和第二源代码,目标代码包括机器可执行指令,这些机器可执行指令可由网络设备执行以执行无服务器网络功能。
本文描述的第三种方法包括从网络中的多个网络组件中识别网络组件,网络功能将部署在该网络组件上。第三种方法可以包括由网络的控制器接收表示网络功能的代码。此外,第三种方法可以包括由控制器确定与网络功能的执行相关联的特性。此外,第三种方法可以包括从网络中的多个网络组件之中选择被优化以至少部分地基于该特性来执行网络功能的网络组件。更进一步地,第三种方法可以包括由控制器将表示网络功能的代码部署到网络组件。
此外,至少第一种方法、第二种方法和第三种方法的技术以及本文描述的任何其它技术可以由具有存储计算机可执行指令的非暂态计算机可读介质的系统和/或设备执行,这些指令当由一个或多个处理器执行时,执行上述(一种或多种)方法。
示例实施例
就如何控制或指示网络设备通过网络架构传送数据而言,计算机网络不断发展并变得更加复杂。例如,SDN技术出现并不断发展,并且通常包括使用控制器,以便控制平面从离散联网设备中的数据转发功能中抽取出来。控制器管理和控制各种控制平面功能,例如向需要此信息来做出分组处理决策的网络设备提供第2层可达性信息和第3层路由信息。网络设备和组件根据从控制器接收到的控制平面信息处理数据平面功能,例如转发或路由决策、分组丢弃操作等。
如上所述,网络设备传统上直接在网络设备的硬件(例如,裸机实现)上执行或运行不同类型的网络功能。然而,由于直接在硬件上运行网络功能效率低下,因此出现了各种NFV技术,以将网络功能与底层硬件分离,以创建可在商品硬件上运行的虚拟化网络,从而允许网络更加灵活且更具成本效益。使用这些NFV技术,网络设备现在执行VNF,VNF处理特定网络功能,例如防火墙功能、负载平衡功能、分组路由功能等。因此,网络发生了转变,从使用多个硬件,每个硬件执行单一功能,到让VM和/或容器在单个硬件中运行,其中每个虚拟资源执行一个或多个VNF的操作。然而,在VM和容器中运行VNF时仍然存在各种低效和缺点。例如,容器和VM通常是长期运行的机制,可能会不断启动并使用计算功率。此外,每次需要或请求执行VFN时,启动容器和VM可能会花费资源和时间。
本公开描述了使用域特定语言(DSL)来表达和编译无服务器网络功能以及优化无服务器网络功能在网络设备上的部署位置的技术和机制。在一些示例中,无服务器网络功能可以完全以DSL表达(例如,经由基于文本的编辑器、基于图形的编辑器等),其中DSL是专门用于特定域(例如网络功能域)的计算机语言。在附加示例中,可以使用DSL结合通用语言(GSL)来表达和编译无服务器网络功能。一旦表达和/或编译了无服务器网络功能,本公开的技术还包括确定无服务器网络功能将在其上执行的优化网络组件,以及将无服务器功能部署到优化网络组件。
通常,域特定语言或DSL是专门用于特定域的计算机语言。本公开描述了专门用于表达将由网络设备(例如,路由器、交换机等)执行的网络功能的DSL。然后,DSL能够被编译成表示无服务器网络功能的代码,这些功能可由网络设备执行以执行各种动作,例如分组获取功能、分组生成功能、分组复制功能、分组丢弃功能、分组转发功能等。类似于超文本标记语言(HTML)如何是一种用于创建网页的DSL,本文描述的DSL可能特定于或专门用于表达网络功能,更具体地说,无服务器网络功能。
如本文所述,无服务器功能通常是其中一段代码动态执行(例如响应于预定义的事件)的编程功能。因此,执行无服务器功能所需的资源类似地动态分配,或在运行时分配,这与支持长时间运行的VM或容器所需的计算资源形成对比。因此,无服务器网络功能可以包括响应于特定事件(例如,网络设备接收流中的一个或多个分组)动态执行的网络功能(例如,分组丢弃功能、分组转发功能等)。无服务器网络功能可用于执行各种网络功能,并基于这些设备在网络架构中执行的功能部署到不同的网络设备。
因此,用户设备的用户可以使用DSL来表达无服务器网络功能,DSL是可用于表达网络功能的专用或特定域编程语言。DSL可以包括正式的编程语言,该语言包括一组指令,这些指令通过无服务器网络功能产生期望的结果。例如,DSL可以是以命令形式(例如,要执行的操作序列)、声明形式(例如,指定期望结果)和/或另一种形式编写的编程语言。通常,DSL可以是具有语法(或形式)和语义(或意义)的编程语言,并且可以由标准或规范定义(例如,C编程语言由ISO标准指定)。此外,DSL可以具有各种内置库、功能、API等。
在一些示例中,用户设备的用户可以在他们的用户设备上运行编辑器以接收至少部分地使用DSL表达无服务器网络功能的输入。输入可以是基于文本的输入、基于图形的输入和/或其组合。例如,可以将文本输入到表示DSL中无服务器网络功能的一部分的编辑器中,可以将图形图标放置到表示DSL中至少一部分无服务器网络功能的编辑器中,和/或它们的组合。一旦用户使用DSL表达了无服务器网络功能,用户可以运行编译器,其可以是特定于DSL的编译器、转译器等,以编译成无服务器网络功能的目标代码或生成无服务器网络功能的目标代码。
在一些示例中,本文描述的技术可以包括使用DSL和通用语言(GPL)的组合来表达和创建无服务器网络功能。例如,通过了解DSL和GPL的性质,本文描述的技术包括将使用DSL和GPL的组合编写的源代码编译成可执行来执行一个或多个无服务器网络功能的代码(例如目标代码或其它机器代码)。GPL可以包括可用于定义网络功能的任何类型的GPL,例如Go编程语言(通常称为“Golang”)、Rust编程语言、Python编程语言、P4编程语言、OVSDB编程语言、和/或可用于定义网络功能的任何其它语言。
在某些情况下,DSL和GPL可以集成,使得不同的语言表示一个或多个无服务器网络功能的不同组件或部分。例如,(一个或多个)无服务器网络功能的DSL和GSL部分可以使用内置连接进行集成。作为示例,组件可以用DSL表达,组件可以用GPL(例如Rust或Golang)表达,并且DSL和GPL可以使用通道(例如,异步通道)进行接口或交互。也就是说,Rust通道和Golang通道可以用作用于连接同时运行的组件(例如,基于DSL的组件和基于GPL的组件)的管道。在GPL是Python语言的另一示例中,基于DSL的组件和基于GPL的组件可以使用用于连接异步组件的asyncio库(例如,高级API、低级API等的集合)连接。
在某些情况下,DSP和GPL可以根据其它技术进行集成。例如,DSL可以被设计为允许将GPL代码嵌入到DSL代码中并编译(或转译)为组合代码段。或者,DSL可以被配置为使得DSL代码能够被嵌入到GPL代码中并且被编译(或转译)为组合代码段。编译器可以被配置为确保所得代码是以下项的组合:用DSL表达的功能和用GPL表达的功能,以及用不同语言表达的所得代码的部分之间的交叉链接。通过将DSL与GPL组合,为用户提供了能够使用DSL简洁地表达无服务器网络功能的好处,并且还提供了能够使用用户可能熟悉的GPL来表达一部分无服务器网络功能的好处。编译器可以被配置为识别代码的哪些部分是用DSL还是GPL编写的(例如,识别语义、识别语法等),并确保代码的这些部分被适当地编译成期望的输出代码段。
一旦用户已通过编辑器使用DSL本身或结合GPL完成表达无服务器网络功能,用户可以使编译器将代码编译成期望的目标代码。然后可以将表示无服务器网络功能的目标代码发送到网络控制器,该网络控制器管理其中将部署无服务器网络功能的网络架构。网络控制器可以被配置为确定要在其上部署无服务器网络功能的网络组件。网络控制器可以确定用于执行无服务器功能的优化布置,或者确定网络架构中要在其上运行无服务器网络功能的网络组件。
网络控制器可以管理网络架构,并维护关于网络架构的状态和布局的数据。控制器可以利用该信息和数据来确定要在其上部署无服务器网络功能的位置或网络组件/设备。也就是说,控制器可以基于无服务器网络功能的类型或特性来确定具有最适合执行无服务器网络功能的特性的网络组件。
作为示例,控制器可以维护控制器正在管理的网络的布局或架构的模型或其它表示。这可以包括网络中网络组件的位置(例如,靠近网络边缘、靠近应用服务器等)和/或网络中不同网络设备(例如,防火墙组件、路由组件等)的功能。控制器可以基于网络组件的位置和/或功能来确定部署无服务器网络功能的位置。例如,控制器可以确定无服务器网络功能是防火墙功能或分组丢弃功能。在这样的示例中,控制器可以确定在网络架构的边缘处或附近的网络组件上执行分组丢弃无服务器网络功能将是更优化的。这样,被丢弃的分组不需要流经网络的设备,从而使用资源,而是可以在网络的边缘被丢弃。
作为另一示例,控制器可以收集和/或分析指示网络中网络组件的一个或多个计算机资源(例如,计算资源、存储资源、网络资源、存储器资源等)的可用性的遥测数据。在这样的示例中,控制器可以确定将无服务器网络功能部署到具有过剩资源容量或至少足够的资源可用性以托管无服务器网络功能的网络组件。在某些情况下,控制器可以基于无服务器网络功能消耗的主要资源类型以及网络组件的资源的可用性来确定在其上部署无服务器网络功能的优化网络组件。例如,维护路由表的无服务器网络功能可以部署到具有过剩存储器的网络组件,而进行分组处理的无服务器网络功能可以部署到具有过剩计算资源的网络组件。
作为更进一步的示例,控制器可以监视或以其它方式确定各种软件功能(诸如托管在软件即服务(SaaS)环境中的应用)的软件局部性。在这样的示例中,控制器可以进一步确定无服务器网络功能被配置为附加到特定的SaaS计算功能并且执行特定于该SaaS计算功能的无服务器网络功能。在这样的示例中,控制器可以确定将无服务器网络功能部署在与SaaS计算功能相同的主机上或相邻主机上,以结合SaaS计算功能无缝地工作。
虽然这些只是说明性示例,但在确定要在其上部署和运行无服务器网络功能的最佳或优化的网络组件时,可以考虑其它标准或特征(下面进一步讨论)。虽然用于确定优化网络组件的技术主要针对无服务器网络功能进行描述,但这些技术通常适用于任何类型的网络行为元素。也就是说,用于优化无服务器网络功能放置的技术通常适用于任何软件代码段,该软件代码段是为在网络中的组件上的方便运行时环境(硬件或软件)中运行而定制的一段网络行为。
如本文所述,网络组件可以包括能够托管或运行无服务器网络功能的任何类型的组件,基于硬件的、基于软件的等等。例如,网络组件可以包括基于硬件的设备,例如路由器、网络交换机(例如叶交换机、主干交换机等)、网关、网络接口卡(NIC)、智能NIC、服务器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)和/或任何其它能够执行无服务器网络功能的硬件设备。网络组件也可以包括基于软件的组件,例如虚拟机、容器等。
现在将在下面参考附图更充分地描述本公开的某些实施方式和实施例,其中示出了各个方面。然而,各个方面可以以许多不同的形式来实现,并且不应被解释为限于本文阐述的实现方式。如本文所述,本公开包含实施例的变体。相同的数字始终指代相同的元素。
图1示出了环境100的系统架构图,该环境100包括可以包括一个或多个数据中心104的网络架构102,并且其中用户设备106的用户108利用域特定语言来表达和编译无服务器网络功能以执行网络操作。图1进一步示出了网络架构102中的网络控制器118在网络架构102中的最佳位置(例如,在最佳网络组件或设备上)部署无服务器网络功能。
在一些示例中,网络架构102可以包括容纳或位于一个或多个数据中心104中的设备。网络架构102可以包括由任何可行的通信技术实现的一个或多个网络,例如有线和/或无线模态和/或技术。网络架构102可以包括以下项的任何组合:个人区域网络(PAN)、局域网(LAN)、校园区域网络(CAN)、城域网(MAN)、外联网、内联网、互联网、短距离无线通信网络(例如ZigBee、蓝牙等)广域网(WAN)—集中式和/或分布式—和/或其任何组合、排列和/或聚合。网络架构102可以包括设备、虚拟资源或通过计算机网络中的节点将分组从一个网络段中继到另一网络段的其它节点。网络架构102可以包括多个设备,这些设备利用OSI模型中的网络层(和/或会话层、传输层等)进行分组转发,和/或利用其它层。网络架构102可以包括各种硬件设备,例如路由器、交换机、网关、智能NIC、NIC、ASIC、FPGA、服务器和/或任何其它类型的设备。此外,网络架构102可以包括虚拟资源,例如VM、容器和/或其它虚拟资源。
一个或多个数据中心104可以是物理设施或建筑物,其位于被指定来存储作为网络架构102的一部分的联网设备的地理区域中。数据中心104可以包括各种网络设备,以及用于电源、数据通信连接、环境控制和各种安全设备的冗余或备份组件和基础设施。在一些示例中,数据中心104可以包括一个或多个虚拟数据中心,这些虚拟数据中心是专门为企业需求和/或专门为基于云的服务提供商需求而设计的云基础设施资源的池或集合。通常,数据中心104(物理的和/或虚拟的)可以提供诸如处理器(CPU)、存储器(RAM)、存储装置(磁盘)和网络(带宽)之类的基本资源。然而,在一些示例中,分组转发网络102中的设备可以不位于明确定义的数据中心104中,而是可以位于其它位置或建筑物中。
用户设备106可以通过一个或多个网络116建立通信连接以与网络架构102中的设备通信,例如与网络架构102的网络控制器118通信。网络116可以包括任何可行的通信技术,例如有线和/或无线模态和/或技术。网络116可以包括以下项的任何组合:个人区域网络(PAN)、局域网(LAN)、校园区域网络(CAN)、城域网(MAN)、外联网、内联网、互联网、短距离无线通信网络(例如ZigBee、蓝牙等)广域网(WAN)—集中式和/或分布式—和/或其任何组合、排列和/或聚合。用户设备106可以在网络116上使用任何类型的协议进行通信,例如用于管理到互联网和通过互联网的连接的传输控制协议/互联网协议(TCP/IP)。
如图所示,用户设备106可以运行编辑器110,该编辑器呈现在DSL界面112中并且被配置为接收使用DSL的输入以表达和创建无服务器网络功能。如图所示,编辑器110可以在“1”处接收源代码的一部分,其被简单地示为伪代码,表示由用户108表达的示例分组路由无服务器网络功能。用户108可以使用文本输入、图形图标和/或其组合来表达无服务器网络功能。在某些情况下,表示无服务器网络功能的所有源代码可以使用DSL来表达,并且在其它示例中,源代码的第一部分可以使用DSL来表达,并且源代码的第二部分可以使用GPL(例如,Golang、Rust、Python、P4等)来表达。
作为“2”,在用户设备106上运行的编译器可以将无服务器网络功能的定义或表达编译成目标代码。在用户设备106上运行的编译器可以包括任何编译器类型,例如特定于DSL的编译器、被配置为将基于DSL的输入和基于GPL的输入编译为无服务器网络功能的转编译器/转译器,和/或任何其它类型的编译器。编译器可配置为将无服务器网络定义从基于DSL的表达(例如,源代码)编译成多种不同编程语言的目标代码。例如,源代码可以编译成各种语言的目标代码,例如OpenFlow编程语言程序、P4编程语言程序、Linux扩展伯克利分组过滤器(eBPF)程序、被配置为在智能网络接口控制器(NIC)上执行的程序、与现场可编程门阵列(FPGA)或专用集成电路(ASIC)或矢量分组处理器(VPP)程序中的至少一个相关联的硬件描述语言。
在“3”,用户设备106可以向网络控制器118提供SNF代码114。例如,用户设备106的用户108可以通过网络116以及通过网络可访问门户、通过API、通过接口(例如,CLI)和/或通过任何其它机制向网络控制器118提供SNF代码114。尽管无服务器网络功能的表达可以在用户设备106本地从源代码编译成目标代码,但是在某些情况下,源代码可以作为SNF代码114发送到网络控制器118。因此,SNF代码114可以是任何编程语言,编译后或预编译,并且通常对应于无服务器网络功能。
在“4”,网络控制器118可以确定用于部署和实例化无服务器网络功能的优化位置。如关于图9更详细地描述的,网络控制器118可以基于各种标准或特性来确定部署无服务器网络功能的优化位置,这些标准或特性例如是计算资源容量、控制器118的管理难度、在特定网络组件上运行无服务器网络功能的成本、安全问题、应用位置(例如,将无服务器网络功能附加到特定SaaS计算功能)、无服务器网络功能的类型(例如,执行的动作)、SNF代码114的目标代码的类型,等等。
通常,网络架构102可以包括各种网络设备和组件,例如路由器120、主干交换机122、叶交换机124、服务器126和/或其它网络组件。尽管未示出,但网络架构可以附加地或替代地包括网关、NIC和smartNIC、FPGA、ASIC、虚拟机、容器和/或任何其它类型的基于硬件或基于软件的网络组件。
在“5”,网络控制器118可以在网络架构102中的网络组件上实例化和/或部署一个或多个无服务器网络功能。在某些情况下,实例化无服务器网络功能可以包括使用安全连接,例如安全套接字层(SSL)连接,以将SNF代码114安全地加载到网络组件上。
在“6”,无服务器网络功能可以执行以执行无服务器网络功能被编程来执行的网络动作。通常,无服务器网络功能可以基于事件执行,例如调用特定API的事件,该API调用适当的无服务器网络功能。作为示例,路由器120可以使用分组获取SNF接收分组,并且事件可以基于被用于接收分组的分组获取SNF被触发(例如,API调用)。例如,该事件可以触发分组丢弃SNF,该SNF根据各种标准(例如分组的源地址)确定是否要丢弃分组。此外,可以调用分组转发功能,以便根据分组的头部中的信息确定分组要向下转发的链路。因此,可以调用一个或多个SNF来分析分组并确定如何在网络组件处处理分组。
通过这种方式,可以动态执行无服务器网络功能,以执行传统上使用作为长期运行的VM或容器执行的VNF执行的网络功能。然而,本文描述的技术包括使用DSL,该DSL能够以编程方式表达网络功能,使得这些功能可以通过无服务器方法进行编译和部署,并与现有的无服务器计算功能相一致。
图2示出了示例用户设备(例如,用户设备106)的组件图200,用户可以通过该示例用户设备至少部分地使用用于表达无服务器网络功能的域特定语言来表达和编译无服务器网络功能。用户设备106可以是能够经由DSL界面112接收无服务器网络功能的表达并且经由合适的数据通信网络将SNF代码114发送到网络116的任何类型的计算设备,诸如但不限于膝上型计算机或台式计算机、平板计算设备、服务器计算机、电视或移动电话。
如图所示,用户设备106可以包括一个或多个硬件处理器202(处理器)、一个或多个设备、被配置为执行一个或多个存储的指令。处理器202可以包括一个或多个核。此外,用户设备106可以包括一个或多个网络接口204,其被配置为提供用户设备106与其它设备(例如网络控制器118,和/或网络架构102中的和/或远离网络架构102的其它系统或设备)之间的通信。网络接口204可以包括被配置为耦合到个域网(PAN)、有线和无线局域网(LAN)、有线和无线广域网(WAN)等的设备。例如,网络接口204可以包括与以太网、Wi-Fi等兼容的设备。
用户设备206可以包括一个或多个电源206,例如一个或多个电池、与主电源的连接等。用户设备106还可以包括一个或多个输入和输出208,用于接收和处理来自多个输入设备的输入,例如键盘、鼠标、触摸板、触摸屏、电子手写笔或其它类型的输入设备。此外,输入/输出208可以包括显示器,例如计算机监视器、平板显示器、数字投影仪、打印机或其它类型的输出设备。应当理解,用户设备106可以不包括图2所示的所有组件,可以包括未在图2中明确示出的其它组件,或者可以利用完全不同于图2所示的架构。
用户设备106还可以包括存储各种可执行组件(例如,基于软件的组件、基于固件的组件等)的存储器210,例如计算机可读介质。存储器210通常可以存储组件以实现本文描述的功能。存储器210可以存储用于控制用户设备106的组件的操作的操作系统212。此外,存储器210可以存储通信组件214,该通信组件214包括使用户设备106能够使用网络接口204与其它设备通信的软件(例如,任何协议栈)。更进一步,存储器210可以存储一个或多个应用216,其通常可以包括任何类型的软件应用以执行各种功能。
在某些情况下,存储器210可以存储用户界面组件218,该用户界面组件218被配置为在用户设备106的显示器上呈现用户界面,例如DSL界面112,编辑器110通过该界面接收用DSL编写的无服务器网络功能的表达。用户设备106可以进一步存储包括基于文本的编辑器222以及基于图形的编辑器224的代码编辑器220(例如,编辑器110)。如至少关于图5更详细地描述的,基于文本的编辑器222可以被配置为接收以DSL表达无服务器网络功能的文本输入,并且基于图形的编辑器224可以被配置为接收表示根据DSL的无服务器网络功能的至少一部分的图形图标。以此方式,代码编辑器220可以经由基于文本的输入、基于图形的输入和/或其组合接收使用DSL的无服务器网络功能的表达。
存储器210还可以存储一个或多个DSL编译器226以及DSL和GPL编译器。DSL编译器226通常可以包括任何类型的编译器,这些编译器被配置为获取源代码、输入代码、人类可读代码等,对这些代码进行分析,并生成或产生计算机可读代码(例如,二进制代码、机器代码、目标代码、字节代码等)。在某些情况下,DSL编译器226可以不直接进入机器代码,而是进入汇编或不同的人类可读语言。编译器可以包括任何类型的编译器,包括源到源编译器(或转编译器)。例如,在使用DSL和GPL的组合表达无服务器网络功能的示例中,DSL编译器226可以将DSL的源代码转换为GPL的源代码,使得所有源代码在最终编译成目标代码(或机器代码)之前是GPL的形式。类似地,DSL编译器226可以在将DSL中表达的所有代码编译成目标代码(例如机器代码)之前将GPL的代码转换成DSL的源代码。
在某些情况下,DSL编译器226可以被配置为接受图形图标作为表示无服务器网络功能的部分的输入。图形图标可以表示DSL形式的文本,并在编译之前转换为DSL文本。在其它示例中,DSL编译器226可以被配置为将图形图标直接编译成机器代码。DSL编译器226可以类似于React(网络框架),因为DSL编译器226包括预编译器,该预编译器内置在嵌入GPL中的DSL(被发现不是GPL(例如,不同的语法或语义))被转译成GPL的地方,这样所有的源代码最终都被预编译成GPL。然后可以将GPL编译成任何所需的后端目标代码或对象代码。然而,在其它示例中,DSL编译器226可以包括预编译器,其发现嵌入DSL代码中的GPL代码,并将GPL代码预编译为DSL代码,使得所有源代码在执行编译为所需目标代码或对象代码之前都以DSL表达。在某些情况下,DSL编译器226可以包括转译器,如React示例中所示,其中DSL和GPL可以编译成一版本,如果需要,可以使用编译器的主要语言(例如DSL、GPL等)编译该版本。因此,DSL编译器226可以包括一个或多个编译器,使用户能够利用代码编辑器220单独使用DSL或结合GPL来表达无服务器网络功能。
DSL编译器226通常能够编译成可在多个不同类型的网络组件上执行的任何计算机语言的计算机代码。例如,DSL编译器226能够编译成OpenFlow编程语言程序、P4编程语言程序、Linux扩展伯克利分组过滤器(eBPF)程序、被配置为在智能网络接口控制器(NIC)上执行的程序、与现场可编程门阵列(FPGA)或专用集成电路(ASIC)中的至少一个相关联的硬件描述语言、或矢量分组处理器(VPP)程序、任何类型的机器代码、目标代码、字节代码、机器代码、二进制代码和/或可由任何类型的设备或网络组件执行的任何类型的可执行代码。因此,DSL编译器226可以被配置为将至少部分地以DSL编写的源代码编译成任何类型的目标或输出代码,该DSL表达或表示无服务器网络功能。
用户设备106还可以包括数据存储装置228,其可以包括任何类型的计算机存储器,包括长期存储器(例如,只读存储器(ROM)、随机存取存储器(RAM)、高速缓存等)。数据存储装置228可以包括DSL库230,该库包括用于使用DSL表达无服务器网络功能的资源,例如用于诸如字符串处理、数学计算、输入/输出处理、存储器管理、以及各种其它系统服务之类的任务的宏、类型定义和函数。类似地,数据存储装置GPL库232可以包括用于任何类型的GPL语言的任何类型的库。数据存储装置228可以包括已经由用户设备106的用户表达和/或从代码存储库下载的源代码,该源代码表示无服务器网络功能和/或其它程序。此外,在源代码234由DSL编译器226在用户设备106本地编译的示例中,数据存储装置228可以包括SNF目标代码236。
图3示出了示例网络控制器(例如,网络控制器118)的组件图300,该网络控制器接收无服务器网络功能,并确定网络架构102中要将无服务器网络功能部署到的优化位置。在某些情况下,网络控制器118可以在网络架构102中的或与网络架构102相关联的一个或多个计算设备(例如,单个设备或设备系统)上运行。网络控制器118可以包括正在运行的单个控制器118,或者至少部分地同时运行的网络控制器118的多个实例。
通常,网络控制器118可以是可编程控制器,其管理网络架构102的一些或所有控制平面活动,并且使用一个或多个集中控制模型来管理或监视网络状态。通常,网络控制器118可以至少处理以下功能:(i)接收用于无服务器网络功能的SNF代码114(源代码、目标代码等),(ii)识别网络架构102中被优化以托管或管理无服务器网络功能的网络组件,以及(iii)在被优化以运行无服务器网络功能的网络组件上部署或实例化SNF代码114。
如图所示,网络控制器118可以包括一个或多个硬件处理器302(处理器)、一个或多个设备,或运行在一个或多个硬件处理器302(处理器)、一个或多个设备上,这些处理器或设备被配置为执行一个或多个存储的指令。处理器302可以包括一个或多个核。此外,网络控制器118可以包括或关联于(例如,通信地耦合到)一个或多个网络接口304,该网络接口304被配置为提供与以下项的通信:用户设备106和其它设备,和/或网络架构102中的和/或远离网络架构102的其它系统或设备。网络接口304可以包括被配置为耦合到个域网(PAN)、有线和无线局域网(LAN)、有线和无线广域网(WAN)等的设备。例如,网络接口304可以包括与任何网络协议兼容的设备。
网络控制器118还可以包括存储各种可执行组件(例如,基于软件的组件、基于固件的组件等)的存储器306,例如计算机可读介质。存储器306通常可以存储组件以实现本文描述为由网络控制器118执行的功能。存储器306可以存储一个或多个网络服务功能308,例如切片管理器、用于管理网络架构102的拓扑的拓扑管理器、用于跟踪哪些网络组件正在托管哪些程序或软件的主机跟踪器、用于管理网络架构102的交换机的交换机管理器、进程管理器和/或由网络控制器118执行的任何其它类型的功能。
网络控制器118还可以包括存储在存储器206中的网络编排功能310,其执行各种网络功能,例如资源管理、创建和管理网络覆盖、可编程API、向主机提供或部署应用、软件或代码,和/或执行任何其它编排功能。此外,存储器306可以存储被配置为管理网络架构102(可配置)的特定服务的一个或多个服务管理功能312,以及用于与网络架构102中的设备通信并引起各种控制平面功能发生的一个或多个API 314。在某些情况下,网络控制器118可以包括多个编译器,例如DLS编译器226,并且在将代码部署到网络组件之前使用DSL编译器226将源代码编译成目标代码。然而,这发生在用户设备106没有将源代码234编译成最终SFN目标代码236的情况下。
此外,网络控制器118可以包括SNF放置组件316,其被配置为确定在其上运行无服务器网络功能的优化的(或有利的)网络组件,并且在那些网络组件上部署/实例化无服务器网络功能。如图9中更详细地描述的,SNF放置组件316可以基于各种标准或特性(例如,计算资源容量、控制器118的管理难度、在特定网络组件上运行无服务器网络功能的成本、安全问题、应用位置(例如,将无服务器网络功能附加到特定SaaS计算功能)、无服务器网络功能的类型(例如,执行的动作)、SNF代码114的目标代码类型等等),来确定在其上部署和实例化无服务器网络功能的优化网络组件。
网络控制器118还可以包括数据存储装置318,例如长期存储装置,其存储用于网络控制器118被配置为使用或执行的不同通信协议的通信库320。此外,数据存储装置318可以包括网络拓扑数据322,例如表示网络架构102中网络组件的布局的模型。数据存储装置318可以存储遥测数据324,其指示网络架构102中的不同网络组件上的计算资源使用和/或可用性。此外,数据存储装置318可以存储将要部署和/或已经部署在网络组件上的SNF目标代码326(它可以接收和/或生成)。
图4示出了用于用户设备106的用户表达无服务器网络功能、用于域特定语言编译器226生成用于执行无服务器网络功能的代码、以及用于网络控制器118将无服务器网络功能的代码部署到网络架构102中的一个或多个网络设备或组件的示例方法400的流程图。
在402,用户108可以使用DSL定义无服务器网络功能。例如,用户108可以与代码编辑器220交互以输入基于文本的输入、基于图形的输入和/或其组合。代码编辑器220可以从用户108接收至少部分地以DSL表达或定义无服务器网络功能的输入。
在404,表示无服务器网络功能的代码可以由DSL编译器226编译。DSL编译器226可以将源代码编译成任何期望的目标代码(或对象代码)。在某些情况下,DSL编译器226可以将源代码编译成目标代码,该目标代码被配置为由目标网络组件执行(例如,可以基于网络组件能够执行的代码类型来选择目标代码)。在406,DSL编译器226可以为SNF生成代码。例如,DSL编译器226可以基于目的地网络设备的类型生成目标代码。
在408,为运行时发送无服务器网络功能的目标代码。更具体地,用户设备106可以将目标代码发送到网络控制器118。然后网络控制器118的任务是确定将在其上部署无服务器网络功能的网络设备。
在410,网络控制器118确定在哪个网络设备414(或网络组件414)上部署用于SNF的代码。可以关于无服务器网络功能和网络设备414考虑各种特性或标准,以便识别在其上部署表示无服务器网络功能的代码的优化网络设414。网络控制器118然后可以将用于无服务器网络功能的代码部署到已经确定被优化用于运行无服务器网络功能的网络设备414。
在412,用于无服务器网络功能的代码可以由网络组件和/或网络设备414执行。例如,可能已经发生了触发无服务器网络功能执行并动态执行网络动作的事件(例如,在需要在其上动作的网络设备414处接收到分组)。
图5示出了示例环境500,其中在用户设备106上呈现图形用户界面(GUI)502,用户108可以通过该界面使用文本、图形图标和/或其组合来表达无服务器网络功能。
如图所示,GUI 502可以呈现或包括DSL接口110,用户设备106的用户108可以通过该接口经由编辑器220至少部分地使用DSL表达无服务器网络功能。如上所述,编辑器220可以包括基于文本的编辑器222和/或基于图形的编辑器224。如图所示,DSL接口110可以包括图形库504,图形库504包括一个或多个视觉图形或图标,这些图形或图标可以用于表达无服务器网络功能的至少一部分。图形库中示出的图形可用于表达DSL中的无服务器网络功能,使得图形能够被DSL编译器226分析和编译,并用于生成SNF目标代码236。
因此,当无服务器网络功能可以至少部分地使用视觉图形或图标来定义时,DSL可以至少部分地是视觉编程语言。如图所示,图形库504中可以存在表示不同网络操作、动作和/或功能的图形,例如生成分组图形、丢弃分组图形、复制分组图形、转发分组图形,等等。然而,可以使用图形图标来表示任何类型的功能或动作,并且这些仅仅是说明性示例。例如,可以存在表示可以使用的源代码的更细粒度的部分(例如,代码函数、代码变量等)的图形。
如进一步所示,DSL接口110可以包括用于接收文本以在DSL中表达无服务器网络功能的部分。所示的文本部分506仅是使用伪代码的示例,并且DSL可以是专用编程语言,该专用编程语言用于表达和创建执行以执行网络功能的无服务器网络功能的目的。DSL可包括正式编程语言,其包括产生期望结果的一组指令。例如,DSL可以是以命令形式(例如,要执行的操作序列)、声明形式(例如,指定期望结果)和/或另一种形式编写的编程语言。通常,DSL可以是具有语法(或形式)和语义(或意义)的编程语言,并且可以由标准或规范定义(例如,C编程语言由ISO标准指定)。此外,DSL可以具有各种内置库、功能、API等。
如图所示,用户设备106的用户108可以输入文本部分506以及图形部分508以在DSL中表达无服务器网络功能。在某些情况下,图形部分508可以在图标和对应于该图标的文本之间来回切换。以这种方式,用户108可以利用来自库504的图形/图标并快速切换到文本以完成代码段。因此,编辑器220可以允许用户108以支持基于文本的输入、基于图形/图标的输入和/或其组合的DSL表达无服务器网络功能。在所示示例中,文本输入506可以指示用于分组路由的功能,如果分组被识别则沿着特定路径路由分组,否则丢弃分组,如else语句中使用的图形508所指示的。同样,这仅仅是说明性示例,并且DSL可以由任何语义或句法来表达或定义。
OpenFlow是网络控制器使用的控制平面协议的示例。下面解释了使用DSL语言并映射到OpenFlow动作集的说明性示例。然而,在使用P4、eBPF等语言时会出现类似的模式。
·分组获取:分组获取可以通过在OpenFlow交换机上创建一端口来完成,这样特定模式的业务可以到达该端口。等效的OpenFlow动作是OFPT_PACKET_IN。
·分组生成:分组生成可以涉及使用交换机上的OpenFlow端口以允许DSL生成从该端口发出的分组。等效的OpenFlow动作是OFPT_PACKET_OUT。
·分组复制:分组复制可以完成,这在于DSL允许OFPT_PACKET_IN以接收分组,然后DSL本身将生成代码来复制该分组。
·分组修改:分组修改可以涉及使用DSL以允许OFPT_PACKET_IN以接收分组,然后允许通过一些生成的代码进行分组修改。这也可以使用OFPT_FLOW_MOD在每个流的基础上允许这样做。
·分组丢弃:分组丢弃可以涉及使用DSL来设置OFPT_TABLE_MOD,以便为用户通过DSL指定的分组类型设置丢弃。
·沿着特定链路转发分组:分组转发可以涉及使用OFPT_TABLE_MOD以允许将特定分组类型发送到某处。
图6示出了用于用户设备106的用户108使用域特定语言以及通用语言表达无服务器网络功能、用于编译器生成用于执行无服务器网络功能的代码、以及用于网络控制器将无服务器网络功能的代码部署到网络架构中的一个或多个网络设备的示例方法600的流程图。
在602,用户108可以使用DSL以及GPL来定义无服务器网络功能。GPL可以包括可用于定义网络功能的任何类型的GPL,例如Go编程语言、Rust编程语言、Python编程语言、P4编程语言、OVSDB编程语言和/或可用于定义网络功能的任何其它语言。
在604,代码编辑器220可以基于与DSL结合使用的GPL来启动一个或多个GPL过程604。例如,如果用户108正在使用Go语言编写他们的代码,则代码编辑器220将在604A使用通道在硬件/软件之间进行集成。此外,如果用户108正在用Python编写他们的代码,则代码编辑器220将在604B使用asyncio在硬件/软件之间进行集成。此外,如果用户108正在使用Rust编写他们的代码,则代码编辑器220将在604C使用Rust通道在硬件/软件之间进行集成。作为另一示例,如果用户108正在用PHP编写他们的代码,则编辑器220将使用普通PHP模型来映射他们的代码。
因为编辑器220和编译器226被配置为了解DSL和GPL的性质,所以它们可以使用该知识来找到使组件交互的最有效方式,这特定于网络代码及其实现方式的性质以及使用中的GPL的特征。可以通过在GPL中添加表示层来进一步完善低级连接(例如,如果通过启用go线程以探测NPU并返回数据来使用Golang通道从NPU反馈信息,但我们将通道限制在Golang程序侧,其中一对象读取数据、解释它并进行回调)。
在某些示例中,通道和asyncio可用于创建过滤器路径(例如,平底船路径)。通道和asyncio可用于各种功能,例如电缆数据服务接口规范(DOCSIS)控制消息、IPsec IKE消息、BGP控制平面消息等。此外,通道和asyncio可用于可能触发无服务器网络功能的各种事件,例如检测和执行阈值、速率限制、新分组检测等。更进一步,通道和asyncio可用于记录,例如记录当前分组和使分组有趣的历史。
在606,表示无服务器网络功能的源代码可以由DSL编译器226编译成目标代码,并且在608,DSL编译器226可以生成用于无服务器网络功能的目标代码。源代码可以生成或编译成目标代码,目标代码采用可在目标网络组件上执行的语言。因此,网络控制器118可以至少部分地基于能够执行目标代码的网络组件来确定在其上部署无服务器网络功能的网络组件。
在610,代码可以从DSL编译器226发送到网络控制器118用于运行时。在612,网络控制器118可以识别在其上执行无服务器网络功能的最佳网络组件,并将无服务器网络功能的目标代码部署到该网络组件。在614,用于无服务器网络功能的代码可以由网络组件414执行。
图7A和图7B示出了用于用户设备108的用户106使用域特定语言以及通用语言来表达无服务器网络功能、用于编译器生成用于执行无服务器功能的代码、以及用于网络控制器将无服务器网络功能的代码部署到网络架构中的一个或多个网络设备的示例方法的相应流程图功能。更具体地说,图7A示出了使用域特定语言以及Go编程语言或Rust编程语言中的至少一种来表达无服务器网络功能,并且图7B示出了使用域特定语言以及Python编程语言来表达无服务器网络功能。
图7A的流程图700示出了在网络组件上执行的无服务器网络功能702的示例方法,其中无服务器网络功能使用DSL以及GPL(例如Go语言)来表达。如图所示,无服务器网络功能702可以移动到704处的部署状态。例如,在708,网络控制器118可以将无服务器网络功能的代码(例如,源代码、目标代码等)部署到主机设备或网络组件上,如本文所述。可以将分组706发送到主机设备。在这样的示例中,无服务器网络功能可以在710使用Go通道来接收分组706。也就是说,Go通道提供至少部分使用DSL编写的无服务器网络功能与接收分组706的硬件层之间的接口。在712,无服务器网络功能可以对分组执行操作并返回分组706,例如复制分组706、修改分组706和/或任何其它功能。
图7B的流程图714示出了在网络组件上执行的无服务器网络功能702的示例方法,其中无服务器网络功能使用DSL以及GPL(例如Python)来表达。如图所示,无服务器网络功能702可以移动到704处的部署状态。例如,在716,网络控制器118可以将无服务器网络功能的代码(例如,源代码、目标代码等)部署到主机设备或网络组件上,如本文所述。分组706可以从另一设备发送到主机设备。在这样的示例中,无服务器网络功能可以在718使用Pythonasyncio库来接收分组706。也就是说,asyncio库提供至少部分使用DSL编写的无服务器网络功能与接收分组706的硬件层之间的接口。在720,无服务器网络功能可以对分组执行操作并返回分组706,例如复制分组706、修改分组706和/或任何其它功能。
图8示出了示例环境800,其中在用户设备106上呈现图形用户界面(GUI)802,用户108可以通过该界面使用域特定语言和通用语言的组合来表达无服务器网络功能。
如图所示,GUI 802可以呈现或包括具有GPL的DSL界面804,用户设备106的用户108可以通过该界面至少部分地使用DSL并且至少部分地使用GPL经由编辑器220来表达无服务器网络功能。
如上所述,本文描述的技术可以包括使用DSL和GPL的组合来表达和创建无服务器网络功能。例如,通过了解DSL和GPL的性质,本文描述的技术包括将使用DSL和GPL的组合编写的源代码编译成可执行以执行一个或多个无服务器网络功能的代码(例如目标代码或其它机器代码)。GPL可以包括可用于定义网络功能的任何类型的GPL,例如Go编程语言(通常称为“Golang”)、Rust编程语言、Python编程语言、P4编程语言、OVSDB编程语言、和/或可用于定义网络功能的任何其它语言。
如图8所示,界面804允许用户108使用GPL语言以及DSL语言向编辑器220提供输入。在所示示例中,用户108已经输入GPL部分806和DSL部分808以便定义一个或多个无服务器网络功能。该示例中的GPL部分806是OpenFlow编程语言,但是GPL可以是任何语言(例如,Python、Go语言等)。
在某些情况下,DSL和GPL可以集成,使得不同的语言表示一个或多个无服务器网络功能的不同组件。例如,无服务器网络功能的DSL和GSL部分806/808可以使用内置连接进行集成。例如,一组件可以用DSL表达,且一组件可以用GPL(例如Rust或Golang)表达,并且DSL和GPL可以使用通道(例如异步通道)进行接口或交互。也就是说,Rust通道和Golang通道可以用作连接同时运行的组件(例如,基于DSL的组件和基于GPL的组件)的管道。在GPL是Python语言的另一示例中,基于DSL的组件和基于GPL的组件可以使用用于连接异步组件的asyncio库(例如,高级API、低级API等的集合)连接。
在某些情况下,DSP和GPL可以根据其它技术进行集成。例如,DSL可以被设计为允许将GPL代码嵌入到DSL代码中并编译(或转译)为组合代码段。或者,DSL可以被配置为使得DSL代码能够被嵌入到GPL代码中并且被编译(或转译)为组合代码段。编译器226可以被配置为确保所得代码是以下项的组合:用DSL表达的功能和用GPL表达的功能,以及用不同语言表达的所得代码的部分之间的交叉链接。通过将DSL与GPL组合,为用户108提供了能够使用DSL简洁地表达无服务器网络功能的好处,并且还提供了能够使用用户可能熟悉的GPL来表达一部分无服务器网络功能的好处。编译器226可以被配置为识别代码的哪些部分是用DSL还是GPL编写的(例如,识别语义、识别语法等),并确保代码的这些部分被适当地编译成期望的输出代码段。
一旦用户108已通过编辑器使用DSL本身或结合GPL完成表达无服务器网络功能,用户可以选择编译选项810以使编译器226将代码编译成期望的目标代码。然后可以将表示无服务器网络功能的目标代码114发送到网络控制器118,该网络控制器118管理其中将部署无服务器网络功能的网络架构102。网络控制器118可以被配置为确定要在其上部署无服务器网络功能的网络组件。网络控制器118可以确定用于执行无服务器功能的优化布置,或者确定网络架构中要在其上运行无服务器网络功能的网络组件。
图9示出了环境900的系统架构图,其中网络架构中的网络控制器118在网络架构102中的最佳位置(例如,在最佳网络组件或设备上)部署无服务器网络功能。
网络控制器118可以管理网络架构102,并维护关于网络架构102的状态和布局的数据。控制器118可以利用该信息和数据来确定要部署无服务器网络功能的位置或网络组件/设备。也就是说,控制器118可以基于无服务器网络功能的类型或特性来确定具有最适合执行无服务器网络功能的特性的网络组件。
网络控制器118可以被配置为评估各种标准、特性、数据、信息等,以确定网络架构102中放置无服务器网络功能的最佳网络组件。网络控制器118可以考虑至少围绕无服务器网络功能和网络组件的标准、特性、数据等。例如,网络控制器118可以利用各种SNF放置数据902,例如容量数据、管理数据、成本数据、安全问题、应用位置、SNF动作、DSL生成的代码、协同数据、设备类型等等。
关于容量数据902,网络控制器118可以收集和/或分析指示网络架构102中网络组件的一个或多个计算机资源(例如,计算资源、存储资源、网络资源、存储器资源等)的可用性的遥测数据。在这样的示例中,网络控制器118可以确定将无服务器网络功能部署到具有过剩资源容量或至少足够的资源可用性以托管无服务器网络功能的网络组件。在某些情况下,网络控制器118可以基于无服务器网络功能消耗的主要资源类型和网络组件的资源可用性来确定在其上部署无服务器网络功能的优化网络组件。例如,维护路由表的无服务器网络功能可以部署到过剩存储器的网络组件,而进行分组处理的无服务器网络功能可以部署到具有过剩计算资源的网络组件。网络控制器118可以确定例如主机容量(例如,有多少在潜在主机/网络组件上运行)、SmartNIC容量(例如,SmartNIC上有多少程序以及它的表有多满)、以及路由器容量(例如,路由器可以处理多少正在运行的程序)等。关于管理数据902,网络控制器118可以确定与管理正运行无服务器网络功能的网络组件相关联的困难。例如,网络组件可能至少部分地不受网络控制器118的控制,或者被配置为执行控制器118无法控制的操作。
关于成本数据902,网络控制器118可以考虑在不同网络组件上运行无服务器网络功能的成本。例如,与SmartNIC或路由器相比,在主机设备上运行无服务器网络功能的成本可能更高。在某些情况下,计算节点可能在不足的存储器上运行,并且在该计算节点上运行无服务器网络功能可能会花费更多。作为另一示例,SmartNIC可能作为主机运行(例如,太多业务),因此无服务器网络功能可以放置在不同的网络组件/主机上。因此,网络控制器118可以洞察用于在网络组件上运行无服务器网络功能的成本数据902,并且来选择优化的网络组件以基于相对于能够运行无服务器网络功能的其它网络组件的较低成本来运行无服务器网络功能。
关于安全问题,网络控制器118可以考虑运行无服务器网络功能的安全问题。例如,网络控制器118可以确定无服务器网络功能是否被信任在各种网络组件上运行。例如,基于无服务器网络功能正在执行的功能,与数据和/或由网络组件执行的功能相比,网络控制器118可以基于安全问题确定是否将无服务器网络功能部署到网络组件。
关于用于优化无服务器网络功能的放置的应用位置,网络控制器118可以监视或以其它方式确定各种软件功能的软件位置,例如应用被托管在软件即服务(SaaS)环境中。在这样的示例中,网络控制器118可以进一步确定无服务器网络功能被配置为附接到特定SaaS计算功能并且执行特定于该SaaS计算功能的无服务器网络功能。在这样的示例中,网络控制器118可以确定将无服务器网络功能部署在与SaaS计算功能相同或相邻的主机上以结合SaaS计算功能无缝地工作。
关于无服务器网络功能动作,网络控制器118可以确定无服务器网络功能的类型(例如,无服务器网络功能执行哪一个或多个动作),并放置无服务器网络功能。网络控制器118可以维护网络控制器118正在管理的网络架构102的布局或架构的模型或其它表示。这可以包括网络架构102中网络组件的位置(例如,靠近网络边缘、靠近应用服务器等)和/或网络架构102中不同网络设备(例如,防火墙组件、路由组件等)的功能。网络控制器118可以基于网络组件的位置和/或功能来确定部署无服务器网络功能的位置。
作为示例,网络控制器118可以确定无服务器网络功能是分组丢弃SNF 904。在这样的示例中,网络控制器118可以确定分组丢弃SNF 904的优化位置将在路由器120上,或者在网络架构102的边缘附近的另一网络组件上。这样,被丢弃的分组不需要流经网络架构102的那么多设备,从而保留资源,而是可以在网络架构102的边缘被丢弃。另外,分组丢弃SNF 904可以在路由器120上高效地运行,至少因为路由器120能够在硬件中高效地丢弃分组(因为软件丢弃更昂贵)。
对于一些其它示例,网络控制器118可以确定将分组转发SNF 906放置在主干交换机122上,将分组路由SNF 908放置在叶交换机上,和/或将分组修改SNF 910放置在服务器上126。网络控制器118可以确定这些网络组件基于它们在网络架构中的位置或者基于它们在网络架构102中执行的动作被优化以执行特定的无服务器网络功能。此外,分组修改SNF910可以被优化以在服务器126或SmartNIC上运行。
此外,关于DSL生成的代码902,网络控制器118可以确定无服务器网络功能的代码类型,并且确定能够执行该代码类型或被优化以执行该代码类型的网络组件。例如,SNF可以编译成代码,例如OpenFlow编程语言程序、P4编程语言程序、Linux eBPF程序、被配置为在SmartNIC上执行的程序、与FPGA或ASIC中的至少一个相关联的硬件描述语言、矢量分组处理器(VPP)程序和/或任何其它目标代码或源代码。网络控制器118可以基于无服务器网络功能的代码类型来选择能够执行无服务器网络功能或被优化(例如,高效运行)以执行无服务器网络功能的网络组件。
此外,网络控制器118可以确定将无服务器网络功能放置在与无服务器网络功能的类型具有协同作用的网络组件上。例如,由于例如存储器中分组传输的可用性,网络控制器118可以确定靠近网络架构102的一些其它网络组件运行SNF更有效。
网络控制器118可以基于本文讨论的SNF放置数据中的一个或多个(单独地或组合地)来确定被优化以运行无服务器功能并将无服务器网络功能部署到的网络组件。
此外,网络控制器118可以部署SNF代码114并且具有用于部署SNF代码114的一种或多种机制。例如,当将SNF代码114部署到主机本身上时(例如,在Linux网桥、OpenvSwitch交换机、eBPF、VPP等上),网络控制器118可以简单地将生成的代码加载到主机上。生成的SNF代码114可以指示后端目标网络组件,从而限制放置。在某些情况下,SSL连接可用于将SNF代码114加载到优化的网络组件上。
一旦部署了SNF,网络控制器118就可以监控SNF以确保它们运行良好。这可以包括从SNF和/或主机获得遥测数据,并且遥测数据可以允许网络控制器118确保SNF在操作参数内运行。生成功能的DSL也可以围绕此遥测放入一些样板,从而允许网络控制器118轻松使用它,并在生产中运行时关闭监控SNF的循环。
在一些示例中,SNF可以自动缩放。例如,DSL可以在生成的代码中放置一些自动缩放位,并且网络控制器118可以使用它来处理与部署选项一致的自动缩放。这意味着当SNF达到关于诸如带宽、CPU使用等事物的某些阈值时,它可以自动扩展。这将通过使用来自上述监控情况的遥测数据来完成。可以通过这种方式执行SNF的自动缩放。
图10至图12示出了示例方法1000、1100和1200的流程图,示例方法1000、1100和1200示出了至少部分地由图10至图12中描述的设备(例如,用户设备106、网络控制器118等)执行的功能的各方面。本文参考图10至图12描述的逻辑操作可以被实现为(1)计算机实现的动作序列或在计算系统上运行的程序模块和/或(2)计算系统内互连的机器逻辑电路或电路模块。
本文描述的各种组件的实现方式是取决于计算系统的性能和其它要求的选择问题。因此,本文描述的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以用软件、固件、专用数字逻辑及其任意组合来实现。还应当理解,可以执行比图10至图12中所示的以及本文描述的操作更多或更少的操作。这些操作也可以并行执行,或者以与本文描述的顺序不同的顺序执行。这些操作中的一些或全部也可以由除那些具体标识的组件之外的组件执行。尽管本公开中描述的技术是参考特定组件的,但是在其它示例中,这些技术可以由更少的组件、更多的组件、不同的组件或组件的任何配置来实现。
在某些情况下,方法1000、1100和/或1200的步骤可以由设备和/或设备系统执行,该设备和/或设备系统包括一个或多个处理器和一个或多个存储计算机可执行指令的非暂态计算机可读介质,这些指令当由一个或多个处理器执行时,使一个或多个处理器执行方法1000、1100和/或1200的操作。
图10示出了用于使用域特定语言表达无服务器网络功能并生成用于执行无服务器网络功能的代码的示例方法1000的流程图。
在1002,用户设备106(和/或网络控制器118)可以接收以DSL表达的第一代码,该第一代码定义要由网络设备执行的无服务器网络功能。通常,DSL可用于定义多个无服务器网络功能,并且专门用于定义SNF。无服务器网络功能可以包括以下项中的至少一个:被配置为选择性地在网络设备上执行以获取分组的分组获取功能、被配置为选择性地在网络设备上执行以生成分组的分组生成功能、被配置为选择性地在网络设备上执行以复制分组的分组复制功能、被配置为选择性地在网络设备上执行以修改分组的分组修改功能、被配置为选择性地在网络设备上执行以丢弃分组的分组丢弃功能、或者被配置为选择性地在网络设备上执行以转发分组的分组转发功能。
在某些情况下,方法1000还可以包括暴露被配置为接收以DSL表达的文本输入以定义无服务器网络功能的文本编辑器,并且其中接收第一代码包括接收定义无服务器网络功能的文本输入。此外,方法1000可以附加地或替代地包括暴露被配置为接收可用于以DSL表达无服务器网络功能的图形图标输入的编辑器,其中接收第一代码包括经由定义无服务器网络功能的编辑器接收一个或多个图形图标。
在1004,用户设备106(和/或网络控制器118)可以通过DSL编译器并且至少部分地使用第一代码生成第二代码,该第二代码包括可由网络设备执行以执行无服务器网络功能的机器可执行指令。在某些情况下,方法1000还可以包括接收关于将在其上执行无服务器网络功能的网络设备的设备类型的指示,并且至少部分地基于设备类型来确定可在网络设备上执行的编程语言,其中第二代码以该编程语言生成。
在某些情况下,方法1000还可以包括向管理包括网络设备的网络的软件定义网络(SDN)控制器提供第二代码,以及由SDN控制器向网络设备提供第二代码。
图11示出了用于使用域特定语言和通用语言来表达无服务器网络功能并生成用于执行无服务器网络功能的代码的示例方法1100的流程图。
在1102,用户设备106可以接收以DSL表达的第一源代码,该第一源代码定义要由网络设备执行的无服务器网络功能的第一部分,DSL可用于定义多个无服务器网络功能。在1104,用户设备106可以接收以GPL表达的第二源代码,该第二源代码定义无服务器网络功能的第二部分。在1106,用户设备106可以至少部分地使用编译器生成第一源代码和第二源代码,目标代码包括可由网络设备执行以执行无服务器网络功能的机器可执行指令。
图12示出了用于将无服务器网络功能部署到网络组件的示例方法1200的流程图,无服务器网络功能被优化以在该网络组件处执行。
在1202,网络的控制器可以接收表示网络功能的代码。在1204,控制器可以确定与网络功能的执行相关联的特性。在1206,控制器可以从网络中的多个网络组件中选择被优化以至少部分地基于该特性来执行网络功能的网络组件。在1208,控制器可以将表示网络功能的代码部署到网络组件。
图13示出了能够执行用于实现上述功能的程序组件的设备的示例计算机架构。图13所示的计算机架构示出了任何类型的计算机1300,例如传统的服务器计算机、工作站、台式计算机、膝上型计算机、平板电脑、网络设备、电子阅读器、智能手机或其它计算设备,并且可以用于执行本文所呈现的任何软件组件。在一些示例中,计算机1300可以对应于用户设备106和/或本文描述的任何其它设备,并且可以包括个人设备(例如,智能手机、平板电脑、可穿戴设备、膝上型设备等)、联网设备(例如,服务器、交换机、路由器、集线器、网桥、网关、调制解调器、中继器、接入点)、和/或可能运行任何类型软件和/或虚拟化技术的任何其它类型的计算设备。
计算机1300包括基板1302或“母板”,其是可以通过系统总线或其它电通信路径连接到许多组件或设备的印刷电路板。在一个说明性配置中,一个或多个中央处理单元(“CPU”)1304结合芯片组1306操作。CPU 1304可以是执行计算机1300的操作所必需的算术和逻辑运算的标准可编程处理器。
CPU 1304通过从一个离散的物理状态转换到下一状态(经由操纵区分和改变这些状态的开关元件)来执行操作。开关元件通常包括保持两个二进制状态之一的电子电路,例如触发器,并且通常包括基于一个或多个其它开关元件的状态的逻辑组合提供输出状态的电子电路,例如逻辑门。这些基本的开关元件可以组合起来创建更复杂的逻辑电路,包括寄存器、加减法器、算术逻辑单元、浮点单元等。
芯片组1306提供CPU 1304与基板1302上的其余组件和设备之间的接口。芯片组1306可以提供到用作计算机1300中的主存储器的RAM 1308的接口。芯片组1306可以进一步提供到计算机可读存储介质(例如只读存储器(“ROM”)1310或非易失性RAM(“NVRAM”))的接口,该计算机可读存储介质用于存储有助于启动计算机1300和在各种组件和设备之间传输信息。根据本文描述的配置,ROM 1310或NVRAM还可以存储计算机1300的操作所必需的其它软件组件。
计算机1300可以使用通过网络(例如网络116)到远程计算设备和计算机系统的逻辑连接在网络环境中操作。芯片组1306可以包括用于通过NIC 1312提供网络连接的功能,例如千兆位以太网适配器。NIC 1312能够通过网络116将计算机1300连接到其它计算设备。应当理解,多个NIC 1312可以存在于计算机1300中,将计算机连接到其它类型的网络和远程计算机系统。
计算机1300可以连接到为计算机提供非易失性存储的存储设备1318。存储设备1318可以存储操作系统1320、程序1322和数据,这些在本文中已被更详细地描述。存储设备1318可以通过连接到芯片组1306的存储控制器1314连接到计算机1300。存储设备1318可以由一个或多个物理存储单元组成。存储控制器1314可以通过用于在计算机和物理存储单元之间进行物理连接和传输数据的串行附接SCSI(“SAS”)接口、串行高级技术附接(“SATA”)接口、光纤通道(“FC”)接口或其它类型的接口与物理存储单元接口。
计算机1300可以通过转换物理存储单元的物理状态以反映正在存储的信息来将数据存储在存储设备1318上。在本说明书的不同实施例中,物理状态的具体转换可以取决于各种因素。这样的因素的示例可以包括但不限于用于实现物理存储单元的技术、存储设备1318的特征是主存储装置还是辅助存储装置等。
例如,计算机1300可以通过经由存储控制器1314发出指令来将信息存储到存储设备1318,以改变磁盘驱动单元内特定位置的磁特性、光学存储单元中特定位置的反射或折射特性、或特定电容器、晶体管或固态存储单元中其它分立元件的电气特性。在不脱离本说明书的范围和精神的情况下,物理介质的其它转换是可能的,提供前述示例只是为了便于描述。计算机1300可以通过检测物理存储单元内的一个或多个特定位置的物理状态或特性来进一步从存储设备1318读取信息。
除了上述大容量存储设备1318之外,计算机1300可以访问其它计算机可读存储介质以存储和取回信息,例如程序模块、数据结构或其它数据。本域技术人员应当理解,计算机可读存储介质是提供数据的非暂态存储并且可以被计算机1300访问的任何可用介质。在一些示例中,由用户设备106、网络控制器118和/或其中包括的任何组件执行的操作可以由类似于计算机1300的一个或多个设备支持。换句话说,由用户设备106和/或网络控制器118和/或其中包括的任何组件执行的一些或所有操作可以由一个或多个计算机设备1300执行。
作为示例而非限制,计算机可读存储介质可以包括以任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机可读存储介质包括但不限于RAM、ROM、可擦除可编程ROM(“EPROM”)、电可擦除可编程ROM(“EEPROM”)、闪存或其它固态存储技术、光盘ROM(“CD-ROM”)、数字通用光盘(“DVD”)、高清DVD(“HD-DVD”)、BLU-RAY或其它光学存储设备、磁带盒、磁带、磁盘存储设备或其它磁性存储设备设备或任何其它可用于以非暂态方式存储所需信息的介质。
如上所述,存储设备1318可以存储用于控制计算机1300的操作的操作系统1320。根据一个实施例,操作系统包括LINUX操作系统。根据另一个实施例,操作系统包括来自华盛顿州雷德蒙德的微软公司的
Figure BDA0004138025660000341
SERVER操作系统。根据进一步的实施例,操作系统可以包括UNIX操作系统或其变体之一。应当理解,也可以使用其它操作系统。存储设备1318可以存储计算机1300使用的其它系统或应用程序和数据。
在一个实施例中,存储设备1318或其它计算机可读存储介质编码有计算机可执行指令,当这些指令被加载到计算机1300中时,将计算机从通用计算系统转换为能够实现本文描述的实施例的专用计算机。如上所述,这些计算机可执行指令通过指定CPU 1304如何在状态之间转换来转换计算机1300。根据一个实施例,计算机1300可以访问存储计算机可执行指令的计算机可读存储介质,这些计算机可执行指令在由计算机1300执行时执行上文关于图1至图12描述的各种过程。计算机1300还可以包括计算机可读存储介质,其上存储有用于执行本文描述的任何其它计算机实现的操作的指令。
计算机1300还可以包括一个或多个输入/输出控制器1316,用于接收和处理来自多个输入设备的输入,例如键盘、鼠标、触摸板、触摸屏、电子手写笔或其它类型的输入设备。类似地,输入/输出控制器1316可以向显示器提供输出,例如计算机监视器、平板显示器、数字投影仪、打印机或其它类型的输出设备。应当理解,计算机1300可能不包括图2和/或图3中所示的所有组件,可以包括未在图13中明确示出的其它组件,或者可能利用与图13中所示的架构完全不同的架构。
如本文所述,计算机1300可包括用户设备106、网络控制器118和/或任何其它设备中的一个或多个。计算机1300可以包括一个或多个硬件处理器1304(处理器),其被配置为执行一个或多个存储的指令。处理器1304可以包括一个或多个核。此外,计算机1300可包括一个或多个网络接口,其被配置为提供计算机1300与其它设备之间的通信,诸如本文描述为由用户设备106或网络控制器118执行的通信。网络接口可以包括被配置为耦合到个域网(PAN)、有线和无线局域网(LAN)、有线和无线广域网(WAN)等的设备。例如,网络接口可以包括与以太网、Wi-FiTM等兼容的设备。
程序1322可以包括任何类型的程序或过程以执行本公开中描述的用于使用DSL生成SNF和/或将SNF部署到优化的网络组件的技术。
虽然本发明是关于特定示例进行描述的,但是应当理解本发明的范围不限于这些特定示例。由于为适应特定操作要求和环境而变化的其它修改和变化对于本域技术人员而言将是显而易见的,因此本发明不被认为限于为公开目的而选择的示例,并且涵盖不构成背离本发明的真正精神和范围的所有变化和修改。
尽管本申请描述了具有特定结构特征和/或方法动作的实施例,但应理解,权利要求不一定限于所描述的特定特征或动作。而是,特定特征和动作仅仅是说明性的一些实施例,这些实施例落在本申请的权利要求的范围内。

Claims (23)

1.一种使用域特定语言(DSL)生成无服务器网络功能的方法,该方法包括:
接收以所述DSL表达的第一代码,所述第一代码定义要由网络设备执行的所述无服务器网络功能,所述DSL可用于定义多个无服务器网络功能;以及
由DSL编译器并且至少部分地使用所述第一代码生成第二代码,所述第二代码包括可由所述网络设备执行以执行所述无服务器网络功能的机器可执行指令。
2.如权利要求1所述的方法,其中,所述无服务器网络功能包括以下项中的至少一者:
分组获取功能,被配置为选择性地在所述网络设备上执行以获取分组;
分组生成功能,被配置为选择性地在所述网络设备上执行以生成分组;
分组复制功能,被配置为选择性地在所述网络设备上执行以复制分组;
分组修改功能,被配置为选择性地在所述网络设备上执行以修改分组;
分组丢弃功能,被配置为选择性地在所述网络设备上执行以丢弃分组;或者
分组转发功能,被配置为选择性地在所述网络设备上执行以转发分组。
3.如权利要求1或2所述的方法,其中,生成所述第二代码包括以下项中的至少一者:
生成OpenFlow编程语言程序;
生成P4编程语言程序;
生成Linux扩展伯克利分组过滤器(eBPF)程序;
生成被配置为在智能网络接口控制器(NIC)上执行的程序;
生成与现场可编程门阵列(FPGA)或专用集成电路(ASIC)中的至少一个相关联的硬件描述语言;或者
生成矢量分组处理器(VPP)程序。
4.如权利要求1至3中任一项所述的方法,还包括:
接收关于要在其上执行所述无服务器网络功能的所述网络设备的设备类型的指示;并且
至少部分地基于所述设备类型确定可在所述网络设备上执行的编程语言,
其中所述第二代码以所述编程语言生成。
5.如权利要求1至4中任一项所述的方法,还包括:
暴露文本编辑器,所述文本编辑器被配置为接收用于定义无服务器网络功能的以所述DSL表达的文本输入,
其中接收所述第一代码包括接收定义所述无服务器网络功能的所述文本输入。
6.如权利要求1至5中任一项所述的方法,还包括:
暴露编辑器,所述编辑器被配置为接收可用于以所述DSL表达无服务器网络功能的图形图标输入;
其中接收所述第一代码包括经由所述编辑器接收定义所述无服务器网络功能的一个或多个图形图标。
7.如权利要求1至6中任一项所述的方法,还包括:
将所述第二代码提供给管理包括所述网络设备的网络的软件定义网络(SDN)控制器;并且
由所述SDN控制器向所述网络设备提供所述第二代码。
8.一种计算设备,包括:
一个或多个处理器;以及
一个或多个存储计算机可执行指令的非暂态计算机可读介质,所述指令在由所述一个或多个处理器执行时,使所述一个或多个处理器执行操作,所述操作包括:
接收以域特定语言(DSL)表达的第一代码,所述第一代码定义要由网络设备执行的无服务器网络功能,所述DSL可用于定义多个无服务器网络功能;以及
由DSL编译器并且至少部分地使用所述第一代码生成第二代码,所述第二代码包括可由所述网络设备执行以执行所述无服务器网络功能的机器可执行指令。
9.如权利要求8所述的计算设备,其中,所述无服务器网络功能包括以下项中的至少一者:分组获取功能,被配置为选择性地在所述网络设备上执行以获取分组;分组生成功能,被配置为选择性地在所述网络设备上执行以生成分组;分组复制功能,被配置为选择性地在所述网络设备上执行以复制分组;分组修改功能,被配置为选择性地在所述网络设备上执行以修改分组;分组丢弃功能,被配置为选择性地在所述网络设备上执行以丢弃分组;或者分组转发功能,被配置为选择性地在所述网络设备上执行以转发分组。
10.如权利要求8或9所述的计算设备,其中,生成所述第二代码包括以下项中的至少一者:
生成OpenFlow编程语言程序;
生成P4编程语言程序;
生成Linux扩展伯克利分组过滤器(eBPF)程序;
生成被配置为在智能网络接口控制器(NIC)上执行的程序;
生成与现场可编程门阵列(FPGA)或专用集成电路(ASIC)中的至少一个相关联的硬件描述语言;或者
生成矢量分组处理器(VPP)程序。
11.如权利要求8至10中任一项所述的计算设备,所述操作还包括:
接收关于要在其上执行所述无服务器网络功能的所述网络设备的设备类型的指示;并且
至少部分地基于所述设备类型确定可在所述网络设备上执行的机器语言,
其中所述第二代码以所述机器语言生成。
12.如权利要求8至11中任一项所述的计算设备,所述操作还包括:
暴露文本编辑器,所述文本编辑器被配置为接收用于定义无服务器网络功能的以所述DSL表达的文本输入,
其中接收所述第一代码包括接收定义所述无服务器网络功能的所述文本输入。
13.如权利要求8至11中任一项所述的计算设备,所述操作还包括:
暴露编辑器,所述编辑器被配置为接收可用于以所述DSL表达无服务器网络功能的图形图标输入;
其中接收所述第一代码包括经由所述编辑器接收定义所述无服务器网络功能的一个或多个图形图标。
14.如权利要求8至13中任一项所述的计算设备,所述操作还包括:
将所述第二代码提供给管理包括所述网络设备的网络的软件定义网络(SDN)控制器;并且
由所述SDN控制器向所述网络设备提供所述第二代码。
15.一种系统,包括:
一个或多个处理器;以及
一个或多个存储计算机可执行指令的非暂态计算机可读介质,所述指令在由所述一个或多个处理器执行时,使所述一个或多个处理器执行操作,所述操作包括:
接收以域特定语言(DSL)表达的第一代码,所述第一代码定义要由网络设备执行的无服务器网络功能,所述DSL可用于定义多个无服务器网络功能;以及
由DSL编译器并且至少部分地使用所述第一代码生成第二代码,所述第二代码包括可由所述网络设备执行以执行所述无服务器网络功能的机器可执行指令。
16.如权利要求15所述的系统,其中,所述无服务器网络功能包括以下项中的至少一者:
分组获取功能,被配置为选择性地在所述网络设备上执行以获取分组;
分组生成功能,被配置为选择性地在所述网络设备上执行以生成分组;
分组复制功能,被配置为选择性地在所述网络设备上执行以复制分组;
分组修改功能,被配置为选择性地在所述网络设备上执行以修改分组;
分组丢弃功能,被配置为选择性地在所述网络设备上执行以丢弃分组;或者
分组转发功能,被配置为选择性地在所述网络设备上执行以转发分组。
17.如权利要求15或16所述的系统,其中,生成所述第二代码包括以下项中的至少一者:
生成OpenFlow编程语言程序;
生成P4编程语言程序;
生成Linux扩展伯克利分组过滤器(eBPF)程序;
生成被配置为在智能网络接口控制器(NIC)上执行的程序;
生成与现场可编程门阵列(FPGA)或专用集成电路(ASIC)中的至少一个相关联的硬件描述语言;或者
生成矢量分组处理器(VPP)程序。
18.如权利要求15至17中任一项所述的系统,所述操作还包括:
接收关于要在其上执行所述无服务器网络功能的所述网络设备的设备类型的指示;并且
至少部分地基于所述设备类型确定可在所述网络设备上执行的机器语言,
其中所述第二代码以所述机器语言生成。
19.如权利要求15至18中任一项所述的系统,所述操作还包括:
暴露文本编辑器,所述文本编辑器被配置为接收用于定义无服务器网络功能的以所述DSL表达的文本输入,
其中接收所述第一代码包括接收定义所述无服务器网络功能的所述文本输入。
20.如权利要求15至18中任一项所述的系统,所述操作还包括:
暴露编辑器,所述编辑器被配置为接收可用于以所述DSL表达无服务器网络功能的图形图标输入;
其中接收所述第一代码包括经由所述编辑器接收定义所述无服务器网络功能的一个或多个图形图标。
21.一种用于使用域特定语言(DSL)生成无服务器网络功能的设备,该设备包括:
用于接收以所述DSL表达的第一代码的装置,所述第一代码定义要由网络设备执行的所述无服务器网络功能,所述DSL可用于定义多个无服务器网络功能;以及
用于由DSL编译器并且至少部分地使用所述第一代码生成第二代码的装置,所述第二代码包括可由所述网络设备执行以执行所述无服务器网络功能的机器可执行指令。
22.如权利要求21所述的设备,还包括用于实施如权利要求2至7中任一项所述的方法的装置。
23.一种包括指令的计算机程序、计算机程序产品或计算机可读介质,所述指令在由计算机执行时使所述计算机执行如权利要求1至7中任一项所述的方法的步骤。
CN202180064716.6A 2020-09-22 2021-09-16 用于无服务器网络功能的域特定语言 Pending CN116324712A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/028,646 2020-09-22
US17/028,646 US11442703B2 (en) 2020-09-22 2020-09-22 Domain-specific language for serverless network functions
PCT/US2021/050605 WO2022066494A1 (en) 2020-09-22 2021-09-16 Domain-specific language for serverless network functions

Publications (1)

Publication Number Publication Date
CN116324712A true CN116324712A (zh) 2023-06-23

Family

ID=78232376

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180064716.6A Pending CN116324712A (zh) 2020-09-22 2021-09-16 用于无服务器网络功能的域特定语言

Country Status (4)

Country Link
US (1) US11442703B2 (zh)
EP (1) EP4217848A1 (zh)
CN (1) CN116324712A (zh)
WO (1) WO2022066494A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11625230B2 (en) 2020-09-22 2023-04-11 Cisco Technology, Inc. Identifying execution environments for deploying network functions
US20230336468A1 (en) * 2022-04-13 2023-10-19 At&T Intellectual Property I, L.P. Packet-Based Network Delivery Control
US12015528B2 (en) * 2022-07-14 2024-06-18 Zhejiang Lab Multi-functional integrated network modal management system and management method for user-defined network modal
CN117579477A (zh) * 2023-10-27 2024-02-20 中科驭数(北京)科技有限公司 一种基于vpp的配置保存恢复系统、方法及装置

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
JP4294821B2 (ja) * 2000-01-26 2009-07-15 株式会社日立製作所 ネットワーク中継装置
US6898183B1 (en) * 2000-03-14 2005-05-24 Cisco Technology, Inc. Method of determining a data link path in a managed network
US7171487B2 (en) 2000-09-22 2007-01-30 International Business Machines Corporation Method and system for application specific packet forwarding
US20020161907A1 (en) 2001-04-25 2002-10-31 Avery Moon Adaptive multi-protocol communications system
US20030033519A1 (en) * 2001-08-13 2003-02-13 Tippingpoint Technologies,Inc. System and method for programming network nodes
US7765539B1 (en) 2004-05-19 2010-07-27 Nintendo Co., Ltd. System and method for trans-compiling video games
US8347088B2 (en) * 2005-02-01 2013-01-01 Newsilike Media Group, Inc Security systems and methods for use with structured and unstructured data
US8259736B2 (en) * 2009-12-15 2012-09-04 Hewlett-Packard Development Company, L.P. Selecting a path through a network
US8924569B2 (en) 2009-12-17 2014-12-30 Intel Corporation Cloud federation as a service
US8843127B2 (en) 2011-06-27 2014-09-23 Nokia Corporation Method and apparatus for providing optimized privacy in cognitive radio information sharing
US9443269B2 (en) * 2012-02-16 2016-09-13 Novasparks, Inc. FPGA matrix architecture
US8909769B2 (en) 2012-02-29 2014-12-09 International Business Machines Corporation Determining optimal component location in a networked computing environment
US9219687B2 (en) * 2013-03-15 2015-12-22 Cisco Technology, Inc. Path optimization in multi-node virtual switch with orphan ports
EP2955631B1 (en) 2014-06-09 2019-05-01 Nokia Solutions and Networks Oy Controlling of virtualized network functions for usage in communication network
US9436443B2 (en) 2014-08-28 2016-09-06 At&T Intellectual Property I, L.P. Software defined network controller
US10078501B2 (en) * 2015-03-16 2018-09-18 Microsoft Technology Licensing, Llc Domain specific language modeling framework in a development environment
US9436791B1 (en) * 2015-03-24 2016-09-06 International Business Machines Corporation Optimizing placement of circuit resources using a globally accessible placement memory
US10972371B2 (en) * 2015-03-27 2021-04-06 Intel Corporation Technologies for GPU assisted network traffic monitoring and analysis
US20180206187A1 (en) * 2015-07-10 2018-07-19 Nokia Technologies Oy Method and apparatus for saving power in a gateway network
US10756995B2 (en) 2015-07-27 2020-08-25 Datagrid Systems, Inc. Method, apparatus and system for real-time optimization of computer-implemented application operations using machine learning techniques
US9760736B2 (en) 2015-09-29 2017-09-12 International Business Machines Corporation CPU obfuscation for cloud applications
US10079695B2 (en) * 2015-10-28 2018-09-18 Citrix Systems, Inc. System and method for customizing packet processing order in networking devices
US9960968B2 (en) 2015-12-22 2018-05-01 Ca, Inc. Identification of networking component application programming interfaces
US10379824B2 (en) 2016-02-26 2019-08-13 Oracle International Corporation Method for static security enforcement of a DSL
US11349922B2 (en) * 2016-04-06 2022-05-31 Marvell Asia Pte Ltd. System and method for a database proxy
US9983859B2 (en) 2016-04-29 2018-05-29 Intuit Inc. Method and system for developing and deploying data science transformations from a development computing environment into a production computing environment
US10326532B2 (en) * 2016-08-05 2019-06-18 Nxgen Partners Ip, Llc System and method providing network optimization for broadband networks
US10558440B2 (en) * 2017-02-02 2020-02-11 Cisco Technology, Inc. Tightly integrated accelerator functions
US10303456B2 (en) 2017-03-23 2019-05-28 Intel Corporation Technologies for performing energy efficient software distribution
US10257033B2 (en) 2017-04-12 2019-04-09 Cisco Technology, Inc. Virtualized network functions and service chaining in serverless computing infrastructure
US10838920B2 (en) 2017-05-05 2020-11-17 Esoptra NV Plug-in function platform and methods
US10996936B2 (en) * 2017-06-27 2021-05-04 Intel Corporation Techniques for distributing code to components of a computing system
US20190052542A1 (en) 2017-08-11 2019-02-14 Fugue, Inc. System and method for providing visualizations of computing infrastructure using a domain-specific language for cloud services infrastructure
WO2019032123A1 (en) 2017-08-11 2019-02-14 Visa International Service Association SYSTEMS AND METHODS FOR GENERATING DISTRIBUTED SOFTWARE USING AN UNREGRIBUTED SOURCE CODE
US10642648B2 (en) * 2017-08-24 2020-05-05 Futurewei Technologies, Inc. Auto-adaptive serverless function management
US11089111B2 (en) 2017-10-02 2021-08-10 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US11190458B2 (en) 2017-11-15 2021-11-30 Vmware, Inc. Network functions support for serverless and granular computing environments
US10782934B1 (en) 2018-01-03 2020-09-22 Amazon Technologies, Inc. Migrating computer programs to virtual compute services using annotations
WO2019155369A1 (en) * 2018-02-07 2019-08-15 Patni Sangeeta Tri-affinity model driven method and platform for authoring, realizing, and analyzing a cross-platform application
US10805215B2 (en) * 2018-03-20 2020-10-13 Cisco Technology, Inc. Intra-host and end-to-end packet path and treatment tracing using in-situ OAM in container networking architecture
US10678444B2 (en) 2018-04-02 2020-06-09 Cisco Technology, Inc. Optimizing serverless computing using a distributed computing framework
US11025528B1 (en) * 2018-08-08 2021-06-01 Cox Communications, Inc. Dynamic virtual network function placement for optimal border gateway protocol support
WO2020051540A1 (en) 2018-09-06 2020-03-12 Clause, Inc. System and method for a hybrid contract execution environment
KR20210076882A (ko) 2018-11-08 2021-06-24 인텔 코포레이션 서비스형 함수(faas) 시스템 향상
US10938707B2 (en) * 2019-02-13 2021-03-02 Cisco Technology, Inc. Peer-to-peer optimization in existing tree-based topology based on generating locally-optimized tree using confined advertisements
US11836635B2 (en) 2019-05-31 2023-12-05 Apple Inc. Mutable parameters for machine learning models during runtime
US11444960B2 (en) 2019-06-05 2022-09-13 Vmware, Inc. Stateful rule generation for behavior based threat detection
US11025545B2 (en) 2019-06-06 2021-06-01 Cisco Technology, Inc. Conditional composition of serverless network functions using segment routing
US10908884B2 (en) * 2019-06-27 2021-02-02 Intel Corporation Methods and apparatus for runtime multi-scheduling of software executing on a heterogeneous system
US10942709B2 (en) 2019-07-02 2021-03-09 Holtworks, LLC Hyperpiler
US11184389B2 (en) * 2019-10-31 2021-11-23 Visa International Service Association Security mechanisms for preventing retry or replay attacks
MX2022013981A (es) * 2020-05-08 2023-01-24 Lutron Tech Co Llc Asignación de dispositivos de enrutamiento en una red en malla.
US11589243B2 (en) * 2020-05-12 2023-02-21 Harmonic, Inc. Dynamic adjustment of deployment location of software within a network
US11625230B2 (en) 2020-09-22 2023-04-11 Cisco Technology, Inc. Identifying execution environments for deploying network functions
US11126415B1 (en) * 2020-09-22 2021-09-21 Cisco Technology, Inc. Combining domain-specific language with general-purpose language for serverless network functions

Also Published As

Publication number Publication date
US20220091823A1 (en) 2022-03-24
EP4217848A1 (en) 2023-08-02
WO2022066494A1 (en) 2022-03-31
WO2022066494A8 (en) 2023-04-06
US11442703B2 (en) 2022-09-13

Similar Documents

Publication Publication Date Title
CN116324714A (zh) 将域特定语言与通用语言组合以用于无服务器网络功能
US11469965B2 (en) Determining formal models using weighting factors for computing elements in multi-domain environments
CN112470431B (zh) 使用自动布尔学习的网络的模型的合成
CN116324712A (zh) 用于无服务器网络功能的域特定语言
CN116235477A (zh) 识别用于部署网络功能的执行环境
US11418394B1 (en) Using a domain-specific language to describe network-level behavior
JP2021535460A (ja) Sddcにおけるマルチセグメントアプリケーションを定義する階層型api
US11894983B2 (en) Simulation and testing of infrastructure as a service scale using a container orchestration engine
US11184251B2 (en) Data center cartography bootstrapping from process table data
US20240048448A1 (en) Parallel execution of network services with overlapping device configuration
US9417896B2 (en) Allocating hypervisor resources
EP4325360A1 (en) Distributed artificial intelligence runtime at the network edge as a service
WO2024060690A1 (en) Automated machine learning model deployment
Benomar et al. Deviceless: A serverless approach for the Internet of Things
Hwang et al. FitScale: scalability of legacy applications through migration to cloud
Rathi et al. SDN Layer 2 Switch Simulation Using Mininet and OpenDayLight
US10742517B2 (en) Rapid testing of configuration changes in software defined infrastructure
US20240323087A1 (en) Generating optimized custom data planes
Han A framework for development operations and management of SDN-based virtual networks

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