CN111431732B - 一种对计算机网络数据平面进行增量验证的方法与系统 - Google Patents
一种对计算机网络数据平面进行增量验证的方法与系统 Download PDFInfo
- Publication number
- CN111431732B CN111431732B CN202010087150.6A CN202010087150A CN111431732B CN 111431732 B CN111431732 B CN 111431732B CN 202010087150 A CN202010087150 A CN 202010087150A CN 111431732 B CN111431732 B CN 111431732B
- Authority
- CN
- China
- Prior art keywords
- predicate
- network
- port
- updating
- forwarding
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0236—Filtering by address, protocol, port number or service, e.g. IP-address or URL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种对计算机网络数据平面进行增量验证的方法与系统,验证方法包括以下步骤:步骤1:根据数据平面设备配置构造PPM模型;步骤2:获取数据平面状态更新,并将获取的更新转化为增量更新规则,然后对每一条更新规则更新PPM模型,得到每一次更新的移动的谓词集合;步骤3:根据更新后的PPM模型拓扑与更新后移动的谓词集构造增量转发图;步骤4:在增量转发图上验证网络正确性。对计算机网络数据平面进行增量验证的系统根据此方法的各个步骤设置处理系统和处理单元,并对系统各部分按照上述方法步骤逻辑相连,使之能对数据平面进行增量验证。
Description
技术领域
本发明属于网络验证技术领域,具体涉及一种对计算机网络数据平面进行增量验证的方法与系统。
背景技术
计算机网络常常由于人为错误配置、软件漏洞、硬件故障而产生故障。传统的人工故障排查方法是对网络设备的静态配置进行核对,只能在网络发生故障后寻找故障发生的原因并进行解决。由于人工排查期间网络仍无法正常工作,网络瘫痪可达数小时。
网络验证是近年提出的,通过对网络正确性进行形式化验证来防止网络故障发生的一类方法。网络验证分为控制平面验证和数据平面验证,控制平面验证目的为检测协议错误配置,而数据平面的检测则是对更接近于真实网络转发行为的数据平面状态进行验证,可覆盖更加广泛的网络故障问题,包括软件漏洞和硬件故障等。
现有数据平面验证方法实现了毫秒级的验证速度,这使得网络管理员能够对数据平面的实时更新进行持续验证。为了达到毫秒级的验证速度,实时数据平面验证方法通常将数据包划分为等价类(Equivalence Class,EC),并维护这些EC的转发行为模型。数据平面更新时,他们会增量更新模型,并验证更新后模型的网络正确性,例如是否存在环路和黑洞。
VeriFlow与Delta-net是现有数据平面验证方法的代表技术,都能根据IP前缀划分EC。其中,VeriFlow以前缀加掩码的形式表示每个连续的IP段,利用Trie树存储所有的IP前缀。 Trie树的每个节点拥有0,1及通配符*三个分支,每个叶子节点对应着匹配路径上的IP前缀,表示一个EC。而Delta-net以区间形式表示每个连续的IP段,每个区间表示一个EC。
最新的实时网络验证工具虽然已达到了对每次更新在亚毫秒级的验证速度,但这种速度大多只能在仅含IP转发的设备中实现。对于由IP转发以外的各种功能组成的实际网络设备,这些实时验证工具存在以下两个缺陷:
首先,网络的建模能力不足。现有技术大多只关注IP层面转发行为,而真实网络设备具有不限于IP转发的多种功能,例如基于访问控制列表(ACL)对数据包进行过滤,基于网络地址转换(NAT)技术对IP地址进行转换等。不同厂商设备的具体处理逻辑也有所不同。Veriflow 与Delta-net只关注IP包的转发行为,NetPlumber和AP Verifier只能对特定的功能进行处理,皆不符合复杂多变的实际网络环境。
其次,验证速度和可扩展性不足。现有技术的EC划分方法大多仅针对目的IP地址这一单一的数据包匹配模式,在面对真实网络中的五元组(目的IP地址、源IP地址、目的端口、源端口、协议号)匹配模式时,这些技术所划分的EC数量将会爆炸式增长,严重影响网络验证的速度。因此,现有验证方法不能适用于真实的大规模网络环境。
发明内容
本发明提供了一种对计算机网络数据平面进行增量验证的方法与系统,通过端口谓词映射模型来表示网络的转发行为,并基于二元决策图,提出了增量维护最小数目等价类的方法。
为达到上述目的,本发明一种对计算机网络数据平面进行增量验证方法,包括步骤以下步骤:
步骤1:根据数据平面设备配置构造端口谓词映射模型,即PPM模型,PPM模型将在每个元素中转发行为相同的数据包划分为一个等价类,并将等价类用谓词表示,PPM用谓词对等价类进行编码;
步骤2:获取数据平面状态更新,并将获取的更新转化为增量更新规则,然后对每一条更新规则更新PPM模型,得到每一次更新的移动的谓词集合;
步骤3:根据更新后的PPM模型拓扑与更新后移动的谓词集合构造增量转发图;
步骤4:在增量转发图上验证网络正确性。
进一步的,步骤1中,构造PPM模型的具体过程为:将网络功能划分转发、过滤和重写三种类型,对应地定义转发、过滤和重写三种元素,将交换机按功能表示为一个或多个元素,并按照功能之间的逻辑通过端口连接这些元素得到PPM模型。
进一步的,步骤1中,为不同类型的元素单独计算等价类。
进一步的,步骤2中,记待更新规则为r,表示为一个三元组(priority,match,action),其中priority表示优先级,match表示匹配域,action表示动作域;待更新规则的元素记作e,对每一条待更新规则更新PPM模型包括以下步骤:
步骤2.1、编码规则匹配域,得到二元决策图:利用二元决策图对一个规则的匹配域的布尔表达式进行编码,编码后,规则r的匹配域被编码为一个二元决策图,二元决策图用r.match 表示;
步骤2.2、分析转发行为变化:
步骤2.2.1、定义三元组(δ,from,to)表示转发行为的变化,其含义为满足谓词δ的数据包最初转发到端口from,在规则更新后将转发到端口to;为每个规则定义hit和port域,其中,规则r的hit域r.hit定义为:
而规则r的port域r.port即规则的动作域r.action所对应的元素端口;
步骤2.2.2、通过从r.match中减去高优先级规则的匹配域来计算命中域r.hit,并通过分析 r.hit如何覆盖不同端口的低优先级规则来找出所有发生变化的转发行为,得到转发行为变化集合C;
步骤2.3、更新谓词:以转发行为变化集合为输入,计算移动的谓词集合D。
进一步的,步骤2.3中的谓词更新方法包括以下步骤:
首先定义两个映射:
Pred:从每个端口到该端口的谓词集合的映射;Port:从每个谓词到该谓词的端口集合的映射;
步骤2.3.1、初始条件下,移动的谓词集合D初始化为空;对于每个行为的变化(δ,from,to),遍历端口from映射的谓词集合,对集合中的每个谓词p,检查谓词p是否与δ有重叠部分,若没有重叠,不对谓词p作任何处理;如果重叠,再判断元素e是否为重写元素,如果元素e不是重写元素,依次执行步骤2.3.2至步骤2.3.4,若元素e为重写元素,则执行步骤2.3.2至步骤2.3.5:
步骤2.3.2、检查谓词p是否属于δ,如果不属于,则通过调用谓词分裂算法将谓词p分裂为两个新的谓词p∧δ和被调用函数Split(p,p1,p2)首先将谓词p替换为p1和p2 来更新Port(p)中每个端口的谓词集,此时,p1为p∧δ,p2为然后,使用谓词p的端口集初始化p1和p2的端口集;最后,如果p存在于移动的谓词集合D中,除去移动的谓词集合D中的p,并向移动的谓词集合D中添加p1和p2;
步骤2.3.3、通过调用谓词移动函数将谓词p∧δ从端口from移动到端口to;
步骤2.3.4、检查端口to存有的每个谓词p′,是否与谓词p拥有相同的端口集合:如果没有相同的端口集合,不动作;如果有相同的端口集合,则谓词p′和谓词p具有相同的转发行为,谓词p′和谓词p可以合并,通过调用谓词合并算法,将谓词p′和谓词p合并为新的谓词p∨p′;
步骤2.3.5、对于重写元素的重写表RT,重写表RT的条目(k,v)定义为:键k是一个谓词,值v是一个谓词集,表示重写元素按照重写规则会将谓词k转换为谓词集v;对于重写表RT中的每个条目(k,v),判断集合v中的每一个元素p是否为一个谓词:
如果是一个谓词,则不对p作任何处理;
如果不是一个谓词,则将所有与谓词p有交集的谓词p′拆分成和p′∧p,然后,判断重写表RT中的每一个条目(k,v),如果谓词p′不在v中,不做任何处理;如果p′在集合v 中,则在v中除去p′,并添加和p′∧p;最后,删去RT表中k为p′的条目,并添加k为和p′∧p的条目。
进一步的,在更新PPM过程中,当出现可以合并谓词时,将可以合并的谓词记录下来;当可以合并的谓词总数超过阈值时,再合并所有记录的谓词。
进一步的,定义G(V,E,A)表示一个增量转发图,其中,V表示增量转发图的点集, E表示增量转发图的边集,A是每条边上允许通过的谓词集,A:E→2AP是边集到谓词集的映射,步骤3包括以下步骤:
步骤3.1、将V,E和A都初始化为空集;
步骤3.2、对于移动的谓词集合D中的每个谓词δ,迭代δ的端口集Port(δ)中的每个端口port,如果拥有端口port的交换机s1不是V中的一个节点,则把s1加进V中;如果直接与端口port相连的交换机s2不是V中的一个节点,就把s2加进V中;若边(s1,s2)不是集合E中一条边,则把边(s1,s2)加进E中,并初始化集合A(s1,s2)为空集;最后,将移动的谓词δ加进集合A(s1,s2)中。
进一步的,步骤4包括验证网络不变量、验证网络策略和分析链路故障;
1)一种用于验证网络不变量的遍历增量转发图的方法,该方法的输入为增量转发图G,移动的谓词集D,图中的节点集V;
对每个节点s∈V,其中V包含了与更新规则的元素相关的所有节点,开始执行遍历过程;在每次遍历之前,初始化当前谓词集pset为移动的谓词集D,初始化遍历过的节点集history 为空;在pset为空或遍历的节点已存在于history中,又或下一跳为default这三种情况时终止流程;第一种情况表示不变量未被破坏,第二种情况表示网络存在环路,第三种情况表示pset 不匹配任何转发规则,即网络存在黑洞;若三种情况都不满足,则将当前谓词集pset更新为 pset∧A(s,s′),将遍历过的节点集history更新为history∪{s},向下一跳继续遍历增量转发图;
2)验证网络策略的过程为:令D为某一次更新后移动的谓词集,计算新的谓词集合Dq←{δ∈D|δ∧q≠False},并基于新的谓词集合Dq构造增量转发图Gq;网络策略验证单元遍历Gq,同时为每个谓词pi∈Dq更新自动机A的一个实例,记为Ai;每当谓词pi访问增量转发图中的新节点,网络策略验证单元就更新自动机Ai;如果遍历后所有自动机都进入接收状态,则网络更新满足该策略;否则,将违反该策略;
3)分析链路故障的过程为:首先使用失效链路上的等价类构造增量转发图,然后应用上述一种用于验证网络不变量的遍历增量转发图的方法遍历增量转发图进行不变量验证。一种对计算机网络数据平面进行增量验证的系统,包括解析系统,网络模型系统和网络更新验证系统,其中,
1)解析系统包括配置文件解析系统与网络更新解析系统;
所述配置文件解析系统用于从网络设备中读取设备配置,并将每个设备配置解析为与厂商无关的配置信息文件并传输给网络构建单元;
所述网络更新解析系统用于从网络设备中获取数据平面状态,并生成增量更新规则传输给元素更新单元;
2)网络模型系统包括网络构建单元、元素更新单元和端口谓词映射模型;
所述网络构建单元用于从配置文件解析系统获取配置信息文件,根据配置信息文件构造设备模型,将每个设备模型解耦为一组端口谓词映射模型的元素,并按网络拓扑和交换机内部功能逻辑,将元素通过端口相互连接,使网络拓扑扩展为PPM拓扑,并将PPM拓扑传递至逻辑转发图构造单元;
所述元素更新单元用于从网络更新解析系统获取增量更新规则,按顺序处理每个增量更新规则中的更新,并更新端口谓词映射模型,得到移动的谓词集合,并将移动的谓词集合传递至逻辑转发图构造单元;
所述网络构建单元与元素更新单元直接作用于端口谓词映射模型上,分别负责端口谓词映射模型的构建与更新;
3)网络更新验证系统包括逻辑转发图构造单元、网络不变量验证单元、网络策略验证单元和链路故障分析单元;
所述逻辑转发图构造单元根据PPM拓扑和移动的谓词集合,用于生成增量转发图;
所述网络不变量验证单元、网络策略验证单元和链路故障分析单元工作在逻辑转发图构造单元生成的增量转发图上;所述网络不变量验证单元用于验证网络不变量是否被违背;所述网络策略验证单元用于验证网络更新后是否满足策略,所述链路故障分析单元用于链路故障分析。
一种在数据平面进行实时增量式网络验证的系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至权利要求7中任意一项所述方法的步骤。
与现有技术相比,本发明至少具有以下有益的技术效果:
本发明提出了一种名为端口谓词映射(Port Predicate Map,PPM)的模块化网络模型,可表示具有多种功能的真实网络设备,并提出了基于二元决策图(Binary DecisionDiagram,BDD) 增量式维护最小数目等价类的方法。具有以下优点:
第一:本发明提出在网络功能级别对网络行为进行建模,将网络功能用元素进行表示,模型的模块性更强。每个元素的不同端口表示不同转发行为,通过将元素的端口进行连接,可描述不同厂商网络设备的内部功能组合,有利于扩展更多复杂网络功能。模型能够提供三种基本元素(包括转发、过滤、重写),并可进行扩展。
第二:本发明提出端口谓词映射这一模块化网络转发行为模型,利用逻辑谓词(布尔表达式)来表示网络中的等价类(在网络中转发行为相同的数据包集合),并通过将每个元素端口映射到一个谓词集合,简洁高效的描述网络中的数据包转发行为。
第三:本发明提出增量维护最小数目等价类的方法,通过转发行为变化分析、谓词分裂、谓词移动、谓词合并这些关键步骤增量式更新端口谓词映射模型,保证端口谓词映射模型中等价类的数目最小,避免了多匹配域情况下等价类数目爆炸问题,可支持微秒级别的验证速度。
进一步的,通过对谓词的延迟合并,能避免相同谓词被反复切割和合并,减少冗余计算,加速验证过程。
进一步的,通过对不同类别的元素维护和更新不同的端口谓词模型,可进一步减小全网等价类数目,加快验证速度。
附图说明
图1a为PPM元素示意图;
图1b为PPM逻辑转发图;
图2为网络数据平面增量验证系统结构图;
图3为对插入规则分析元素上转发行为变化的方法伪代码;
图4a为设备功能逻辑示意图;
图4b为访问控制列表(ACL)规则示意图;
图4c为转发规则示意图;
图4d为更新规则R1之后示意图;
图4e为更新规则R2之后示意图;
图4f为更新规则R3之后示意图;
图4g为更新规则R4之后示意图;
图4h为合并谓词之后示意图;
图5为更新PPM的方法伪代码;
图6为在更新重写规则时更新重写元素的方法伪代码;
图7为构造DFG的方法伪代码;
图8为用于验证网络不变量的方法伪代码。
具体实施方式
为了使本发明的目的和技术方案更加清晰和便于理解。以下结合附图和实施例,对本发明进行进一步的详细说明,此处所描述的具体实施例仅用于解释本发明,并非用于限定本发明。
本发明提出了一种名为端口谓词映射(Port-Predicate Map,PPM)的模块化网络模型(以下简称PPM模型),可对具有多种功能的真实网络设备建模。下面对PPM模型进行介绍:
图1a和图1b中展示该模型的结构。该模型以逻辑功能而非物理设备为粒度来对网络行为进行建模。对每个网络功能用不同类别的元素(element)表示。本发明将网络功能划分转发、过滤和重写三种类型,对应地定义转发、过滤和重写三种元素。PPM模型可将一个复杂的具有多种功能的交换机按功能表示为一个或多个元素,并按照功能之间的逻辑通过端口连接这些元素。PPM模型将在每个元素中转发行为相同(即转发到同一端口)的数据包划分为一个等价类,并将等价类用逻辑谓词(predicate)表示,逻辑谓词后面简称为谓词。一个元素中的每个端口上对应了一个或多个谓词,所有满足谓词的数据包将在这个元素中被转发到相应端口。这样,网络中的数据包转发行为可以用端口到谓词的映射来表示。该模型将网络行为解耦,使网络验证与设备厂商无关,更容易支持新的网络功能和新的厂商的特定功能逻辑,缩小了更新规模,提高了网络验证的速度与网络行为的扩展性。
本发明提出了一种增量维护最小数目等价类的方法,能够在每次网络更新后快速地更新 PPM模型上端口到谓词的映射,并在PPM上增量地验证网络正确性。首先,二元决策图(Binary Decision Diagram,BDD)是现有的表示布尔表达式的技术。本发明利用BDD对谓词进行编码,使谓词可支持网络五元组匹配,并能通过BDD的与或非运算来加速谓词间的计算。其次,谓词完全按照数据包行为划分。现有方法引发EC爆炸的主要原因是它们仅按照规则的匹配域划分EC,导致许多具有相同转发行为的EC,并且EC创建后无法进行压缩。本发明基于以下两个原则划分EC,大大减少了EC的数量:(1)仅在必要时创建EC。本发明分析网络更新对现有EC的影响,并且仅在一个EC存在部分转发行为变化时才创建新的EC。(2)尽可能合并EC。本发明记录每个EC的转发行为,并将具有相同转发行为的两个EC进行合并。通过以上原则,本发明能够在网络更新后保持最小数目的等价类。
一种对计算机网络数据平面进行增量验证的方法,包括顺序进行的以下步骤:
步骤1:根据数据平面设备配置构造端口谓词映射模型,即PPM模型;
步骤2:获取数据平面状态更新,并将获取的更新转化为增量更新规则,然后对每一条更新规则更新PPM模型,得到每一次更新的移动的谓词集合;
步骤3:根据更新后的PPM模型拓扑与更新后移动的谓词集合构造增量转发图;
步骤4:在增量转发图上验证网络正确性。
对计算机网络数据平面进行增量验证的系统根据此方法的各个步骤设置处理系统和处理单元,并对系统各部分按照上述方法步骤逻辑相连,使之能对数据平面进行增量验证。方法的详细步骤见实时增量式网络验证系统描述部分。
参照图2,一种在数据平面进行实时增量式网络验证系统,包括三大部分,分别为解析系统,网络模型系统和网络更新验证系统。各部分具体如下:
解析系统包括配置文件解析系统与网络更新解析系统。
网络模型系统包括网络构建单元、元素更新单元和端口谓词映射模型;
网络更新验证系统包括逻辑转发图构造单元、网络不变量验证单元、网络策略验证单元和链路故障分析单元;
配置文件解析系统与网络构建单元连接,用于从网络设备中读取设备配置,并将每个设备配置解析为与厂商无关的配置信息文件传输给网络构建单元;
网络更新解析系统与元素更新单元连接,用于从网络设备中获取数据平面状态(包括FIB, ACL、NAT等的规则),并生成增量更新规则传输给元素更新单元;
网络构建单元从配置文件解析系统获取配置信息文件,根据配置信息文件构造设备模型,又将每个设备模型解耦为一组端口谓词映射模型的元素,并按网络拓扑和交换机内部功能逻辑,将元素通过端口相互连接,使网络拓扑扩展为PPM拓扑;
元素更新单元从网络更新解析系统获取增量更新规则,按顺序处理每个增量更新规则中的更新,并更新端口谓词映射模型,得到移动的谓词集合;
网络构建单元与元素更新单元直接作用于端口谓词映射模型上,分别负责端口谓词映射模型的构建与更新;
网络构建单元与端口谓词映射模型均和逻辑转发图构造单元相连,分别向其传输PPM拓扑与移动的谓词集合;
逻辑转发图构造单元根据PPM拓扑和移动的谓词集合,生成一个边上带有标签的增量转发图。
网络不变量验证单元、网络策略验证单元和链路故障分析单元工作在逻辑转发图构造单元生成的增量转发图上。
1解析系统
解析系统从网络中读取每个网络设备的配置文件与数据平面状态,将其转化为统一格式的配置信息文件和规则更新。由配置文件解析系统与网络更新解析系统两部分组成。
配置文件解析系统从不同厂商设备中读取数据平面配置信息,包括各设备中访问控制列表 (ACL)配置、虚拟局域网(VLAN)配置、策略路由(Policy Based Routing)配置、网络地址转换(NAT)配置、接口配置、网络拓扑等。不同厂商的配置语法不同,由解析系统解析后生成统一格式的中间表示,输入到网络模型系统。中间表示采用键值对的形式进行存储。
网络更新解析系统定期从设备中获取当前网络数据平面状态更新,包括各设备中的转发表 (FIB)、ACL规则、NAT规则等的更新。不同厂商描述规则的形式不同,由解析系统解析后生成统一格式的规则更新,输入到网络模型系统。
2网络模型系统
网络模型系统,获取解析系统传输的配置信息文件和增量规则更新,构建和更新端口谓词映射模型,包括网络构建单元和元素更新单元。
端口谓词映射模型以逻辑功能而非物理设备为粒度来建模网络。对每个网络功能用不同类别的元素表示。每个元素都包含一组逻辑端口。与物理设备端口不同,逻辑端口代表通用处理动作,而不局限于端口转发,包括“转发到指定的VLAN”,“允许或拒绝指定流量”,“将目的 IP重写为指定值”等。这允许元素表示除转发以外具有不同行为的广泛网络功能。在一个元素内,每个数据包将直接发送到一个端口,该端口的动作将应用于该数据包。本发明将网络功能划分为转发、过滤和重写三种类型,对应地定义转发、过滤和重写三种元素。
转发元素端口为(n+1)个,其中n个端口对应交换机的n个物理或VLAN接口,转发到这些端口的数据包执行“发送至相应接口“的动作;1个端口为默认(default)端口,执行默认动作(例如丢弃数据包)。转发元素规则的匹配域为目的IP地址。
过滤元素端口为2个:permit端口允许数据包通过;deny端口表示拒绝数据包通过。过滤元素规则的匹配域为五元组(目的IP地址、源IP地址、目的端口、源端口和协议号)。
重写元素端口为(n+1)个,其中n个端口对应n条重写规则,转发到这些端口的数据包执行“将指定包头重写为指定值”的动作;1个id端口对应“保持数据包头不变”。重写规则的匹配域为五元组。
一个复杂的具有多种功能的交换机可分为一个或多个元素,并按照功能之间的逻辑通过端口连接这些元素。
PPM模型将在每个元素中转发行为相同(即转发相同端口)的数据包定义为一个等价类。令ε为网络中所有元素的集合,而为所有包头的集合。对于每个包头和元素e∈ε,令 Porte(h)为元素e上h所属的端口。则对等价类(EC)具有以下定义。
定义1.如果C={c1,c2,…,cn}满足以下三个条件,则称C为对应于元素集ε和包头集的一组等价类(EC):(1)ci∧cj=Φ,i≠j; Porteh1=Porteh2组等价类(EC):(1)ci∧cj=Φ,i≠j; 如果C是满足上述条件的最小集合,则称C为对应于元素集ε和包头集的最小数目等价类。
一个元素中的每个端口拥有一组EC,所有满足某个EC的数据包将在这个元素中被转发到相应端口。PPM用逻辑谓词对EC进行编码。这样,网络中的数据包转发行为可以用端口到谓词的映射来表示。
网络构建单元从配置文件解析系统获取数据平面配置信息,数据平面配置信息包括各设备中访问控制列表(ACL)配置、虚拟局域网(VLAN)配置、策略路由(Policy BasedRouting)配置、网络地址转换(NAT)配置、接口配置、网络拓扑等,根据数据平面配置信息构造每个设备的模型,将每个设备的模型解耦为一组端口谓词映射模型的元素,并按网络拓扑和交换机内部功能逻辑,将元素通过端口进行连接,最终生成PPM拓扑。例如,如果在某一设备中声明了一个名为ACL1的ACL来过滤端口port1上的入站流量,则存在从ACL1的permit端口到转发元素的port1端口的连接。PPM的元素拓扑可用于生成增量转发图,以用于以后的验证。
本发明提供转发、过滤、重写三种类型的元素。在对某一网络初始化建模时,元素中没有任何规则。网络构建单元在每个元素中插入一个默认规则,该规则的匹配域为全部通配(匹配所有数据包),动作域设为default,deny或id端口的动作(具体端口取决于元素的类型)。将真谓词(True)分配给default,deny或id端口(具体端口取决于元素的类型)。转发和重写元素的其他端口将在插入规则时动态创建。
元素更新单元从网络更新解析系统获取增量更新规则,按顺序处理每个规则更新,并更新端口谓词映射模型。
假设某一元素中更新了一条规则,元素更新单元将使用三个步骤来更新PPM:
1)编码规则匹配域;2)分析转发行为的变化;3)更新谓词。值得注意的是,对元素上规则的更新有插入规则、删除规则和修改规则三种操作。由于删除规则与插入规则仅在第2) 步不同,而修改规则又可等价于先删除规则再插入规则,因此,仅展示规则插入的情况。
记待插入规则为r,表示为一个三元组(priority,match,action),其中priority表示优先级, match表示匹配域,action表示动作域。待插入规则的元素记作e。
步骤1.编码规则匹配域,得到二元决策图。假设每个数据包报头都有h位,每一位都可以看作一个布尔变量。那么,一个规则的匹配域可与一组数据包报头对应,并可表示为有h个变量的布尔表达式。例如,IP匹配域128.0.0.*表示为本发明利用二元决策图对匹配域的布尔表达式进行编码。在此步骤完成后,规则r的匹配域被编码为一个二元决策图 (用r.match表示)。
步骤2.分析转发行为变化。此步骤通过分析规则r的插入如何影响元素现有的规则来确定元素转发行为的变化。定义三元组(δ,from,to)表示转发行为的变化,其含义为满足谓词δ的数据包最初转发到端口from,在规则插入后将转发到端口to。为完成转发行为变化的分析,本发明为每个规则定义hit和port域。其中,规则r的hit域r.hit定义为:
而规则r的port域r.port即规则的动作域r.action所对应的元素端口。
图3所述方法总结了在插入规则时分析转发行为变化的过程。它通过从r.match中减去高优先级规则的匹配域来计算命中域r.hit,并通过分析r.hit如何覆盖不同端口的低优先级规则来找出所有发生变化的转发行为。
开始时,设置转发行为变化集合C为空集,并将命中域r.hit初始化为r.match(1-2行)。然后,如3-9行所示,对于中的每个规则r′,如果r′.hit与r.hit有交集且规则r′的优先级高于待插入规则r,则从r.hit中减去r′.hit(4-5行)。如果r′.hit与r.hit有交集且r′的优先级低于待插入规则r,则从r′.hit中减去r.hit,减去之后,若r.port与r′.port不同,则构造三元组 (r.hit∧r′.hit,r′.port,r.port),并将其加入集合C中(6-9行)。若r.port与r′.port相同,不做任何处理;最后,将待插入规则r加入列表中,并输出转发行为变化集合C(10-11行)。
删除规则与插入规则之间的区别是,它们导致谓词移动的方向相反:谓词从其他低优先级规则的端口移动到插入规则的端口中,但是从删除规则的端口中移动到其他低优先级规则的端口中。具体地,在构造三元组时,构造方法为(r.hit∧r′.hit,r.port,r′.port)。
步骤3.更新谓词。谓词更新方法以转发行为变化集合(用C表示)为输入,计算移动的谓词集合(用D表示),算法流程如图5所示。定义两个映射:
·Pred:从每个端口到该端口的谓词集合(该端口上的所有谓词)的映射。
·Port:从每个谓词到该谓词的端口集合(拥有该谓词的所有端口)的映射。
开始时,移动的谓词集合D初始化为空(图5第1行)。对于每个行为的变化(δ,from,to),遍历端口from映射的谓词集合,对集合中的每个谓词p,检查p是否与δ有重叠部分(图5第2-4 行)。若没有重叠,不对谓词p作任何处理;如果重叠,依次执行以下三个步骤(第5-10行):
(1)谓词分裂。在此步骤中,检查谓词p是否属于δ(图5第5行)。如果不属于,则通过调用谓词分裂算法(图5第6行)将谓词p分裂为两个新的谓词p∧δ和如图5第 11-17行所示,调用函数Split(p,p1,p2)首先通过将谓词p替换为p1和p2来更新Port(p) 中每个端口的谓词集(第12-13行),此时,p1为p∧δ,p2为然后,使用谓词p的端口集初始化p1和p2的端口集(第14-15行)。最后,如果p存在于移动的谓词集合D中,它会除去移动的谓词集合D中的p,并向移动的谓词集合D中添加p1和p2(第16-17行)。
(2)谓词移动。此步骤通过调用谓词移动函数(第7行)将谓词p∧δ从端口from移动到端口to,如第18-22行所示。
(3)谓词合并。此步骤检查端口to存有的每个谓词p′,即是否与谓词p 拥有相同的端口集合(第8行)。如果有相同的端口集合,则谓词p′和谓词p具有相同的转发行为,通过调用谓词合并算法(第9行),将谓词p′和谓词p合并为新的谓词p∨p′(第23-28 行)。如果没有相同的端口集合,不动作;
经过上述三个步骤,通过从δ中减去谓词p来更新δ,然后处理端口from的下一个谓词(第 10行)。
3网络更新验证系统
网络更新验证系统根据网络拓扑和移动的谓词集合,生成一个边上带有标签的增量转发图。然后在增量转发图上验证网络的正确性,包括验证网络不变量、验证网络策略和分析链路故障。
逻辑转发图构造单元根据PPM拓扑和移动的谓词集合D,生成增量转发图(DFG)。定义 G(V,E,A)表示一个增量转发图。其中,V表示增量转发图的点集,E表示增量转发图的边集,A是每条边上允许通过的谓词集。A:E→2AP是边集到谓词集的映射,例如,A(s1,s2) 表示能够从交换机s1转发到交换机s2的谓词集。
一种构造DFG的方法,该方法的输入为移动的谓词集合D,输出为一个DFG(用G表示)。该方法如图7所示,包括以下步骤:
首先,将V,E和A都初始化为空集(第1行)。对于移动的谓词集合D中的每个谓词δ,迭代δ的端口集Port(δ)中的每个端口port(2-3行)。如果拥有端口port的交换机s1不是V中的一个节点,就把s1加进V中(4-6行)。类似的,如果直接与端口port相连的交换机s2 不是V中的一个节点,就把s2加进V中(7-9行)。需注意的是,若此时的port为default,则假设该端口与一个名为“default”的虚拟节点相连。若边(s1,s2)不是集合E中一条边,就把边(s1,s2)加进E中,并初始化A(s1,s2)为空集(10-12行)。最后,将移动的谓词δ加进集合A(s1,s2)中(第13行)。
网络不变量验证单元、网络策略验证单元和链路故障分析单元工作在逻辑转发图构造单元生成的增量转发图G上。
网络不变量验证单元可验证网络不变量是否被违背,包括是否含有环路和黑洞,其中环路和黑洞的定义如下。
·环路。如果存在同一数据包到达同一设备两次,且包头未被修改,则存在环路。
·黑洞。如果存在一个数据包到达设备但不匹配任何转发规则,则存在黑洞
网络不变量验证单元在DFG上验证不变量,该图的边上标有允许通过的EC。由于DFG 表达能力不足,本发明在更新时更新PPM,只在需要验证网络正确性时构造DFG。在验证网络不变量时,给定移动的谓词集,逻辑转发图构造单元通过添加谓词和存有这些谓词的端口来构造DFG。然后,网络不变量验证单元用谓词集P遍历DFG,该谓词集P初始化为移动的谓词集合D。当遍历到某一端口时,P与该端口存有的谓词集相交。当P为空,到达边缘端口,到达默认端口(检测到黑洞)或访问同一端口两次(检测到环路)时,遍历终止。
一种用于验证网络不变量的遍历DFG的方法,该方法的输入为增量转发图G,移动的谓词集合D,图中的节点集V。该方法如图8所示。
对每个节点s∈V(V包含了与更新规则的元素相关的所有节点),开始执行遍历过程。在每次遍历之前,初始化当前谓词集pset为移动的谓词集合D,初始化遍历过的节点集history 为空(1-4行)。在pset为空(6-7行)或遍历的节点已存在于history中(8-10行),又或下一跳为default(12-14行)这三种情况时终止流程。第一种情况表示不变量未被破坏,第二种情况表示网络存在环路,第三种情况表示pset不匹配任何转发规则,也就是网络存在黑洞。若三种情况都不满足,则将当前谓词集pset更新为pset∧A(s,s′),将遍历过的节点集history更新为history∪{s},向下一跳继续遍历增量转发图(第15行)。
网络策略验证单元可验证用户定义的策略,例如使用特定前缀的主机可否访问Web服务器,从子网1到子网2的流量都应该经过防火墙等。本发明将策略定义为匹配条件(match condition)和路径约束(path constraint)的二元对,其中匹配条件可指定为包头字段(例如5 元组),而路径约束可指定为正则表达式。给定一个策略,本发明可将其匹配条件转换为策略谓词,并用二元决策图表示,记为q,又将策略的路径约束转换为自动机表示为A。网络策略验证单元可按以下方式验证网络更新后是否满足策略。
令D为某一次更新后移动的谓词集。本发明计算新的谓词集合Dq←{δ∈D|δ∧q≠False},并基于新的谓词集合Dq构造增量转发图Gq。网络策略验证单元遍历Gq,同时为每个谓词 pi∈Dq更新自动机A的一个实例,记为Ai。具体来说,每当谓词pi访问DFG中的新节点,网络策略验证单元就更新自动机Ai。如果遍历后所有自动机都进入接收状态,则网络更新满足该策略;否则,将违反该策略。值得注意的是,网络策略验证单元能够并行验证多个策略,而对每个策略而言,每个自动机的更新也能够并行进行。
链路故障分析单元可帮助管理员进行“链路故障分析”,例如,如果某个链路失效,是否会破坏不变量。链路故障分析单元通过检索失效链路上的EC来回答此类问题:首先使用这些 EC构造DFG,然后应用图8所示的方法遍历DFG进行不变量验证。
由于重写元素支持对数据包的重写,在DFG中存在重写元素时,遍历DFG需要考虑重写元素对数据包的影响。当只有转发和过滤元素时,在遍历期间只需对谓词集进行相交。但当存在重写元素时,谓词需要进行转换。因此,在更新重写规则时,元素更新单元需要解决两个新的问题:(1)如何使用逻辑运算来编码数据包重写的动作;(2)如何在存在重写的情况下更新谓词。
重写元素由重写规则列表组成,其中每个匹配网络五元组,并将数据包包头重写为特定值。本发明将每个T看作针对数据包的不同的动作,在重写元素中为每个规则T创建一个端口。更新重写规则时,元素更新单元将编码重写规则的match域,并将编码后的谓词分配给重写元素的每个端口。
为使逻辑运算编码数据包重写的动作,定义谓词的存在量化:令p为谓词,x为定义p的布尔变量之一。则x的存在量化定义为:
其中p|x=true将p中的变量x的值设置为true。假设数据包包头为x1,x2两位,将其重写为x1=1,x2=0的NAT规则T可以被编码为逻辑函数,执行谓词p的转换:
BDD可实现存在量化操作。
为支持在存在重写的情况下更新谓词,需确保在DFG中含有重写元素时,遍历DFG时满足以下两个条件:
(1)每个谓词在遍历到重写元素时应进行明确转换,即应为每个谓词定义转换。例如,假设p分裂为p1和p2,则应明确如何分别转换p1和p2。否则,在谓词集中仅遍历p1或p2时,重写元素将不知道如何转换它。
(2)转换的结果应由谓词集表示,以便能够进行遍历。例如,假设谓词p由重写规则T 的端口保存,并且T(p)=p′。如果p′不能由谓词集表示,则遍历会因为p′无法被其他元素“识别”而无法继续。
为了满足上述两个条件,元素更新单元定义以下两个操作:(1)当重写端口的谓词p分裂为p1和p2时,计算p1′=T(p1)和p2′=T(p2),并应用操作(2)。(2)如果变换结果p′不能表示为谓词集,我们将创建新的谓词来表示重写端口的谓词p′。此时,操作(2)可能会拆分某些重写端口的谓词并触发操作(1),例如,将另一个谓词q分裂成了q1和q2。如果变换结果p′可以表示为谓词集,则不用对p′作任何操作。
为实现上述两个操作,完成元素更新单元对重写元素的更新,给出一种在更新重写规则时更新重写元素的方法,该方法的输入为转发行为发生改变的集合C和重写表RT,该方法的输出为移动的谓词集合D。方法的流程如图6所示。
首先,它利用图5所示方法更新谓词。区别在于该算法还维护一个重写表RT:对于RT 中每个条目(k,v),键k是一个谓词,而值v是一个谓词集,表示重写元素按照重写规则会将谓词k转换为谓词集v。将一个谓词p从一个规则r移动到另一规则r′之后,需在p上应用重写规则r′,并确保重写表中的值仍然是谓词集。图6的第2-12行显示了如何更新重写表RT,具体包括以下步骤:
如图6所示,首先,利用图5所示方法更新谓词,得到移动的谓词集合D(第1行)。然后对于RT中的每一个(k,v),判断集合v中的每一个元素p是否为一个谓词(3-5行):如果是一个谓词,则不对p作任何处理;如果不是,则拆分已有谓词来表示p(6-10行)。具体地,对于任何一个与p有交集的谓词p′,按13-20行将p′拆分成和p′∧p:
对于任何将p拆分成p1和p2的情况,首先,按照图5所示的分裂谓词的方法将p分裂成 p1和p2(第14行)。然后,对于RT中的每一个(k,v),如果p不在v中,不做任何处理;如果p在v中,则在v中除去p,并添加p1和p2(15-17行)。对RT中每一个(k,v)处理完成之后,更新RT中的表项(18-20行)。
为加速对数据平面的增量验证,本发明提出以下两种方法对系统进行优化:
(1)延迟合并。在图5所示的算法中,元素更新单元会在两个谓词具有相同的端口集时立即合并。但谓词可能被反复合并和分裂,导致冗余计算。一种在元素更新时对谓词延迟合并的方法:当可以合并谓词时,将可合并的谓词记录下来;当谓词的总数超过阈值(默认为500) 时,再合并所有记录的谓词。为了快速确定是否可以合并谓词,元素更新单元维护一个哈希表,其中的键是端口的有序列表,而值是出现在所有这些端口上的谓词集。
(2)为不同类型的元素单独计算等价类。本发明为不同类型的元素单独计算等价类。假设将网络中元素分为两类——转发元素和过滤元素,由于重写元素对数据包头进行重写,依赖于转发元素和过滤元素划分的等价类,因此不能单独计算,则对两类元素分别计算等价类。遍历增量转发图时,需要携带两个谓词集,并令集合相交的操作仅在同类谓词集之间发生:转发谓词集将仅与转发元素端口的谓词相交。在验证网络不变量时,遍历算法可避免误报。当两个谓词集都为非空且访问一个端口两次时,网络不变量验证单元将确认是否在两个谓词集中存在具有非空交集的两个谓词(两个集合各取一个)。如果存在,则验证出一个环路;否则,此环路为假阳性。
实施例1
策略路由(PBR)是路由器和交换机常见功能,它使管理员能够覆盖IP转发规则,以便根据目的IP地址以外的标准转发数据包。不同厂商对PBR的实现不同,这里列出对某一大型设备厂商PBR实现的建模方法。如在某一交换设备的配置文件中,存在以下配置:
interface eth0/0
traffic-policy p1 inbound
#
traffic policy p1 match-order config
classifier c1 behavior b1
#
traffic classifier c1 operator or precedence 5
if-match acl ACL1
#
traffic behavior b1
permit
redirect interface eth1/1由上述配置文件内容可知,该设备厂商的PBR实现名为流量策略 (traffic policy),定义为分类器-行为(classifier-behavior)的二元对的集合。下面展示了应用于交换机C的流量策略p1,该策略应用于eth0/0接口的入站流量。p1由分类器c1和行为b1 定义,表示满足c1的数据包将具有行为b1。c1是使用一条ACL定义的,记为ACL1。行为 b1是将流量重定向到eth1/1接口。图1a的左上方显示了交换机C的内部处理逻辑。
在PPM模型中,可以通过创建ACL元素ACL1-C并将其正确地连接到拓扑中(如图1a右上角所示),轻松地对上述流量策略进行建模,具体方式为:(1)将ACL1-C的输入端口连接到eth0/0的上游设备,即交换机A,(2)将ACL1-C的permit端口连接到eth1/1的下游设备,即交换机D,(3)将ACL1-C的deny端口连接到FW-C的输入端口。
上面只是流量策略的最简单形式,在更一般的情况下,策略可以包含多个分类器-行为对,并且每个分类器都可以包含多个ACL。为此,PPM需要创建多个元素,每个ACL一个,并将它们级联在一起。
除了5元组,流量策略还匹配各种信息,包括VLAN ID,三层数据包长度,时间范围等。由于基于谓词的EC表示对匹配域没有限制,因此可以通过扩展字段来对这些匹配条件进行编码。例如,我们添加一个16位字段来编码从0到65535的数据包长度,并添加一个5位字段来编码小时级的时间范围。值得注意的是,由于PPM对符号数据包的转发行为进行了建模,因此要添加的字段不必是数据包中的包头。
实施例2
在此实施例中,将展示网络构建单元如何将网络设备构建为PPM元素,并将PPM元素相连,最终为网络建模。
在某一实施例中,存在如附图1a左上所示的网络。在该网络中,交换机C具有四个模块 (两个ACL,一个转发和一个NAT),每个模块都有自己的规则。当数据包到达端口port1时,将依次应用两个ACL:ACL1和ACL2。如果它们到达端口port2,则仅应用ACL1。随后,将根据转发规则将数据包发送到输出端口。如果输出端口是port5,数据包又将通过NAT。
PPM会将具有多种功能的设备拆成多个元素。如附图1a下方所示,网络构建单元将交换机C拆分为四个元素:一个转发元素FWD-C,两个过滤元素ACL1-C与ACL2-C,以及一个重写元素NAT-C。
在同一实施例中,若网络拓扑如附图1a右上所示,则网络构建单元将按照设备内部逻辑与物理拓扑对各元素进行连接形成逻辑转发图,如附图1b所示。
在形成逻辑转发图时,一个元素可根据网络功能的应用策略对应多个节点。例如,元素 ACL1-C同时应用在端口port1与port2的入站流量上,因此,存在两个节点ACL1-C-Port1-in 与ACL1-C-Port2-in。每个节点的端口谓词映射和其对应的元素的端口谓词映射一致。例如,以上两个节点都与元素ACL1-C具有相同的端口。节点根据元素在设备内部的连接方式进行连接。例如,设备A在网络拓扑上与设备C的port1端口相连,ACL1与ACL2又依次作用于 port1的入站流量,因此交换机A连向ACL1-C-Port1-in节点的in端口,而ACL1-C-Port1-in 节点的permit端口又连向ACL2-C-Port1-in节点的in端口,最后ACL2-C-Port1-in节点的permit 端口连向交换机C的port1端口。
实施例3
在此实施例中,将展示元素更新单元如何对每一条插入规则实时更新PPM模型。如附图 4a至图4h所示。
图4a表示某一设备功能逻辑,该设备在入端口由ACL执行过滤功能,过滤后执行转发功能。设更新规则的匹配域有两个字段:(1)目的IP地址dstip,字段长度为2,由x1,x2表示; (2)目的端口dstport,字段长度为2,由y1,y2表示。转发规则按最长前缀匹配只匹配目的IP 地址,ACL规则按照优先级匹配全部两个字段。设规则优先级priority由整数表示,数字越大代表优先级越高。假设默认情况下,ACL拒绝所有数据包,而FW将所有数据包转发到端口 port1。初始时,元素只有一个EC,记为a,它出现在FW元素的port1端口和ACL元素的deny端口上。我们将插入(图4b)中所示的两个ACL规则R1和R2,以及(图4c)中所示的两个转发规则R3和R4。
元素更新单元对每一条插入规则实时更新PPM模型包括以下步骤:
首先插入一条ACL规则R1:ACL规则R1作用于ACL上,其匹配域为x1x2=0*,y1y2=00,如图4d上方所示。元素更新单元将分析规则R1将如何影响ACL元素的行为。具体来说,规则R1会覆盖虚线矩形中的默认拒绝规则。但是,由于规则R1也是拒绝动作,矩形中的数据包不会更改。因此,a不受影响,仍然出现在FW元素的port1端口和ACL元素的deny端口上,如(图4d)底部所示。
假设插入了另一个ACL规则R2。由于规则R2的优先级低于规则R1,因此规则R2只能匹配阴影部分的区域,在此阴影区域将覆盖默认的拒绝规则。这样,与阴影区域匹配的数据包会将其行为从拒绝更改为允许。为了反映这一变化,元素更新单元将这些数据包从deny端口移动到permit端口。由于这些数据包是EC a的一部分,因此它将a分成两个EC,即阴影区域的b和在a中减去b的另一个EC。然后将b移动到permit端口,如(图4e)底部所示。
假设插入了转发规则R3。R3的匹配域为x1x2=00,在图4f上方用红色矩形标出。R3覆盖虚线矩形中的默认规则,匹配该区域的数据包应按照R3的动作端口从port1更改为port2。元素更新单元通过分别拆分a和b来创建两个新的EC,记为c和d,并将它们移动到port2,如(图4f)所示。另一个转发规则R4的插入与R3类似,在(图4g)中显示。
更新完成之后,由于EC d和EC f的转发行为在两个元素上相同,因此将两个EC合并为一个EC。同理将EC c和e合并为另一个EC,合并之后的PPM如图4h所示。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (9)
1.一种对计算机网络数据平面进行增量验证的方法,其特征在于,包括以下步骤:
步骤1:根据数据平面设备配置构造端口谓词映射模型,即PPM模型,PPM模型将在每个元素中转发行为相同的数据包划分为一个等价类,并将等价类用谓词表示,PPM用谓词对等价类进行编码;
步骤2:获取数据平面状态更新,并将获取的更新转化为增量更新规则,然后对每一条更新规则更新PPM模型,得到每一次更新的移动的谓词集合;
步骤3:根据更新后的PPM模型拓扑与更新后移动的谓词集合构造增量转发图;
步骤4:在增量转发图上验证网络正确性;
步骤4包括验证网络不变量、验证网络策略和分析链路故障;
1)一种用于验证网络不变量的遍历增量转发图的方法,该方法的输入为增量转发图G,移动的谓词集D,图中的节点集V;
对每个节点s∈V,其中V包含了与更新规则的元素相关的所有节点,开始执行遍历过程;在每次遍历之前,初始化当前谓词集pset为移动的谓词集D,初始化遍历过的节点集history为空;在pset为空或遍历的节点已存在于history中,又或下一跳为default这三种情况时终止流程;第一种情况表示不变量未被破坏,第二种情况表示网络存在环路,第三种情况表示pset不匹配任何转发规则,即网络存在黑洞;若三种情况都不满足,则将当前谓词集pset更新为pset∧A(s,s′),将遍历过的节点集history更新为history∪{s},向下一跳继续遍历增量转发图;
2)验证网络策略的过程为:令D为某一次更新后移动的谓词集,计算新的谓词集合Dq←{δ∈D|δ∧q≠False},并基于新的谓词集合Dq构造增量转发图Gq;网络策略验证单元遍历Gq,同时为每个谓词pi∈Dq更新自动机A的一个实例,记为Ai;每当谓词pi访问增量转发图中的新节点,网络策略验证单元就更新自动机Ai;如果遍历后所有自动机都进入接收状态,则网络更新满足该策略;否则,将违反该策略;
3)分析链路故障的过程为:首先使用失效链路上的等价类构造增量转发图,然后应用上述一种用于验证网络不变量的遍历增量转发图的方法遍历增量转发图进行不变量验证。
2.根据权利要求1所述的一种对计算机网络数据平面进行增量验证的方法,其特征在于,所述步骤1中,构造PPM模型的具体过程为:将网络功能划分转发、过滤和重写三种类型,对应地定义转发、过滤和重写三种元素,将交换机按功能表示为一个或多个元素,并按照功能之间的逻辑通过端口连接这些元素得到PPM模型。
3.根据权利要求1所述的一种对计算机网络数据平面进行增量验证的方法,其特征在于,所述步骤1中,为不同类型的元素单独计算等价类。
4.根据权利要求1所述的一种对计算机网络数据平面进行增量验证的方法,其特征在于,所述步骤2中,记待更新规则为r,表示为一个三元组(priority,match,action),其中priority表示优先级,match表示匹配域,action表示动作域;待更新规则的元素记作e,对每一条待更新规则更新PPM模型包括以下步骤:
步骤2.1、编码规则匹配域,得到二元决策图:利用二元决策图对一个规则的匹配域的布尔表达式进行编码,编码后,规则r的匹配域被编码为一个二元决策图,二元决策图用r.match表示;
步骤2.2、分析转发行为变化:
步骤2.2.1、定义三元组(δ,from,to)表示转发行为的变化,其含义为满足谓词δ的数据包最初转发到端口from,在规则更新后将转发到端口to;为每个规则定义hit和port域,其中,规则r的hit域r.hit定义为:
而规则r的port域r.port即规则的动作域r.action所对应的元素端口;
步骤2.2.2、通过从r.match中减去高优先级规则的匹配域来计算命中域r.hit,并通过分析r.hit如何覆盖不同端口的低优先级规则来找出所有发生变化的转发行为,得到转发行为变化集合C;
步骤2.3、更新谓词:以转发行为变化集合为输入,计算移动的谓词集合D。
5.根据权利要求4所述的一种对计算机网络数据平面进行增量验证的方法,其特征在于,所述步骤2.3中的谓词更新方法包括以下步骤:
首先定义两个映射:
Pred:从每个端口到该端口的谓词集合的映射;Port:从每个谓词到该谓词的端口集合的映射;
步骤2.3.1、初始条件下,移动的谓词集合D初始化为空;对于每个行为的变化(δ,from,to),遍历端口from映射的谓词集合,对集合中的每个谓词p,检查谓词p是否与δ有重叠部分,若没有重叠,不对谓词p作任何处理;如果重叠,再判断元素e是否为重写元素,如果元素e不是重写元素,依次执行步骤2.3.2至步骤2.3.4,若元素e为重写元素,则执行步骤2.3.2至步骤2.3.5:
步骤2.3.2、检查谓词p是否属于δ,如果不属于,则通过调用谓词分裂算法将谓词p分裂为两个新的谓词p∧δ和被调用函数Split(p,p1,p2)首先将谓词p替换为p1和p2来更新Port(p)中每个端口的谓词集,此时,p1为p∧δ,p2为然后,使用谓词p的端口集初始化p1和p2的端口集;最后,如果p存在于移动的谓词集合D中,除去移动的谓词集合D中的p,并向移动的谓词集合D中添加p1和p2;
步骤2.3.3、通过调用谓词移动函数将谓词p∧δ从端口from移动到端口to;
步骤2.3.4、检查端口to存有的每个谓词p′,是否与谓词p拥有相同的端口集合:如果没有相同的端口集合,不动作;如果有相同的端口集合,则谓词p′和谓词p具有相同的转发行为,谓词p′和谓词p可以合并,通过调用谓词合并算法,将谓词p′和谓词p合并为新的谓词p∨p′;
步骤2.3.5、对于重写元素的重写表RT,重写表RT的条目(k,v)定义为:键k是一个谓词,值v是一个谓词集,表示重写元素按照重写规则会将谓词k转换为谓词集v;对于重写表RT中的每个条目(k,v),判断集合v中的每一个元素p是否为一个谓词:
如果是一个谓词,则不对p作任何处理;
6.根据权利要求5所述的一种对计算机网络数据平面进行增量验证的方法,其特征在于,在更新PPM过程中,当出现可以合并谓词时,将可以合并的谓词记录下来;当可以合并的谓词总数超过阈值时,再合并所有记录的谓词。
7.根据权利要求1所述的一种对计算机网络数据平面进行增量验证的方法,其特征在于,定义G(V,E,A)表示一个增量转发图,其中,V表示增量转发图的点集,E表示增量转发图的边集,A是每条边上允许通过的谓词集,A:E→2AP是边集到谓词集的映射,步骤3包括以下步骤:
步骤3.1、将V,E和A都初始化为空集;
步骤3.2、对于移动的谓词集合D中的每个谓词δ,迭代δ的端口集Port(δ)中的每个端口port,如果拥有端口port的交换机s1不是V中的一个节点,则把s1加进V中;如果直接与端口port相连的交换机s2不是V中的一个节点,就把s2加进V中;若边(s1,s2)不是集合E中一条边,则把边(s1,s2)加进E中,并初始化集合A(s1,s2)为空集;最后,将移动的谓词δ加进集合A(s1,s2)中。
8.一种对计算机网络数据平面进行增量验证的系统,其特征在于,包括解析系统,网络模型系统和网络更新验证系统,其中,
1)解析系统包括配置文件解析系统与网络更新解析系统;
所述配置文件解析系统用于从网络设备中读取设备配置,并将每个设备配置解析为与厂商无关的配置信息文件并传输给网络构建单元;
所述网络更新解析系统用于从网络设备中获取数据平面状态,并生成增量更新规则传输给元素更新单元;
2)网络模型系统包括网络构建单元、元素更新单元和端口谓词映射模型;
所述网络构建单元用于从配置文件解析系统获取配置信息文件,根据配置信息文件构造设备模型,将每个设备模型解耦为一组端口谓词映射模型的元素,并按网络拓扑和交换机内部功能逻辑,将元素通过端口相互连接,使网络拓扑扩展为PPM拓扑,并将PPM拓扑传递至逻辑转发图构造单元;
所述元素更新单元用于从网络更新解析系统获取增量更新规则,按顺序处理每个增量更新规则中的更新,并更新端口谓词映射模型,得到移动的谓词集合,并将移动的谓词集合传递至逻辑转发图构造单元;
所述网络构建单元与元素更新单元直接作用于端口谓词映射模型上,分别负责端口谓词映射模型的构建与更新;
3)网络更新验证系统包括逻辑转发图构造单元、网络不变量验证单元、网络策略验证单元和链路故障分析单元;
所述逻辑转发图构造单元根据PPM拓扑和移动的谓词集合,用于生成增量转发图;
所述网络不变量验证单元、网络策略验证单元和链路故障分析单元工作在逻辑转发图构造单元生成的增量转发图上;所述网络不变量验证单元用于验证网络不变量是否被违背;所述网络策略验证单元用于验证网络更新后是否满足策略,所述链路故障分析单元用于链路故障分析。
9.一种在数据平面进行实时增量式网络验证的系统,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至权利要求7中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010087150.6A CN111431732B (zh) | 2020-02-11 | 2020-02-11 | 一种对计算机网络数据平面进行增量验证的方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010087150.6A CN111431732B (zh) | 2020-02-11 | 2020-02-11 | 一种对计算机网络数据平面进行增量验证的方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111431732A CN111431732A (zh) | 2020-07-17 |
CN111431732B true CN111431732B (zh) | 2021-04-20 |
Family
ID=71547217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010087150.6A Active CN111431732B (zh) | 2020-02-11 | 2020-02-11 | 一种对计算机网络数据平面进行增量验证的方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111431732B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115051984B (zh) * | 2021-11-22 | 2023-03-28 | 厦门大学 | 一种分布式数据平面验证方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101552729A (zh) * | 2009-05-20 | 2009-10-07 | 杭州华三通信技术有限公司 | 防止标签交换路径振荡的方法和中转标签交换路由器 |
CN101656663A (zh) * | 2008-08-20 | 2010-02-24 | 华为技术有限公司 | 一种mpls多播报文的转发方法、装置及系统 |
CN105764145A (zh) * | 2016-01-27 | 2016-07-13 | 浙江师范大学 | 增量双中继系统中基于误符号率的功率优化分配的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102255984B (zh) * | 2011-08-08 | 2015-06-03 | 华为技术有限公司 | 一种arp请求报文验证方法及装置 |
US9225601B2 (en) * | 2013-06-17 | 2015-12-29 | The Board Of Trustees Of The University Of Illinois | Network-wide verification of invariants |
CN104735060B (zh) * | 2015-03-09 | 2018-02-09 | 清华大学 | 路由器及其数据平面信息的验证方法和验证装置 |
CN110311828B (zh) * | 2019-08-14 | 2021-03-30 | 清华大学 | 一种网络验证的方法、装置、计算机存储介质及电子设备 |
-
2020
- 2020-02-11 CN CN202010087150.6A patent/CN111431732B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656663A (zh) * | 2008-08-20 | 2010-02-24 | 华为技术有限公司 | 一种mpls多播报文的转发方法、装置及系统 |
CN101552729A (zh) * | 2009-05-20 | 2009-10-07 | 杭州华三通信技术有限公司 | 防止标签交换路径振荡的方法和中转标签交换路由器 |
CN105764145A (zh) * | 2016-01-27 | 2016-07-13 | 浙江师范大学 | 增量双中继系统中基于误符号率的功率优化分配的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111431732A (zh) | 2020-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | {APKeep}: Realtime Verification for Real Networks | |
US9270704B2 (en) | Modeling network devices for behavior analysis | |
US9578061B2 (en) | System and method for modeling a networking device policy | |
Yang et al. | Scalable verification of networks with packet transformers using atomic predicates | |
US7139837B1 (en) | Rule engine | |
US20030182582A1 (en) | Network security simulation system | |
Rab et al. | A formal model for network-wide security analysis | |
CN112448954B (zh) | 面向分布式访问控制策略的配置弱点分析方法和系统 | |
CN111193640B (zh) | 采用策略分解和符号执行的有状态数据平面故障检测方法 | |
CN111431732B (zh) | 一种对计算机网络数据平面进行增量验证的方法与系统 | |
Zakharov et al. | A formal model and verification problems for software defined networks | |
Hallahan et al. | Automated repair by example for firewalls | |
Al-Shaer et al. | ConfigChecker: A tool for comprehensive security configuration analytics | |
US20230344755A1 (en) | Determining flow paths of packets through nodes of a network | |
Schnepf et al. | Rule-based synthesis of chains of security functions for software-defined networks | |
Ranathunga et al. | Malachite: Firewall policy comparison | |
Xiang et al. | Modeling and verifying the topology discovery mechanism of OpenFlow controllers in software-defined networks using process algebra | |
Stewart | Computational verification of network programs in coq | |
Zhang et al. | An effective method to generate attack graph | |
EP4072066A1 (en) | Method for automatic derivation of attack paths in a network | |
Ahmed et al. | Firewall rule anomaly detection: A survey | |
Halder et al. | A graph based formalism for detecting flow conflicts in software defined network | |
Rahman et al. | A declarative approach for global network security configuration verification and evaluation | |
Hallé et al. | Distributed firewall anomaly detection through LTL model checking | |
Clark | Firewall policy diagram: Novel data structures and algorithms for modeling, analysis, and comprehension of network firewalls |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |