基于区块链的SDN数据平面错误流规则检测

来源:优秀文章 发布时间:2022-12-07 点击:

张艳,杨喜敏,唐菀*,刘艳萍,刘宇宸

(1 中南民族大学 计算机科学学院,武汉 430074;
2 华灵云科技有限公司,杭州 311121)

软件定义网络(Software-Defined Networking,SDN)是一种新型的网络体系架构,具有转控分离、集中控制的特点.它的核心思想是将数据平面和控制平面解耦,通过控制平面下发流规则,从而实现灵活高效地网络流量控制[1-2].随着技术的发展及服务需求的增加,网络攻击更加频繁,具有隐蔽性、持续性的网络威胁增多[3].但由于SDN数据平面中的转发设备只负责转发操作,并不具备识别流规则是否正确的功能,如果交换机按照第三方行动者下发的错误流规则转发数据流,将造成网络拥塞、信息泄露、网络瘫痪等严重后果.因此,保证SDN数据平面接收到的流规则的正确性对SDN网络来说至关重要[4-5].

区块链技术将交易信息打包为区块,通过数字签名实现数据的安全传输、共识机制保证数据的一致性、哈希函数实现数据的可追溯与不可篡改,来解决数据的可信问题,为检测SDN 数据平面中第三方行动者下发的错误流规则提供了新的解决方案[6-8].然而,在实际应用中,区块链节点通过共识机制完成一致性的效果受网络影响严重.当网络同步性较差时,即使网络中没有恶意节点进行主动攻击,共识机制也无法稳定保持强一致性[9].

使用区块链技术解决涉及流规则的SDN 安全问题,主要是将区块链作为一个分布式存储平台,经过共识机制达成共识后将流规则等网络信息写入区块链中[6].但该思路只能够保证流规则难以被恶意篡改,并没有考虑到第三方行动者恶意向数据平面中写入错误流规则的情况.

为保证SDN 数据平面中流规则的正确性,本文提出一种基于区块链的错误流规则检测(False Flow Rule Detection based on Blockchain,FFRD-BC)机制,随机选择数据平面中的流规则并验证其是否存在于区块链中,以检测数据平面中第三方行动者注入的错误流规则.一旦检测到错误流规则,立即下发删除命令.此外,为了避免由于区块链节点之间一致性不稳定而导致误删正确流规则的情况,检测阶段引入了基于实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)共识算法的投票验证策略,只有经过多数区块链节点投票验证后被检测为错误的流规则才会被删除,以达到有效而准确地检测错误流规则并将其从交换机中删除的目的.

在SDN 网络中,数据平面根据控制平面的SDN控制器下发的流规则来转发和处理网络流量.由于SDN 转控分离的特点,数据平面只负责转发数据包,并不具备判断流规则是否合法的功能,因此下发到SDN 数据平面的任何错误流规则都将对网络流量的转发和处理造成一定的影响.流规则包括匹配域、动作等,通过匹配域将数据包与流规则进行匹配,通过动作对数据包进行相应的处理[1].当SDN交换机接收到一个流的数据包后,首先查找是否有相匹配的流规则,如果有,则执行相应的动作;
如果没有,则向控制器发送一条Packet_in 消息以请求流规则,由控制器向交换机发送Packet_out 消息以下发流规则.在流规则的请求与响应过程中,第三方行动者能够获取控制器与交换机之间的通信会话,并向交换机中恶意写入错误流规则,以达到破坏网络的目的[4].

图1从左到右分别给出了数据平面中产生错误流规则的3种情况:

图1 数据平面中错误流规则写入Fig.1 False flow rules injection in data plane

(1)第三方行动者直接篡改交换机中的流规则;

(2)交换机与未经过授权认证的控制器建立连接,并接收到该恶意控制器下发的错误流规则;

(3)第三方行动者插入控制器和交换机之间的通信会话,向交换机中恶意写入错误流规则.

本文重点解决第一种和第三种由第三方行动者向交换机中注入错误流规则的情况.

