一种基于软件定义网络的多路径传输方法

文档序号:9581616阅读:338来源:国知局
一种基于软件定义网络的多路径传输方法【
技术领域
】[0001]本发明涉及一种基于软件定义网络的多路径传输方法,属于信息
技术领域
,特别是属于软件定义网络
技术领域
。【
背景技术
】[0002]软件定义网络(SoftwareDefinedNetworking,SDN)是一个集中控制网络,SDN控制器将多个网络节点统一控制起来,可以较容易地获取网络设备信息、控制网络设备,对应用/客户呈现一个统一的网络视图,其中有交换机,路由器,虚拟机、存储、虚拟子网以及用于虚拟子网之间通信的虚拟网关,用户可以按照自己的网络规划去配置虚拟机的IP地址、配置子网以及子网间的路由规则。SDN的开放定制和集中控制特性,在一定程度上解决了因特网僵化的问题,赋予了用户自定制网络体系和网络协议的能力,用户在一定程度上可以根据自己的需求开发、控制自己的应用和硬件平台,可以自主灵活构建私有网络。[0003]MPTCP是IETF的MPTCP工作组对传统TCP的扩展,添加了MPTCP层,原有的TCP层变为多个subflow层,而每个subflow层又都对应一个IP层,也就是每个subflow可以视为一个TCP连接。MPTCP使得用户能够在不相关的路径上建立对应连接,并在这些路径上以单独的子流的方式进行数据传输。[0004]如何把软件定义网络SDN和MPTCP两者的优势相结合,为用户在SDN上提供多路径数据传输成为目前软件定义网络领域急需解决的一个技术难题。【
发明内容】[0005]有鉴于此,本发明的目的是发明一种方法,基于软件定义网络SDN实现用户主机之间的多路径数据传输。为了达到上述目的,本发明提出了一种基于软件定义网络的多路径传输方法,所述方法包括下列操作步骤:[0006](1)软件定义网络SDN的控制器通过定期主动探测获得所述的软件定义网络的拓扑结构图、每条链路的时延和每条链路的带宽;[0007](2)主机A与主机B通过所述的软件定义网络在SDN控制器的控制下,采用MPTCP协议三次握手的方式建立主连接,即第一次连接;[0008](3)主机A与主机B通过发送重复应答Dupack报文的方式,告知对方以及SDN控制器自己的附加网卡地址信息,所述的重复应答Dupack报文包含添加地址选项MP_Addaddress;[0009](4)所述的SDN控制器计算出主机A与主机B之间的独立路径,主机A与主机B之间最多可以计算出N*M*num_floWS条独立路径,其中N为主机A的网卡数目,Μ为主机Β的网卡数目,num_flows为所设定的每对网卡之间最多能建立的子连接数目;所述的SDN控制器选出前L条最优的独立路径,并告知主机A,告知信息包括主机A和主机B每对网卡间的连接数山为大于1的自然数;[0010](5)主机A根据被告知的信息向主机B发送L条含有MP_Join选项的SYN报文SYN;[0011](6)所述的SYN报文与主机A的接入侧openflow协议交换机A的流表失配,于是该openflow协议交换机A通过Packet_in消息,将该SYN报文发送给所述的软件定义网络SDN的控制器;[0012](7)所述的SDN控制器收到该Packet_in消息后,解析出所述的SYN报文,根据SYN报文中的网卡信息从所述的L条独立路径中选择与所述网卡信息对应的独立路径P,生成该独立路径P的流表,并向该独立路径P上相关的openflow协议交换机下发流表;[0013](8)主机A与主机B在所述的独立路径P上建立子连接即子流进行数据传输;在设定的时间周期内,如果该独立路径P上相关的openflow协议交换机在该独立路径P所对应的流表项上没有数据传输,则将该流表项删除,并将该流表项删除事件告知所述的SDN控制器;当所述的独立路径P上相关的所有openflow协议交换机在该独立路径P所对应的流表项都被删除后,所述的SDN控制器将所述的独立路径P删除;[0014](9)主机A按照设定的数据包调度原则,把数据包分发到与主机B已建立的多条独立路径上;所述的设定的数据包调度原则是使得所要发送的数据整体上最快到达接收端,即主机B。[0015]所述步骤(4)中SDN控制器计算出主机A与主机B之间的独立路径的具体内容是:[0016]所述的SDN控制器获取到主机A和主机B的所有附加网卡的IP地址信息之后,根据该地址信息确定所述的附加网卡的接入侧交换机;SDN控制器在获得的所述的SDN的拓扑结构图中将所述的交换机标注出来,在所述的拓扑结构图中添加代表发送端的源点,添加代表接收端的汇点,然后在源点和发送端的所有的网卡的接入侧交换机之间添加连接,同样在汇点和接收端的所有的网卡的接入侧交换机之间添加连接,这样就得到了用来计算链路不相关的独立路径的路径计算结构图;[0017]发送端和接收端都具有多张网卡,相当于多个0-1流问题的叠加,依据前面所述的路径计算结构图,设源点-交换机链路中可通过的流量是Q,同样汇点-交换机链路中可通过的流量也是Q,其中Q是远大于1的整数,设交换机-交换机链路中可通过的流量是1,于是计算所述的主机A与主机B之间的链路不相关的路径就简化成了无向图最大流问题,可通过Dinic算法进行求解。[0018]所述步骤(7)中所述的SDN控制器生成的独立路径P的流表的具体格式如下:[0019]流表共分为四级,每一级流表由多条流表项组成,每个流表项都是一个六元组,gp由六个字段组成,分别是:匹配域字段、优先级字段、计数器Counter字段、指令字段、计时器timeout字段和Cookies字段;[0020]其中,匹配域字段主要用来匹配包,由以太网类型、IP协议号、IPv4源地址、IPv4目的地址、TCP源端口和TCP目的端口六个参数中的部分组合而成,具体为:第一级流表的匹配域字段由以太网类型和IPv4源地址组成,第二级流表的匹配域字段由以太网类型和IPv4目的地址组成,第三级流表的匹配域字段由IP协议号和TCP目的端口组成,第四级流表的匹配域字段由IP协议号和TCP源端口组成;[0021]优先级字段规定了每条流表项的优先级,优先级高的流表项优先匹配包;[0022]计数器Counter字段主要用来统计该流表项匹配过的数据包的个数;[0023]指令字段分为goto和output两种指令类型,goto指令类型用于第一级、第二级和第三级流表,用来指向下一级流表,output指令类型用于第四级流表,用来指定输出的交换机端口;[0024]计时器timeout字段分为idle_timeout和hard_timeout两种计时器类型,idle_timeout计时器类型规定空闲多长时间后该流表项失效,hard_timeout计时器规定流表项总的驻留时间;[0025]Cookie字段主要是可以让控制器区分出不同的流表项;[0026]第二级流表用tableA表示,第三级流表用tableB表示,第四级流表用tableC表示;[0027]第一级流表有且只有一个,负责匹配IPv4源地址,实现对发送网卡的区分,其流表项的个数等于通信双方使用的网卡总数目;其指令goto字段的值为tableA,即第二级流表;[0028]第二级流表负责匹配域IPv4目的地址,实现对接收网卡的区分,其流表项的个数等于通信双方使用的网卡总数目,其指令goto字段的值为tableB,即第三级流表;[0029]第三级流表负责匹配TCP目的端口,其指令goto字段的值为tableC,即第四级流表;[0030]第四级流表负责匹配TCP源端口,其指令output字段的值为相应交换机上的端口号。[0031]所述步骤(7)的具体内容包括如下操作子步骤:[0032](71)所述的SDN控制器从收到的Packet_in消息中解析出SYN报文,从中提取源IP地址和目的IP地址,与当前维护的MPTCP连接的网卡信息进行匹配,如果匹配成功,则转步骤(72),否则对其进行普通路径选择,即为其选择出最佳的一条路径,进行单路径传输;[0033](72)所述的SDN控制器根据源IP地址和目的IP地址,判断在其所计算出的L条最优的独立路径中是否还有可以铺设的路径,没有则停止,有则从Packet_in消息中提取流表号table_id,并根据该流表号table_id判断是第几级流表提交的信息,如果是第一级流表提交的信息则转步骤(73)、如果是第二级流表提交的信息则转步骤(74)、如果是第三级流表提交的信息则转步骤(75)、如果是第四级流表提交的信息则转步骤(76);所述的流表号table_id是指第二级流表tableA、第三级流表tableB和第四级流表tableC的具体编号;[0034](73)所述的SDN控制器产生新的第二、三、四级流表的流表号table_id,记录下来;然后向所述的提交信息的第一级流表下发指向新的第二级流表的流表项,并向新的第二、三、四级流表下发流表项,转步骤(77);[0035](74)所述的SDN控制器产生新的第三、四级流表的流表号table_id,记录下来;然后向所述的提交信息的第二级流表下发指向新的第三级流表的流表项,并向新的第三、四级流表下发流表项,转步骤(77);[0036](75)所述的SDN控制器产生新的第四级流表的流表号table_id,记录下来;然后向所述的提交信息的第三级流表下发指向新的第四级流表的流表项,并向新的第四级流表下发流表项,转步骤(77);[0037](76)所述的SDN控制器向所述的提交信息的第四级流表下发流表项,转步骤(77);[0038](77)所述的SDN向所述的独立路径P上相关的openflow协议交换机下发当前第1页1 2 3 4 
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1