Aquila: A Practically Usable Verification System for Production-Scale Programmable Data Planes

Aquila是一个实用的验证系统,用于验证生产级可编程数据平面的正确性。它解决了状态爆炸问题,采用顺序和数据结构编码,并能自动定位错误。Aquila还能自我验证其实施的正确性,支持网络工程师轻松表达正确性规范,快速验证,并精确定位数据平面和表条目中的错误。
摘要由CSDN通过智能技术生成

Introduction

四个目标:

  • 网络工程师能够轻松地表达他们的正确性规范;
  • 能够在几分钟内有效地验证生产规模的数据平面程序;
  • 在检测到违规行为后,它应该能够自动准确地定位数据平面和表条目中的错误;
  • 系统应该有能力自我验证自己的实施正确性
    在这里插入图片描述

四个挑战:

  • 规则复杂 —— 提出了LPI语言
  • 验证可扩展 —— 一种新的顺序编码算法
  • 漏洞定位
  • 自验证

Overview

在这里插入图片描述

  • Specification expressing
    在这里插入图片描述
  • Verification
  • Bug localization
    • 无法检查语句缺失;
    • 现有工具无法解决P4下的问题;
      在这里插入图片描述
  • Verifier self validation

SPECIFICATION LANGUAGE

在这里插入图片描述
在这里插入图片描述

  • Assumption:3种类型的preconfitions
    • switch的初始状态(内存中的值等)
    • 输入包的头部(头部字段值和顺序等)
    • 元数据(镜像状态和输入端口等)
  • Assertion:specify the correctness of a single pipeline
  • Program:将假设和断言连接到相应的数据平面模块,形成整个规范化。
    在这里插入图片描述

VERIFICATION APPROACH

在这里插入图片描述

Sequential Encoding

状态爆炸问题

  • 以编码parser为例
    在这里插入图片描述

Data Structure Encoding

  • Table encoding
    • Encode
      • Use Action BitVector (ABV) to encode each entry in the table to avoid branches
      • Use a tree like lookup algorithm to encode the search operation among the ABVs.
    • ABV
      • 根据匹配字段查找匹配条件,以获得第一个匹配的ABV
      • 根据ABV的动作和参数字段应用相应的操作。
    • ABV lookup
      • 建模为平衡查找树
        在这里插入图片描述
  • Packet encoding
    • 使用键值对节省开销

Encoding Other Features

AUTOMATIC BUG LOCALIZATION

C及Haskell方法不适用的原因:

  • 现有工作无法定位因语句缺失而导致的错误,这些错误通常存在于开发中
  • 通用语言调试工具无法本地化P4特定语义中的错误,例如解析器和lookahead中的错误

Finding Violated Assertion

  • let the solver only return the first violated assertion
  • 移除继续找到所有的违背断言

Bug Localization

Preparation

使用SMT求解器返回一个反例,该反例显示所有变量的具体值来触发违规

Table entry bug localization.

  • 查找正确条目纠正表行为
    • Aquila试图找到此类条目通过将所有表替换为变量并让SMT求解器为每个表搜索有效条目
      • 如果求解器可以找到此类条目,则进行 下一步
      • 否则bug位于数据平面
  • 尽量减少潜在位置
    • 表被建模为: t i = i t e ( r e p i , f v i , e i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值