将域特定语言与通用语言组合以用于无服务器网络功能制造技术

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

【技术实现步骤摘要】
【国外来华专利技术】将域特定语言与通用语言组合以用于无服务器网络功能
[0001]相关申请
[0002]本申请要求于2020年9月22日提交的美国专利申请No.17/028,566的优先权,其全部内容通过引用并入本文。
[0003]技术域
[0004]本公开总体上涉及使用域特定语言来表达和编译无服务器网络功能,以及优化无服务器网络功能在网络设备上的部署位置。

技术介绍

[0005]计算机网络通常是一组计算机或其它设备,它们通信连接并使用一个或多个通信协议来交换数据,例如通过使用分组交换。例如,计算机联网可以指连接的计算设备(如笔记本电脑、台式机、服务器、智能手机和平板电脑)以及不断扩展的物联网(IoT)设备(如相机、门锁、门铃、冰箱、音频/视频系统、恒温器和各种传感器),这些设备相互通信。现代网络提供各种类型的网络架构,例如位于诸如建筑物之类的一个物理位置中的局域网(LAN)、扩展到较大地理区域以连接个人用户或LAN的广域网(WAN)、为大型组织构建的企业网络、运营WAN以向个人用户或企业提供连接的互联网服务提供商(ISP)网络,等等。
[0006]这些网络通常包括专门的网络设备,用于在设备之间传送表示各种数据的分组,例如在交换机、路由器、服务器、接入点等之间传送。这些设备中的每个设备都被设计和配置为执行不同的网络功能。例如,交换机充当允许网络中的设备相互通信的控制器。路由器将多个网络连接在一起,并且还将这些网络上的计算机连接到互联网,方式是通过分析通过网络发送的数据并选择用于数据传输的最佳路径来充当网络中的分配器。接入点就像网络的放大器一样,并且用于扩展路由器提供的带宽,以便网络可以支持彼此距离较远的许多设备。
[0007]计算网络已持续变得更复杂,例如随着软件定义网络(SDN)的引入而变得更复杂。在SDN中,对网络的管理集中在控制器处,使得控制平面从离散联网设备中的数据转发功能中抽取出来。SDN控制器是SDN架构的核心元素,并且使能跨物理和虚拟网络环境的集中管理和控制、自动化和策略实施。已经为SDN架构开发了各种标准或协议,例如OpenFlow、独立于编程协议的分组处理器(P4)、开放虚拟交换机数据库(OVSDB)、Python等。这些SDN协议允许SDN控制器使用例如各种应用编程接口(API)直接与网络设备(例如交换机和路由器)的转发平面交互。
[0008]传统上,SDN控制器会使用这些SDN协议来对网络设备进行编程或将变化下推到交换机/路由器流表,从而允许SDN控制器划分业务、控制流以获得最佳性能、测试新配置和应用、和/或以其它方式控制或引导数据平面业务。为了执行各种操作,网络设备传统上直接在网络设备的硬件(例如,裸机实现)上运行不同类型的网络功能(例如,分组丢弃功能、分组复制功能、分组转发功能等)。然而,在同一网络设备上运行各种类型的网络功能可能是低效的、不安全的或以其它方式是不利的。例如,由于网络设备需要执行不同类型的网络功能,有效运行这些网络功能所需的硬件的规模、多样性和成本大大增加。此外,随着网络需
求的变化,可能需要更新网络中运行的软件,这可能需要更换或更新网络中的硬件(例如,更换整个网络设备或设备中的组件)。
[0009]鉴于直接在网络设备的硬件上运行网络功能的各种低效和缺点,网络功能虚拟化(NFV)技术应运而生,以将网络功能与底层硬件分离,以创建可在商品硬件上运行的虚拟化网络,从而允许网络更加灵活和更具成本效益。NFV技术使用处理特定网络功能的虚拟网络功能(VNF),例如防火墙功能、负载平衡功能、分组路由功能等。因此,网络已经发生了转变,从使用多个硬件,每个硬件执行单一功能,到在单个硬件中拥有多个虚拟机(VM),其中每个VM执行一个或多个VNF的操作。更进一步,最近的进展包括使用容器进行网络功能虚拟化。也就是说,容器不是简单地使用充当硬件虚拟化的多个VM,而是充当操作系统(OS)虚拟化。容器能够共享VM的相同主机操作系统,但可能能够以隔离的方式运行单独的VNF,以便每个VM可以支持多个容器化VNF。但是,在VM和容器中运行VNF时仍然存在各种低效和缺点。
附图说明
[0010]下面结合附图进行详细描述。在附图中,参考标号最左边的(一个或多个)数字标识参考标号首次出现的附图。在不同附图中使用相同的参考标号表示相似或相同的项目。附图中描绘的系统不是按比例绘制的,并且附图中的组件可能被描绘成不是彼此按比例绘制的。
[0011]图1示出了用户设备的用户利用域特定语言来表达和编译无服务器网络功能以执行网络操作的环境的系统架构图。图1进一步示出了网络架构中的网络控制器,网络架构将无服务器网络功能部署在网络架构中的最佳位置(例如,在最佳网络组件或设备上)。
[0012]图2示出了示例用户设备的组件图,用户可以通过该示例用户设备至少部分地使用用于表达无服务器网络功能的域特定语言来表达和编译无服务器网络功能。
[0013]图3示出了示例网络控制器的组件图,该示例网络控制器接收无服务器网络功能,并确定网络架构中部署无服务器网络功能的优化位置。
[0014]图4示出了用于用户设备的用户表达无服务器网络功能、用于域特定语言编译器生成用于执行无服务器网络功能的代码、以及用于网络控制器将无服务器网络功能的代码部署到网络架构中的一个或多个网络设备的示例方法的流程图。
[0015]图5示出了呈现在用户设备上的图形用户界面,用户可以通过该界面使用文本、图形图标和/或其组合来表达无服务器网络功能。
[0016]图6示出了用于用户设备的用户使用域特定语言和通用语言表达无服务器网络功能、用于编译器生成用于执行无服务器网络功能的代码、以及用于网络控制器将无服务器网络功能的代码部署到网络架构中的一个或多个网络设备的示例方法的流程图。
[0017]图7A和图7B示出了用于用户设备的用户使用域特定语言和通用语言表达无服务器网络功能、用于编译器生成用于执行无服务器网络功能的代码、以及用于网络控制器将无服务器网络功能的代码部署到网络架构中的一个或多个网络设备的示例方法的各个流程图。更具体地,图7A示出了使用域特定语言以及Go编程语言或Rust编程语言中的至少一种来表达无服务器网络功能,并且图7B示出了使用域特定语言以及Python编程语言来表达无服务器网络功能。
[0018]图8示出了呈现在用户设备上的图形用户界面,用户可以通过该界面使用域特定
语言和通用语言的组合来表达无服务器网络功能。
[0019]图9示出了其中网络架构中的网络控制器在网络架构中的最佳位置(例如,在最佳网络组件或设备上)部署无服务器网络功能的环境的系统架构图。
[0020]图10示出了用于使用域特定语言表达无服务器网络功能并且生成用于执行无服务器网络功能的代码的示例方法的流程图。
[0021]图11示出了用于使用域特定语言和通用语言来表达无服务器网络功能并且生成用于执行无服务器网络功能的代码的示例方法的流程图。
[0022]图12示出了用于将无服务器网络功能部本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种用于使用域特定语言(DSL)和通用语言(GPL)生成无服务器网络功能的方法,该方法包括:接收以所述DSL表达的第一源代码,所述第一源代码定义要由网络设备执行的所述无服务器网络功能的第一部分,所述DSL可用于定义多个无服务器网络功能;接收以所述GPL表达的第二源代码,所述第二源代码定义所述无服务器网络功能的第二部分;以及至少部分地使用编译器生成所述第一源代码和所述第二源代码,目标代码包括可由所述网络设备执行以执行所述无服务器网络功能的机器可执行指令。2.如权利要求1所述的方法,其中,所述GPL包括以下项中的至少一者:Go编程语言;Rust编程语言;独立的分组处理器(P4)编程语言;开放式虚拟交换机数据库(OVSDB)编程语言;或者Python编程语言。3.如权利要求1或2所述的方法,其中:所述第一源代码表示具有第一功能的第一组件;所述第二源代码以Go编程语言编写并且表示具有第二功能的第二组件,所述方法还包括接收第三源代码,所述第三源代码表示用于使所述第一组件能够与所述第二组件通信的Go通道。4.如权利要求1或2所述的方法,其中:所述第一源代码表示具有第一功能的第一组件;所述第二源代码以Rust编程语言编写并且表示具有第二功能的第二组件,所述方法还包括接收第三源代码,所述第三源代码表示用于使所述第一组件能够与所述第二组件通信的Rust通道。5.如权利要求1或2所述的方法,其中:所述第一源代码表示具有第一功能的第一组件;所述第二源代码以Python编程语言编写并且表示具有第二功能的第二组件,所述方法还包括接收表示异步编程功能(asyncio)函数的第三源代码。6.如权利要求1至5中任一项所述的方法,其中,所述无服务器网络功能包括以下项中的至少一者:分组获取功能,被配置为选择性地在所述网络设备上执行以获取分组;分组生成功能,被配置为选择性地在所述网络设备上执行以生成分组;分组复制功能,被配置为选择性地在所述网络设备上执行以复制分组;分组修改功能,被配置为选择性地在所述网络设备上执行以修改分组;分组丢弃功能,被配置为选择性地在所述网络设备上执行以丢弃分组;或者分组转发功能,被配置为选择性地在所述网络设备上执行以转发分组。7.如权利要求1至6中任一项所述的方法,其中,生成所述目标代码包括以下项中的至少一者:生成OpenFlow编程语言程序;
生成P4编程语言程序;生成Linux扩展伯克利分组过滤器(eBPF)程序;生成被配置为在智能网络接口控制器(NIC)上执行的程序;生成与现场可编程门阵列(FPGA)或专用集成电路(ASIC)中的至少一个相关联的硬件描述语言;或者生成矢量分组处理器(VPP)程序。8.如权利要求1至7中任一项所述的方法,还包括:接收关于要在其上执行所述无服务器网络功能的所述网络设备的设备类型的指示;并且至少部分地基于所述设备类型确定可在所述网络设备上执行的机器语言,其中生成所述目标代码包括以所述机器语言将所述第一源代码编译成所述第一目标代码以及以所述机器语言将所述第二源代码编译成所述第二目标代码。9.一种计算设备,包括:一个或多个处理器;以及一个或多个存储计算机可执行指令的非暂态计算机可读介质,所述指令在由所述一个或多个处理器执行时,使所述一个或多个处理器执行操作,所述操作包括:接收以域特定语言(DSL)表达的第一源代码,所述第一源代码定义要由网络中的网络设备执行的无服务器网络功能的第一部分,所述DSL可用于定义多个无服务器网络功能;接收以通用语言(GPL)表达的第二源代码,所述第二源代码定义所述无服务器网络功能的第二部分;以及至少部分地使用编译器生成所述第一源代码和所述第二源代码,目标代码包括可由所述网络设备执行以执行所述无服务器网络功能的机器可执行指令。10.如权利要求9所述的计算设备,其中,所述GPL包括以下项中的至少一者:Go编程语言;Rust编程语言;独立的分组处理器(P4)编程语言;开放式虚拟交换机数据库(OVSDB)编程语言;或者Python编程语言。11.如权利要求9或10所述的计算设备,其中:所述第一源代码表示具有第一功能的第一组件;所述第二源代码以Go编程语言编写并且表示具有第二功能的第二组件,所述操作还包括接收第三源代码,所述第三源代码表示用于使所述第一组件能够与所述第二组件通信的Go通道。12.如权利要求9或10所述的计算设备,其中:所述第一源代码表示具有第一...

【专利技术属性】
技术研发人员:凯尔
申请(专利权)人:思科技术公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1