本发明涉及一种网络攻击防护技术方法,特别是一种基于拓扑分析的攻击流量分流和阻断方法。
背景技术:
网络攻击是指针对计算机信息系统、基础设施、计算机网络或个人计算机设备的任何类型的进攻动作。网络攻击具有手段多样,隐蔽性强的特点,而且一旦取得成功,就会使网络中成千上万的网络设备处于瘫痪状态,严重威胁社会和国家安全。诸如分布式拒绝服务攻击等网络攻击主要是通过产生大量网络数据造成网络阻塞,消耗网络带宽资源,导致网络整体性能大幅下降。所以,如何有效对抗网络攻击流量成为目前网络攻击防护的研究重点之一。
常见的网络攻击流量对抗方式包括常见的响应措施包括丢弃数据包、限制流速以及重定向流量等等,丢弃数据包方式主要根据ip地址和端口号去判决攻击流量并实施丢弃操作,但存在合法数据被丢弃的问题;限制流速的方法则是不对数据进行丢弃操作,而是对具有攻击特征的流量进行速率限制以的方式实现攻击阻断,同时避免误丢弃合法数据,但是并不能根本上阻断攻击行为;重定向流量的方法则是将攻击流量转发到其他设备进行处理,但该方法无法减少攻击流量对整个网络的负载压力。
技术实现要素:
发明目的是:为了克服现有技术中存在的不足,本发明提供了一种基于拓扑分析的攻击流量分流和阻断方法,用于解决现有的网络攻击流量对网络造成的拥堵及相应对抗机制阻断效率不高的问题。
技术方案:为实现上述目的,本发明采用的技术方案为:
本发明提出的一种基于拓扑分析的攻击流量分流和阻断方法,采用软件定义网络的网络体系架构,由控制器和交换机构成;控制器负责整个网络的报文数据转发及控制,交换机按照控制器的下发的转发规则对报文数据进行转发;控制器通过openflow协议的流表项向交换机传递转发规则,通过简单网络管理协议对交换机进行管理控制。
一种基于拓扑分析的攻击流量分流和阻断方法,包括以下步骤:
步骤1、在初始阶段,完成基于多种发现策略的网络拓扑获取:采用基于物理设备信息拓扑发现策略、基于链路层信息拓扑发现策略、基于网络层协议拓扑发现策略以及基于应用层协议拓扑发现策略发现网络中各个交换机以及网络终端的设备信息,并获取设备间的连接状态,从而获得整个网络的拓扑架构;
步骤2、在网络攻击阶段,采用基于k条最短路径分流的方法实现网络流量的分流;首先计算网络中由攻击点到被攻击目标所有路径中的k条最短路径;其次计算这k条路径的剩余带宽;最后将流量按各路径剩余带宽的比例分配到各路径上。
步骤3、在网络攻击阶段,在进行网络流量的分流同时,交换机完成攻击终端的溯源及流量阻断;首先通过提取流量的特征实现攻击终端的溯源定位;其次根据网络拓扑信息进行阻断点的选择;最后向阻断点所在的控制器下发阻断指令实现阻断。
本发明的进一步改进在于:所述步骤1按照以下步骤顺序进行:
步骤1.1:采用基于物理设备信息拓扑发现策略实现网络中交换机的发现及设备信息获取:交换机上电启动时向控制器发起连接请求;控制器收到请求后,向该交换机发送feature_request类型的消息并等待回复;接着,交换机将其特征信息封装至feature_reply消息中,发送至控制器;最终控制器收到消息,记录交换机的特征信息,包括交换机id、端口属性和缓冲区数量或其他特征信息,完成交换机的发现过程;
步骤1.2:采用基于链路层信息拓扑发现策略实现网络中交换机的连接状态:控制器监控网络的链路层协议流量,通过解析交换机从设备各个端口定期广播的泛洪链路层发现协议和广播域发现协议数据包,从中提取协议数据包中包含的发送方交换机id以及端口号;
步骤1.3:采用基于网络层协议拓扑发现策略实现网络终端的发现及设备信息获取,交换机预先并无存放用于网络终端数据转发的匹配流表项;当初次收到来自网络终端的网络层协议报文时,首先会将报文转发至控制器,由控制器通过泛洪机制建立该报文各交换机的转发规则,并下发告知交换机建立匹配的流表项。
步骤1.4:采用基于应用层协议拓扑发现策略实现网络终端的连接状态:控制器向网络终端相邻的交换机发送snmp协议报文,获取交换机各端口的连接信息,从而得到网络终端的连接状态;
步骤1.5:控制器根据上述信息构造拓扑图,拓扑图由节点和链路构成;节点数据由设备类型、设备标识和连接端口构成,其定义如下:
node={type,id/ip,port}
其中node表示节点;type表示设备类型,设备类型分为交换机和其他网络设备;id/ip表示设备标识,当设备类型为交换机时存放交换机id信息,当设备类型为其他网络设备时存放网络设备的ip地址;port表示连接端口;
链路数据由数据输出节点和数据接收节点构成,其定义如下:
linklist={sendnode,recvnode}
其中linklist表示链路;sendnode表示数据输出节点,结构类型为node类型;recvnode表示数据接收节点,结构类型为node类型。
本发明的进一步改进在于:所述步骤1.3中基于网络层协议拓扑发现策略实现网络终端的发现及设备信息获取的具体步骤如下:
a)当网络终端向目标地址发送网络层协议报文,首先经过相邻交换机;相邻交换机检查内部流表项发现并无匹配的流表项,将该报文的源地址、目的地址、报文类型和交换机id号,收到该数据报文的端口号信息上报至控制器;
b)当控制器收到交换机上报的信息后,命令交换机泛洪该数据报文至所有相邻的交换机;
c)相邻的交换机收到该数据报文后,检查内部流表项发现并无匹配的流表项,也将该报文的源地址、目的地址、报文类型、交换机id号,收到该数据报文的端口号信息上报至控制器;
d)重复步骤b)和c)直到该消息泛洪到目的地址所在机器,目的地址所在机器收到该数据报文后返回应答报文;
e)交换机收到应答报文后将该报文的源地址、目的地址、报文类型、交换机id号,收到应答报文的端口号等信息上报至控制器;同时经由收到该网络层协议报文的端口号返回该应答报文;
f)控制器收到交换机上报的信息后,获得交换机应答报文输入端口信息,该端口也是该交换机转发该协议报文的输出端口;
g)重复步骤e)和f)直到应答报文返回至网络终端;
最终,控制器获得了网络终端至目的地址所在机器间途径的交换机id、数据输入端口、数据转发输出端口、相邻交换机id的拓扑信息。并根据拓扑信息建立控制转发的流表项发送至相应交换机。
本发明的进一步改进在于:步骤1.4中基于应用层协议拓扑发现策略实现网络终端的连接状态的具体步骤如下:
h)控制器发送snmp协议的get-request报文去提取相应交换机的mib库信息,查询ipnettomediaphysaddress组、ipnettomediaifindex组、ifinoctets组和ifoutoctets组,其中ipnettomediaphysaddress组包含交换机所连设备的ip地址和mac地址,ipnettomediaifindex组包含交换机所连设备的mac地址和所在端口,ifinoctets组包含交换机各个端口收到的总字节数、ifoutoctets组包含交换机各个端口发送的总字节数;
i)交换机收到get-request报文后返回get-response报文;
j)控制器从返回的get-response报文得到交换机所连设备的ip地址和
mac地址、交换机所连设备的mac地址和所在端口、交换机各个端口收到的总字节数、交换机各个端口发送的总字节数;进而得到各个端口所连设备的ip地址和接收发送的总流量。
本发明的进一步改进在于:所述步骤2按照以下步骤顺序进行:
步骤2.1:首先计算网络中由攻击点到被攻击目标所有路径中的k条最短路径:利用dijkstra算法计算出第1条最短路径p1,在此基础上依次算出其他的k-1条最短路径:p2,p3,…,pi,…,pk。在求pi+1时,将pi上除了终止节点外的所有节点都视为偏离节点,并计算每个偏离节点到终止节点的最短路径,再与之前的pi上起始节点到偏离节点的路径拼接,构成候选路径,进而进行最短偏离路径的求解;
步骤2.2:其次计算这k条路径的剩余带宽,每条路径的剩余带宽计算方法如下:计算路径上所有交换机各端口的剩余带宽,将该路径上交换机各端口最小的剩余带宽数值作为该路径的剩余带宽;
步骤2.3:将流量按各路径剩余带宽的比例分配到各路径上:控制器根据k条最短路径剩余带宽的比例,将流量数据包按照其比例切片,分别发送到k条路径。
本发明的进一步改进在于:所述步骤2.2中端口的剩余带宽计算方法如下:
通过简单网络管理协议定期访问网络内交换机,获取交换机及各端口的流量统计信息,将两个不同时间点采集到的端口总流量相减,再除以时间间隔,计算得到该端口的当前传输速率即为该端口的当前流量带宽;再将端口的额定带宽减去当前流量带宽即可得到端口的剩余带宽;
其计算公式如下所述:
其中,remainbwport表示端口的剩余带宽,specifiedbwport表示端口的额定带宽,b[t2]表示t2时刻端口的总流量,b[t1]表示t1时刻端口的总流量。
进一步改进在于;步骤2.3中给:第i条路径分配的切片长度计算公式如下所述:
其中,pi表示给第i条路径分配的切片长度,remainbwi表示第i条路径的剩余带宽大小,
本发明的进一步改进在于:所述步骤3按照以下步骤顺序进行:
步骤3.1:攻击终端的溯源:提取流量的特征,通过机器学习得到的方式识别攻击终端并得到其ip地址,从而实现攻击终端的溯源;
步骤3.2:阻断点的选择:在确定攻击终端的ip地址后,在拓扑图数据中得到对应节点信息,根据其节点信息遍历拓扑图中的链路数据,得到与攻击终端相邻的交换机节点信息,将其设为阻断点;
步骤3.3:攻击终端网络流量的阻断:控制器向阻断点所在的交换机发送openflow协议的“controller-to-switch”消息,该消息包含针对攻击终端的流表项,其规则为在攻击终端所接入的端口号上对攻击终端ip的数据报文执行丢弃操作,从而实现攻击终端网络流量的阻断。
本发明的进一步改进在于:所述步骤3.1中流量特征的选取具体如下所述:
所提取的流量特征为基于源地址的四元组和基于目的地的四元组;所述基于源地址的四元组和基于目的地的四元组合称为溯源八元组来表示某一个主机行为特征,将其作为判定是否异常的依据,从而实现攻击终端的溯源;所述基于源地址的四元组包括源地址总流表数、接收数据包总数、接收字节总数和源ip地址的熵;所述基于目的地址的四元组包括目的地址总流表数、发送数据包总数、发送字节总数和目的ip地址的熵,其八元组的计算方法如下:
源地址总流表数flowincountsrc=n
接收数据包总数
接收字节总数
目的ip地址的熵
目的地址总流表数flowoutcountdst=m
发送数据包总数
发送字节总数
源ip地址的熵
其中,n表示源地址为该ip的流表项总数,pi表示这n个流表项中第i个目的ip地址出现的概率,pkgsin和bytesin分别表示该ip接收到的数据包数和字节数;m表示目的地址为该ip的流表项总数,pi表示这m个流表项中第i个源ip地址出现的概率,pkgsout和bytesout分别表示该ip发出的数据包数和字节数。
有益效果:
本发明提供了一种基于拓扑分析的攻击流量分流和阻断方法,本发明利用软件定义网络技术,提出了一种在软件定义网络环境下软件定义网络的控制器基于拓扑分析选择合适的交换机下发控制流表项,实现攻击流量的分流与阻断,从而缓解整个网络在遭受攻击时的拥堵现象,提高网络的传输效率;该方法首先采用基于k条最短路径分流的方法,实现基于带宽的拓扑管理,使得整个网络可以动态地根据流量变化来进行拓扑更新,得以在面临攻击时充分利用网络资源来分散和吸收攻击流量;同时基于主机行为进行攻击溯源,并采用报文实时过滤方案实施主动阻断。本发明有效地对网络攻击进行了分流和阻断,提高了网络的抗压性和可用性。
附图说明
图1是本发明的基于拓扑分析的攻击流量分流和阻断方法的流程图;
图2是本发明的基于网络层协议拓扑发现策略实现网络终端的发现及设备信息获取的流程图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
本实施例的一种基于拓扑分析的攻击流量分流和阻断方法,包括以下步骤:
步骤1、在初始阶段,完成基于多种发现策略的网络拓扑获取:采用基于物理设备信息拓扑发现策略、基于链路层信息拓扑发现策略、基于网络层协议拓扑发现策略以及基于应用层协议拓扑发现策略发现网络中各个交换机以及网络终端的设备信息,并获取设备间的连接状态,从而获得整个网络的拓扑架构。具体包括以下步骤:
步骤1.1、采用基于物理设备信息拓扑发现策略实现网络中交换机的发现及设备信息获取:交换机上电启动时向控制器发起连接请求;控制器收到请求后,向该交换机发送feature_request类型的消息并等待回复;接着,交换机将其特征信息:交换机id、端口属性和缓冲区数量等封装至feature_reply消息中,发送至控制器;最终控制器收到消息,记录交换机的特征信息,包括交换机id、端口属性和缓冲区数量等,完成交换机的发现过程。
步骤1.2、采用基于链路层信息拓扑发现策略实现网络中交换机的连接状态:控制器监控网络的链路层协议流量,通过解析交换机从设备各个端口定期广播的泛洪链路层发现协议(lldp,linklayerdiscoveryprotocol)和广播域发现协议(bddp,broadcastdomaindiscoveryprotocol)数据包,从中提取协议数据包中包含的发送方交换机id以及端口号;
步骤1.3、采用基于网络层协议拓扑发现策略实现网络终端的发现及设备信息获取,交换机预先并无存放用于网络终端数据转发的匹配流表项。当初次收到来自网络终端的网络层协议报文时,首先会将报文转发至控制器,由控制器通过泛洪机制建立该报文各交换机的转发规则,并下发告知交换机建立匹配的流表项。其具体步骤如下:
a)当网络终端向目标地址发送网络层协议报文,首先经过相邻交换机。相邻交换机检查内部流表项发现并无匹配的流表项,将该报文的源地址、目的地址、报文类型、交换机id号,收到该数据报文的端口号等信息上报至控制器;
b)当控制器收到交换机上报的信息后,命令交换机泛洪该数据报文至所有相邻的交换机;
c)相邻的交换机收到该数据报文后,检查内部流表项发现并无匹配的流表项,也将该报文的源地址、目的地址、报文类型、交换机id号,收到该数据报文的端口号等信息上报至控制器;
d)重复步骤b)和c)直到该消息泛洪到目的地址所在机器,目的地址所在机器收到该数据报文后返回应答报文;
e)交换机收到应答报文后将该报文的源地址、目的地址、报文类型、交换机id号,收到应答报文的端口号等信息上报至控制器;同时经由收到该网络层协议报文的端口号返回该应答报文;
f)控制器收到交换机上报的信息后,获得交换机应答报文输入端口信息,该端口也是该交换机转发该协议报文的输出端口;
g)重复步骤e)和f)直到应答报文返回至网络终端;
最终,控制器获得了网络终端至目的地址所在机器间途径的交换机id、数据输入端口、数据转发输出端口、相邻交换机id等拓扑信息。并根据拓扑信息建立控制转发的流表项发送至相应交换机。
步骤1.4、采用基于应用层协议拓扑发现策略实现网络终端的连接状态:控制器向网络终端相邻的交换机发送snmp协议报文,获取交换机各端口的连接信息,从而得到网络终端的连接状态,其具体步骤如下:
h)控制器发送snmp协议的get-request报文去提取相应交换机的mib库信息,查询ipnettomediaphysaddress组、ipnettomediaifindex组、ifinoctets组和ifoutoctets组,其中ipnettomediaphysaddress组包含交换机所连设备的ip地址和mac地址,ipnettomediaifindex组包含交换机所连设备的mac地址和所在端口,ifinoctets组包含交换机各个端口收到的总字节数、ifoutoctets组包含交换机各个端口发送的总字节数;
i)交换机收到get-request报文后返回get-response报文。
j)控制器从返回的get-response报文得到交换机所连设备的ip地址和mac地址、交换机所连设备的mac地址和所在端口、交换机各个端口收到的总字节数、交换机各个端口发送的总字节数。进而得到各个端口所连设备的ip地址和接收发送的总流量。
步骤1.5:控制器根据上述信息构造拓扑图,拓扑图由节点和链路构成。
节点数据由设备类型、设备标识和连接端口构成,其定义如下:
node={type,id/ip,port},
其中node表示节点;type表示设备类型,设备类型分为交换机和其他网络设备;id/ip表示设备标识,当设备类型为交换机时存放交换机id信息,当设备类型为其他网络设备时存放网络设备的ip地址;port表示连接端口。
链路数据由数据输出节点和数据接收节点构成,其定义如下:
linklist={sendnode,recvnode}
其中linklist表示链路;sendnode表示数据输出节点,结构类型为node类型;recvnode表示数据接收节点,结构类型为node类型。
步骤2:在网络攻击阶段,采用基于k条最短路径分流的方法实现网络流量的分流。首先计算网络中由攻击点到被攻击目标所有路径中的k条最短路径;其次计算这k条路径的剩余带宽;最后将流量按各路径剩余带宽的比例分配到各路径上。其具体步骤如下:
步骤2.1、首先计算网络中由攻击点到被攻击目标所有路径中的k条最短路径:利用dijkstra算法计算出第1条最短路径p1,在此基础上依次算出其他的k-1条最短路径:p2,p3,…,pi,…,pk。在求pi+1时,将pi上除了终止节点外的所有节点都视为偏离节点,并计算每个偏离节点到终止节点的最短路径,再与之前的pi上起始节点到偏离节点的路径拼接,构成候选路径,进而进行最短偏离路径的求解。
步骤2.2:其次计算这k条路径的剩余带宽,每条路径的剩余带宽计算方法如下:计算路径上所有交换机各端口的剩余带宽,将该路径上交换机各端口最小的剩余带宽数值作为该路径的剩余带宽。
端口的剩余带宽计算方法如下:通过简单网络管理协议定期访问网络内交换机,获取交换机及各端口的流量统计信息,将两个不同时间点采集到的端口总流量相减,再除以时间间隔,计算得到该端口的当前传输速率即为该端口的当前流量带宽;再将端口的额定带宽减去当前流量带宽即可得到端口的剩余带宽。其计算公式如下所述:
其中,remainbwport表示端口的剩余带宽,specifiedbwport表示端口的额定带宽,b[t2]表示t2时刻端口的总流量,b[t1]表示t1时刻端口的总流量。
步骤2.3、将流量按各路径剩余带宽的比例分配到各路径上:控制器根据k条最短路径剩余带宽的比例,将流量数据包按照其比例切片,分别发送到k条路径,其中给第i条路径分配的切片长度计算公式如下所述:
其中,pi表示给第i条路径分配的切片长度,remainbwi表示第i条路径的剩余带宽大小,
步骤3:在网络攻击阶段,在进行网络流量的分流同时,交换机完成攻击终端的溯源及流量阻断。首先通过提取流量的特征实现攻击终端的溯源定位;其次根据网络拓扑信息进行阻断点的选择;最后向阻断点所在的控制器下发阻断指令实现阻断。其具体步骤如下:
步骤3.1:攻击终端的溯源:提取流量的特征,通过机器学习的方式识别攻击终端并得到其ip地址;所提取的流量特征为基于源地址的四元组和基于目的地的四元组;所述基于源地址的四元组和基于目的地的四元组合称为溯源八元组来表示某一个主机行为特征,将其作为判定是否异常的依据,从而实现攻击终端的溯源;所述基于源地址的四元组包括源地址总流表数、接收数据包总数、接收字节总数和源ip地址的熵;所述基于目的地址的四元组包括目的地址总流表数、发送数据包总数、发送字节总数和目的ip地址的熵,其八元组的计算方法如下:
其八元组的计算方法见表1和表2。
表1基于源地址的4元组
其中,n表示源地址为该ip的流表项总数,pi表示这n个流表项中第i个目的ip地址出现的概率,pkgsin和bytesin分别表示该ip接收到的数据包数和字节数。
表2基于目的地址的4元组
其中,m表示目的地址为该ip的流表项总数,pi表示这m个流表项中第i个源ip地址出现的概率,pkgsout和bytesout分别表示该ip发出的数据包数和字节数。
其中,m表示目的地址为该ip的流表项总数,pi表示这m个流表项中第i个源ip地址出现的概率,pkgsout和bytesout分别表示该ip发出的数据包数和字节数。
步骤3.2、阻断点的选择:在确定攻击终端的ip地址后,在拓扑图数据中得到对应节点信息,根据其节点信息遍历拓扑图中的链路数据,得到与攻击终端相邻的交换机节点信息,将其设为阻断点。
步骤3.3、攻击终端网络流量的阻断:控制器向阻断点所在的交换机发送openflow协议的“controller-to-switch”消息,该消息包含针对攻击终端的流表项,其规则为在攻击终端所接入的端口号上对攻击终端ip的数据报文执行丢弃操作,从而实现攻击终端网络流量的阻断。
实施例1
图1所示为本发明的基于拓扑分析的攻击流量分流和阻断方法的流程图。
如图1所示:本实施例采用软件定义网络的网络体系架构,包括控制器和交换机。控制器采用ryu搭建,支持openflow协议;交换机采用openvswitch搭建,和控制器间通过openflow协议与控制器进行交互。其中控制器负责整个网络的报文数据转发及控制,交换机按照控制器的下发的转发规则对报文数据进行转发。控制器通过openflow协议的流表项向交换机传递转发规则,通过简单网络管理协议对交换机进行管理控制。本专利所提方法首先通过多种发现策略获取网络拓扑,当有基于流量的网络攻击到来时采用基于k条最短路径分流的方法实现网络流量的分流,同时对攻击终端进行溯源阻断。
该方法具体包括以下步骤:
101、在初始阶段,完成基于多种发现策略的网络拓扑获取:采用基于物理设备信息拓扑发现策略、基于链路层信息拓扑发现策略、基于网络层协议拓扑发现策略以及基于应用层协议拓扑发现策略发现网络中各个交换机以及网络终端的设备信息,并获取设备间的连接状态,从而获得整个网络的拓扑架构。
1011、采用基于物理设备信息拓扑发现策略实现网络中交换机的发现及设备信息获取:交换机上电启动时向控制器发起连接请求;控制器收到请求后,向该交换机发送feature_request类型的消息并等待回复;接着,交换机将其特征信息(交换机id、端口属性和缓冲区数量等)封装至feature_reply消息中,发送至控制器;最终,控制器收到消息,记录交换机的特征信息,包括交换机id、端口属性和缓冲区数量等,完成交换机的发现过程。
1012、采用基于链路层信息拓扑发现策略实现网络中交换机的连接状态:控制器监控网络的链路层协议流量,通过解析交换机从设备各个端口定期广播的泛洪链路层发现协议(lldp,linklayerdiscoveryprotocol)和广播域发现协议(bddp,broadcastdomaindiscoveryprotocol)数据包,从中提取协议数据包中包含的发送方交换机id以及端口号。
1013、采用基于网络层协议拓扑发现策略实现网络终端的发现及设备信息获取,交换机预先并无存放用于网络终端数据转发的匹配流表项。当初次收到来自网络终端的网络层协议报文时,首先会将报文转发至控制器,由控制器通过泛洪机制建立该报文各交换机的转发规则,并下发告知交换机建立匹配的流表项。然后控制器获得了网络终端至目的地址所在机器间途径的交换机id、数据输入端口、数据转发输出端口、相邻交换机id等拓扑信息。并根据拓扑信息建立控制转发的流表项发送至相应交换机。
1014、采用基于应用层协议拓扑发现策略实现网络终端的连接状态:控制器利用net-snmp向网络终端相邻的交换机发送snmp协议报文,获取交换机各端口的连接信息,从而得到网络终端的连接状态。
1015、控制器根据上述信息构造拓扑图,拓扑图由节点和链路构成。节点数据由设备类型、设备标识和连接端口构成,其定义如下:
node={type,id/ip,port}
其中node表示节点;type表示设备类型,设备类型分为交换机和其他网络设备;id/ip表示设备标识,当设备类型为交换机时存放交换机id信息,id为一32bit的唯一整数;当设备类型为其他网络设备时存放网络设备的ip地址,ip地址为一32bit的二进制数;port表示连接端口,port的取值范围为1-65535。
链路数据由数据输出节点和数据接收节点构成,其定义如下:
linklist={sendnode,recvnode}
其中linklist表示链路;sendnode表示数据输出节点,结构类型为node类型;recvnode表示数据接收节点,结构类型为node类型。
102、在网络攻击阶段,采用基于k条最短路径分流的方法实现网络流量的分流。首先计算网络中由攻击点到被攻击目标所有路径中的k条最短路径;其次计算这k条路径的剩余带宽;最后将流量按各路径剩余带宽的比例分配到各路径上。
1021、首先计算网络中由攻击点到被攻击目标所有路径中的k条最短路径:利用dijkstra算法计算出第1条最短路径p1,在此基础上依次算出其他的k-1条最短路径:p2,p3,…,pi,…,pk。在求pi+1时,将pi上除了终止节点外的所有节点都视为偏离节点,并计算每个偏离节点到终止节点的最短路径,再与之前的pi上起始节点到偏离节点的路径拼接,构成候选路径,进而进行最短偏离路径的求解。
1022、其次计算这k条路径的剩余带宽,每条路径的剩余带宽计算方法如下:计算路径上所有交换机各端口的剩余带宽,将该路径上交换机各端口最小的剩余带宽数值作为该路径的剩余带宽。
端口的剩余带宽计算方法如下:通过简单网络管理协议定期访问网络内交换机,获取交换机及各端口的流量统计信息,将两个不同时间点采集到的端口总流量相减,再除以时间间隔,计算得到该端口的当前传输速率即为该端口的当前流量带宽;再将端口的额定带宽减去当前流量带宽即可得到端口的剩余带宽。其计算公式如下所述:
其中,remainbwport表示端口的剩余带宽,specifiedbwport表示端口的额定带宽,b[t2]表示t2时刻端口的总流量,b[t1]表示t1时刻端口的总流量。
1023、将流量按各路径剩余带宽的比例分配到各路径上:控制器根据k条最短路径剩余带宽的比例,将流量数据包按照其比例切片,分别发送到k条路径。其中给第i条路径分配的切片长度计算公式如下所述:
其中,pi表示给第i条路径分配的切片长度,remainbwi表示第i条路径的剩余带宽大小,
103、在网络攻击阶段,在进行网络流量的分流同时,交换机完成攻击终端的溯源及流量阻断。首先通过提取流量的特征实现攻击终端的溯源定位;其次根据网络拓扑信息进行阻断点的选择;最后向阻断点所在的控制器下发阻断指令实现阻断。
1031、攻击终端的溯源:提取流量的特征,通过机器学习的方式识别攻击终端并得到其ip地址,从而实现攻击终端的溯源。
1032、阻断点的选择:在确定攻击终端的ip地址后,在拓扑图数据中得到对应节点信息,根据其节点信息遍历拓扑图中的链路数据,得到与攻击终端相邻的交换机节点信息,将其设为阻断点。
1033、攻击终端网络流量的阻断:控制器向阻断点所在的交换机发送openflow协议的“controller-to-switch”消息,该消息包含针对攻击终端的流表项,其规则为在攻击终端所接入的端口号上对攻击终端ip的数据报文执行丢弃操作,从而实现攻击终端网络流量的阻断。
如图2所示:图2是的基于网络层协议拓扑发现策略实现网络终端的发现及设备信息获取的流程图,即上文步骤1013的具体流程。交换机预先并无存放用于网络终端数据转发的匹配流表项,当初次收到来自网络终端的网络层协议报文时,首先会将报文转发至控制器,由控制器通过泛洪机制建立该报文各交换机的转发规则,并下发告知交换机建立匹配的流表项。其具体步骤如下:
201、当网络终端向目标地址发送网络层协议报文,首先经过相邻交换机。相邻交换机检查内部流表项发现并无匹配的流表项,将该报文的源地址、目的地址、报文类型、交换机id号,收到该数据报文的端口号等信息上报至控制器;
202、当控制器收到交换机上报的信息后,命令交换机泛洪该数据报文至所有相邻的交换机;相邻的交换机收到该数据报文后,检查内部流表项发现有无匹配的流表项。如果没有的话转入步骤203,将该报文的源地址、目的地址、报文类型、交换机id号,收到该数据报文的端口号等信息上报至控制器;如果有的话则转入步骤204,目的地址所在机器收到该数据报文后返回应答报文。
205、交换机收到应答报文后将该报文的源地址、目的地址、报文类型、交换机id号,收到应答报文的端口号等信息上报至控制器;同时经由收到该网络层协议报文的端口号返回该应答报文;直到应答报文返回至网络终端。
最终,控制器获得了网络终端至目的地址所在机器间途径的交换机id、数据输入端口、数据转发输出端口、相邻交换机id等拓扑信息。并根据拓扑信息建立控制转发的流表项发送至相应交换机。