[发明专利]一种基于SDN网络的自适应可靠数据传输方法有效
申请号: | 201810596966.4 | 申请日: | 2018-06-11 |
公开(公告)号: | CN108881031B | 公开(公告)日: | 2020-09-18 |
发明(设计)人: | 王敏;甘健侯;徐坚;袁凌云 | 申请(专利权)人: | 云南师范大学 |
主分类号: | H04L12/741 | 分类号: | H04L12/741;H04L12/801;H04L12/815;H04L29/06;H04L29/08 |
代理公司: | 昆明人从众知识产权代理有限公司 53204 | 代理人: | 王娟 |
地址: | 650500 云*** | 国省代码: | 云南;53 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于SDN网络的自适应可靠数据传输方法,属于数据传输技术领域。在建立TCP连接时,根据SDN控制器获得的网络状态统计信息,设置TCP流的初始传输窗口,有效减少数据中心网络中老鼠流的传输时间。传输过程中自动检测拥塞,并根据网络拥塞程度调整TCP流传输速率,有效缓解拥塞,提高网络带宽利用率,实现数据中心网络中数据的高效传输。 | ||
搜索关键词: | 一种 基于 sdn 网络 自适应 可靠 数据传输 方法 | ||
【主权项】:
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流记录删除。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于云南师范大学,未经云南师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201810596966.4/,转载请声明来源钻瓜专利网。