一种基于SDN环境的数据的可靠组播传输方法转让专利

申请号 : CN201410787311.7

文献号 : CN104518973B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王芳冯丹朱挺炜史庆宇万勇

申请人 : 华中科技大学

摘要 :

本发明公开了一种基于SDN环境的数据的可靠组播传输方法。SDN网络控制器实时监控当前网络状况,在数据传输之前发送端与接收端先进行三次握手建立连接,连接建立过程中发送端指定接收端,由SDN网络控制器生成组播转发树,连接建立后发送端向该连接发送数据,数据以组播的方式传输到每个接收端,每个接收端接收到数据之后向发送端发送确认报文,保证数据可靠传输,同时发送端维护拥塞窗口,在发送数据的过程中进行拥塞控制,从而保证TCP友好性。该方法具有良好的灵活性和安全性,能达到最优的传输效率,有效降低组播数据确认的时延,因而能广泛用于组播会话变动较为灵活、组成员数目较小的数据推送式可靠组播数据传输场景。

权利要求 :

1.一种基于SDN环境的数据的可靠组播传输方法,其特征在于,包括如下步骤:

(1)初始化;进一步包括如下步骤:

(1-1)启动SDN网络控制器,对网络状况进行实时监控;

(1-2)选取任一组播地址,标记为ADDRSYN;

(1-3)启动至少一个接收端,被启动的接收端将自身的地址信息发送至SDN网络控制器;其中,地址信息包括MAC地址、IP地址和端口号;

(1-4)SDN网络控制器接收并记录地址信息,被启动的接收端进入监听状态;

(2)建立连接;进一步包括如下步骤:

(2-1)发送端在被启动的接收端集合中指定接收端;

(2-2)发送端生成与TCP报文格式相同的第一次握手报文,选取发送端所在主机上未被占用的组播地址作为连接地址ADDRCONN,将连接地址ADDRCONN与发送端标识加入第一次握手报文的头部中的TCP选项区域,将指定的接收端总数以及所有指定的接收端的IP地址和端口号作为第一次握手报文的负载数据,以发送端地址为源地址,ADDRSYN为目标地址,将第一次握手报文发送至网络;

(2-3)SDN网络控制器接收第一次握手报文,提取发送端地址,连接地址ADDRCONN,指定的接收端总数,以及所有指定的接收端的IP地址和端口号,结合当前的网络拥塞状况获取组播转发树,并将组播转发树下发安装到SDN交换机;

(2-4)对每一个指定的接收端,SDN网络控制器复制第一次握手报文,将得到的第一次握手报文副本的目标地址修改为该指定的接收端的IP地址,发送至网络;

(2-5)各指定的接收端接收目标地址与其IP地址对应的第一次握手报文副本,获取连接地址ADDRCONN,加入该连接地址ADDRCONN所在的组播组,从而能够接收以该连接地址ADDRCONN为目标地址的报文;

(2-6)各指定的接收端生成与TCP报文格式相同的第二次握手报文,将接收端标识和连接地址ADDRCONN加入第二次握手报文的头部中的TCP选项区域,以发送端地址为目标地址,将第二次握手报文发送至网络;

(2-7)发送端接收到所有指定的接收端的第二次握手报文后,生成与TCP报文格式相同的第三次握手报文,将发送端标识加入第三次握手报文的头部中的TCP选项区域,以连接地址ADDRCONN为目标地址,通过组播转发树发送至各指定的接收端;

(2-8)各指定的接收端接收第三次握手报文,完成连接建立过程;

(3)发送端以连接地址ADDRCONN为目标地址,向各指定的接收端发送数据报文,各指定的接收端收到数据报文后,向发送端发送确认报文,发送端在接收到每个指定的接收端的确认报文后,完成该数据报文的发送。

2.如权利要求1所述的基于SDN环境的数据的可靠组播传输方法,其特征在于,还包括如下步骤(4):在所有数据传输完成后关闭连接;其中,发送端在收到每个指定的接收端的关闭报文和每个指定的接收端对发送端发出的关闭报文的确认报文后判断为关闭;在发送端发出的报文头部中加入发送端标识,以表明该报文为发送端发出的报文;在接收端发出的报文头部中加入接收端标识和连接地址ADDRCONN,以表明该报文为连接地址ADDRCONN所在的组播组的接收端发出的报文。

3.如权利要求2所述的基于SDN环境的数据的可靠组播传输方法,其特征在于,所述步骤(3)和(4)中,在发送端发出的报文头部中加入发送端标识,以表明该报文为发送端发出的报文;在接收端发出的报文头部中加入接收端标识和连接地址ADDRCONN,以表明该报文为连接地址ADDRCONN所在的组播组的接收端发出的报文。

