本发明涉及计算机网络领域,具体公开了一种基于意图的运行时p4程序自动更新方法。背景介绍随着运行时可编程性的发展,网络运行时的更新需求不断增加,如果能根据用户更新意图自动生成更新p4程序,那么将减少配置错误,并提高可编程网络中配置更新的智能化水平,因此,基于意图的运行时p4程序自动更新方法的研究与实现具有重要的应用意义,网络管理员只需要描述更新意图和约束配置更新中间状态的规范,系统可以自动生成更新的p4程序并计算安全可行的更新部署计划。p4程序自动更新的关键在于尽可能高效准确地生成符合用户意图的更新p4程序,并实现运行时交换机更新程序部署计划的自动生成。其中,意图表达了用户某种目的,在基于意图的网络中用户可以声明自己需要的结果,而不用描述如何实现这个结果。关于用户意图的表示,目前有两种主流的意图语言设计形式,包括自然语言形式和领域特定语言形式。自然语言是人们在日常生活中广泛使用的语言,具有松散定义的语法,通常具有模糊性;而领域特定语言形式具有精确的语法和语义,在提供给意图处理程序进行进一步处理之前需要较少或不需要预处理,常用于特定领域的网络管理任务表示。关于更新p4程序的生成和部署,运行时可编程交换机的出现允许程序员在任意时间对交换机的功能提出新需求,但对于程序员来说使用p4语言编写程序实现预期的功能需求并非易事。近期有一些研究关注到了这个点,在减轻网络程序员编程负担上做出了一些尝试。p4i/o提出了一个基于意图的p4网络框架,网络管理员使用意图定义语言描述他们的网络功能,p4i/o相应生成一个完整的p4程序。lyra提出了流水线抽象,它允许开发人员使用简单的语句来描述他们想要的数据平面,而不需要低层次的特定于目标的知识。lucid引入抽象概念,使编写复杂的数据平面应用程序变得容易,这些应用程序具有交叉的包处理和控制逻辑,专门的类型和语法系统防止与数据平面状态相关的程序员错误。此外,由于实时的网络更新伴随着中间状态与初始和最终网络不同风险,snowcap通过设计一个高效的反例引导搜索程序来解决网络重新配置的问题。p4update则提出基于网络编程语言p4的更新框架,将一致性控制和大部分路由更新逻辑从过载和缓慢的控制平面中转移出来。但目前的验证工作集中于证明单个p4程序的正确性,但不能帮助识别程序转换的正确序列。因此,这些验证技术不能保证程序更新过渡期间中间程序快照的正确性,并且错误可能被无意中引入网络。在理想情况下,可以使用自然语言来表示用户的全网意图,系统将自动生成网络策略,但是由于现有技术以及相关研究成果的限制,还没有一个好的方案来实现这样自动的代码生成技术。虽然一些相关文章提出使用“主谓宾”这样的形式来表示用户意图,但是它们也并没有真正实现意图的转译。同时,当前已有的领域特定意图语言并未特定于可编程数据平面程序更新需求进行设计,难以捕获用户对于交换机功能变更的需求。此外,在更新程序部署中,目前交换机程序的更新仍在初期阶段,当前程序更新的工作没有考虑程序元素的部署顺序问题,对交换机的资源和更新的程序元素有很大的限制。
背景技术:
技术实现思路
1、为了解决现有运行时交换机的p4程序自动更新技术中,错误会被引入网络,更新的安全性低且难以捕获用户对于交换机功能变更的需求的问题,本发明提出了一种基于意图的运行时p4程序自动更新方法。
2、本发明提供了一种基于意图的运行时p4程序自动更新方法,包括如下步骤:
3、s1.获取用户更新意图和初始交换机程序,对所述用户更新意图进行解析,得到用户意图语义分析结果;所述用户更新意图包括功能更新、协议更新和自定义更新;
4、s2.根据所述用户意图语义分析结果,修改所述初始交换机程序的转发逻辑,得到更新交换机程序以及注释代码;
5、s3.获取用户的安全规范;
6、s4.引入保护变量,根据保护变量将所述注释代码编译为控制草图,将所述安全规范与所述控制草图融合为安全控制草图,将所述安全控制草图转换为控制流图,根据所述控制流图迭代得到求解器验证条件;
7、s5.根据所述求解器验证条件,综合求解得到运行时交换机配置更新的目标交换机程序和转换序列计划,根据所述目标交换机程序和转换序列计划进行运行时p4程序的自动更新。
8、根据本发明一些实施例的一种基于意图的运行时p4程序自动更新方法,所述步骤s1中,所述功能更新包括对交换机控制流逻辑进行更新,所述协议更新包括增加或修改代码存储库已有协议,所述自定义更新包括针对数据类型定义、解析器或控制流部分进行自定义修改。
9、根据本发明一些实施例的一种基于意图的运行时p4程序自动更新方法,所述步骤s1中,所述对用户意图进行解析包括以下步骤:
10、步骤a.根据dsl语法对所述用户更新意图进行描述,其中功能更新为修改程序的控制块元素,协议更新为修改解析器元素、头定义、匹配动作表元素、控制块元素和逆解析器元素,自定义更新为自己定义需要更新的程序元素;
11、步骤b.对所述用户更新意图进行词法分析,将所述用户更新意图转化为有意义的单词,并去除不必要的空格、注释和无关字符,将关键字、标识符和操作符划分为不同的词法单元,得到用户更新需求;
12、步骤c.对所述用户更新需求进行语法分析和语义分析,确定所述用户更新需求是否符合语法规则和语义规则,若符合语法规则和语义规则,则将所述用户更新需求的单词序列转换成抽象语法树,得到所述用户意图语义分析结果,若不符合语法规则和语义规则,则重新进行步骤a。
13、根据本发明一些实施例的一种基于意图的运行时p4程序自动更新方法,所述步骤s2包括如下步骤:
14、s201.验证所述用户意图语义分析结果,确定所述用户更新意图是否可以实现,若所述用户更新意图无法实现,则告知用户无法按照此意图进行更新,若所述用户更新意图能够实现,则根据所述用户意图语义分析结果确定需要修改的初始交换机程序元素是否包含解析器,若不包含解析器,则根据正则表达式匹配结果在所述初始交换机程序的基础上进行添加、删除或修改相关程序,得到符合所述用户更新意图的更新交换机程序;若包含解析器,则对所述初始交换机程序进行静态分析得到的解析图,根据所述解析图在所述初始交换机程序对应状态的位置修改状态之间的转换,得到符合所述用户更新意图的更新交换机程序;
15、s202.输出标明更改点的所述注释代码,所述注释代码标注了交换机程序的更改点和更改类型,所述更改类型包括增加、删除和修改。
16、根据本发明一些实施例的一种基于意图的运行时p4程序自动更新方法,所述步骤s3中,所述安全规范为用户根据规范语言的语法对中间状态约束进行描述;所述安全规范包括资源约束和一致性属性约束;所述资源约束表示当前交换机净空;所述一致性属性约束为约束程序快照与初始交换机程序和目标交换机程序之间的关系,所述一致性属性约束包括对于特定的流量类定义一致性属性约束和定义弹性的一致性级别约束;将输入的所述安全规范和解析所述安全规范得到的信息读入并保存。
17、根据本发明一些实施例的一种基于意图的运行时p4程序自动更新方法,所述步骤s4包括如下步骤:
18、s401.在所述注释代码中的每一个注释位置引入一个保护变量,通过所述保护变量判断的控制流分支替换所述注释代码得到所述控制草图,所有所述保护变量的初始值均设置为false,根据所述注释位置更改类型的不同,分为以下三种情况:
19、第一种情况:若更改类型为修改,表示初始交换机程序元素到新交换机程序元素的修改,当所述控制草图中保护变量表示为false时,保持初始交换机程序的原转发逻辑不变,当所述控制草图中保护变量为true时,应用新交换机程序元素;
20、第二种情况:若更改类型为增加,表示添加新交换机程序元素,当所述控制草图中保护变量为false时,保持初始交换机程序的原转发逻辑不变,当所述控制草图中保护变量为true时,添加新交换机程序元素;
21、第三种情况:若更改类型为删除,表示删除初始交换机程序元素,当所述控制草图中保护变量为false时,保持初始交换机程序的原转发逻辑不变,当所述控制草图中保护变量为true时,删除初始交换机程序元素;
22、s402.将所述安全规范进行编译得到编译结果,将所述编译结果编码到步骤s401中得到的所述控制草图中,将所述安全规范中定义的变量以及违反安全规范的验证条件加入所述控制草图生成安全控制草图;
23、s403.将安全控制草图转换为静态单赋值形式ssa非循环的所述控制流图;
24、s404.迭代所述控制流图的节点,根据转移关系向所述控制流图当前节点的相邻节点传播更强的条件,执行优化传递,计算所述控制流图中每个节点可达性的最弱前提条件,得到求解器验证条件,所述求解器验证条件如公式(1)所示:
25、
26、其中,ξ表示未改变组件,ite表示第i个公式的注释代码,k表示注释代码的个数,vi表示交换机程序是否需要更改,ti表示更改后的交换机程序,si表示更改前的交换机程序,表示安全约束。
27、根据本发明一些实施例的一种基于意图的运行时p4程序自动更新方法,所述步骤s5包括如下步骤:
28、s501.将所述安全控制草图按照迭代的顺序进行排列,得到状态草图编码,所述状态草图编码如公式(2)所示:
29、{vsk1,vsk2,…,vskt} (2)
30、其中,vsk1表示初始交换机程序的安全控制草图,vskt表示目标交换机程序的安全控制草图;
31、s502.将所述安全控制草图编码为二维矩阵h∈bk×t,b表示安全控制草图矩阵,t表示转换状态的个数;
32、s503.根据所述安全规范检查所述初始交换机程序和目标交换机程序是否符合所述安全规范所描述的约束,若所述初始交换机程序和目标交换机程序都符合所述安全规范所描述的约束,则进行步骤s504,否则直接退出,输出不存在解决方案的结论;
33、s504.通过反例引导归纳综合填充所述二维矩阵h,得到反例集合,通过smt求解器根据反例集合生成候选更新序列;
34、s505.通过所述求解器验证条件对所述候选更新序列进行验证,若所述候选更新序列符合所述求解器验证条件,则将所述所述候选更新序列输出为更新序列,并结束所述smt求解器的综合求解的迭代,若所述候选更新序列不符合所述求解器验证条件,则将所述候选更新序列添加到反例集合中供下一次生成使用;
35、s506.根据转换状态数t判断是否继续进行综合求解,分为以下三种情况:
36、第一种情况:当1≤t<k时,存在满足所述安全规范但是不满足所述资源约束的所述候选更新序列,继续所述smt求解器综合求解的迭代,返回步骤s504;
37、第二种情况:当1≤t<k时,不存在满足所述安全规范的所述候选更新序列,停止所述smt求解器综合求解的迭代,进行步骤s507;
38、第三种情况:当t≥k时,停止所述smt求解器综合求解的迭代,进行步骤s507;
39、s507.所述smt求解器的综合求解的迭代完成后,输出所有所述更新序列,得到所述目标交换机程序和转换序列计划,根据所述目标交换机程序和转换序列计划进行运行时p4程序的自动更新。
40、本发明还提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序;所述处理器用于执行所述存储器中的所述计算机程序,以实现上述方法。
41、本发明还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法。
42、本发明的一种基于意图的运行时p4程序自动更新方法,能够根据用户输入意图自动生成符合用户输入意图的目标交换机程序和转换序列计划,对运行时p4程序进行自动更新,减少了手动编写程序可能产生的错误,并且允许不了解专业知识的配置人员轻松实现运行时p4程序进行自动更新,且本方法通过领域特定语言描述用户配置更新需求生成更新交换机程序以及控制流图,结合安全规范对配置更新的控制流图进行求解,进一步的避免了p4程序更新过程出现错误导致严重的损失。