【发明授权】一种基于SDN的数据流溯源方法_中国科学院信息工程研究所_201710160267.0 

申请/专利权人:中国科学院信息工程研究所

申请日:2017-03-17

发明/设计人:宋晨;王利明;史淼;杨倩;谢德俊

公开(公告)日:2020-05-22

代理机构:北京君尚知识产权代理有限公司

公开(公告)号:CN107070895B

代理人:余功勋

主分类号:H04L29/06(20060101)

地址:100093 北京市海淀区闵庄路甲89号

分类号:H04L29/06(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.05.22#授权;2017.09.12#实质审查的生效;2017.08.18#公开

摘要:本发明提供一种基于SDN的数据流溯源方法,其步骤包括:1SDN交换机对指定的字段进行定期采样,得到数据包信息Flow_ID和交换机信息,其中交换机信息包括交换机标识Switch_ID和数据包入端口inputport;2以Flow_ID为Key对上述数据包信息Flow_ID和交换机信息进行分组得到每个分组的数据集SAi,其中下标i标记不同分组的数据集;3根据SDN的网络拓扑结构G对上述每个分组的数据集SAi进行路径分析;4根据上述路径分析结果确定路径起点,进行路径重构,得到数据包或数据流的路径。该方法通过实现数据包或数据流路径的重构,从而能够追溯到攻击源的源头。

主权项:1.一种基于SDN的数据流溯源方法,其步骤包括:1SDN交换机对指定的字段进行定期采样,得到数据包信息Flow_ID和交换机信息,其中交换机信息包括交换机标识Switch_ID和数据包入端口inputport;2以Flow_ID为Key对上述数据包信息Flow_ID和交换机信息进行分组得到每个分组的数据集SAi,其中下标i标记不同分组的数据集;3根据SDN的网络拓扑结构G对上述每个分组的数据集SAi进行路径分析,包括以下步骤:a提取SAi中SDN交换机集合SS,利用所述网络拓扑结构G获取SS中每个SDN交换机SSi的端口集合SPn={inputport,OtherPort}n,并将SSi与其对应的SPn存入PortTable中;其中SSi中的i为变量以标记不同的SDN交换机,inputport为数据包入端口且通过采样结果标出,OtherPort为其余端口;b将PortTable中每个SDN交换机与其相应的数据包入端口组成现有跳集合CH={SSi,inputport},其中SSi中的i为变量以标记不同的SDN交换机且SSi∈SS,inputport∈SPn;c取CH中每一项CHi与其对应的OtherPorts,依次从OtherPorts的每个端口出发找到连接的另一端作为CHi对应的所有可能的下一跳NHi,其中CHi中的下标i标记数据包当前所在的位置,NHi中的下标i标记数据包将要传输到的下一位置;d将CHi与NHi的对应关系记录到PathFragmentTable中,然后把NHi元素去重并整合为下一跳集合NH={SSi,inputport},其中SSi,inputport∈G;e取CH和NH的并集作为SAi所有路径可能节点集合AH,即AH=CH∪NH,其中节点数量为n,且|AH|=n,以AH构建一个n阶方阵A,其中以PathFragmentTable中CHp为行,NHq为列的元素赋值为0;CHp为列,NHq为行的元素赋值为1,且PathFragmentTable的行数为n,其中CHp的下标p和NHq的下标q表明p行q列和q行p列;4根据上述路径分析结果确定路径起点,进行路径重构,得到数据包或数据流的路径,其中,所述根据路径分析结果确定路径起点,包括以下步骤:在方阵A中,当aij=r,c=0时,代表数据包从r到c的传输过程;当aij=1时,代表数据包从c到r的传输过程;当一行中所有值为0时,表示所有元素都将从r离开到达不同的下一跳,而一行中所有值都为1时,表示所有元素都从不同的上一跳一起到达r;即当一行元素中只有0没有1,代表只有下一跳,没有上一跳;此时r是SAi中数据包的起点,并将起点记为参考点s;当参考点s的值为0时,则在s所在的列查找值为1的元素x;当参考点s的值为1时,则在s所在的行查找值为0的元素x;若存在满足条件的x,将其作为新的参考点s,然后循环执行步骤f,直到找不到满足条件的x,即溯源结束。

全文数据:一种基于SDN的数据流溯源方法技术领域[0001]本发明涉及计算机网络领域,尤其涉及一种基于SDN的数据流溯源方法。背景技术[0002]—般地,要想有效防范日趋严重的拒绝服务攻击,根本方法是要找到攻击源,从源头上遏制攻击的产生,是最为有效也是最经济的方法。受到攻击时如果不能定位攻击源并对其进行惩罚,将导致攻击者更加无所顾忌。因而,溯源技术在网络防御体系中占据着十分重要的地位。随着互联网的应用范围越来越大,网络犯罪与日剧增,溯源技术可以追溯到攻击源,为追究攻击者的法律责任提供依据。而现有的溯源技术理论中,基于数据包标识的方法,需要利用有限的包头空间记录所走过每一跳路由器或交换机的标识信息,为了防止伪造标识信息会添加认证信息,这将导致在数据包中所需要的存储信息更多,从而必须分多个数据包存储路径信息,然后这又导致需要的数据包收敛数更多。而对于基于日志的溯源方法,则是需要在路由器上记录每一个数据包标识信息的摘要,用来应答查询,显然在高速网络环境下,路由器存储空间是有限的。还有如基于链路测试的方法,则是要依赖于ISP和网络拓扑,这些在传统网络中是不容易实现的。[0003]目前涉及到溯源的专利是CN200810103996.3,该专利溯源的方法是通过设置溯源日志,将终端唯一标识与该终端的IP地址对应,并将所述对应关系记载在所述溯源日志中,当查询模块接收到溯源请求,从而发起溯源操作,将记录在日志中终端唯一标识与该终端的IP地址对应起来,但该方法实现的前提是可以准确获取每一个终端的标识及其IP地址,在确保信息正确的前提下,存入日志中用于溯源查询。在传统网络中很难保证可以准确获取所有终端及网络的信息,因此该方法不能很好的应用于溯源找到攻击源。发明内容[0004]本发明的目的是提供一种基于SDN的数据流溯源方法,该方法能够实现数据包或数据流路径的重构,从而能够追溯到攻击源的源头。[0005]为达到上述目的,本发明所采用的技术方案为:[0006]—种基于SDN的数据流溯源方法,其步骤包括:[0007]ISDN交换机对指定的字段进行定期采样,得到数据包信息Flow_ID和交换机信息,其中交换机信息包括交换机标识Switch_ID和数据包入端口inputport;[0008]2以Flow_ID为Key对上述数据包信息Flow_ID和交换机信息进行分组得到每个分组的数据集SA1,其中下标i标记不同分组的数据集;[0009]3根据SDN的网络拓扑结构G对上述每个分组的数据集3进行路径分析;[0010]4根据上述路径分析结果确定路径起点,进行路径重构,得到数据包或数据流的路径。[0011]进一步地,步骤1中所述对指定的字段进行定期采样是指控制器接收来自上层应用下发的采样规则,SDN交换机对该采样规则进行解析并根据解析出来的所需要采样的字段参数进行定期采样。[0012]更进一步地,所述采样规则是指所需要采样的数据包中字段的位移和长度。[0013]进一步地,步骤1中所述数据包信息Flow_ID是指用于区分不同数据包或数据流的标识;所述交换机信息是指用于记录路径每一跳SDN交换机的信息。[0014]更进一步地,TCP数据包的Flow_ID为IP、fragmentoffset、TCPsequencenumber字段;UDP数据流的Flow_ID为sourceIP、destinationIP、sourceport、destinationport和protocol五元组。[0015]更进一步地,步骤2中根据追溯的数据包或数据流的特征进行分组。[0016]进一步地,步骤3中所述网络拓扑结构G通过SDN的拓扑服务TopologyService模块获取。[0017]进一步地,步骤3中所述对每个分组的数据集SA1进行路径分析,包括以下步骤:[0018]a提取SAi中SDN交换机集合SS,利用所述网络拓扑结构G获取SS中每个SDN交换机SSi的端口集合SPn={inputport,0therPort}n,并将SSi与其对应的SPn存入PortTableSDN交换机端口列表)中;其中SSi中的i为变量以标记不同的SDN交换机,inputport为数据包入端口且通过采样结果标出,OtherPort为其余端口;[0019]b将PortTable中每个SDN交换机与其相应的数据包入端口组成现有跳集合CurrentHopCH={SSi,inputport},其中SSi中的i为变量以标记不同的SDN交换机且SSieSS,inputporteSPn;[0020]c取CH中每一项CHi与其对应的OtherPorts,依次从OtherPorts的每个端口出发找到连接的另一端作为CHi对应的所有可能的下一跳NextHopNHi,其中CHi中的下标i标记数据包当前所在的位置,NH1*的下标i标记数据包将要传输到的下一位置;[0021]d将CHi与NHi的对应关系记录到PathFragmentTable路径分支列表)中,然后把NHi元素去重并整合为下一跳集合NH={SSi,inputport},其中SSi,inputporteG;[0022]e取CH和NH的并集作为SAi所有路径可能节点集合AH,即AH=CHUNH,其中节点数量为n,且|AH|=n,以AH构建一个η阶方阵A,其中以PathFragmentTable中CHp为行,NHq为列的元素赋值为〇;CHP为列,NHq为行的元素赋值为1,且PathFragmentTable的行数为n,其中CHp的下标p和NHq的下标q表明p行q列和q行p列。[0023]更进一步地,步骤c中所述另一端如果为交换机,贝IjNHi由Switch_ID和InputPort表示;另一端如果为主机,则MAC作为Switch_ID,InputPort为null。[0024]更进一步地,步骤4中所述根据路径分析结果确定路径起点,包括以下步骤:[0025]f在方阵A中,当aij=r,c=0时,代表数据包从r至Ijc的传输过程;当aij=l时,代表数据包从c到r的传输过程;所述一行中所有值为0时,表示所有元素都将从r离开到达不同的下一跳,而一行中所有值都为1时,表示所有元素都从不同的上一跳一起到达r;即当一行元素中只有0没有1,代表只有下一跳,没有上一跳;此时r是SA1*数据包的起点,并将起点记为参考点s;[0026]g当参考点s的值为0时,则在s所在的列查找值为1的元素X;当参考点s的值为1时,则在s所在的行查找值为〇的元素X;若存在满足条件的X,将其作为新的参考点s,然后循环执行步骤f,直到找不到满足条件的X,即溯源结束。[0027]本发明的有益效果在于:本发明提供一种基于SDN的数据流溯源方法,该方法首先对通过SDN交换机的数据包或数据流进行采样,然后对收集的采样数据进行路径重构分析,从而确定攻击源头,克服了数据包头或者路由器的存储空间有限且不易扩充的问题,利用对数据包或数据流采样并结合SDN对网络的可视性,共同构造数据包或数据流的路径,从而更客观更高效地实现攻击溯源。附图说明[0028]图1是本发明一种基于SDN的数据流溯源方法的运行流程示意图;[0029]图2是本发明一种基于SDN的数据流溯源方法的具体流程图。[0030]图3是本发明一实施例的攻击场景R下的部分网络拓扑图。[0031]其中SI、S2、S3和V为主机,SSB、SSC、SSD、SSE和SSF为SDN交换机。[0032]图4为本发明一实施例的攻击场景R下的SDN交换机端口列表。[0033]图5为本发明一实施例的攻击场景R下的路径分支列表。[0034]图6为本发明一实施例的攻击场景R下构建的方阵A。具体实施方式[0035]为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。[0036]本发明提供一种基于SDN的数据流溯源方法,其运行流程图如图1所示,首先SDN交换机对指定的字段进行定期采样,采样结果输入到指定服务器并等待处理。所述对指定的字段进行定期采样是指控制器接收来自上层应用下发的采样规则,SDN交换机对该采样规则进行解析并根据解析出来的所需要采样的字段参数进行定期采样。所述采用规则是指所需要采样的数据包中某几个字段的位移和长度;如字段A,在数据包起始位置为16,长度为8。所述采样结果包括数据包信息和交换机信息,其中所述数据包信息Flow_ID是指用于区分不同数据包或数据流的标识,且不同目的下Flow_ID不相同,如区分TCP协议的每个数据包的Flow_ID为IP、fragmentoffset、TCPsequencenumber字段;区分UDP数据流的标识为sourceIP、destinationIP、sourceport、destinationport和protocol五元组。所述交换机信息是指用于记录路径每一跳SDN交换机的信息,且包括交换机标识SwitchID和数据包入端口inputport。以对UDP数据流采样为例,采样结果如表1所示。[0037]表1:UDP数据流采样结果[0038]Τ〇〇39Ϊ~然后以Flow_ID为Key对上述采样结果进行分组得到每个分组的数据集SA1,其中^下标i标记不同分组的数据集,所述分组是指根据需要进行追溯的数据包或数据流的特征进行分组;例如,需要追溯的是源IP为a的数据流,或者需要追溯的是DNS类数据包,根据所需要追溯的数据流或数据包的特征作为分组依据。[0040]最后,根据网络拓扑结构G对上述每个分组的数据集SA1进行路径分析,并根据所述路径分析结果确定路径起点,进行路径重构,得到数据包或数据流的路径。其中,所述网络拓扑结构G通过SDN的拓扑服务模块获取。[0041]下面以一具体实施例来解释说明本发明方法。[0042]请参考图2,该图是本发明一种基于SDN的数据流溯源方法的具体流程图,其步骤包括:[0043]1SDN交换机对指定的字段进行定期采样,得到采样结果,即数据包信息Flow_ID和交换机信息;并以Flow_ID为Key对上述采样结果进行分组得到每个分组的数据集SA1,其中下标i标记不同分组的数据集。[0044]2通过SDN的拓扑服务模块获取网络拓扑结构G,并根据该网络拓扑结构G整理每个分组的SAi,将SAi中所有的交换机标识SwitchJD整理为集合SS,同时结合上述网络拓扑结构G的信息整理出每个SDN交换机SSi的端口,并参照采样结果标出数据包入端口inputport,存储在PortTable中,其中SSi中的i为变量以标记不同的SDN交换机。例如,将采样结果按照Flow_ID进行分组,每组采样结果的数据集记为SA1,其中下标i标记不同分组的数据集,如图3所示,在攻击场景R中,采样结果分组后一个从S3发往V的数据流右侧实线,其中S3与V为主机采样集合即为一个SA。并且对采样结果中每组5仏都进行如下操作:[0045]a提取SAi中SDN交换机集合SS,利用网络拓扑结构G获取SS中每个SDN交换机SSi的端口集合SPn={inputport,0therPorts}n,并将SSi与其对应的SPn存入PortTable中;其中SSi中的i为变量以标记不同的SDN交换机且SSieSS,inputport为数据包入端口且通过采样结果标出,OtherPorts为其余端口。例如,攻击场景R下的SDN交换机端口列表如图4所示。[0046]b将PortTable中每个SDN交换机与其相应的数据包入端口组成现有跳集合CH={SSi,inputport},其中SSi中的i为变量以标记不同的SDN交换机,inputporteSPnSSC3-SSE2-V;同理可得分支2的最终路径为SSF2-SSC3-SSD2-V。[0053]综上所述,本发明提供的一种基于SDN的数据流溯源方法通过SDN对网络的可视性,通过采样到服务器分析路径的方法实现路径重构的目的。该方法克服了数据包头或者路由器的存储空间有限且不易扩充的问题。[0054]以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

权利要求:1.一种基于SDN的数据流溯源方法,其步骤包括:1SDN交换机对指定的字段进行定期采样,得到数据包信息Flow_ID和交换机信息,其中交换机信息包括交换机标识Switch_ID和数据包入端口inputport;2以Flow_ID为Key对上述数据包信息Flow_ID和交换机信息进行分组得到每个分组的数据集SA1,其中下标i标记不同分组的数据集;3根据SDN的网络拓扑结构G对上述每个分组的数据集5仏进行路径分析;4根据上述路径分析结果确定路径起点,进行路径重构,得到数据包或数据流的路径。2.如权利要求1所述的方法,其特征在于,步骤1中所述对指定的字段进行定期采样是指控制器接收来自上层应用下发的采样规则,SDN交换机对该采样规则进行解析并根据解析出来的所需要采样的字段参数进行定期采样。3.如权利要求2所述的方法,其特征在于,所述采样规则是指所需要采样的数据包中字段的位移和长度。4.如权利要求1所述的方法,其特征在于,步骤1中所述数据包信息Flow_ID是指用于区分不同数据包或数据流的标识;所述交换机信息是指用于记录路径每一跳SDN交换机的信息。5.如权利要求4所述的方法,其特征在于,TCP数据包的Flow_ID为IP、fragmentoffset、TCPsequencenumber字段;UDP数据流的Flow_ID为sourceIP、destinationIP、sourceport、destinationport和protocol五兀组。6.如权利要求4所述的方法,其特征在于,步骤2中根据追溯的数据包或数据流的特征进行分组。7.如权利要求1所述的方法,其特征在于,步骤3中所述网络拓扑结构G通过SDN的拓扑服务模块获取。8.如权利要求1所述的方法,其特征在于,步骤3中所述对每个分组的数据集SA1进行路径分析,包括以下步骤:a提取SAi中SDN交换机集合SS,利用所述网络拓扑结构G获取SS中每个SDN交换机SSi的端口集合3?11={;[即1^口〇1'1:,01:1161?〇1'1:}11,并将33;[与其对应的3?11存入?〇1'1:11316中;其中SSi中的i为变量以标记不同的SDN交换机,inputport为数据包入端口且通过采样结果标出,OtherPort为其余端口;b将PortTable中每个SDN交换机与其相应的数据包入端口组成现有跳集合CH={SSi,inputport},其中SSi中的i为变量以标记不同的SDN交换机且SSieSS,inputporteSPn;c取CH中每一项CHi与其对应的OtherPorts,依次从OtherPorts的每个端口出发找到连接的另一端作为CHi对应的所有可能的下一跳NHi,其中CHi中的下标i标记数据包当前所在的位置,NH1*的下标i标记数据包将要传输到的下一位置;d将CHi与NHi的对应关系记录到PathFragmentTable中,然后把NHi元素去重并整合为下一跳集合NH={SSi,inputport},其中SSi,inputporteG;e取CH和NH的并集作为SAi所有路径可能节点集合AH,即AH=CHUNH,其中节点数量为n,且IAH|=n,以AH构建一个11阶方阵A,其中以PathFragmentTable中CHp为行,NHq为列的元素赋值为〇;CHp为列,NHq为行的元素赋值为1,且PathFragmentTable的行数为η,其中CHp的下标p和NHq的下标q表明p行q列和q行p列。9.如权利要求8所述的方法,其特征在于,步骤c中所述另一端如果为交换机,则NH1*Switch_ID和InputPort表示;另一端如果为主机,贝IjMAC作为Switch_ID,InputPort为null〇10.如权利要求8所述的方法,其特征在于,步骤4中所述根据路径分析结果确定路径起点,包括以下步骤:f在方阵A中,当aij=r,c=0时,代表数据包从r至Ijc的传输过程;当aij=l时,代表数据包从c到r的传输过程;所述一行中所有值为0时,表示所有元素都将从r离开到达不同的下一跳,而一行中所有值都为1时,表示所有元素都从不同的上一跳一起到达r;即当一行元素中只有〇没有1,代表只有下一跳,没有上一跳;此时r是SAi中数据包的起点,并将起点记为参考点s;g当参考点s的值为0时,则在s所在的列查找值为1的元素X;当参考点s的值为1时,则在8所在的行查找值为〇的元素X;若存在满足条件的X,将其作为新的参考点s,然后循环执行步骤f,直到找不到满足条件的X,即溯源结束。

百度查询: 中国科学院信息工程研究所 一种基于SDN的数据流溯源方法

vip会员权益升级
价格优惠/年费监控/专利管家/定制微网站 关闭