4.如权利要求1至3中任一项所述的基于SDN环境的数据的可靠组播传输方法,其特征在于,所述步骤(2-3)中,若与所述发送端地址、连接地址ADDRCONN和所有指定的接收端的IP地址对应的组播转发树已经存在,则直接复用该组播转发树。

5.如权利要求1至3中任一项所述的基于SDN环境的数据的可靠组播传输方法,其特征在于,所述步骤(3)中,若发送端在预定的时间内未收到所有指定的接收端的确认报文,则重新发送对应的数据报文。

6.如权利要求1至3中任一项所述的基于SDN环境的数据的可靠组播传输方法,其特征在于,所述步骤(3)中,发送端在发送数据报文的过程中维护拥塞窗口,进行网络拥塞控制。

7.如权利要求1至3中任一项所述的基于SDN环境的数据的可靠组播传输方法,其特征在于,SDN网络控制器管理所有组播转发树,能对组播转发树进行生成、复用和销毁。

说明书 :

一种基于SDN环境的数据的可靠组播传输方法

技术领域

[0001] 本发明属于网络环境下的数据传输技术领域,更具体地,涉及一种基于SDN环境的数据的可靠组播传输方法。

背景技术

[0002] 近年来,随着计算机网络规模的持续增长和网络应用的不断增加,传统网络的结构和功能越来越复杂,管理和控制能力逐渐减弱。同时,在传统网络架构下,实行任何新网络研究方案和业务都异常困难,必须在得到相关的标准化组织同意和设备提供商允许时才能投入实际网络环境。为了解决现在网络体系结构造成的众多问题,软件定义网络(Software Defined Network,SDN)技术被提出,随着斯坦福大学相关研究者提出OpenFlow技术,基于OpenFlow的SDN架构在业界广泛推广。
[0003] SDN是一种新兴的基于软件的网络架构及技术,具有控制平面与数据平面松耦合、网络状态控制集中、底层网络设施对上层应用透明等特点。相比于传统网络,SDN具有逻辑上集中的控制能力,在网络控制器端可以获得网络的全局信息,支持根据业务需求进行全局调配和最优控制。OpenFlow作为SDN的一种最为业界接受的南向接口,规定了作为SDN基础设施的OpenFlow交换机的基本组件与功能要求,以及用于远程控制器对交换机控制的协议。
[0004] 随着IT业务的不断丰富,涌现出大量的不同类型的网络应用,在网络中产生大量不同模式的网络流量,其中相当一部分流量为一对多模式,如视频直播、多媒体应用、资源同步等。传统网络技术中,为了传输一对多模式的网络流量,采用IP组播技术来提升效率、减少网络开销。然而传统的IP组播为基于用户数据包协议(User Datagram Protocol,UDP)的非可靠协议,目前应用较为广泛的可靠组播协议均为在UDP协议的基础之上实现的,且进行数据转发过程中不具备网络拥塞感知的能力,容易造成网络拥塞,导致协议的效率低。另一方面,大部分传统组播协议为接收端自由加入和退出,发送端不保存接收端的信息,因此容易造成安全性问题。此外,传统组播协议在处理组播会话变动的情况下灵活性差,如t1时刻A需要给B、C和D发送数据DATA1,而t2时刻A结束DATA1的传输,同时需要给D、E和F发送数据DATA2。囿于传统可靠组播技术的效率低、安全性差、灵活性差等因素,大量一对多模式的流量只能采用基于TCP协议的点到点多次传输的方式完成,典型的如分布式存储系统中的多副本写机制,造成网络资源的严重浪费,影响上层业务的吞吐率。

发明内容