区块链技术为保证SDN 交换机中流规则安全性的主要思路是将区块链作为一个分布式存储平台来存储SDN 中需要验证的网络信息(如控制器信息、流规则等),基于其本身可追溯、不可篡改的性质,避免这些网络信息被恶意篡改[6-8].目前,相关研究主要从网络信息完整性、控制平面安全性、控制平面与数据平面之间通信安全等方面展开.

针对SDN网络信息完整性的保障,RAHMAN等人[10]提出用控制器集群维护一个分布式区块链账本,在更新流规则时,向所有控制器广播新规则,从而保证控制器规则集的一致性.分布式区块链账本能够跟踪所有流规则的更新,通过REST API访问历史记录.该方案只考虑了流规则的完整性以及一致性.WENG 等人[11]设计了一个基于区块链的整体安全机制,在维护网络视图的同时,能够在所有控制器之间保持网络资源的一致性.为克服传统SDN 架构中流量缺乏可追溯性和可问责性的弱点,所有的流和网络行为都被记录在区块链上,以便重播网络状态,进行审核和调试.

一些研究引入区块链保存节点认证信息,用于保证 SDN 控制平面的安全性 .WANG 等人[12]提出SDN 安全保障模型,将SDN 流规则、控制器的全局信息等存储到区块链,通过对控制器进行分布式认证以及权限管理,提高网络的鲁棒性.SHAO 等人[13]提出一种SDN 安全机制系统模型及保障机制,在控制平面采用区块链技术存储系统的安全验证信息.该方案在初始阶段通过SDN 控制器之间相互交换数据进行身份验证,来防止非法控制器的接入以及攻击者篡改共享数据库信息,但并没有考虑到第三方行动者恶意向交换机中写入流规则的情况.AZAB等人[14]提出对网络节点进行接入认证,通过多节点认证提高SDN 的稳健性.节点通过认证后,控制器向节点发出相应的授权信息,每当节点的权限发生变化时,将最新的权限存储在区块链中,防止攻击者对数据的恶意篡改.

确保控制器之间的一致性,可以避免SDN 控制平面流表管理的漏洞带来的安全威胁.HU等人[15]在SDN 中提供流规则一致性测试的新框架,并设计了流规则插入和验证的过程.TONG[16]等人通过构建水平-垂直架构的控制平面,使用区块链记录网络信息,防止恶意管理员威胁.LOKESH 等人[17]提出每个网络集群引入控制器区块链网络,每个控制器拥有一对公钥和私钥,每个交换机通过会话密钥与控制器建立通信通道.控制器使用交换机的会话密钥加密流规则等信息,以保证通信通道的安全性.

针对 SDN 网络中的中间人攻击,BOUKRIA[18]等人提出BCFR 解决方案,以检测注入SDN 数据平面中的错误流规则,其中的私有区块链网络由控制器与可信节点(虚拟机)组成.当控制器向交换机下发流规则时,也向可信节点发送一个流规则的副本.交换机收到流规则后,验证自己收到的流规则与可信节点中的流规则是否相同,若相同,则不执行任何操作;
若不同,则通知网络管理员.该方案能够检测出所有注入SDN数据平面中的错误流规则.

这些研究工作大部分并没有考虑到SDN 数据平面中注入错误流规则的情况.文献[18]提出的BCFR 方案虽然能够检测出所有的错误流规则,但首先,该方案中交换机每收到一条流规则,都要立即对其进行检测,这一过程将消耗更多的处理时间,从而对网络性能造成一定影响;
其次,该方案在检测到错误流规则后仅仅通知网络管理员,只能检测到错误流规则,而不能缓解错误流规则对网络的影响;
最后,没有考虑到区块链节点之间一致性不稳定时,造成某些正常流规则没有上链,从而导致将正常流规则检测为错误流规则的情况.

针对SDN 数据平面中注入的错误流规则,本文提出基于区块链的错误流规则检测机制FFRD-BC.通过控制平面随机选择数据平面中的流规则并验证其是否存在于区块链中,来检测SDN 数据平面中第三方行动者注入的错误流规则;
当流规则检测结果为错误流规则时,立即下发删除命令,以缓解错误流规则对网络的影响.此外,针对区块链节点之间一致性不稳定而导致的误检情况,在检测阶段引入基于PBFT共识算法的投票验证策略.

