CN108881031A - 一种基于sdn网络的自适应可靠数据传输方法 - Google Patents
一种基于sdn网络的自适应可靠数据传输方法 Download PDFInfo
- Publication number
- CN108881031A CN108881031A CN201810596966.4A CN201810596966A CN108881031A CN 108881031 A CN108881031 A CN 108881031A CN 201810596966 A CN201810596966 A CN 201810596966A CN 108881031 A CN108881031 A CN 108881031A
- Authority
- CN
- China
- Prior art keywords
- interchanger
- controller
- tcp
- flow
- port
- 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
- 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
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- 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/22—Traffic shaping
-
- 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
-
- 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/22—Parsing or analysis of headers
Abstract
本发明涉及一种基于SDN网络的自适应可靠数据传输方法,属于数据传输技术领域。在建立TCP连接时,根据SDN控制器获得的网络状态统计信息,设置TCP流的初始传输窗口,有效减少数据中心网络中老鼠流的传输时间。传输过程中自动检测拥塞,并根据网络拥塞程度调整TCP流传输速率,有效缓解拥塞,提高网络带宽利用率,实现数据中心网络中数据的高效传输。
Description
技术领域
本发明涉及一种基于SDN网络的自适应可靠数据传输方法,属于数据传输技术领域。
背景技术
信息服务的集约化、社会化和专业化发展使得因特网上的应用、计算和存储资源向数据中心迁移,数据中心规模不断扩大,同时出现了新的应用和计算模式。这些变化将进一步加剧数据中心网络传输的动态特性,给数据传输性能带来巨大的挑战。
传统因特网中使用传输控制协议(Transmission Control Protocol,简称TCP)实现数据的可靠传输。但TCP仅通过端到端的网络参数估计网络状态,无法直接感知报文在中间路径上传送的状态,因此不能及时、准确跟踪网络状态的变化并动态调整传输参数,在数据中心网络中极易导致严重的网络拥塞,造成丢包率高、网络带宽利用率低等问题。当前研究的主要思路是通过对网络参数的估计了解网络拥塞程度,并通告发送端,以此调整发送速率,缓解或解决网络拥塞。但是这些方法要么存在拥塞程度估计不准确,要么技术方案部署困难,必须引入新的研究思路和技术手段来解决数据中心网络拥塞问题。
软件定义网络(Software Defined Networking,简称SDN)是一种新型的基于软件的网络架构及技术,OpenFlow是实现SDN的一种技术方法,SDN/OpenFlow技术可以收集网络信息,包括网络流量信息和交换机队列信息等,通过这些信息能够更加精确、更加快速的进行网络状态的判断,为数据中心网络的拥塞控制和数据传输研究提供了全新的解决思路。然而在基于SDN的TCP传输协议研究中,一些解决方案仅通过SDN控制器实现部分初始传输参数的修改,但并未优化传输过程中的传输速率,另一些解决方案虽然利用SDN控制器实现了拥塞控制,但是传输速率的调整未充分考虑当前的网络状态和数据中心网络的数据特性。
发明内容
本发明要解决的技术问题是提供一种基于SDN网络的自适应可靠数据传输方法,针对当前网络状态和数据中心网络的数据特性,增强数据传输对网络状态的自适应性,在兼顾当前的网络状态和数据中心网络的数据特性同时,优化传输过程中的传输速率。
本发明的技术方案是:一种基于SDN网络的自适应可靠数据传输方法,在连接建立时,根据SDN控制器获得的网络状态统计信息,设置TCP流的初始传输窗口,有效减少数据中心网络中老鼠流的传输时间。传输过程中自动检测拥塞,并根据网络拥塞程度调整TCP流传输速率,有效缓解拥塞,提高网络带宽利用率,实现数据中心网络中数据的高效传输。
初始化阶段:
步骤1控制器启动并基于链路层发现协议(Link Layer Discovery Protocol,LLDP)收集各SDN网络设备的连接信息(包括在每个交换机上的输入端口和输出端口),根据LLDP数据包携带的交换机标识和端口号动态生成网络拓扑;
步骤2所述控制器周期性下发端口统计(Port statistics)消息到交换机,所述交换机将流表项计数器中记录的端口统计数据发回所述控制器,这些统计数据包括所述交换机端口收发的包数、字节数、丢包数以及统计持续的时间;
建立连接阶段:
步骤3建立连接时,与客户端相连的交换机第一次接收到客户端发送的连接请求(TCP SYN)数据包后,解析包头,将解析包头后的数据包上交所述控制器,该控制器记录下TCP 流数据信息,并发送流表修改消息到所述交换机,该交换机添加流表项,其中设置匹配域为 TCP头部的SYN标志,动作指令为将该数据包转发到所述控制器。之后所述交换机均会对收到的数据包头部进行解析,根据流表项匹配到TCP SYN数据包并上交所述控制器,该控制器记录所有TCP数据流信息并生成全局数据流表;
步骤4所述控制器根据相邻两次获取的端口发送字节数和统计持续的时间,计算每个端口的可用带宽,计算公式如下:
其中Bport_id是端口的最大带宽,在网络部署时已知,tx_bytesi和tx_bytesi+1分别为第i 次和第i+1次统计时端口port_id传输的字节数,ti和ti+1分别为从第一次统计到第i次和第i+1 次获取端口统计信息时持续的时间。
将步骤3中所述TCP流经过的所有端口可用带宽的最大值作为该TCP流所在链路的可用带宽,即其中flow_id表示TCP 流的标识,port_id表示端口号,port_id∈flow_id表示流标识为flow_id的TCP流经过了端口号为port_id的交换机端口;
步骤5利用OpenFlow发现协议(OpenFlow Discovery Protocol,OFDP),在类型长度值结构(Type-Length-Value,TLV)中放入时间戳作为负载,由所述控制器产生带有时间戳的OFDP 分组,并将OFDP分组放入Packet_out消息的数据部分,通过Packet_out命令向所述TCP流经过的所有交换机发送OFDP分组,命令中的操作设为Flood,即要求所述交换机向邻居交换机转发OFDP分组。
当控制器希望交换机发送某个数据包,就使用packet_out消息,将数据包放在其中的数据部分,或者将数据包缓存在交换机上并给出缓存ID。
步骤6所述交换机收到转发的OFDP分组后,由于没有对应的流表项,因此通过Packet_in 命令将其转发到控制器,所述控制器将当前时间减去OFDP分组中的时间戳可分别得到所述控制器到交换机Si、交换机Si到交换机Sj以及交换机Sj到控制器的时延,记为T1,同样,也可得到所述控制器到交换机Sj、交换机Sj到交换机Si以及交换机Si到控制器的时延,记为T2;
步骤7利用ICMP协议,通过所述控制器向所述交换机Si和Sj分别发送带有时间戳的响应请求。所述交换机收到之后回复携带响应请求时间戳的响应回复消息。所述控制器将当前时间与响应回复分组中的时间戳相减得到对应交换机Si、Sj和控制器之间的往返时延,分别记为Ti和Tj,则所述交换机Si和Sj之间链路的往返时延为路径R上两个交换机Si和Sk之间的链路往返时延为其中Si和Si+1表示路径R上相邻的两个交换机;
步骤8所述控制器产生携带时间戳的地址解析协议(Address ResolutionProtocol,ARP)探测包发送到与TCP流两端主机A和B相连的交换机,由所述交换机转发到两个主机,主机产生携带ARP探测包时间戳的ARP回应包发回所述控制器,所述控制器用当前时间减去时间戳分别得到两个主机经所连交换机Sa和Sb到控制器的往返时延,该往返时延减去交换机Sa和Sb到控制器的往返时延即得到主机A、B与相连的交换机Sa、Sb之间的往返时延da和db,由此得到所述TCP流的往返时延RTTA→B=LSa→Sb+da+db。所述控制器将RTTA→B记入全局数据流表GVT中。
步骤9所述控制器根据可用带宽计算初始窗口值IW,并向连接发送端主机的所述交换机下发初始窗口更新消息,初始窗口值IW计算如下:
式中,MSS_length表示一个数据分段的长度,1MSS表示一个数据分段。
步骤10所述交换机收到来自所述控制器的初始窗口更新消息后,读取消息中的端口信息,从对应端口将该消息发送到主机。所述主机上的守护进程检测到初始窗口更新消息,该进程读取消息中的初始窗口值,并调用Linux内核命令修改TCP初始窗口值。
数据传输阶段:
步骤11所述交换机通过队尾丢弃队列管理方式实时监控TCP流经过的每个端口队列长度Q(t),当所述交换机中端口的队列长度超过阈值L=Q/3(Q为队列缓存最大值)时,所述交换机产生拥塞通告消息(Congestion Notification Message,CNM),并通过Packet_in命令将其发送到所述控制器,所述交换机进入拥塞状态,并周期性的监视队列长度;
步骤12所述控制器接收来自所述交换机的拥塞通告,从通告中获取所述交换机的队列长度Q(t),估算经过所述交换机的TCP流发送窗口大小,所述TCP流i发送窗口大小的估算公式如下:
其中n是经过拥塞端口的TCP流的总数,可由全局数据流表获得,B是所述交换机拥塞端口的最大带宽,在网络部署时就已知,RTTavg是所有经过拥塞端口的TCP流的平均RTT,即
所述控制器估算出发送窗口大小后,根据队列长度Q(t)来表征所述交换机的拥塞程度,计算经过所述交换机的所有TCP流的ACK报文中的接收窗口大小。所述ACK报文中接收窗口的大小计算如下:
设置阈值QL=Q/2和即满足L<QL<QH,利用上述两个阈值检测所述交换机的拥塞程度,根据拥塞程度的不同,设置不同的接收窗口大小:
(1)L≤Q(t)<QL:轻度拥塞,设置TCP流i的接收窗口
(2)QL≤Q(t)<QH:持续拥塞,设置TCP流i的接收窗口
(3)Q(t)≥QH:严重拥塞,设置TCP流i的接收窗口
Wr(i)=1MSS
其中SWNDi为TCP流i当前发送窗口大小。
步骤13所述控制器生成修改ACK报文接收窗口的流表,并将接收窗口值Wr(i)附在该流表报文的数据部分,下发到所述交换机。该流表头部匹配ACK报文,动作为修改ACK的接收窗口;
步骤14所述交换机收到来自所述控制器的修改窗口流表,对经过该交换机的所有ACK 报文逐一匹配,并将每个ACK报文头部的接收窗口字段改为 RWND(i)'=min(Wr(i),RWND(i)),其中RWND(i)为数据流i的ACK报文中原有的接收窗口字段的大小;
步骤15所述交换机持续监视队列长度,只要每个周期监视队列的长度仍超过阈值L,则持续向所述控制器发送拥塞通告。当连续三个周期监视的队列长度均小于阈值L,所述交换机向所述控制器发送拥塞恢复消息(Congestion Recovery Message,CRM),所述控制器向所述交换机下发修改窗口流表信息删除命令,所述交换机收到上述命令后,将修改窗口流表删除,并恢复正常状态;
断开连接:
步骤16所述交换机第一次接收到客户端或服务器发送的关闭连接请求(TCP FIN)数据包后,解析包头,通过Packet_iIn命令将解析头部后的数据包上交所述控制器,该控制器从所述全局数据流表GVT中将对应的TCP流记录删除,并发送流表修改消息到所述交换机,该交换机收到流表修改消息后添加该流表项,其中设置匹配域为TCP头部的FIN标志,动作指令为将该数据包转发到所述控制器。之后所述交换机均会根据流表项匹配到TCP FIN数据包并上交所述控制器,该控制器从所述GVT表中将对应的TCP流记录删除。
本发明的有益效果是:本发明根据网络状态动态调整TCP流的初始窗口和传输速率,减少拥塞丢包的同时充分利用网络带宽资源,利用SDN网络环境,直接获取网络的状态信息,增强了网络状态参数估计的准确性,提升了数据传输效率。本发明可应用到特定的网络应用场景,如数据中心网络等。
附图说明
图1是本发明的流程图;
图2是本发明基于TCP连接的GVT生成过程图;
图3是本发明OXM头部结构图;
图4是本发明初始窗口更新消息结构图;
图5是本发明拥塞通告消息结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
一种基于SDN网络的自适应可靠数据传输方法,控制器周期性获取SDN网络统计信息,并根据带宽利用率设置TCP连接的初始窗口值;交换机检测端口队列长度,当队列长度超过阈值时,将该交换机设置为拥塞状态,控制器计算经过拥塞交换机的所有TCP流的发送速率并下发流表至拥塞交换机,使交换机修改TCP流ACK报文中的接收窗口字段,降低TCP流的速率,达到拥塞控制的目的。控制器是数据控制逻辑的核心,它接收来自交换机的拥塞通告,并根据网络状态分配TCP流的速率,拥塞探测更加快速和准确,实现传输速率的自适应调整;发送端作为源主机接收控制器下发的初始窗口更新消息并更新窗口值,增强了带宽的利用率;接收端不需要进行任何修改,可以兼容现有的TCP协议栈,并且部署灵活方便。
图1所示为本发明流程图,具体包括以下步骤:
初始化阶段:
步骤1控制器启动并基于链路层发现协议(Link Layer Discovery Protocol,LLDP)收集各 SDN网络设备的连接信息(包括在每个交换机上的输入端口和输出端口),根据LLDP数据包携带的交换机标识和端口号动态生成网络拓扑;
步骤2所述控制器周期性下发端口统计消息到交换机,所述交换机将流表项计数器中记录的端口统计数据发回所述控制器,这些统计数据包括所述交换机端口收发的包数、字节数、丢包数以及统计持续的时间,用于计算带宽利用率;
建立连接阶段:
步骤3所述控制器基于TCP连接的三次握手记录所有TCP数据流信息并生成全局数据流表GVT。图2为基于TCP连接的GVT生成过程,建立TCP连接的第一次握手时,客户端发送SYN报文,由于所述交换机中没有该数据流的流表项,该交换机通过OpenFlow协议发送包含SYN报文的OF_PacketIn数据包到所述控制器,该控制器将该数据流信息添加到GVT 中。所述GVT包括数据流标识(Flow_ID)、源IP地址(SRC_IP)、目的IP地址(DES_IP)、发送数据报文的大小(Size)、数据流路由信息(Flow_Path)和往返时延RTT(RTT)。
所述控制器发送流表修改消息FLOW_MOD报文到所述交换机,该消息根据OpenFlow1.3协议中Nicira私有扩展匹配域(Nicira extensible match,NXM)要求的特定匹配结构OXM (OpenFlow Extensible Match)添加TCP SYN匹配域。OXM的头部结构如图3所示,其中定义 OXM_CLASS字段为0x0001,表明此为自定义的NXM,定义OXM_FIELD字段值为 TCP_SYN,表示匹配域为TCP头部的SYN选项,定义M字段值为0,表示没有掩码,定义 OXM_LENGTH字段值为5字节。OXM负载payload中第一个字节的值设置为1,表示TCP 头部的SYN位为1。同时,所述消息下发动作指令为Output,端口设为所述交换机与控制器通信的端口PortStoC。所述交换机收到流表修改消息后,将TCP_SYN字段作为NXM添加到该交换机的流表项中,同时添加动作指令Output。之后所述交换机均会根据流表项匹配到TCP SYN并将数据包上交所述控制器,该控制器接收SYN数据包并记录所有TCP数据流信息并添加到GVT中,获得网络中所有TCP流的信息。
步骤4所述控制器根据相邻两次获取的端口发送字节数和统计持续的时间,计算每个端口的可用带宽,计算公式如下:
其中Bport_id是端口的最大带宽,在网络部署时已知,tx_bytesi和tx_bytesi+1分别为第i 次和第i+1次统计时端口port_id传输的字节数,ti和ti+1分别为从第一次统计到第i次和第i+1 次获取端口统计信息时持续的时间。
将步骤3中所述TCP流经过的所有端口可用带宽的最大值作为该TCP流所在链路的可用带宽,即其中flow_id表示TCP 流的标识,port_id表示端口号,port_id∈flow_id表示流标识为flow_id的TCP流经过了端口号为port_id的交换机端口。
步骤5利用OpenFlow发现协议(OpenFlow Discovery Protocol,OFDP),在类型长度值结构(Type-Length-Value,TLV)中放入时间戳作为负载,由所述控制器产生带有时间戳的OFDP 分组,并将OFDP分组放入Packet_out消息的数据部分,通过Packet_Out命令向所述TCP流经过的所有交换机发送OFDP分组,命令中的操作设置为Flood,即要求所述交换机向邻居交换机转发OFDP分组;
步骤6所述交换机收到转发的OFDP分组后,由于没有对应的流表项,因此通过Packet_in 命令将其转发到控制器,所述控制器用当前系统时间减去OFDP分组中的时间戳可得到所述控制器到交换机Si、交换机Si到交换机Sj以及交换机Sj到控制器的时延,记为T1,同样,也可得到所述控制器到交换机Sj、交换机Sj到交换机Si以及交换机Si到控制器的时延,记为T2;
步骤7利用Internet控制报文协议(InternetControlMessage Protocol,ICMP),通过所述控制器向所述交换机Si和Sj分别发送带有时间戳的响应请求。所述交换机收到之后回复携带响应请求时间戳的响应回复消息。所述控制器将当前系统时间与响应回复分组中的时间戳相减得到对应交换机Si、Sj和控制器之间的往返时延,记为Ti和Tj,则所述交换机Si和Sj之间链路的往返时延为路径R上两个交换机Si和Sk之间的链路往返时延为其中Si和Si+1表示路径R上相邻的两个交换机;
步骤8所述控制器产生携带时间戳的地址解析协议(Address ResolutionProtocol,ARP)探测包发送到与TCP流两端主机A和B相连的交换机,由所述交换机转发到两个主机,主机产生携带ARP探测包时间戳的ARP回应包发回所述控制器,所述控制器用当前系统时间减去时间戳分别得到两个主机经所连交换机Sa和Sb到控制器的往返时延,该往返时延减去交换机Sa和Sb到控制器的往返时延即得到主机A、B与相连的交换机Sa、Sb之间的往返时延da和 db,由此得到所述TCP流的往返时延所述控制器将RTTA→B记入全局数据流表GVT中。
步骤9所述控制器根据每条流的可用带宽和RTT值计算初始窗口值IW,并通过Packet_Out命令向连接发送端主机的所述交换机下发初始窗口更新消息,消息格式如图4所示,其中包含OpenFlow标准报文头(ofp_header)、对应TCP流的标识(Flow_ID)、与发送端主机相连的所述交换机标识(Switch_ID)、端口号(Port_ID)、初始窗口值(IW)、优先级和cookie字段。报文头部ofp_header中的type字段设为OFPT_IW_UDP,表示初始窗口更新消息。初始窗口值IW计算如下:
式中,MSS_length表示一个数据分段的长度,1MSS表示一个数据分段。
步骤10所述交换机收到来自所述控制器的初始窗口更新消息后,读取消息中的端口号 Port_ID,从对应端口将该消息发送到主机。所述主机上的守护进程检测到初始窗口更新消息,该进程读取消息中的初始窗口值IW,并调用Linux内核命令修改TCP初始窗口值。通过修改初始窗口值,使数据流的传输能够尽快适应当前的网络带宽,有效缩短老鼠流的传输时间。
数据传输阶段:
步骤11所述交换机通过队尾丢弃队列管理方式实时监控TCP流经过的每个端口队列长度Q(t),当所述交换机中端口的队列长度超过阈值L=Q/3(Q为队列缓存最大值)时,所述交换机产生拥塞通告消息(Congestion Notification Message,CNM),并通过Packet_in命令将其发送到所述控制器。所述消息结构如图5所示,其中包含OpenFlow标准报文头ofp_header,拥有所有端口信息的ofp_port,表明端口队列长度的port_buff,优先级和cookie字段。报文头部ofp_header中的type字段设为OFPT_BUF_CN,表示拥塞触发消息。所述交换机收到拥塞通告消息后则进入拥塞状态,并周期性的监视队列长度;
步骤12所述控制器接收来自所述交换机的拥塞通告,从通告中获取所述交换机的队列长度Q(t),估算经过所述交换机的TCP流的发送窗口大小,所述TCP流i发送窗口大小的估算公式如下:
其中n是经过拥塞端口的TCP流的总数,可由全局数据流表获得,B是所述交换机拥塞端口的最大带宽,在网络部署时就已知,RTTavg是所有经过拥塞端口的TCP流的平均RTT,即
所述控制器估算出发送窗口大小后,根据队列长度Q(t)来表征所述交换机的拥塞程度,计算经过所述交换机的所有TCP流的ACK报文中的接收窗口大小。所述ACK报文中接收窗口的大小计算如下:
设置阈值QL=Q/2和即满足L<QL<QH,利用上述两个阈值检测所述交换机的拥塞程度,根据拥塞程度的不同,设置不同的接收窗口大小:
(1)L≤Q(t)<QL:轻度拥塞,设置TCP流i的接收窗口
(2)QL≤Q(t)<QH:持续拥塞,设置TCP流i的接收窗口
(3)Q(t)≥QH:严重拥塞,设置TCP流i中ACK报文的接收窗口
Wr(i)=1MSS
其中SWNDi为TCP流i当前发送窗口大小。
步骤13所述控制器使用与步骤3类似的方法生成并发送流表修改消息FLOW_MOD报文到所述交换机,修改ACK报文接收窗口的流表。在OXM结构中添加TCP ACK匹配域,OXM的头部结构如图2所示,其中定义OXM_CLASS字段为0x0001,表明此为自定义的 NXM,定义OXM_FIELD字段值为TCP_ACK,表示匹配域为TCP头部的ACK选项,定义 M字段值为0,表示没有掩码,定义OXM_LENGTH字段值为9字节。OXM负载payload中第一个字节的值设置为1,表示TCP头部的ACK位为1。在OXM负载中第二至第五个字节设置接收窗口值Wr(i)。另外,在所述流表修改消息中扩展动作集合,根据OpenFlow1.3协议,在Instruction结构中,将type字段设为OFPT_APPLY_ACTIONS,在动作集合 OFPT_SET_FIELD中添加修改接收窗口(MOD_WINDOW)新动作。
步骤14所述交换机收到来自所述控制器的修改窗口流表消息,将TCP_ACK字段作为 NXM添加到该交换机的流表项中,同时通过Write_Action指令添加动作MOD_WINDOW。之后所述交换机均会根据流表项匹配到TCP ACK报文并根据动作指令MOD_WINDOW将 TCP ACK报文中的接收窗口值字段修改为RRWND(i)'=min(Wr(i),RWND(i)),其中RWND(i) 为数据流i的ACK报文中原有的接收窗口字段的大小。ACK报文中接收窗口的调整促使发送方调整发送窗口Ws=min(Wc,Wr),因此可有效缓解拥塞,提高数据流的传输效率;
步骤15所述交换机持续监视队列长度,只要每个周期(设为流经交换机的所有TCP流的RTT平均值RTTavg)监视队列的长度仍超过阈值L,则持续向所述控制器发送拥塞通告。当连续三个周期监视的队列长度均小于阈值L,所述交换机向所述控制器发送拥塞恢复消息,该消息的结构与图5的拥塞通告消息类似,只需将报文头部ofp_header中的type字段设为 OFPT_BUF_CR,表示拥塞恢复消息。所述控制器收到拥塞恢复消息后,向所述交换机下发Flow-mod消息,将该消息中的command字段设为OFPC_DELETE_STRICT。所述交换机收到上述消息后,删除修改窗口流表项,并恢复正常状态;
断开连接:
步骤16所述交换机第一次接收到客户端或服务器发送的TCP FIN数据包后,解析包头,将解析包头后的数据包上交所述控制器,该控制器从所述全局数据流表GVT(Global-View flow Table)中将对应的TCP流记录删除,并发送流表修改消息到所述交换机,该流表修改消息在OXM结构中添加TCP FIN匹配域,该消息结构与步骤3中类似,OXM的头部结构如图 3所示,其中定义OXM_CLASS字段为0x0001,表明此为自定义的NXM,定义OXM_FIELD 字段值为TCP_FIN,表示匹配域为TCP头部的FIN选项,定义M字段值为0,表示没有掩码,定义OXM_LENGTH字段值为5字节。OXM负载payload中第一个字节的值设置为1,表示TCP头部的FIN位为1。同时,所述消息下发动作指令为Output,端口设为所述交换机与控制器通信的端口PortStoC。所述交换机收到流表修改消息后,将TCP_FIN字段作为NXM 添加到该交换机的流表项中,同时添加动作指令Output。之后所述交换机均会根据流表项匹配到TCP FIN并将数据包上交所述控制器,该控制器接收FIN数据包并从所述GVT表中将对应的TCP流记录删除。
以上结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (1)
1.一种基于SDN网络的自适应可靠数据传输方法,其特征在于:
步骤1:启动控制器,基于链路层发现协议,根据LLDP数据包携带的交换机标识和端口号动态生成网络拓扑;
步骤2:所述控制器周期性将端口统计消息下发到交换机,所述交换机将流表项计数器中记录的端口统计数据发回所述控制器,所述统计数据包括所述交换机端口收发的包数、字节数、丢包数以及统计持续的时间;
步骤3:建立TCP连接时,与客户端相连的交换机第一次接收到客户端发送的TCP SYN数据包后,解析包头,将解析包头后的数据包上交所述控制器,所述控制器记录下TCP流数据信息并发送流表修改消息到所述交换机,所述交换机添加流表项,其中设置匹配域为TCP头部的SYN标志,动作指令为将该数据包转发到所述控制器,然后所述交换机均会对收到的数据包头部进行解析,根据流表项匹配到TCP SYN数据包并上交所述控制器,所述控制器记录所有TCP数据流信息并生成全局数据流表;
步骤4:所述控制器根据相邻两次获取的端口发送字节数和统计持续的时间,通过式(1)计算每个端口的可用带宽;
式中,Bport_id是端口的最大带宽,tx_bytesi和tx_bytesi+1分别为第i次和第i+1次统计时端口port_id传输的字节数,ti和ti+1分别为从第一次统计到第i次和第i+1次获取端口统计信息时持续的时间;
将步骤3中所述TCP流经过的所有端口可用带宽的最大值作为该TCP流所在链路的可用带宽,即其中,flow_id表示TCP流的标识,port_id表示端口号,port_id∈flow_id表示流标识为flow_id的TCP流经过了端口号为port_id的交换机端口;
步骤5:利用OpenFlow发现协议,在类型长度值结构中放入时间戳作为负载,由所述控制器产生带有时间戳的OFDP分组,并将OFDP分组放入Packet_out消息的数据部分,通过Packet_out命令向所述TCP流经过的所有交换机发送OFDP分组,命令中的操作设为Flood,即要求所述交换机向邻居交换机转发OFDP分组;
步骤6:所述交换机收到转发的OFDP分组后,通过Packet_in命令将其转发到控制器,所述控制器将当前时间减去OFDP分组中的时间戳可得到所述控制器到交换机Si、交换机Si到交换机Sj以及交换机Sj到控制器的时延,记为T1,同样,也可得到所述控制器到交换机Sj、交换机Sj到交换机Si以及交换机Si到控制器的时延,记为T2;
步骤7:利用Internet控制报文协议,通过所述控制器向所述交换机Si和Sj分别发送带有时间戳的响应请求,所述交换机收到之后回复携带响应请求时间戳的响应回复消息,所述控制器将当前时间与响应回复分组中的时间戳相减得到对应交换机Si、Sj和控制器之间的往返时延,分别记为Ti和Tj,则所述交换机Si和Sj之间链路的往返时延为路径R上两个交换机Si和Sk之间的链路往返时延为其中Si和Si+1表示路径R上相邻的两个交换机;
步骤8:所述控制器将产生携带时间戳的地址解析协议探测包发送到与TCP流两端主机A和B相连的交换机,由所述交换机转发到两个主机,主机产生携带ARP探测包时间戳的ARP回应包发回所述控制器,所述控制器用当前时间减去时间戳分别得到两个主机经所连交换机Sa和Sb到控制器的往返时延,用该往返时延减去交换机Sa和Sb到控制器的往返时延Ta和Tb即得到主机A、B与相连的交换机Sa、Sb之间的往返时延da和db,所述TCP流的往返时延所述控制器将RTTA→B记入全局数据流表GVT中;
步骤9:所述控制器根据可用带宽计算初始窗口值IW,向连接发送端主机的交换机下发初始窗口更新消息,初始窗口值IW为:
式中,MSS_length表示一个数据分段的长度,1MSS表示一个数据分段;
步骤10:所述交换机收到来自所述控制器的初始窗口更新消息后,读取消息中的端口信息,从对应端口将该消息发送到主机,所述主机上的守护进程检测到初始窗口更新消息,该进程读取消息中的初始窗口值,并调用Linux内核命令修改TCP初始窗口值;
步骤11:所述交换机通过队尾丢弃队列管理方式实时监控TCP流经过的每个端口队列长度Q(t),当所述交换机中端口的队列长度超过阈值L=Q/3时,Q为队列缓存最大值,所述交换机产生拥塞通告消息,并通过Packet_in命令将其发送到所述控制器,所述交换机进入拥塞状态,并周期性的监视队列长度;
步骤12:所述控制器接收来自所述交换机的拥塞通告,从通告中获取所述交换机的队列长度Q(t),计算经过所述交换机的TCP流发送窗口的大小,所述TCP流i发送窗口大小的计算公式如下:
式中,n是经过拥塞端口的TCP流的总数,通过控制器的全局数据流表GVT获取,B是所述交换机拥塞端口的最大带宽,RTTavg是所有经过拥塞端口的TCP流的平均RTT,
所述控制器计算出发送窗口大小后,根据队列长度Q(t)来表征所述交换机的拥塞程度,计算经过所述交换机的所有TCP流的ACK报文中的接收窗口大小,所述ACK报文中接收窗口的大小计算如下:
设置阈值QL=Q/2和即满足L<QL<QH,利用上述两个阈值检测所述交换机的拥塞程度,根据拥塞程度的不同,设置不同的接收窗口大小:
(1)若L≤Q(t)<QL,则表示轻度拥塞,设置TCP流i的接收窗口为:
(2)若QL≤Q(t)<QH,则表示持续拥塞,设置TCP流i的接收窗口为:
(3)若Q(t)≥QH,则表示严重拥塞,设置TCP流i的接收窗口为:
Wr(i)=1MSS
其中SWNDi为TCP流i当前发送窗口大小;
步骤13:所述控制器生成修改ACK报文接收窗口的流表,并将接收窗口值Wr(i)附在该流表报文的数据部分,下发到所述交换机,该流表头部匹配ACK报文,动作为修改ACK的接收窗口;
步骤14:所述交换机收到来自所述控制器的修改窗口流表,对经过该交换机的所有ACK报文逐一匹配,并将每个ACK报文头部的接收窗口字段改为RWND(i)'=min(Wr(i),RWND(i)),其中RWND(i)为数据流i的ACK报文中原有的接收窗口字段的大小;
步骤15:所述交换机持续监视队列长度,只要每个周期监视队列的长度仍超过阈值L,则持续向所述控制器发送拥塞通告;当连续三个周期监视的队列长度均小于阈值L,所述交换机向所述控制器发送拥塞恢复消息,所述控制器向所述交换机下发修改窗口流表信息删除命令,所述交换机收到上述命令后,将修改窗口流表删除,并恢复正常状态;
步骤16:关闭连接时,所述交换机第一次接收到客户端或服务器发送的TCP FIN数据包后,解析包头,通过Packet_in命令将解析头部后的数据包上交所述控制器,该控制器从所述全局数据流表中将对应的TCP流记录删除,并发送流表修改消息到所述交换机,该交换机收到流表修改消息后添加该流表项,其中设置匹配域为TCP头部的FIN标志,动作指令为将该数据包转发到所述控制器,之后所述交换机根据流表项匹配到TCP FIN数据包并上交所述控制器,该控制器从所述GVT表中将对应的TCP流记录删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810596966.4A CN108881031B (zh) | 2018-06-11 | 2018-06-11 | 一种基于sdn网络的自适应可靠数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810596966.4A CN108881031B (zh) | 2018-06-11 | 2018-06-11 | 一种基于sdn网络的自适应可靠数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108881031A true CN108881031A (zh) | 2018-11-23 |
CN108881031B CN108881031B (zh) | 2020-09-18 |
Family
ID=64338608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810596966.4A Active CN108881031B (zh) | 2018-06-11 | 2018-06-11 | 一种基于sdn网络的自适应可靠数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108881031B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109756421A (zh) * | 2019-01-23 | 2019-05-14 | 华南理工大学 | 一种基于OpenFlow技术的拥塞控制系统及方法 |
CN111478853A (zh) * | 2020-04-02 | 2020-07-31 | 广州市品高软件股份有限公司 | 一种基于SDN的IPv6路由公告方法和系统 |
CN111756596A (zh) * | 2020-06-02 | 2020-10-09 | 深圳供电局有限公司 | 一种基于sdn的链路质量探测系统及方法 |
CN109905364B (zh) * | 2019-01-08 | 2021-04-20 | 山东省计算中心(国家超级计算济南中心) | 一种基于sdn架构的流媒体数据包的传输方法及系统 |
CN113765812A (zh) * | 2020-09-16 | 2021-12-07 | 北京京东尚科信息技术有限公司 | 一种标记报文的方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104158753A (zh) * | 2014-06-12 | 2014-11-19 | 南京工程学院 | 基于软件定义网络的动态流调度方法及系统 |
CN104518973A (zh) * | 2014-12-17 | 2015-04-15 | 华中科技大学 | 一种基于sdn环境的数据的可靠组播传输方法 |
CN104954279A (zh) * | 2014-03-28 | 2015-09-30 | 华为技术有限公司 | 一种传输控制方法、装置及系统 |
CN105024940A (zh) * | 2015-07-16 | 2015-11-04 | 重庆大学 | 基于链路自适应的异构网络tcp拥塞控制方法 |
CN106102094A (zh) * | 2016-07-06 | 2016-11-09 | 广州海格通信集团股份有限公司 | 一种基于sdn网络的tcp拥塞控制方法 |
CN107347021A (zh) * | 2017-07-07 | 2017-11-14 | 西安交通大学 | 一种基于sdn网络可靠传输方法 |
WO2017198307A1 (en) * | 2016-05-20 | 2017-11-23 | Huawei Technologies Co., Ltd. | Controller and switch for control plane traffic control in software defined networks |
-
2018
- 2018-06-11 CN CN201810596966.4A patent/CN108881031B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104954279A (zh) * | 2014-03-28 | 2015-09-30 | 华为技术有限公司 | 一种传输控制方法、装置及系统 |
CN104158753A (zh) * | 2014-06-12 | 2014-11-19 | 南京工程学院 | 基于软件定义网络的动态流调度方法及系统 |
CN104518973A (zh) * | 2014-12-17 | 2015-04-15 | 华中科技大学 | 一种基于sdn环境的数据的可靠组播传输方法 |
CN105024940A (zh) * | 2015-07-16 | 2015-11-04 | 重庆大学 | 基于链路自适应的异构网络tcp拥塞控制方法 |
WO2017198307A1 (en) * | 2016-05-20 | 2017-11-23 | Huawei Technologies Co., Ltd. | Controller and switch for control plane traffic control in software defined networks |
CN106102094A (zh) * | 2016-07-06 | 2016-11-09 | 广州海格通信集团股份有限公司 | 一种基于sdn网络的tcp拥塞控制方法 |
CN107347021A (zh) * | 2017-07-07 | 2017-11-14 | 西安交通大学 | 一种基于sdn网络可靠传输方法 |
Non-Patent Citations (4)
Title |
---|
JAEHYUN HWANG ; JOON YOO ; SANG-HUN LEE ; HYUN-WOOK JIN: "Scalable Congestion Control Protocol Based on SDN in Data Center Networks", 《2015 IEEE GLOBAL COMMUNICATIONS CONFERENCE (GLOBECOM)》 * |
SIMON JOUET ; COLIN PERKINS ; DIMITRIOS PEZAROS: "OTCP: SDN-managed congestion control for data center networks", 《NOMS 2016 - 2016 IEEE/IFIP NETWORK OPERATIONS AND MANAGEMENT SYMPOSIUM》 * |
胡瑶: "基于SDN的网络拥塞控制机制研究", 《CNKI》 * |
陆一飞;朱书宏: "数据中心网络下基于SDN的TCP拥塞控制机制研究与实现", 《计算机学报》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109905364B (zh) * | 2019-01-08 | 2021-04-20 | 山东省计算中心(国家超级计算济南中心) | 一种基于sdn架构的流媒体数据包的传输方法及系统 |
CN109756421A (zh) * | 2019-01-23 | 2019-05-14 | 华南理工大学 | 一种基于OpenFlow技术的拥塞控制系统及方法 |
CN111478853A (zh) * | 2020-04-02 | 2020-07-31 | 广州市品高软件股份有限公司 | 一种基于SDN的IPv6路由公告方法和系统 |
CN111756596A (zh) * | 2020-06-02 | 2020-10-09 | 深圳供电局有限公司 | 一种基于sdn的链路质量探测系统及方法 |
CN113765812A (zh) * | 2020-09-16 | 2021-12-07 | 北京京东尚科信息技术有限公司 | 一种标记报文的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108881031B (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108881031A (zh) | 一种基于sdn网络的自适应可靠数据传输方法 | |
CN102098301B (zh) | 多链路自适应的数据传输方法与系统 | |
US8503294B2 (en) | Transport layer relay method, transport layer relay device, and program | |
JP4348124B2 (ja) | QoSを推定する方法および通信装置 | |
WO2020052306A1 (zh) | 一种报文转发路径的确定方法、设备和系统 | |
WO2020207479A1 (zh) | 一种网络拥塞控制方法和装置 | |
JP3896879B2 (ja) | トラヒック監視システム | |
EP1817683A1 (en) | Peer signalling protocol and system for decentralized traffic management | |
Zhang et al. | Congestion control and packet scheduling for multipath real time video streaming | |
Rezende et al. | An SDN-based framework for routing multi-streams transport traffic over multipath networks | |
WO2020259112A1 (zh) | 一种检测传输时延的方法及相关设备 | |
WO2024012065A1 (zh) | 数据传输控制方法、装置、计算机可读存储介质、计算机设备及计算机程序产品 | |
Khelifi et al. | LQCC: A link quality-based congestion control scheme in named data networks | |
CN114867061A (zh) | 一种基于无线通信网络的云监控方法 | |
CN106464670A (zh) | 网络实体及服务策略管理方法 | |
CN101557273A (zh) | 一种同时适用于有线和无线网络的实时流媒体传输的方法 | |
WO2021203985A1 (zh) | 一种拥塞信息同步的方法以及相关装置 | |
CN109428842A (zh) | 一种QoS信息传送方法和装置 | |
Morelli et al. | Performance evaluation of transport protocols in tactical network environments | |
WO2022052800A1 (zh) | 一种通信系统、数据处理方法以及相关设备 | |
KR20220029142A (ko) | Sdn 컨트롤러 서버 및 이의 sdn 기반 네트워크 트래픽 사용량 분석 방법 | |
CN103220585B (zh) | 一种支持QoS的网络视频传输方法 | |
CN116346634A (zh) | 网络管控系统的状态感知信息处理方法、装置及电子设备 | |
CN113037859B (zh) | 一种会话信息管理方法、装置、交换设备及介质 | |
CN114828081A (zh) | 基于路径恢复的协同混合拥塞控制方法 |
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 |