CN104518984B - 一种基于多重分类器对数据包进行流量分类的sdn控制器 - Google Patents
一种基于多重分类器对数据包进行流量分类的sdn控制器 Download PDFInfo
- Publication number
- CN104518984B CN104518984B CN201410811205.8A CN201410811205A CN104518984B CN 104518984 B CN104518984 B CN 104518984B CN 201410811205 A CN201410811205 A CN 201410811205A CN 104518984 B CN104518984 B CN 104518984B
- Authority
- CN
- China
- Prior art keywords
- packet
- sdn
- stream
- openflow
- sdn controllers
- 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
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于多重分类器对数据包进行流量分类的SDN控制器,是指一种在多核处理器环境中,在现有SDN控制器上设置了多重分类器,依据多重分类器对数据包进行流量分类的应用程序的任务分配。本方法实现了将控制器应用与控制器自身逻辑的分离。能够克服现有方法在使用多核处理器作为SDN控制器时,直接在控制器中运行流量分类应用所导致的控制器资源消耗过大、并行加速比不高、编程不够灵活的问题。提高了处理器资源利用率和控制器吞吐量,简化了控制器应用程序编程。
Description
技术领域
本发明涉及一种SDN控制器,更特别地说,是指一种在多核处理器环境中,在现有SDN控制器上设置了多重分类器,依据多重分类器对数据包进行流量分类的应用程序的任务分配。
背景技术
2013年9月第1次印刷,电子工业出版社,《SDN核心技术剖析和实战指南》雷葆华等编著。在第15页图1-6公开的SDN核心技术体系图中(记为图1),介绍了在SDN架构的不同层及其技术。其目标是有效地分离控制层面与转发层面,支持逻辑上集中化的统一控制,提供灵活的开发接口等。其中,控制层是整个SDN的核心,系统中的南向接口与北向接口也是以它为中心进行命名的。转发层面通过一个Packet_in消息将数据包(Packet,也称为报文)发送给控制层面。SDN(Sofeware Defined Networking,软件定义网络)是一种新兴的基于软件的网络架构及技术,其最大的特点在于具有松耦合的控制平面与数据平面、支持集中化的网络状态控制、实现底层网络设施对上层应用的透明。正如SDN的名字所言,它具有灵活的软件编程能力,使得网络的自动化管理和控制能力获得了空前的提升,能够有效地解决当前网络系统所要面临的资源规模扩展受限、组网灵活性差、难以满足业务快速变化的需求等问题。
OpenFlow是一种新提出的网络架构,OpenFlow交换机将原来完全由交换机/路由器控制的报文转发过程转化为由OpenFlow交换机(OpenFlow Switch)和控制服务器(Controller)来共同完成,从而实现了数据转发和路由控制的分离。控制器可以通过事先规定好的接口操作来控制OpenFlow交换机中的流表,从而达到控制数据转发的目的。结合SDN/OpenFlow的特性,应用识别变得更加重要。从网络流量中识别一个应用的名字或者类型正变得越来越重要。
作为控制与转发相分离的结果,SDN交换机仅仅具有简单的查询与转发功能,而整个网络的控制逻辑都需要通过SDN网络中的关键部分——SDN控制器来完成,作为整个SDN网络中的核心,SDN控制器需要处理所有来自其下方SDN交换机的数据包数据,其负载随着网络规模的增大而迅速增大。
网络流量分类(Network Traffic Classification)是指将混合有各种应用的流量,按产生这些流量的应用协议进行分类。当进行二类分类时往往又可称为网络协议检测或网络协议鉴别。网络流量分类技术在现代网络安全和管理方面起着很重要的作用。网络流量不仅数据量迅速增加,而且类型也不断增多,如何在新型的SDN网络架构下快速对网络流量进行快速的识别与分类成为一个重要课题。
而为了识别进入SDN/OpenFlow控制器的网络流量以便对其进行正确的处理,识别的方法一般有基于标准端口匹配、基于深度包检测、基于协议解析和基于统计学习算法。各种方法有其自身的优点、缺陷和适用范围。参考2013年10月第1版《网络流量分类方法与实践》,汪立东、钱丽萍主编。上述的网络流量分类方法均有占用计算资源多,作为整个SDN/OpenFlow控制器的核心部分,SDN/OpenFlow控制器本身就需要处理大量的来自SDN交换机的Packet_in数据包,因而通过传统的方式在SDN/OpenFlow控制器上添加网络流量分类的应用,会消耗大量控制器本身有限的珍贵计算资源,从而降低了SDN/OpenFlow控制器的性能。
发明内容
为了解决网络流量分类在SDN/OpenFlow控制器中占用过多控制器资源,本发明采用将网络流量分类应用以独立进程的方式部署在SDN/OpenFlow控制器的不同处理器核CPU-C上。网络流量分类应用采用并行的方式对进入的流Flow进行本发明的基于多重分类器的分类处理,同时,网络流量分类应用可以采用不同的流量分类方法,包括但不限于基于深度包检测流量分类方法和基于K-均值聚类的分类方法。
在本发明中,SDN/OpenFlow控制器是在现有SDN控制器中增加了去消息头模块、五元组哈希值提取模块和基于多重分类器的流连接分配模块。
去消息头模块用于去除Packet_In数据包中的OpenFlow协议头,得到Packet_In数据包的五元组内容。
五元组哈希值提取模块用于对所述五元组内容进行哈希值计算,得到五元组哈希值;然后根据所述五元组哈希值拾取得到流、及流对应的流连接。
基于多重分类器的流连接分配模块依据流的流连接进行不同分类器的分配,从而得到任意一条流匹配的网络流量分类及网络流量分类对应的处理器核CPU-C。
在本发明中,一种网络流量分类对应一个处理器核CPU-C。一个SDN/OpenFlow控制器上有多个处理器核CPU-C。
当一个数据包进入OpenFlow交换机时,交换机将对其通过OpenFlow协议打包成一个Packet_In数据包发送给SDN/OpenFlow控制器;在SDN/OpenFlow控制器接收到Packet_In数据包后,交由多重分类器模块;多重分类器根据其流的五元组哈希值将其交给不同的流量分类应用,流量分类应用对其分类后将获取到的流—类别信息。本发明通过在SDN/OpenFlow控制器中部署应用层多重分类器的方式,使全网都具备了对流量的应用层信息,从而实现了对全网统一的流量分类结果及在全网所有OpenFlow交换机上进行应用程流量管理。
本发明基于多重分类器对数据包进行流量分类的SDN控制器与传统SDN控制器相比,具有如下优点:
1 SDN/OpenFlow控制器的应用程序部署在不同的处理器核上,相比于将应用程序部署在SDN控制器本身上,能大大降低SDN/OpenFlow控制器本身的开销的同时实现了基于SDN/OpenFlow控制器的应用层流量分类。
2 本发明能充分利用SDN/OpenFlow控制器的多核处理器,及处理器核众多的优势,提高多核处理器资源利用率。
3 同一种应用程序能在不同的处理器核上部署多份,并行执行,能大大提高数据包网络流量分类的效率。
4 SDN/OpenFlow控制器应用程序的实现无需SDN控制器本身的运行环境,可以作为一个与SDN控制器相同等级的操作系统上的进程实体,编程更加灵活、自由,移植更加方便。
附图说明
图1是传统的SDN控制器的体系结构图。
图2是本发明基于多重分类器对数据包进行流量分类的SDN控制器的结构框图。
图3是本发明基于多重分类器对数据包进行流量分类的流程图。
具体实施方式
下面将结合附图对本发明做进一步的详细说明。
本发明提出了一种多核处理器平台下的SDN控制器对网络流量的任务分配,所述的SDN控制器采用了OpenFlow网络架构,即称为SDN/OpenFlow控制器;所述SDN/OpenFlow控制器有多个处理器核CPU-Core={CPU-CK,CPU-CDPI,CPU-CQ},每个处理器核上可以运行一个应用层分类程序或者不运行任何应用层分类程序。在本发明中,网络流量分类应用可以采用不同的流量分类方法,包括但不限于基于深度包检测(Deep Packet Inspection,简称为DPI)流量分类方法和基于K-均值聚类的分类方法。
在本发明中,运行K-均值聚类的流量分类方法的处理器核记为n为运行K-均值聚类的流量分类方法的处理器核的总数;
在本发明中,运行DPI的流量分类方法的处理器核记为m为运行DPI的流量分类方法的处理器核的总数;
在本发明中,不运行任何流量分类方法的处理器核记为q为不运行任何流量分类方法的处理器核的总数;n+m+q=T,T为SDN/OpenFlow控制器上的处理器核的总数。
表示第一个运行K-均值聚类的流量分类方法的处理器核;
表示第二个运行K-均值聚类的流量分类方法的处理器核;
表示第n个运行K-均值聚类的流量分类方法的处理器核,也是最后一个运行K-均值聚类的流量分类方法的处理器核,为了方便说明,下面称为任意一个运行K-均值聚类的流量分类方法的处理器核,n也是运行K-均值聚类的流量分类方法的处理器核的标识号;
表示第一个运行DPI流量分类方法的处理器核;
表示第二个运行DPI流量分类方法的处理器核;
表示第m个运行DPI流量分类方法的处理器核,也是最后一个运行DPI流量分类方法的处理器核,为了方便说明,下面称为任意一个运行DPI流量分类方法的处理器核,m也是运行DPI流量分类方法的处理器核的标识号;
表示第一个不运行任何流量分类方法的处理器核;
表示第二个不运行任何流量分类方法的处理器核;
表示第q个不运行任何流量分类方法的处理器核,也是最后一个不运行任何流量分类方法的处理器核,为了方便说明,下面称为任意一个不运行任何流量分类方法的处理器核,q也是不运行任何流量分类方法的处理器核的标识号。
参见图2所示,SDN/OpenFlow控制器是在现有SDN控制器中增加了去消息头模块、五元组哈希值提取模块和基于多重分类器的流连接分配模块。
去消息头模块用于去除Packet_In数据包中的OpenFlow协议头,得到Packet_In数据包的五元组内容。
五元组哈希值提取模块用于对所述五元组内容进行哈希值计算,得到五元组哈希值;然后根据所述五元组哈希值拾取得到流、及流对应的流连接。
基于多重分类器的流连接分配模块依据流的流连接进行不同分类器的分配,从而得到任意一条流匹配的网络流量分类及网络流量分类对应的处理器核CPU-C。
去消息头模块用于将接收到的OFPAK协议数据包OFPAK={(head,op1),(head,op2),…,(head,opZ)}进行去除OpenFlow协议头head,得到原始数据包OP={op1,op2,…,opZ}。
op1表示去除了OpenFlow协议头的第一个数据包;
op2表示去除了OpenFlow协议头的第二个数据包;
opZ表示去除了OpenFlow协议头的最后一个数据包,为了普识性说明,opZ也称为任意一个数据包,Z表示数据包的标识号。
在本发明中,任意一个数据包opZ包含有源端口号srcPort、目的端口号dstPort、协议号tran、源IP地址srcIP和目的IP地址dstIP的五元组内容opZ={srcPort,dstPort,tran,srcIP,dstIP}。
在本发明中,Packet_In数据包中是含有OpenFlow协议头head的网络流消息。网络流,在一段时间内,一个源IP地址和目的IP地址之间传输的单向报文流,所有报文具有相同的源端口号srcPort、目的端口号dstPort、协议号tran、源IP地址srcIP和目的IP地址dstIP,即五元组内容相同。
在本发明的五元组哈希值提取模块中,通过数据包中的五元组内容提取出任意一个数据包opZ对应的流的流连接ctB。
在本发明中,SDN/OpenFlow控制器中存在有多个的流连接,所述流连接采用集合形式表达为CT={ct1,ct2,…,ctB},ct1表示SDN控制器中的第一条流连接,ct2表示SDN控制器中的第二条流连接,ctB表示SDN控制器中的最后一条流连接,为了普识性说明,ctB也称为任意一条流连接,B表示流连接的标识号。所述的任意一条流连接ctB中包含有流连接标识号ID、数据包的个数packetnum、流连接的长度flen、源IP地址srcIP、目的IP地址dstIP、源端口号srcPort、目的端口号dstPort和协议号tran,采用集合形式表达为ctB={ID,packetnum,flen,srcIP,srcPort,dstIP,dstPort,tran}。
在本发明中,SDN/OpenFlow控制器中可能存在多个原始数据包OP={op1,op2,…,opZ}对应同一条流连接ctB,也可能一个数据包opZ对应一条流连接ctB。
在本发明应用MD5法计算出流连接CT={ct1,ct2,…,ctB}中的每一条流连接的哈希值HC={hc1,hc2,…,hcB};任意一条流连接的哈希值hcB为32位整形数。然后,根据所述的HC={hc1,hc2,…,hcB}来分配流连接CT={ct1,ct2,…,ctB}所对应的处理器核CPU-Core={CPU-CK,CPU-CDPI,CPU-CQ},从而得到流连接所属的应用层分类程序AP={ap1,ap2,…,apD}。对于哈希值的计算,也可以采用CRC32或者SHA-1等算法。
在本发明中,应用层分类程序应用可以采用不同的流量分类方法,包括但不限于基于深度包检测流量分类方法和基于K-均值聚类的分类方法。
参见图3所示,在具有多核环境的SDN/OpenFlow控制器上,能够有效的减轻SDN/OpenFlow控制器由于网络流量分类应用程序的添加,导致的控制器负载过重,特别是对于流量的识别与分类这种对比较占用计算资源的应用。本发明对网络流量分类应用采用并行的方式对进入的流Flow进行本发明的基于多重分类器的分类处理,同时,网络流量分类应用可以采用不同的流量分类方法,包括但不限于基于深度包检测流量分类方法和基于K-均值聚类的分类方法。具体的处理流程为:
(A)对SDN/OpenFlow控制器进行系统的初始化;然后去除数据包的OpenFlow消息头,从而得到数据包的五元组内容;通过所述五元组内容对应的流及流连接,得到需要进行基于多重分类器的分类处理的任意一条流Flow,执行步骤(B);
(B)将任意一条流Flow交给K-均值聚类的网络流量分类应用,执行步骤(C);
(C)经K-均值聚类的处理后,得到所述流的最近簇距离RK,执行步骤(D);
(D)判断RK与设置的最近簇最大阈值距离RK阈值的大小关系,若RK>RK阈值,则将流Flow交给深度包检测的网络流量分类应用,执行步骤(E);若RK≤RK阈值,则输出流Flow的K-均值聚类的网络流量分类应用,并将该流Flow分配给上的任意一处理器核,结束对流Flow的应用程序分类;
(E)将流Flow进行深度包检测的网络流量分类应用后,获得DPI流量分类应用的分类结果DPIin;并将该流Flow分配给上的任意一处理器核,结束对流Flow的应用程序分类。
在本发明中,经多重分类器对数据包进行流量分类的SDN/OpenFlow控制器,将不同的网络流量分类到不同的处理器核上,并且各个处理器核采用并行方式对进入的流Flow进行分类处理,能够大大降低SDN/OpenFlow控制器本身的开销的同时实现了基于SDN/OpenFlow控制器的应用层流量分类。
Claims (2)
1.一种基于多重分类器对数据包进行流量分类的SDN控制器,其特征在于:SDN/OpenFlow控制器是在现有SDN控制器中增加了去消息头模块、五元组哈希值提取模块和基于多重分类器的流连接分配模块;
去消息头模块用于去除Packet_In数据包中的OpenFlow协议头,得到Packet_In数据包的五元组内容;接收到的OFPAK协议数据包OFPAK={(head,op1),(head,op2),…,(head,opZ)}进行去除OpenFlow协议头head,得到原始数据包OP={op1,op2,…,opZ};任意一个数据包opZ包含有源端口号srcPort、目的端口号dstPort、协议号tran、源IP地址srcIP和目的IP地址dstIP,构成的五元组内容记为opZ={srcPort,dstPort,tran,srcIP,dstIP};
op1表示去除了OpenFlow协议头的第一个数据包;
op2表示去除了OpenFlow协议头的第二个数据包;
opZ表示去除了OpenFlow协议头的最后一个数据包,Z表示数据包的标识号;
五元组哈希值提取模块用于对原始数据包OP={op1,op2,…,opZ}中每个五元组内容opZ={srcPort,dstPort,tran,srcIP,dstIP}进行哈希值计算,得到五元组哈希值HC={hc1,hc2,…,hcB};然后根据所述五元组哈希值HC={hc1,hc2,…,hcB}拾取得到流、及流对应的流连接CT={ct1,ct2,…,ctB};ct1表示SDN控制器中的第一条流连接,ct2表示SDN控制器中的第二条流连接,ctB表示SDN控制器中的最后一条流连接,B表示流连接的标识号;
基于多重分类器的流连接分配模块依据流的流连接CT={ct1,ct2,…,ctB}进行不同分类器的分配,从而得到任意一条流匹配的网络流量分类及网络流量分类对应的处理器核CPU-C。
2.根据权利要求1所述的基于多重分类器对数据包进行流量分类的SDN控制器,其特征在于:一种网络流量分类对应一个处理器核CPU-C;一个SDN/OpenFlow控制器上有多个处理器核CPU-C。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410811205.8A CN104518984B (zh) | 2014-12-22 | 2014-12-22 | 一种基于多重分类器对数据包进行流量分类的sdn控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410811205.8A CN104518984B (zh) | 2014-12-22 | 2014-12-22 | 一种基于多重分类器对数据包进行流量分类的sdn控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104518984A CN104518984A (zh) | 2015-04-15 |
CN104518984B true CN104518984B (zh) | 2017-08-11 |
Family
ID=52793730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410811205.8A Active CN104518984B (zh) | 2014-12-22 | 2014-12-22 | 一种基于多重分类器对数据包进行流量分类的sdn控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104518984B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447077B (zh) * | 2015-11-04 | 2019-01-29 | 清华大学 | 基于OpenFlow的查询词抽取方法及系统 |
CN108737455B (zh) * | 2017-04-13 | 2020-12-25 | 国家电网有限公司 | 网络业务识别装置及方法 |
CN108881028B (zh) * | 2018-06-06 | 2020-06-26 | 北京邮电大学 | 基于深度学习实现应用感知的sdn网络资源调度方法 |
CN109218224A (zh) * | 2018-10-22 | 2019-01-15 | 王瑶生 | 一种高效且可扩展的ip数据包分类方法 |
CN111628941A (zh) * | 2020-05-27 | 2020-09-04 | 广东浪潮大数据研究有限公司 | 一种网络流量的分类处理方法、装置、设备及介质 |
CN111694783B (zh) * | 2020-06-11 | 2021-06-25 | 福建宏创科技信息有限公司 | 一种应用于dpi设备的并行数据分析方法和装置 |
CN112995316B (zh) * | 2021-02-25 | 2023-05-12 | 深信服科技股份有限公司 | 数据处理方法、装置、电子设备和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9204293B2 (en) * | 2008-02-21 | 2015-12-01 | Telefonaktiebolaget L M Ericsson (Publ) | Apparatuses, methods, and computer program products for data retention and lawful intercept for law enforcement agencies |
CN101252541B (zh) * | 2008-04-09 | 2011-05-04 | 中国科学院计算技术研究所 | 一种网络流量分类模型的建立方法及相应系统 |
US20100124223A1 (en) * | 2008-11-18 | 2010-05-20 | Andrew Gibbs | Selective paging in wireless networks |
US9094459B2 (en) * | 2012-07-16 | 2015-07-28 | International Business Machines Corporation | Flow based overlay network |
-
2014
- 2014-12-22 CN CN201410811205.8A patent/CN104518984B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104518984A (zh) | 2015-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104518984B (zh) | 一种基于多重分类器对数据包进行流量分类的sdn控制器 | |
CN105721535B (zh) | 用于对服务功能链中的服务功能进行并行处理的计算设备、方法以及机器可读存储介质 | |
CN104579962B (zh) | 一种区分不同报文的QoS策略的方法及装置 | |
CN108540559B (zh) | 一种支持IPSec VPN负载均衡的SDN控制器 | |
US20120250502A1 (en) | Method and System for Egress Policy Indications | |
CN107682258A (zh) | 一种基于虚拟化的多路径网络传输方法及装置 | |
CN108270699B (zh) | 报文处理方法、分流交换机及聚合网络 | |
CN102474449A (zh) | 基于虚拟接口的交换装置和方法 | |
CN105706043A (zh) | 推进式链接的列表吞吐量 | |
CN109495391A (zh) | 一种基于sdn的安全服务链系统及数据包匹配转发方法 | |
CN106059941B (zh) | 一种消除链路拥塞的骨干网络流量调度方法 | |
CN104486246A (zh) | 一种基于SDN架构的VXLAN的QoS机制实现方法 | |
CN109962847A (zh) | 业务功能链报文的封装方法和装置及计算机可读存储介质 | |
CN104468403B (zh) | 一种基于nacc对数据包进行网络流分类的sdn控制器 | |
CN1338168A (zh) | 用于带宽分配的分布式分级调度与仲裁 | |
WO2015154484A1 (zh) | 流量数据分类方法及装置 | |
US8477619B2 (en) | Method and system for distributed virtual traffic management | |
CN105763457B (zh) | 组播报文处理方法和网络设备 | |
CN103973589A (zh) | 网络流量分类方法及装置 | |
Xu et al. | IARA: An intelligent application-aware VNF for network resource allocation with deep learning | |
US8611212B2 (en) | Method and system for writing to a VLAN tag | |
US9258254B2 (en) | Virtual router and switch | |
US11223691B2 (en) | Service function chain (SFC) based multi-tenancy processing method | |
CN110099006A (zh) | 用于有状态的分组处理的系统和方法 | |
KR101437008B1 (ko) | 트래픽 분석 장치 및 방법 |
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 |