2.1 系统模型

本文在控制平面采用水平分布式控制器架构[19-20].在数据平面将交换机划分为不同的区域,每个控制器单独控制其中的一个交换机区域.控制器之间形成一个私有区块链网络(图2).在SDN 网络运行时,控制平面中的控制器根据网络需求向数据平面下发流规则,数据平面中的交换机根据流规则进行网络流量的转发与处理工作.区块链则负责流规则的存储,通过验证流规则是否存在于区块链中对流规则进行检测.

图2 基于区块链的SDN系统模型Fig.2 SDN system model based on blockchain

2.2 FFRD-BC机制

FFRD-BC机制的运行共包括3个阶段:流规则上链、流规则检测、流规则决策,其中流规则检测阶段又分为流规则选择和流规则验证两步骤,如图3所示.

图3 FFRD-BC机制Fig.3 FFRD-BC mechanism

第一阶段:流规则上链

当控制平面向数据平面下发流规则时,将这条流规则格式化为一条交易并打包成一个区块并在区块链网络中进行广播,收到区块的控制器节点在经过共识后将它存储到自己的本地区块链中.区块由区块哈希值、控制器ID、交易等元素组成,交易由流规则ID、匹配域、动作等元素组成.

第二阶段:流规则检测

(1)流规则选择——控制平面从数据平面中随机选择一台交换机,并从这台交换机的流规则集合中随机选择待检测的流规则.

(2)流规则验证——控制平面访问区块链,验证被选择的流规则是否存在于区块链中.如果存在,则检测结果为流规则正确;
如果不存在,则检测结果为流规则错误.

第三阶段:流规则决策

控制平面根据流规则检测阶段的结果进行不执行任何操作或删除流规则的决策.当检测结果为流规则正确时,则不执行任何操作;
当检测结果为流规则错误时,则向数据平面下发删除该条流规则的命令.

在FFRD-BC 机制的3 个阶段中,最核心的是第二阶段,即流规则检测阶段,其中流规则验证尤为重要.由于区块链节点之间的一致性不稳定,只验证自己的本地区块链中是否存在待检测的流规则无法保证检测结果的准确性.

2.3 流规则验证策略

控制平面从数据平面中随机选择流规则r,验证r 是否存在于区块链中.如果存在,则流规则检测结果为正确,如果不存在,则流规则检测结果为错误.验证策略分为自主验证策略和投票验证策略.

2.3.1 自主验证

控制器从网络中的n个交换机中随机选择一台交换机si,从si的流规则集中随机选择一条流规则r.将得到的流规则r 进行解析,从而得到流ID、匹配域、动作等各项流规则元素.将所得到的各项流规则元素按顺序进行拼接,得到一条格式化的流规则r’.对于得到的格式化的流规则r’,验证自己的本地区块链中是否存在与r’相同的交易tx.如果存在,则流规则检测结果为正确;
如果不存在,则流规则检测结果为错误.算法1 为自主验证的错误流规则检测算法的描述.

算法1:自主验证的错误流规则检测算法输入:交换机总数n输出:自主验证后检测为错误的流规则r’1.从n个交换机中随机选择一台交换机si,i∈n 2.获取交换机si的流规则总数m 3.从m个流规则中随机选择一条流规则r 4.将流规则r格式化为r’5.验证自己的本地区块链中是否存在与r’相同的交易tx 6.if(不存在) //流规则r检测为错误7. return r’8.end if

在自主验证的检测过程中,当区块链节点之间一致性不稳定时,对于正确的流规则r,控制器节点在自己的本地区块链中没有找到与r’相同的交易tx,那么,正确的流规则r 将被误检为错误流规则并被删除.这显然不符合设计FFRD-BC 机制的初衷,因此本文在流规则检测阶段引入了基于PBFT 共识算法的投票验证策略,以减少误检情况.

2.3.2 投票验证