[0005] 针对现有技术的以上缺陷或改进需求,本发明提供了一种基于SDN环境的数据的可靠组播传输方法,在一对多模式的数据传输场景中具有很好的可靠性、安全性、灵活性和TCP友好性,且传输效率高,延时小。
[0006] 为实现上述目的,本发明提供了一种基于SDN环境的数据的可靠组播传输方法,其特征在于,包括如下步骤:
[0007] (1)初始化;进一步包括如下步骤:
[0008] (1-1)启动SDN网络控制器,对网络状况进行实时监控;
[0009] (1-2)选取任一组播地址,标记为ADDRSYN;
[0010] (1-3)启动至少一个接收端,被启动的接收端将自身的地址信息发送至SDN网络控制器;其中,地址信息包括MAC地址、IP地址和端口号;
[0011] (1-4)SDN网络控制器接收并记录地址信息,被启动的接收端进入监听状态;
[0012] (2)建立连接;进一步包括如下步骤:
[0013] (2-1)发送端在被启动的接收端集合中指定接收端;
[0014] (2-2)发送端生成与TCP报文格式相同的第一次握手报文,选取发送端所在主机上未被占用的组播地址作为连接地址ADDRCONN,将连接地址ADDRCONN与发送端标识加入第一次握手报文的头部中的TCP选项区域,将指定的接收端总数以及所有指定的接收端的IP地址和端口号作为第一次握手报文的负载数据,以发送端地址为源地址,ADDRSYN为目标地址,将第一次握手报文发送至网络;
[0015] (2-3)SDN网络控制器接收第一次握手报文,提取发送端地址,连接地址ADDRCONN,指定的接收端总数,以及所有指定的接收端的IP地址和端口号,结合当前的网络拥塞状况获取组播转发树,并将组播转发树下发安装到SDN交换机;
[0016] (2-4)对每一个指定的接收端,SDN网络控制器复制第一次握手报文,将得到的第一次握手报文副本的目标地址修改为该指定的接收端的IP地址,发送至网络;
[0017] (2-5)各指定的接收端接收目标地址与其IP地址对应的第一次握手报文副本,获取连接地址ADDRCONN,加入该连接地址ADDRCONN所在的组播组,从而能够接收以该连接地址ADDRCONN为目标地址的报文;
[0018] (2-6)各指定的接收端生成与TCP报文格式相同的第二次握手报文,将接收端标识和连接地址ADDRCONN加入第二次握手报文的头部中的TCP选项区域,以发送端地址为目标地址,将第二次握手报文发送至网络;
[0019] (2-7)发送端接收到所有指定的接收端的第二次握手报文后,生成与TCP报文格式相同的第三次握手报文,将发送端标识加入第三次握手报文的头部中的TCP选项区域,以连接地址ADDRCONN为目标地址,通过组播转发树发送至各指定的接收端;
[0020] (2-8)各指定的接收端接收第三次握手报文,完成连接建立过程;
[0021] (3)发送端以连接地址ADDRCONN为目标地址,向各指定的接收端发送数据报文,各指定的接收端收到数据报文后,向发送端发送确认报文,发送端在接收到每个指定的接收端的确认报文后,完成该数据报文的发送。
[0022] 优选地,还包括如下步骤(4):在所有数据传输完成后关闭连接;其中,发送端在收到每个指定的接收端的关闭报文和每个指定的接收端对发送端发出的关闭报文的确认报文后判断为关闭。
[0023] 优选地,所述步骤(3)和(4)中,在发送端发出的报文头部中加入发送端标识,以表明该报文为发送端发出的报文;在接收端发出的报文头部中加入接收端标识和连接地址ADDRCONN,以表明该报文为连接地址ADDRCONN所在的组播组的接收端发出的报文。
[0024] 优选地,所述步骤(2-3)中,若与所述发送端地址、连接地址ADDRCONN和所有指定的接收端的IP地址对应的组播转发树已经存在,则直接复用该转组播发树。
[0025] 优选地,所述步骤(3)中,若发送端在预定的时间内未收到所有指定的接收端的确认报文,则重新发送对应的数据报文。
[0026] 优选地,所述步骤(3)中,发送端在发送数据报文的过程中维护拥塞窗口,进行网络拥塞控制。
[0027] 优选地,SDN网络控制器管理所有组播转发树,能对组播转发树进行生成、复用和销毁。
[0028] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:SDN网络控制器实时监控当前网络状况,在数据传输之前发送端与接收端先进行三次握手建立连接,连接建立过程中发送端指定接收端,由SDN网络控制器生成组播转发树,连接建立后发送端向该连接发送数据,数据以组播的方式传输到每个接收端,每个接收端接收到数据之后向发送端发送确认报文,保证数据可靠传输,同时发送端维护拥塞窗口,在发送数据的过程中进行拥塞控制,从而保证TCP友好性。这种源端控制的组播协议具有良好的灵活性和安全性,利用SDN网络控制器计算组播转发树能达到最优的传输效率,由发送端统一处理数据确认能有效降低组播数据确认的时延,因此本发明的方法能广泛用于组播会话变动较为灵活、组成员数目较小的数据推送式可靠组播数据传输场景。

附图说明

