VeriCon公司

Vericon:在软件定义的网络中验证控制器程序。软件定义网络(SDN)是一种新的计算机网络操作和管理模式。SDN通过一个独立于网络硬件运行的“控制器”软件实现对网络设备的逻辑集中控制,可以看作是网络操作系统。网络运营商可以在控制器上运行内部和第三方SDN程序(通常称为应用程序),例如,指定路由和访问控制策略。SDN为应用形式化方法证明计算机网络的正确性提供了可能。实际上,最近已经投入了大量的精力来应用有限状态模型检查来检查SDN程序是否正确运行。然而,一般来说,将这些方法扩展到大型网络是一个挑战,而且,它们不能保证没有错误。我们提出了VeriCon,第一个验证SDN程序在所有允许的拓扑和所有可能(无限)网络事件序列上是正确的系统。VeriCon要么在所有允许的网络拓扑上确认控制器程序的正确性,要么输出一个具体的反例。VeriCon使用一阶逻辑来指定允许的网络拓扑和所需的网络范围不变量,然后使用Z3实现经典的Floyd-Hoare-Dijkstra演绎验证。我们的初步经验表明,VeriCon能够快速验证正确性,或识别错误,为大量的简单核心SDN程序。VeriCon是组合的,从某种意义上说,它通过指定的不变量来验证任何单个网络事件的执行的正确性,因此可以扩展到处理大型程序。为了减轻程序员指定归纳不变量的负担,VeriCon包含了一个独立的过程来推断不变量,这在简单的控制器程序中被证明是有效的。我们认为VeriCon是验证SDN程序的网络不变量的实用机制的第一步。