在投票验证策略中,将私有区块链网络中的控制器节点分为请求节点和验证节点,并随机选择一个节点作为主节点.每个控制器都有可能成为请求节点或验证节点.当控制器广播投票请求时,则该控制器节点作为请求节点,其他控制器节点作为验证节点对需要投票的流规则进行验证.

对于经自主验证后检测为错误的流规则r’,引入基于PBFT 共识算法的投票验证策略对r’进行检测.PBFT 共识算法能够在失效节点不超过节点总数的1/3 时保证共识结果的正确性,这里假设整个网络中失效节点个数为f.

投票验证的错误流规则检测算法伪代码描述如算法2所示.

算法2:投票验证的错误流规则检测算法输入:自主验证后检测为错误的流规则r’输出:r’经投票验证后的检测结果,true或false 1.请求节点向主节点发送投票请求消息<request,r’>//请求阶段2.请求节点等待投票响应3.主节点向其他验证节点广播预准备消息 //预准备阶段4.if(验证节点检验通过预准备消息) //进入准备阶段5. 向其他验证节点广播准备消息6.end if 7.if(验证节点检验通过2f+1个准备消息) //进入确认阶段8. 向其他验证节点广播确认消息9.end if 10.if(验证节点检验通过2f+1个确认消息) //进入投票阶段11. 验证自己的本地区块链中是否存在与r’相同的交易tx 12. if(存在)13. 向请求节点投票r’为正确14. else 15. 向请求节点投票r’为错误16. end if 17.end if 18.统计投票r’为错误的节点个数 //进入统计阶段19.if(超半数的节点投票r’为错误)20. return false 21.else 22. return true 23.end if

步骤1:请求阶段(1~2):请求节点向主节点发送投票请求消息<request,r’>.

步骤2:预准备阶段(3):主节点接收到请求消息,为请求消息分配编号n,生成预准备消息<<preprepare,v,n,d>,request>,基于公式(2)将预准备消息用自己的私钥加密生成签名q1,并向其他验证节点广播<pre-prepare,q1>.其中,v 是视图编号,d 是请求消息request的摘要.

步骤3:准备阶段(4~6):验证节点收到预准备消息并检验,若满足公式(1)和(3),则检验通过,进入准备阶段,生成准备消息<prepare,v,n,d,i>(其中i为该验证节点自身的编号),基于公式4将准备消息用自己的私钥加密生成签名q2,并向其他验证节点广播<prepare,q2>..验证节点验证通过(即满足公式(1)和(5))2f+1 条准备消息,则完成准备阶段,进入确认阶段.

步骤4:确认阶段(7~9):节点进入确认阶段后,生成确认消息<commit,v,n,d,i>,基于公式6将确认消息用自己的私钥加密生成签名q3,并向其他验证节点广播<commit,q3>.验证节点验证通过(即满足公式(1)和(7))2f+1 条确认消息后,则完成确认阶段,进入投票阶段.

步骤5:投票阶段(10~17):每个验证节点验证自己的本地区块链中是否存在与流规则r’相同的交易tx,如果存在,则向请求节点投票r’为正确;
如果不存在,则向请求节点投票r’为错误.

步骤6:统计阶段(18~23):请求节点统计投票r’为错误的验证节点个数,如果超过一半以上的验证节点投票r’为错误,则流规则检测结果为错误;
否则流规则检测结果为正确.

与 PoW 共识算法[21-22]相比,PBFT 共识算法吞吐量较高且耗能较低.

3.1 实验平台

实验部署在Ubuntu 16.04 系统上.使用Mininet 2.2.1 网络模拟器模拟SDN 交换机和主机,选用Opendaylight 0.6.4 Carbon和Multichain[23]分别作为SDN控制器和区块链平台.Multichain能够快速构建区块链网络,为了降低区块链在低活动时期的磁盘使用情况,本文在初始化区块链时将mine-empty-rounds参数设置为0,即如果没有新的交易,则停止添加区块.

实验模拟数据中心网络环境,网络拓扑如图4所示,网络中由 20 个交换机(s1~s20)和 16 个主机(h1~h16)构成一个胖树拓扑.其中,20个交换机分为5个子域,s1~s4构成子域1,s5~s8构成子域2,s9~s12构成子域3,s13~s16构成子域4,s17~s20构成子域5,这些子域分别由5台控制器(c1~c5)进行控制.

图4 实验网络拓扑Fig.4 Experimental network topology

3.2 实验方案

3.2.1 实验设计

通过Multichain 平台构建具有5 个控制器节点c1~c5 的一个基于私有区块链的SDN 网络.当网络运行时,每次控制器向交换机下发流规则,都会将该条流规则格式化为一条交易tx 并打包成一个区块并在区块链网络中进行广播,收到区块的节点在经过共识后将该区块写进自己的本地区块链中.区块结构和交易结构分别在表1和表2中给出.

表1 区块结构Tab.1 Block structure

在控制平面使用Random()方法随机生成交换机ID以及流规则ID,并从交换机中选择流规则r,并将其解析,得到表2所示的各项流规则元素,将这些流规则元素按顺序进行拼接,得到一条格式化的流规则r’.验证区块链中是否存在与r’相同的交易tx,如果存在,则流规则检测结果为正确;
如果不存在,则流规则检测结果为错误.控制平面根据检测结果进行决策,如果检测结果为正确,则不执行任何操作;
如果检测结果为错误,则向交换机下发删除流规则命令.

表2 交易(tx)结构Tab.2 Transcation(tx)structure

在检测阶段分别采用了两种选择方式和两种验证策略.选择方式有全随机选择和先随机后顺序选择两种方式.全随机选择方式中,每次控制平面选择数据平面中的流规则时,都使用Random()方法随机生成交换机ID 以及流规则ID.先随机后顺序选择方式中,首先随机生成交换机ID 以及流规则ID,并对格式化的流规则r’进行检测,如果检测结果为错误,则从该条流规则开始顺序选择a 条流规则进行检测.本文在实验时取a等于10.

验证策略分别采用2.3 节中给出的自主验证和投票验证两种策略.自主验证策略中,控制平面随机选择流规则r并将其格式化为r’,验证自己的本地区块链中是否存在与r’相同的交易tx,如果存在,则流规则检测结果为正确;
如果不存在,则流规则检测结果为错误.自主验证策略是完全自己做主对流规则进行验证并返回检测结果.投票验证策略中,当自主验证后返回流规则检测结果为错误时,该控制器节点作为请求节点向其他控制器节点广播投票请求.其他控制器节点收到投票请求后,验证自己的本地区块链中是否存在与r’相同的交易tx,如果存在,则向请求节点投票0;
如果不存在,则向请求节点投票1.其中,0 表示投票 r’为正确,1 表示投票 r’为错误 .请求节点统计投票1的验证节点个数,如果超过一半以上的验证节点投票1,则流规则检测结果为“错误”;
否则流规则检测结果为“正确”.

3.2.2 评价指标

采用被检测为错误的流规则数量指标对两种选择方式进行检测效率方面的比较和评价,基于检测为错误的流规则数量中正常流规则占比指标对两种验证策略进行误检率方面的比较和评价.为了模拟实际网络中错误流量通常聚集出现的场景,每次测试向交换机s2和s3中一次性写入共100条错误流规则.

3.3 结果与分析

检测效率的仿真实验分别在使用两种验证策略的场景下进行,对使用两种选择方式时的检测效率进行对比.取10次测试平均值作为检测效率.

两种选择方式的检测效率对比在图5 和图6 中给出.可以看到,无论在自主验证场景还是在投票验证场景下,随着检测次数的增加,全随机选择方式和先随机后顺序选择方式都能够有效检测出数据平面中第三方行动者注入的错误流规则.在检测刚开始,由于网络中的错误流规则数量还比较多,很容易随机选择到一条错误流规则,因此,检测为错误的流规则数量上升较快.随着检测次数的增加,删除的错误流规则越来越多,交换机中的错误流规则数量越来越少,需要多次随机选择才能够检测到一条错误的流规则,因此,检测为错误的流规则数量上升缓慢.

图5 自主验证场景下的检测效率Fig.5 Detection efficiency in self-verification scenario

图6 投票验证场景下的检测效率Fig.6 Detection efficiency in vote-verification scenario

在全随机选择方式中,检测交换机中的哪条流规则完全由Random()方法决定,而在先随机后顺序选择方式中,检测到一条错误流规则,将从该条流规则开始顺序选择10条流规则进行检测.因此在两种场景下,使用先随机后顺序选择方式时的检测效率都明显优于全随机选择方式.

误检率的仿真实验分别在使用两种选择方式的场景下进行,对使用两种验证策略时的误检率进行对比.设定对于交易tx,单个区块链节点发生一致性不稳定的概率为0.01,且区块链网络中的控制器节点都是可信节点.取10次测试平均值作为误检率.

两种验证策略的误检率对比在图7 和图8 中给出.可以看到,无论在全随机选择场景还是在先随机后顺序选择场景下,随着网络中正常流规则数量的增多,使用自主验证策略时误检率都随之上升.这是因为网络中正常流规则数量越多,单个区块链节点中发生一致性不稳定的交易数量也就越多,从而导致误检率的上升.在使用投票验证策略后,误检情况都得到了有效缓解,这是因为对于同一条交易tx,在整个区块链网络中超过半数的节点在将tx写进自己的本地区块链时同时发生一致性不稳定的概率非常小.当对正常流规则r’进行自主验证后的检测结果为“错误”时,将在整个区块链网络中对r’进行投票验证,由于超过半数节点的本地区块链中都不存在与r’相同的交易tx 的概率非常小,使得大多数节点对r’都投票为“正确”,因此,对正常流规则r’进行投票验证后的检测结果为“正确”,从而有效降低了使用自主验证策略时的误检率.

图7 全随机选择场景下的误检率Fig.7 False detection rate in all-random selected scenario

图8 先随机后顺序选择场景下的误检率Fig.8 False detection rate in random-sequential selected scenario

由于SDN 网络特有的转控分离架构,实现了对网络流量的灵活高效处理,但其数据平面缺乏对流规则的认证,容易被第三方行动者恶意写入错误流规则,从而危害网络的有效性和可靠性.本文提出的FFRD-BC 机制基于区块链本身可追溯不可篡改的性质,随机验证数据平面中流规则是否存在于区块链中以检测数据平面中的错误流规则;
引入了基于PBFT 共识算法的投票验证策略,缓解当区块链节点一致性不稳定时所导致的误检情况.仿真实验表明:FFRD-BC 机制能够有效检测出SDN 数据平面中被第三方行动者恶意写入的错误流规则,且与不执行投票验证策略相比,能够有效降低流规则误检的发生.下一步工作将考虑到区块链网络查找耗时的固有问题,提高区块链部分的验证速度,以实现更快的检测效率.

猜你喜欢 交换机控制器平面 三转子式比例控制器设计与内泄漏分析舰船科学技术(2022年11期)2022-07-15南京溧水电子3款控制器产品中国自行车(2022年3期)2022-06-30立体几何基础训练A卷参考答案中学生数理化·高三版(2019年1期)2019-07-03立体几何强化训练B卷参考答案中学生数理化·高三版(2019年1期)2019-07-03基于NFV的分布式SDN控制器节能机制网络空间安全(2019年8期)2019-03-18浅谈交换机CAN基本配置科学与财富(2016年24期)2017-03-29参考答案试题与研究·高考数学(2016年1期)2016-10-13罗克韦尔发布Strat ix 5410分布式交换机智能制造(2015年10期)2015-11-04智能液位控制器在排水系统中的应用科技传播(2012年10期)2012-06-06信息网络中交换机的分类和功能城市建设理论研究(2011年28期)2011-12-31推荐访问:区块 平面 规则
上一篇:静脉输注利多卡因对腹腔镜下胃减容手术患者术后疼痛及早期恢复的影响
下一篇:压延铜箔含铬废水处理工艺及应用

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有