CN108833293A - 一种基于软件定义网络sdn的数据中心拥塞控制方法及装置 - Google Patents
一种基于软件定义网络sdn的数据中心拥塞控制方法及装置 Download PDFInfo
- Publication number
- CN108833293A CN108833293A CN201810636431.5A CN201810636431A CN108833293A CN 108833293 A CN108833293 A CN 108833293A CN 201810636431 A CN201810636431 A CN 201810636431A CN 108833293 A CN108833293 A CN 108833293A
- Authority
- CN
- China
- Prior art keywords
- link
- target
- information
- data
- data flow
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种基于软件定义网络SDN的拥塞控制方法、装置及SDN控制器。该方法包括:获得交换机发送的packet_in消息;确定packet_in消息中包括的数据包;当数据包为用于请求建立TCP连接的握手信息SYN包时,基于SDN控制器所在网络的拓扑结构和链路信息,对网络执行第一拥塞控制处理;当数据包为用于应答断开TCP连接的结束信息FIN包时,基于链路信息,对网络执行第二拥塞控制处理;当数据包为用于请求断开TCP连接的FIN包时,删除数据库中存储的、数据包所对应TCP连接的信息。与现有技术相比,应用本发明实施例提供的方案,SDN控制器可以改善各数据流之间带宽的公平性,并减少高度突发的短流量带来的TCP重传和超时,以实现对数据中心中存在的TCP Incast拥塞的控制。
Description
技术领域
本发明涉及信息技术领域,特别是涉及一种基于软件定义网络SDN的数据中心拥塞控制方法、装置及SDN控制器。
背景技术
随着信息技术的不断发展,数据中心已经成为了信息基础设施的基石,为大规模网络服务提供了高聚合的带宽。所谓数据中心是指一整套复杂的设施,这些设施不仅包括计算机系统和其它与之配套的设备,例如,通信系统和存储系统,还包含冗余的数据通信连接设备、环境控制设备、监控设备以及各种安全装置。数据中心可以在internet网络基础设施上对数据信息进行传递、加速、展示、计算和存储。
为了保证数据中心的正常运行,需要对数据中心出现的拥塞现象进行控制。所谓拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿。
当前,TCP Incast拥塞已经成为数据中心中一个亟待解决的问题。造成TCPIncast拥塞的主要原因是:一些类似MapReduce的应用程序会在一段时间内启动高度突发的短流量,由于短流量具有严格的时间限制,因此这种高度突发的短流量会导致TCP重传和超时。所以,当前亟需一种数据中心拥塞控制方法来解决TCP Incast拥塞的问题。
发明内容
本发明实施例的目的在于提供一种基于软件定义网络SDN的数据中心拥塞控制方法、装置及SDN控制器,以实现对数据中心TCP Incast拥塞的控制。
具体技术方案如下:
第一方面,本发明实施例提供了一种基于软件定义网络SDN的拥塞控制方法,应用于SDN控制器,所述方法包括:
获得交换机发送的packet_in消息;
确定所述packet_in消息中包括的数据包;
当所述数据包为用于请求建立TCP连接的握手信息SYN包时,基于所述SDN控制器所在网络的拓扑结构和链路信息,对所述网络执行第一拥塞控制处理;
当所述数据包为用于应答断开TCP连接的结束信息FIN包时,基于所述链路信息,对所述网络执行第二拥塞控制处理;
当所述数据包为用于请求断开TCP连接的FIN包时,删除数据库中存储的、所述数据包所对应TCP连接的信息,其中,所述数据库用于存储各个TCP连接的信息。
作为本发明实施例的一种实施方式,所述当所述数据包为用于请求建立TCP连接的SYN包时,基于所述SDN控制器所在网络的拓扑结构和链路信息,对所述网络执行第一拥塞控制处理的步骤,包括:
在所述SYN包中提取通信双方信息,其中,所述通信双方信息包括:所述发送方的IP地址、所述发送方的端口地址、所述接收方的IP地址和所述接收方的端口地址;
基于所述拓扑结构和目标信息,确定所述发送方和所述接收方之间的数据流的路径信息;其中,所述目标信息包括:所述交换机的ID、所述交换机的输入端口号和所述通信双方信息;
将所述目标信息和所述数据流的路径信息,存储到所述数据库;
基于所述链路信息和所述数据库中当前存储的各个数据流的路径信息,为所述各个数据流分配带宽;
基于所述各个数据流所分配的带宽,为所述各个数据流计算接收窗口的目标窗口值;
针对所述各个数据流中的每一个,生成该数据流对应的目标流表,并将该目标流表转发到与该数据流对应的目标交换机,其中,任一数据流对应的目标流表用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值。
作为本发明实施例的一种实施方式,所述当所述数据包为用于应答断开TCP连接的FIN包时,基于所述链路信息,对所述网络执行第二拥塞控制处理的步骤,包括:
基于所述链路信息和所述数据库中当前存储的各个数据流的路径信息,为所述各个数据流分配带宽;
基于所述各个数据流所分配的带宽,为所述各个数据流计算接收窗口的目标窗口值;
针对所述各个数据流中的每一个,生成该数据流对应的目标流表,并将该目标流表转发到与该数据流对应的目标交换机,其中,任一数据流对应的目标流表用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值。
作为本发明实施例的一种实施方式,所述基于所述链路信息和所述数据库中当前存储的各个数据流的路径信息,为所述各个数据流分配带宽的步骤,包括:
基于所述各个数据流的路径信息和所述链路信息,统计所述拓扑结构中各个目标链路的目标链路信息,其中,目标链路为:存在未分配带宽的数据流的链路,任一目标链路的目标链路信息包括:该目标链路的可用带宽和流经该目标链路的未分配带宽的数据流的数目;
基于所述各个目标链路的目标链路信息,确定所述各个目标链路中链路拥塞程度最大的目标链路,作为待分配链路;
为待分配链路的待分配数据流分配所述待分配链路的可用带宽,其中,所述待分配数据流为:流经所述待分配链路的未分配带宽的数据流;
更新所述待分配数据流所流经的链路的链路信息,返回所述基于所述各个数据流的路径信息和所述链路信息,统计所述拓扑结构中各个目标链路的目标链路信息的步骤,直至所述拓扑结构中不存在目标链路。
作为本发明实施例的一种实施方式,所述基于所述各个目标链路的目标链路信息,确定所述各个目标链路中链路拥塞程度最大的目标链路,作为待分配链路的步骤,包括:
针对每个目标链路,计算该目标链路的可用带宽与流经该目标链路的未分配带宽的数据流的数目的比值,作为链路拥塞度;
确定所述链路拥塞度最小的目标链路为待分配链路。
作为本发明实施例的一种实施方式,所述为所述各个数据流计算接收窗口的目标窗口值的步骤,包括:
利用如下公式为所述各个数据流计算接收窗口的目标窗口值:
rwndi=bi×numibottleneck×latency
其中,Fbottle表示一个方向上流经瓶颈链路的数据流的集合,所述瓶颈链路为:在某一个方向或两个方向上链路的带宽容量全部分配的链路,i表示集合Fbottle中的数据流的编号,rwndi表示编号为i的数据流的目标窗口值,表示编号为i的数据流所经过的瓶颈链路的数量,windowbase表示能满足链路的带宽容量的基本窗口大小,bi表示编号为i的数据流的分配带宽,latency表示瓶颈链路的延时,m表示集合Fbottle中的数据流的数目。
作为本发明实施例的一种实施方式,所述目标交换机为:网络边缘交换机;
所述目标流表为二级流表,其中,第一级用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值,第二级用于路由。
第二方面,本发明实施例提供了一种基于软件定义网络SDN的拥塞控制装置,应用于SDN控制器,所述装置包括:
消息获得模块,用于获得交换机发送的packet_in消息;
消息确定模块,用于确定所述packet_in消息中包括的数据包,当所述数据包为用于请求建立TCP连接的握手信息SYN包时,触发第一控制模块,当所述数据包为用于应答断开TCP连接的结束信息FIN包时,触发第二控制模块,当所述数据包为用于请求断开TCP连接的FIN包时,触发第三控制模块;
所述第一控制模块,用于基于所述SDN控制器所在网络的拓扑结构和链路信息,对所述网络执行第一拥塞控制处理;
所述第二控制模块,用于基于所述链路信息,对所述网络执行第二拥塞控制处理;
所述第三控制模块,用于删除数据库中存储的、所述数据包所对应TCP连接的信息,其中,所述数据库用于存储各个TCP连接的信息。
作为本发明实施例的一种实施方式,所述第一控制模块包括:
信息获取子模块,用于在所述SYN包中提取通信双方信息,其中,所述通信双方信息包括:所述发送方的IP地址、所述发送方的端口地址、所述接收方的IP地址和所述接收方的端口地址;
信息确定子模块,用于基于所述拓扑结构和目标信息,确定所述发送方和所述接收方之间的数据流的路径信息;其中,所述目标信息包括:所述交换机的ID、所述交换机的输入端口号和所述通信双方信息;
信息存储子模块,用于将所述目标信息和所述数据流的路径信息,存储到所述数据库;
带宽分配子模块,用于基于所述链路信息和所述数据库中当前存储的各个数据流的路径信息,为所述各个数据流分配带宽;
窗口值计算子模块,用于基于所述各个数据流所分配的带宽,为所述各个数据流计算接收窗口的目标窗口值;
流表生成子模块,用于针对所述各个数据流中的每一个,生成该数据流对应的目标流表,并将该目标流表转发到与该数据流对应的目标交换机,其中,任一数据流对应的目标流表用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值。
作为本发明实施例的一种实施方式,所述第二控制模块包括:
带宽分配子模块,用于基于所述链路信息和所述数据库中当前存储的各个数据流的路径信息,为所述各个数据流分配带宽;
窗口值计算子模块,用于基于所述各个数据流所分配的带宽,为所述各个数据流计算接收窗口的目标窗口值;
流表生成子模块,用于针对所述各个数据流中的每一个,生成该数据流对应的目标流表,并将该目标流表转发到与该数据流对应的目标交换机,其中,任一数据流对应的目标流表用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值。
作为本发明实施例的一种实施方式,所述带宽分配子模块包括:
信息统计单元,用于基于所述各个数据流的路径信息和所述链路信息,统计所述拓扑结构中各个目标链路的目标链路信息,其中,目标链路为:存在未分配带宽的数据流的链路,任一目标链路的目标链路信息包括:该目标链路的可用带宽和流经该目标链路的未分配带宽的数据流的数目;
链路确定单元,用于基于所述各个目标链路的目标链路信息,确定所述各个目标链路中链路拥塞程度最大的目标链路,作为待分配链路;
带宽分配单元,用于为待分配链路的待分配数据流分配所述待分配链路的可用带宽,其中,所述待分配数据流为:流经所述待分配链路的未分配带宽的数据流;
信息更新单元,用于更新所述待分配数据流所流经的链路的链路信息,返回所述信息统计单元,直至所述拓扑结构中不存在目标链路。
作为本发明实施例的一种实施方式,所述链路确定单元包括:
拥塞度计算子单元,用于针对每个目标链路,计算该目标链路的可用带宽与流经该目标链路的未分配带宽的数据流的数目的比值,作为链路拥塞度;
链路确定子单元,用于确定所述链路拥塞度最小的目标链路为待分配链路。
作为本发明实施例的一种实施方式,所述窗口值计算子模块具体用于:
利用如下公式为所述各个数据流计算接收窗口的目标窗口值:
rwndi=bi×numibottleneck×latency
其中,Fbottle表示一个方向上流经瓶颈链路的数据流的集合,所述瓶颈链路为:在某一个方向或两个方向上链路的带宽容量全部分配的链路,i表示集合Fbottle中的数据流的编号,rwndi表示编号为i的数据流的目标窗口值,表示编号为i的数据流所经过的瓶颈链路的数量,windowbase表示能满足链路的带宽容量的基本窗口大小,bi表示编号为i的数据流的分配带宽,latency表示瓶颈链路的延时,m表示集合Fbottle中的数据流的数目。
作为本发明实施例的一种实施方式,所述目标交换机为:网络边缘交换机;所述目标流表为二级流表,其中,第一级用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值,第二级用于路由。
第三方面,本发明实施例提供了一种SDN控制器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面提供的一种基于SDN的拥塞控制方法中任一所述的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面提供的一种基于SDN的拥塞控制方法中任一所述的方法步骤。
以上可见,本发明实施例提供的方案,SDN控制器在获得交换机发送的packet_in消息后,根据packet_in消息中包括的不同的数据包,采取不同的拥塞控制策略。从而使得SDN控制器可以在网络中添加新建立的TCP连接或者中断已建立的TCP连接时,快速对网络中TCP连接的变化做出反应,为存在的TCP连接中的各个数据流重新分配带宽。进而,SDN控制器可以改善各数据流之间带宽的公平性,并减少高度突发的短流量带来的TCP重传和超时,以实现对数据中心中存在的TCP Incast拥塞的控制。此外,由于SDN网络可以提供开放编程接口,因此,本发明实施例提供的方案不需要修改TCP协议栈,更易于实现。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种SDN的结构示意图;
图2为本发明实施例提供的一种基于软件定义网络SDN的拥塞控制方法的流程示意图;
图3为图2所示实施例中步骤S203的一种具体实现方式的流程示意图;
图4为图2所示实施例中步骤S204的一种具体实施方式的流程示意图;
图5为本发明实施例提供的一种基于软件定义网络SDN的拥塞控制装置的结构示意图;
图6为本发明实施例提供的一种SDN控制器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当前,TCP Incast拥塞已经成为数据中心中一个亟待解决的问题。造成TCPIncast拥塞的主要原因是:一些类似MapReduce的应用程序会在一段时间内启动高度突发的短流量,由于短流量具有严格的时间限制,因此这种高度突发的短流量会导致TCP重传和超时。所以,当前亟需一种数据中心拥塞控制方法来解决TCP Incast拥塞的问题。
为了解决现有技术中存在的问题,本发明实施例提供了一种基于软件定义网络SDN的拥塞控制方法、装置及SDN控制器。
为了方便理解本发明实施例的方案,下面首先SDN进行简要介绍。
SDN(Software Defined Network,软件定义网络)是一种新型网络架构,旨在将网络的控制平面与转发平面进行分离,并对底层网络进行虚拟化,实现可编程控制。
如图1所示,为一种SDN的结构示意图,其包括应用层、控制层和基础设施层三层架构。
其中,基础设施层包括交换机、路由器、接入适配网元等网络设备,每个网络设备都可以提供网络流量。
控制层由SDN控制器组成,是SDN中的核心组件,担任着控制网络流量的重要任务,SDN控制器可以基于SDN的全网可测特性,获取其所在网络的拓扑结构、链路信息和数据流路径信息等网络相关信息,从而对流量的转发进行启动或停止。作为整个SDN的核心,SDN控制器可以提供集中控制并通过解耦控制平面和数据平面来开放编程接口。
应用层包括一个或多个应用,每个应用有独占一组资源的权利,这些资源是由控制层中一个或多个SDN控制器提供。
下面,首先对本发明实施例提供的一种基于软件定义网络SDN的拥塞控制方法进行介绍。
图2为本发明实施例提供的一种基于软件定义网络SDN的拥塞控制方法的流程示意图。如图2所示,本发明实施例提供的一种基于软件定义网络SDN的拥塞控制方法,可以包括如下步骤:
S201:获得交换机发送的packet_in消息;
其中,packet_in消息是由交换机产生,发送给SDN控制器的一种消息,其中可以包括多种数据包,例如,用于带宽探测的数据包、拓扑信息更新的数据包、其他非TCP协议的数据包等。
在上述步骤S201中,SDN控制器获得packet_in消息的方式可以是交换机在产生packet_in消息后,将该packet_in消息发送给SDN控制器,也可以是SDN控制器向交换机发送消息获得请求,并接受交换机响应该消息获得请求向SDN控制器发送packet_in消息。
S202:确定packet_in消息中包括的数据包;
由于packet_in消息中可以包括多种数据包,而有些数据包中可以不包括SDN控制器进行拥塞控制处理所需的信息,因此,这些数据包可以不与SDN控制器进行拥塞控制处理相关,进而,SDN控制器在获得packet_in后,可以对packet_in消息中包括的数据包进行确定,进而确定结果判断是否采取拥塞控制处理或者采取何种拥塞控制处理。
S203:当数据包为用于请求建立TCP连接的握手信息SYN包时,基于SDN控制器所在网络的拓扑结构和链路信息,对网络执行第一拥塞控制处理。
其中,TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。SYN(synchronous)是用于TCP/IP建立连接时使用的握手信号。
网络的拓扑结构可以表征网络中各交换机之间的连接关系,网络的链路信息是网络中各交换机之间的链路上的可供分配的带宽。由于SDN具有全网可测性,因此,SDN控制器可以获知其所在网络的拓扑结构和链路信息的。
当packet_in消息中包括的数据包为用于请求建立TCP连接的握手信息SYN包时,说明该packet_in可以指示在网络中添加一条新建立的TCP连接。可以理解的,在建立该新的TCP连接之前,SDN控制器可以在网络中已存在的数据流所流经的链路上为这些数据流分配带宽,以保证网络中各通信的正常进行。而当网络中添加了一条新建立的TCP连接后,根据该新建立的TCP连接上的数据流的路径信息,SDN控制器需要为该新建立的TCP连接上的数据流在其所流经的链路上分配带宽。也就是说,网络中原有的带宽分配方案不再适用,SDN控制器可以建立新的带宽分配方案,以使得网络中可以不存在拥塞问题。
因此,当SDN控制器在步骤S202中确定packet_in消息中包括的数据包为用于请求建立TCP连接的握手信息SYN包时,SDN控制器可以基于SDN控制器所在网络的拓扑结构和链路信息,对网络执行第一拥塞控制处理。为使行文清楚,后续会对步骤S203进行举例说明。
需要说明的是,在本发明实施例中,上述用于请求建立TCP连接的握手信息SYN包可以是发送方向接收方发送的用于建立TCP连接的SYN包,其中,发送方为通信发起方,接收方为通信应答方。
S204:当数据包为用于应答断开TCP连接的结束信息FIN包时,基于链路信息,对网络执行第二拥塞控制处理;
其中,FIN(Finish)是用于表征数据发送完成的结束信号。链路信息与上述步骤S203中相同,这里不再赘述。
当packet_in消息中包括的数据包为应答断开TCP连接的结束信息FIN包时,说明该packet_in消息可以指示中断网络中与packet_in消息对应的TCP连接,该TCP连接是网络中当前已建立的TCP连接。可以理解的是,在中断该TCP连接之前,SDN控制器可以在网络中已存在的数据流所流经的链路上为这些数据流分配带宽,以保证网络中各通信的正常进行。而当中断网络中与上述packet_in消息对应的TCP连接后,该TCP连接对应的数据流将消失,从而在这些数据流所流经的链路上分配给这些数据流的带宽可以被释放。也就是说,在该TCP连接中断后,网络中的某些链路上将存在可分配带宽,SDN控制器可以将这些可分配带宽分配给网络中依然存在的数据流,从而这些依然存在的数据流可以获得更优化的带宽,进而,使得网络中可以不存在拥塞问题。
因此,当SDN控制器在步骤S202中确定packet_in消息中包括的数据包为用于应答断开TCP连接的结束信息FIN包时,SDN控制器可以基于SDN控制器所在网络的链路信息,对网络执行第二拥塞控制处理。为使行文清楚,后续会对步骤S204进行举例说明。
S205:当数据包为用于请求断开TCP连接的FIN包时,删除数据库中存储的、数据包所对应TCP连接的信息。
其中,数据库用于存储各个TCP连接的信息。
可以理解的,数据库中可以存储网络中存在的各个TCP连接的信息,这些信息可以包括每个TCP连接的通信双方的IP地址、端口地址以及其所对对应的数据流的路径信息等,当然,数据库中也可以存储有其他信息,对此,本发明实施例不做具体限定。
当packet_in消息中包括的数据包为用于请求断开TCP连接的FIN包时,说明该packet_in消息可以指示请求中断网络中与packet_in消息对应的TCP连接,该TCP连接是网络中当前已建立的TCP连接。此时,该TCP连接中断开始,但还没有完成中断,也就是说,此时网络中还存在与该TCP连接对应的数据流。而由于当该TCP连接中断完成后,网络中将不再存在该TCP连接,与该TCP连接对应的数据流也将消失,因此,SDN控制器可以删除数据库中存储的、数据包所对应TCP连接的信息。
为了描述方便,可以将通信双方中想要中断TCP连接的一方称为发送方,另一方称为接收方。需要说明的是,当发送方向接收方发送用于请求断开TCP连接的FIN包时,可以开始中断该TCP连接,然后当接收方向发送方反馈用于应答断开TCP连接的FIN包,则可以完成该TCP连接的中断。也就是说,TCP连接的中断过程可以包括发送方发起中断,接收方应答中断两个过程,当两个过程全部完成后,该TCP连接的终端完成。
因此,当发送方发起中断,也就是当packet_in消息中包括的数据包为用于请求断开TCP连接的FIN包时,在该TCP连接对应的数据流所流经的链路上分配给这些数据流的带宽还没有被释放,SDN控制器可以执行上述步骤S205,删除数据库中存储的、数据包所对应TCP连接的信息。
当接收方应答中断,也就是当packet_in消息中包括的数据包为用于应答断开TCP连接的结束信息FIN包时,该TCP中断完成,在该TCP连接对应的数据流所流经的链路上分配给这些数据流的带宽被释放,SDN控制器可以执行上述步骤S204,基于SDN控制器所在网络的链路信息,对网络执行第二拥塞控制处理。
则在本发明实施例中,上述步骤S204中,用于应答断开TCP连接的结束信息FIN包可以是接收方向发送方发送的用于应答断开TCP连接的结束信息FIN包。上述步骤S205中,用于请求断开TCP连接的FIN包时可以是发送方向接收方发送的用于请求断开TCP连接的FIN包。
以上可见,本发明实施例提供的方案,SDN控制器在获得交换机发送的packet_in消息后,根据packet_in消息中包括的不同的数据包,采取不同的拥塞控制策略。从而使得SDN控制器可以在网络中添加新建立的TCP连接或者中断已建立的TCP连接时,快速对网络中TCP连接的变化做出反应,为存在的TCP连接中的各个数据流重新分配带宽。进而,SDN控制器可以改善各数据流之间带宽的公平性,并减少高度突发的短流量带来的TCP重传和超时,以实现对数据中心中存在的TCP Incast拥塞的控制。此外,由于SDN网络可以提供开放编程接口,因此,本发明实施例提供的方案不需要修改TCP协议栈,更易于实现。
下面对上述步骤S203当数据包为用于请求建立TCP连接的SYN包时,基于SDN控制器所在网络的拓扑结构和链路信息,对网络执行第一拥塞控制处理的进行举例说明。如图3所示,具体的,上述步骤S203可以包括:
S301:在SYN包中提取通信双方信息。
其中,通信双方信息包括:发送方的IP地址、发送方的端口地址、接收方的IP地址和接收方的端口地址;
当packet_in消息中包括的数据包为用于请求建立TCP连接的握手信息SYN包时,说明该packet_in可以指示在网络中添加一条新建立的TCP连接,因此,SYN包中可以包括要建立TCP连接的通信双方的相关信息,以使得SDN控制器所在网络可以基于这些信息在网络中添加新建立的TCP连接。
可以理解的,通信双方的相关信息可以包括发送方的IP地址、发送方的端口地址、接收方的IP地址和接收方的端口地址,从而可以根据发送方的IP地址和接收方的IP地址确定该TCP连接的通信双方,同时可以根据发送方的端口地址和接收方的端口地址来实现在发送方和接收方之间的信息流传递。当然,该SYN包中也可以包括其他信息,对此,本发明实施例不做具体限定。
因此,要完成该packet_in消息指示的在网络中添加一条新建立的TCP连接,并使得SDN控制器可以为该新建立的TCP连接对应的数据流分配带宽,则SDN控制器在确定packet_in消息中包括的数据包为用于请求建立TCP连接的握手信息SYN包时,可以在该SYN包中提取通信双方信息。而通信双方信息中可以包括发送方的IP地址、发送方的端口地址、接收方的IP地址和接收方的端口地址。
S302:基于拓扑结构和目标信息,确定发送方和接收方之间的数据流的路径信息。
其中,目标信息包括:交换机的ID、交换机的输入端口号和通信双方信息。
上述packet_in消息是由交换机产生并发送给SDN控制器的,因此,该packet_in消息可以包括该交换机的ID以及该交换机的输入端口号,从而使得SDN控制在获得该packet_in消息后,可以在该packet_in消息中提取产生并发送该packet_in消息的交换机的ID和交换机的输入端口号,以使得SDN控制器可以确定该packet_in消息是由哪个交换机产生并发送的,以及该packet_in消息所包含的数据包是通过该交换机的哪个端口号进入到交换机的。
当然,上述packet_in消息中还可以包括其他信息,对此,本发明实施例不做具体限定。
由于SDN控制器可以获知其所在网络的拓扑结构,而网络的拓扑结构可以表征该网络中各交换机之间的连接关系,也就是说,SDN控制器可以获知其所在网络中各交换机之间进行数据流传输的交换机端口号,即数据流在可以通过当前所在交换机的哪一个端口传输给下一个交换机,下一个交换机又是通过哪一个端口接收到该数据流。因此,基于上述拓扑结构、交换机的ID、交换机端口号以及上述通信双方信息,SDN控制器可以确定基于上述packet_in消息在网络中新建立的TCP连接对应的数据流的路径信息。
其中,该路径信息可以理解为:数据流由发送方传输到接收方所流经的有向链路所构成的发送方到接收方的有向路径。
S303:将目标信息和数据流的路径信息,存储到数据库;
其中,数据库是用来存储网络中各个TCP。
当在网络中添加新建立的TCP连接后,网络中所存在的TCP连接发生了变化,SDN控制器需要为该新建立的TCP连接上的数据流在其所流经的链路上分配带宽,也就是说,SDN控制器可以改变在添加该新建立的TCP连接之前的带宽分配方案,建立新的带宽分配方案。而SDN控制器可以基于数据库中存储的各个TCP连接的信息来建立新的带宽分配方案。
可以理解的是,当SDN控制器基于数据库中存储的各个TCP连接的信息时,数据库中存储的各个TCP连接的信息中需要包括上述新建立的TCP连接的信息。因此,当确定目标信息和发送方和接收方之间的数据流的路径信息后,SDN控制器可以将这些信息作为该新建立的TCP连接的信息,并将其存储到数据库中。也就是说,在网络中添加新建立的TCP连接后,可以对数据库中存储的各个TCP连接的信息进行更新,使其能够存储该新建立的TCP连接的信息,进而,使得SDN控制器建立的新得带宽分配方案是适用于当前的网络状态的。
S304:基于链路信息和数据库中当前存储的各个数据流的路径信息,为各个数据流分配带宽。
在更新了数据库存储的各个TCP连接的信息后,SDN控制器便可以基于其所在网络的链路信息和数据库中当前存储的各个数据流的路径信息,为各个数据流分配带宽。
可选的,一种具体实现方式中,上述步骤S304可以包括:
步骤A1:基于各个数据流的路径信息和链路信息,统计拓扑结构中各个目标链路的目标链路信息。
其中,目标链路为:存在未分配带宽的数据流的链路,任一目标链路的目标链路信息包括:该目标链路的可用带宽和流经该目标链路的未分配带宽的数据流的数目。
在确定各个数据流的路径信息以及网络中的链路信息后,SDN控制器便可以根据每个数据流在传输过程中所流经的链路,确定网络中每条链路上流经该链路的数据流。这些数据流中可以有一些数据流是未分配带宽的数据流,例如,对于添加的新建立的TCP连接对应的数据流来说,SDN控制器还没有来得及为其分配链路。为了描述简便,可以将存在未分配带宽的数据流的链路简称为目标链路。
因此,在更新了数据库存储的各个TCP连接的信息后,SDN控制器便可以首先基于各个数据流的路径信息和链路信息,统计拓扑结构中各个目标链路的目标链路信息。其中,任一目标链路的目标链路信息中可以包括:该目标链路的可用带宽和流经该目标链路的未分配带宽的数据流的数目。当然,也可以包括其他信息,对此,本发明实施例不做具体限定。
步骤A2:基于各个目标链路的目标链路信息,确定各个目标链路中链路拥塞程度最大的目标链路,作为待分配链路。
在统计得到SDN控制器所在网络的拓扑结构中各个目标链路的目标链路信息后,SDN控制器可以基于上述统计得到的各个目标链路的链路信息,确定各个目标链路中链路拥塞程度最大的目标链路,作为待分配链路。
可选的,一种具体实现方式中,上述步骤A2可以包括:
步骤B1:针对每个目标链路,计算该目标链路的可用带宽与流经该目标链路的未分配带宽的数据流的数目的比值,作为链路拥塞度。
步骤B2:确定链路拥塞度最小的目标链路为待分配链路。
针对每个目标链路,SDN控制器可以计算该目标链路的可用带宽与流经该目标链路的未分配带宽的数据流的数目的比值,并将该比值作为该链路的链路拥塞度。该比值越小,则可以说明该链路上可以分配给每个未分配带宽的数据流的带宽越小。而带宽指的是单位时间能通过链路的数据量,因此,分配给数据流的带宽越小,说明该数据流在传输时单位时间内能够通过链路的数据量越短。可以理解的,相同数据量的数据流,不同的链路分配的带宽不同,则数据流流经所分配的带宽小的链路的时间越长,进而,可以说明该链路的拥塞程度越大。因此,SDN控制器可以将上述步骤B1中计算得到的链路拥塞度最小的目标链路作为待分配链路。
当然,SDN控制器也可以通过其他方式来确定待分配链路,对此,本发明实施例不做具体限定。
步骤A3:为待分配链路的待分配数据流分配待分配链路的可用带宽,其中,待分配数据流为:流经待分配链路的未分配带宽的数据流。
为了便于描述,可以将流经待分配链路的未分配带宽的数据流简称为待分配数据流。在确定待分配链路后,SDN控制器可以为待分配链路的待分配数据流分配待分配链路的可用带宽。
可选的,一种具体实现方式中,SDN控制器可以将待分配链路的可用带宽平均分配给该待分配链路的待分配数据流。即该待分配链路的每个待分配数据流所分配到的带宽可以为该待分配链路的可用带宽与流经该待分配链路的未分配带宽的数据流的数目的比值,也就是,该待分配链路的链路拥塞度。
当然,SDN控制器也可以按照其他方式将待分配链路的可用带宽分配给该待分配链路的待分配数据流,对此,本申请不做具体限定。
步骤A4:更新待分配数据流所流经的链路的链路信息,返回基于各个数据流的路径信息和链路信息,统计拓扑结构中各个目标链路的目标链路信息的步骤,直至拓扑结构中不存在目标链路。
在该网络中,不同的数据流的路径信息中可以包括相同的链路,也可以包括不同的链路。因此,当SDN控制器执行上述步骤A3后,为链路拥塞程度最大的目标链路上未分配带宽的数据流分配带宽后,网络中各个链路上存在的未分配带宽的数据流的情况可以发生变化,网络中的目标链路及其目标链路信息也可以随之发生变化。
因此,SDN控制器在为待分配链路的待分配数据流分配待分配链路的可用带宽后,可以更新待分配数据流所流经的链路的链路信息,并返回上述步骤A1,从而可以使SDN控制器基于更新后的各个数据流的路径信息和链路信息,重新统计拓扑结构中各个目标链路的目标链路信息,并在此执行步骤A2-A4,直至其所在网络的拓扑结构中不再存在目标链路。此时,SDN控制器所在网络的所有链路上可以均不存在未分配带宽的数据流,也就是说,SDN控制器可以为其所在网络中的所有TCP连接所对应的数据流分配了带宽。
S305:基于各个数据流所分配的带宽,为各个数据流计算接收窗口的目标窗口值。
在为所在网络中的所有TCP连接所对应的数据流分配带宽后,SDN控制器可以基于各个数据流所分配的带宽,为各个数据流计算接收窗口的目标窗口值。
可选的,一种具体实现方式中,上述步骤A3可以利用如下公式为各个数据流计算接收窗口的目标窗口值:
rwndi=bi×numibottleneck×latency
其中,Fbottle表示一个方向上流经瓶颈链路的数据流的集合,瓶颈链路为:在某一个方向或两个方向上链路的带宽容量全部分配的链路,i表示集合Fbottle中的数据流的编号,rwndi表示编号为i的数据流的目标窗口值,表示编号为i的数据流所经过的瓶颈链路的数量,windowbase表示能满足链路的带宽容量的基本窗口大小,bi表示编号为i的数据流的分配带宽,latency表示瓶颈链路的延时,m表示集合Fbottle中的数据流的数目。
需要说明的是,在本发明实施例中,考虑的链路为全双工双向链路。可以理解的,链路是数据流在网络中进行传输的路径,其具有两个传输方向,而所谓全双工双向链路是指可以允许数据流同时进行双向传输的链路。因此,在本发明实施例中,为各个数据流计算接收窗口的目标窗口值,可以将两个方向分开单独计算。
当然,SDN控制器也可以采用其他方式为各个数据流计算接收窗口的目标窗口值,对此,本申请不做具体限定。
S306:针对各个数据流中的每一个,生成该数据流对应的目标流表,并将该目标流表转发到与该数据流对应的目标交换机。
其中,任一数据流对应的目标流表用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值。
在为各个数据流计算接收窗口的目标窗口值后,针对各个数据流中的每一个,SDN控制器可以生成该数据流对应的目标流表,并可以将该数据流表转发给与该数据流对应的目标交换机。
其中,该目标流表中可以包括计算得到的该数据流对应的目标窗口值,从而,该目标流表可以用于修改该数据流的接收窗口的大小,从而使该数据流的接收窗口的大小可以更新为所计算得到的该数据流对应的目标窗口值。
可选的,一种具体实现方式中,SDN控制器可以将生成数据流对应的目标流表通过Modify Flow Entry(修改流表项)消息发送到与该数据流对应的目标交换机。
可选的,一种具体实现方式中,修改该数据流的接收窗口的大小,使其可以更新为所计算得到的该数据流对应的目标窗口值的方式,可以是目标交换机通过修改ACK(Acknowledgement,确认)数据包中的接收窗口字段实现。
可选的,一种具体实现方式中,上述目标交换机为:网络边缘交换机;上述目标流表为二级流表,其中,第一级用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值,第二级用于路由。
下面对上述步骤S204当数据包为用于应答断开TCP连接的FIN包时,基于链路信息,对网络执行第二拥塞控制处理进行举例说明。如图4所示,具体的,上述步骤S204可以包括:
S401:基于链路信息和数据库中当前存储的各个数据流的路径信息,为各个数据流分配带宽;
根据上述对步骤S204和步骤S205的说明,可以理解的,在SDN控制器确定packet_in消息中包括的数据包为用于应答断开TCP连接的FIN包时,可以说明交换机在生成该packet_in消息之前,已经生成与packet_in消息对应的另一个packet_in消息,该另一个packet_in消息包括与上述用于应答断开TCP连接的FIN包相对应的用于请求断开TCP连接的FIN包。
进而,SDN控制器在执行上述步骤S204之前,可以已经删除数据库中存储的,与上述用于应答断开TCP连接的FIN包对应的TCP连接的信息。从而可以对上述步骤S401中数据库存储的各个数据流的路径信息进行更新,使得数据库包括的各个数据流的路径信息为,中断与上述用于应答断开TCP连接的FIN包对应的TCP连接后,网络中仍然存在的各个数据流的路径信息。也就是说上述步骤S401中数据库存储的各个数据流的路径信息可以不再包括,与上述用于应答断开TCP连接的FIN包对应的TCP连接的数据流的路径信息。
S402:基于各个数据流所分配的带宽,为各个数据流计算接收窗口的目标窗口值;
S403:针对各个数据流中的每一个,生成该数据流对应的目标流表,并将该目标流表转发到与该数据流对应的目标交换机,其中,任一数据流对应的目标流表用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值。
需要说明的是,上述步骤S401-S403与图3所示实施例中的步骤S304-S306相同,这里不再赘述。
对应于上述本发明实施例提供的一种基于软件定义网络SDN的拥塞控制方法,本发明实施例还提供了一种基于软件定义网络SDN的拥塞控制装置。
图5为本发明实施例提供的一种基于软件定义网络SDN的拥塞控制装置。如图5所示,本发明实施例提供的一种基于软件定义网络SDN的拥塞控制装置,可以包括如下模块:
消息获得模块510,用于获得交换机发送的packet_in消息;
消息确定模块520,用于确定packet_in消息中包括的数据包,当数据包为用于请求建立TCP连接的握手信息SYN包时,触发第一控制模块530,当数据包为用于应答断开TCP连接的结束信息FIN包时,触发第二控制模块540,当数据包为用于请求断开TCP连接的FIN包时,触发第三控制模块550;
第一控制模块530,用于基于SDN控制器所在网络的拓扑结构和链路信息,对网络执行第一拥塞控制处理;
第二控制模块540,用于基于链路信息,对网络执行第二拥塞控制处理;
第三控制模块550,用于删除数据库中存储的、数据包所对应TCP连接的信息,其中,数据库用于存储各个TCP连接的信息。
以上可见,本发明实施例提供的方案,SDN控制器在获得交换机发送的packet_in消息后,根据packet_in消息中包括的不同的数据包,采取不同的拥塞控制策略。从而使得SDN控制器可以在网络中添加新建立的TCP连接或者中断已建立的TCP连接时,快速对网络中TCP连接的变化做出反应,为存在的TCP连接中的各个数据流重新分配带宽。进而,SDN控制器可以改善各数据流之间带宽的公平性,并减少高度突发的短流量带来的TCP重传和超时,以实现对数据中心中存在的TCP Incast拥塞的控制。此外,由于SDN网络可以提供开放编程接口,因此,本发明实施例提供的方案不需要修改TCP协议栈,更易于实现。
作为本发明实施例的一种实施方式,上述第一控制模块530可以包括:
信息获取子模块(图5中未示出),用于在SYN包中提取通信双方信息,其中,通信双方信息包括:发送方的IP地址、发送方的端口地址、接收方的IP地址和接收方的端口地址;
信息确定子模块(图5中未示出),用于基于拓扑结构和目标信息,确定发送方和接收方之间的数据流的路径信息;其中,目标信息包括:交换机的ID、交换机的输入端口号和通信双方信息;
信息存储子模块(图5中未示出),用于将目标信息和数据流的路径信息,存储到数据库;
带宽分配子模块(图5中未示出),用于基于链路信息和数据库中当前存储的各个数据流的路径信息,为各个数据流分配带宽;
窗口值计算子模块(图5中未示出),用于基于各个数据流所分配的带宽,为各个数据流计算接收窗口的目标窗口值;
流表生成子模块(图5中未示出),用于针对各个数据流中的每一个,生成该数据流对应的目标流表,并将该目标流表转发到与该数据流对应的目标交换机,其中,任一数据流对应的目标流表用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值。
作为本发明实施例的一种实施方式,上述第二控制模块440可以包括:
带宽分配子模块(图5中未示出),用于基于链路信息和数据库中当前存储的各个数据流的路径信息,为各个数据流分配带宽;
窗口值计算子模块(图5中未示出),用于基于各个数据流所分配的带宽,为各个数据流计算接收窗口的目标窗口值;
流表生成子模块(图5中未示出),用于针对各个数据流中的每一个,生成该数据流对应的目标流表,并将该目标流表转发到与该数据流对应的目标交换机,其中,任一数据流对应的目标流表用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值。
作为本发明实施例的一种实施方式,上述带宽分配子模块(图5中未示出)可以包括:
信息统计单元(图5中未示出),用于基于各个数据流的路径信息和链路信息,统计拓扑结构中各个目标链路的目标链路信息,其中,目标链路为:存在未分配带宽的数据流的链路,任一目标链路的目标链路信息包括:该目标链路的可用带宽和流经该目标链路的未分配带宽的数据流的数目;
链路确定单元(图5中未示出),用于基于各个目标链路的目标链路信息,确定各个目标链路中链路拥塞程度最大的目标链路,作为待分配链路;
带宽分配单元(图5中未示出),用于为待分配链路的待分配数据流分配待分配链路的可用带宽,其中,待分配数据流为:流经待分配链路的未分配带宽的数据流;
信息更新单元(图5中未示出),用于更新待分配数据流所流经的链路的链路信息,返回信息统计单元,直至拓扑结构中不存在目标链路。
作为本发明实施例的一种实施方式,上述链路确定单元(图5中未示出)可以包括:
拥塞度计算子单元(图5中未示出),用于针对每个目标链路,计算该目标链路的可用带宽与流经该目标链路的未分配带宽的数据流的数目的比值,作为链路拥塞度;
链路确定子单元(图5中未示出),用于确定链路拥塞度最小的目标链路为待分配链路。
作为本发明实施例的一种实施方式,上述窗口值计算子模块(图5中未示出)具体用于:
利用如下公式为各个数据流计算接收窗口的目标窗口值:
rwndi=bi×numibottleneck×latency
其中,Fbottle表示一个方向上流经瓶颈链路的数据流的集合,瓶颈链路为:在某一个方向或两个方向上链路的带宽容量全部分配的链路,i表示集合Fbottle中的数据流的编号,rwndi表示编号为i的数据流的目标窗口值,表示编号为i的数据流所经过的瓶颈链路的数量,windowbase表示能满足链路的带宽容量的基本窗口大小,bi表示编号为i的数据流的分配带宽,latency表示瓶颈链路的延时,m表示集合Fbottle中的数据流的数目。
作为本发明实施例的一种实施方式,上述目标交换机为:网络边缘交换机;上述目标流表为二级流表,其中,第一级用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值,第二级用于路由。
对应于上述本发明实施例提供的一种基于软件定义网络SDN的拥塞控制方法,本发明实施例还提供了一种SDN控制器,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现上述本发明实施例提供的一种基于软件定义网络SDN的拥塞控制方法。
上述SDN控制器提到的通信总线可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述SDN控制器与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
对应于上述本发明实施例提供的一种基于软件定义网络SDN的拥塞控制方法,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质为服务器中的存储介质,其中存储有计算机程序,该计算机程序被处理器执行时实现本发明实施例提供的一种基于软件定义网络SDN的拥塞控制方法的方法步骤。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、SDN控制器实施例、计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种基于软件定义网络SDN的拥塞控制方法,其特征在于,应用于SDN控制器,所述方法包括:
获得交换机发送的packet_in消息;
确定所述packet_in消息中包括的数据包;
当所述数据包为用于请求建立TCP连接的握手信息SYN包时,基于所述SDN控制器所在网络的拓扑结构和链路信息,对所述网络执行第一拥塞控制处理;
当所述数据包为用于应答断开TCP连接的结束信息FIN包时,基于所述链路信息,对所述网络执行第二拥塞控制处理;
当所述数据包为用于请求断开TCP连接的FIN包时,删除数据库中存储的、所述数据包所对应TCP连接的信息,其中,所述数据库用于存储各个TCP连接的信息。
2.根据权利要求1所述的方法,其特征在于,所述当所述数据包为用于请求建立TCP连接的SYN包时,基于所述SDN控制器所在网络的拓扑结构和链路信息,对所述网络执行第一拥塞控制处理的步骤,包括:
在所述SYN包中提取通信双方信息,其中,所述通信双方信息包括:所述发送方的IP地址、所述发送方的端口地址、所述接收方的IP地址和所述接收方的端口地址;
基于所述拓扑结构和目标信息,确定所述发送方和所述接收方之间的数据流的路径信息;其中,所述目标信息包括:所述交换机的ID、所述交换机的输入端口号和所述通信双方信息;
将所述目标信息和所述数据流的路径信息,存储到所述数据库;
基于所述链路信息和所述数据库中当前存储的各个数据流的路径信息,为所述各个数据流分配带宽;
基于所述各个数据流所分配的带宽,为所述各个数据流计算接收窗口的目标窗口值;
针对所述各个数据流中的每一个,生成该数据流对应的目标流表,并将该目标流表转发到与该数据流对应的目标交换机,其中,任一数据流对应的目标流表用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值。
3.根据权利要求1所述的方法,其特征在于,所述当所述数据包为用于应答断开TCP连接的FIN包时,基于所述链路信息,对所述网络执行第二拥塞控制处理的步骤,包括:
基于所述链路信息和所述数据库中当前存储的各个数据流的路径信息,为所述各个数据流分配带宽;
基于所述各个数据流所分配的带宽,为所述各个数据流计算接收窗口的目标窗口值;
针对所述各个数据流中的每一个,生成该数据流对应的目标流表,并将该目标流表转发到与该数据流对应的目标交换机,其中,任一数据流对应的目标流表用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值。
4.根据权利要求2或3所述的方法,其特征在于,所述基于所述链路信息和所述数据库中当前存储的各个数据流的路径信息,为所述各个数据流分配带宽的步骤,包括:
基于所述各个数据流的路径信息和所述链路信息,统计所述拓扑结构中各个目标链路的目标链路信息,其中,目标链路为:存在未分配带宽的数据流的链路,任一目标链路的目标链路信息包括:该目标链路的可用带宽和流经该目标链路的未分配带宽的数据流的数目;
基于所述各个目标链路的目标链路信息,确定所述各个目标链路中链路拥塞程度最大的目标链路,作为待分配链路;
为待分配链路的待分配数据流分配所述待分配链路的可用带宽,其中,所述待分配数据流为:流经所述待分配链路的未分配带宽的数据流;
更新所述待分配数据流所流经的链路的链路信息,返回所述基于所述各个数据流的路径信息和所述链路信息,统计所述拓扑结构中各个目标链路的目标链路信息的步骤,直至所述拓扑结构中不存在目标链路。
5.根据权利要求4所述的方法,其特征在于,所述基于所述各个目标链路的目标链路信息,确定所述各个目标链路中链路拥塞程度最大的目标链路,作为待分配链路的步骤,包括:
针对每个目标链路,计算该目标链路的可用带宽与流经该目标链路的未分配带宽的数据流的数目的比值,作为链路拥塞度;
确定所述链路拥塞度最小的目标链路为待分配链路。
6.根据权利要求2或3所述的方法,其特征在于,所述为所述各个数据流计算接收窗口的目标窗口值的步骤,包括:
利用如下公式为所述各个数据流计算接收窗口的目标窗口值:
rwndi=bi×numibottleneck×latency
其中,Fbottle表示一个方向上流经瓶颈链路的数据流的集合,所述瓶颈链路为:在某一个方向或两个方向上链路的带宽容量全部分配的链路,i表示集合Fbottle中的数据流的编号,rwndi表示编号为i的数据流的目标窗口值,表示编号为i的数据流所经过的瓶颈链路的数量,windowbase表示能满足链路的带宽容量的基本窗口大小,bi表示编号为i的数据流的分配带宽,latency表示瓶颈链路的延时,m表示集合Fbottle中的数据流的数目。
7.根据权利要求2或3所述的方法,其特征在于,所述目标交换机为:网络边缘交换机;
所述目标流表为二级流表,其中,第一级用于将该数据流的接收窗口的大小更新为所计算的该数据流对应的目标窗口值,第二级用于路由。
8.一种基于软件定义网络SDN的拥塞控制装置,其特征在于,应用于SDN控制器,所述装置包括:
消息获得模块,用于获得交换机发送的packet_in消息;
消息确定模块,用于确定所述packet_in消息中包括的数据包,当所述数据包为用于请求建立TCP连接的握手信息SYN包时,触发第一控制模块,当所述数据包为用于应答断开TCP连接的结束信息FIN包时,触发第二控制模块,当所述数据包为用于请求断开TCP连接的FIN包时,触发第三控制模块;
所述第一控制模块,用于基于所述SDN控制器所在网络的拓扑结构和链路信息,对所述网络执行第一拥塞控制处理;
所述第二控制模块,用于基于所述链路信息,对所述网络执行第二拥塞控制处理;
所述第三控制模块,用于删除数据库中存储的、所述数据包所对应TCP连接的信息,其中,所述数据库用于存储各个TCP连接的信息。
9.一种SDN控制器,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810636431.5A CN108833293B (zh) | 2018-06-20 | 2018-06-20 | 一种基于软件定义网络sdn的数据中心拥塞控制方法及装置 |
US16/209,865 US10833995B2 (en) | 2018-06-20 | 2018-12-04 | Method and apparatus for datacenter congestion control based on software defined network |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810636431.5A CN108833293B (zh) | 2018-06-20 | 2018-06-20 | 一种基于软件定义网络sdn的数据中心拥塞控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108833293A true CN108833293A (zh) | 2018-11-16 |
CN108833293B CN108833293B (zh) | 2021-01-26 |
Family
ID=64142470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810636431.5A Expired - Fee Related CN108833293B (zh) | 2018-06-20 | 2018-06-20 | 一种基于软件定义网络sdn的数据中心拥塞控制方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10833995B2 (zh) |
CN (1) | CN108833293B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109413104A (zh) * | 2018-12-11 | 2019-03-01 | 中国电子科技网络信息安全有限公司 | 一种无状态tcp网络扫描方法 |
CN109617931A (zh) * | 2019-02-20 | 2019-04-12 | 电子科技大学 | 一种SDN控制器的DDoS攻击防御方法及防御系统 |
CN112217693A (zh) * | 2020-11-17 | 2021-01-12 | 迈普通信技术股份有限公司 | 一种控制器测试方法、装置、电子设备及存储介质 |
CN114422529A (zh) * | 2022-01-21 | 2022-04-29 | 中国联合网络通信集团有限公司 | 数据处理方法、设备、介质及计算机程序产品 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113487869A (zh) * | 2021-07-12 | 2021-10-08 | 腾讯科技(深圳)有限公司 | 拥堵瓶颈点确定方法、装置、计算机设备和存储介质 |
US20230171290A1 (en) * | 2021-11-30 | 2023-06-01 | Cradlepoint, Inc. | 0-rtt capable, tunnel-less, multi-tenant policy architecture |
CN114679408B (zh) * | 2022-05-27 | 2022-08-26 | 湖南工商大学 | 路径切换感知的数据中心拥塞控制方法和系统 |
CN115174489B (zh) * | 2022-06-24 | 2023-05-16 | 湖北工业大学 | 面向最小化网络拥塞和Qos保障的数据中心网络流量调度方法 |
CN115987879B (zh) * | 2022-12-22 | 2023-12-01 | 众芯汉创(北京)科技有限公司 | 一种基于软件定义网络的低时延图像传输系统和方法 |
US11902175B1 (en) | 2023-03-24 | 2024-02-13 | International Business Machines Corporation | Allocating bandwidth to communication paths used by nodes in a network |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102946361A (zh) * | 2012-10-16 | 2013-02-27 | 清华大学 | 基于交换机缓存分配的流量控制方法及系统 |
CN103051554A (zh) * | 2013-01-05 | 2013-04-17 | 北京航空航天大学 | 基于吞吐量变化率和ecn机制的tcp拥塞控制方法 |
CN106101005A (zh) * | 2016-08-09 | 2016-11-09 | 中南大学 | 一种数据中心网络中基于分组长度的拥塞控制方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100054123A1 (en) * | 2008-08-30 | 2010-03-04 | Liu Yong | Method and device for hign utilization and efficient flow control over networks with long transmission latency |
WO2013035897A1 (en) * | 2011-09-06 | 2013-03-14 | Alcatel Lucent | A method for avoiding network congestion and an apparatus thereof |
CN103051555A (zh) * | 2013-01-05 | 2013-04-17 | 北京航空航天大学 | 基于网络有效带宽和ecn机制的tcp拥塞控制方法 |
US9450884B2 (en) * | 2014-06-11 | 2016-09-20 | Alcatel-Lucent | Software defined networking based congestion control |
CN105490827B (zh) * | 2014-09-17 | 2018-12-04 | 华为技术有限公司 | 一种获取网络状态的方法及装置 |
CN106533970B (zh) * | 2016-11-02 | 2019-06-07 | 重庆大学 | 面向云计算数据中心网络的差分流传输控制方法及装置 |
-
2018
- 2018-06-20 CN CN201810636431.5A patent/CN108833293B/zh not_active Expired - Fee Related
- 2018-12-04 US US16/209,865 patent/US10833995B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102946361A (zh) * | 2012-10-16 | 2013-02-27 | 清华大学 | 基于交换机缓存分配的流量控制方法及系统 |
CN103051554A (zh) * | 2013-01-05 | 2013-04-17 | 北京航空航天大学 | 基于吞吐量变化率和ecn机制的tcp拥塞控制方法 |
CN106101005A (zh) * | 2016-08-09 | 2016-11-09 | 中南大学 | 一种数据中心网络中基于分组长度的拥塞控制方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109413104A (zh) * | 2018-12-11 | 2019-03-01 | 中国电子科技网络信息安全有限公司 | 一种无状态tcp网络扫描方法 |
CN109617931A (zh) * | 2019-02-20 | 2019-04-12 | 电子科技大学 | 一种SDN控制器的DDoS攻击防御方法及防御系统 |
CN112217693A (zh) * | 2020-11-17 | 2021-01-12 | 迈普通信技术股份有限公司 | 一种控制器测试方法、装置、电子设备及存储介质 |
CN112217693B (zh) * | 2020-11-17 | 2022-02-22 | 迈普通信技术股份有限公司 | 一种控制器测试方法、装置、电子设备及存储介质 |
CN114422529A (zh) * | 2022-01-21 | 2022-04-29 | 中国联合网络通信集团有限公司 | 数据处理方法、设备、介质及计算机程序产品 |
CN114422529B (zh) * | 2022-01-21 | 2023-07-11 | 中国联合网络通信集团有限公司 | 数据处理方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US10833995B2 (en) | 2020-11-10 |
CN108833293B (zh) | 2021-01-26 |
US20190394129A1 (en) | 2019-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108833293A (zh) | 一种基于软件定义网络sdn的数据中心拥塞控制方法及装置 | |
CN104954279B (zh) | 一种传输控制方法、装置及系统 | |
CN111769998B (zh) | 一种网络时延状态的探测方法及装置 | |
Lu et al. | SDN-based TCP congestion control in data center networks | |
CN110061923B (zh) | 流量控制方法、装置、交换机、发送端服务器及介质 | |
CN101606141A (zh) | 改善多路径环境中传输协议性能的系统和方法 | |
CN106716376B (zh) | 从本地库提供针对网络连接的功能要求 | |
CN102084627A (zh) | 通过网络传输数据的方法 | |
CN102263697A (zh) | 一种聚合链路流量分担方法和装置 | |
US10009282B2 (en) | Self-protecting computer network router with queue resource manager | |
WO2018219100A1 (zh) | 数据传输的方法和设备 | |
CN103795632A (zh) | 一种数据报文传输方法及相关设备、系统 | |
CN104618237A (zh) | 一种基于tcp/udp的广域网加速系统及方法 | |
CN103814563A (zh) | 数据通信装置、数据发送方法以及计算机系统 | |
US20200351215A1 (en) | Data Stream Sending Method and System, and Device | |
Lu | Sed: An sdn-based explicit-deadline-aware tcp for cloud data center networks | |
CN106856457A (zh) | 一种数据传输方法、发送装置及接收装置 | |
CN103916253A (zh) | 一种基于信息中心网络的信息传输方法及其系统 | |
CN102315918B (zh) | 一种tcp连接与sctp连接互通的方法及装置 | |
CN110213170A (zh) | 一种报文传输的方法及装置 | |
Buzhin et al. | Evaluation of Telecommunication Equipment Delays in Software-Defined Networks | |
CN111416775B (zh) | 数据接收和发送方法、装置及系统 | |
CN101783763B (zh) | 防拥塞的处理方法及系统 | |
CN105991629B (zh) | Tcp连接建立方法及装置 | |
KR101395009B1 (ko) | 라우팅 경로 선택 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210126 Termination date: 20210620 |