CN105337857B - 一种基于软件定义网络的多路径传输方法 - Google Patents
一种基于软件定义网络的多路径传输方法 Download PDFInfo
- Publication number
- CN105337857B CN105337857B CN201510818810.2A CN201510818810A CN105337857B CN 105337857 B CN105337857 B CN 105337857B CN 201510818810 A CN201510818810 A CN 201510818810A CN 105337857 B CN105337857 B CN 105337857B
- Authority
- CN
- China
- Prior art keywords
- flow table
- host
- independent pathway
- fields
- item
- 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.)
- Active
Links
Classifications
-
- 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/02—Topology update or discovery
-
- 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/12—Shortest path evaluation
- H04L45/124—Shortest path evaluation using a combination of metrics
-
- 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/24—Multipath
-
- 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/42—Centralised routing
-
- 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/54—Organization of routing tables
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于软件定义网络的多路径传输方法,主机A与主机B通过发送重复应答Dupack报文的方式,告知对方以及软件定义网络SDN控制器自己的附加网卡地址信息,SDN控制器计算出主机A与主机B之间的独立路径,并从所述的独立路径中选择一条最合适的独立路径P;SDN控制器生成该独立路径P的流表,并向该独立路径P上相关的openflow协议交换机下发流表,主机A与主机B在所述的独立路径P上建立子流进行数据传输,主机A把数据包分发到与主机B已建立的多条独立路径上;本方法为通信双方建立了最优路径,实现了SDN中的多路径最优数据传输。
Description
技术领域
本发明涉及一种基于软件定义网络的多路径传输方法,属于信息技术领域,特别是属于软件定义网络技术领域。
背景技术
软件定义网络(Software Defined Networking,SDN)是一个集中控制网络,SDN控制器将多个网络节点统一控制起来,可以较容易地获取网络设备信息、控制网络设备,对应用/客户呈现一个统一的网络视图,其中有交换机,路由器,虚拟机、存储、虚拟子网以及用于虚拟子网之间通信的虚拟网关,用户可以按照自己的网络规划去配置虚拟机的IP地址、配置子网以及子网间的路由规则。SDN的开放定制和集中控制特性,在一定程度上解决了因特网僵化的问题,赋予了用户自定制网络体系和网络协议的能力,用户在一定程度上可以根据自己的需求开发、控制自己的应用和硬件平台,可以自主灵活构建私有网络。
MPTCP是IETF的MPTCP工作组对传统TCP的扩展,添加了MPTCP层,原有的TCP层变为多个subflow层,而每个subflow层又都对应一个IP层,也就是每个subflow可以视为一个TCP连接。MPTCP使得用户能够在不相关的路径上建立对应连接,并在这些路径上以单独的子流的方式进行数据传输。
如何把软件定义网络SDN和MPTCP两者的优势相结合,为用户在SDN上提供多路径数据传输成为目前软件定义网络领域急需解决的一个技术难题。
发明内容
有鉴于此,本发明的目的是发明一种方法,基于软件定义网络SDN实现用户主机之间的多路径数据传输。为了达到上述目的,本发明提出了一种基于软件定义网络的多路径传输方法,所述方法包括下列操作步骤:
(1)软件定义网络SDN的控制器通过定期主动探测获得所述的软件定义网络的拓扑结构图、每条链路的时延和每条链路的带宽;
(2)主机A与主机B通过所述的软件定义网络在SDN控制器的控制下,采用MPTCP协议三次握手的方式建立主连接,即第一次连接;
(3)主机A与主机B通过发送重复应答Dupack报文的方式,告知对方以及SDN控制器自己的附加网卡地址信息,所述的重复应答Dupack报文包含添加地址选项MP_Addaddress;
(4)所述的SDN控制器计算出主机A与主机B之间的独立路径,主机A与主机B之间最多可以计算出N*M*num_flows条独立路径,其中N为主机A的网卡数目,M为主机B的网卡数目,num_flows为所设定的每对网卡之间最多能建立的子连接数目;所述的SDN控制器选出前L条最优的独立路径,并告知主机A,告知信息包括主机A和主机B每对网卡间的连接数;L为大于1的自然数;
(5)主机A根据被告知的信息向主机B发送L条含有MP_Join选项的SYN报文SYN;
(6)所述的SYN报文与主机A的接入侧openflow协议交换机A的流表失去匹配,于是该openflow协议交换机A通过Packet_in消息,将该SYN报文发送给所述的软件定义网络SDN的控制器;
(7)所述的SDN控制器收到该Packet_in消息后,解析出所述的SYN报文,根据SYN报文中的网卡信息从所述的L条独立路径中选择与所述网卡信息对应的独立路径P,生成该独立路径P的流表,并向该独立路径P上相关的openflow协议交换机下发流表;
(8)主机A与主机B在所述的独立路径P上建立子连接即子流进行数据传输;在设定的时间周期内,如果该独立路径P上相关的openflow协议交换机在该独立路径P所对应的流表项上没有数据传输,则将该流表项删除,并将该流表项删除事件告知所述的SDN控制器;当所述的独立路径P上相关的所有openflow协议交换机在该独立路径P所对应的流表项都被删除后,所述的SDN控制器将所述的独立路径P删除;
(9)主机A按照设定的数据包调度原则,把数据包分发到与主机B已建立的多条独立路径上;所述的设定的数据包调度原则是使得所要发送的数据整体上最快到达接收端,即主机B。
所述步骤(4)中SDN控制器计算出主机A与主机B之间的独立路径的具体内容是:
所述的SDN控制器获取到主机A和主机B的所有附加网卡的IP地址信息之后,根据该地址信息确定所述的附加网卡的接入侧交换机;SDN控制器在获得的所述的SDN的拓扑结构图中将所述的交换机标注出来,在所述的拓扑结构图中添加代表发送端的源点,添加代表接收端的汇点,然后在源点和发送端的所有的网卡的接入侧交换机之间添加连接,同样在汇点和接收端的所有的网卡的接入侧交换机之间添加连接,这样就得到了用来计算链路不相关的独立路径的路径计算结构图;
发送端和接收端都具有多张网卡,相当于多个0-1流问题的叠加,依据前面所述的路径计算结构图,设源点-交换机链路中可通过的流量是Q,同样汇点-交换机链路中可通过的流量也是Q,其中Q是远大于1的整数,设交换机-交换机链路中可通过的流量是1,于是计算所述的主机A与主机B之间的链路不相关的路径就简化成了无向图最大流问题,可通过Dinic算法进行求解。
所述步骤(7)中所述的SDN控制器生成的独立路径P的流表的具体格式如下:
流表共分为四级,每一级流表由多条流表项组成,每个流表项都是一个六元组,即由六个字段组成,分别是:匹配域字段、优先级字段、计数器Counter字段、指令字段、计时器timeout字段和Cookies字段;
其中,匹配域字段主要用来匹配包,由以太网类型、IP协议号、IPv4源地址、IPv4目的地址、TCP源端口和TCP目的端口六个参数中的部分组合而成,具体为:第一级流表的匹配域字段由以太网类型和IPv4源地址组成,第二级流表的匹配域字段由以太网类型和IPv4目的地址组成,第三级流表的匹配域字段由IP协议号和TCP目的端口组成,第四级流表的匹配域字段由IP协议号和TCP源端口组成;
优先级字段规定了每条流表项的优先级,优先级高的流表项优先匹配包;
计数器Counter字段主要用来统计该流表项匹配过的数据包的个数;
指令字段分为goto和output两种指令类型,goto指令类型用于第一级、第二级和第三级流表,用来指向下一级流表,output指令类型用于第四级流表,用来指定输出的交换机端口;
计时器timeout字段分为idle_timeout和hard_timeout两种计时器类型,idle_timeout计时器类型规定空闲多长时间后该流表项失效,hard_timeout计时器规定流表项总的驻留时间;
Cookie字段主要是可以让控制器区分出不同的流表项;
第二级流表用tableA表示,第三级流表用tableB表示,第四级流表用tableC表示;
第一级流表有且只有一个,负责匹配IPv4源地址,实现对发送网卡的区分,其流表项的个数等于通信双方使用的网卡总数目;其指令goto字段的值为tableA,即第二级流表;
第二级流表负责匹配域IPv4目的地址,实现对接收网卡的区分,其流表项的个数等于通信双方使用的网卡总数目,其指令goto字段的值为tableB,即第三级流表;
第三级流表负责匹配TCP目的端口,其指令goto字段的值为tableC,即第四级流表;
第四级流表负责匹配TCP源端口,其指令output字段的值为相应交换机上的端口号。
所述步骤(7)的具体内容包括如下操作子步骤:
(71)所述的SDN控制器从收到的Packet_in消息中解析出SYN报文,从中提取源IP地址和目的IP地址,与当前维护的MPTCP连接的网卡信息进行匹配,如果匹配成功,则转步骤(72),否则对其进行普通路径选择,即为其选择出最佳的一条路径,进行单路径传输;
(72)所述的SDN控制器根据源IP地址和目的IP地址,判断在其所计算出的L条最优的独立路径中是否还有可以铺设的路径,没有则停止,有则从Packet_in消息中提取流表号table_id,并根据该流表号table_id判断是第几级流表提交的信息,如果是第一级流表提交的信息则转步骤(73)、如果是第二级流表提交的信息则转步骤(74)、如果是第三级流表提交的信息则转步骤(75)、如果是第四级流表提交的信息则转步骤(76);所述的流表号table_id是指第二级流表tableA、第三级流表tableB和第四级流表tableC的具体编号;
(73)所述的SDN控制器产生新的第二、三、四级流表的流表号table_id,记录下来;然后向所述的提交信息的第一级流表下发指向新的第二级流表的流表项,并向新的第二、三、四级流表下发流表项,转步骤(77);
(74)所述的SDN控制器产生新的第三、四级流表的流表号table_id,记录下来;然后向所述的提交信息的第二级流表下发指向新的第三级流表的流表项,并向新的第三、四级流表下发流表项,转步骤(77);
(75)所述的SDN控制器产生新的第四级流表的流表号table_id,记录下来;然后向所述的提交信息的第三级流表下发指向新的第四级流表的流表项,并向新的第四级流表下发流表项,转步骤(77);
(76)所述的SDN控制器向所述的提交信息的第四级流表下发流表项,转步骤(77);
(77)所述的SDN向所述的独立路径P上相关的openflow协议交换机下发进行转发的流表项。
所述步骤(8)中openflow协议交换机删除流表项的过程如下:当所述的流表项的计时器timeout字段超过一定时间,如果没有数据包流过该流表项,则该流表项会被自动删除。
本发明的有益效果在于:在获取到网络边缘侧主机的网卡ip信息、获取到整个网络的完整拓扑信息以及获取到整个网络中每一条链路的实时带宽时延等信息后,SDN控制器能够更全面的感知到整个网络的使用情况,以此为基础在SDN网络环境中应用多路径传输协议,为通信双方建立最优的路径,实现了通信双方多路径最优数据传输。
附图说明
图1是本发明提出的一种基于软件定义网络的多路径传输方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
参见图1,介绍本发明提出的一种基于软件定义网络的多路径传输方法,所述方法包括下列操作步骤:
(1)软件定义网络SDN的控制器通过定期主动探测获得所述的软件定义网络的拓扑结构图、每条链路的时延和每条链路的带宽;
步骤(1)的具体探测方法可以参见本发明申请人的另一件中国发明专利申请,发明名称为:一种用于软件定义网络SDN的网络信息探测的方法;
(2)主机A与主机B通过所述的软件定义网络在SDN控制器的控制下,采用MPTCP协议三次握手的方式建立主连接,即第一次连接;
(3)主机A与主机B通过发送重复应答Dupack报文的方式,告知对方以及SDN控制器自己的附加网卡地址信息,所述的重复应答Dupack报文包含添加地址选项MP_Addaddress;
步骤(3)的具体操作方法可以参见本发明申请人的另一件中国发明专利申请,发明名称为:一种基于软件定义网络的主机网卡IP地址获取方法;
(4)所述的SDN控制器计算出主机A与主机B之间的独立路径,主机A与主机B之间最多可以计算出N*M*num_flows条独立路径,其中N为主机A的网卡数目,M为主机B的网卡数目,num_flows为所设定的每对网卡之间最多能建立的子连接数目;所述的SDN控制器选出前L条最优的独立路径,并告知主机A,告知信息包括主机A和主机B每对网卡间的连接数;L为大于1的自然数;
例如:设N=2,M=3,num_flows=5,则主机A与主机B之间最多可以计算出2*3*5=30条独立路径,如果设定L=10,则所述的SDN控制器选出前10条最优的独立路径,并告知主机A。
(5)主机A根据被告知的信息向主机B发送L条含有MP_Join选项的SYN报文;
(6)所述的SYN报文与主机A的接入侧openflow协议交换机A的流表失去匹配,于是该openflow协议交换机A通过Packet_in消息,将该SYN报文发送给所述的软件定义网络SDN的控制器;
(7)所述的SDN控制器收到该Packet_in消息后,解析出所述的SYN报文,根据SYN报文中的网卡信息从所述的L条独立路径中选择与所述网卡信息对应的独立路径P,生成该独立路径P的流表,并向该独立路径P上相关的openflow协议交换机下发流表;
(8)主机A与主机B在所述的独立路径P上建立子连接即子流进行数据传输;在设定的时间周期内,如果该独立路径P上相关的openflow协议交换机在该独立路径P所对应的流表项上没有数据传输,则将该流表项删除,并将该流表项删除事件告知所述的SDN控制器;当所述的独立路径P上相关的所有openflow协议交换机在该独立路径P所对应的流表项都被删除后,所述的SDN控制器将所述的独立路径P删除;
(9)主机A按照设定的数据包调度原则,把数据包分发到与主机B已建立的多条独立路径上;所述的设定的数据包调度原则是使得所要发送的数据整体上最快到达接收端,即主机B。
所述步骤(4)中SDN控制器计算出主机A与主机B之间的独立路径的具体内容是:
所述的SDN控制器获取到主机A和主机B的所有附加网卡的IP地址信息之后,根据该地址信息确定所述的附加网卡的接入侧交换机;SDN控制器在获得的所述的SDN的拓扑结构图中将所述的交换机标注出来,在所述的拓扑结构图中添加代表发送端的源点,添加代表接收端的汇点,然后在源点和发送端的所有的网卡的接入侧交换机之间添加连接,同样在汇点和接收端的所有的网卡的接入侧交换机之间添加连接,这样就得到了用来计算链路不相关的独立路径的路径计算结构图;
发送端和接收端都具有多张网卡,相当于多个0-1流问题的叠加(“0-1流问题”请参见https://en.wikipedia.org/wiki/Knapsack_problem),依据前面所述的路径计算结构图,设源点-交换机链路中可通过的流量是Q,同样汇点-交换机链路中可通过的流量也是Q,其中Q是远大于1的整数(例如Q=100M),设交换机-交换机链路中可通过的流量是1,于是计算所述的主机A与主机B之间的链路不相关的路径就简化成了无向图最大流问题,可通过Dinic算法进行求解(“Dinic算法”请参见https://en.wikipedia.org/wiki/Dinic%27s_algorithm)。
所述步骤(7)中所述的SDN控制器生成的独立路径P的流表的具体格式如下:
流表共分为四级,每一级流表由多条流表项组成,每个流表项都是一个六元组,即由六个字段组成,分别是:匹配域字段、优先级字段、计数器Counter字段、指令字段、计时器timeout字段和Cookies字段;
其中,匹配域字段主要用来匹配包,由以太网类型、IP协议号、IPv4源地址、IPv4目的地址、TCP源端口和TCP目的端口六个参数中的部分组合而成,具体为:第一级流表的匹配域字段由以太网类型和IPv4源地址组成,第二级流表的匹配域字段由以太网类型和IPv4目的地址组成,第三级流表的匹配域字段由IP协议号和TCP目的端口组成,第四级流表的匹配域字段由IP协议号和TCP源端口组成;
优先级字段规定了每条流表项的优先级,优先级高的流表项优先匹配包;
计数器Counter字段主要用来统计该流表项匹配过的数据包的个数;
指令字段分为goto和output两种指令类型,goto指令类型用于第一级、第二级和第三级流表,用来指向下一级流表,output指令类型用于第四级流表,用来指定输出的交换机端口;
计时器timeout字段分为idle_timeout和hard_timeout两种计时器类型,idle_timeout计时器类型规定空闲多长时间后该流表项失效,hard_timeout计时器规定流表项总的驻留时间;
Cookie字段主要是可以让控制器区分出不同的流表项;
第二级流表用tableA表示,第三级流表用tableB表示,第四级流表用tableC表示;
第一级流表有且只有一个,负责匹配IPv4源地址,实现对发送网卡的区分,其流表项的个数等于通信双方使用的网卡总数目;其指令goto字段的值为tableA,即第二级流表;
第二级流表负责匹配域IPv4目的地址,实现对接收网卡的区分,其流表项的个数等于通信双方使用的网卡总数目,其指令goto字段的值为tableB,即第三级流表;
第三级流表负责匹配TCP目的端口,其指令goto字段的值为tableC,即第四级流表;
第四级流表负责匹配TCP源端口,其指令output字段的值为相应交换机上的端口号。
举例如下:
例如存在一条建立在主机10.0.0.1和主机10.0.0.2之间的路径(源IP地址为10.0.0.1,源端口号为49407,目的IP地址为10.0.0.2,目的端口号为5001,以太网类型为0x0800),则对应的各级流表项如下所示:
一级流表项为:
匹配域字段(以太网类型0x0800、IPv4源地址10.0.0.1)
优先级字段(可选)
计数器Counter字段
指令goto字段(goto tableA)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
二级流表项(在流表tableA中)为:
匹配域字段(以太网类型0x0800、IPv4目的地址10.0.0.2)
优先级字段(可选)
计数器Counter字段
指令goto字段(goto tableB)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
三级流表项(在流表tableB中)为:
匹配域(IP协议号6、TCP目的端口5001)
优先级字段(可选)
计数器Counter字段
指令goto字段(goto tableC)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
四级流表项(在流表tableC中)为:
匹配域(IP协议号6、TCP源端口49407)
优先级字段(可选)
计数器Counter字段
指令output字段(n,n为具体的openflow交换机上的端口号)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
所述步骤(7)的具体内容包括如下操作子步骤:
(71)所述的SDN控制器从收到的Packet_in消息中解析出SYN报文,从中提取源IP地址和目的IP地址,与当前维护的MPTCP连接的网卡信息进行匹配,如果匹配成功,则转步骤(72),否则对其进行普通路径选择,即为其选择出最佳的一条路径,进行单路径传输;
(72)所述的SDN控制器根据源IP地址和目的IP地址,判断在其所计算出的L条最优的独立路径中是否还有可以铺设的路径,没有则停止,有则从Packet_in消息中提取流表号table_id,并根据该流表号table_id判断是第几级流表提交的信息,如果是第一级流表提交的信息则转步骤(73)、如果是第二级流表提交的信息则转步骤(74)、如果是第三级流表提交的信息则转步骤(75)、如果是第四级流表提交的信息则转步骤(76);所述的流表号table_id是指二级流表tableA、三级流表tableB和四级流表tableC的具体编号;
(73)所述的SDN控制器产生新的第二、三、四级流表的流表号table_id,记录下来;然后向所述的提交信息的第一级流表下发指向新的第二级流表的流表项,并向新的第二、三、四级流表下发流表项,转步骤(77);
举例如下:
例如:将要建立的路径是启用源端的一张新网卡,源IP地址不会与第一级流表中的流表项相匹配;具体如下:一条建立在10.0.1.1和10.0.0.2之间的路径,源IP地址为10.0.1.1,源端口号为48357,目的IP地址为10.0.0.2,目的端口号为5001;则对应的各级流表项如下所示:
一级流表项为:
匹配域字段(以太网类型0x0800、IPv4源地址10.0.1.1)
优先级字段(可选)
计数器Counter字段
指令goto字段(goto tableA1,tableA1表示所指向的第二级流表的具体流表号table_id)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
二级流表项(在流表tableA1中)为:
匹配域字段(以太网类型0x0800、IPv4目的地址10.0.0.2)
优先级字段(可选)
计数器Counter字段
指令goto字段(goto tableB1,tableB1表示所指向的第三级流表的具体流表号table_id)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
三级流表项(在流表tableB1中)为:
匹配域(IP协议号6、TCP目的端口5001)
优先级字段(可选)
计数器Counter字段
指令goto字段(goto tableC1,tableC1表示所指向的第四级流表的具体流表号table_id)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
四级流表项(在流表tableC1中)为:
匹配域(IP协议号6、TCP源端口48357)
优先级字段(可选)
计数器Counter字段
指令output字段(n,n为具体的openflow交换机上的端口号)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
(74)所述的SDN控制器产生新的第三、四级流表的流表号table_id,记录下来;然后向所述的提交信息的第二级流表下发指向新的第三级流表的流表项,并向新的第三、四级流表下发流表项,转步骤(77);
举例如下:
例如:将要建立的路径是启用目的端的一张新网卡,目的端IP地址不会与第二级流表中的流表项相匹配;具体如下:一条建立在10.0.0.1和10.0.1.2之间的路径,源IP地址为10.0.0.1,源端口号为47296,目的IP地址为10.0.1.2,目的端口号为5001;则对应各级流表项如下所示:
二级流表项为:
匹配域字段(以太网类型0x0800、IPv4目的地址10.0.1.2)
优先级字段(可选)
计数器Counter字段
指令goto字段(goto tableB2,tableB2表示所指向的第三级流表的具体流表号table_id)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
三级流表项(在流表tableB2中)为:
匹配域(IP协议号6、TCP目的端口5001)
优先级字段(可选)
计数器Counter字段
指令goto字段(goto tableC2,tableC2表示所指向的第四级流表的具体流表号table_id)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
四级流表项(在流表tableC2中)为:
匹配域(IP协议号6、TCP源端口47296)
优先级字段(可选)
计数器Counter字段
指令output字段(n,n为具体的openflow交换机上的端口号)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
(75)所述的SDN控制器产生新的第四级流表的流表号table_id,记录下来;然后向所述的提交信息的第三级流表下发指向新的第四级流表的流表项,并向新的第四级流表下发流表项,转步骤(77);
举例如下:
例如:将要建立的路径是一对已启用网卡之间的新业务,TCP目的端口不会与第三级流表中的流表项相匹配;具体如下:一条建立在10.0.0.1和10.0.0.2之间的路径,源IP地址为10.0.0.1,源端口号为43728,目的IP地址为10.0.0.2,目的端口号为45378;则对应各级流表项如下所示:
三级流表项为:
匹配域(IP协议号6、TCP目的端口45378)
优先级字段(可选)
计数器Counter字段
指令goto字段(goto tableC3,tableC3表示所指向的第四级流表的具体流表号table_id)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
四级流表项(在流表tableC3中)为:
匹配域(IP协议号6、TCP源端口43728);
优先级字段(可选)
计数器Counter字段
指令output字段(n,n为具体的openflow交换机上的端口号)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
(76)所述的SDN控制器向所述的提交信息的第四级流表下发流表项,转步骤(77);
举例如下:
例如:将要建立的路径是一对已启用网卡之间的新连接,TCP源端口不会与第四级流表中的流表项相匹配;具体实例如下:一条建立在0.0.0.1和10.0.0.2之间的路径,源IP地址为10.0.0.1,源端口号为45396,目的IP地址为10.0.0.2,目的端口号为5001;则对应四级流表项为:匹配域(IP协议号6、TCP源端口45396),output n(n为具体的openflow交换机上的端口号);
四级流表项为:
匹配域(IP协议号6、TCP源端口45396)
优先级字段(可选)
计数器Counter字段
指令output字段(n,n为具体的openflow交换机上的端口号)
计时器timeout字段(可选,例如idle_timeout=15)
Cookies字段(可选)
(77)所述的SDN向所述的独立路径P上相关的openflow协议交换机下发进行转发的流表项。
所述步骤(8)中openflow协议交换机删除流表项的过程如下:当所述的流表项的计时器timeout字段超过一定时间(例如15秒),如果没有数据包流过该流表项,则该流表项会被自动删除。
发明人对本发明的方法在试验网上进行了测试,经过大量的实验和仿真,获得了满意的实验结果,证实本发明是可行且非常有效的。
Claims (5)
1.一种基于软件定义网络的多路径传输方法,其特征在于:所述方法包括下列操作步骤:
(1)软件定义网络SDN的控制器通过定期主动探测获得所述的软件定义网络的拓扑结构图、每条链路的时延和每条链路的带宽;
(2)主机A与主机B通过所述的软件定义网络在SDN控制器的控制下,采用MPTCP协议三次握手的方式建立主连接,即第一次连接;
(3)主机A与主机B通过发送重复应答Dupack报文的方式,告知对方以及SDN控制器自己的附加网卡地址信息,所述的重复应答Dupack报文包含添加地址选项MP_Addaddress;
(4)所述的SDN控制器计算出主机A与主机B之间的独立路径,主机A与主机B之间最多可以计算出N*M*num_flows条独立路径,其中N为主机A的网卡数目,M为主机B的网卡数目,num_flows为所设定的每对网卡之间最多能建立的子连接数目;所述的SDN控制器选出前L条最优的独立路径,并告知主机A,告知信息包括主机A和主机B每对网卡间的连接数;L为大于1的自然数;
(5)主机A根据被告知的信息向主机B发送L条含有MP_Join选项的SYN报文;
(6)所述的SYN报文与主机A的接入侧openflow协议交换机A的流表失去匹配,于是该openflow协议交换机A通过Packet_in消息,将该SYN报文发送给所述的软件定义网络SDN的控制器;
(7)所述的SDN控制器收到该Packet_in消息后,解析出所述的SYN报文,根据SYN报文中的网卡信息从所述的L条独立路径中选择与所述网卡信息对应的独立路径P,生成该独立路径P的流表,并向该独立路径P上相关的openflow协议交换机下发流表;
(8)主机A与主机B在所述的独立路径P上建立子连接即子流进行数据传输;在设定的时间周期内,如果该独立路径P上相关的openflow协议交换机在该独立路径P所对应的流表项上没有数据传输,则将该流表项删除,并将该流表项删除事件告知所述的SDN控制器;当所述的独立路径P上相关的所有openflow协议交换机在该独立路径P所对应的流表项都被删除后,所述的SDN控制器将所述的独立路径P删除;
(9)主机A按照设定的数据包调度原则,把数据包分发到与主机B已建立的多条独立路径上;所述的设定的数据包调度原则是使得所要发送的数据整体上最快到达接收端,即主机B。
2.根据权利要求1所述的一种基于软件定义网络的多路径传输方法,其特征在于:所述步骤(4)中SDN控制器计算出主机A与主机B之间的独立路径的具体内容是:
所述的SDN控制器获取到主机A和主机B的所有附加网卡的IP地址信息之后,根据该地址信息确定所述的附加网卡的接入侧交换机;SDN控制器在获得的所述的SDN的拓扑结构图中将所述的交换机标注出来,在所述的拓扑结构图中添加代表发送端的源点,添加代表接收端的汇点,然后在源点和发送端的所有的网卡的接入侧交换机之间添加连接,同样在汇点和接收端的所有的网卡的接入侧交换机之间添加连接,这样就得到了用来计算链路不相关的独立路径的路径计算结构图;
发送端和接收端都具有多张网卡,相当于多个0-1流问题的叠加,依据前面所述的路径计算结构图,设源点-交换机链路中可通过的流量是Q,同样汇点-交换机链路中可通过的流量也是Q,其中Q是远大于1的整数,设交换机-交换机链路中可通过的流量是1,于是计算所述的主机A与主机B之间的链路不相关的路径就简化成了无向图最大流问题,可通过Dinic算法进行求解。
3.根据权利要求1所述的一种基于软件定义网络的多路径传输方法,其特征在于:所述步骤(7)中所述的SDN控制器生成的独立路径P的流表的具体格式如下:
流表共分为四级,每一级流表由多条流表项组成,每个流表项都是一个六元组,即由六个字段组成,分别是:匹配域字段、优先级字段、计数器Counter字段、指令字段、计时器timeout字段和Cookies字段;
其中,匹配域字段主要用来匹配包,由以太网类型、IP协议号、IPv4源地址、IPv4目的地址、TCP源端口和TCP目的端口六个参数中的部分组合而成,具体为:第一级流表的匹配域字段由以太网类型和IPv4源地址组成,第二级流表的匹配域字段由以太网类型和IPv4目的地址组成,第三级流表的匹配域字段由IP协议号和TCP目的端口组成,第四级流表的匹配域字段由IP协议号和TCP源端口组成;
优先级字段规定了每条流表项的优先级,优先级高的流表项优先匹配包;
计数器Counter字段主要用来统计该流表项匹配过的数据包的个数;
指令字段分为goto和output两种指令类型,goto指令类型用于第一级、第二级和第三级流表,用来指向下一级流表,output指令类型用于第四级流表,用来指定输出的交换机端口;
计时器timeout字段分为idle_timeout和hard_timeout两种计时器类型,idle_timeout计时器类型规定空闲多长时间后该流表项失效,hard_timeout计时器规定流表项总的驻留时间;
Cookie字段主要是可以让控制器区分出不同的流表项;
第二级流表用tableA表示,第三级流表用tableB表示,第四级流表用tableC表示;
第一级流表有且只有一个,负责匹配IPv4源地址,实现对发送网卡的区分,其流表项的个数等于通信双方使用的网卡总数目;其指令goto字段的值为tableA,即第二级流表;
第二级流表负责匹配域IPv4目的地址,实现对接收网卡的区分,其流表项的个数等于通信双方使用的网卡总数目,其指令goto字段的值为tableB,即第三级流表;
第三级流表负责匹配TCP目的端口,其指令goto字段的值为tableC,即第四级流表;
第四级流表负责匹配TCP源端口,其指令output字段的值为相应交换机上的端口号。
4.根据权利要求1所述的一种基于软件定义网络的多路径传输方法,其特征在于:所述步骤(7)的具体内容包括如下操作子步骤:
(71)所述的SDN控制器从收到的Packet_in消息中解析出SYN报文,从中提取源IP地址和目的IP地址,与当前维护的MPTCP连接的网卡信息进行匹配,如果匹配成功,则转步骤(72),否则对其进行普通路径选择,即为其选择出最佳的一条路径,进行单路径传输;
(72)所述的SDN控制器根据源IP地址和目的IP地址,判断在其所计算出的L条最优的独立路径中是否还有可以铺设的路径,没有则停止,有则从Packet_in消息中提取流表号table_id,并根据该流表号table_id判断是第几级流表提交的信息,如果是第一级流表提交的信息则转步骤(73)、如果是第二级流表提交的信息则转步骤(74)、如果是第三级流表提交的信息则转步骤(75)、如果是第四级流表提交的信息则转步骤(76);所述的流表号table_id是指第二级流表tableA、第三级流表tableB和第四级流表tableC的具体编号;
(73)所述的SDN控制器产生新的第二、三、四级流表的流表号table_id,记录下来;然后向所述的提交信息的第一级流表下发指向新的第二级流表的流表项,并向新的第二、三、四级流表下发流表项,转步骤(77);
(74)所述的SDN控制器产生新的第三、四级流表的流表号table_id,记录下来;然后向所述的提交信息的第二级流表下发指向新的第三级流表的流表项,并向新的第三、四级流表下发流表项,转步骤(77);
(75)所述的SDN控制器产生新的第四级流表的流表号table_id,记录下来;然后向所述的提交信息的第三级流表下发指向新的第四级流表的流表项,并向新的第四级流表下发流表项,转步骤(77);
(76)所述的SDN控制器向所述的提交信息的第四级流表下发流表项,转步骤(77);
(77)所述的SDN向所述的独立路径P上相关的openflow协议交换机下发进行转发的流表项。
5.根据权利要求1或3所述的一种基于软件定义网络的多路径传输方法,其特征在于:所述步骤(8)中openflow协议交换机删除流表项的过程如下:当所述的流表项的计时器timeout字段超过一定时间,如果没有数据包流过该流表项,则该流表项会被自动删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510818810.2A CN105337857B (zh) | 2015-11-23 | 2015-11-23 | 一种基于软件定义网络的多路径传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510818810.2A CN105337857B (zh) | 2015-11-23 | 2015-11-23 | 一种基于软件定义网络的多路径传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105337857A CN105337857A (zh) | 2016-02-17 |
CN105337857B true CN105337857B (zh) | 2018-05-25 |
Family
ID=55288164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510818810.2A Active CN105337857B (zh) | 2015-11-23 | 2015-11-23 | 一种基于软件定义网络的多路径传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105337857B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106559330B (zh) * | 2016-01-22 | 2020-06-16 | 国网智能电网研究院 | 一种基于sdn的动态路径规划方法 |
CN105827527B (zh) * | 2016-03-14 | 2019-04-02 | 清华大学 | Sdn网络mptcp子流共享瓶颈路径的发现调整方法 |
CN107204924B (zh) | 2016-03-18 | 2020-09-25 | 华为技术有限公司 | 链路发现方法及装置 |
CN107231662B (zh) | 2016-03-25 | 2020-11-10 | 华为技术有限公司 | 一种sdn网络中多流传输的方法和设备 |
CN105933227B (zh) * | 2016-06-29 | 2019-01-22 | 中国电子科技集团公司第五十四研究所 | 软件定义卫星网络中的路由决策及流表一致性优化的方法 |
CN106301921B (zh) * | 2016-08-16 | 2019-05-14 | 清华大学 | 基于隧道的大象流量传输调度方法及*** |
CN106302021B (zh) * | 2016-08-18 | 2020-03-31 | 清华大学深圳研究生院 | 一种网络流转发异常检测方法 |
US10091097B2 (en) * | 2016-10-27 | 2018-10-02 | Nanning Fugui Precision Industrial Co., Ltd. | Transmission path optimization method and software-defined networking controller using the method |
CN108011822A (zh) * | 2016-10-31 | 2018-05-08 | 南宁富桂精密工业有限公司 | 多媒体数据流传输优化方法及sdn控制器 |
CN108574615B (zh) * | 2017-03-13 | 2021-02-12 | 华为软件技术有限公司 | 一种基于多路径mptcp的内容传输方法、设备及*** |
CN109417513B (zh) * | 2017-03-24 | 2021-09-14 | 华为技术有限公司 | 软件定义网络中动态检测对端的***和方法 |
CN109842574B (zh) | 2017-11-28 | 2020-07-17 | 中国科学院声学研究所 | 一种基于可编程网络技术的多宿主网络路由转发方法 |
CN108199970B (zh) * | 2017-12-15 | 2020-08-04 | 浙江大学 | 一种软件定义网络中数据包路径重构方法 |
CN108512766B (zh) * | 2018-03-26 | 2020-09-11 | 南京邮电大学 | 一种OpenFlow交换机流表调节方法 |
CN108989219B (zh) * | 2018-07-11 | 2021-09-28 | 中国人民解放军陆军工程大学 | 一种基于多级流表的多优先级路由转发***及方法 |
CN109257282B (zh) * | 2018-08-09 | 2020-07-14 | 北京邮电大学 | 一种数据传输方法及装置 |
CN109067758B (zh) * | 2018-08-23 | 2020-07-10 | 江苏大学 | 一种基于多路径的sdn网络数据传输隐私保护***及其方法 |
CN110417653A (zh) * | 2019-07-29 | 2019-11-05 | 迈普通信技术股份有限公司 | 报文转发方法、装置及报文转发控制方法、装置 |
CN112968843B (zh) * | 2021-02-03 | 2023-02-28 | 长春理工大学 | 基于sdn的多路径传输控制***及方法 |
CN117439953B (zh) * | 2023-12-20 | 2024-03-26 | 珠海星云智联科技有限公司 | 等价成本多路径选择***、方法、设备、集群以及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746892A (zh) * | 2013-11-27 | 2014-04-23 | 北京邮电大学 | 一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法 |
CN104579968A (zh) * | 2013-10-26 | 2015-04-29 | 华为技术有限公司 | Sdn交换机获取精确流表项方法及sdn交换机、控制器、*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9118571B2 (en) * | 2013-07-08 | 2015-08-25 | Telefonaktiebolaget L M Ericsson (Publ) | Methods of operating load balancing switches and controllers using matching patterns with unrestricted characters |
-
2015
- 2015-11-23 CN CN201510818810.2A patent/CN105337857B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104579968A (zh) * | 2013-10-26 | 2015-04-29 | 华为技术有限公司 | Sdn交换机获取精确流表项方法及sdn交换机、控制器、*** |
CN103746892A (zh) * | 2013-11-27 | 2014-04-23 | 北京邮电大学 | 一种基于OpenFlow的SDN虚拟化平台上行信令流标签处理方法 |
Non-Patent Citations (1)
Title |
---|
光与无线融合接入网多路径技术研究;孟鑫蕊;《硕士论文》;20141201;第1-53页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105337857A (zh) | 2016-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105337857B (zh) | 一种基于软件定义网络的多路径传输方法 | |
CN104518967B (zh) | 路由方法、设备和*** | |
CN104104718B (zh) | 一种基于软件定义网络的用户自主路由定制***和方法 | |
Lin et al. | A west-east bridge based SDN inter-domain testbed | |
US9596173B2 (en) | Method and system for traffic pattern generation in a software-defined networking (SDN) system | |
CN106789542B (zh) | 一种云数据中心安全服务链的实现方法 | |
CN104270298B (zh) | 一种vxlan网络中的报文转发方法及装置 | |
CN105376154B (zh) | 渐进式mac地址学习 | |
CN104243270B (zh) | 一种建立隧道的方法和装置 | |
CN105634956B (zh) | 一种报文转发方法、装置和*** | |
WO2012060316A1 (ja) | 通信システム、制御装置、パケット転送経路の制御方法およびプログラム | |
CN105357046A (zh) | 一种用于软件定义网络sdn的网络信息探测的方法 | |
CN103152284B (zh) | 一种路由器多径输出智能负载均衡的方法及路由器 | |
US20130266017A1 (en) | Communication system, control apparatus, communication method, and program | |
EP2876844A1 (en) | Self-debugging router platform | |
CN108809847A (zh) | 实现负载均衡的方法、装置和网络*** | |
CN107370673A (zh) | 一种网络中建立转发路径的方法、控制器及*** | |
CN104579894B (zh) | 分布式虚拟交换机***的IGMP Snooping实现方法及装置 | |
CN109067758A (zh) | 一种基于多路径的sdn网络数据传输隐私保护***及其方法 | |
Ochoa-Aday et al. | ETDP: Enhanced topology discovery protocol for software-defined networks | |
CN102694732B (zh) | 一种基于局部虚拟化的虚拟网构建方法和*** | |
CN106817299A (zh) | 软件定义网络的表项生成方法和装置以及报文转发方法 | |
JP5644948B2 (ja) | パケット転送システム、制御装置、パケット転送方法およびプログラム | |
Hussein et al. | SDN for MPTCP: An enhanced architecture for large data transfers in datacenters | |
CN105262682B (zh) | 一种用于电力数据通信的软件定义网络***及其流量疏导方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |