CN108614691B - 网络功能的开发方法、系统、计算机设备和存储介质 - Google Patents
网络功能的开发方法、系统、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN108614691B CN108614691B CN201810353060.XA CN201810353060A CN108614691B CN 108614691 B CN108614691 B CN 108614691B CN 201810353060 A CN201810353060 A CN 201810353060A CN 108614691 B CN108614691 B CN 108614691B
- Authority
- CN
- China
- Prior art keywords
- rules
- rule
- prediction
- program
- program file
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种网络功能的开发方法、系统、计算机设备和存储介质。其中,所述开发方法包括:自一数据源获取用于实现网络功能的预测规则和所对应的操作规则;其中,所述预测规则包含对数据流的预测规则、和/或与所述网络功能相关的状态的预测规则,所述操作规则包含对所述数据流的操作规则、和/或与所述网络功能相关的状态的操作规则;按照预设的描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理,以得到由程序语言描述的程序文件;将所述程序文件编译成可在预确定的运行环境下执行的软件程序。本申请极大降低了开发网络功能的开发难度,有效减少了因人为逻辑错误而产生的缺陷,以及减少程序员的重复开发工作量。
Description
技术领域
本申请涉及计算机软件技术领域,特别是涉及一种网络功能的开发方法、系统、计算机设备和存储介质。
背景技术
NF(Network Functions,网络功能)主要用于实现资源共享,实现数据信息的快速传递,提高网络可靠性,提供负载均衡与分布式处理能力,集中管理以及综合信息服务。已知的NF模块通常由NF供应商将携带核心NF功能(如防火墙等)的产品推向市场。然而,NF交付仍然是一个单调乏味且代价高昂的过程,并阻碍了NFV(Network FunctionVirtualization,网络功能虚拟化)生态系统的发展。NF交付的难点在于包括交付标准NF不能满足不同网络的不同要求。例如,来自不同网络的运营商可能都需要一个“负载均衡器”,但是,他们可能有不同的要求:可能需要与其异构后端服务器成比例的非均匀负载平衡,可能需要负载均衡器中的黑名单功能,或者希望能够为流分配优先级。已知的一些方法是购买各种NF并链接它们以获得所需的功能,这会在链上引入多个NF实例的开销和延迟,更重要的是,这种方法将管理复杂性推向NF用户。在另一种方法中,NF用户要求NF对于NF供应商来说开发定制产品通常需要很长时间测试,此外,将所有功能添加到软件中通常会导致软件变得冗余且具有强耦合性,难于维护。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供一种网络功能的开发方法、系统、计算机设备和存储介质,用于解决现有技术中NF开发过程中难于快速、简洁的实现定制方案的问题。
为实现上述目的及其他相关目的,本申请的第一方面提供一种网络功能的开发方法,包括:自一数据源获取用于实现网络功能的预测规则和所对应的操作规则;其中,所述预测规则包含对数据流的预测规则、和/或与所述网络功能相关的状态的预测规则,所述操作规则包含对所述数据流的操作规则、和/或与所述网络功能相关的状态的操作规则;按照预设的描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理,以得到由程序语言描述的程序文件;将所述程序文件编译成可在预确定的运行环境下执行的软件程序。
在本申请的第一方面的某些实施方式中,所述数据流的预测规则包含:面向数据流中至少一个特征位置的预测规则。
在本申请的第一方面的某些实施方式中,所述开发方法还包括以下步骤:自所述数据源获取与所述网络功能相关的初始状态。
在本申请的第一方面的某些实施方式中,所述对数据流的操作规则包括以下至少一种:对数据流执行编辑、转发、丢弃或延时处理的操作规则,对数据流执行重新提交的操作规则。
在本申请的第一方面的某些实施方式中,所述数据源为一编辑器,还包括以下至少一步骤:将包含所述预测规则和所对应的操作规则的源文件导入所述编辑器;在所述编辑器中编辑预测规则和所对应的操作规则。
在本申请的第一方面的某些实施方式中,所述自一数据源获取用于实现网络功能的预测规则和所对应的操作规则的步骤包括以下至少一种:自所述数据源获取用于描述所述预测规则和所对应的操作规则的文本;自所述数据源获取用于描述所述预测规则和所对应的操作规则的表格;自所述数据源获取用于描述所述预测规则和所对应的操作规则的有向图。
在本申请的第一方面的某些实施方式中,所述开发方法还包括:将所获取的预测规则及其操作规则保存成可被所述编辑器复用编辑的源文件。
在本申请的第一方面的某些实施方式中,以所述预测规则和所对应的操作规则为条目,所述按照预设的描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理的步骤包括:按照所述转换逻辑逐条地将各条目中的预测规则处理为条件语句,将所对应的操作规则处理为所述条件语句下的操作语句。
在本申请的第一方面的某些实施方式中,所述按照描述规则所表达将所述预测规则处理为条件语句,将所对应的操作规则处理为所述条件语句下的操作语句的步骤包括:按照多个条目的上下文所表达的转换逻辑将多个条目的语句进行优化处理。
在本申请的第一方面的某些实施方式中,所述按照多个条目的上下文所表达的转换逻辑将多个条目的语句进行优化处理的步骤包括以下任一种:按照多个条目的上下文所表达的转换逻辑将各条目处理成状态机;按照多个条目的上下文所表达的转换逻辑将多个条目依次序处理、融合处理、跳过处理和重新排序处理中的至少一种。
在本申请的第一方面的某些实施方式中,所述将预测规则和操作规则进行处理的步骤包括:将所述预测规则和操作规则处理成用领域专用语言或编程语言描述的程序文件。
在本申请的第一方面的某些实施方式中,所述将程序文件编译成可在预确定的运行环境下执行的软件程序的步骤包括:基于待运行所述程序文件的网络模块的运行环境信息,将所述程序文件编译成可在相应运行环境下执行的软件程序。
在本申请的第一方面的某些实施方式中,还包括自一数据源获取所述运行环境信息的步骤。
在本申请的第一方面的某些实施方式中,所述自一数据源获取所述运行环境信息的步骤包括:基于所述数据源所提供的运行环境选项确定相应的运行环境信息。
在本申请的第一方面的某些实施方式中,所述基于待运行所述程序文件的网络模块的运行环境信息,将所述程序文件编译成可在相应运行环境下执行的软件程序的步骤包括:按照所述运行环境信息配置编译环境;以及选用配置有所述运行环境的编译器,对所述程序文件进行编译并得到相应的软件程序。
在本申请的第一方面的某些实施方式中,所述基于待运行程序文件的网络模块的运行环境信息,将所述程序文件编译成可在相应运行环境下执行的软件程序的步骤包括:按照预设的所述运行环境信息,将所述程序文件进行预处理;将预处理后的程序文件编译成可在相应运行环境下执行的软件程序。
在本申请的第一方面的某些实施方式中,所述按照预设的所述运行环境信息,将所述程序文件进行预处理的步骤包括以下至少一种:按照预设的所述运行环境信息,在所述程序文件中进行增加、删除或修改操作。
在本申请的第一方面的某些实施方式中,所述程序文件用解释型语言描述,所述将程序文件编译成可在预确定的运行环境下执行的软件程序包括:将所述程序文件编译成可由不同运行环境的运行时识别的软件程序。
本申请第二方面提供一种网络功能的开发系统,包括:交互模块,用于自一数据源获取用于实现网络功能的预测规则和所对应的操作规则;其中,所述预测规则包含对数据流的预测规则、和/或与所述网络功能相关的状态的预测规则,所述操作规则包含对所述数据流的操作规则、和/或与所述网络功能相关的状态的操作规则;处理模块,用于按照预设的描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理,以得到由程序语言描述的程序文件;编译模块,用于将所述程序文件编译成可在预确定的运行环境下执行的软件程序。
在本申请的第二方面的某些实施方式中,所述数据流的预测规则包含:面向数据流中至少一个特征位置的预测规则。
在本申请的第二方面的某些实施方式中,所述交互模块还用于自所述数据源获取与所述网络功能相关的初始状态。
在本申请的第二方面的某些实施方式中,所述对数据流的操作规则包括以下至少一种:对数据流执行编辑、转发、丢弃或延时处理的操作规则,对数据流执行重新提交的操作规则。
在本申请的第二方面的某些实施方式中,所述数据源为一编辑器,所述交互模块还用于执行以下至少一步骤:将包含所述预测规则和所对应的操作规则的源文件导入所述编辑器;在所述编辑器中编辑预测规则和所对应的操作规则。
在本申请的第二方面的某些实施方式中,所述交互模块执行以下至少一种步骤:自所述数据源获取用于描述所述预测规则和所对应的操作规则的文本;自所述数据源获取用于描述所述预测规则和所对应的操作规则的表格;自所述数据源获取用于描述所述预测规则和所对应的操作规则的有向图。
在本申请的第二方面的某些实施方式中,所述交互模块还用于将所获取的预测规则及其操作规则保存成可被所述编辑器复用编辑的源文件。
在本申请的第二方面的某些实施方式中,以所述预测规则和所对应的操作规则为条目,所述处理模块用于按照所述转换逻辑逐条地将各条目中的预测规则处理为条件语句,将所对应的操作规则处理为所述条件语句下的操作语句。
在本申请的第二方面的某些实施方式中,所述处理模块用于按照多个条目的上下文所表达的转换逻辑将多个条目的语句进行优化处理。
在本申请的第二方面的某些实施方式中,所述处理模块用于执行以下任一步骤:按照多个条目的上下文所表达的转换逻辑将各条目处理成状态机;按照多个条目的上下文所表达的转换逻辑将多个条目依次序处理、融合处理、跳过处理和重新排序处理中的至少一种。
在本申请的第二方面的某些实施方式中,所述处理模块用于将所述预测规则和操作规则处理成用领域专用语言或编程语言描述的程序文件。
在本申请的第二方面的某些实施方式中,所述编译模块用于基于待运行所述程序文件的网络模块的运行环境信息,将所述程序文件编译成可在相应运行环境下执行的软件程序。
在本申请的第二方面的某些实施方式中,所述交互模块还用于自一数据源获取所述运行环境信息。
在本申请的第二方面的某些实施方式中,所述交互模块用于基于所述数据源所提供的运行环境选项确定相应的运行环境信息。
在本申请的第二方面的某些实施方式中,所述编译模块用于按照所述运行环境信息配置编译环境;以及选用配置有所述运行环境的编译器,对所述程序文件进行编译并得到相应的软件程序。
在本申请的第二方面的某些实施方式中,所述编译模块用于执行以下步骤:按照预设的所述运行环境信息,将所述程序文件进行预处理;将预处理后的程序文件编译成可在相应运行环境下执行的软件程序。
在本申请的第二方面的某些实施方式中,所述编译模块用于执行以下至少一种:按照预设的所述运行环境信息,在所述程序文件中进行增加、删除或修改操作。
在本申请的第二方面的某些实施方式中,所述程序文件用解释型语言描述,所述编译模块用于将所述程序文件编译成可由不同运行环境的运行时识别的软件程序。
本申请第三方面提供一种计算机设备,包括:存储器,用于存储至少一个程序;处理器,用于调用所述至少一个程序,以执行如上任一所述的开发方法。
本申请第四方面提供一种计算机可读存储介质,存储有用于网络功能开发的计算机程序,其特征在于,所述计算机程序被执行时实现如上任一项所述的网络功能的开发方法
如上所述,本申请的网络功能的开发方法、系统、计算机设备和存储介质,具有以下有益效果:本申请利用数据源获取按照描述规则描述的状态、预测规则和操作规则,并生成由程序语言描述的程序文件,进而对程序文件编译后得到软件程序,由于仅按照网络功能描述所涉及的状态、预测规则和操作规则,因而极大降低了开发网络功能的开发难度;另外,由本申请所提供的方案将所获取的状态、预测规则和操作规则等转换成程序语言,有效减少了因人为逻辑错误而产生的缺陷;此外,由本申请所提供的方案对所产生的仅用于实现网络功能的程序文件进行编译器适配处理,有效地将运行环境与功能研发相分离,减少程序员的重复开发工作量。
附图说明
图1显示为配置有本申请的开发系统的计算机设备的结构示意图。
图2显示为本申请网络功能的开发方法在一实施方式中的流程图。
图3显示为包含预测规则和所对应的操作规则的文本示意图。
图4显示为包含预测规则和所对应的操作规则的表格示意图。
图5显示为包含预测规则和所对应的操作规则的有向图示意图。
图6显示为本申请网络功能的开发系统在一实施方式中的架构示意图。
图7显示为本申请的一种编译方法的流程图。
图8显示为本申请所提供的在编辑器上显示运行环境选项的一种实施方式的示意图。
图9显示为本申请所提供的在编辑器上显示的运行环境选项的另一种实施方式的示意图。
图10显示为本申请的编译系统在一实施方式中的架构示意图。
图11显示为本申请的开发方法在一实施方式中的流程图。
图12显示为本申请的开发系统在一实施方式中的架构示意图。
图13显示为藉由图11和图12所述的开发方案操作编辑器所生成的各种文件的示意图。
图14显示为本申请的计算机设备一实施例的结构示意图。
具体实施步骤
以下由特定的具体实施例说明本申请的实施步骤,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本申请的其他优点及功效。
在下述描述中,参考附图,附图描述了本申请的若干实施例。应当理解,还可使用其他实施例,并且可以在不背离本公开的精神和范围的情况下进行机械组成、结构、电气以及操作上的改变.下面的详细描述不应该被认为是限制性的,并且本申请的实施例的范围仅由公布的专利的权利要求书所限定.这里使用的术语仅是为了描述特定实施例,而并非旨在限制本申请。
虽然在一些实例中术语第一、第二等在本文中用来描述各种元件,但是这些元件不应当被这些术语限制。这些术语仅用来将一个元件与另一个元件进行区分。例如,第一预设阈值可以被称作第二预设阈值,并且类似地,第二预设阈值可以被称作第一预设阈值,而不脱离各种所描述的实施例的范围。第一预设阈值和预设阈值均是在描述一个阈值,但是除非上下文以其他步骤明确指出,否则它们不是同一个预设阈值。相似的情况还包括第一音量与第二音量。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示.应当进一步理解,术语“包含”、“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加.此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或操作的组合在某些步骤下内在地互相排斥时,才会出现该定义的例外。
随着云服务所覆盖范围的扩展,以及基于云服务所带来的NF供应商从提供私有的专用网元设备向基于某些硬件/软件的行业标准而提供可灵活配置网络能力的NFV模块的转变,NF供应商采用现有的NF开发模式束缚了产品更新的速度,以及对优化核心网络功能和附加网络功能的灵活性。
为此,本身请提供一种采用结构化开发NF模块,特别是开发核心网络功能的开发方式,以摆脱因采用逻辑语言编写代码的方式而产生的各功能之间具有强耦合性,及因强耦合性所带来的各种维护、优化问题。
本申请提供一种网络功能的开发方法,所述开发方法主要由开发系统来执行。所述开发系统包括计算机设备的软件和硬件,其中,所述计算机设备包括但不限于配置有开发软件部分的个人计算机设备、服务器等。请参阅图1,其显示为配置有所述开发系统的计算机设备的结构示意图。所述计算机设备包括存储单元11、处理单元12、接口单元13和显示单元14等。所述计算机设备还可配置有用于执行所开发的网络功能的硬件设备中的各硬件单元,以为所开发的网络功能提供运行环境。
其中,所述存储单元11存储有所述开发系统的软件部分,所述存储单元11包括高速随机存取存储器、非易失性存储器和存储器控制器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储器还可以包括远离一个或多个处理器的存储器,例如经由RF电路或外部端口以及通信网络(未示出)访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。所述存储器控制器可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。存储在存储单元中的软件组件包括操作系统、通信模块(或指令集)、接触/运动模块(或指令集)、图形模块(或指令集)、触觉反馈模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。
所述处理单元12可操作地与存储单元11耦接。更具体地,处理单元12可执行在存储器和/或非易失性存储设备中存储的指令以在计算设备中执行操作,诸如生成程序文件和/或将程序文件中所描述的预测规则和操作规则传输到电子显示器。如此,处理器可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。
所述处理单元12还与接口单元13和输入结构可操作地耦接,该接口单元13可使得计算设备能够与各种其他电子设备进行交互,该输入结构可使得用户能够与计算设备进行交互,例如,所述接口单元13包含I/O端口、和/或网络接口等。因此,输入结构可包括按钮、键盘、鼠标、触控板等。此外,显示单元14可包括具有触摸部件的电子显示器,该触摸部件通过检测对象触摸其屏幕(例如,电子显示器的表面)的发生和/或位置来促进用户输入。
请参阅图2,其显示为本申请网络功能的开发方法在一实施方式中的流程图。所述处理单元通过调用存储单元中所存储的开发软件执行所述开发方法中的各步骤。
在步骤S110中,自一数据源获取用于实现网络功能的预测规则和所对应的操作规则。其中,所述数据源包含用于存储预测规则和操作规则的源文件、或数据表。例如,数据源包括但不限于数据库或文件存储服务器。所述处理单元可通过接口单元从如数据库或文件存储服务器等数据源获取按照预设的描述规则保存的预测规则和所对应的操作规则。
所述数据源还包括用于显示及编辑预测规则和操作规则的编辑器。在一具体示例中,所述编辑器作为开发系统中的一部分且包括所述开发系统所在计算机设备中的软件和硬件。例如,所述编辑器包括显示单元、处理单元和存储单元。处理单元自显示在显示单元的编辑器界面获取用于实现网络功能的预测规则和所对应的操作规则。其中,研发人员通过在编辑界面上的操作设计所述预测规则和所对应的操作规则。所述处理单元还基于研发人员在编辑界面上的导入操作,将包含所述预测规则和所对应的操作规则的源文件导入编辑器,以供研发人员对已创建的预测规则及操作规则进行重新编辑,并在编辑后,获取所述预测规则和所对应的操作规则。
研发人员可按照所述开发方法提供的格式将预测规则和操作规则编辑并保存成文件,存储在所述数据源中。所述开发系统自所述数据源获取所述预测规则和操作规则。其中,所编辑的格式包含文本、表格和有向图中至少一种。
在一些实施方式中,所述开发系统可获取数据源所提供的文本、表格和有向图中任一种源文件。例如,请参阅图3,其显示为包含预测规则和所对应的操作规则的文本示意图。其中,研发人员在编辑器、或者文本制作软件中,按照预设的初始化文本块(Basictypes andexpression)、预测规则文本块(Predicates)、操作规则文本块(Policies)和转换逻辑文本块(Model)的文本格式,开发网络功能并保存成文本文件,所述开发系统自数据源获取所述文本文件。又如,请参阅图4,其显示为包含预测规则和所对应的操作规则的表格示意图。其中,研发人员在编辑器、或者表格制作软件中,按照配置表栏(Configuration)、预测规则表栏(Match)、操作规则表栏(Action),编开发网络功能并保存成表格文件,所述开发系统自数据源获取所述表格文件。再如,请参阅图5,其显示为包含预测规则和所对应的操作规则的有向图示意图。其中,研发人员在编辑器或作图软件中,通过选择栏中提供的路由图示、防火墙图示和速率限制器图示进行有向图连接操作,其中按照图示中所提供的各属性栏位填写对应描述初始状态、预测规则、操作规则等,所述开发系统自数据源获取带有属性信息和连接关系的有向图组合。
在另一些实施方式中,所述开发系统自编辑器获取按照预设格式编辑的预测规则和所对应的操作规则。例如,所述开发系统根据研发人员的操作,将按照前述方式生成的任一种源文件导入编辑器并再次编辑及保存时,获取编辑器中所编辑的各规则。
在此,所述网络功能包括但不限于以下至少一种:防火墙功能、限速功能、负载均衡功能、关键信息过滤功能、定制的网络功能、及其他基于NFV而产生的网络功能等。
为了便于研发人员选择所编辑的预测规则、操作规则和状态的描述,所述开发系统中预设有辅助规则描述的语句、符号、运算符等资料库。其中,所提供的语句包括但不限于:转发语句、匹配语句、配置语句、延时操作语句、重新提交语句等,例如,延时操作的语句为timer(Δt),其中,Δt为可编辑的参数。所提供的符号包括但不限于:通配符、任意字符、批处理符号等,例如,利用*符号表示通配符。所提供的运算符包括但不限于:数学运算符号、逻辑运算符号等,例如,利用^符号表示逻辑与。
在此,所述预测规则用于描述为实现网络功能而设置的约束条件。例如,为实现网络功能中的禁止转发包含黑名单IP地址的数据流功能,所述预测规则包括判断数据流中IP地址是否归属预设的黑名单IP地址列表的规则等。又如,为实现网络功能中的速率限制功能,所述预测规则包括判断数据流的长度是否在预设长度之内的规则。再如,为实现网络功能中的数据流的传输协议统计功能,所述预测规则包括判断数据流的的协议类型的规则。
所述预测规则包括对数据流的预测规则,其用于定义所接收的数据流符合/不符合网络功能的条件。所述对数据流的预测规则包括面向数据流中至少一个特征位置的预测规则。其中,所述特征位置包括数据流中可预先确定的字符或字节位置。在一具体示例中,所述特征位置包括按照协议规范排列在数据流的包头和包尾中各字符或字节位置。其中,所述协议规范包括用于网络传输的国际协议规范、国家协议规范、和私有协议规范等。例如,所述特征位置包括但不限于:以太网信息、IP地址、端口、协议类型、校验信息、标识位等。其中所述标识位举例包括TTL(Time To Live生存时间值)等。对应地,所述预测规则用于描述按照网络功能而匹配特征位置的规则。所述特征位置还包括数据流中不能预先确定的字符或字节位置,在一具体示例中,预测规则描述了对数据流中数据内容进行匹配的规则,对应地,所述特征位置包括按照所述预测规则在数据流中匹配到的字符或字节位置。例如,预设规则包括数据流中所选中的字节匹配预设关键词的规则;对应地,所述特征位置为按照所述预测规则而遍历数据流期间当前被选中的字节位置。
另外,所述预测规则还包括与所述网络功能相关的状态的预测规则。其中,所述状态包括在实现一个复杂的网络功能时随同一数据流执行多次预测规则的变量信息,和/或在实现多个数据流的网络功能时各数据流共用的变量信息。所述状态包括但不限于:令牌信息、数据流的源地址和目的地址列表、计时信息、计数信息等。所述状态的初始状态可为默认状态,例如,认定统计计数的初始值为0。所述初始状态还可以自所述数据源获取,例如,所述开发系统根据编辑器所提供的初始化文本块或配置表栏获取初始状态。所述预测规则用于定义包含状态的条件。例如,所述预测规则包括:基于定时器所提供的时间信息而限时传递数据流及限时不传递数据流的规则。又如,所述预测规则包括:所接收的数据流符合及不符合预设令牌信息的规则。再如,所述预测规则包括:所接收的数据流的源地址符合及不符合被维护的目的地址列表的规则。
在此,所述操作规则用于描述在符合相应预测规则下的NF模块所需执行的操作。每个预测规则和所对应的操作规则作为一个条目,一个网络功能中可包含一个或多个条目。根据网络功能的设计需要,每个条目中可仅包含一个预测规则和所对应的一个或多个操作规则;或者,每个条目中包含多个预测规则和符合所有预测规则而需执行的一个或多个操作规则。例如,在利用黑名单IP地址过滤数据流的功能中,预测规则为对所接收的数据流符合黑名单中IP地址的规则,所对应的操作规则为丢弃相应数据流。又如,请参阅表1,其显示为用于实现速率限制器功能中的预测规则和所对应的操作规则,其中,表1中的预测规则(Match)包含对数据流的预测规则表栏(flow)和状态的预测规则表栏(state),操作规则(Action)包括对数据流的操作规则表栏(flow)和状态的操作规则表栏(state)。
表1
藉由表1所描述的操作规则的类型,本申请所提供的操作规则包含对数据流的操作规则。所述对数据流的操作规则包括以下至少一种:对数据流执行编辑、转发、丢弃或延时处理的操作规则,对数据流执行重新提交的操作规则。
所述操作规则还包括与所述网络功能相关的状态的操作规则。该类操作规则包括但不限于:动态维护状态的操作规则,修改状态的操作规则。
以表1为例,表中第一条目的预测规则为符合响应数据流f[BR]=REF,对应的操作规则包括延时处理f[output]:=timer(Δt)规则和添加令牌信息tkn:=token;表中第二条目的预测规则包括符合响应数据流f[BR]=REF和数据流长度小于等于令牌信息f[size]≤tkn,对应的操作规则包括转发数据流f[output]:=IFACE和修改令牌信息tkn:=tkn-f[size];表中第三条目的预测规则包括符合响应数据流f[BR]=REF和数据流长度大于令牌信息f[size]>tkn,对应的操作规则包括丢弃数据流f[output]:=∈。
以表2为例,其显示为防火墙功能中的预测规则和所对应的操作规则。其中,第一条目中的预测规则为数据流符合配置列表(f∈OK),对应的操作规则包括转发数据流f[output]:=IFACE和维护已转发的数据流的地址表seen:=seen∪{f};第二条目中预测规则包括数据流属于所维护的地址表f∈seen,对应的操作规则为转发数据流f[output]:=IFACE;第二条目中预测规则包括数据流不属于所维护的地址表对应的操作规则为丢弃数据流f[output]:=∈。
表2
为了简化预测规则的重复描述,上述示例中用一些符号(如*)表示与前一条目中对应表栏相重复的预测规则或操作规则,用另一些符号(如-)表示无需考虑相应表栏中的预测规则或相应表栏无可执行的操作。上述通配符仅为举例,而非对本申请的限制。
当所述开发系统获取包含预测规则和所对应的操作规则的条目后,执行步骤S120。
在步骤S120中,将所获取的预测规则及其操作规则按照预设的描述规则予以保存。其中,所述描述规则用于描述同一条目中多个预测规则之间的层级关系、同一条目中多个操作操作规则之间的执行顺序、以及同一条目中预测规则和操作规则的对应关系等。例如,所述描述规则包括但不限于表格的表栏形式和表栏内容、文本的段落格式和文字注释、有向图的图文描述和连接顺序等。
在一些实施方式中,开发系统按照所述描述规则将所获取的预测规则及其操作规则保存成可被编辑器复用编辑的源文件。例如,自数据库获取包含预测规则及其操作规则的数据对象列表,所述开发系统以数据对象列表中的每个数据对象为条目,按照表格的表栏形式将所获取的每个数据对象对应写入表格中表示一个条目的表栏中,并按照所获取的数据对象列表中数据对象的顺序,将各数据对象依次写入表格中,由此得到可被编辑器复用编辑的源文件。又如,自文件存储服务器获取包含预测规则及其操作规则的文本文件,所述开发系统按照所述文本文件中的描述规则,将文本文件中预测规则及其操作规则以条目形式重构各条目的描述顺序,并保存成可被编辑器复用编辑的源文件。再如,自编辑器获取包含预测规则及其操作规则的文本形式(或有向图形式、或表格形式),所述开发系统按照所述文本形式(或有向图形式、或表格形式)中的描述规则,将文本形式(或有向图形式、或表格形式)保存成可被编辑器复用编辑的源文件。
所获取的预测规则和所对应的操作规则按照网络功能被分组成多个文本片段(或多个独立的表格形式、或多个无连接关系的有向图形式),所述开发系统按照预设的描述规则将各分组的预测规则和所对应的操作规则衔接在一起。其中,所述预设的描述规则包括但不限于:将各分组中的初始状态等信息进行统一处理的规则,和/或根据各分组的变量名称重构各变量的规则。例如,不同分组中包含相同名称且不同定义的变量,按照预设的描述规则将各变量的定义进行哈希处理,再将哈希处理后的变量以及各分组中的其他变量统一设置成头信息,再将各分组中的预测规则和操作规则进行衔接处理,得到包含所述头信息和衔接后多个条目的源文件。
在另一些实施方式中,所述步骤S120包括:按照所述描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理,以得到由程序语言描述的程序文件。换言之,所述开发系统还可以将所得到的源文件、编辑器所编辑的条目和初始状态、或者按照描述规则所描述的预测规则及其操作规则的文本文件(或表格文件、或有向图文件),转换成由程序语言描述的程序文件。其中,所述程序语言可表示为领域专用语言或编程语言,例如,所述程序语言为C语言、C++语言、.NET语言、或DSL等,或者为JAVA、Python等可解释型语言。
在一些示例中,所述开发系统获取了初始状态信息,按照初始状态的描述规则,将初始状态转换为变量定义的程序语句。例如,所获取的初始状态为:Config:DENY={r1,r2},对应的转换成C++语言为:
在另一些示例中,所述开发系统获取了初始状态信息,描述规则表达的转换逻辑为:预测规则为条件语句中的条件,操作规则为相应条件下执行的动作,将所获取的预测规则和所对应的操作规则转换为用程序语言描述的条件-执行语句。例如,所获取的预测规则为f[TTL]==0,对应的操作规则为f[output]:=∈,则按照上述转换逻辑,转换成C++语言为:if(TTL==0){f[output]=DROP;}。又如,预测规则为f[BR]=INIT,所对应的操作规则为f[TTL]--,f[BR]=X,f[output]=resubmit,则按照预测规则所描述的描述规则,对f[BR]初始化的转换逻辑,将上述预测规则和操作规则转换成C++语言为:if(f[BR]==INIT){f[TTL]--;f[BR]=X;f[output]=RESUBMIT};
利用操作规则中的重新提交操作(如resubmit、或timer(*)),一个完整的网络功能可由多个条目逐条执行而实现。在又一些示例中,所述开发系统可按照所述转换逻辑逐条地将各条目中的预测规则处理为条件语句,将所对应的操作规则处理为所述条件语句下的操作语句。例如,所获取的多个条目如表3所示:
表3
Match | Action |
f[BR]=INIT | f[TTL]--,f[BR]=X,f[output]=resubmit |
f[BR]=X∧f[TTL]==0 | f[output]=∈ |
f[BR]=X∧f[TTL]≠0 | f[output]=IFACE |
按照表格所提供的转换逻辑,将表格转换成C++语言如下:
为了简化由程序语言描述的程序文件,在又一些示例中,所述开发系统不仅按照每个条目中预测规则和操作规则的转换逻辑进行处理,还按照多个条目的上下文所表达的转换逻辑将多个条目的语句进行优化处理。其中,多个条目的上下文所表达的转换逻辑包括但不限于以下至少一种:1)根据通配符而确定的多个条目的转换逻辑,例如,根据当前条目中的通配符*而确定当前预测规则中包含前一条目中对应的预测规则;2)依据多个条目中预测规则是否具有互斥性而确定的多个条目的转换逻辑,例如,依据两个条目中的预测规则中分别包含f∈OK和确定该两个条目具有互斥性;3)基于同一状态而确定的多个条目的转换逻辑,例如,初始状态为OK∈{r1,r2,…},一个条目中的预测规则包括f∈OK,另一个条目中的操作规则包括OK:=OK∪{f},根据状态OK在多个条目中的转移确定相应多个条目的转换逻辑。上述各转换逻辑可根据实际设计网络功能的条目进行组合,在此不再一一列举,技术人员可根据上述上下文所表达的转换逻辑而改进、叠加、删减而得到的转换逻辑应被视为基于本申请技术思想下的具体示例。
按照所确定的转换逻辑对多个条目的语句进行优化处理的方式包括:按照多个条目的上下文所表达的转换逻辑将多个条目依次序处理、融合处理、跳过处理和重新排序处理中的至少一种。
其中,所述依次序处理举例包括依条目顺序将各条目转换为条件1-操作1-条件2-操作2的程序语句。例如,表3提供了具有互斥性的两个条目,分别为:包括预测规则f[BR]=X∧f[TTL]==0的第二条目,和包括预测规则f[BR]=X∧f[TTL]≠0的第三条目就有互斥性,则对应转换成C++语句为:
if(f[BR]==X&&TTL==0){f[output]=DROP;}
else if(f[BR]==X&&TTL!=0){f[output]=PASS;}
所述融合处理包括但不限于以下至少一种:将冗余的条目予以合并、利用循环体将多个条目进行迭代式的融合处理、或将多个条件-操作的程序语句进行嵌套式处理、利用抽象-实例的关系将多个状态进行融合处理等。例如,按照<sip,dip,sport,dport,proto>的粒度将包含不同粒度的状态进行哈希处理以得到由哈希值所表示的对象,将各预测规则和操作规则中的状态作为对象的实例以有效防止不同状态间的错误修改。又如,按照多个条目中对状态的修改操作规则和基于状态的预测规则,开发系统依据循环体对各条目进行迭代的融合处理。例如,请参阅表4,其显示为开发系统所获取的用于实现流量监控器的预测规则f∈NET和操作规则pass和cnt++,以及初始状态NET={sip:INTRTNEL_NET}
表4
则开发系统将其转换为C++语言表示如下:
所述跳过处理包括但不限于:将无效的条目予以删除、按照操作规则不按照条目顺序执行的操作处理等。例如,连续的多个条目中包含若干条目与其他条目之间无顺序、层级等关联关系,则开发系统跳过无关联的条目,并按照有关联条目的上下文将关联条目转换成由程序语言描述的程序片段。
所述重新排序处理包括但不限于:按照对数据流的预测规则对各条目进行重新排序以构建可并行执行的线程等。例如,按照对数据流的不同预测规则分组各条目,并构建各分组间的通信线程,由此提高NF的数据处理性能。
需要说明的是,上述各示例仅示意性地描述按照多个条目的上下文所表达的转换逻辑对多个条目进行优化处理的方式,而非对优化处理的限制性描述。事实上,依据所获取的预测规则和所对应的操作规则,以及各条目之间的上下文关联关系,开发系统可结合依次序处理、融合处理、跳过处理、重新排序处理等手段更精简地将各条目所表达的转换逻辑处理成程序语言描述的程序文件,从而有效减少因程序语言的强耦合性而导致在程序优化期间产生冗余程序。
按照所确定的转换逻辑对多个条目的语句进行优化处理的方式还包括:按照多个条目的上下文所表达的转换逻辑将各条目处理成状态机;为了优化程序语言中遍历条件-操作语句的效率,所述开发系统还可以利用程序语言描述状态机及对状态机的选择机制。例如,按照各条目中不同的对数据流的预测规则,将所获取的各条目分组处理成多个状态机,并构建对状态机的选择机制。其中,每个状态机按照分组中的各条目实现相应的网络功能模块。所述开发系统可采用状态机模式对相应的条目进行优化处理,例如按照各分组中多个条目的上下文所表达的转换逻辑构建分层的状态机模式、行为树状态机等。
本申请所提供的开发方法将获取的预测规则和操作规则按照上述任一种方式转换成由程序语言描述的程序文本并保存成程序文件的方式,解决了研发人员按照程序语言逻辑进行网络功能开发的强耦合性所带来的不易开发、维护、升级等问题。
请参阅图6,其显示为本申请网络功能的开发系统在一实施方式中的架构示意图。所述开发系统21包括交互模块211和处理模块212。
所述交互模块211用于自一数据源获取用于实现网络功能的预测规则和所对应的操作规则。其中,所述数据源包含用于存储预测规则和操作规则的源文件、或数据表。例如,数据源包括但不限于数据库或文件存储服务器。所述交互模块211从如数据库或文件存储服务器等数据源获取按照预设的描述规则保存的预测规则和所对应的操作规则。
所述数据源还包括用于显示及编辑预测规则和操作规则的编辑器。在一具体示例中,所述编辑器作为开发系统中的一部分且包括所述开发系统所在计算机设备中的软件和硬件。例如,所述编辑器包括显示单元、处理单元和存储单元。交互模块211自编辑器所提供的编辑界面获取用于实现网络功能的预测规则和所对应的操作规则。其中,研发人员通过在编辑界面上的操作设计所述预测规则和所对应的操作规则。所述交互模块211还基于研发人员在编辑界面上的导入操作,将包含所述预测规则和所对应的操作规则的源文件导入编辑器,以供研发人员对已创建的预测规则及操作规则进行重新编辑,并在编辑后,获取所述预测规则和所对应的操作规则。
研发人员可按照所述开发系统提供的格式将预测规则和操作规则编辑并保存成文件,存储在所述数据源中。所述交互模块211自所述数据源获取所述预测规则和操作规则。其中,所编辑的格式包含文本、表格和有向图中至少一种。
在一些实施方式中,所述交互模块211可获取数据源所提供的文本、表格和有向图中任一种源文件。例如,请参阅图3,其显示为包含预测规则和所对应的操作规则的文本示意图。其中,研发人员在编辑器、或者文本制作软件中,按照预设的初始化文本块(Basictypes andexpression)、预测规则文本块(Predicates)、操作规则文本块(Policies)和转换逻辑文本块(Model)的文本格式,开发网络功能并保存成文本文件,所述交互模块211自数据源获取所述文本文件。又如,请参阅图4,其显示为包含预测规则和所对应的操作规则的表格示意图。其中,研发人员在编辑器、或者表格制作软件中,按照配置表栏(Configuration)、预测规则表栏(Match)、操作规则表栏(Action),编开发网络功能并保存成表格文件,所述开发系统自数据源获取所述表格文件。再如,请参阅图5,其显示为包含预测规则和所对应的操作规则的有向图示意图。其中,研发人员在编辑器或作图软件中,通过选择栏中提供的路由图示、防火墙图示和速率限制器图示进行有向图连接操作,其中按照图示中所提供的各属性栏位填写对应描述初始状态、预测规则、操作规则等,所述开发系统自数据源获取带有属性信息和连接关系的有向图组合。
在另一些实施方式中,所述交互模块211自编辑器获取按照预设格式编辑的预测规则和所对应的操作规则。例如,所述交互模块211根据研发人员的操作,将按照前述方式生成的任一种源文件导入编辑器并再次编辑及保存时,获取编辑器中所编辑的各规则。
在此,所述网络功能包括但不限于以下至少一种:防火墙功能、限速功能、负载均衡功能、关键信息过滤功能、定制的网络功能、及其他基于NFV而产生的网络功能等。
为了便于研发人员选择所编辑的预测规则、操作规则和状态的描述,所述交互模块211中预设有辅助规则描述的语句、符号、运算符等资料库。其中,所提供的语句包括但不限于:转发语句、匹配语句、配置语句、延时操作语句、重新提交语句等,例如,延时操作的语句为timer(Δt),其中,Δt为可编辑的参数。所提供的符号包括但不限于:通配符、任意字符、批处理符号等,例如,利用*符号表示通配符。所提供的运算符包括但不限于:数学运算符号、逻辑运算符号等,例如,利用^符号表示逻辑与。
在此,所述预测规则用于描述为实现网络功能而设置的约束条件。例如,为实现网络功能中的禁止转发包含黑名单IP地址的数据流功能,所述预测规则包括判断数据流中IP地址是否归属预设的黑名单IP地址列表的规则等。又如,为实现网络功能中的速率限制功能,所述预测规则包括判断数据流的长度是否在预设长度之内的规则。再如,为实现网络功能中的数据流的传输协议统计功能,所述预测规则包括判断数据流的的协议类型的规则。
所述预测规则包括对数据流的预测规则,其用于定义所接收的数据流符合/不符合网络功能的条件。所述对数据流的预测规则包括面向数据流中至少一个特征位置的预测规则。其中,所述特征位置包括数据流中可预先确定的字符或字节位置。在一具体示例中,所述特征位置包括按照协议规范排列在数据流的包头和包尾中各字符或字节位置。其中,所述协议规范包括用于网络传输的国际协议规范、国家协议规范、和私有协议规范等。例如,所述特征位置包括但不限于:以太网信息、IP地址、端口、协议类型、校验信息、标识位等。其中所述标识位举例包括TTL(Time To Live生存时间值)等。对应地,所述预测规则用于描述按照网络功能而匹配特征位置的规则。所述特征位置还包括数据流中不能预先确定的字符或字节位置,在一具体示例中,预测规则描述了对数据流中数据内容进行匹配的规则,对应地,所述特征位置包括按照所述预测规则在数据流中匹配到的字符或字节位置。例如,预设规则包括数据流中所选中的字节匹配预设关键词的规则;对应地,所述特征位置为按照所述预测规则而遍历数据流期间当前被选中的字节位置。
另外,所述预测规则还包括与所述网络功能相关的状态的预测规则。其中,所述状态包括在实现一个复杂的网络功能时随同一数据流执行多次预测规则的变量信息,和/或在实现多个数据流的网络功能时各数据流共用的变量信息。所述状态包括但不限于:令牌信息、数据流的源地址和目的地址列表、计时信息、计数信息等。所述状态的初始状态可为默认状态,例如,认定统计计数的初始值为0。所述初始状态还可以自所述数据源获取,例如,所述交互模块211根据编辑器所提供的初始化文本块或配置表栏获取初始状态。所述预测规则用于定义包含状态的条件。例如,所述预测规则包括:基于定时器所提供的时间信息而限时传递数据流及限时不传递数据流的规则。又如,所述预测规则包括:所接收的数据流符合及不符合预设令牌信息的规则。再如,所述预测规则包括:所接收的数据流的源地址符合及不符合被维护的目的地址列表的规则。
在此,所述操作规则用于描述在符合相应预测规则下的NF模块所需执行的操作。每个预测规则和所对应的操作规则作为一个条目,一个网络功能中可包含一个或多个条目。根据网络功能的设计需要,每个条目中可仅包含一个预测规则和所对应的一个或多个操作规则;或者,每个条目中包含多个预测规则和符合所有预测规则而需执行的一个或多个操作规则。例如,在利用黑名单IP地址过滤数据流的功能中,预测规则为对所接收的数据流符合黑名单中IP地址的规则,所对应的操作规则为丢弃相应数据流。又如,请参阅表1,其显示为用于实现速率限制器功能中的预测规则和所对应的操作规则,其中,表1中的预测规则(Match)包含对数据流的预测规则表栏(flow)和状态的预测规则表栏(state),操作规则(Action)包括对数据流的操作规则表栏(flow)和状态的操作规则表栏(state)。
表1
藉由表1所描述的操作规则的类型,本申请所提供的操作规则包含对数据流的操作规则。所述对数据流的操作规则包括以下至少一种:对数据流执行编辑、转发、丢弃或延时处理的操作规则,对数据流执行重新提交的操作规则。
所述操作规则还包括与所述网络功能相关的状态的操作规则。该类操作规则包括但不限于:动态维护状态的操作规则,修改状态的操作规则。
以表1为例,表中第一条目的预测规则为符合响应数据流f[BR]=REF,对应的操作规则包括延时处理f[output]:=timer(Δt)规则和添加令牌信息tkn:=token;表中第二条目的预测规则包括符合响应数据流f[BR]=REF和数据流长度小于等于令牌信息f[size]≤tkn,对应的操作规则包括转发数据流f[output]:=IFACE和修改令牌信息tkn:=tkn-f[size];表中第三条目的预测规则包括符合响应数据流f[BR]=REF和数据流长度大于令牌信息f[size]>tkn,对应的操作规则包括丢弃数据流f[output]:=ε。
以表2为例,其显示为防火墙功能中的预测规则和所对应的操作规则。其中,第一条目中的预测规则为数据流符合配置列表(f∈OK),对应的操作规则包括转发数据流f[output]:=IFACE和维护已转发的数据流的地址表seen:=seen∪{f};第二条目中预测规则包括数据流属于所维护的地址表f∈seen,对应的操作规则为转发数据流f[output]:=IFACE;第二条目中预测规则包括数据流不属于所维护的地址表对应的操作规则为丢弃数据流f[output]:=∈。
表2
为了简化预测规则的重复描述,上述示例中用一些符号(如*)表示与前一条目中对应表栏相重复的预测规则或操作规则,用另一些符号(如-)表示无需考虑相应表栏中的预测规则或相应表栏无可执行的操作。上述通配符仅为举例,而非对本申请的限制。
当所述交互模块211获取包含预测规则和所对应的操作规则的条目后,处理模块212将所获取的预测规则及其操作规则按照预设的描述规则予以保存。其中,所述描述规则用于描述同一条目中多个预测规则之间的层级关系、同一条目中多个操作操作规则之间的执行顺序、以及同一条目中预测规则和操作规则的对应关系等。例如,所述描述规则包括但不限于表格的表栏形式和表栏内容、文本的段落格式和文字注释、有向图的图文描述和连接顺序等。
在一些实施方式中,处理模块212按照所述描述规则将所获取的预测规则及其操作规则保存成可被编辑器复用编辑的源文件。例如,自数据库获取包含预测规则及其操作规则的数据对象列表,所述处理模块212以数据对象列表中的每个数据对象为条目,按照表格的表栏形式将所获取的每个数据对象对应写入表格中表示一个条目的表栏中,并按照所获取的数据对象列表中数据对象的顺序,将各数据对象依次写入表格中,由此得到可被编辑器复用编辑的源文件。又如,自文件存储服务器获取包含预测规则及其操作规则的文本文件,所述处理模块212按照所述文本文件中的描述规则,将文本文件中预测规则及其操作规则以条目形式重构各条目的描述顺序,并保存成可被编辑器复用编辑的源文件。再如,自编辑器获取包含预测规则及其操作规则的文本形式(或有向图形式、或表格形式),所述处理模块212按照所述文本形式(或有向图形式、或表格形式)中的描述规则,将文本形式(或有向图形式、或表格形式)保存成可被编辑器复用编辑的源文件。
所获取的预测规则和所对应的操作规则按照网络功能被分组成多个文本片段(或多个独立的表格形式、或多个无连接关系的有向图形式),所述处理模块212按照预设的描述规则将各分组的预测规则和所对应的操作规则衔接在一起。其中,所述预设的描述规则包括但不限于:将各分组中的初始状态等信息进行统一处理的规则,和/或根据各分组的变量名称重构各变量的规则。例如,不同分组中包含相同名称且不同定义的变量,按照预设的描述规则将各变量的定义进行哈希处理,再将哈希处理后的变量以及各分组中的其他变量统一设置成头信息,再将各分组中的预测规则和操作规则进行衔接处理,得到包含所述头信息和衔接后多个条目的源文件。
在另一些实施方式中,所述步骤S120包括:按照所述描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理,以得到由程序语言描述的程序文件。换言之,所述处理模块212还可以将所得到的源文件、编辑器所编辑的条目和初始状态、或者按照描述规则所描述的预测规则及其操作规则的文本文件(或表格文件、或有向图文件),转换成由程序语言描述的程序文件。其中,所述程序语言可表示为领域专用语言或编程语言,例如,所述程序语言为C语言、C++语言、.NET语言、或DSL等,或者为JAVA、Python等可解释型语言。
在一些示例中,所述处理模块212获取了初始状态信息,按照初始状态的描述规则,将初始状态转换为变量定义的程序语句。例如,所获取的初始状态为:Config:DENY={r1,r2},对应的转换成C++语言为:
在另一些示例中,所述处理模块212获取了初始状态信息,描述规则表达的转换逻辑为:预测规则为条件语句中的条件,操作规则为相应条件下执行的动作,将所获取的预测规则和所对应的操作规则转换为用程序语言描述的条件-执行语句。例如,所获取的预测规则为f[TTL]==0,对应的操作规则为f[output]:=∈,则按照上述转换逻辑,转换成C++语言为:if(TTL==0){f[output]=DROP;}。又如,预测规则为f[BR]=INIT,所对应的操作规则为f[TTL]--,f[BR]=X,f[output]=resubmit,则按照预测规则所描述的描述规则,对f[BR]初始化的转换逻辑,将上述预测规则和操作规则转换成C++语言为:if(f[BR]==INIT){f[TTL]--;f[BR]=X;f[output]=RESUBMIT;}
利用操作规则中的重新提交操作(如resubmit、或timer(*)),一个完整的网络功能可由多个条目逐条执行而实现。在又一些示例中,所述处理模块212可按照所述转换逻辑逐条地将各条目中的预测规则处理为条件语句,将所对应的操作规则处理为所述条件语句下的操作语句。例如,所获取的多个条目如表3所示:
表3
Match | Action |
f[BR]=INIT | f[TTL]--,f[BR]=X,f[output]=resubmit |
f[BR]=X∧f[TTL]==0 | f[output]=∈ |
f[BR]=X∧f[TTL]≠0 | f[output]=IFACE |
按照表格所提供的转换逻辑,将表格转换成C++语言如下:
为了简化由程序语言描述的程序文件,在又一些示例中,所述处理模块212不仅按照每个条目中预测规则和操作规则的转换逻辑进行处理,还按照多个条目的上下文所表达的转换逻辑将多个条目的语句进行优化处理。其中,多个条目的上下文所表达的转换逻辑包括但不限于以下至少一种:1)根据通配符而确定的多个条目的转换逻辑,例如,根据当前条目中的通配符*而确定当前预测规则中包含前一条目中对应的预测规则;2)依据多个条目中预测规则是否具有互斥性而确定的多个条目的转换逻辑,例如,依据两个条目中的预测规则中分别包含f∈OK和确定该两个条目具有互斥性;3)基于同一状态而确定的多个条目的转换逻辑,例如,初始状态为OK∈{r1,r2,…},一个条目中的预测规则包括f∈OK,另一个条目中的操作规则包括OK:=OK∪{f},根据状态OK在多个条目中的转移确定相应多个条目的转换逻辑。上述各转换逻辑可根据实际设计网络功能的条目进行组合,在此不再一一列举,技术人员可根据上述上下文所表达的转换逻辑而改进、叠加、删减而得到的转换逻辑应被视为基于本申请技术思想下的具体示例。
按照所确定的转换逻辑对多个条目的语句进行优化处理的方式包括:按照多个条目的上下文所表达的转换逻辑将多个条目依次序处理、融合处理、跳过处理和重新排序处理中的至少一种。
其中,所述依次序处理举例包括依条目顺序将各条目转换为条件1-操作1-条件2-操作2的程序语句。例如,表3提供了具有互斥性的两个条目,分别为:包括预测规则f[BR]=X∧f[TTL]==0的第二条目,和包括预测规则f[BR]=X∧f[TTL]≠0的第三条目就有互斥性,则对应转换成C++语句为:
if(f[BR]==X&&TTL==0){f[output]=DROP;}
else if(f[BR]==X&&TTL!=0){f[output]=PASS;}
所述融合处理包括但不限于以下至少一种:将冗余的条目予以合并、利用循环体将多个条目进行迭代式的融合处理、或将多个条件-操作的程序语句进行嵌套式处理、利用抽象-实例的关系将多个状态进行融合处理等。例如,按照<sip,dip,sport,dport,proto>的粒度将包含不同粒度的状态进行哈希处理以得到由哈希值所表示的对象,将各预测规则和操作规则中的状态作为对象的实例以有效防止不同状态间的错误修改。又如,按照多个条目中对状态的修改操作规则和基于状态的预测规则,处理模块212依据循环体对各条目进行迭代的融合处理。例如,请参阅表4,其显示为处理模块212所获取的用于实现流量监控器的预测规则f∈NET和操作规则pass和cnt++,以及初始状态NET={sip:INTRTNEL_NET}
表4
则处理模块212将其转换为C++语言表示如下:
所述跳过处理包括但不限于:将无效的条目予以删除、按照操作规则不按照条目顺序执行的操作处理等。例如,连续的多个条目中包含若干条目与其他条目之间无顺序、层级等关联关系,则处理模块212跳过无关联的条目,并按照有关联条目的上下文将关联条目转换成由程序语言描述的程序片段。
所述重新排序处理包括但不限于:按照对数据流的预测规则对各条目进行重新排序以构建可并行执行的线程等。例如,按照对数据流的不同预测规则分组各条目,并构建各分组间的通信线程,由此提高NF的数据处理性能。
需要说明的是,上述各示例仅示意性地描述按照多个条目的上下文所表达的转换逻辑对多个条目进行优化处理的方式,而非对优化处理的限制性描述。事实上,依据所获取的预测规则和所对应的操作规则,以及各条目之间的上下文关联关系,处理模块212可结合依次序处理、融合处理、跳过处理、重新排序处理等手段更精简地将各条目所表达的转换逻辑处理成程序语言描述的程序文件,从而有效减少因程序语言的强耦合性而导致在程序优化期间产生冗余程序。
按照所确定的转换逻辑对多个条目的语句进行优化处理的方式还包括:按照多个条目的上下文所表达的转换逻辑将各条目处理成状态机;为了优化程序语言中遍历条件-操作语句的效率,所述处理模块212还可以利用程序语言描述状态机及对状态机的选择机制。例如,按照各条目中不同的对数据流的预测规则,将所获取的各条目分组处理成多个状态机,并构建对状态机的选择机制。其中,每个状态机按照分组中的各条目实现相应的网络功能模块。所述处理模块212可采用状态机模式对相应的条目进行优化处理,例如按照各分组中多个条目的上下文所表达的转换逻辑构建分层的状态机模式、行为树状态机等。
由于现有的网络功能虚拟化的程序受运行环境约束,因此,在功能开发时,需按照运行时所使用的硬件和软件环境进行程序开发,这使得网络功能中功能实现和运行环境无法有效解耦合。这限制了网络功能虚拟化在不同运行环境下的程序运行。为此,已知的做法在于为每种运行环境配置相应的网络功能程序,即根据不同运行环境所提供的程序库对同一种网络功能进行多次重复开发。
显然,上述方式对研发人员来说是冗余的、低效率的。为此,本申请提供一种编译方法,用以将按照本申请所提供的开发方法而保存的程序文件进行编译处理,得到能够在预设运行环境下运行的软件程序。即,所述程序文件是按照预设的用于执行预测规则和操作规则的转换逻辑,将所述预测规则和操作规则进行程序语言处理而得到的。或者,本申请所提供的编译方法可用于将利用其它方式开发而得的用于实现网络功能的程序文件进行编译处理,得到能够在预设运行环境下运行的软件程序。以C++语言描述的程序文件为例,所获取的程序文件为后缀.cpp的程序文件,编译后得到的可在运行环境中运行的软件程序为后缀.exe的软件程序。
请参阅图7,其显示为本申请的一种编译方法的流程图。所述编译方法主要由编译系统来执行。其中,所述编译系统包含安装在计算机设备上的软件和硬件。所述计算机设备可与开发系统所在计算机设备共用或单独配置。所述编译系统中预设有至少一种运行环境的程序库。所述编译系统通过执行以下步骤将所获取的仅描述了网络功能的程序文件编译成可在其中一种运行环境下运行的软件程序。其中,所述运行环境包括软件运行环境和硬件运行环境。所述软件运行环境包括但不限于操作系统或虚拟机;所述硬件运行环境包括但不限于处理器等。
其中,所述计算机设备包括存储单元、处理单元和接口单元。在此,所述存储单元、处理单元和接口单元的硬件结构可与前述开发系统所在计算机设备相同或相似,在此不再详述。不同之处在于,所述编译系统所在计算机设备中的存储单元存储有用于执行所述编译方法的程序以及对应至少一个运行环境的程序库,处理单元通过执行所述程序将程序文件与其中一种运行环境的程序库进行结合,得到可在相应运行环境下运行的软件程序。
在步骤S210中,获取用于实现网络功能的程序文件。在此,所述程序文件可由编译系统所提供的输入界面导入获得,例如,获取自一文件服务器,或本地存储单元。所述程序文件还可以获取自程序文件的编辑器。例如,所述程序文件由上述开发方法中的编辑器提供,研发人员点击编辑器中的编译按钮,开发系统将所述编辑器中编辑的初始状态、预测规则和操作规则转换成程序文件,并将所述程序文件提供给所述编译系统。当所述编译系统预设一种运行环境时,可通过执行步骤S230来对所获取的程序文件进行编译处理。
当所述编译系统包含多种运行环境时,所述编译方法还包括步骤S220。
在步骤S220中,自一数据源获取所述运行环境信息。在此,为区别于开发方法中所描述的数据源,将所述开发方法中所提及的数据源称为第一数据源,所述编译方法中所提及的数据源称为的第二数据源。所述第一数据源还可以与第二数据源为同一数据源;也可以分属不同数据源。所述运行环境信息可藉由多个单独的运行环境选项展示给用户,或藉由多个分组配置的运行环境选项展示给用户。所述步骤S220包括基于所述第二数据源所提供的运行环境选项确定相应的运行环境信息的步骤。
例如,请参阅图8,其显示为在编辑器上显示运行环境选项的一种实施方式的示意图。其中,所述第二数据源为一编辑器,其按照软件和硬件分类显示了各分类中可提供的运行环境选项,用户分别勾选对应软件的各运行环境选项,以及对应硬件的各运行环境选项并提交给编译系统。所述编译系统自所述编辑器获取相应的运行环境信息。在确定了运行环境信息后,执行步骤S230。
又如,请参阅图9,其显示为在编辑器上显示的运行环境选项的另一种实施方式的示意图。所述第二数据源为一编辑器,其按照分组配置的软件和硬件提供分组运行环境选项,用户通过勾选相应分组并提交给编译系统。所述编译系统自所述编辑器获取相应的运行环境信息。在确定了运行环境信息后,执行步骤S230。
在步骤S230中,基于待运行所述程序文件的网络模块的运行环境信息,将所述程序文件编译成可在相应运行环境下执行的软件程序。
在此,编译系统中预先配置对应所确定的运行环境信息的程序库和编译核,编译系统通过为所述程序文件添加配置文件、适配地修改程序文件、和基于所确定运行环境信息执行命令行中的至少一种,对程序文件进行预处理并调用相应的编译核进行编译处理,得到可由配置有相应运行环境的网络设备执行的软件程序。
在一些实施方式中,所述编译系统中预设有基于各运行环境信息选项而配置的编译器,编译系统按照所确定的运行环境信息配置编译环境;以及选用配置有所述运行环境的编译器,对所述程序文件进行编译并得到相应的软件程序。在一具体示例中,所述编译系统按照所确定的运行环境信息为程序文件配置配置文件,例如,所述编译系统按照运行环境信息在配置文件中添加需启动的编译器,以及编译器运行所用到的命令行参数等,并按照配置文件调用相应的编译器对所述程序文件进行编译操作。其中,所述编译器内置有基于运行环境所对应的程序库对程序文件进行预处理的功能,使得程序文件中的功能与运行环境相耦接。例如,所述编译器预先配置的程序库中的程序接口和网络功能的程序接口的应关系,按照所述对应关系将程序文件中的程序接口连接到程序库中的相应程序接口,由此藉由程序库中更优化的程序对程序文件进行调整。又如,所述编译器按照配置文件中的配置信息在程序文件中添加指定硬件(如指定处理器)运行的程序,并按照所指定的硬件将程序文件编译成软件程序。
在另一些实施方式中,所述步骤S230包括以下步骤:按照预设的所述运行环境信息,将所述程序文件进行预处理;以及将预处理后的程序文件编译成可在相应运行环境下执行的软件程序。
在此,所述编译系统可预置供应商提供的多个编译器以及各编译器所对应的程序库,根据所获取的运行环境信息确定相应的编译器,并按照相应编译器可识别的程序语句对所述程序文件进行预处理。其中,所述预处理包括但不限于以下至少一种:按照预设的所述运行环境信息,在所述程序文件中进行增加、删除或修改操作。在一些示例中,所述编译系统按照运行环境信息中的参数构建程序片段,并植入所述程序文件中。例如,所述编译系统根据运行环境信息中的GPU参数,在程序文件中添加使用GPU执行程序的语句。在又一些示例中,所述编译系统按照相应编译器所提供的程序库对所述程序文件进行增加、删除和修改操作中的至少一种。例如,所述编译系统预设各编译器所对应的程序库中各程序文件与所获取的程序文件所引用的程序库中各程序文件之间的对应关系,根据所述对应关系将所获取的程序文件中的头文件、接口文件等进行替换、整合等。
接着,所述编译系统将预处理后的程序文件交由所确定的编译器进行编译,得到可在相应运行环境下执行的软件程序。
按照本申请所述编译方法得到的软件程序可直接配置到相应运行环境的网络设备上运行,大大降低了研发人员基于运行环境的重复开发网络功能。
请参阅图10,其显示为本申请的编译系统在一实施方式中的架构示意图。所述编译系统31包括交互模块311和编译处理模块312。
所述交互模块311用于获取用于实现网络功能的程序文件。在此,所述程序文件可由编译系统31所提供的输入界面导入获得,例如,获取自一文件服务器,或本地存储单元。所述程序文件还可以获取自程序文件的编辑器。例如,所述程序文件由上述开发方法中的编辑器提供,研发人员点击编辑器中的编译按钮,开发系统将所述编辑器中编辑的初始状态、预测规则和操作规则转换成程序文件,并将所述程序文件提供给所述交互模块311。当所述交互模块311预设一种运行环境时,可启动编译处理模块312来对所获取的程序文件进行编译处理。
当所述编译系统31包含多种运行环境时,所述交互模块311还用于自一数据源获取所述运行环境信息。在此,为区别于开发系统中所描述的数据源,将所述开发系统中所提及的数据源称为第一数据源,所述编译系统31中所提及的数据源称为的第二数据源。所述第一数据源还可以与第二数据源为同一数据源;也可以分属不同数据源。其中,所述第二数据源可为编译系统31中的一部分。所述运行环境信息可藉由多个单独的运行环境选项展示给用户,或藉由多个分组配置的运行环境选项展示给用户。所述交互模块311基于所述第二数据源所提供的运行环境选项确定相应的运行环境信息的步骤。
例如,请参阅图8,其显示为在编辑器上显示运行环境选项的一种实施方式的示意图。其中,所述第二数据源为一编辑器,其按照软件和硬件分类显示了各分类中可提供的运行环境选项,用户分别勾选对应软件的各运行环境选项,以及对应硬件的各运行环境选项并提交给编译系统31。所述编译系统31自所述编辑器获取相应的运行环境信息。在确定了运行环境信息后,启动编译处理模块312。
又如,请参阅图9,其显示为在编辑器上显示的运行环境选项的另一种实施方式的示意图。所述第二数据源为一编辑器,其按照分组配置的软件和硬件提供分组运行环境选项,用户通过勾选相应分组并提交给编译系统31。所述编译系统31自所述编辑器获取相应的运行环境信息。在确定了运行环境信息后,启动编译处理模块312。
所述编译处理模块312用于基于待运行所述程序文件的网络模块的运行环境信息,将所述程序文件编译成可在相应运行环境下执行的软件程序。
在此,编译处理模块312中预先配置对应所确定的运行环境信息的程序库和编译核,编译处理模块312通过为所述程序文件添加配置文件、适配地修改程序文件、和基于所确定运行环境信息执行命令行中的至少一种,对程序文件进行预处理并调用相应的编译核进行编译处理,得到可由配置有相应运行环境的网络设备执行的软件程序。
在一些实施方式中,所述编译处理模块312中预设有基于各运行环境信息选项而配置的编译器,编译处理模块312按照所确定的运行环境信息配置编译环境;以及选用配置有所述运行环境的编译器,对所述程序文件进行编译并得到相应的软件程序。在一具体示例中,所述编译处理模块312按照所确定的运行环境信息为程序文件配置配置文件,例如,所述编译处理模块312按照运行环境信息在配置文件中添加需启动的编译器,以及编译器运行所用到的命令行参数等,并按照配置文件调用相应的编译器对所述程序文件进行编译操作。其中,所述编译器内置有基于运行环境所对应的程序库对程序文件进行预处理的功能,使得程序文件中的功能与运行环境相耦接。例如,所述编译器预先配置的程序库中的程序接口和网络功能的程序接口的应关系,按照所述对应关系将程序文件中的程序接口连接到程序库中的相应程序接口,由此藉由程序库中更优化的程序对程序文件进行调整。又如,所述编译器按照配置文件中的配置信息在程序文件中添加指定硬件(如指定处理器)运行的程序,并按照所指定的硬件将程序文件编译成软件程序。
在另一些实施方式中,所述编译处理模块312还按照预设的所述运行环境信息,将所述程序文件进行预处理;以及将预处理后的程序文件编译成可在相应运行环境下执行的软件程序。
在此,所述编译处理模块312可预置供应商提供的多个编译器以及各编译器所对应的程序库,根据所获取的运行环境信息确定相应的编译器,并按照相应编译器可识别的程序语句对所述程序文件进行预处理。其中,所述预处理包括但不限于以下至少一种:按照预设的所述运行环境信息,在所述程序文件中进行增加、删除或修改操作。在一些示例中,所述编译处理模块312按照运行环境信息中的参数构建程序片段,并植入所述程序文件中。例如,所述编译处理模块312根据运行环境信息中的GPU参数,在程序文件中添加使用GPU执行程序的语句。在又一些示例中,所述编译处理模块312按照相应编译器所提供的程序库对所述程序文件进行增加、删除和修改操作中的至少一种。例如,所述编译处理模块312预设各编译器所对应的程序库中各程序文件与所获取的程序文件所引用的程序库中各程序文件之间的对应关系,根据所述对应关系将所获取的程序文件中的头文件、接口文件等进行替换、整合等。
接着,所述编译处理模块312将预处理后的程序文件交由所确定的编译器进行编译,得到可在相应运行环境下执行的软件程序。
本申请还提供一种开发方法,用以将来自于数据源的预测规则和所对应的操作规则、初始状态等,按照描述规则所表达的转换逻辑进行程序文件处理和编译,得到可在指定运行环境下执行的软件程序。
请参阅图11,其显示为开发方法在一实施方式中的流程图。所述开发方法由开发系统来执行。所述开发系统包含计算机设备的软件和硬件。所述计算机设备的结构可与图1所示的结构及其描述相同或相似,在此不再详述。
在步骤S310中,自一数据源获取用于实现网络功能的预测规则和所对应的操作规则;其中,所述预测规则包含对数据流的预测规则、和/或与所述网络功能相关的状态的预测规则,所述操作规则包含对所述数据流的操作规则、和/或与所述网络功能相关的状态的操作规则。
需要说明的是,步骤S310所执行的具体方式与图2中步骤S110中的执行过程相同或相似,在此不再详述。
在步骤S320中,按照预设的描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理,以得到由程序语言描述的程序文件。
需要说明的是,步骤S320所执行的具体方式与图2中步骤S120中将所述预测规则和操作规则进行处理的执行过程相同或相似,在此不再详述。
在步骤S330中,将所述程序文件编译成可在预确定的运行环境下执行的软件程序。其中,在一种实施方式中,所述程序文件由解释型语言描述,其中,所述解释型语言包括但不限于:Python、JavaScript、Perl等。在一具体示例中,所述开发系统可基于解释所述程序文件的解释器所支持的多种运行环境,将所述程序文件编译成可由不同运行环境的运行时识别的软件程序。在又一具体示例中,将所述程序文件保存在配置有解释器的网络设备中,在运行所述程序文件时,藉由网络设备指示解释器将其解释为可在该网络设备所提供的运行环境下予以执行的软件程序。
在另一种实施方式中,所述步骤S320可藉由图7所示的步骤S220所提供的方式得到软件程序。在此不再详述。
请参阅图12,其显示为一种开发系统的架构示意图。所述开发系统41包括:交互模块411、处理模块412和编译模块413。
所述交互模块411自一数据源获取用于实现网络功能的预测规则和所对应的操作规则;其中,所述预测规则包含对数据流的预测规则、和/或与所述网络功能相关的状态的预测规则,所述操作规则包含对所述数据流的操作规则、和/或与所述网络功能相关的状态的操作规则。
需要说明的是,所述交互模块411所执行的具体方式与图6中交互模块211中的执行过程相同或相似,在此不再详述。
处理模块412用于按照预设的描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理,以得到由程序语言描述的程序文件。
需要说明的是,处理模块412所执行的具体方式与图6中处理模块212中将所述预测规则和操作规则进行处理的执行过程相同或相似,在此不再详述。
编译模块413用于将所述程序文件编译成可在预确定的运行环境下执行的软件程序。其中,在一种实施方式中,所述程序文件由解释型语言描述,其中,所述解释型语言包括但不限于:Python、JavaScript、Perl等。在一具体示例中,所述编译模块413可基于解释所述程序文件的解释器所支持的多种运行环境,将所述程序文件编译成可由不同运行环境的运行时识别的软件程序。在又一具体示例中,将所述程序文件保存在配置有解释器的网络设备中,在运行所述程序文件时,藉由网络设备指示解释器将其解释为可在该网络设备所提供的运行环境下予以执行的软件程序。
在另一种实施方式中,所述编译模块413可藉由图10所示的编译处理模块312所提供的方式得到软件程序。在此不再详述。
请参阅图13,其显示为藉由图11和图12所述的开发方案操作编辑器生成的各种文件的示意图,本申请提供的开发方法的执行过程举例如下:
开发系统中的编辑器提供一编辑界面,在编辑界面中可包含工具栏,用以提供包含预测规则、操作规则、描述规则、初始状态等图文信息,在编辑界面中还包括主编辑栏,用以展示研发人员所输入的预测规则、操作规则、描述规则、初始状态等,以及,在所述编辑界面上还提供源文件的保存选项A1和源文件导入选项A2。例如,在主编辑栏中研发人员采用文本形式分别输入配置初始状态的文字块、预测规则的文字块、操作规则的文字块和用于描述预测规则和操作规则之间对应关系的描述规则的文字块,当监测到保存选项A1被选中的操作时,开发系统将所获取的文字块依次保存成文本文件。当按照导入选项A2的引导向编辑器导入源文件时,在主编辑栏中依次展示源文件中的文字块以供研发人员编辑。
在所述编辑界面上还提供程序文件的转换选项A3。当监测到转换选项A3被选中的操作时,开发系统依据初始状态的文字块配置各初始状态,以及按照描述规则对预测规则和操作规则进行处理以得到由程序语言描述的程序文件。例如,开发系统将基于数据流不同粒度而设置的初始状态集中转换成基于哈希匹配的对象,以及利用对象-实例方式描述预测规则和操作规则中与状态相关的部分,又基于描述规则所表达的转换逻辑对预测规则和操作规则进行依次处理、融合处理、重新排序处理和跳转处理等,以得到用程序语言描述的通信控制线程的程序片段、网络功能的程序片段、引入执行网络功能中具体逻辑执行所需的头文件程序片段等,并将所得到的程序保存成程序文件。
在所述编辑界面上还提供程序文件的编译选项A4。当监测到编译选项A4被选中的操作时,所述编辑界面还提供运行环境选项的选择界面,根据所述选择界面所提供的运行环境选项,开发系统对程序文件进行预处理,再将预处理后的程序文件交由基于运行环境选项所确定的编译器,并对程序文件进行编译处理得到可在相应运行环境的网络设备中执行的软件程序。例如,开发系统中预设有对应运行环境选项的多个编译器和多个程序库,按照所获取的运行环境选项中的硬件参数,生成并执行命令行参数以在所述程序文件中添加依据命令行参数执行软件程序的语句;以及,按照所获取的运行环境选项中的软件运行环境信息及所对应的程序库,将程序文件中头信息进行修改、添加等处理;再将处理后的程序文件交由相应编译器进行编译,得到可在相应运行环境下执行的软件程序。
需要说明的是,上述过程仅为举例而非对本申请的限制,事实上,依据前述所举例的各种示例的组合,可构建但不限于构建以下的网络功能开发方案:在主编辑栏中输入表格形式、有向图形式的预测规则和操作规则;将主编辑栏中所编辑的各规则、状态等信息保存成不同于编辑栏中所展示形式的源文件;将源文件转换成由解释型语言描述的程序文件;将程序文件直接配置到包含解释器的网络设备上,由网络设备运行所述程序文件时对网络功能进行解释和执行。由此可见,基于本申请所提供的开发及编译思想而设计的具体技术方案还可列举数种,在此不逐一详述。
请参阅图14,其显示为本申请的计算机设备一实施例的结构示意图。如图所示,本实施例提供的计算机设备5主要包括存储器51、一个或多个处理器52、以及存储于所述存储器51中的一个或多个程序,其中,存储器51存储执行指令,当计算机设备5运行时,处理器52与存储器51之间通信。
其中,所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行指令,所述一个或多个处理器执行所述执行指令使得所述电子设备执行上述的网络功能的开发方法,即所述处理器52执行执行指令使得计算机设备5执行如图1所示的方法,藉此可以通过模块化开发的方式来灵活配置复杂的网络功能和提高开发效率。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
本申请再提供一种计算机可读写存储介质,其上存储有用于网络功能开发的计算机程序,所述存储有用于网络功能开发的计算机程序被处理器执行时实现上述网络功能开发方法的步骤,即图1中所述的步骤。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
于本申请提供的实施例中,所述计算机可读写存储介质可以包括只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁存储设备、闪存、U盘、移动硬盘、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。另外,任何连接都可以适当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或者诸如红外线、无线电和微波之类的无线技术,从网站、服务器或其它远程源发送的,则所述同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线电和微波之类的无线技术包括在所述介质的定义中。然而,应当理解的是,计算机可读写存储介质和数据存储介质不包括连接、载波、信号或者其它暂时性介质,而是旨在针对于非暂时性、有形的存储介质。如申请中所使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。
综上所述,本申请利用数据源获取按照描述规则描述的状态、预测规则和操作规则,并生成由程序语言描述的程序文件,进而对程序文件编译后得到软件程序,由于仅按照网络功能描述所涉及的状态、预测规则和操作规则,因而极大降低了开发网络功能的开发难度;另外,由本申请所提供的方案将所获取的状态、预测规则和操作规则等转换成程序语言,有效减少了因人为逻辑错误而产生的缺陷;此外,由本申请所提供的方案对所产生的仅用于实现网络功能的程序文件进行编译器适配处理,有效地将运行环境与功能研发相分离,减少程序员的重复开发工作量。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (28)
1.一种网络功能的开发方法,其特征在于,包括:
自一数据源获取运行环境信息、与所述网络功能相关的初始状态、以及用于实现网络功能的预测规则和所对应的操作规则的文本、表格、或/及有向图;其中,所述预测规则包含对数据流的预测规则、和/或与所述网络功能相关的状态的预测规则,所述操作规则包含对所述数据流的操作规则、和/或与所述网络功能相关的状态的操作规则;所述数据源包括用于显示及编辑预测规则和操作规则的编辑器,所述编辑器内导入有包含所述预测规则和所对应的操作规则的源文件;
按照预设的描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理,以得到由程序语言描述的程序文件;其中,所述描述规则用于描述同一条目中多个预测规则之间的层级关系、同一条目中多个操作操作规则之间的执行顺序、以及同一条目中预测规则和操作规则的对应关系;所述程序文件为可被所述编辑器复用编辑的源文件;
将所述程序文件编译成可在预确定的运行环境下执行的软件程序;所述运行环境包括软件运行环境和硬件运行环境。
2.根据权利要求1所述的网络功能的开发方法,其特征在于,所述数据流的预测规则包含:面向数据流中至少一个特征位置的预测规则。
3.根据权利要求1所述的网络功能的开发方法,其特征在于,所述对数据流的操作规则包括以下至少一种:对数据流执行编辑、转发、丢弃或延时处理的操作规则,对数据流执行重新提交的操作规则。
4.根据权利要求1所述的网络功能的开发方法,其特征在于,以所述预测规则和所对应的操作规则为条目,所述按照预设的描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理的步骤包括:
按照所述转换逻辑逐条地将各条目中的预测规则处理为条件语句,将所对应的操作规则处理为所述条件语句下的操作语句。
5.根据权利要求4所述的网络功能的开发方法,其特征在于,所述按照所述转换逻辑逐条地将各条目中的预测规则处理为条件语句,将所对应的操作规则处理为所述条件语句下的操作语句的步骤包括:按照多个条目的上下文所表达的转换逻辑将多个条目的语句进行优化处理。
6.根据权利要求5所述的网络功能的开发方法,其特征在于,所述按照多个条目的上下文所表达的转换逻辑将多个条目的语句进行优化处理的步骤包括以下任一种:
按照多个条目的上下文所表达的转换逻辑将各条目处理成状态机;
按照多个条目的上下文所表达的转换逻辑将多个条目依次序处理、融合处理、跳过处理和重新排序处理中的至少一种。
7.根据权利要求4所述的网络功能的开发方法,其特征在于,所述将预测规则和操作规则进行处理的步骤包括:将所述预测规则和操作规则处理成用领域专用语言或编程语言描述的程序文件。
8.根据权利要求1所述的网络功能的开发方法,其特征在于,所述将程序文件编译成可在预确定的运行环境下执行的软件程序的步骤包括:
基于待运行所述程序文件的网络模块的运行环境信息,将所述程序文件编译成可在相应运行环境下执行的软件程序。
9.根据权利要求1所述的网络功能的开发方法,其特征在于,所述自一数据源获取所述运行环境信息的步骤包括:基于所述数据源所提供的运行环境选项确定相应的运行环境信息。
10.根据权利要求8所述的网络功能的开发方法,其特征在于,所述基于待运行所述程序文件的网络模块的运行环境信息,将所述程序文件编译成可在相应运行环境下执行的软件程序的步骤包括:按照所述运行环境信息配置编译环境;以及选用配置有所述运行环境的编译器,对所述程序文件进行编译并得到相应的软件程序。
11.根据权利要求8所述的网络功能的开发方法,其特征在于,所述基于待运行程序文件的网络模块的运行环境信息,将所述程序文件编译成可在相应运行环境下执行的软件程序的步骤包括:
按照预设的所述运行环境信息,将所述程序文件进行预处理;
将预处理后的程序文件编译成可在相应运行环境下执行的软件程序。
12.根据权利要求11所述的网络功能的开发方法,其特征在于,所述按照预设的所述运行环境信息,将所述程序文件进行预处理的步骤包括以下至少一种:按照预设的所述运行环境信息,在所述程序文件中进行增加、删除或修改操作。
13.根据权利要求1所述的网络功能的开发方法,其特征在于,所述程序文件用解释型语言描述,所述将程序文件编译成可在预确定的运行环境下执行的软件程序包括:将所述程序文件编译成可由不同运行环境的运行时识别的软件程序。
14.一种网络功能的开发系统,其特征在于,包括:
交互模块,用于自一数据源获取运行环境信息、与所述网络功能相关的初始状态、以及用于实现网络功能的预测规则和所对应的操作规则的文本、表格、或/及有向图;其中,所述预测规则包含对数据流的预测规则、和/或与所述网络功能相关的状态的预测规则,所述操作规则包含对所述数据流的操作规则、和/或与所述网络功能相关的状态的操作规则;所述数据源包括用于显示及编辑预测规则和操作规则的编辑器,所述编辑器内导入有包含所述预测规则和所对应的操作规则的源文件;
处理模块,用于按照预设的描述规则所表达的转换逻辑,将所述预测规则和操作规则进行处理,以得到由程序语言描述的程序文件;其中,所述描述规则用于描述同一条目中多个预测规则之间的层级关系、同一条目中多个操作操作规则之间的执行顺序、以及同一条目中预测规则和操作规则的对应关系;所述程序文件为可被所述编辑器复用编辑的源文件;
编译模块,用于将所述程序文件编译成可在预确定的运行环境下执行的软件程序;所述运行环境包括软件运行环境和硬件运行环境。
15.根据权利要求14所述的网络功能的开发系统,其特征在于,所述数据流的预测规则包含:面向数据流中至少一个特征位置的预测规则。
16.根据权利要求14所述的网络功能的开发系统,其特征在于,所述对数据流的操作规则包括以下至少一种:对数据流执行编辑、转发、丢弃或延时处理的操作规则,对数据流执行重新提交的操作规则。
17.根据权利要求14所述的网络功能的开发系统,其特征在于,以所述预测规则和所对应的操作规则为条目,所述处理模块用于按照所述转换逻辑逐条地将各条目中的预测规则处理为条件语句,将所对应的操作规则处理为所述条件语句下的操作语句。
18.根据权利要求17所述的网络功能的开发系统,其特征在于,所述处理模块用于按照多个条目的上下文所表达的转换逻辑将多个条目的语句进行优化处理。
19.根据权利要求18所述的网络功能的开发系统,其特征在于,所述处理模块用于执行以下任一步骤:
按照多个条目的上下文所表达的转换逻辑将各条目处理成状态机;
按照多个条目的上下文所表达的转换逻辑将多个条目依次序处理、融合处理、跳过处理和重新排序处理中的至少一种。
20.根据权利要求14所述的网络功能的开发系统,其特征在于,所述处理模块用于将所述预测规则和操作规则处理成用领域专用语言或编程语言描述的程序文件。
21.根据权利要求14所述的网络功能的开发系统,其特征在于,所述编译模块用于基于待运行所述程序文件的网络模块的运行环境信息,将所述程序文件编译成可在相应运行环境下执行的软件程序。
22.根据权利要求14所述的网络功能的开发系统,其特征在于,所述交互模块用于基于所述数据源所提供的运行环境选项确定相应的运行环境信息。
23.根据权利要求22所述的网络功能的开发系统,其特征在于,所述编译模块用于按照所述运行环境信息配置编译环境;以及选用配置有所述运行环境的编译器,对所述程序文件进行编译并得到相应的软件程序。
24.根据权利要求23所述的网络功能的开发系统,其特征在于,所述编译模块用于执行以下步骤:
按照预设的所述运行环境信息,将所述程序文件进行预处理;
将预处理后的程序文件编译成可在相应运行环境下执行的软件程序。
25.根据权利要求24所述的网络功能的开发系统,其特征在于,所述编译模块用于执行以下至少一种:按照预设的所述运行环境信息,在所述程序文件中进行增加、删除或修改操作。
26.根据权利要求14所述的网络功能的开发系统,其特征在于,所述程序文件用解释型语言描述,所述编译模块用于将所述程序文件编译成可由不同运行环境的运行时识别的软件程序。
27.一种计算机设备,其特征在于,包括:
存储器,用于存储至少一个程序;
处理器,用于调用所述至少一个程序,以执行如权利要求1-13中任一所述的开发方法。
28.一种计算机可读存储介质,存储有用于网络功能开发的计算机程序,其特征在于,所述计算机程序被执行时实现权利要求1-13任一项所述的网络功能的开发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810353060.XA CN108614691B (zh) | 2018-04-19 | 2018-04-19 | 网络功能的开发方法、系统、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810353060.XA CN108614691B (zh) | 2018-04-19 | 2018-04-19 | 网络功能的开发方法、系统、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108614691A CN108614691A (zh) | 2018-10-02 |
CN108614691B true CN108614691B (zh) | 2021-08-24 |
Family
ID=63660288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810353060.XA Active CN108614691B (zh) | 2018-04-19 | 2018-04-19 | 网络功能的开发方法、系统、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108614691B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860223B (zh) * | 2022-07-06 | 2022-09-30 | 绍兴圆方半导体有限公司 | 交互编辑框架、交互对象的生成方法和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930154A (zh) * | 2016-04-19 | 2016-09-07 | 烽火通信科技股份有限公司 | 网络操作系统中建立并使用设备硬件模型的方法及装置 |
CN106155658A (zh) * | 2015-04-08 | 2016-11-23 | 广州四三九九信息科技有限公司 | 基于u3d插件机制实现的行为树编辑器 |
CN107273176A (zh) * | 2016-04-08 | 2017-10-20 | 上海思立微电子科技有限公司 | 一种适配硬件架构的编译方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10296308B2 (en) * | 2015-10-28 | 2019-05-21 | Adobe Inc. | Automatically generating network applications from design mock-ups |
-
2018
- 2018-04-19 CN CN201810353060.XA patent/CN108614691B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106155658A (zh) * | 2015-04-08 | 2016-11-23 | 广州四三九九信息科技有限公司 | 基于u3d插件机制实现的行为树编辑器 |
CN107273176A (zh) * | 2016-04-08 | 2017-10-20 | 上海思立微电子科技有限公司 | 一种适配硬件架构的编译方法及装置 |
CN105930154A (zh) * | 2016-04-19 | 2016-09-07 | 烽火通信科技股份有限公司 | 网络操作系统中建立并使用设备硬件模型的方法及装置 |
Non-Patent Citations (1)
Title |
---|
Network Function Modeling and Its Applications;Wenfei Wu等;《IEEE Internet Computing》;IEEE;20170727;第21卷(第4期);第82-86页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108614691A (zh) | 2018-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108563448B (zh) | 程序文件的编译方法、系统、计算机设备和存储介质 | |
Hauser et al. | A survey on data plane programming with p4: Fundamentals, advances, and applied research | |
US11132402B2 (en) | Stream computing method, apparatus, and system | |
US10819633B2 (en) | Data-plane stateful processing units in packet processing pipelines | |
US20180234355A1 (en) | Data-plane stateful processing units in packet processing pipelines | |
US7391735B2 (en) | Parsing messages with multiple data formats | |
US10523764B2 (en) | Data-plane stateful processing units in packet processing pipelines | |
US5680585A (en) | Method and apparatus for defining data packet formats | |
US7986707B2 (en) | Method and system for rules based workflow of media services | |
US11394604B2 (en) | Closed-loop automation of a managed network | |
US12026633B2 (en) | Advanced workflow based self-serve automation system | |
Stubbe | P4 compiler & interpreter: A survey | |
US20040205561A1 (en) | Method and system for predicting optimal HTML structure without look-ahead | |
CN108614691B (zh) | 网络功能的开发方法、系统、计算机设备和存储介质 | |
US7788246B2 (en) | Linguistic structure for data flow diagrams | |
JP2005500741A (ja) | ペイロード検査を介したパケット・ルート付け、及び発行−申し込みネットワークにおける申し込み処理 | |
CN108563437B (zh) | 网络功能的开发方法、系统、计算机设备和存储介质 | |
US20230019933A1 (en) | User interface controls for visual software modification | |
US9177252B2 (en) | Incremental DFA compilation with single rule granularity | |
Sommer et al. | Spicy: A unified deep packet inspection framework dissecting all your data | |
EP3047382B1 (en) | Input filters and filter-driven input processing applied to input prior to providing input to a target component | |
JP2014197291A (ja) | プログラム処理方法およびプログラム | |
Lu et al. | Running P4 Programs on General Programmable Network Interconnection Chips | |
Casey | Methods and Tools for Enhancing Safety and Security of Programmable Networks | |
Hornik et al. | A Fast Way to Provide R Functionality to Applications |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190509 Address after: 710077 Room 101, Block B, Yunhui Valley, 156 Tiangu Eighth Road, New Town, Yuhua Street Software, Xi'an High-tech Zone, Shaanxi Province Applicant after: Cross Information Core Technology Research Institute (Xi'an) Co., Ltd. Address before: 100084 Tsinghua Yuan, Beijing, Haidian District Applicant before: Tsinghua University |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |