一种基于SDN的IP欺骗数据包的动态溯源方法与流程

文档序号:12375989阅读:1047来源:国知局
一种基于SDN的IP欺骗数据包的动态溯源方法与流程

本发明涉及数字信息传输技术领域,特别是一种基于SDN的IP欺骗数据包的动态溯源方法。



背景技术:

SDN是一种数据控制分离、软件可编程的新型网络体系架构。SDN采用了集中式的控制平面和分布式的转发平面,两个平面相互分离,控制平面利用控制-转发通信接口对转发平面上的网络设备的数据转发行为进行集中式控制,并提供灵活的可编程能力。SDN的主流控制接口协议是OpenFlow协议。

IP地址欺骗是指发送者伪造自身的IP地址向目标系统发送请求。IP地址欺骗常用于DoS攻击中。由于使用了伪造的源IP地址,往往难以找到真正的攻击流量发送者。IP地址欺骗同样存在于SDN网络中。目前在SDN网络中,对于查找发送IP欺骗数据包源主机的研究比较少,有的查找发送源主机的方法是控制器通过查询交换机中的流表项找到源主机。但由于SDN网络中可能存在多个控制器,交换机流表项的状态频繁改变,流表项的匹配精度不确定,找到的IP欺骗数据包的发送源通常是一个集合,不能准确的找到发送IP欺骗数据包的源主机或入口交换机。



技术实现要素:

本发明的目的在于提供一种基于SDN的IP欺骗数据包的动态溯源方法,在SDN框架下,找到发送一类数据包的源主机,这一类数据包应具有足以与其它类数据包区分开的特征,如目的IP地址、使用的协议类型、目的端口号等。

实现本发明目的的技术解决方案为:一种基于SDN的IP欺骗数据包的动态溯源方法,包括以下步骤:

步骤1,控制器收到溯源请求者提出的溯源请求,请求内容中包含溯源起点交换机在SDN中的DPID、要求溯源的IP数据包的样本集,以及相邻到达的被溯源数据包间的平均间隔时间;

步骤2,控制器将溯源起点交换机的DPID加入溯源交换机队列,并构建被溯源数据包特征集和探测流表项;

步骤3,设置溯源交换机队列中的队尾交换机为当前交换机;

步骤4,控制器向与当前交换机相邻的且不在溯源交换机队列的交换机添加探测流表项,重置计时器;

步骤5,控制器监听新添加的探测流表项的触发情况,所述触发情况即在添加了探测流表项的交换机上被溯源的数据包触发的Packet-in消息;

步骤6,若监听到相应的Packet-in消息,控制器查看发送该消息的交换机的流表,若流表中有转发被溯源数据包至当前交换机的流表项,控制器记录该Packet-in消息中的in_port值,并将发送该消息的交换机的DPID插入到溯源交换机队列尾部,即为前一跳交换机,删除下发的探测流表项,然后返回步骤3;若没监听到相应的Packet-in消息,继续等待直至计时器超时,然后进入步骤7;

步骤7,若计时器超时,最后加入溯源交换机队列的交换机就是被溯源数据包的入口交换机,该入口交换机记录的端口即最后记录的in_port值连接的主机就是发送被溯源数据包的源主机,溯源交换机队列中记录的交换机从队尾到队头,就是被溯源数据包依次经过的交换机。

进一步地,步骤1中所述的起点交换机为提出溯源请求的SDN主机所直接连接的被溯源数据包的来源交换机,或者是提出溯源请求的SDN交换机。

进一步地,步骤2所述构建被溯源数据包特征集,即根据溯源数据包的样本集构造特征集,构造方法是:在Openflow1.0中,称流表项匹配域的12元组为匹配项,若样本集中与匹配项对应的值是唯一的,该值作为特征集中的元素。

进一步地,步骤2所述探测流表项的匹配域是特征集,具有最高优先级,动作是发送Packet-in消息给控制器。

进一步地,步骤6所述相应的Packet-in消息,是指通过溯源数据包的特征集判断该Packet-in消息由被溯源数据包触发。

进一步地,步骤6所述计时器超时,是指若计时器记录的时间超过溯源数据包间平均间隔时间的2倍,即为超时。

本发明与现有技术相比,其显著优点为:(1)不会影响正常数据流的转发;(2)SDN交换机中流表项的匹配精度高,仅通过流表项即能够准确推测出发送数据包的源主机;(3)根据被溯源数据包的实际转发情况动态查找被溯源数据包的转发路径,准确率高。

附图说明

图1为本发明基于SDN的IP欺骗数据包的动态溯源方法的流程图。

图2为本发明中第一例网络拓扑示意图。

图3为本发明中第二例网络拓扑示意图。

图4为本发明中第三例网络拓扑示意图。

图5为本发明实施例中应用场景的实施方法示例图。

具体实施方式

IP地址欺骗是指采用伪造的源IP地址向目标系统发送IP数据包的行为。由于发送者使用了伪造的IP源地址,数据包接收者及中间交换机往往无法直接查明真正的数据包来源。本发明在软件定义网络(SDN)框架下提出了一种通过控制器向网络中相关的SDN交换机中添加探测流表项的方法,用以找到发送IP欺骗数据包的主机。本发明所述IP数据包溯源模块位于控制器中,控制器中有全局网络拓扑视图。本发明的溯源流程图如图1所示,具体过程如下:

(1)控制器收到请求者提出的溯源请求,请求中包含溯源起点交换机的DPID、IP数据包样本集和被溯源数据包到达目的IP的平均间隔时间。

(2)控制器将溯源起点交换机的DPID加入溯源交换机队列中,并构建特征集,以此构造探测流表项。

(3)当前溯源路径队列中队尾交换机为当前交换机。若不存在与当前交换机相邻的交换机(已在溯源交换机队列中的除外),进入(9)。

(4)控制器向与当前交换机相邻的交换机(已在溯源交换机队列中的除外)添加探测流表项。

(5)控制器重置探测计时器。

(6)控制器监听探测流表项触发的Packet-in消息。若监听到该消息,控制器查询发送该Packet-in消息的交换机的流表,若流表中有转发被溯源数据包到当前交换机的流表项,则进入(8)。

(7)若计时器超时,进入(9)。否则进入(6)。

(8)控制器清除下发的探测流表项,记录该Packet_in消息中的in_port值,将发送该Packet-in消息的交换机的DPID加入队列尾部,进入(3)。

(9)最后加入溯源交换机队列的交换机为入口交换机,若入口交换机和溯源起点交换机不是同一个交换机,进入(11)。

(10)向入口交换机下发探测流表项,监听被溯源的数据包触发的Packet-in消息,记录该Packet-in消息中in_port值。

(11)入口交换机的记录端口(最后记录的in_port值)连接的主机是发送该IP欺骗数据包的源主机。溯源交换机队列中记录的交换机从队尾到队头就是被溯源数据包依次经过的交换机。

下面是对以上过程的说明:

第(2)步中,控制器通过样本集获得被溯源数据包的特征集,过程是:以OpenFlow1.0为例,将流表项匹配域的12元组称为匹配项,若样本集中与某个匹配项相关的值是唯一的,则该值作为特征集中的元素。

第(4)步中,探测流表项的匹配域是溯源数据包的特征集,具有最高优先级,动作是发送Packet-in消息给控制器。

第(6)步中,通过溯源数据包的特征集判断一条Packet-in消息是否是由被溯源数据包触发。

第(6)步中,之所以要查看发送该Packet-in消息的交换机的流表,是为了保证溯源交换机队列中记录的交换机是被溯源数据包依次经过的交换机。考虑到如图2所示情况(图中粗线表示被溯源数据包实际转发路径),假设被溯源数据包的转发路径是S3->S2->S1,若此时已溯源到S1,此时应向S2、S3中添加探测流表项,被溯源数据包应在S3触发Packet-in消息,但S3并不是S1的上一跳,所以第(6)步中通过查看发送Packet-in消息的交换机中的流表,确定发送对应Packet-in消息的交换机是不是当前交换机的上一跳。

第(7)步中,计时器超时是指计时器记录的时间超过溯源数据包间平均间隔时间的2倍。

第(10)步中,向入口交换机下发探测流表项,是考虑到源主机与目的主机之间只有一个交换机的情形。如图3所示,H1向H2发送数据包,只经过S。S是溯源起点交换机,会被直接加入到溯源交换机队列,由于没有溯源到其他交换机,程序会到此结束,但没有获得入口交换机通过哪个端口与源主机相连的信息,为了获得该信息,给入口交换机添加探测流表项,使其触发Packet_in消息,从而得到该信息。

使用添加探测流表项的方法可以解决由于流表项的匹配精度低,无法仅通过查看交换机中流表项的方法确定发送源的问题。如图4所示(图中粗线表示被溯源数据包实际转发路径),被溯源数据包实际转发路径为H2->S2->S4->H4,此时溯源至S4,若交换机中流表项的匹配域仅为目的IP地址,若H1、H3都曾向H4发送过数据,S1、S3中应都有可以转发被溯源数据包的流表项,此时若仅通过查看流表项的方法无法判断出S4的上一跳是S1、S2还是S3。而通过添加探测流表项的方法,可以知道只有S2会发送由被溯源数据包触发的Packet-in消息,从而得知S4的上一跳是S2。

为使本发明的技术方案更加清楚明了,下面结合具体实施例并参照附图,对本发明做进一步详细说明。

实施例1

图5给出了本发明的一个应用场景的实施方法示例图。

图5中,主机Attacker使用伪造的IP地址给主机Victim发送消息,数据包的发送路径为Attacker->S4->S3->S2->S1->Victim。假设主机Attacker向主机Victim发送了不止一个此类数据包。此时溯源请求者想要追踪这类数据包的发送源,溯源请求者给出了溯源起点交换机为S1、数据包样本集和平均间隔时间,控制器通过数据包样本集得到特征集,假设为:目的IP地址(Victim的IP地址)、IP协议号、传输层目的端口号。且这3个特征项足以将这类数据包与其它数据包区分开,控制器将这3个特征项作为探测流表项的匹配域。

图中假设S4、S5、S6中都有可以转发该类数据包的流表项(转发路径用粗线表示)。原因是交换机中的流表项匹配精度不够高(假设对应的流表项的匹配域仅为目的IP地址,若Attacker、H2、H4都曾向Victim发送过数据,则S4、S5、S6中都有可以转发被溯源数据包的流表项)。此时,若是仅仅查看流表,则会发现S4、S5、S6都有可能转发过该数据包,本发明采用了图1所述算法,解决了该问题。

从S1开始,使用图1所述算法,可知道S2、S3在转发路径上。接着控制器向S4、S5、S6下发探测流表项,当该类数据包到达S4时会与此探测流表项匹配,发送一条Packet-in消息给控制器,控制器查看S4中流表,知道有流表项可以发送被溯源数据包到S3,则S4为S3的上一跳。由于探测流表项的匹配域匹配精度较高,即使S5、S6发送了到Victim的消息,也不会由于探测流表项触发Packet-in消息,添加探测流表项解决了由于流表项的匹配精度不高,无法准确知道发送源的问题且不会影响其它的正常数据流的转发。

接下来控制器记录该Packet-in消息中in_port的值,并删除原来下发的探测流表项,向S7添加一条探测流表项,控制器不会收到由被溯源的数据包触发的Packet-in消息,计时器会超时,控制器得知入口交换机是S4,S4的记录端口(最后记录的in_port值)连接的主机Attacker是发送IP欺骗数据包的源主机,且溯源交换机队列中记录的交换机从队尾到队头是被溯源数据包依次经过的交换机。

本实施例在SDN框架下提供了一种通过添加探测流表项找到发送IP欺骗数据包的源主机的方法,解决了由于流表项的匹配精度不高,无法准确知道发送源的问题,且溯源过程中不会影响其它的正常数据流的转发。

上述实施方式对本发明的内容作了详细的示范介绍,但相应的应用示例不作为对本发明的限制。本发明的保护范围由所附的权利要求来限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1