[0029] 图1是本发明实施例的基于SDN环境的数据的可靠组播传输方法流程示意图;
[0030] 图2是网络拓扑结构示意图;
[0031] 图3是发送组播数据过程的报文流向示意图。

具体实施方式

[0032] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0033] 本发明的技术方案为:发送端指定接收端,由SDN网络控制器计算组播转发树,以有连接的方式实现数据的可靠组播传输,同时发送端通过拥塞控制保证TCP友好性。
[0034] 如图1所示,本发明实施例的基于SDN环境的数据的可靠组播传输方法包括如下步骤:
[0035] (1)初始化。进一步包括如下步骤:
[0036] (1-1)启动SDN网络控制器,对网络状况进行实时监控。
[0037] (1-2)选取任一组播地址,标记为ADDRSYN。
[0038] (1-3)启动至少一个接收端,被启动的接收端将自身的地址信息发送至SDN网络控制器。
[0039] 其中,地址信息包括MAC地址、IP地址和端口号。
[0040] (1-4)SDN网络控制器接收并记录地址信息,被启动的接收端进入监听状态。
[0041] (2)建立连接。进一步包括如下步骤:
[0042] (2-1)发送端在被启动的接收端集合中指定接收端。
[0043] (2-2)发送端生成与TCP报文格式相同的第一次握手报文(SYN报文),选取发送端所在主机上未被占用的组播地址作为连接地址ADDRCONN,将连接地址ADDRCONN与发送端标识加入第一次握手报文的头部中的TCP选项区域,将指定的接收端总数以及所有指定的接收端的IP地址和端口号作为第一次握手报文的负载数据,以发送端地址为源地址,ADDRSYN为目标地址,将第一次握手报文发送至网络。
[0044] (2-3)在第一次握手报文到达网络的第一个SDN交换机后,将其转发到SDN网络控制器,SDN网络控制器接收第一次握手报文,提取发送端地址,连接地址ADDRCONN,指定的接收端总数,以及所有指定的接收端的IP地址和端口号,结合当前的网络拥塞状况获取组播转发树,并将组播转发树下发安装到SDN交换机。
[0045] 其中,若与上述发送端地址、连接地址ADDRCONN和所有指定的接收端的IP地址对应的组播转发树已经存在,则直接复用该组播转发树。
[0046] (2-4)对每一个指定的接收端,SDN网络控制器复制第一次握手报文,将得到的第一次握手报文副本的目标地址修改为该指定的接收端的IP地址,发送至网络。
[0047] (2-5)各指定的接收端接收目标地址与其IP地址对应的第一次握手报文副本,获取连接地址ADDRCONN,加入该连接地址ADDRCONN所在的组播组,从而能够接收以该连接地址ADDRCONN为目标地址的报文。
[0048] (2-6)各指定的接收端生成与TCP报文格式相同的第二次握手报文(SYN/ACK报文),将接收端标识和连接地址ADDRCONN加入第二次握手报文的头部中的TCP选项区域,以发送端地址为目标地址,将第二次握手报文发送至网络。
[0049] (2-7)发送端接收到所有指定的接收端的第二次握手报文后,生成与TCP报文格式相同的第三次握手报文,将发送端标识加入第三次握手报文的头部中的TCP选项区域,以连接地址ADDRCONN为目标地址,通过组播转发树发送至各指定的接收端。
[0050] (2-8)各指定的接收端接收第三次握手报文,完成连接建立过程。
[0051] (3)发送端以连接地址ADDRCONN为目标地址,向各指定的接收端发送数据报文,各指定的接收端收到数据报文后,向发送端发送确认报文,发送端在接收到每个指定的接收端的确认报文后,完成该数据报文的发送。
[0052] 其中,若发送端在预定的时间内未收到所有指定的接收端的确认报文,则重新发送对应的数据报文;发送端在发送数据报文的过程中维护拥塞窗口,进行网络拥塞控制。
[0053] (4)在所有数据传输完成后关闭连接。
[0054] 其中,连接关闭的流程采用与TCP关闭流程相似的四次挥手方式,发送端在收到每个指定的接收端的关闭报文(FIN报文)和每个指定的接收端对发送端发出的关闭报文(FIN报文)的确认报文后才判断为关闭,接收端的关闭流程与TCP的关闭流程相同。
[0055] 上述步骤(3)和(4)中,发送端向接收端发送报文的过程采用组播方式,接收端向发送端发送报文的过程采用单播方式,因此需要区分这两种报文。在发送端发出的报文头部中加入发送端标识,以表明该报文为发送端发出的报文;在接收端发出的报文头部中加入接收端标识和连接地址ADDRCONN,以表明该报文为连接地址ADDRCONN所在的组播组的接收端发出的报文。
[0056] SDN网络控制器管理所有组播转发树,能对组播转发树进行生成、复用和销毁。例如,对长期未使用的组播转发树,SDN网络控制器可将其销毁。
[0057] 为使本领域技术人员更好地理解本发明,下面以基于OpenFlow的SDN网络环境为例,对本发明的基于SDN环境的数据的可靠组播传输方法进行详细说明。
[0058] 如图2所示,网络拓扑由四个SDN交换机S1~S4组成,H1为发送端,其IP地址为192.168.3.1,H3、H4和H6为接收端,其MAC地址分别为0C:C4:7A:41:4A:03、0C:C4:7A:41:
4A:04和0C:C4:7A:41:4A:06,IP地址分别为192.168.3.3、192.168.3.4和192.168.3.6,连接的端口号均为6666,SDN网络控制器的IP地址为192.168.3.100,ADDRSYN为239.0.1.0,连接地址ADDRCONN为239.0.1.1,建立连接过程中数据报文的具体流向为:
[0059] (A)启动接收端H3、H4和H6。接收端H3通过UDP协议向SDN网络控制器发送注册报文,其报文为UDP:dst_ip:192.168.3.100,报文负载为端口号信息6666;SDN网络控制器接收到该注册报文,并从其中获取H3的MAC地址0C:C4:7A:41:4A:03,IP地址192.168.3.3,端口号6666,并记录,供后期管理及生成OpenFlow流表。H4和H6跟H3一样向SDN网络控制器发送注册报文;
[0060] (B)接收端H3、H4和H6都已经进入监听状态之后,发送端H1选取接收端为H3、H4和H6,将连接地址239.0.1.1和发送端标识加入SYN报文的TCP选项区域,其负载数据如下表所示,目标地址为ADDRSYN:239.0.1.0,发送到网络。
[0061]数目 端口1 地址1 端口2 地址2 端口3 地址3
3 6666 192.168.3.3 6666 192.168.3.4 6666 192.168.3.6
[0062] (C)由于SYN地址为全网未使用的一固定地址,故该SYN报文将会在OpenFlow交换机S1中转发到SDN网络控制器,SDN网络控制器接收到SYN报文,可以从中获取发送端地址192.168.3.1,连接地址239.0.1.1,接收端数目3,接收端地址及端口分别为192.168.3.3:
6666、192.168.3.4:6666、192.168.3.6:6666,根据这些信息以及当前网络状况计算出最优转发树,转化成具体的OpenFlow流表下发到相应的OpenFlow交换机。
[0063] (D)SDN网络控制器拷贝SYN报文,将拷贝得到SYN报文副本的目标地址及端口修改为H3的192.168.3.3:6666,再将其发送到网络;之后同样地分别再将SYN报文的目标地址及端口修改为H4和H6的地址和端口,发送到网络。
[0064] (E)接收端H3接收到SYN报文,其目标地址与端口为192.168.3.3:6666,从该报文头部中获得发送端地址192.168.3.1、连接地址为239.0.1.1。调用相关函数加入连接地址239.0.1.1所在的组播组中,生成SYN/ACK报文,将接收端确认报文标识和连接地址
239.0.1.1加入到报文头部的TCP选项区域,目标地址为发送端地址192.168.3.1,发送到网络。接收端H4和H6分别作同样处理。
[0065] (F)SYN/ACK报文以单播的方式到达发送端,H1接收到H3、H4和H6三个接收端的SYN/ACK报文之后,生成第三次握手报文,将发送端标识加入报文头部TCP选项区域,目标地址为连接地址239.0.1.1,发送到网络。
[0066] (G)源地址为发送端192.168.3.1,目标地址为239.0.1.1的报文在OpenFlow交换机中匹配到之前安装好的转发流表,最终到达H3、H4和H6三个接收端,完成连接建立。
[0067] 在连接建立之后,发送端以组播的方式发送数据给H3、H4和H6三个接收端,H3、H4和H6三个接收端在接收到组播数据报文之后,通过单播的方式给发送端发送确认报文。如图3所示,发送端向接收端发送组播数据报文的源地址为发送端地址H1:192.168.3.1,目标地址为连接地址239.0.1.1;接收端向发送端返回确认报文源地址为接收端地址H3:192.168.3.3(或H4或H6的IP地址),目标地址为发送端地址H1:192.168.3.1。
[0068] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。