Page 94 - 《软件学报》2020年第9期
P. 94

张雯雯  等:SDN 数据平面软件一致性测试用例生成方法                                                     2715




                                                 Command

                                            CommandName: String
                                            CommandFormat: String

                                            TableName: String

                                            ActionName: String
                                            MatchFiled: Int

                                            ActionParameter1: Int
                                            ActionParameter2: Int

                                Fig.4    Control command information storage structure
                                         图 4   控制命令信息存储结构
             •   解析 P4 信息文件
             .p4info 文件记录了 P4 程序匹配动作表(match-action tables).P4 官方提供了一个 Helper 类,以帮助解
         析.p4info 文件,实现了根据 id 查找表名、动作名,根据表名、动作名查询对应的 id、匹配字段、动作参数的功
         能.因此考虑从.p4info 文件中解析命令所需要的字段,其工作流程如图 6 所示.


















             Fig.5   Control command parsing flowchart                    Fig.6  P4 program compilation process diagram
                  图 5   控制命令解析流程图                                       图 6   P4 信息文件解析流程图

             其中,解析.p4info 文件具体过程为:解析命令信息实体命令名称,解析该命令信息实体所需字段信息,利用
         Helper 类所提供的方法对.p4info 文件中所有匹配动作表(match-action tables)进行线性查找,将控制命令格式和
         每个匹配动作表(match-action tables)对应的 TABLE_NAME,ACTION_NAME,MATCH_KEY,PARAMETERS 字
         段信息写入命令信息实体.
             (1)  解析表名
             表名层级关系为 table→preamble→name.解析表名的流程如图 7 所示,每获取一个表名,会判断当前表是否
         为最后一张表:若有,则继续获取;若没有,则结束.随后,所有的表名都会从文件中被提取出来.
             (2)  解析匹配字段
             匹配字段的层级关系为 table→match_fields→(id,name,bitwidth).解析匹配字段的流程如图 8 所示,匹配字段
   89   90   91   92   93   94   95   96   97   98   99