【技术实现步骤摘要】
【国外来华专利技术】将域特定语言与通用语言组合以用于无服务器网络功能
[0001]相关申请
[0002]本申请要求于2020年9月22日提交的美国专利申请No.17/028,566的优先权,其全部内容通过引用并入本文。
[0003]技术域
[0004]本公开总体上涉及使用域特定语言来表达和编译无服务器网络功能,以及优化无服务器网络功能在网络设备上的部署位置。
技术介绍
[0005]计算机网络通常是一组计算机或其它设备,它们通信连接并使用一个或多个通信协议来交换数据,例如通过使用分组交换。例如,计算机联网可以指连接的计算设备(如笔记本电脑、台式机、服务器、智能手机和平板电脑)以及不断扩展的物联网(IoT)设备(如相机、门锁、门铃、冰箱、音频/视频系统、恒温器和各种传感器),这些设备相互通信。现代网络提供各种类型的网络架构,例如位于诸如建筑物之类的一个物理位置中的局域网(LAN)、扩展到较大地理区域以连接个人用户或LAN的广域网(WAN)、为大型组织构建的企业网络、运营WAN以向个人用户或企业提供连接的互联网服务提供商(ISP)网络,等等。
[0006]这些网络通常包括专门的网络设备,用于在设备之间传送表示各种数据的分组,例如在交换机、路由器、服务器、接入点等之间传送。这些设备中的每个设备都被设计和配置为执行不同的网络功能。例如,交换机充当允许网络中的设备相互通信的控制器。路由器将多个网络连接在一起,并且还将这些网络上的计算机连接到互联网,方式是通过分析通过网络发送的数据并选择用于数据传输的最佳路径来充当网络中的分配器。接入点 ...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】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所述的计算设备,其中:所述第一源代码表示具有第一...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。