CN104980431B - 一种sdn中实现流有序的一致性更新方法 - Google Patents

一种sdn中实现流有序的一致性更新方法 Download PDF

Info

Publication number
CN104980431B
CN104980431B CN201510247186.5A CN201510247186A CN104980431B CN 104980431 B CN104980431 B CN 104980431B CN 201510247186 A CN201510247186 A CN 201510247186A CN 104980431 B CN104980431 B CN 104980431B
Authority
CN
China
Prior art keywords
data packet
update
interchanger
consistency
rule
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
Application number
CN201510247186.5A
Other languages
English (en)
Other versions
CN104980431A (zh
Inventor
华景煜
葛鑫
张保佳
仲盛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN201510247186.5A priority Critical patent/CN104980431B/zh
Publication of CN104980431A publication Critical patent/CN104980431A/zh
Application granted granted Critical
Publication of CN104980431B publication Critical patent/CN104980431B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • H04L63/0414Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden during transmission, i.e. party's identity is protected against eavesdropping, e.g. by using temporary identifiers, but is known to the other party or parties involved in the communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information

Abstract

本发明公开一种SDN中实现流有序的一致性更新方法,(1)在SDN领域中,首次给出在存在攻击者的条件下网络更新一致性的解决方案。(2)考虑到现实世界中的多路径能够被逻辑划分成多条单路径。我们提出的流有序更新方案能够在存有攻击者的条件下保证每一条路径上的数据包一致性。与SVSM相比,它的副作用更小,并且具备准确找出坏掉的连接的功能。(3)管理好每一条互不干扰的单流即可。还同时对FOUM进行了扩展,实现比每一个数据包一致性要求更高的每一个阶段的一致性。通过在SDN上的模拟实验,我们提出的方法不论在更新速度还是更新阶段的网络吞吐量,都展现出远远好于SVSM的实验结果。

Description

一种SDN中实现流有序的一致性更新方法
技术领域
本发明涉及一种SDN中实现流有序的一致性更新方法,特别是一种在存有攻击的软件定义网络(Software_Defined Network)中实现流有序的一致性更新方法,目标是能够在存有攻击者的前提下保证每一个数据包的一致性。
背景技术
SDN将数据平面与控制平面进行分离,各个交换机只负责数据的传输平面而控制平面将由控制器直接控制。网络管理员允许在中央控制器上运行程序控制远程交换机上的数据处理协议。与传统网络相比,SDN让管理员能够更加频繁快捷地修改网络配置。
一般而言,一个配置信息的更新往往涉及到对多个交换机中的方案的增加、修改或者删除。因为交换机是分布式分布的,所以我们不能保证更新信息能够在同一时间到达所有的交换机。由于这个原因,从而会在所有交换机都收到信息之前,会出现各个交换机持有不同的配置信息的情况。如果在这一段时间有数据包进入网络,则在不同的交换机会被按照不同的规则处理。这样的不一致性会带来很严重的后果,例如,循环传递,数据包丢失,数据权限控制违规等。
我们以图1中的网络为例来对它进行说明,在图中有三个交换机:一个入口交换机S1和两个内部交换机S2、S3,并且S2和S3分别连接到网络net1和网络net2上。当数据包到达S1的时候,S1会根据该数据包的目的地址,决定把它转发给S2还是S3。在初始化的时候,整个网络中,只打开了S1的防火墙,随着网络运行,当管理员发现S1的过滤数据包的工作已经将要超出S1的负载的时候,管理员就会更新S1中的数据包的处理规则,把S1的工作分担一些给S2和S3来完成,从而给S1减轻负担。交换机的分布式分布的特点使得我们没有办法预测到哪一个交换机先接收到并使用新的处理规则,一个有效的更新机制一定要能够保证S2、S3在S1更新之前完成更新操作。
找到一个好的更新顺序是一个复杂的推理过程,因为它不仅仅考虑各个规则之间的稳定的依赖关系,甚至要穷举所有可能的更新顺序。对于一个规模较大的网络来说,这两个工作都是十分复杂的。在一些特殊的情况下,我们可能会找到一些错误的结果。为了解决这个问题,Katta等人(N.P.Katta,J.Rexford,and D.Walker.Incremental consistentupdates.In Proc.Of 2nd HotSDN,pages 49-54,2013)提出了一种基于版本信息戳的方法(VSM),它是在入口交换机处给数据包标记上它的配置版本信息,并且要求后续的接收到它的内部交换机,按照这些数据包上的版本信息选择正确的方法来处理这些数据包。
学术界一致认为VSM能够得到每一个数据包一致性的结果。也就是说,一个数据包要么都使用以前的旧策略来处理它,要么都使用更新后的新的策略来处理它,不会出现在一些交换机按照旧的规则处理,在另一些交换机按照新的规则处理的混合现象。
尽管VSM是一种很好的解决更新一致性问题的方法,不过它的缺点也非常明显——只能用在没有不存在攻击者的环境中。但是在现实的网络中,没有攻击者是不可能的。一个攻击者会使用各种各样的攻击手段来拦截甚至破坏各个交换机之间的通信,在这种情况下,VSM机制就会失效。具体地说,攻击者如果篡改了存储在数据包中的处理策略版本信息,那么数据包一致性就得不到保证了。不过我们可以在网络入口交换机处添加一个标记和验证版本信息的机制(在下文中,我们称这种改进的方式为安全的基于版本信息戳机制(SVSM))。如果这样做的话,每一个内部交换机都要为每一个穿过的数据包生成一个数字签名,并且还要验证它们,这样就会给整个网络带来非常大的负担。因此,SVSM在真实的网络中并不适用。
发明内容
发明目的:针对现有技术中存在的问题与不足,本发明提供一种在存有攻击的软件定义网络中实现流有序的一致性更新方法;我们的方法能够有效地抵御数据包篡改和数据包丢失等攻击。相对于别的方法:使用数字签名对VSM方法进行简单改进,我们的方法取得更好的效果。首先,对于整个机制中的每一个交换机而言,它仅仅只需要标记和验证一个控制数据包,从而在很大程度上缩短了数据包的处理时间。其次,我们的方案避免了在更新过程中出现一个交换机既需要保存原有的版本信息又要保存新的版本信息的情况,提高了空间利用率。最后,我们的方案还对新规则的实施延迟进行了优化。将我们的方案在自组织的SDN上测试,结果表明,这种方案是十分有效的。
技术方案:一种SDN中实现流有序的一致性更新方法,包括,
处理规则不一致性是由恶意修改数据包的版本信息编号而产生时,通过以下方法解决:
当头交换机head含有版本信息戳的数据包进入网络的时候,入口交换机对数据包的头文件head进行签名;使用函数Sig(header)来完成这步操作,产生的签名记作Sig;将Sig放在payload的头部;此外,为了防止回复攻击,还在头文件head中加入了一个时间戳;内部交换机收到数据包之后,先验证它的Sig,然后再对它进行处理;另外,在控制器和每一个交换机之间的通信也应该使用数字签名保护来保证更新信息的完整性;
如果在某一个交换机处,数据包的签名验证失败,那么这个交换机就会丢掉数据包,在没有接收到下一个数据包之前,从一个路径发送一个警告给控制器;记下在网络中数据包的路径T={S1,……,Si-1,S1,……}和Sj-1与Sj之间的连接Lj;如果Sk是通知控制器出现错误的第一个交换机,则它收到的数据包是已经被修改过的,控制器总结在Lk上已经发生的一些攻击或者错误;如果其他交换机都是可信任的,接下来它更新配置现在的流通过的路径Lj
流有序的更新机制:
A:不存在攻击者的单路径环境中
给出路径的定义:一个路径记作一个没有分支的并且有序的交换机序列,通过它们的转发使得一些数据包穿越网络。
一个单路径更新,它的目标是在一个特定的路径上重新配置流入口的匹配流。
在入口交换机S1的入口数据包要排队等待被处理,队列为在一个队列中的数据包会被以前向有序的方式处理。如果i<j,则有所有在P中并且在S2之后的交换机都有早到达。
假设一段时间之后,管理员想去更新F交换机的策略。出于这个目的,我们让中心控制器把交换机P上的更新信息封装到各自的控制数据包中,然后再把它们插入到入口交换机的入口队列的前面。所以在t2时刻,S1的入口队列在插入之后变成了每一个交换机能够通过的头交换机中的flag来验证它。的有效负载是一个二元组(Update_List,Sig),这里的Update_List是一张更新信息的表单而Sig则是这个表单的数字签名。在Update_List中的每一个更新信息,它的目标都是一个独一无二的交换机,这个交换机被定义为三元组(Si,U(Si),Snext)。在这里,Si代表目标交换机的信息,U(Si)是由Si的更新入口组成的集合。Snext是在Si之后的下一跳这个控制数据包就像普通的数据包一样,在F中沿着路径向目标前进。
当交换机Si的入口队列中一个数据包出列,Si首先检查在头文件head中的flag。如果这是一个数据数据包的话,Si根据在它流标中的现有的策略来处理它。如果这是一个控制数据包,Si则会抽取数据包中的给自己的信息,然后直接利用这个信息来配置所有的更新入口。所有的在之后的Si入口队列中的数据包都将会以Si中的新的规则来处理。更新各个交换机由按照一定数据流向的顺序决定,所以我们称它作流有序的更新机制(FOUM)。在不存在攻击者的单路径环境中,很容易地可以证明FOUM能够保证每一个数据包的一致性。
B:对待攻击的策略
根据攻击模型,在FOUM中的被破坏的连接可能发起一下攻击:
(1)修改控制数据包,包括flag域和更新信息。
(2)完全丢弃控制数据包。
对更新信息的修改,在每一个数据包中都添加一个对更新信息的签名。合法的交换机能够验证签名,从而保证更新信息的完整性。
假设在交换机Si与Si+1之间的连接L已经被破坏了,但是Si与Si+1都是良性的;在这种情况下,不论是L修改控制数据包的flag数据还是直接丢弃控制数据包,Si都不能再接收到它的更新信息;通过观察下一跳确认方法来防卫这种攻击方式。特别地,当一个交换机Srcv接收到一个来自Ssnd的数据包,我们在插入这个数据包到入口队列之前,会回复一个确认信息。Ssnd会等待这个确认信息一段很短的时间,在这段时间,它会停止发送任何数据包给Srcv。如果直到时间用完也没有等到确认信息的话,Ssnd将会在当前流的接下来的数据包中发送一个警告给控制器。为了能够阻止恶意连接伪造一个确认信息,Srcv应该对它的确认信息进行签名。在运用这个对策之后,控制器将会收到一个来自Si的报告,Si声称它自己没有接收到来自Si+1的确认信息。如果管理员知道Si与Si+1都是合法的交换机,那么他就会总结出,有错误发生在L上。
假设Si-1,Si,Si+1是在流路径上的三个连续的交换机,并且Si已经被破坏从而变得不诚实;在这种情况下,如果Si修改来自Si-1的控制数据包的flag数据或者直接丢弃数据包这种下一跳确认方法就不能抓住它,因为Si正常回复Si-1一个合法的确认信息,但是自己并不会向控制器汇报;不过我们发现在这两个攻击之下,下一跳的下一跳Si+1,没有办法收到或者注意到接收到的控制数据包。所以,我们让下一跳的下一跳确认方法来处理这种攻击;换句话说,我们让Si-1等待来自Si+1(下一跳的下一跳)的签名确认消息,而不是Si(下一跳)。如果Si-1在特定的时间内没有收到来自Si+1的确认消息,它将会和在流中的接下来的数据包一样,发送一个警告给控制器;然而,当控制器接收到来自Si-1的警报,管理员必须从其他资源得到额外的信息。否则为了安全起见,他必须将第三个交换机独立开来。
考虑FOUM的两种扩展方式,首先我们提出一种能够自动将多路径更新转化成单路径更新的算法,这就使得FOUM能够处理多条路径更新。接下来我们讨论如何扩展FOUM使得它能够提供内部阶段一致性中的每一个流的一致性。A:处理多条路径更新
假设一个来自用户程序的更新U,是一个对不同交换机的元素更新的混合。把这些更新划分成一些子集合,每个子集合中的更新的交换机都在同一条路径上。控制器在他的配置数据库中保持有两张表。第一张是ActPath[ID,Path],它记录了行动流的路径,另一个是FE_Table[ID,SID,FE,PathID],它记录了每一个流入口之间的关系和它匹配的流的路径。每当一个控制器接收到一个来自交换机的要求重构一条流的请求,它将会将分配给这个流的ActPath加入到这些路径的关系中,和FE_Table对应的流入口中。算法1展示了我们提出的算法。
算法1:将一条多路径更新流转换成多条单路径更新流
输入:一个多路径流的更新,U
输出:单路径更新的集合,Out
开始:
对于U中的每个更新条目u,执行:
路径P=FindPath(FE_Table,u.FE,ActPath);//FindPath函数是查找路径函数,第一个参数是流表FE_Table,第二个参数是该更新u对应的流更新u.FE,第三个参数是行动流的路径。
如果Out集合中不存在该路径,那么:
Out[P.ID].update_list[u.S]←u;//即,将更新条目u加入到P对应的更新列中update_list[u.S],其中u.S代表该更新条目u对应的交换机的ID号。
否则:
创建一个新的控制包Ptu;
初始化Ptu;
Out[P.ID]=Ptu;
对于Out中的每个Ptu,执行:
加密(Ptu);
返回Out
结束
在运行这个算法之后,我们会得到一组控制数据包,每一个对应一个单一的路径,然后控制器将它们插入到入口交换机的输入队列的头部。这么做之后,接下来的不同的路径的更新将会独立地被执行。在所有这些子更新完成之后,整个更新就完成了。然而,如果我们不考虑路径间的依赖关系,得到的单路径更新可能会互相干扰,所以当几个流汇聚到一个交换机时,就会违背每一个数据包的一致性。
首先,当控制器为一个子更新创建一个控制数据包的时候,我们让它检查路径是否与其他路径相连接。如果这样的话,控制器需要进一步决定在这两个子更新的汇聚交换机定义的新规则是否满足两个条件:(1)匹配其他路径上数据包(2)与它们现在的规则不一致。对于这样的规则,让控制器加一条流限制,这样的话,它们在使用之后就只能匹配路径P上的流。
第二,使用上述的方法,一个汇聚交换机定义的规则可能被分成多个,每一个都将被定义在一个单一的路径上。但是把他们分别分开存储在流表中很明显是一种低效的方法。所以,当一个汇聚交换机收到来自不同路径的多个控制数据包,它应该把那些能够合并的规则合并起来存储。
B:每一个阶段的一致性
正如我们上面分析的那样,FOUM满足每一个数据包的一致性。现在我们讨论如何去扩展FOUM以达到每一个阶段的一致性。与(M.Reitblatt,N.Foster,J.Rexford,C.Schlesinger,and D.Walker.Abstractions for network update.In Proc.OfSIGCOMM,pages 323-334,2012)中的第二个每一个阶段的一致性一样,我们在以通配符Clone为特征的OpenFlow的扩展流DevoFlow来实现这个目标。
当一个数据包匹配一个通配符Clone规则,一个DevoFlow交换机创建一个新规则,它精确匹配这个数据包的头文件。所以,接下来的定义在这条微流上的通过这个数据包的头文件数据都将被用新规则来处理。这样实际上帮助交换机保持了一张活跃的流的流表。我们可以将FOUM与这个特征结合起来实现每一个阶段一致性机制。具体来说,我们首先在更新之前打开每一个交换机Clone特征,然后在更新期间,我们使用FOUM来更新每一个交换机的Clone规则。这么做的话,在这个现存阶段中的数据包仍然将会被以就的Clone规则处理,然而在控制数据包之后的新阶段的数据包将会以新的Clone规则处理。这就满足了每一个阶段的一致性。
有益效果:在本文中,我们提出一种高效的更新机制,即使在应用环境中存在攻击者,也能保证每一个数据包处理规则的一致性。与SVSM相比,我们提出的方法具有以下的优点:
(1)我们的更新方法对整个网络只是用一个数字签名,所以能够很快地处理数据包。
(2)每一个交换机只需要存储一种处理策略,并不需要像SVSM那样新旧规则都需要存储,提高了存储的空间利用率。
(3)新策略的更新工作完成较快。
附图说明
图1为一个防火墙的示例;
图2为FOUM示意图;
图3为防范数据包丢弃攻击的下一跳确认机制流程图;
图4为在更新阶段,沿着流的数据包传输说明流程图,(a)SVSM,(b)FOUM;
图5为阐述多路径更新的网络图;
图6为单路径更新性能图,(a)Te(PathLength=4),(b)ε(PathLength=4),(c)Te(PathLength=5),(d)ε(PathLength=5);
图7为路由交接更新性能图,(a)Te,(b)ε;
图8为更新负载均衡性能图,(a)Te,(b)ε。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
II准备工作
在这一部分,我们首先详细叙述在SDN中更新一致性的网络模型,接下来再具体说明攻击模型和本文的设计目标。
A:网络模型
我们在表1中定义了网络模型中常用的基本元素。假设在网络中存在n个交换机{S1,S2,……,Sn}和一个控制器C。数据包是一个二元组(header,payload),其中header和IP数据包的头部是一样的。每一个交换机都包含有多个连接到其他交换机的端口。
表1:网络模型
在我们的模型中,假设在每一个交换机至少有两个不同的信道连接到控制器,以防止链接突然中断。此外,每一个交换机都有一张数据匹配、数据转发表FT。它由一组有序的流入口组成,每一个流入口FE是一个二元组(match field,actions)。如果数据包和某一个流入口匹配(找到的第一个入口),那么这个流入口对应的处理规则就会被用来处理该数据包。对数据包的操作一般是修改数据包和将数据包转发给某个具体端口的输出队列。根据OpenFlow(N.McKeown,T.Anderson,H.Balakrishnan,G.Parulkar,L.Peterson,J.Rexford,S.Shenker,and J.Turner.Openflow:Enabling innovation in campusnetworks.SIGCOMM Comput,Commun.Rev.38(2):69-74,2008)的具体规定,一个交换机可能拥有多张不同的流向转发表。为了操作简单,在这里我们假设每一个交换机只有一个流向转发表。
在运行的时候,控制器可以通过信道控制交换机流入口的添加、修改和删除。我们假设每一个更新U被定义为一个集合这里的每一个更新元素UE(FE,FE′)是一个为特定交换机Si定义的函数。
在所有的元素更新在它们的目标交换机并且生效之后,我们就可以说把网络从一个配置环境转变为另一个配置环境。
由于并不是所有的交换机都是直接与控制器相连接,所以在控制器到每一个交换机之间存在各种各样的延迟。
定义1:(每一个数据包的一致性)假设记作一个交换机表,该函数用来确定数据包流经该网络时是否满足一致性,其中参数代表的是所经过的每个交换机,代表上所对应的流条目。它包含数据包Pt穿过所有网络的交换机列表,也就是它所穿过的流交换机中匹配的流入口。一个更新U是每一个数据包一致性的,也就是说,在更新进程之前,更新过程中,更新进程之后,穿过网络,满足e1∈Old(U)∧e2∈New(U)。
定义2:(每一个阶段的一致性)假设记作在TCP的同一阶段的数据包Sn所要穿过的网络中的交换机列表,即这些交换机对应的匹配交换机的流入口表。一个更新U是每一个阶段一致性的,它的充要条件是在更新之前,更新过程中,更新之后,满足e1∈Old(U)∧e2∈New(U)。
我们将主要关注每一个数据包的一致性。当然也稍微讨论了一下如何去扩展我们的方法去实现每一个阶段的一致性。
B:存在攻击者的模型
我们假设集中式的控制器总是可以信任的,并且分布式的交换机,在初始化的时候就已经分配好了。一个攻击者(敌人)可能会发起物理攻击或者寻找出薄弱的交换机从而达到拦截甚至截取交换机间通信的目的。假如某一个连接被破坏或者被劫持,我们认为攻击者可能对传输中的数据包做两件具有破坏性的事情:
(1)修改数据包或者数据包中更新机制采用的数据域
(2)直接抛弃更新机制采用的数据包
注意到这里并不考虑以独立更新的数据包或域为目标的攻击。也就是说,我们只关注对于更新机制的独一无二的攻击。举个例子来说明这个问题,在VSM中,我们将考虑的是篡改标志域(被VSM采用的)的攻击而不会考虑其他的比如说修改IP头文件--源IP地址,目的IP地址等的攻击行为。尽管这些攻击也有可能会影响更新的一致性,不过它们需要一个更加广泛的防护机制,不在本文的讨论范围内。
C:我们的目的
主要目标是去设计一个强壮的更新机制,它能够在面对上述的攻击的时候保证每一个数据包的一致性。具体来说,我们的设计目标主要需要满足以下三个方面要求:
(1)一致性:在面对我们的存在攻击的模型的时候,更新进程能够保证每一个数据包处理的一致性。
(2)完整性&真实性:交换机能够保证它们对流表运用的每一个更新是正确的,并且是获得控制器发布认证的。换句话说,交换机应该有能力去验证一个来自控制器的更新的完整性。
(3)责任性:控制器有能力去侦测出一个更新U是否是被正确使用。如果有一些错误发生的话,控制器能够迅速地定位不正常的连接或者恶意的交换机。
(4)高效性:更新机制应该尽可能高效
III一种通过修改现存的基于版本编号的简单方法
Reitblatt等人(M.Reitblatt,N.Foster,J.Rexford,C.Schlesinger,andD.Walker.Abstractions for network update.In Proc.Of SIGCOMM,pages323-334,2012)提出一种基于版本信息戳的更新机制,它能够在没有攻击者的网络环境中保证每一个数据包的一致性。
表2:当表1在更新时的配置信息
在没有攻击者的假设前提下,我们很容易就可以证明这种机制是每一个数据包一致性的。不过,就实际情况而言,存在攻击者攻击的话,这个结论将不再成立,如果一个数据包的版本信息在一个交换机被修改的话,那么它在这个交换机之前和之后必定会被以两种不同的规则处理,从而产生不一致性。
改进:上面的不一致性是由恶意修改数据包的版本信息编号而产生的。因此,我们能够很容易地提出一种基于数字签名的改进方案来解决这个问题。具体来说,当头交换机head含有版本信息戳的数据包进入网络的时候,入口交换机对数据包的头文件head进行签名。我们使用函数Sig(header)来完成这步操作,产生的签名记作Sig。我们将Sig放在payload的头部。此外,为了防止回复攻击,我们还在头文件head中(在options区域中)加入了一个时间戳。内部交换机收到数据包之后,先验证它的Sig,然后再对它进行处理。另外,在控制器和每一个交换机之间的通信也应该使用数字签名保护来保证更新信息的完整性。
如果在某一个交换机处,数据包的签名验证失败,那么这个交换机就会丢掉数据包,在没有接收到下一个数据包之前,从一个路径发送一个警告给控制器。我们记下在网络中数据包的路径T={S1,……,Si-1,Si,……}和Sj-1与Sj之间的连接Lj。如果Sk是通知控制器出现错误的第一个交换机,则它收到的数据包是已经被修改过的,控制器总结在Lk上已经发生的一些攻击或者错误。如果其他交换机都是可信任的,接下来它更新配置现在的流通过的路径Lj
为了简单起见,我们将应用了上述改进的VSM命名为SVSM(Security VSM)。在面对我们的攻击模型时,SVSM能够保证每一个数据包的一致性,这一点是显而易见的。此外,它也满足在第二部分的C小节中我们提出的模型的第二和第三个要求。不过,VSM要求为每一个进入网络的数据包都产生一个签名并且在每一个内部交换机都需要验证它们,这样的话,就会极其耗费时间,甚至会破坏整个网络的吞吐量。所以,我们认为这种机制并不适合应用在实际的网络中。
IV:我们提出的方案:流有序的更新机制
尽管SVSM能够通过阻止连接或者交换机修改数据包的版本信息号码的方式来保证数据包的一致性,但是它会给网络通信带来难以承担的副作用。
我们给出一种新的更新机制,它能够有效地提高防范攻击的能力。由于我们的机制是全新的并且在没有攻击者存在的情况下的工作与SVSM也是完全不同的。所以我们首先展示它在没有攻击的环境下的工作,然后再展示如何高效地保护它免受攻击。
A:机制的概述
真实世界中的网络更新通常涉及到多条路径。然而,正如我们接下来将要介绍的一样,一个多路径更新能够被逻辑划分成一组单路径更新。所以我们的基本机制先考虑单路径的情况。
在我们展示我们的方法之前,我们先给出路径的定义。
定义3(路径):一个路径记作一个没有分支的并且有序的交换机序列,通过它们的转发使得一些数据包穿越网络。
一个单路径更新,它的目标是在一个特定的路径上重新配置流入口的匹配流。
例1:在图2中,图中存在一个流F,它沿着路径P=S1→S2→…→Sn。这些更新只改变流F在S1,S2,……,Sn上的匹配策略,这就是典型的单路径更新。
在例1中,我们假设在有的时候,在入口交换机S1的入口数据包要排队等待被处理,队列为正如我们所知道的那样,在一个队列中的数据包会被以前向有序的方式处理。所以,只要我们假设如果i<j,则有所有在P中并且在S2之后的交换机都有早到达。那么我们就可以利用这个特点来设计一种新的更新机制。
假设一段时间之后,管理员想去更新F交换机的策略。出于这个目的,我们让中心控制器把交换机P上的更新信息封装到各自的控制数据包中,然后再把它们插入到入口交换机的入口队列的前面。所以在t2时刻,S1的入口队列在插入之后变成了每一个交换机能够通过的头交换机中的flag来验证它。的有效负载是一个二元组(Update_List,Sig),这里的Update_List是一张更新信息的表单而Sig则是这个表单的数字签名。在Update_List中的每一个更新信息,它的目标都是一个独一无二的交换机,这个交换机被定义为三元组(Si,U(Si),Snext)。在这里,Si代表目标交换机的信息,U(Si)是由Si的更新入口组成的集合。Snext是在Si之后的下一跳这个控制数据包就像普通的数据包一样,在F中沿着路径向目标前进。
当交换机Si的入口队列中一个数据包出列,Si首先检查在头文件head中的flag。如果这是一个数据数据包的话,Si根据在它流标中的现有的策略来处理它。如果这是一个控制数据包,Si则会抽取数据包中的给自己的信息,然后直接利用这个信息来配置所有的更新入口。注意到,与VSM不同,这里的配置方案将会使用新的策略取代旧的策略,而不是把它们两个都保存起来。这样做的话,所有的在之后的Si入口队列中的数据包都将会以Si中的新的规则来处理。举个例子来说明这个情况,在例1中,如果在S2中的入口队列等待的数据包是那么则表示将会被以旧的规则来处理,其他所有剩下的数据包将会以新的规则来处理。最后,这个控制数据包将会被转发给这条路径上的下一跳的交换机Snext。整个处理过程如图2所示。因为这个机制更新各个交换机由按照一定数据流向的顺序决定,所以我们称它作流有序的更新机制(FOUM)。在不存在攻击者的单路径环境中,很容易地可以证明FOUM能够保证每一个数据包的一致性。我们将会扩展我们模型来面对存在攻击者的环境,从而使得这个机制在存在攻击者的环境中也有效。
与VSM相比,我们提出的机制有以下几个优点:
(1)在更新阶段,每一个交换机要么只能保持旧的规则要么只保持新的规则,但是从不会两个都拥有,不需要像VSM那样耗费两份的存储空间,那样的话,代价昂贵并且耗能巨大。
(2)只要更新数据包一到达入口交换机,新的规则就开始被使用去处理数据包。不过,SVSM需要等到直到所有的内部交换机都收到它们的更新之后才新的规则才开始生效。所以,我们提出的新机制生效更快。
B:对待攻击的策略
基本的机制在时间空间两方面都比较高效。但是,它并没有考虑到我们在第二部分中描述的存在攻击者的模型。讨论如何去保护FOUM使得它能够在面对攻击的时候也能保证每一个数据包的一致性。
根据我们的攻击模型,在FOUM中的被破坏的连接可能发起一下攻击:
(1)修改控制数据包,包括flag域和更新信息。
(2)完全丢弃控制数据包。
对更新信息的修改能够很容易地被阻止,因为我们可以在每一个数据包中都添加一个对更新信息的签名。合法的交换机能够验证签名,从而保证更新信息的完整性。因为只需要验证控制数据包的签名,所以,我们认为整个网络的吞吐量并不会像SVSM那样受到严重的影响。
如果一个控制数据包的flag被修改,接下来的一系列的交换机都会把这个控制数据包当成一个数据数据包,结果就会错过发给它们的更新信息,因此处理规则就不会被更新。这个可能会违反每一个数据包一致性,因为前面的交换机已经配备了新的规则,而后面的交换机却没有。不幸的事情是,运用数字签名技术来保护这一块的数据并不合适,因为我们必须为每一个进入网络的数据包进行签名而不仅仅是控制数据包,这样的情况是非常低效的就像我们在SVSM中描述的那样。事实上,我们发现这种攻击与那些直接丢弃数据包的做法有同样的效果。我们现在对这两种攻击给出一种统一的对策。
不失普遍性,我们假设在交换机Si与Si+1之间的连接L已经被破坏了,但是Si与Si+1都是良性的。在这种情况下,不论是L修改控制数据包的flag数据还是直接丢弃控制数据包,Si都不能再接收到它的更新信息。我们因此提出一个基于这个观察下一跳确认方法来防卫这种攻击方式。特别地,当一个交换机Srcv接收到一个来自Ssnd的数据包,我们在插入这个数据包到入口队列之前,会回复一个确认信息。Ssnd会等待这个确认信息一段很短的时间,在这段时间,它会停止发送任何数据包给Srcv。如果直到时间用完也没有等到确认信息的话,Ssnd将会在当前流的接下来的数据包中发送一个警告给控制器。当然,为了能够阻止恶意连接伪造一个确认信息,Srcv应该对它的确认信息进行签名。在运用这个对策之后,在上例中的控制器将会收到一个来自Si的报告,Si声称它自己没有接收到来自Si-1的确认信息。如果管理员知道Si与Si+1都是合法的交换机,那么他就会总结出,有错误发生在L上。
这种下一跳确认的方法肯定会减慢数据包的传输。不过由于我们只对控制数据包采用这种方法,所以它的副作用并不是很严重。我们的理论分析和实验结果都说明FOUM应用这种改进方法与SVSM相比会产生小很多的对网络数据吞吐量的副作用。
为了使我们的机制尽可能地安全,我们进一步考虑一个改进的攻击模型,在这个模型中,一些交换机被破坏,从而变得不诚实。假设Si-1,Si,Si+1是在流路径上的三个连续的交换机,并且Si已经被破坏从而变得不诚实。在这种情况下,如果Si修改来自Si-1的控制数据包的flag数据或者直接丢弃数据包这种下一跳确认方法就不能抓住它,因为Si正常回复Si-1一个合法的确认信息,但是自己并不会向控制器汇报。不过我们发现在这两个攻击之下,下一跳的下一跳Si+1,没有办法收到或者注意到接收到的控制数据包(我们假设恶意的交换机直接并不互相勾结)。所以,我们让下一跳的下一跳确认方法来处理这种攻击。换句话说,我们让Si-1等待来自Si+1(下一跳的下一跳)的签名确认消息,而不是Si(下一跳)。如果Si-1在特定的时间内没有收到来自Si+1的确认消息,它将会和在流中的接下来的数据包一样,发送一个警告给控制器。然而,当控制器接收到来自Si-1的警报,情况将会变得有一点复杂,因为三种情况中的任意一种情况都有可能发生:Si-1可能诱发一个错误的警报,Si可能丢弃控制数据包,Si+1也可能故意拒绝承认Si-1为了更精确地查明这个问题,管理员必须从其他资源得到额外的信息。否则为了安全起见,他必须将第三个交换机独立开来。
C:分析
我们将从以下四个方面分析FOUM
每一个数据包的一致性:上述我们已经证明FOUM能够保证在单流的数据更新上不存在攻击者的条件下实现每一个数据包的一致性。我们现在分析是否能改进FOUM能面对我们的攻击模型,保持在存在攻击的情况下实现每个数据包的一致性。
我们考虑在第II节B中考虑过的攻击的影响。假设在一个特定的流,所有的包括Si之间的交换机和连接都是合法的,一个控制数据包现在到达交换机Si。在这种情况下,所有在Si之前的交换机,在接收到之后的数据包就会采用新的规则对它们进行处理。根据FOUM,Si在检查它的完整性之后,将会转发给Si+1。如果下一个连接,在Si与Si+1之间被破坏并且标志数据被修改或者直接丢弃Si无法接受到来自Si+1的回复。结果导致,Si能侦测出这个攻击并不会转发接下来的数据包给Si+1,这就阻止了在Si之后的交换机,将会被使用旧规则处理而产生的不一致性。所以我们得到以下结论:
定理1:改进的FOUM在面对第II节中的攻击模型时,能够保证每一个数据包的一致性。
(1)完整性&真实性:因为每一个控制数据包都是有控制器签名的,任何一个接收到它的交换机能够很容易地验证它的里面的更新信息的完整性和真实性。所以,改进的FOUM能够保证应用更新的完整性和真实性。
(2)责任性:根据我们在第四部分B中的分析,下一跳确认方法能帮助管理员准确地找出有问题的连接。甚至在改进的攻击模型中,下一跳的下一跳确认方法也能准确查明一个或几个有嫌疑的交换机。所以,我们认为改进的FOUM满足责任性需求。
(3)高效性:把SVSM的效率与改进的FOUM进行对比,我们得到以下定理:
定理2:改进的FOUM(应用了下一跳确认保护)在网络吞吐量上比SVSM要好很多。
证明:假设将要被更新的流路径含有n个交换机,在两个邻近的交换机间传送一个数据包的时间为一个时间单位(包括匹配流入口的时间),产生一次签名和验证签名的时间代价都是t。通常情况下t>>1。我们也假设,对于这个流而言,基于SVSM的更新需要持续时间为T个时间单位。根据我们在图4a中的举例分析,我们认为,在SVSM中,它将花费(n+1)t时间单位,从第一个数据包到达最后一个交换机Sn的输出出口。接下来的数据包的到达时间间隔为t。在这个流中,在T之间的总共穿过网络的数据包的数量是
对FOUM应用下一跳确认保护机制,第一个数据包到达Sn的输出口所花费的时间是(n+2)t时间单位。这个时间是比VSM的时间长的。不过,后面的交换机到达的时间间隔只有1个时间单位,这就比SVSM快很多了。所以,在这个流中,所有的数据包穿过整个网络,在T之间是M=T-(n+2)t+1。
基于以上两个等式,我们可以很容易地得到,当T>nt+2t*t/(t+1)的时候,FOUM的流吞吐量比SVSM的流吞吐量要好。回顾一下,VSM的第三步交换机必须去等待一段时间,让所有标记为旧版本信息的数据包离开网络。这个阶段的时间应该比nt要长,这段时间是数据包穿过路径的最短时间,考虑到存在意想不到的延迟和阻塞。此外由于内部交换机并不能预测入口交换机使用新的版本号标记新的到来的数据包,它们必须在至少第二步之前验证收到的数据包的版本信息标记。在这一步入口交换机必须去验证来自控制器的更新信息的完整性,这一步骤的之一段时间至少也与2t*t(t-1)相仿。所以,上面的不等式是在真实世界中满足的,我们也就得到上述定理的结论。
V未来的FOUM的扩展
考虑FOUM的两种扩展方式,首先我们提出一种能够自动将多路径更新转化成单路径更新的算法,这就使得FOUM能够处理多条路径更新。接下来我们讨论如何扩展FOUM使得它能够提供内部阶段一致性(在(N.P.Katta,J.Rexford,and D.Walker.Incrementalconsistent updates.In Proc.Of 2nd HotSDN,pages49-54,2013)中的每一个流的一致性),它比每一个数据包的一致性要求要高。
A:处理多条路径更新
很多情况下,真实世界中的更新涉及到不止一条路径。下面我们仅仅考虑一种简单的改变流路径的更新。它首先必须建立一条新的路径,并释放旧的路径,这个就很明显涉及到多条路径。所以我们需要一个算法去实现将多条路径更新转换成一组单路径的更新。
在我们的设计中,主要的任务是在控制器上操作,在应用层上对用户是透明的。我们假设一个来自用户程序的更新U,是一个对不同交换机的元素更新的混合。在这里,UE()是在等式(1)中定义的。把这些更新划分成一些子集合,每个子集合中的更新的交换机都在同一条路径上。
为了这个目标,我们让控制器在他的配置数据库中保持有两张表。第一张是ActPath[ID,Path],它记录了行动流的路径,另一个是FE_Table[ID,SID,FE,PathID],它记录了每一个流入口之间的关系和它匹配的流的路径。每当一个控制器接收到一个来自交换机的要求重构一条流的请求,它将会将分配给这个流的ActPath加入到这些路径的关系中,和FE_Table对应的流入口中。算法1展示了我们提出的算法。
算法1:将一条多路径更新流转换成多条单路径更新流
输入:一个多路径流的更新,U
输出:单路径更新的集合,Out
开始:
对于U中的每个更新条目u,执行:
路径P=FindPath(FE_Table,u.FE,ActPath);//FindPath函数是查找路径函数,第一个参数是流表FE_Table,第二个参数是该更新u对应的流更新u.FE,第三个参数是行动流的路径。
如果Out集合中不存在该路径,那么:
Out[P.ID].update_list[u.S]←u;//即,将更新条目u加入到P对应的更新列中update_list[u.S],其中u.S代表该更新条目u对应的交换机的ID号。
否则:
创建一个新的控制包Ptu;
初始化Ptu;
Out[P.ID]=Ptu;
对于Out中的每个Ptu,执行:
加密(Ptu);
返回Out
结束
在运行这个算法之后,我们会得到一组控制数据包,每一个对应一个单一的路径,然后控制器将它们插入到入口交换机的输入队列的头部。这么做之后,接下来的不同的路径的更新将会独立地被执行。在所有这些子更新完成之后,整个更新就完成了。然而,如果我们不考虑路径间的依赖关系,得到的单路径更新可能会互相干扰,所以当几个流汇聚到一个交换机时,就会违背每一个数据包的一致性。
例2:考虑在图5中的网络,我们假设存在流flow1和flow2分别沿着路径S1→S2→S4→S5和S1→S3→S4→S5。在流flow1和流flow2中的数据包的目标地址分别为10.0.0.0和10.0.0.1。在S3上的旧策略记作FE0=(10.0.0.*,Action0)能够匹配flow1和flow2。现在管理员想使用一个新的规则FEn=(10.0.0.*,Actionn)来替换FE0,并且Actionn不等于Action0。根据上面的解决方案,对于flow1和flow2来说,这个更新信息将会被归类到控制数据包,记作不过,通常来说,同时到达S3是不大可能的。不失普遍性,我们假设流flow1先到达。在这种情况下,就可能存在流flow2中的数据包,在之后但在之前到达S3。这些数据包在S3之前与之后就会被以不同的处理方式处理,从而产生不一致性。
我们提出一种改进的方法,它主要由两部分组成。
首先,当控制器为一个子更新创建一个控制数据包的时候,我们让它检查路径是否与其他路径相连接。如果这样的话,控制器需要进一步决定在这两个子更新的汇聚交换机定义的新规则是否满足两个条件:(1)匹配其他路径上数据包(2)与它们现在的规则不一致。对于这样的规则,我们让控制器加一条流限制,这样的话,它们在使用之后就只能匹配路径P上的流。举个例子,在例2中,新的规则(10.0.0.*,Actionn)对S3来说满足上述的两个条件,在每一条流中。所以,我们加一条流限制,并且把它替换成(10.0.0.0,Actionn),同时,(10.0.0.1,Actionn)分别又在中。这样做之后,不论两个控制数据包中的哪一个早到达S3,在另一个到达之前,新的规则都只能影响到在它自己的路径上的数据包,这个规则阻止了数据包违反每一个数据包的一致性。
第二,使用上述的方法,一个汇聚交换机定义的规则可能被分成多个,每一个都将被定义在一个单一的路径上。但是把他们分别分开存储在流表中很明显是一种低效的方法。所以,当一个汇聚交换机收到来自不同路径的多个控制数据包,它应该把那些能够合并的规则合并起来存储。举个例子,两个规则(10.0.0.0,Actionn)与(10.0.0.1,Actionn),在我们例子中,最后将会被再次合并成(10.0.0.*,Actionn)。
B:每一个阶段的一致性
正如我们上面分析的那样,FOUM满足每一个数据包的一致性。现在我们讨论如何去扩展FOUM以达到每一个阶段的一致性。与(M.Reitblatt,N.Foster,J.Rexford,C.Schlesinger,and D.Walker.Abstractions for network update.In Proc.OfSIGCOMM,pages 323-334,2012)中的第二个每一个阶段的一致性一样,我们在以通配符Clone为特征的OpenFlow的扩展流DevoFlow来实现这个目标。
当一个数据包匹配一个通配符Clone规则,一个DevoFlow交换机创建一个新规则,它精确匹配这个数据包的头文件。所以,接下来的定义在这条微流上的通过这个数据包的头文件数据都将被用新规则来处理。这样实际上帮助交换机保持了一张活跃的流的流表。我们可以将FOUM与这个特征结合起来实现每一个阶段一致性机制。具体来说,我们首先在更新之前打开每一个交换机Clone特征,然后在更新期间,我们使用FOUM来更新每一个交换机的Clone规则。这么做的话,在这个现存阶段中的数据包仍然将会被以就的Clone规则处理,然而在控制数据包之后的新阶段的数据包将会以新的Clone规则处理。这就满足了每一个阶段的一致性。
VI评估
来讨论我们的实验,实验是在自组织的SDN测试平台上评估FOUM。结果说明它是高效的。
A:实验搭建
为了能够实现评价的目的,我们构建了一个小规模的测试平台,它由6个服务器分别模拟5个交换机和一个控制器,我们使用服务器模拟交换机是因为我们的机制(VSM也一样)要求去修改交换机的转发程序,这一功能很多常见的交换机都没有办法实现。这些服务器的基本信息在表XX中展示。我们选取了那些远离连接交换机的主机。为了弥补它们,我们在加入交换机建立一个数据包产生器,以便在需要的时候产生数据包。
在我们的试验中,我们考虑一下三种情况:
(1)单路径更新:在这个最简单的测试场景中,我么假设5个交换机形成一条数据流的路径。控制器想在这条流上的每一个交换机添加一个策略。我们改变路径的长度来评估流长度对于更新效率的影响。
(2)按路径传送更新:考虑到图5中的网络。我们假设,一开始的时候,有一条流沿着S1→S2→S4→S5的路径。不过,有的时候,因为管理员想要使用S2来达到其他的目的,他发布一个更新去改变这个流的路径为S1→S3→S4→S5。这个更新涉及到两条并不互相干扰影响的路径。
(3)负载平衡更新:仍然考虑图5中的网络。我们假设,一开始,只有一条流沿着路径S1→S2→S4→S5。在这条流中的数据包的目的地是10.0.0.0或10.0.0.1。交换机S4使得防火墙函数取检查每一个穿过它的数据包。然而,由于负载的增加,S4的数据包修改任务工作变成这个流的瓶颈。管理员然后实施命令来减负目的为10.0.0.1的流更新路径S1→S3→S4→S5。此外,数据包检查任务也被分别卸下给S2和S3。这个更新涉及到两条互相干扰的路径。
在我们的实验中,我们介绍两个评价准则来评价FOUM的效果和其他两个基线(VSM和SVSM)。
(1)这里的TPduring和TPbefore是在网络更新处理之前和在更新处理期间的吞吐量。一个更大一点的ε反映对数据吞吐量的副作用更小并且这个更新就更高效。
(2)Te是从更新开始直到第一个使用新的规则处理数据的数据包离开网络消耗的时间。一个更小的Te反映新规则生效更快,即更新更高效。
为了简单期间,接下来所有的服务器的business逻辑都是直接操作的。这个与真实世界的交换机是不同的它们的business逻辑多数都在网络层发生。然而,我们认为我们的实验仍然是有意义的,因为(1)在两层之间的数据传输的时间代价能被认为交换机间额外的链接延迟。(2)我们在同样的测试平台上比较FOUM与VSM和SVSM。
数据包生产器产生的每一个数据包大小为1352B。我们为每一个交换机设置一个队列来保存等待处理的数据包,队列的大小为20000B,我们使用基于RSA的签名机制来产生需要的签名,它的密钥大小是256bits。
B:实验结果
我们首先在第一个场景下评价前面的三种机制,我们改变流的长度为4或者5。结果在图6中展示。我们发现FOUM在两个度量方面都比SVSM要好。特别地,SVSM由于更新使得网络吞吐量降低了20%比FOUM要多。此外,在SVSM与FOUM中,Te的值随着数据率增加,吞吐量随着数据率下降。这个反映,如果网络变得更加繁忙,更新效率就会下降。我们也发现,更新效率会因为路径长度的增加而稍微下降。
第二个场景和第三个场景分别在图7和图8中展示。我们得到相似的结论,就是FOUM在两个方面都比SVSM要好,并且区别甚至更大。这个结果很好地说明FOUM比SVSM具有更好的更新效率。
VII相关工作
Reitblatt等人(M.Reitblatt,N.Foster,J.Rexford,C.Schlesinger,andD.Walker.Abstractions for network update.In Proc.Of SIGCOMM,pages 323-334,2012。M.Reitblatt,N.Foster,J.Rexford,and D.Walker.Consistent updatesforsoftware-defined networks:Change you can believe in!In Proc.Of 2nd HotSDN,pages 55-60.ACM,2013)是第一批从事SDN中一致性研究的人,他们提出一种版本信息戳的更新机制来确保一致性。这个机制为每一个配置信息分配一个版本编号,并且在它们进入网络的入口端口的时候将它们现在的版本信息编号标记在头文件中。
更新过程由4个步骤组成
(1)在内部交换机中安装新规则的时候也保留旧的规则
(2)一旦步骤1完成,在入口交换机上安装新的策略并且给进入的数据包标记一个新的版本信息号码
(3)等待直到所有匹配旧的版本号码的数据包都离开网络
(4)删除所有的旧的规则。
MLGeer等(R.McGeer.A safe,efficient update protocol for openflownetworks.In Proc.Of 1st HotSDN,pages 61-66,2012)阐述了在OpenFlow网络中的一种新的更新协议这个协议的特点(M.Reitblatt,N.Foster,J.Rexford,C.Schlesinger,andD.Walker.Abstractions for network update.In Proc.Of SIGCOMM,pages323-334,2012)在于它在任何时候值保有一组规则节省了交换机的资源,在更新期间,规则的改变对数据包的影响将会被发送给控制器并且在新的规则实施后会被重新发送给交换机。不过,与(M.Reitblatt,N.Foster,J.Rexford,C.Schlesinger,and D.Walker.Abstractions fornetwork update.In Proc.Of SIGCOMM,pages323-334,2012)中的方法相比,节约资源的代价是较慢的数据传输和较高的控制器工作负担。Katta等人在(N.P.Katta,J.Rexford,andD.Walker.Incremental consistent updates.In Proc.Of 2nd HotSDN,pages 49-54,2013)中介绍一种新的算法,它是一种一致性更新的时间与空间的交易,它们把更新打破成几轮的操作,并且每一轮只完成一部分的更新。MLGeer等在(R.McGeer.A correct,zero-overhead protocol for network updates.In Proc.ofHotSDN,pages 161-162,2013)中提出一种新的更新协议,它通过对更新队列的逻辑回归来实现的,它既不没有空间管理负担也不需要在更新阶段把数据传输给临时存储交换机。Peresini等人(P.Peresini,M.Kuzniar,N.Vasic,M.Canini,and D.Kostic.Of.cpp:consistent packet processingfor openflow.In Proc.ofHotSDN,pages 97-102,2013)研究研究了在控制器内部的不一致性而不是交换机的。
上面提到的结果非常好,并且通过一些更新时间和带宽的代价节约了空间。不过,它们都没有把安全考虑在内,因为他们都是在没有攻击者存在的环境中进行的实验。我们提出的方法在存在攻击者的环境下甚至有的连接和交换机已经被破坏的情况下保证每一个数据包的一致性。
我们提出一种在OpenFlow上的安全高效的更新机制,并且在六台服务器组成的自组织SDN网络上测试了它的更新时间和带宽的性能。能够在存在攻击者的环境中,甚至是在有恶意链接的网络中,保证每一个数据包的一致性。此外,在更新阶段有意外发生的时候,能够帮助控制器准确地找出可能有问题的交换机或链接。实验结果也说明我们提出的方案十分高效。

Claims (2)

1.一种SDN中实现流有序的一致性更新方法,其特征在于,包括:
当交换机Si的入口队列中一个数据包出列,Si首先检查在头文件head中的flag;如果出列数据包是一个数据数据包的话,Si根据在它流表 中的策略来处理它;如果是一个控制数据包,Si则会抽取数据包中的给自己的信息,然后直接利用这个信息来配置所有的更新入口;所有的在控制数据包之后的Si入口队列中的数据包都将会以Si中的新的规则来处理;更新各个交换机由按照一定数据流向的顺序决定,所以称它作流有序的更新机制,简称FOUM;
根据攻击模型,在FOUM中的被破坏的连接可能发起以下攻击:
(1)修改控制数据包,包括flag域和更新信息;
(2)完全丢弃控制数据包;
假设在交换机Si与Si+1之间的连接L已经被破坏了,但是Si与Si+1都是良性的;在这种情况下,不论是L修改控制数据包的flag数据还是直接丢弃控制数据包,Si都不能再接收到它的更新信息;通过观察下一跳确认方法来防卫这种攻击方式;下一跳确认方法为:当一个交换机Srcv接收到一个来自交换机Ssnd的数据包,在插入这个数据包到入口队列之前,会回复一个确认信息;Ssnd会等待这个确认信息一段时间,在这段时间,它会停止发送任何数据包给Srcv;如果直到时间用完也没有等到确认信息的话,Ssnd将会在当前流的接下来的数据包中发送一个警告给控制器;为了能够阻止恶意连接伪造一个确认信息,Srcv对它的确认信息进行签名;之后,控制器将会收到一个来自Si的报告,Si声称它自己没有接收到来自Si+1的确认信息;如果管理员知道Si与Si+1都是合法的交换机,那么他就会总结出,有错误发生在L上。
2.如权利要求1所述的SDN中实现流有序的一致性更新方法,其特征在于:进一步提出一种能够自动将多路径更新转化成单路径更新的算法,这就使得FOUM能够处理多条路径更新,扩展FOUM使得它能够提供内部阶段一致性中的每一个流的一致性,具体包括:
A:处理多条路径更新
在运行FOUM算法之后,得到一组控制数据包,每一个对应一个单一的路径,然后控制器将它们插入到入口交换机的输入队列的头部;
第一,当控制器为一个子更新创建一个控制数据包的时候,让它检查路径是否与其他路径相连接;如果这样的话,控制器需要进一步决定在这两个子更新的汇聚交换机定义的新规则是否满足两个条件:(1)匹配其他路径上数据包(2)与它们现在的规则不一致;对于这样的规则,让控制器加一条流限制,这样的话,它们在使用之后就只能匹配路径P上的流;
第二,使用上述第一的方法,一个汇聚交换机定义的规则可能被分成多个,每一个都将被定义在一个单一的路径上;但是把他们分别分开存储在流表中很明显是一种低效的方法;所以,当一个汇聚交换机收到来自不同路径的多个控制数据包,它把那些能够合并的规则合并起来存储;
B:每一个阶段的一致性
在以通配符Clone为特征的OpenFlow的扩展流DevoFlow来实现每一个阶段的一致性;
当一个数据包匹配一个通配符Clone规则,一个DevoFlow交换机创建一个新规则,它精确匹配这个数据包的头文件;所以,接下来的定义在这条微流上的通过这个数据包的头文件数据都将被用新规则来处理;这样实际上帮助交换机保持了一张活跃的流的流表;将FOUM与这个特征结合起来实现每一个阶段一致性机制;首先在更新之前打开每一个交换机Clone特征,然后在更新期间,使用FOUM来更新每一个交换机的Clone规则;这么做的话,在这个现存阶段中的数据包仍然将会被以旧的Clone规则处理,然而在控制数据包之后的新阶段的数据包将会以新的Clone规则处理;这就满足了每一个阶段的一致性。
CN201510247186.5A 2015-05-14 2015-05-14 一种sdn中实现流有序的一致性更新方法 Active CN104980431B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510247186.5A CN104980431B (zh) 2015-05-14 2015-05-14 一种sdn中实现流有序的一致性更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510247186.5A CN104980431B (zh) 2015-05-14 2015-05-14 一种sdn中实现流有序的一致性更新方法

Publications (2)

Publication Number Publication Date
CN104980431A CN104980431A (zh) 2015-10-14
CN104980431B true CN104980431B (zh) 2018-09-21

Family

ID=54276536

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510247186.5A Active CN104980431B (zh) 2015-05-14 2015-05-14 一种sdn中实现流有序的一致性更新方法

Country Status (1)

Country Link
CN (1) CN104980431B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107528794B (zh) 2016-06-19 2021-01-15 华为技术有限公司 一种数据处理方法和装置
CN110019386B (zh) * 2017-09-05 2021-01-15 中国移动通信有限公司研究院 一种流数据处理方法及设备
CN107995118B (zh) * 2018-01-18 2021-06-08 电子科技大学 一种保证一般一致性的软件定义数据中心网络更新方法
CN109818864B (zh) * 2018-12-12 2021-02-23 中国人民解放军战略支援部队信息工程大学 软件定义网络中数据流路径更新方法及装置
CN110225008B (zh) * 2019-05-27 2020-07-31 四川大学 一种云环境下sdn网络状态一致性验证方法
CN111556054B (zh) * 2020-04-28 2021-04-06 南京大学 针对sdn的虫洞攻击的检测方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103607379A (zh) * 2013-11-04 2014-02-26 中兴通讯股份有限公司 一种软件定义网络安全实施方法、系统及控制器
CN103825825A (zh) * 2014-01-18 2014-05-28 浙江大学 一种灵活可扩展且安全的域间拓扑发现方法
CN104113482A (zh) * 2014-07-23 2014-10-22 华为技术有限公司 流表更新的方法、装置和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9350607B2 (en) * 2013-09-25 2016-05-24 International Business Machines Corporation Scalable network configuration with consistent updates in software defined networks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103607379A (zh) * 2013-11-04 2014-02-26 中兴通讯股份有限公司 一种软件定义网络安全实施方法、系统及控制器
CN103825825A (zh) * 2014-01-18 2014-05-28 浙江大学 一种灵活可扩展且安全的域间拓扑发现方法
CN104113482A (zh) * 2014-07-23 2014-10-22 华为技术有限公司 流表更新的方法、装置和系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Abstractions for Network Update;M. Reitblatt等;《In Proc. of SIGCOMM》;20121231;第323-334页 *
Consistent updates for software-defined networks- change you can believe in;M. Reitblatt等;《Proceedings of the 10th ACM Workshop on Hot Topics in Natworks,HotNets-X》;20111231;第7:1-7:6页 *
Incremental Consistent Updates;Katta等;《Proc.of 2nd HotSDN》;20131231;第49-54页 *
基于分类的软件定义网络流表更新一致性方案;周烨 等;《电子与信息学报》;20130731;第35卷(第7期);第1746-1752页 *

Also Published As

Publication number Publication date
CN104980431A (zh) 2015-10-14

Similar Documents

Publication Publication Date Title
CN104980431B (zh) 一种sdn中实现流有序的一致性更新方法
US10868893B2 (en) Network interface device
US10728176B2 (en) Ruled-based network traffic interception and distribution scheme
US20180115470A1 (en) Security policy analysis framework for distributed software defined networking (sdn) based cloud environments
CN1823514B (zh) 使用基于角色的访问控制来提供网络安全的方法和装置
US9621463B2 (en) System and method for context aware network
CN103930882B (zh) 具有中间盒的网络架构
US7886145B2 (en) Method and system for including security information with a packet
CN106664251A (zh) 网络环境中的双向流粘性
CN107925589A (zh) 将远程设备管理属性分发给服务节点以用于服务规则处理
CN107210966A (zh) 在软件定义组网(sdn)系统中使用l4‑l7报头转发没有重组的分组片段
CN107040462A (zh) 路由方法和中间路由器
CN106209684B (zh) 一种基于时间触发转发检测调度的方法
CN106105115A (zh) 网络环境中由服务节点始发的服务链
CN106789542A (zh) 一种云数据中心安全服务链的实现方法
CN105847034A (zh) 源验证和路径认证方法及装置
CN108353068A (zh) Sdn控制器辅助的入侵防御系统
CN110226155A (zh) 在主机上收集和处理上下文属性
CN108200092A (zh) 基于nfv技术加速报文acl匹配处理的方法及系统
CN107800626A (zh) 数据报文的处理方法、装置及设备
Pisharody et al. Security policy checking in distributed SDN based clouds
JP2018520524A (ja) 悪意があるデータフローのネットワーク侵入を検知および防止するシステムおよび方法
CN112929200A (zh) 一种面向sdn多控制器的异常检测方法
CN104579788B (zh) 一种分布式动态路由网络的错误定位方法
Hua et al. FOUM: A flow-ordered consistent update mechanism for software-defined networking in adversarial settings

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant