CN107005470A - 用于创建数据分组的子流的方法 - Google Patents

用于创建数据分组的子流的方法 Download PDF

Info

Publication number
CN107005470A
CN107005470A CN201580067294.2A CN201580067294A CN107005470A CN 107005470 A CN107005470 A CN 107005470A CN 201580067294 A CN201580067294 A CN 201580067294A CN 107005470 A CN107005470 A CN 107005470A
Authority
CN
China
Prior art keywords
packet
header
subflow
mptcp
source
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
Application number
CN201580067294.2A
Other languages
English (en)
Other versions
CN107005470B (zh
Inventor
A·罗克雷
M·拉拉姆
N·万凯肯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sagemcom Broadband SAS
Original Assignee
Sagemcom Broadband SAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sagemcom Broadband SAS filed Critical Sagemcom Broadband SAS
Publication of CN107005470A publication Critical patent/CN107005470A/zh
Application granted granted Critical
Publication of CN107005470B publication Critical patent/CN107005470B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种用于使用适于多路径通信模式的传输协议来创建补充子流作为多路径网络连接中存在的子流的补充的方法。所述多路径网络连接在包括源的网络中实现,所述源使用所述多路径网络连接用于经由中间网络组件与接收器通信。在打开所述中间网络组件和所述接收器之间的中间通信路径之后,所述中间网络组件实现以下步骤:获得(502)意图用于所述源的分组;创建(501)表示创建所述补充数据分组子流的请求的报头,所述补充数据分组子流意图使用所述中间通信链路;将所述报头插入(502)所述分组中;以及将所述分组发送(502)到所述源,以致使所述源开始用于创建所述补充数据分组子流的过程。

Description

用于创建数据分组的子流的方法
本发明涉及用于使用适于多路径通信模式的传输协议来创建补充数据分组的子流作为网络连接中的数据分组的现有子流的补充的方法和装置。
近几十年来,通信网络的应用快速增加,首先是有线网络的应用快速增加,接着最近是无线网络的应用快速增加。很快,它们自己就感受到需要进行可靠通信。在九十年代初,提出了确保传送可靠性的传送协议。该协议(被称为TCP(RFC-793,传输控制协议))提出了许多可靠性机制。在这些可靠性机制之中,存在使用同一通信网络提供各种应用之间的合理带宽共享的拥堵控制机制和确保可靠传输所发送的每个数据的误差控制机制。以有序的一系列分组的形式发送数据,所发送的数据的无序接收被误差控制机制识别为传送误差,每个传送误差致使拥堵控制机制的反应,从而通常导致数据传送速率减小。TCP协议大范围遍布于网络,以致于该协议现在被视为是确保通信网络的全局稳定性所必需的。
在定义TCP协议时,考虑在其创建时存在的应用。TCP协议因此既没有考虑到移动设备上新近出现的通信应用,也没有考虑以下事实:所述相同设备可按照多路径通信模式在多个通信路径(诸如,有线链路(以太网,IEEE1394)和/或无线链路(Wi-Fi、3G、4G、Bluetooth))上同时通信,每个路径都与其特定的IP地址(RFC 791:互联网协议)关联。TCP协议机制的可靠性不适于多路径通信模式,因为多个路径上的该通信模式可致使无序接收分组,这将被TCP可靠性机制错误地解释为传送误差。
近来,指定使通信设备得益于多路径通信模式的新协议。被称为MPTCP(RFC-6824,多路径TCP)的该协议可被视为TCP协议的发展。在定义MPTCP协议时,考虑两个主要要求:与应用的兼容性和与网络的兼容性。
应用的兼容性意指,用TCP协议起作用的应用必须能够在不进行修改的情况下用MPTCP协议起作用。
与网络的兼容性意指,MPTCP协议必须能够在TCP所作用于的任何网络路径上起作用。多个网络路径包括诸如网络地址翻译器(NAT)、防火墙、代理、网关等的中间网络组件(INC)(“中间件(middlebox)”)。INC可处于LAN(局域网)型的局域网中或WAN(广域网)型的扩展网络中。不同于路由器,当TCP业务经过INC时,INC能够识别TCP业务。这个认知使INC能够向TCP业务应用诸如硬件加速器通常所使用的加速处理或传输机制的特定处理操作。MPTCP协议必须能够受益于与TCP协议相同的加速处理或传输机制。
MPTCP协议受到某些限制。例如,MPTCP协议的一种特性是,它要求第一网络单元和第二网络单元,将在下文中将第一网络单元称为“源”,将在下文中将第二网络单元称为“接收器”,源和接收器与同一连接关联,均支持MPTCP协议。例如,当实现MPTCP协议的源想要与不知晓MPTCP协议而例如仅知晓TCP协议的接收器通信时,此约束可能限制MPTCP协议的使用。
此外,当连接源和接收器的网络由从头到尾平行的多个路径组成时,MPTCP协议特别适用。当连接源和接收器的网络的一部分由单个路径组成时,MPTCP协议的效率不太高。
已经提出了用于克服以上约束的各种解决方案。例如,当与MPTCP协议兼容的、连接源和接收器的网络的至少一部分由单个路径组成时,第一解决方案包括在单个路径组成的网络的所述一部分上将MPTCP连接的TCP子流(在下文中被称为“MPTCP子流”)封装在单个流中。然后,用诸如TCP的单路径传输协议来管理单个流,封装在该单个流中的MPTCP子流被视为单个流的数据。该第一解决方案通常被视为在计算方面昂贵,而且在存储器使用方面也昂贵。这是因为,它要求首先封装每个MPTCP子流的每个分组,其次存储所有封装的MPTCP子流的每个分组,只要封装协议的误差检查机制没有检查到事实上已经接收到分组。另外,单个流中的分组丢失通常致使封装协议的拥堵控制机制的全局反应,进而致使所有封装MPTCP子流中的发送速率降低,而分组丢失可能只影响封装MPTCP子流中的一个MPTCP子流。此外,该解决方案要求将能够进行封装的至少一个网络单元引入网络中。可能增加的是,在封装期间,能够进行封装的网络单元不使用如同传统INC一样的加速处理和传输机制。
第二解决方案允许避免源或接收器与MPTCP协议的不兼容性。该第二解决方案包括在网络中插入诸如INC的中间网络单元,该中间网络单元能够提供诸如例如MPTCP连接的多路径连接和诸如例如TCP或UDP连接的至少一个单路径连接之间的中继。能够提供MPTCP连接和至少一个TCP连接之间的中继的INC被称为术语“TCP/MPTCP中继器”。TCP/MPTCP中继器能够使TCP连接的TCP流与MPTCP流匹配,TCP连接的TCP流在下文中被简称为“TCP流”。因此,TCP/MPTCP中继器使得使用MPTCP协议的源(或分别地,接收器)(在下文中应当被称为“TPTCP源(或分别地,接收器)”)与使用TCP协议的接收器(或分别地,源)(在下文中应当被称为“TCP接收器(或分别地,源)”)通信。当TCP/MPTCP中继器接收到源自MPTCP源的MPTCP子流的分组(在下文中应当被称为“MPTCP分组”)时,中继器提取MPTCP分组中包含的数据,将它们插入TCP流的分组(在下文中应当被称为“TCP分组”)中,并且在TCP流中在TCP接收器的方向上发送TCP分组。当TCP/MPTCP中继器接收到源自TCP源的TCP分组时,中继器提取TCP分组中包含的数据,将这些数据插入MPTCP分组中,并且在MPTCP子流中在MPTCP接收器的方向上发送MPTCP分组。
该解决方案的主要不足是要求在网络中安装TCP/MPTCP中继器。另外,这些中继器不使用如同传统INC一样的处理和传输加速。
使用MPTCP协议包括三个主要阶段:
●建立连接的阶段,
●在所建立的连接的背景下传输数据分组的阶段,以及
●终止连接的阶段。
MPTCP连接的建立开始于被称为“三次握手”的过程,该过程包括顺序实现的以下步骤:
●由源在接收器的方向上发送被称为“SYN分组”的源同步分组,
●由接收器在源的方向上发送被称为“SYN/ACK分组”的接收器同步分组,该分组还提供关于源同步分组(即,SYN分组)的确认,以及
●由源在接收器的方向上发送确认目的地同步分组(即,SYN/ACK分组)的分组(被称为“ACK分组”)。
当接收器接收到ACK分组时,建立连接。在MPTCP连接的背景下发送的每个分组在MPTCP子流中被发送。由每个在连接建立阶段期间定义的连接方向的五元组(quintuplet)识别MPTCP子流。在源到接收器(或分别地,接收器到源)的方向上,该五元组包括源IP地址和接收器IP地址、源端口号、接收器端口号和接收器IP地址的标识符(或分别地,源地址的标识符)。下文中,为了进行简化,应当考虑通过包括源IP地址、接收器IP地址、源端口号、接收器端口号、接收器IP地址的标识符和源IP地址的标识符的六元组来识别MPTOP子流。应该注意,源IP地址的标识符和接收器IP地址的标识符使源和接收器能够在网络中存在网络地址翻译器NAT时找到源和接收器IP地址的值。
数据分组传输阶段使用在连接建立阶段期间定义的IP地址和端口号。该阶段完全得益于INC中的加速机制。
在终止连接的阶段期间,通过在源和接收器之间交换被称为“RST”分组的“重置”型的分组,或者更均匀地交换下文中被称为“FIN分组”的“FIN”型的分组,突然地终止连接。
然而,根据TCP协议的连接可以与仅一个数据流关联,根据MPTCP协议的连接可包括多个MPTCP子流。使用MPTCP连接的数据传输应用随后可在任何时间使用MPTCP子流中的任一个。
在多个步骤中创建包括多个MPTCP子流的MPTCP连接,这多个步骤包括创建初始子流并随后创建至少一个附加子流。
图1示意性地示出在创建包括初始MPTCP子流和附加MPTCP子流的MPTCP连接期间使用MPTCP协议的示例。该实施方式发生在包括四个INC 1002至1005的网络以及与MPTCP协议兼容的第一网络单元1001和第二网络单元1006中。网络单元1001和1006可交替地实现源或接收器的作用。下文中,集中于以下情况:网络单元1001实现源的作用,而网络单元1006实现接收器的作用。然而,下文中描述的所有方法是可逆的,并且适于网络单元1001实现源的作用而网络单元1006实现源的作用的情况。网络单元1001随后被称为源1001,而网络单元1006被称为源1006。源1001处于LAN中,被称为“源LAN”,包括源1001和INC 1002。接收器1006处于LAN中,被称为“接收器LAN”,包括接收器1006和INC 1005。这两个LAN连接到包括INC 1003和1004的WAN。在建立MPTCP连接的阶段期间,创建初始MPTCP子流。创建初始MPTCP子流使用三次握手110、111和112,在这三次握手中,SYN、SYN/ACK和ACK分组包括MP_CAPABLE型报头。从MPTCP协议的观点来看,当创建初始MPTCP子流时,报头MP_CAPABLE必须绝对地位于SYN、SYN/ACK和ACK分组中。然而,接收包含MP_CAPABLE报头的分组的TCP接收器将不能够解释MP_CAPABLE报头并且将忽略该报头。包含MP_CAPABLE报头的分组的交换首先允许确保源和接收器可实现MPTCP协议,其次创建初始子流。
在通过实现其中SYN、SYN/ACK和ACK分组包括MP_JOIN型报头的三次握手过程120、121和122来创建初始子流之后,创建附加子流。从MPTCP协议的观点来看,当创建了附加子流时,MP_JOIN报头必须绝对地处于SYN/ACK和ACK分组中。然而,接收包含MP_JOIN报头的分组的TCP接收器将不能够解释MP_JOIN报头并且将忽略该报头。
图1中的示例实施方式描述了创建单个附加MPTCP子流。可根据源和接收器上可用的IP地址的数量来创建其它附加MPTCP子流。
根据可用于MPTCP连接的传送路径的可用性,附加MPTCP子流的创建可以是动态的。
每个MPTCP子流与对于它特定的六元组关联。
为了考虑多路径背景的特殊性,已经改编了TCP误差检验和拥堵控制机制。
如上所见,MPTCP协议适于新通信路径的打开(open)或现有通信路径的关闭的动态管理。然而,这些路径必须是首尾相连的,也就是说,从源到接收器。图2A示意性地示出通过MPTCP协议管理源101和接收器108之间的通信的通信网络100的示例。通信网络100包括编号为102至107的INC型的六个节点、与MPTCP协议兼容的源101和与MPTCP兼容的接收器108。源101和节点102属于第一LAN,第一LAN被称为源LAN。接收器108和节点107属于第二LAN,第二LAN被称为接收LAN。节点103至106属于WAN。源101能够使用MPTCP连接通过四个不同路径与接收器108通信。被表示为TCPId0/0的初始MPTCP子流使用第一路径,并且被表示为TCPId1/1、TCPId2/2和TCPId3/3的三个附加MPTCP子流使用剩余三个路径。在符号TCPIdi/j中,下标i/j指示MPTCP子流使用源地址标识符(地址ID)i和接收器地址标识符j。
诸如例如MPTCP协议的适于多路径通信模式的传输协议不能管理网络中的新中间通信路径的打开,新中间通信路径被定义为INC和接收器之间的或两个INC之间的路径。
图2B重复关于图2A描述的通信网络100,并且例示了对当前定义的MPTCP协议的某些限制。在图2B中,WAN型的新中间路径109在MPTCP连接期间打开。MPTCP协议不允许在MPTCP连接期间检测中间路径的打开,甚至也不允许使用该新路径。因此,打开中间路径109(这有可能使源101能够以较高速率与接收器108通信)事实上没有带来有益效果。
本发明解决的问题由以下组成:使得使用适于多路径通信模式的传输协议来实现连接的应用能够使用在连接期间已经出现的一个或多个中间路径。
为此目的,根据第一方面,本发明涉及一种用于使用适于多路径通信模式的传输协议来创建补充数据分组子流作为网络连接中的现有数据分组子流的补充的方法,所述网络连接被称为多路径网络连接,所述多路径网络连接在包括多个网络单元的通信网络中实现,所述多个网络单元中的第一网络单元使用连接集合,所述连接集合包括用于经由所述多个网络单元中的第三网络单元与所述多个网络单元中的第二网络单元通信的所述多路径网络连接,所述第三网络单元被称为中间网络组件。在打开从所述中间网络组件并且在所述第二网络单元的方向上的中间通信路径之后,所述中间网络组件实现以下步骤:获得意图用于所述第一或第二网络单元并且与所述传输协议兼容的分组;创建第一类型的报头,所述第一类型的报头表示创建所述补充数据分组子流的请求,所述补充数据分组子流意图在创建所述补充数据分组子流之后,在数据分组传递阶段中使用中间通信路径;将所述第一类型的所述报头插入所述分组中;在所述目的地的方向上发送所述分组,以致使由所述第一或第二网络单元发起在所述多路径网络连接的背景下创建所述补充数据分组子流的过程。
根据一个实施方式,对于在所述多路径网络连接的背景下创建的每个子流,所述中间网络组件使用所创建的子流中的至少一个向在数据分组传递阶段期间发送的每个分组应用加速处理过程,并且所述中间网络组件中断针对所创建的子流中的至少一个的加速处理过程,以允许获得其中将插入所述第一类型的报头的分组并且发送其中已经插入所述第一类型的报头的分组。
根据一个实施方式,用于创建所述补充数据分组子流的过程包括在所述多个网络单元中的两个网络单元之间实现的三次握手过程,所述三次握手过程包括:创建第一同步分组并且经由所述中间网络组件在所述第二网络单元的方向上发送第一同步分组的第一步骤;创建第二同步分组并且经由所述中间网络组件在所述第一网络单元的方向上发送所述第二同步分组的第二步骤,创建第二同步分组并且经由所述中间网络组件在所述第一网络单元的方向上发送所述第二同步分组的第二步骤,所述第二同步分组能够确认所述第一同步分组的接收;创建接收确认分组并且经由所述中间网络在所述第二网络单元的方向上发送所述接收确认分组的第三步骤;在所述三次握手过程期间交换的至少一个分组包括第二类型的报头,所述第二类型的报头包括致使在所述数据分组传递阶段期间使用所述中间通信路径的信息。
根据一个实施方式,所述第一同步分组的所述第二类型的报头由所述第一网络单元创建并且插入所述第一同步分组中。
根据一个实施方式,所述第一同步分组的所述第二类型的报头由所述中间网络组件创建并且插入所述第一同步分组中。
根据一个实施方式,在所述第二同步分组被发送到所述第一网络单元之前,由所述中间网络组件从所述第二同步分组删除所述第二同步分组的所述第二类型的报头。
根据一个实施方式,由所述中间网络组件来创建所述接收确认分组的所述第二类型的报头并且将其插入所述接收确认分组中。
根据一个实施方式,当创建所述第一类型的报头时,所述中间网络组件确定随机序列号并且将所述随机序列号插入所述第一类型的报头中,所述随机序列号被所述中间网络组件用来识别在所述三次握手过程的背景下经由所述中间网络组件在所述源和所述接收器之间交换的分组。
根据一个实施方式,当创建所述第一同步分组时,由所述中间网络组件确定的所述随机序列号值被复制到所述第二类型的报头的第一字段中,使得当所述中间网络组件后续接收到包括其值与所述随机序列号的值相等的第一字段的第一同步分组时,所述中间网络组件确定所述第一同步分组与用于创建所述补充数据分组子流的过程有关并且依此推导出必须使用所述中间通信路径来发送所述第一同步分组。
根据一个实施方式,当创建所述第一同步分组时,由所述第一网络单元定义的子流标识符归因于所述补充子流并且被插入所述第二类型的报头的第二字段中,并且在所述中间网络组件接收到包括其值与所述随机序列号的值相等的第一字段的第一同步分组时,所述中间网络组件将插入所述第二类型的报头的所述第二字段中的由所述第一网络单元定义的所述子流标识符与所述中间路径关联,使得所述第一网络单元在所述数据分组传递阶段期间发送的每个分组使用所述中间通信路径。
根据一个实施方式,当创建所述第一同步分组时,所述中间子流与所述第一网络的地址关联,所述地址已经被所述现有数据分组子流使用,所述第一网络单元的地址的标识符被插入所述第二类型的报头的第三字段中,并且当所述第一同步分组被所述中间网络组件接收时,所述中间网络组件将所述第一网络单元的地址的标识符与所述子流标识符关联。
根据一个实施方式,当创建所述第一类型的报头时,所述中间网络组件确定与属于发送路径的通信路径关联的端口号的第一集合中的第一端口号,所述发送路径用于发送所述第一类型的报头被插入其中的所述分组,并且所述中间网络组件将表示所述第一端口号的信息插入所述第一类型的报头中,所述信息表示所述中间网络组件用来识别在所述三次握手过程的背景下经由所述中间网络组件在所述源和所述接收器之间交换的分组的所述第一端口号。
根据一个实施方式,所述目的地是第一网络单元或第二网络单元,并且当所述目的地是所述第二网络单元时,所述第二网络单元实现以下步骤:创建第三类型的报头,所述第三类型的报头包括表示所述第一端口号的信息;获得意图用于所述第一网络单元的分组;将所述第一类型的所述报头插入所得到的所述分组中;以及在所述第一网络单元的方向上发送所述分组,使得所述第一网络单元使用与所述第一端口号对应的目的地端口与所述中间网络组件通信。
根据一个实施方式,所述第一同步分组被发送到与所述第一端口号对应的所述中间网络组件的端口,在与所述第一端口号对应的所述中间网络组件的所述端口上接收所述第一同步分组使所述中间网络组件能够确定所述第一同步分组与用于创建所述补充数据分组子流的过程相关并且依此推导出必须使用所述中间通信路径来发送所述第一同步分组。
根据一个实施方式,当创建插入所述第一同步分组中的所述第二类型的报头时,所述中间网络组件将表示取决于所述第一端口号的本地端口号的第一集合的信息插入所述第二类型的所述报头中,所述多个网络单元中的使所述第一同步分组经过的每个网络单元定义通过表示包括在由所述第二类型的所述报头中接收的本地端口号的集合的信息表示的端口号的集合中的本地端口号的第二集合,并且用表示所述本地端口号的所述第二集合来替换表示所述第二类型的所述报头中包含的本地端口号的集合的所述信息。
根据一个实施方式,所述接收确认分组被发送到与所述第一端口号对应的所述中间网络组件的端口,在与所述第一端口号对应的所述中间网络组件的所述端口上接收所述接收确认分组使所述中间组件能够确定所述接收确认分组与用于创建所述补充数据分组子流的过程相关并且依此推导出必须使用所述中间通信路径来发送所述接收确认分组。
根据一个实施方式,为了关闭所述补充子流,所述中间网络组件执行以下步骤:获得其目的地是所述第一或第二网络单元并且与所述传送协议兼容的数据分组;创建第四类型的报头,所述第四类型的报头表示关闭所述补充数据子流的请求,将所述第四类型的报头插入所述分组中;在所述目的地的方向上发送所述分组,以致使由所述第一或第二网络单元发起关闭所述补充数据子流的过程。
根据一个实施方式,当创建了所述第四类型的报头时,多个信息条目被插入所述第四类型的报头中,所述多个信息条目包括与所述补充数据分组子流关联的地址的标识符、与所述补充数据子流关联的子流的标识符和指示哪个网络单元必须发起用于关闭所述补充数据分组子流的过程的值,使用这多个信息条目,以关闭所述第一网络单元和所述第二网络单元处的补充子流。
根据一个实施方式,当创建了所述第四类型的报头时,多个信息条目被插入所述第四类型的报头中,所述多个信息条目包括与所述补充数据分组子流关联的地址的标识符、表示第一端口号的信息和指示哪个网络单元必须发起用于关闭所述补充数据分组子流的过程的值,使用所述多个信息条目以关闭所述第一网络单元和所述第二网络单元处的补充子流。
根据一个实施方式,所述连接的集合包括单路径连接,并且所述中间网络组件中继单路径连接的流中的多路径连接的子流或者封装单路径连接的流中的多路径连接的子流,所述三次握手过程的所述第一步骤和所述第三步骤和/或所述三次握手过程的所述第二步骤是由中间网络组件实现的。
根据本发明的第二方面,本发明涉及一种能够使用适于多路径通信模式的传输协议来创建补充数据分组子流作为网络连接中的现有数据分组子流的补充的中间网络组件类型的装置,所述网络连接被称为多路径网络连接,所述多路径网络连接在包括多个网络单元的通信网络中使用,所述多个网络单元中的第一个网络单元使用连接集合,所述连接集合包括经由所述装置与所述多个网络单元中的第二个网络单元通信的所述多路径网络连接。所述装置包括在打开从所述装置开始并且在所述第二网络单元的方向上的中间通信路径之后使用的以下装置:用于获得意图用于所述第一或第二网络单元并且与所述传输协议兼容的分组的装置;用于创建第一类型的报头的装置,所述第一类型的报头表示创建所述补充数据分组子流的请求,所述补充数据分组子流意图用于在创建所述补充数据分组子流之后,在数据分组传递阶段中使用中间通信路径;用于将所述第一类型的所述报头插入所述分组中的装置;用于在所述分组的目的地的方向上发送所述分组,以致使由所述第一或第二网络单元发起在所述多路径网络连接的背景下创建所述补充数据分组子流的过程。
根据本发明的第三方面,本发明涉及一种通信系统,所述通信系统包括根据第二方面所述的中间网络组件类型的至少一个装置和多个网络单元,所述多个网络单元包括第一网络单元和第二网络单元,所述第一网络单元和所述第二网络单元能够使用适于多路径通信模式的传输协议利用包括被称为多路径网络连接的连接的连接集合进行通信,所述第一网络单元包括在打开从所述中间网络组件类型的所述装置且在所述第二网络单元的方向上的所述中间通信路径之后使用的以下装置:用于创建第一同步分组并且经由所述中间网络组件类型的所述装置在所述第二网络单元的方向上发送第一同步分组的装置;用于创建接收确认分组并且响应于源自所述第二网络单元的第二同步分组经由所述中间网络组件类型的所述装置在所述第二网络单元的方向上发送所述接收确认分组的装置;所述第二网络单元包括在打开所述中间通信路径之后使用的以下装置:用于创建第二同步分组并且经由所述中间网络组件类型的所述装置在所述第一网络单元的方向上发送所述第二同步分组的装置,所述第二同步分组能够确认所述第一同步分组的接收;至少一个分组包括第二类型的报头,所述第二类型的报头包括致使在所述补充数据分组子流的背景下在数据分组传递阶段期间使用所述中间通信路径的信息。
根据本发明的第四方面,本发明涉及一种计算机程序产品,所述计算机程序产品包含用于由装置通过所述装置的处理器实现根据第一方面所述的方法的指令。
根据本发明的第五方面,本发明涉及一种存储装置,所述存储装置存储包含以下指令的计算机程序,当所述指令由装置的处理器执行时,由所述装置实现根据第一方面所述的方法。
通过阅读以下对示例实施方式的描述,将更清楚以上提到的本发明的特征以及其它特征,所述描述是针对附图给出的,在其中:
图1示意性地示出了当创建包括初始子流和附加子流的MPTCP连接时的MPTCP协议的实现方式的示例,
图2A示意性地示出了通过MPTCP协议来管理源和目的地之间的通信的通信网络,
图2B例示了对当前定义的MPTCP协议的某些限制,
图3示意性地描绘了能够在源、接收器或中间网络组件(INC)中实现本发明的装置,
图4示意性地例示了实现根据本发明的用于在网络中创建MPTCP子流的方法的示例,MPTCP子流包括初始MPTCP子流和附加MPTCP子流,
图5示意性地描绘了实现根据本发明的用于在网络中打开新路径之后创建补充MPTCP子流的方法以及随后实现根据本发明的用于删除所述补充MPTCP子流的方法的示例,
图6A示意性地描绘了当地址翻译器型(NAT)的INC防止创建补充MPTCP子流时在本发明的背景下实现的过程,
图6B示意性地示出了实现用于删除链接到接收器的同一IP地址的MPTCP子流的集合的过程的示例;
图7A示意性地例示了实现根据本发明的用于在网络中创建初始MPTCP子流的方法的示例,在该网络中,能够实现本发明的源与TCP接收器通信;
图7B示意性地例示了实现根据本发明的用于在网络中创建附加MPTCP子流的方法的示例,在该网络中,能够实现本发明的源与TCP接收器通信;
图8示意性地描绘了实现根据本发明的用于在网络中打开新路径之后创建补充MPTCP子流的方法以及随后实现根据本发明的用于删除所述补充MPTCP子流的方法的示例,在该网络中,能够实现本发明的源与TCP接收器通信,
图9示意性地描绘了实现根据本发明的用于在网络中创建初始MPTCP子流的方法的示例,在该网络中,能够实现MPTCP协议但不能够实现本发明的源通过实现本发明的至少一个INC与TCP接收器通信,
图10示意性地描绘了实现根据本发明的用于在网络中打开新中间路径之后创建补充MPTCP子流的方法的示例,在该网络中,能够实现MPTCP协议但不能够实现本发明的源通过实现本发明的至少一个INC与TCP接收器通信,
图11示意性地描绘了实现用于在网络中删除补充MPTCP子流的方法的示例,该方法由INC发起,在该网络中,能够实现MPTCP协议但不能够实现本发明的源通过实现本发明的至少一个INC与TCP接收器通信,
图12A示意性地描绘了实现根据本发明的用于在网络中创建初始MPTCP子流的方法的示例,在该网络中,TCP源通过实现本发明的INC与TCP接收器通信,实现本发明的INC中的两个是TCP/MPTCP中继器,
图12B示意性地描绘了实现根据本发明的用于在网络中创建附加MPTCP子流的方法的示例,在该网络中,TCP源通过实现本发明的INC与TCP接收器通信,实现本发明的INC中的两个是TCP/MPTCP中继器,
图13示意性地描绘了实现根据本发明的用于在网络中创建MPTCP连接的补充MPTCP子流的方法的示例,在该网络中,TCP源通过实现本发明的INC与TCP接收器通信,实现本发明的INC中的两个是TCP/MPTCP中继器,
图14A示意性地示出了根据本发明的第一实施方式的包括INFO_SUBFLOW型报头的MANAGE_SUBFLOW型SYN分组报头,
图14B示意性地示出了根据本发明的包括INFO_SUBFLOW报头的MANAGE_SUBFLOW型的SYN/ACK或ACK分组,
图14C示意性地示出了根据本发明修改的SYN分组的MP_JOIN报头,
图14D示意性地描绘了根据本发明修改的SYN/ACK或ACK分组的MP_JOIN报头,
图14E示意性地示出了根据本发明的包括ADD_SUBFLOW报头的MANAGE_SUBFLOW型报头,
图14F示意性地示出了根据本发明的包括REMOVE_SUBFLOW报头的MANAGE_SUBFLOW型报头,
图14G示意性地示出了根据本发明的ADD_ADDR2型报头,
图14H示意性地示出了根据本发明的第二实施方式的包括INFO_SUBFLOW型子报头的MANAGE_SUBFLOW型SYN分组报头,
图14I示意性地示出了根据本发明的REMOVE_ADDR型报头。
采用使用MPTCP协议的应用的示例解释本发明。然而,本发明的原理适用于适于多路径通信模式的任何其它传输协议。
本发明属于网络通信领域。除了其它之外,根据本发明的一种方法使INC能够分析MPTCP连接的子流,以允许在通信网络中打开中间路径(诸如,例如,打开WAN中的路径)的情况下添加或去除新MPTCP子流。为了这样做,根据本发明的INC有能力分析MPTCP连接的信令,将用于实现本发明的报头插入经过INC的MPTCP分组中,或者创建和发送能够实现本发明的用于发送信息的分组。根据本发明的方法在下文中被称为MPTCP+方法。
图3示意性地例示了在诸如源1001的源中或诸如接收器1006的接收器中或诸如INC 1002至1005的INC中能够实现本发明的装置21的硬件架构的示例。通过通信总线215连接的装置21包括:处理器或CPU(中央处理单元)210;随机存取存储器RAM 211;只读存储器ROM 212;存储单元213或诸如SD(安全数字)卡读取器或USB(通用串行总线)密钥读取器或硬盘HDD(硬盘驱动)的存储介质读取器;用于与其它设备交换数据的至少一个通信接口214。通信接口214使装置21能够接收数据分组,发送数据分组,并且就源或接收器而言,通过例如诸如定点装置的控制装置(未示出)从用户接收指令,从而使用户能够操纵显示装置(未示出)上的图形界面。
处理器210能够执行从ROM 212、外部存储器(未示出)、存储介质、或通信网络加载到RAM 211中的指令。当装置21通电时,处理器210能够从RAM 211读取指令并且执行它们。这些指令形成致使处理器210实现下文中描述的算法和步骤中的全部或一些的计算机程序。
在装置21的特定实施方式中,装置21包括用于加速处理数据分组(未示出)的装置。用于加速处理数据分组的装置连接到通信总线215。用于加速处理数据分组的装置能够通过接口214非常快速地接收和发送数据分组,而这些数据分组不必由处理器210处理。在必要时,并且特别地,如下文中关于图5看到的,当通过INC来检测新中间路径时,处理器210可启用或禁用用于加速处理数据分组的装置。当禁用数据分组处理装置时,由处理器210按照减速处理模式来处理由装置接收到的每个数据分组。
因此,下文中描述的算法和步骤中的全部或一些可通过用诸如DSP(数字信号处理器)或微控制器的可编程机器执行指令集以软件形式实现,或者通过用诸如FPGA(现场可编程门阵列)或ASIC(专用集成电路)的机器或专用组件以硬件形式实现。
当网络的所有元件(源、INC、接收器)与MPTCP+方法兼容时,MPTCP+方法的实现被特别简化。关于图4、图5和图6来描述这种情况。然而,该状况不是必须的,并且网络中的一些元件与MPTCP+方法的不兼容性并不妨碍MPTCP+方法的实现。
因此,源和接收器之间的每个INC不必须与MPTCP+方法兼容。网络的至少两个元件(源、INC、接收器)与MPTCP方法兼容就足够了,并且至少一个INC支持MPTCP+方法就足够了。理想地,处于与MPTCP方法兼容的所述两个网络元件之间并且具有多个输入/输出接口的任何网络元件应该支持MPTCP+方法,以保证针对创建附加子流的请求的路线的唯一性。如果情况不是这样,则当请求由INC创建附加子流时存在时间延迟(并且在下文中详细地描述),虽然如此允许应用本发明。
可以利用与MPTCP协议兼容但与MPTCP+方法不兼容的源使用MPTCP+方法。这是因为,与MPTCP+方法兼容的INC能够通过将源所生成的MPTCP数据分组插入与MPTCP+方法兼容的报头中,补偿源与MPTCP+方法的任何不兼容性。下文中,关于图9、图10和图11来描述这种情况。
可以利用与MPTCP协议和MPTCP+方法都不兼容的源使用MPTCP+方法。然而,在这种情况下,必须将源和与MPTCP+方法兼容的TCP/MPTCP中继器或与MPTCP+方法兼容的MPTCP封装装置关联。下文中,关于图12A、图12B和图13来描述这种情况。
对于接收器,同样如此。可以利用与MPTCP协议兼容但与MPTCP+方法不兼容的接收器使用MPTCP+方法。这是因为,与MPTCP+方法兼容的INC能够通过从与MPTCP+方法兼容的数据分组中删除与MPTCP+方法兼容的报头,补偿接收器与MPTCP+方法的任何不兼容性。关于图9、图10和图11来描述这种情况。
可以利用与MPTCP协议和MPTCP+方法均不兼容的接收器使用MPTCP+方法。然而,在这种情况下,必须将接收器和与MPTCP+方法兼容的TCP/MPTCP中继器或与MPTCP+方法兼容的MPTCP封装装置关联。下文中,关于图7A、图7B和图8来描述这种情况。
图4示意性地例示了实现关于图1描述的根据本发明的用于在网络中创建MPTCP连接的子流的方法的示例,子流包括初始子流和附加子流,通过源1001发起这两个创建。源1001、接收器1006和INC 1002至1005与MPTCP协议和MPTCP+方法兼容。在MPTCP+方法的背景下发生MPTCP子流的这两个创建。
在关于步骤401至415描述的第一阶段中,在第一路径上创建由第一个六元组识别的MPTCP子流。这两个地址标识符将例如取值“0”。该第一阶段在步骤401中开始创建和发送具有如关于图1描述的传统报头MP_CAPABLE和包括子报头INFO_SUBFLOW的报头MANAGE_SUBFLOW的SYN分组。报头MANAGE_SUBFLOW是可被插入MPTCP分组中并且允许识别使用MPTCP+方法的报头。该报头可由多个子报头组成。
图14A描述了包括由源创建的子报头INFO_SUBFLOW的MANAGE_SUBFLOW型的SYN分组报头。为了简化起见,包括子报头INFO_SUBFLOW的报头MANAGE_SUBFLOW将在下文中被称为“报头INFO_SUBFLOW”。根据MPTCP协议中使用的术语被分别称为Kind(种类)、Length(长度)和SubType(子类型)的传统MPTCP报头的字段1400、1401和1402在报头INFO_SUBFLOW中被发现。字段SubType 1402取允许识别报头MANAGE_SUBFLOW的特定值,例如,十六进制的值0x09。报头INFO_SUBFLOW允许在使用MPTCP+方法创建MPTCP连接的阶段期间在源1001、接收器1006和INC 1002至1005之间交换信息。报头INFO_SUBFLOW包括字段1403,字段1403根据MPTCP协议中使用的术语被称为SubSubT,例如被编码成四比特,取允许识别报头INFO_SUBFLOW的特定值,例如,十六进制的值0x00。字段SubSubT 1403之后是字段1404和字段1405,字段1404被称为Sf_Id,允许识别MPTCP子流,字段1405被称为Addr_Id,允许识别子流的起始处的源的IP地址。在报头MANAGE_SUBFLOW的情况下,字段Sf_Id 1404和Addr_Id1405是例如被编码成四比特的固定大小字段。可选地,报头INFO_SUBFLOW可包含字段1406,字段1406被称为Seq_Req,被编码成例如15比特,从而允许在由INC发送创建MPTCP流的请求时识别该请求的序列号。在图4中的示例中,由源1001发送请求。因此,在SYN分组中没有字段Seq_Req 1406。
在步骤401中,报头INFO_SUBFLOW的字段Sf_Id 1404和Addr_Id 1405被设置成“0”。
在步骤402期间,INC 1002接收SYN分组,分析该分组,以确定动作是否是必须的并且在接收器1006的方向上传播SYN分组。在分析包含报头MP_CAPABLE和报头INFO_SUBFLOW的SYN分组期间,INC 1002恢复关于源1001的信息,特别是,源1001的IP地址和源1001的端口号。如果INC还不具有该信息,则INC将它保存在存储器中并且将它与源的标识符关联。接下来,INC将关于当前正创建的MPTCP子流的信息(特别是从报头MP_CAPABLE中提取的密钥、子流标识符和地址标识符)与所保存的信息关联。INC还保存指示源1001与MPTCP+方法兼容的信息,这是因为不存在报头INFO_SUBFLOW的字段Seq_Req 1406,该字段Seq_Req 1406指示由源1001添加报头INFO_SUBFLOW。INC 1003、1004和1005分别应用与步骤402相同的步骤403、404和405。
在接收到SYN分组之后,接收器1006在步骤406期间构造具有报头MP_CAPABLE和报头INFO_SUBFLOW的SYN/ACK分组,并且在源1001的方向上发送该分组。图14B描述了INFO_SUBFLOW型的SYN/ACK分组和ACK分组报头。分别被称为Kind、Length、SubType和SubSubT的字段1410、1411、1412和1413与关于图14A描述的SYN分组的那些字段相同。这些字段之后是被称为TypeOfLink的字段1414,字段1414根据传输协议的传统术语例如被编码成6比特,从而给出关于第一链路的指示。例如,字段TypeOfLink 1414可给出关于通过该链路的传送时间的指示、关于该链路的传送速率的指示、关于该链路的传送成本的指示等。字段TypeOfLink 1414之后是被称为A的字段1415和被称为B的字段1416,从而允许识别在初始MPTCP子流中传送数据期间所使用的加密算法。
在步骤406期间,字段TypeOfLink 1414被设置成给出关于第一链路的指示的值,并且字段A 1415和B 1416被分别设置成允许识别所使用的加密算法的值。在步骤407中,INC 1005分析SYN/ACK分组,以检验动作是否是必要的并且在源1001的方向上发送分组。当分析包含报头MP_CAPABLE和报头INFO_SUBFLOW的SYN/ACK分组时,INC 1005恢复关于接收器1006的信息,该信息包括接收器1006的IP地址和接收器1006的端口号。如果INC 1005还不具有该信息,则INC将它保存在存储器中并且将它与接收器1006的标识符关联。接下来,INC将关于正创建的MPTCP子流的信息(包括从报头MP_CAPABLE中提取的密钥、子流标识符和地址标识符)与所保存的信息关联,每个标识符都取如MPTCP协议所指定的等于“0”的默认值。使用密钥来保护MPTCP补充子流的打开。INC还保存指示接收器1006与MPTCP+方法兼容的信息,这可以从报头INFO_SUBFLOW中的字段TypeOfLink 1414、A 1415和B 1416的存在来推导。INC 1004、1003和1002分别应用与步骤407相同的步骤408、409和410。
在接收到SYN/ACK分组之后,源1001在步骤411期间构造ACK分组并且在接收器1006的方向上发送该ACK分组,该分组包含报头MP_CAPABLE和INFO_SUBFLOW。ACK分组的报头INFO_SUBFLOW的语法与SYN/ACK分组的报头INFO_SUBFLOW的语法相同。在步骤411期间,从SYN/ACK分组复制字段TypeOfLink 1414、A 1415和B 1416。在步骤412中,INC 1002分析ACK分组,以检验动作是否是必要的并且在接收器1006的方向上发送分组。当分析ACK分组时,INC检验出关于连接和初始MPTCP子流的所有信息都是一致的。在步骤413、414和415中,INC 1003、1004和1005应用与步骤412相同的步骤。在接收器1006接收到ACK分组之后,打开初始MPTCP子流。
在关于步骤416至430描述的第二阶段中,在由第二六元组识别的第二链路上创建附加MPTCP子流。应该注意,第二六元组的接收器的IP地址可等于第一六元组的接收器的IP地址。该阶段在步骤416期间开始由源1001创建包括报头MP_JOIN+和报头INFO_SUBFLOW的SYN分组,随后发送。SYN分组的报头MP_JOIN+类似于SYN分组的传统报头MP_JOIN。关于图14C描述SYN分组的报头MP_JOIN+的语法。SYN分组的报头INFO_SUBFLOW的语法是关于图14A描述的语法。
SYN分组的报头MP_JOIN+包含根据MPTCP协议的报头的典型字段1420、1421、1422,这些字段根据MPTCP协议的语法被分别称为Kind、Length和SubType。字段1422SubType允许识别报头MP_JOIN+。报头MP_JOIN+还包括例如被编码为3比特的被称为MaxSf的字段1423、具有可变大小的被称为SubFlow_Id的字段1424和具有可变大小的被称为Address_Id的字段1425。字段MaxSf 1423指示分配给字段SubFlow_Id 1424和字段Address_Id 1425的比特数,当字段MaxSf 1423被编码成3位时,比特数的范围可从0比特至7比特。字段SubFlow_Id1424允许识别子流。字段Address_Id 1425允许独立于对应IP地址的值识别创建分组(即,源或目的地)的网络装置的IP地址。即使已经在网络中由例如地址翻译装置修改,字段Address_Id 1425也允许识别IP地址。应该注意,报头MP_JOIN+的字段SubFlow_Id 1424和字段Address_Id 1425取代如MPTCP协议中定义的报头MP_JOIN的字段Address_ID。此外,报头MP_JOIN+包括被称为“接收器令牌(RT)”的字段1427和被称为“源随机数(SRN)”的字段1428。使用字段RT 1427和SRN 1428来保护MPTCP连接。
在步骤416期间,字段Address_Id 1425被设置成第二六元组的源的IP地址处的代表值。字段SubFlow_Id 1424被设置成允许表示从第二六元组创建的第一子流的值。例如,字段SubFlow_Id 1424取值“0”。当创建由源(或分别地,接收器)发起的附加MPTCP子流时,不使用SYN分组的报头INFO_SUBFLOW的字段Sf_Id 1404和字段Addr_Id 1405。在一个实施方式中,这些字段取例如值“0”。
在步骤417期间,INC 1002接收SYN分组,分析该分组,以确定动作是否是必要的并且在接收器1006的方向上传播SYN分组。当分析包含报头MP_JOIN+和报头INFO_SUBFLOW的SYN分组时,INC 1002恢复包括源的IP地址和源的端口号的关于源的信息。如果INC 1002还不具有该信息,则INC将它保存在存储器中并且将它与源的标识符关联。接下来,INC 1002将关于正创建的附加MPTCP子流的信息与所保存的信息关联,该关于正创建的附加MPCTCP子流的信息包括接收器令牌和源随机数、从报头MP_JOIN+中提取的子流标识符和地址标识符以及密钥。
当在接收到包括报头MP_JOIN+的SYN分组之前,INC 1002已经接收到包括报头MP_CAPABLE的分组(如图4中的示例中的情况一样)时,与所保存的信息关联的密钥是在接收包含报头MP_CAPABLE的分组的步骤402期间接收的密钥。
然而,有可能的是,在INC接收到包含报头MP_JOIN+的SYN分组之前,未接收到包含报头MP_CAPABLE的SYN分组。当包含选项MP_CAPABLE的SYN分组遵循网络中的第一路线而包含选项MP_JOIN+的SYN分组遵循与第一路线不同的第二路线时,会出现这种情况。在这种情况下,由INC从接收器令牌和/或源随机数来构造与所保存的信息关联的密钥。
INC 1003、1004和1005分别应用与步骤417相同的步骤418、419和420。
在接收到SYN分组之后,接收器1006在步骤421中构造具有报头MP_JOIN+和报头INFO_SUBFLOW的SYN/ACK分组,并且在源1001的方向上发送该分组。关于图14D描述MP_JOIN+型的SYN/ACK和ACK分组报头。
SYN/ACK或ACK分组的报头MP_JOIN+包括字段1430、1431、1432、1433、1434和1435,字段1430、1431、1432、1433、1434和1435被分别称为与字段1420、1421、1422、1423、1424和1425分别相同的Kind、Length、SubType、MaxSf、SubFlowId和Address Id,与关于图14C描述的SYN分组的报头MP_JOIN+具有相同名称。此外,报头MP_JOIN+包括在MPTCP协议中被已知为HMAC的被称为“source security number”(源安全编号)的字段1436和被称为“sourcerandom number(SRN)”(源随机数(SRN))的字段1437。使用字段HMAC 1436和SRN 1437来保护MPTCP连接。从在包括报头MP_CAPABLE或报头MP_JOIN+的分组的交换期间在源1001和接收器1006之间交换的密钥、接收器令牌和/或源随机数信息来计算字段HMAC 1436。
SYN/ACK分组的报头INFO_SUBFLOW的语法是关于图14B描述的语法。
在步骤421期间,字段Address_Id 1435处于与第二六元组的接收器IP地址对应的值,字段SubFlow_Id 1434处于值“0”以表示针对第二六元组创建的第一子流,报头INFO_SUBFLOW的字段TypeOfLink 1414被设置成给出关于第二路径的指示的值并且字段A 1415和B 1416被分别设置成允许识别所使用的加密算法的值。
在步骤422中,INC 1005分析SYN/ACK分组,以检验动作是否是必要的并且在源1001的方向上发送分组。当分析包含报头MP_JOIN+和报头INFO_SUBFLOW的SYN/ACK分组时,INC 1005恢复关于接收器的信息,该信息包括接收器的IP地址和接收器的端口号。如果INC1005还不具有该信息,则INC将它保存在存储器中。接下来,INC 1005将关于正创建的MPTCP子流的信息(包括从SYN/ACK分组的报头MP_JOIN+中提取的密钥、源随机数、MPTCP子流标识符和接收器地址标识符)与所保存的信息关联。以与步骤417类似的方式,密钥是当INC1005接收到包括报头MP_CAPABLE的SYN/ACK分组时在步骤407期间获得的密钥或者由INC1005从源随机数构造的密钥。
INC 1004、1003和1002分别应用与步骤422相同的步骤423、424和425。
在接收到SYN/ACK分组之后,源1001在步骤426期间构造ACK分组并且在接收器1006的方向上发送ACK分组,该分组包含报头MP_JOIN+和INFO_SUBFLOW。在步骤426期间,从SYN/ACK分组复制字段TypeOfLink 1414、A 1415和B 1416。在步骤427中,INC 1002分析ACK分组,以检验动作是否是必要的并且在接收器1006的方向上发送该分组。当分析ACK分组时,INC 1002检验出所有关于连接和附加MPTCP子流的信息都是一致的。在步骤428、429和430中,INC 1003、1004和1005应用与步骤427相同的步骤。在接收器1006接收到ACK分组之后,打开附加MPTCP子流。
图4描述了打开初始MPTCP子流和附加MPTCP子流的阶段。可通过用其它六元组重复步骤416至430来创建其它附加MPTCP子流,只要源地址和接收器地址是可用的。该阶段之后是数据分组传递阶段,数据分组传递阶段的每个方面都与根据MPTCP协议的数据分组传递阶段相同。当加速处理过程在INC 1002至1005中可用时,对数据分组传递阶段期间发送的数据分组实现这些处理。
数据分组传递阶段之后是MPTCP子流关闭阶段。该关闭阶段在每个方面都与根据MPTCP协议的关闭阶段相同。根据MPTCP协议的关闭阶段可以基于使用如MPTCP协议中定义的FIN分组或RST分组。在使用FIN分组的情况下,关闭阶段包括由源1001发送FIN分组,之后由接收器1006发送接收到FIN分组的确认。以此方式,在源1001处关闭MPTCP子流。接下来,在接收器1006处关闭MPTCP子流。接收器1006将FIN分组发送到源1001。源1001通过向接收器1006发送接收到FIN分组的确认来作出响应。以此方式,在接收器1006处关闭MPTCP子流。当它们经过INC 1002至1005时,分析FIN分组,这使INC能够删除与因此在所述INC的存储器中关闭的MPTCP子流相关的信息。
关于图4描述的MPTCP+方法的使用表示由网络单元1001发起的两个MPTCP子流的创建。在MPTCP+方法的另一个使用中,可以由接收器发起两个子流的创建,这是因为该方法是可逆的。
此外,在图4中的实现MPTCP+方法时使用的通信网络包括源LAN上的一个INC、接收器LAN上的一个LNC和网络的WAN部分上的两个INC。该方法以相同方式按另一种配置起作用,例如,至少一个INC与关于LAN中的至少一个的MPTCP+方法兼容和/或至少一个INC与关于WAN的MPTCP+方法兼容。
在图4中的示例中,在网络上还未打开中间路径。图5示意性地示出实现根据本发明的用于创建补充MPTCP子流的方法,并且随后实现根据本发明的用于在打开图1中的网络中的新路径之后删除所述补充MPTCP子流的示例。在图5中的示例中,中间路径从INC 1003开始并且在接收器1006的方向上打开。
在打开中间路径之后,发起用于使用中间路径来创建补充MPTCP子流的过程。用于创建MPTCP子流的过程包括用于用信号发送关于步骤501至503描述的新中间路径的打开的过程和关于步骤504至518描述的三次握手过程。
补充MPTCP子流必须共享现有初始或附加MPTCP子流的源和接收器IP地址。如果考虑到例如图5中的示例的实现是在图4中的示例的实现之后,则补充MPTCP子流共享例如步骤401至415中创建的初始MPTCP子流的源和接收器IP地址。
用信号发送打开新中间路径的过程开始于步骤501,在步骤501期间,INC 1003构造包括子报头ADD_SUBFLOW的报头MANAGE_SUBFLOW,关于图14E描述了该子报头的语法。下文中,为了简化起见,包括子报头ADD_SUBFLOW的报头MANAGE_SUBFLOW将被称为“报头ADD_SUBFLOW”。报头ADD_SUBFLOW包括字段1440、1441、1442和1443,字段1440、1441、1442和1443分别被称为分别与关于图14A描述的报头INFO_SUBFLOW的字段Kind 1400、Length 4001、Subtype1402和SubSubT 1403相同的Kind、Length、Subtype和SubSubT。报头ADD_SUBFLOW另外还包括被称为SF_Id的字段1444和被称为Addr_Id的字段1445。字段SF_Id 1444和Addr_Id 1445允许指示包含MPTCP子流要复制的报头ADD_SUBFLOW的分组(这里是源1001)的地址。在图5中的示例中,字段SF_Id 1444和Addr_Id 1445分别表示源1001的MPTCP子流的标识符和源1001的地址的标识符。此外,报头ADD_SUBFLOW包括字段1446、字段1447、可选字段1448和字段1449,字段1446被称为D,例如,具有1比特的长度,指示源或接收器中的哪个必须发起创建补充MPTCP子流,字段1447被称为Seq_Req,例如,具有15比特的大小,用于识别哪个INC发起子流的创建,可选字段1448被称为Port,例如,具有16比特的大小,从而允许识别用于发起创建子流的端口,字段1449被称为“security number”HMAC,用于保护子流传送,例如被编码成32比特。
在步骤501期间,INC 1003将字段SF_Id 1444和Addr_Id 1445设置成允许识别哪个初始或附加MPTCP子流必须充当创建补充MPTCP子流基础的值。由于在图5中的示例中,使用的是初始MPTCP子流,因此字段SF_Id 1444和Addr_Id 1445取值“0”。字段D 1446取值“0”,以指示源1001发起创建补充MPTCP子流,即,源1001发送三次握手过程的第一SYN分组。字段Seq_Req 1447取由INC 1003确定的随机值“AL1”。Seq_Req 1447的随机值“AL1”被存储在INC 1003的存储器中。在这个示例中,不使用可选字段Port 1448。
用于用信号发送打开新中间路径的过程继续进行到步骤502,在步骤502期间,报头ADD_SUBFLOW被插入至少一个分组中并且在源1001的方向上被发送。在一个实施方式中,相同报头ADD_SUBFLOW被插入多个分组中,以确保由源1001很好地接收包括报头ADD_SUBFLOW的至少一个分组。所使用的分组是意图用于源1001的分组,或者如果不能使用意图用于源1001的分组,则复制由IMC 1003特别创建的DUP_ACK(复制确认)型的接收确认分组。意图用于源1001的分组可以是在源1001和接收器1006之间的通信期间使用的任何类型的分组。
包括报头ADD_SUBFLOW的分组可在意图用于源的现有MPTCP子流中、在意图用于源的多个现有MPTCP子流中、或甚至在意图用于穿过INC 1003的源的所有现有MPTCP子流中被传输。
意图用于源1001的任何传统分组受益于,当在INC中可用时,例如由该装置实现用于加速处理INC中包括的装置21的数据分组的加速处理过程。该传统分组因此不由装置21的处理器210处理,从而防止装置21向该分组应用特定处理。在本发明的背景下,必须向某些分组应用特定处理,以在其中插入报头ADD_SUBFLOW或者用这些分组来创建DUP_ACK分组,以在其中插入ADD_SUBFLOW报头。在一个实施方式中,当INC实现加速处理过程时,该过程在检测到中间路径的打开时临时中断。以此方式,由装置21的处理器210来处理由INC接收到的分组。然后,INC可将报头ADD_SUBFLOW插入意图用于源1001的分组中,或者如果INC不能将报头ADD_SUBFLOW插入意图用于源1001的分组中,则创建包含报头ADD_SUBFLOW的DUP_ACK分组。INC接下来可禁用加速处理过程。这里假定,每个INC能够通过实现网络事件监测过程来检测中间路径的出现或消失。
下文中,描述报头ADD_SUBFLOW(还有随后关于用于关闭补充MPTCP子流的过程描述的报头REMOVE_SUBLOW)被插入DUP_ACK分组中的各种实施方式。然而,这些实施方式绝非是限制性的,并且可使用经过发起打开(或分别地,关闭)补充MPTCP子流的任何其它类型的分组来发送报头ADD_SUBFLOW(或分别地,REMOVE_SUBFLOW)。
在图5中的示例中,在处理器210的控制下,INC 1003将报头ADD_SUBFLOW插入意图用于源的DUP_ACK中。接下来,在发送了包含报头ADD_SUBFLOW的DUP_ACK分组之后,由INC1003的装置21的处理器210来禁用加速处理过程。
当在步骤503期间接收到DUP_ACK分组时,INC 1002将该分组当作传统DUP_ACK分组对待并且在源1001的方向上传播该分组。
在接收到包含报头ADD_SUBFLOW的DUP_ACK分组之后,源1001发起三次握手过程。三次握手过程在步骤504期间开始创建包含报头MP_JOIN+和报头INFO_SUBFLOW的SYN分组,随后由源1001发送。步骤504期间创建的SYN分组类似于步骤416期间创建的SYN分组。步骤504期间创建的SYN分组的报头MP_JOIN+的字段Address_Id 1425取与在步骤401期间创建的SYN分组相同的地址标识符值。另一方面,为了将初始MPTCP子流与补充MPTCP子流区分开,源1001将字段SubFlow_Id 1424设置成和与初始MPTCP子流关联的值不同的值。例如,当针对六元组创建第一MPTCP子流时,第一MPTCP子流默认与具有值“0”的MPTCP子流标识符关联。当针对同一六元组创建第二MPTCP子流时,第二MPTCP子流与具有值“1”的MPTCP子流标识符关联,并且按增量1依次进行,直到所有可能的MPTCP子流标识符值被用尽。在创建附加MPTCP子流的步骤416期间,不使用报头INFO_SUBFLOW的字段Sf_Id 1404和Addr_Id 1405。在一个实施方式中,这些字段例如取值“0”。此外,由于这里是发起创建补充MPTCP子流的INC,因此在报头INFO_SUBFLOW中插入字段Seq_Req 1406。报头INFO_SUBFLOW的字段Seq_Req1406取随机值“AL1”。
在步骤505至508期间,INC 1002至1005接收、分析SYN分组并且在接收器1006的方向上传播SYN分组。
步骤505期间使用的分析与步骤402期间使用的分析相同。每个INC的出发路径对应于由报头ADD_SUBFLOW中识别的初始或附加MPTCP子流所使用的出发路径。
在步骤506期间,INC 1003通过读取报头INFO_SUBFLOW的字段Seq_Req 1406来确定该SYN分组与用于创建它发起的补充MPTCP子流的过程相关。凭借该发现,INC 1003得知,它必须使用最近打开的中间路径并且必须使用该中间路径将SYN分组传播到接收器1006。
步骤507、508期间使用的分析分别与步骤404、405期间使用的分析相同。
在接收到SYN分组之后,接收器1006在步骤509期间构造具有报头MP_JOIN+和报头INFO_SUBFLOW的SYN/ACK分组并且发送它。在步骤509期间,SYN/ACK分组的报头MP_JOIN+的字段Address_id 1435取与用于发送在步骤406期间创建的SYN/ACK分组的地址对应的地址标识符值。另一方面,为了将初始MPTCP子流与补充MPTCP子流区分开,接收器1006通过取例如值“1”,将字段SubFlow_Id 1434设置成和与初始MPTCP子流关联的值不同的值。关于报头INFO_SUBFLOW,字段TypeOfPath 1414被设置成给出关于所使用路径的信息的值,并且字段A 1415和B 1416被分别设置成允许识别所使用的加密算法的值。
然后,在三次握手过程中最后的步骤510至518分别与步骤422至430相同。当由接收器1006接收到ACK分组时,打开补充MPTCP子流。
在根据MPTCP+方法打开补充子流之后是使用中间路径的数据分组传递阶段。当加速处理过程在INC 1002至1005中可用时,在数据分组传递阶段期间发送的数据分组上实现这些处理。
当该数据分组传递阶段结束时,实现关闭补充MPTCP子流的阶段。可由源1001或接收器1006发起关闭补充MPTCP子流的阶段。在这种情况下,关闭阶段在所有方面都与根据基于FIN分组交换和接收到FIN分组的确认的MPTCP协议的关闭阶段相同。
在一个实施方式中,由给予创建补充MPTCP子流的请求的INC(即,图5中的示例中的INC 1003)发起关闭阶段。在这种情况下,关闭阶段遵循MPTCP+方法特有的过程。关于图5中的步骤519至521和524至543描述该过程。该过程开始于在步骤519期间创建类型REMOVE_SUBFLOW的报头。关于图14F描述报头REMOVE_SUBFLOW。报头REMOVE_SUBFLOW与报头ADD_SUBFLOW相同。被称为SubSubT的报头REMOVE_SUBFLOW的字段1453取允许识别报头REMOVE_SUBFLOW的值。
与报头ADD_SUBFLOW的字段1444和1445类似地被分别称为SF_Id和Addr_Id的字段1454和1455取允许确定必须关闭哪个MPTCP子流的值。在图5中的示例中,它是必须关闭的补充MPTCP子流。字段SF_Id 1454和Addr_Id 1455因此分别取值“1”和“0”。为了对准,插入预留字段1457。与报头ADD_SUBFLOW报头和REMOVE_SUBFLOW的字段1446类似地被称为D的字段1456取指示源1001必须发起关闭补充MPTCP子流的过程的值。在这个示例中,不使用与报头ADD_SUBFLOW的字段1448类似地被称为Port的字段1458。
步骤519期间创建的报头REMOVE_SUBFLOW被插入由INC 1003创建的且意图用于源1001的类型DUP_ACK的至少一个接收确认分组中。发送传输报头REMOVE_SUBFLOW的多个分组确保了报头REMOVE_SUBFLOW确实由其接收方(这里是源1001)接收。可使用不同的初始、附加或补充子流来发送传输报头REMOVE_SUBFLOW的每个分组。当接收方在多种情形下接收到同一报头REMOVE_SUBFLOW时,只考虑首先接收到的报头REMOVE_SUBFLOW。
INC 1002接收包含报头REMOVE_SUBFLOW的DUP_ACK分组并且在源1001的方向上发送该分组。
当源1001接收到包含报头REMOVE_SUBFLOW的DUP_ACK分组时,它发起关闭补充MPTCP子流的阶段,该阶段在每个方面都与根据基于FIN分组的交换和接收到FIN分组的确认的MPTCP协议的关闭阶段相同。该阶段开始于在步骤524中由源1001在接收器1006的方向上发送FIN分组。在步骤525至528中,INC 1002至1005分析FIN分组并且在接收器1006的方向上传播FIN分组。在步骤526至528的分析期间,INC 1002至1005注意到补充子流正在关闭。
由接收器1006接收FIN分组致使在步骤529期间在源的方向上发送接收到FIN分组的确认。在步骤530至533期间,INC 1005至1002分析接收到FIN分组的确认并且在接收器1001的方向上传播该确认。在步骤530至533的分析期间,INC 1005至1002注意到由源发起的关闭补充子流的阶段正在结束。
在步骤534期间,接收器1006依次发起关闭补充MPTCP子流的阶段。该阶段开始于由接收器1006在源1001的方向上发送FIN分组。在步骤535至538期间,INC 1005至1002分析FIN分组并且在源1001的方向上传播FIN分组。在步骤535至538的分析期间,INC 1005至1002确定关闭补充MPTCP子流的阶段在进行中。
由源接收FIN分组致使在步骤539期间在接收器1006的方向上发送接收到FIN分组的确认。在步骤540至543期间,INC 1002至1005分析接收的确认并且在接收器1006的方向上传播接收的确认。在步骤540至543的分析期间,INC 1002至1005确定由接收器1006发起的关闭补充MPTCP子流的阶段正在结束。然后,每个INC删除存储在其存储器中的对补充MPTCP子流的所有参照。源1001和接收器1006还删除存储在它们的相应存储器中的对补充MPTCP子流的所有参照。
由INC创建补充MPTCP子流的请求使用分组不受保护的部分(例如,本发明的报头可被插入其中的TCP分组中的信令)。因此,创建MPTCP+子流的所述请求将不成功的概率并不算太小。在一个实施方式中,在三次握手过程结束之后创建补充MPTCP+子流时涉及的每个INC中启用时间延迟。该时间延迟取预定持续时间d,该预定持续时间d在每个INC的配置阶段期间可以是固定的。在该时间延迟期间,阻止由INC进行MPTCP+子流的任何新创建。通过在时间延迟的时间段d期间阻止新MPTCP+子流的创建,确保在请求创建新MPTCP+子流之前,每个MPTCP+子流的创建都已经成功。
以上发现,用于创建初始或附加MPTCP子流的过程通常是可逆的并且可由源1001或接收器1006发起。例如,当新IP地址被创建或者变成在接收器处可用时,可发生用于创建由接收器发起的初始或附加MPTCP子流的过程。然而,当例如INC实现防止路由包括报头MP_CAPABLE和报头INFO_SUBFLOW的SYN分组的地址翻译过程时,由接收器发起的该过程可能要求附加步骤。
图6A示意性地示出当在INC 1005实现地址翻译过程的情况下网络地址翻译器(NAT)型的INC防止在关于图1描述的网络中创建初始或附加MPTCP子流时在本发明的背景下实现的过程。在这个示例中,在接收器1006上打开新IP地址之后,接收器1006发起通过在步骤601中创建并发送包含报头MP_CAPABLE和报头INFO_SUBFLOW的SYN分组来创建附加MPTCP子流的过程。在步骤602期间,由INC 1005接收分组SYN。INC 1005应用地址翻译过程,由于它未知的地址处于分组的目的地地址字段(这里是源1001的地址)中而导致分组丢失。
在发送SYN分组之后,接收器1006等待接收SYN/ACK分组。如果在发送SYN分组之后在预定义时间T内没有接收到SYN/ACK分组,则接收器在步骤605中创建包含ADD_ADDR2型的报头的DUP_ACK型的至少一个分组并且在源1001的方向上发送该至少一个分组。DUP_ACK分组可被发送数次,以确保它被源1001接收。在一个实施方式中,它在每个现有的初始、附加和补充子流上进行发送。关于图14G描述报头ADD_ADDR2的语法。报头ADD_ADDR2包括字段1460、1461和1462,字段1460、1461和1462根据MPTCP协议分别被称为报头典型的Kind、Length和SubType。这三个字段之后是字段1463,字段1463被称为IPVer,允许确定下文中描述的包含IP地址的字段1466Address_IP的大小。字段IPVer 1463之后是字段1465,字段1465被称为Addr_Id,旨在包含IP地址标识符。字段Addr_Id 1465之后是字段Address_IP1466、可选字段1467和字段1468,可选字段1467被称为port,旨在接收端口号,字段1468被称为“security number(安全编号)”HMAC,用于保护MPTCP子流的传送。
当在步骤605中创建DUP_ACK分组时,接收器1006将接收器的新IP地址插入字段Address_IP 1466中并且将该地址的标识符插入字段Addr_Id 1465中。
分组DUP_ACK由INC 1002至1005接收并且重新发送,而INC 1002至1005不必对该分组执行任何动作。接下来,由源1001接收DUP_ACK分组。在接收到包含报头ADD_ADDR2的DUP_ACK分组之后,源1001通过在源1001和接收器1006之间交换包括报头MP_JOIN+和INFO_SUBFLOW的SYN、SYN/ACK和ACK分组来发起三次握手过程。该过程类似于关于图4的步骤416至430描述的过程。然而,在这种情况下,其是源1001能够在用于创建MPTCP子流的六元组中使用的ADD_ADDR2分组中找到的接收器1006的新IP地址。
有时,在诸如源或接收器的网络单元上,使用过程中的IP地址可能突然变得不可使用。在这种情况下,与该地址有关的MPTCP子流不能再被使用。本发明提出了允许删除与IP地址有关的MPTCP子流的集合的过程。
图6B示意性地示出实现用于删除与接收器的IP地址有关的MPTCP连接的每个子流的过程的示例。该过程依赖于REMOVE_ADDR型的报头。图14I示意性地示出了根据本发明的REMOVE_ADDR型的报头。在报头REMOVE_ADDR中发现字段1480、1481和1482,字段1480、1481和1482根据MPTCP协议分别被称为报头典型的Kind、Length和SubType。字段SubType 1482允许识别报头REMOVE_ADDR。字段SubType 1482之后是被称为Reserved的预留字段1483和被称为Addr_Id的字段1484。字段Addr_Id 1484能够传输IP地址的标识符。字段Addr_Id1484可以例如传输已经突然变得不可用的IP地址的标识符。
在关于图6B描述的示例实施方式中,假定接收器1006的IP地址消失,而该IP地址被用于多个MPTCP子流。
在步骤610期间,接收器1006创建报头REMOVE_ADDR,其中,不可用IP地址的标识符被插入字段Addr_Id 1484中。接下来,报头REMOVE_ADDR被插入一个或更多个DUP_ACK分组中并且在仍然可用(即,不使用不可用IP地址)的MPTCP子流中被发送到源1001。穿过的每个INC将分析包含报头REMOVE_ADDR的DUP_ACK分组,将使用由字段Addr_Id 1484指示的IP地址从其存储器中删除对现有MPTCP子流的任何参照。当源1001接收到包含报头REMOVE_ADDR的DUP_ACK分组时,它使用由字段Addr_Id 1484指示的IP地址关闭每个子流。以此方式,在源1001、接收器1006和INC 1002至1005处决定性地删除与不可用IP地址有关的每个子流。应该注意,如果子流的IP地址之一变得不可用,则可由源1001实现相同的过程。
图7A示意性地示出了实现根据本发明的用于在网络中创建被称为经中继的初始MPTCP子流的初始MPTCP子流的方法的示例,在网络中,能够实现MPTCP+方法的源与TCP接收器通信。这里重复关于图1描述的网络。为了简明的原因,未示出INC 1003。在这个示例中,INC 1005是如上所述的TCP/MPTCP中继器。
下文中,用于创建MPTCP子流的SYN、SYN/ACK和ACK分组分别被称为MPTCP SYN分组、MPTCP SYN/ACK分组和MPTCP ACK分组。此外,用于创建TCP流的SYN、SYN/ACK和ACK分组分别被称为TCP SYN分组、TCP SYN/ACK分组和TCP ACK分组。
如以下描述的,在这种情况下实现两个三次握手过程。第一个三次握手过程在源1001和实现TCP/MPTCP中继器的作用的INC 1005中实现并且允许创建经中继的初始MPTCP子流,并且在INC 1005和接收器1006之间的第二个三次握手过程允许创建TCP流,TCP流被称为中继TCP流。由源1001直接发起第一个三次握手过程,而由源1001利用INC 1005间接地发起第二个三次握手过程。
在与步骤401相同的步骤701中,源1001创建具有传统报头MP_CAPABLE和报头INFO_SUBFLOW的MPTCP SYN分组并且发送它。在步骤702和703期间,INC 1002和1004实现分别与步骤402和404相同的步骤。在步骤704中,INC 1005接收MPTCP SYN分组。
响应于MPTCP SYN分组,INC 1005在步骤706期间构造具有报头MP_CAPABLE和报头INFO_SUBFLOW的MPTCP SYN/ACK分组并且发送它。由INC 1005实现的步骤706与由接收器1006实现的步骤406相同。当接收到MPTCP SYN/ACK分组时,INC 1004和1002实现分别与步骤408和410相同的步骤707和708。
响应于MPTCP SYN/ACK分组,源1001在步骤709期间构造具有报头MP_CAPABLE和报头INFO_SUBFLOW的MPTCP ACK分组并且发送它。由源1001实现的步骤709与步骤411相同。当接收到MPTCP ACK分组时,INC 1002和1004实现分别与步骤412和414相同的步骤710和711。由INC 1005接收到MPTCP ACK分组结束源1001和INC 1005之间的三次握手过程。然后,在源1001和INC 1005之间创建经中继的初始MPTCP子流,并且可开始使用该经中继的初始MPTCP子流的数据传送。
此外,在步骤704期间,INC 1005构造TCP SYN分组,将MPTCP SYN分组中包含的数据插入TCP SYN分组中并且将TCP SYN分组发送到接收器1006。
响应于TCP SYN分组,接收器1006在步骤705期间构造TCP SYN/ACK分组并且将它发送到INC 1005。
响应于TCP SYN/ACK分组,INC 1005在步骤712期间构造TCP ACK分组并且将它发送到接收器1006。由接收器1006接收到TCP ACK分组结束三次握手过程,使得能够在INC1005和接收器1006之间创建中继TCP流。然后,可使用中继TCP流在INC 1005和接收器1006之间通信。
当数据从源1001被发送到接收器1006时,INC 1005提取经中继的初始MPTCP子流的MPTCP分组中包含的数据,然后将它们插入中继TCP流的TCP分组中。相反,当数据从接收器1006被发送到源1001时,INC 1005提取中继TCP流的TCP分组中包含的数据并且将它们插入经中继的初始MPTCP子流的MPTCP分组中。
如在MPTCP协议中说明的,经中继的初始MPTCP子流以标准方式释放(release)。在一个实施方式中,经中继的初始MPTCP子流的释放致使与其关联的中继TCP流的释放。如在TCP标准中说明的,中继TCP流以标准方式释放。
图7B示意性地示出了实现根据本发明的用于在网络中创建被称为经中继的附加MPTCP子流的MPTCT连接的附加子流的方法的示例,在网络中,能够实现MPTCP+方法的源与TCP接收器通信。这里,重复关于图7A描述的网络。
在这个示例中,第一个三次握手过程在源1001和实现TCP/MPTCP中继器的作用的INC 1005之间实现并且允许创建经中继的附加MPTCP子流,并且INC 1005和接收器1006之间的第二个三次握手过程允许创建中继TCP流。然而,不必须创建中继TCP流以特别地中继经中继的附加MPTCP子流。经中继的附加MPTCP子流可在INC 1005和接收器1006之间由现有中继TCP流中继。
在与步骤416相同的步骤716中,源1001在步骤717和718期间创建具有报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP SYN分组并且发送它,INC 1002和1004实现分别与步骤417和419相同的步骤。在步骤719中,INC 1005接收MPTCP SYN分组。
响应于MPTCP SYN分组,接收器1005在步骤721期间构造具有报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP SYN/ACK分组并且发送它。由INC 1005实现的步骤721与由接收器1006实现的步骤421相同。当接收到MPTCP SYN/ACK分组时,INC 1004和1002实现分别与步骤423和425相同的步骤722和723。
响应于MPTCP SYN/ACK分组,源1001在步骤724期间构造具有报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP ACK分组并且发送它。由源1001实现的步骤724与步骤426相同。当接收到MPTCP ACK分组时,INC 1002和1004实现分别与步骤427和429相同的步骤725和726。由INC 1005接收到MPTCP ACK分组结束源1001和INC 1005之间的三次握手过程。然后,在源1001和INC 1005之间创建经中继的附加MPTCP子流,并且可开始使用该经中继的附加MPTCP子流的数据传送。
此外,在步骤719期间,INC 1005构造TCP SYN分组,将MPTCP SYN分组中包含的数据插入TCP SYN分组中并且将TCP SYN分组发送到接收器1006。
响应于TCP SYN分组,接收器1006在步骤720期间构造TCP SYN/ACK分组并且将它发送到INC 1005。
响应于TCP SYN/ACK分组,INC 1005在步骤722期间构造TCP ACK分组并且将它发送到接收器1006。由接收器1006接收到TCP ACK分组结束三次握手过程,使得能够在INC1005和接收器1006之间创建中继TCP流。然后,可使用中继TCP流在INC 1005和接收器1006之间通信。
当数据从源1001发送到接收器1006时,INC 1005提取经中继的附加MPTCP子流的MPTCP分组中包含的数据,然后将它们插入中继TCP流的TCP分组中。相反,当数据从接收器1006被发送到源1001时,INC 1005提取中继TCP流的TCP分组中包含的数据并且将它们插入经中继的附加MPTCP子流的MPTCP分组中。
如在MPTCP标准中说明的,经中继的附加MPTCP子流以标准方式释放。在一个实施方式中,经中继的附加MPTCP子流的释放致使与其关联的中继TCP流的释放。
在一个实施方式中,不实现第二个三次握手过程。在这个实施方式中,通过INC1005和接收器1006之间的现有中继TCP流(例如,使用关于图7A描述的示例的被创建以中继经中继的初始MPTCP子流的中继TCP流),中继经中继的附加MPTCP子流。在这种情况下,经中继的附加MPTCP子流的关闭不造成中继MPTCP流的关闭。
图8示意性地描绘了实现根据本发明的用于在其中能够实现MPTCP+方法的源与TCP接收方通信的网络中打开新路径之后创建被称为经中继的补充MPTCP子流的MPTCP连接的补充子流的方法以及随后实现根据本发明的用于删除所述经中继的补充MPTCP子流的方法的示例。这里,重复关于图7A描述的网络。在图8中的示例中,中间路径从INC 1007在接收器1006的方向上打开。
在中间路径打开之后,发起关于步骤801和802描述的用信号发送打开新中间路径的过程。经中继的补充MPTCP子流必须共享现有初始或附加MPTCP子流的源和接收器IP地址。如果认为例如图8中的实现遵循图7A中的实现,则经中继的补充MPTCP子流可共享经中继的初始MPTCP子流的源和接收器IP地址。
INC 1002在与步骤501相同的步骤801期间构造ADD_SUBFLOW型的报头。
在与步骤502相同的步骤802期间,将报头ADD_SUBFLOW插入多个DUP_ACK分组中,使用意图用于源并且经过INC 1002的不同现有MPTCP子流将每个DUP_ACK分组发送到源。
在用信号发送打开新中间路径的过程之后,在源1001和INC 1005之间进行三次握手过程。关于步骤803至806、808至810和811至813描述的该三次握手过程使得能够创建经中继的补充MPTCP子流。
在接收到包含报头ADD_SUBFLOW的DUP_ACK分组之后,源1001在与步骤504相同的步骤803期间创建包含报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP SYN分组并且发送它。步骤803期间创建的MPTCP SYN分组的报头MP_JOIN+的字段Address_Id 1425取与步骤701期间创建的MPTCP SYN分组相同的地址标识符值。另一方面,为了将经中继的初始MPTCP子流与经中继的补充MPTCP子流区分开,源1001将字段SubFlow_Id 1424设置成和与初始MPTCP子流关联的值不同的值,例如,值“1”。此外,由于这里是INC 1002发起创建经中继的补充MPTCP子流,因此在报头INFO_SUBFLOW中插入字段Seq_Req 1406。报头INFO_SUBFLOW的字段Seq_Req 1406取随机值“AL2”。
在步骤804和805期间,INC 1002和1004接收、分析MPTCP SYN分组并且在接收器1006的方向上传播MPTCP SSYN分组。步骤804和805期间使用的分析分别与步骤505和507期间使用的分析相同。
在步骤804期间,INC 1002通过读取报头INFO_SUBFLOW的字段Seq_Req 1406来确定该SYN分组与用于创建在所述Seq_Req等于“AL2”时它发起的经中继的补充MPTCP子流创建的过程相关。然后,INC 1002得知它必须使用最近打开的中间路径并且必须使用该中间路径将MPTCP SYN分组传播到接收器1006。
在步骤806期间接收到MPTCP SYN分组之后,INC 1005在与由接收器1006实现的步骤509相同的步骤808期间构造具有报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP SYN/ACK分组并且发送它。在步骤808期间,MPTCP SYN/ACK分组的报头MP_JOIN+的字段Addr_Id 1435取与在步骤509期间创建的MPTCP SYN/ACK分组的报头MP_JOIN+中使用的地址标识符值相同的地址标识符值。另一方面,为了将经中继的初始MPTCP子流与经中继的补充MPTCP子流区分开,INC 1005通过取例如值“1”,将字段SubFlow_Id 1434设置成和与经中继的初始MPTCP子流关联的值不同的值。
步骤809和810分别与步骤511和513相同。
步骤811、812和813分别与步骤514、515和517相同。当由INC 1005接收到MPTCPACK分组时,打开经中继的补充MPTCP子流。
在这个示例中,经中继的补充MPTCP子流由在步骤704、705和712期间创建的中继TCP流中继。当数据从源1001被发送到接收器1006时,INC 1005提取经中继的补充MPTCP流的MPTCP分组中包含的数据并且将它们插入中继TCP流的TCP分组中。相反,当数据从接收器1006被发送到源1001时,INC 1005提取中继TCP流的TCP分组中包含的数据并且将它们插入经中继的补充MPTCP流的MPTCP分组中。
当该数据分组传递阶段结束时,实现关闭经中继的补充MPTCP子流的阶段。
可由源1001或INC 1005发起关闭经中继的补充MPTCP子流的阶段。在这种情况下,关闭阶段在每个方面都与根据基于FIN分组的交换和接收到FIN分组的确认的MPTCP协议的关闭阶段相同。
在一个实施方式中,由INC 1002发起关闭阶段。在这种情况下,关闭阶段遵循与关于图5描述的过程类似的过程。该过程先开始于在与步骤519相同的步骤819期间创建REMOVE_SUBFLOW子流型的报头。
字段SF_Id 1454和Addr_Id 1455取允许确定必须关闭哪个MPTCP子流的值。在图8中的示例中,它是必须被关闭的经中继的补充MPTCP子流。字段Sf_Id 1454和Addr_Id 1455因此分别取值“1”和“0”。报头REMOVE_SUBFLOW的字段D 1456取指示源1001必须开始关闭经中继的补充MPTCP子流的值。在这个示例中,不使用字段Port 1458。
步骤819期间创建的报头REMOVE_SUBFLOW被插入意图用于源1001的至少一个DUP_ACK分组中。在一个实施方式中,每个DUP_ACK分组在经过INC 1002的意图用于源1001的不同MPTCP子流中被发送。
当源1001接收到包含意图用于源的报头REMOVE_SUBFLOW的分组时,它发起关闭经中继的补充MPTCP子流的阶段,该阶段在每个方面都与根据基于FIN分组的交换和接收到FIN分组的确认的MPTCP协议的关闭阶段相同。
该阶段开始于在步骤823期间由源1001在INC 1005的方向上发送FIN分组。在步骤824和825中,INC 1002和1004分析FIN分组并且在接收器1006的方向上传播FIN分组。
由INC 1005接收到FIN分组致使在步骤827期间在源1001的方向上发送接收到FIN分组的确认。在步骤828和829期间,INC 1004和1002分析接收到FIN分组的确认并且在源1001的方向上传播接收到FIN分组的确认。
接下来,在步骤835期间,发起由INC 1005发起的关闭补充子流的阶段。该阶段开始于由INC 1005在源1001的方向上发送FIN分组。在步骤836和837期间,INC 1004和1002分析FIN分组并且在源1001的方向上传播FIN分组。
由源1001接收到FIN分组致使在步骤838期间在INC 1005的方向上发送接收到FIN分组的确认。在步骤839和840期间,INC 1002和1004分析接收确认并且在INC 1005的方向上传播接收确认。当由INC 1005接收接收到FIN分组的确认时,删除经中继的补充MPTCP子流。
图9示意性地示出了实现根据本发明的用于在网络中创建MPTCP连接的初始子流的方法的示例,在网络中,能够实现MPTCP协议但不能够实现MPTCP+方法的源通过实现MPTCP+方法的至少一个INC与TCP接收器通信。这里,重复关于图7A描述的网络。所创建的初始MPTCP子流是由INC 1005使用的TCP/MPTCP中继器中继的初始MPTCP子流。在这个示例中,源1001能够实现MPTCP协议,但不能够实现MPTCP+方法。如下文中描述的,其部分与MPTCP+方法兼容的INC 1002能够补偿源1001与MPTCP+方法的不兼容性。
另外,在这个示例中,假定源1001、接收器1006和INC 1002至1005通过多个通信路径连接在一起。根据这些通信路径,可形成多个不同传送路线,以便在源1001和接收器1006之间进行通信。为了简化起见,发送路线在下文中被称为“路线”,通信路径在下文中被称为“路径”。一些路线不涉及每个INC 1002至1005,这可能造成关于MPTCP子流必须采用的路线的不确定性。在仅涉及与MPTCP+方法兼容的网络单元(源、接收器、INC)的用于创建初始、附加或补充MPTCP子流的三次握手过程期间,每个网络单元可明白地确定将由SYN、SYN/ACK和ACK分组使用的路径和路线。为了这样做,每个网络单元可依赖于子流和报头INFO_SUBFLOW和MP_JOIN+中包括的地址标识符和序列号Seq_Req,以成功地实现三次握手过程。
另一方面,与MPTCP+方法不兼容的网络单元(诸如,图9中的示例中的源1001)不能够操纵并使用子流和地址标识符以及序列号Seq_Req,这是因为该信息是MPTCP+方法特有的。如果网络单元不支持MPTCP+方法并且具有多个路线可用,然后如果它在三次握手过程期间选择了错误的路线来引导分组,则如果分组之一丢失,当(并且以上详述的)INC创建子流时触发的时间延迟将再次允许重新开始三次握手过程。然而,该解决方案可致使创建MPTCP子流的等待时间。
在关于图9描述的示例实现中,使用特定三次握手过程来创建初始MPTCP子流。特定三次握手过程允许首尾相连地控制诸如源1001、接收器1006或INC 1002至1005的网络单元将要使用哪个路径来发送分组。
当由与MPTCP协议兼容但不与MPTCP+方法兼容的源或接收器发起用于创建MPTCP子流(初始、附加或补充)的过程时,接收三次握手过程的MPTCP SYN分组的与MPTCP+方法兼容的第一INC(例如,图9中的示例中的INC 1002)定义本地端口号的第一集合(诸如,端口号的范围),并且将包括表示所述本地端口号的第一集合的信息的报头INFO_SUBFLOW插入MPTCP SYN分组中。该本地端口号的第一集合对应于可由第一INC分配以用于在MPTCP子流的背景下通信的端口号的集合。
根据下文中详述的方法,MPTCP SYN分组经过的每个网络单元根据本地端口号的第一集合来定义本地端口号的第二集合,并且将表示本地端口号的第二集合的信息插入SYN分组的报头INFO_SUBFLOW中。MPTCP SYN分组经过的网络单元是除了第一INC外的INC(例如,图9中的示例的INC 1004)。由网络单元定义的本地端口号的第二集合均对应于可由所述网络单元分配以用于在MPTCP子流的背景下通信的端口号的集合。特定三次握手过程使用改编后的SYN分组报头INFO_SUBFLOW,改编后的SYN分组报头INFO_SUBFLOW被称为改编报头INFO_SUBFLOW。关于图14H描述改编报头INFO_SUBFLOW。改编报头INFO_SUBFLOW允许指定端口号的范围。在改编报头INFO_SUBFLOW中可发现字段1470、1471和1472,字段1470、1471和1472被分别称为传统MPTCP报头的Kind、Length和SubType。改编报头INFO_SUBFLOW还包括字段1473,字段1473被称为SubSubT,例如被编码成四比特,取允许识别改编报头INFO_SUBFLOW的特定值。字段SubSubT 1473之后是预留字段1474和字段1475,预留字段1474被称为Reserved,例如被编码成四比特,字段1475被称为Addr_Id,例如被编码成四比特,允许识别发起MPTCP子流的打开的网络单元的IP地址。报头INFO_SUBFLOW还包括字段1476和1477,字段1476和1477被分别称为Port_first和Port_last,例如被编码成十六比特,表示端口号的范围。
在步骤901中,源1001创建具有传统报头MP_CAPABLE的MPTCP SYN分组并且发送它。
在步骤902中,INC 1002接收在步骤902期间创建的MPTCP SYN分组。由于接收到的MPTCP SYN分组不包含报头INFO_SUBFLOW,因此INC 1002将表示源1001与MPTCP+方法不兼容的事实的信息保存在存储器中。此外,INC 1002将它是在从源1001通向INC 1006的路线上与MPTCP+方法兼容的第一INC的事实的信息保存在存储器中。
另外,在步骤902期间,INC 1002分配端口号的范围,允许识别将被用于与接收器1006通信的路径。所述范围的端口号可允许识别现有路径,或用于识别可从INC 1002打开的未来路径。每个路径与所分配的端口号的范围的子部分关联。例如,INC 1002可给五个路径分配从值“80”到值“5080”的端口号的范围,两个现有路径包括用于在接收器1006的方向上发送MPTCP SYN分组的路径和可在未来打开的三个假想路径。所述范围接下来被划分成五个子部分。从值“80”到值“1079”的第一子部分与用于在接收器1006的方向上发送MPTCPSYN分组的路径关联。从值“1080”到值“2079”的第二子部分与第二现有路径关联。为这些假想路径分配三个其它子部分。
接下来,INC 1002将关于图14H描述的改编报头INFO_SUBFLOW插入MPTCP SYN分组中。在步骤902期间,改编报头INFO_SUBFLOW的字段Addr_Id 1475取允许识别用于发送MPTCP SYN分组的源1001的IP地址的值,例如,字段Addr_Id1475取值“0”。字段port_first1475取由INC 1002分配的端口号的范围的、与用于在接收器1006的方向上发送MPTCP SYN分组的路径对应的子部分的最小值。字段Port_last 1477取由INC 1002分配的端口号的范围的、与用于在接收器1006的方向上发送MPTCP SYN分组的路径对应的子部分的最小值。再次以从值“80”到值“5080”的端口号的范围为例,字段Port_first 1476取值“80”并且字段Port_last 1477取值“1079”。
在步骤903期间,INC 1004接收包括由INC 1002引入的改编报头INFO_SUBFLOW的MPTCP SYN分组。INC 1004保存在报头INFO_SUBFLOW中由字段Port_first 1475和Port_last 1477指示的端口号的范围。由INC 1004保存的范围被划分成多个子部分,每个子部分对应于允许与接收器1006通信的现有或假想路径。如在INC 1002的情况下,INC 1004可将该范围划分成五个子部分,两个子部分对应于包括用于向INC 1005发送MPTCP SYN分组的路径的现有路径和三个假想路径。INC 1004修改MPTCP SYN分组的字段Port_first 1476和Port_last 1477,以指示用于发送MPTCP SYN分组的端口号的范围的子部分。再次以从值“80”到值“5080”的端口号的范围为例,字段Port_first 1476保持不变并且字段Port_last1477取值“279”。接下来,在接收器1006的方向上发送这样修改的MPTCP SYN分组。
在步骤904中,INC 1005接收MPTCP SYN分组。在步骤906中,INC 1005构造具有报头MP_CAPABLE和报头INFO_SUBFLOW的MPTCP SYN/ACK分组并且在源1001的方向上发送它。报头INFO_SUBFLOW是关于图14B描述的报头。步骤906期间创建的报头INFO_SUBFLOW的字段与步骤706期间创建的报头INFO_SUBFLOW的对应字段相同。
当接收到MPTCP SYN/ACK分组时,INC 1004实现与步骤707类似的步骤907。
在步骤908中,INC 1002接收MPTCP SYN/ACK分组。通过咨询报头INFO_SUBFLOW以及在步骤902期间在存储器中保存的信息,INC 1002依此推导出该分组意图用于与MPCTP+方法不兼容的源1001。为了供应适于源1001的SYN/ACK分组,INC 1002从MPTCP SYN/ACK分组中删除报头INFO_SUBFLOW。如此修改的SYN/ACK分组被发送到源1001。
应该注意,在步骤908的一个实现中,INC 1002不删除报头INFO_SUBFLOW。在这种情况下,源1001忽略报头INFO_SUBFLOW。
响应于MPTCP SYN/ACK分组,源1001在步骤909期间构造具有报头MP_CAPABLE的MPTCP ACK分组并且发送它。
在步骤910期间,INC 1002接收MPTCP ACK分组并且将报头INFO_SUBFLOW插入MPTCP ACK分组中。报头INFO_SUBFLOW是关于图14B描述的报头。
在步骤911期间,类似于步骤711,INC 1004接收MPTCP ACK分组。
由INC 1005接收到MPTCP ACK分组结束用于创建经中继的初始MPTCP子流的三次握手过程。所述经中继的初始MPTCP子流使用:在源1001和INC 1002之间,步骤901期间被用于发送没有MANAGE_SUBFLOW报头的MPTCP SYN分组的路径;在INC 1002和INC 1004之间,在步骤902期间被用于发送包括含有表示第一端口号范围的信息的改编报头INFO_SUBFLOW的MPTCP SYN分组的路径;以及在INC 1004和INC 1005之间,在步骤903期间被用于重新发送包括其中表示端口号的范围的信息被修改的改编报头INFO_SUBFLOW的MPTCP SYN分组的路径。
由INC 1005在步骤904期间接收到MPTCP SYN分组致使触发包括与步骤705、705和712相同的步骤904、905和912的被用于创建中继TCP流的三次握手过程。
使用与经中继的初始MPTCP子流对应的路径,如在MPTCP标准中说明的,以标准方式进行经中继的初始MPTCP子流的释放。在一个实施方式中,经中继的初始MPTCP子流的释放致使与中继TCP流的释放。如在TCP标准中说明的,中继TCP流的释放以标准方式进行。
图10示意性地描绘了实现根据本发明的用于在网络中打开新路径之后创建MPTCP连接的补充子流的方法的示例,在网络中,能够实现MPTCP协议但不能够实现本发明的源通过实现本发明的至少一个INC与TCP接收器通信。这里重复关于图7A描述的网络并且假定图10的示例实现遵循关于图9描述的经中继的初始MPTCP子流的创建。在图10的示例中创建的补充子流因此是经中继的补充MPTCP子流,其共享关于图9描述的示例实施方式中创建的经中继的初始MPTCP子流的源和接收器IP地址。
在图10中的示例中,中间路径从INC 1002开始并且在接收器1006的方向上打开。
在中间路径打开之后,发起关于步骤1101和1102描述的用信号发送新中间路径的打开的过程。INC 1002在步骤1101期间构造ADD_SUBFLOW型的报头。步骤1101期间构造的报头ADD_SUBFLOW与步骤801期间构造的报头ADD_SUBFLOW的不同之处仅在于存在可选字段Port。端口号被包括在端口号的范围的、与可用于步骤902中定义的经中继的补充MPTCP子流的路径对应的子部分中。例如,如果介于值“2080”和值“3079”之间的端口号的范围的子部分对应于未使用的路径,则端口号取值“2080”。
在步骤1102期间,INC 1002确定谁的包含报头ADD_SUBFLOW的DUP_ACK分组应该被发送。事实上,必须将这些分组发送到能够响应于这些分组的目的地。换句话讲,该目的地必须与MPTCP+方法兼容。在关于图10描述的示例中使用的网络中,源1001和接收器1006与MPTCP+方法不兼容。仅INC 1005与MPTCP+方法兼容,这是因为它实现与MPTCP方法兼容的TCP/MPTCP中继器的作用。将步骤1101期间构造的报头ADD_SUBFLOW插入例如多个DUP_ACK分组中,使用意图用于INC 1005并且经过INC 1002的不同现有MPTCP子流将每个DUP_ACK分组发送到INC 1005。
在接收到包含报头ADD_SUBFLOW的所述DUP_ACK分组中的至少一个之后,INC 1005在与步骤605类似的步骤1103中创建如关于图14G描述的包含ADD_ADDR2型的报头的DUP_ACK型的至少一个分组并且发送它。报头ADD_ADDR2的字段Addr_Id 1465和Address_IP1466分别取值“0”,对应于当在步骤902期间发送MPTCP SYN分组时字段Addr_Id 1475和报头INFO_SUBFLOW中使用的地址标识符以及与该标识符对应的IP地址。步骤902期间在字段Addr_Id 1475中使用的地址标识符的使用允许向源1001指示待创建的经中继的补充MPTCP子流是关于图9描述的示例实施方式中创建的经中继的初始MPTCP子流的补充子流。此外,INC 1005将可选字段Port 1467插入报头ADD_ADDR2中并且向报头ADD_ADDR2的字段Port1467赋予报头ADD_SUBFLOW的字段Port 1448(即,具有端口号“2080”的端口)的值。
在用于用信号发送新中间路径的打开的过程之后,在源1001和INC 1005之间进行三次握手过程。关于步骤1104至1107、1109至1111和1112至1114描述的该三次握手过程使得能够创建使用新路径的经中继的补充MPTCP子流。该三次握手过程是特定三次握手过程。
在接收到包含报头ADD_ADDR2的DUP_ACK分组中的至少一个之后,源1001在步骤1104期间创建包含传统报头MP_JOIN的MPTCP SYN分组并且发送它,如在MPTCP标准中描述的。包含报头MP_JOIN的SYN分组被发送到INC 1002的目的地端口,该目的地端口的端口号对应于在由源1001接收的报头ADD_ADDR2的字段Port(即,具有端口号“2080”的端口)中指示的端口号。
在步骤1105期间,INC 1002在与报头ADD_ADDR2中指示的端口号对应的目的地端口(即,具有端口号“2080”的端口)上接收包含报头MP_JOIN的MPTCP SYN分组。该目的地端口上的接收致使INC 1002能够确定存在与发起其创建的经中继的补充MPTCP子流有关的MPTCP SYN分组。然后,INC 1002构造改编报头INFO_SUBFLOW和报头MP_JOIN+。报头MP_JOIN+的字段Address_Id 1425取与步骤902期间创建的MPTCP SYN分组的改编报头INFO_SUBFLOW的字段Addr_Id1405相同的地址标识符值。不使用报头MP_JOIN+的字段Subflow_Id1424并且字段Subflow_Id 1424取任何值,例如,值“0”。这是因为,在该示例中,因为可用表示端口号的信息来识别子流,所以不再为了识别子流而必须使用字段Subflow_Id 1424。定义取决于在报头ADD_ADDR2中指示的端口号的本地端口号的集合,并且由INC 1002将该集合保存在存储器中。字段Port_first 1476取属于端口号值的范围的、与报头ADD_ADDR2中指示的端口号的值相同的子部分的端口号值。例如,字段Port_first 1476取在报头ADD_ADDR2中指示的端口号的值。字段Port_last 1477取包括在端口号的范围的、与分组ADD_ADDR2中指示的端口号相同的的子部分中的端口号值。例如,如果字段Port_first 1476取报头ADD_ADDR2中指示的值“2080”,则字段Port_last 1477取值“3079”。这样创建的报头MP_JOIN+和INFO_SUBFLOW被用于将报头MP_JOIN布置在步骤1105期间接收的MPTCP SYN分组中。然后,使用新路径在接收器1006的方向上发送这样修改的MPTCP SYN分组。
在步骤1106期间,INC 1004接收包含报头MP_JOIN+和报头INFO_SUBFLOW的MPTCPSYN分组。MPTCP SYN分组的接收向INC 1004指示创建经中继的补充MPTCP子流的阶段在进行中。INC 1004定义包括在由MPTCP SYN分组的字段Port_first 1476和Port_last 1477指示的端口号的范围中的本地端口号的集合。随后,INC 1004用表示由INC 1004定义的本地端口号的集合的值来替换MPTCP SYN分组的字段Port_first 1476和Port_last 1477的值。例如,如果由INC 1004接收到的端口号的范围位于值“2080”和值“3079”之间,则INC 1004可将字段Port_first 1476的值固定于“2080”并且将字段Port_last 1477的值固定于“2279”。接下来,在接收器1006的方向上发送这样修改的MPTCP SYN分组。
在步骤1107中,INC 1005接收MPTCP SYN分组。
在步骤1109中,INC 1005构造具有报头MP_JOIN+和报头INFO_SUBFLOW的MPTCPSYN/ACK分组并且在源1001的方向上发送该分组。不使用报头MP_JOIN+的字段Subflow_Id1434并且字段Subflow_Id 1434取任何值,例如,值“0”。报头INFO_SUBFLOW的字段TypeOfLink 1414和字段A 1415和B 1416分别给出关于新路径的指示和关于所使用的加密算法的指示。
当接收到MPTCP SYN/ACK分组时,INC 1004实现与步骤907类似的步骤。
在步骤1111期间,INC 1002接收MPTCP SYN/ACK分组。通过咨询报头INFO_SUBFLOW和在步骤902和1105中在存储器中保存的信息,INC 1002得知,该分组必须被发送到与MPCTP+方法不兼容的源1001。因此,在步骤1111期间,INC 1002删除MPTCP SYN/ACK分组的报头MP_JOIN+和INFO_SUBFLOW并且用传统的报头MP_JOIN替换它们。接下来,INC 1002将这样修改的MPTCP SYN/ACK分组发送到源1001。
应该注意,在步骤1111的实现中,INC 1002不用报头MP_JOIN替换报头MP_JOIN+和INFO_SUBFLOW。在这种情况下,源1001忽略与MPTCP+方法有关的报头和字段。
在步骤1112中,响应于接收到MPTCP SYN/ACK分组,源1001将具有传统报头MP_JOIN的MPTCP ACK分组发送到INC 1002的目的地端口,在源1001接收的报头ADD_ADDR2的字段Port中指示该目的地端口的端口号。
在步骤1113中,当在报头ADD_ADDR2的字段Port 1467中指示其端口号的目的地端口上接收到MPTCP ACK分组时,INC 1002得知存在与它发起的经中继的补充MPTCP子流有关的MPTCP ACK分组。在步骤1113期间,由INC 1002构造报头MP_JOIN+和报头INFO_SUBFLOW。从步骤1111期间接收的MPTCP SYN/ACK分组的对应字段复制字段TypeOfLink 1414、A 1415和B 1416。接下来,用报头MP_JOIN+和INFO_SUBFLOW来替换MPTCP ACK分组的报头MP_JOIN。这样修改的MPTCP ACK分组使用新路径在接收器1006的方向上被发送。
在步骤1114中,INC 1004接收MPTCP ACK分组。接下来,将MPTCP ACK分组重新发送到INC 1005,这结束三次握手过程。
这样创建的经中继的补充MPTCP子流由现有TCP流(诸如,例如,在步骤904、905和912期间创建的中继TCP流)中继。
图11示意性地示出了实现用于在网络中删除由INC发起的MPTCP连接的补充子流的方法的示例,在该网络中,能够实现MPTCP协议但不能够实现MPTCP+方法的源通过实现MPTCP+方法的至少一个INC与TCP接收器通信。这里重复关于图7描述的网络并且假定图11中的示例实现遵循关于图10描述的经中继的补充MPTCP子流的创建。
在关于图11描述的示例中,由发起创建补充子流的请求的INC(即,INC 1002)发起关闭阶段。在这种情况下,关闭阶段遵循与关于图5中的步骤519至521和524至543描述的MPTCP+方法特有的过程类似的过程。该过程开始于在步骤1120期间创建REMOVE_SUBFLOW型的报头。
每个报头REMOVE_SUBFLOW的字段SF_Id 1454取默认值,例如,“0”。这是因为在图11中的示例中,待删除的MTPCP子流的识别使用由INC 1002用于发送经中继的补充MPTCP子流的端口号,而不是字段SF_Id 1454的值。
报头REMOVE_SUBFLOW的字段Addr_Id 1455取与在步骤1101期间由INC 1002构造的报头ADD_SUBFLOW的字段Addr_Id 1445相同的值。
报头REMOVE_SUBFLOW的字段D取向源1001指示必须发起关闭经中继的补充MPTCP子流的过程的值。在这个示例中,字段Port 1458取例如用于步骤1110期间的示例的由INC1002用于发送经中继的补充PMPTCP子流的端口的值。
在步骤1122中,将步骤1120期间创建的报头REMOVE_SUBFLOW插入经过INC 1002并且意图用于INC 1005的至少一个DUP_ACK分组中,INC 1005是图11中的网络中的能够对包含报头REMOVE_SUBFLOW的分组作出响应的唯一实体。在一个实施方式中,每个DUP_ACK分组在经过INC 1002的意图用于源1001的不同MPTCP子流中被发送。
当INC 1005接收到包含报头REMOVE_SUBFLOW的DUP_ACK分组时,INC 1005发起关闭补充MPTCP子流的阶段。该阶段开始于在步骤1123中由INC 1005在INC 1002的方向上发送FIN分组。INC 1005使用报头REMOVE_SUBFLOW的字段port 1458中指示的端口号来识别待删除的MPTCP子流。
在步骤1124中,INC 1004分析FIN分组并且在INC 1002的方向上传播FIN分组。
在步骤1125中,INC 1002在由报头REMOVE_SUBFLOW的字段port 1458指示的端口上接收FIN分组。在该端口上接收到FIN分组向INC 1002指示删除由其创建被发送的经中继的补充MPTCP子流的阶段在进行中。
在步骤1126期间,响应于接收到源自INC 1002的FIN分组,源1001发送在报头REMOVE_SUBFLOW的字段port 1458中指示的INC 1002的端口上接收到FIN分组的确认。
在步骤1127阶段,INC 1002接收在报头REMOVE_SUBFLOW的字段port 1458中指示的INC 1002的端口上接收到FIN分组的确认并且将该分组重新发送到INC 1004。
在步骤1128中,INC 1004接收接收到FIN分组的确认并且将它重新发送到INC1005。步骤1128结束在INC 1005处删除经中继的补充MPTCP子流的过程。
接下来,由源1001发起关闭经中继的补充MPTCP子流的阶段。该阶段开始于在步骤1129期间由源1001在INC 1005的方向上发送FIN分组。
在步骤1130中,INC 1002接收FIN分组并且将它重新发送到INC 1004。在步骤1131中,INC 1004接收FIN分组并且将它重新发送到INC 1005。
在步骤1134期间,响应于接收到FIN分组,INC 1005在INC 1002的方向上发送接收到FIN分组的确认。
在步骤1135期间,INC 1004接收接收到FIN分组的确认并且将它重新发送到INC1002。
在步骤1136期间,INC 1002接收接收到FIN分组的确认,该确认向INC 1002指示删除经中继的补充MPTCP子流的阶段正在结束。另外,INC 1002得知它必须将接收到FIN分组的确认发送到源1001。
由源1001接收到FIN分组的确认的接收结束删除经中继的补充MPTCP子流的过程。
图12A示意性地示出了实现根据本发明的用于在网络中创建初始MPTCP子流的方法的示例,在网络中,TCP源通过实现MPTCP+方法的INC与TCP接收器通信,实现MPTCP+方法的INC中的两个是TCP/MPTCP中继器。
在关于图12A描述的示例中,重新使用关于图1描述的网络。然而,在图12A的示例中,源1001和接收器1006与MPTCP协议和MPTCP+方法不兼容并且使用TCP协议进行通信。INC1002和1005是TCP/MPTCP中继器并且与MPTCP+方法兼容。
此外,这里假定在源1001和接收器1006之间只存在一条路线,使得在网络单元将使用的路径上绝无任何不明确。这个示例中使用的SYN分组的报头INFO_SUBFLOW因此是关于图14A描述的报头。
在步骤1200中,源1001开始第一个三次握手过程,以便在源1001和INC 1002之间创建TCP流。为此目的,源1001将TCP SYN分组发送到INC 1002。在步骤1209中,INC 1002将TCP SYN/ACK分组发送到源1001。在源1001和INC 1002之间创建TCP流的第一个三次握手过程结束于步骤1210,在步骤1210期间,源1001将TCP ACK分组发送到INC 1002。这样创建的TCP流是中继TCP流,这是因为如下文中描述的,它允许在源1001和INC 1002之间中继从MPTCP子流发布的数据。在源1001和INC 1002之间创建的中继TCP流被称为源中继TCP流。
在由源1001接收到在步骤1200期间发送的TCP SYN分组之后,INC 1002发起第二个三次握手过程,以便创建初始MPTCP子流。该初始MPTCP子流使用例如与关于图4通过步骤401至415描述的在创建初始MPTCP子流中使用的六元组相同的六元组。在关于图12A描述的示例的情况下,初始MPTCP子流是首先由源中继TCP流中继的初始MPTCP子流,并且如下文中描述的,被INC 1005和接收器1006之间的中继TCP流中继,该中继TCP流被称为接收器中继TCP流。该第二个三次握手过程开始于步骤1201,创建具有报头MP_CAPABLE和报头INFO_SUBFLOW的MPTCP SYN分组并且发送它。在图12A中的示例中,从MPTCP连接的角度来看,INC1002表现得如同源一样。报头MP_CAPABLE和INFO_SUBFLOW因此与由源1001在步骤401期间构造的报头MP_CAPABLE和INFO_SUBFLOW相同。
此外,在步骤1201期间,INC 1002进行源中继MPTCP流和正创建的经中继的初始MPTCP流之间的关联。通过进行该关联,INC 1002确保由INC 1002接收到的每个TCP分组被切换成经中继的初始MPTCP子流并且由INC 1002接收的每个MPTCP分组被切换成源中继TPC流。
一旦被创建,包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP SYN分组就在接收器1006的方向上被发送。
在与步骤403相同的步骤1202中,INC 1003接收包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP SYN分组并且在接收器1006的方向上重新发送它们。在与步骤404相同的步骤1203中,INC 1004接收包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP SYN分组并且在接收器1006的方向上重新发送它们。
在步骤1204中,INC 1005接收包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP SYN分组并且确定该分组意图用于接收器1006。然后,INC 1005使用第三个三次握手过程来创建接收器中继TCP流。该过程包括:在步骤1204期间将TCP SYN分组发送到接收器1006,响应于TCP SYN分组由接收器1006在步骤1205期间发送TCP SYN/ACK分组,以及由INC 1005在步骤1214期间发送接收到TCP SYN/ACK分组的确认。以与INC 1002已进行源中继TCP流和经中继的初始MPTCP流之间的关联相同的方式,在步骤1204期间,INC 1005进行接收器中继TCP流和经中继的初始MPTCP子流之间的关联。通过进行该关联,INC 1005确保由INC 1005接收的每个TCP分组被切换成经中继的初始MPTCP子流并且由INC 1005接收的每个MPTCP分组被切换成接收器中继TCP流。
在步骤1206期间,在接收到包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP SYN分组之后,INC 1005构造包含报头MP_CAPABLE和报头INFO_SUBFLOW的MPTCP SYN/ACK分组。在关于图12A描述的示例中,INC 1005表现得如同接收器一样。报头MP_CAPABLE和INFO_SUBFLOW因此与由接收器1006在步骤406期间构造的报头MP_CAPABLE和INFO_SUBFLOW相同。
一旦被创建,就在源1001的方向上发送包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP SYN/ACK分组。
在与步骤408相同的步骤1207中,INC 1004接收包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP SYN/ACK分组并且在源1001的方向上重新发送它。在与步骤409相同的步骤1208中,INC 1003接收包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP SYN/ACK分组并且在源1001的方向上重新发送它。
在步骤1211期间,在接收到包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP SYN/ACK分组之后,INC 1002构造包含分别与在步骤411期间构造的报头MP_CAPABLE和报头INFO_SUBFLOW相同的报头MP_CAPABLE和报头INFO_SUBFLOW的MPTCP ACK分组。
在与步骤413相同的步骤1212中,INC 1003接收包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP ACK分组并且在接收器1006的方向上重新发送它。在与步骤404相同的步骤1203中,INC 1004接收包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP ACK分组并且在接收器1006的方向上重新发送它。
允许创建经中继的初始MPTCP子流的三次握手过程结束于由INC 1005接收到包含报头MP_CAPABLE和INFO_SUBFLOW的MPTCP ACK分组。
然后,源1001和接收器1006可使用源1001和INC 1002之间的源中继TCP流、INC1002和INC 1005之间的经中继的初始MPTCP子流以及INC 1005和接收器1006之间的接收器中继TCP流进行通信。
图12B示意性地示出了实现根据本发明的用于在网络中创建附加MPTCP子流的方法的示例,在网络中,TCP源通过实现MPTCP+方法的INC与TCP接收器通信,实现MPTCP+方法的INC中的两个是TCP/MPTCP中继器。
在关于图12描述的示例中,重新使用关于图1描述的网络。如在图12A的示例中一样,源1001和接收器1006与MPTCP协议和MPTCP+方法不兼容并且使用TCP协议进行通信。INC1002和1005是TCP/MPTCP中继器并且与MPTCP+方法兼容。
另外,假定关于图12B描述的实施方式遵循关于图12A描述的实施方式,使得在图12B中的示例中创建的附加MPTCP子流是属于与经中继的初始MPTCP子流相同的MPTCP连接的附加MPTCP子流,经中继的初始MPTCP子流的创建关于图12A被描述。附加MPTCP流是经中继的附加MPTCP子流,这是因为以下描述了使用两个中继TCP流来中继它。
还假定用于中继经中继的附加MPTCP子流的中继TCP流是在关于图12A描述的实现期间创建的源中继TCP流和接收器中继TCP流。换句话讲,不特别针对经中继的附加MTPCP子流创建中继TCP流。因此,它是被用于中继经中继的初始TCP子流和经中继的附加MPTCP子流的相同中继MPTCP子流。
在步骤1221中,INC 1002发起三次握手过程来创建经中继的附加MPTCP子流。经中继的初始MPTCP子流使用例如与关于图4通过步骤416至430描述的在创建附加MPTCP子流中使用的六元组相同的六元组。该第三个三次握手过程开始于在步骤1221创建具有报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP SYN分组并且发送它。报头MP_CAPABLE和INFO_SUBFLOW分别与由源1001在步骤416期间构造的报头MP_CAPABLE和INFO_SUBFLOW相同。
此外,在步骤1221期间,INC 1002进行源中继MPTCP流和正创建的经中继的附加MPTCP流之间的关联。
通过进行该关联,INC 1002确保由INC 1002接收的每个TCP分组被切换成经中继的初始MPTCP子流或经中继的附加子流。待使用的MPTCP子流的选择取决于例如表示每个MPTCP子流的使用水平的信息。此外,由INC 1002接收的每个MPTCP分组被切换成源中继TCP流,而无论它是源自经中继的初始MPTCP子流还是源自经中继的附加MPTCP子流。
一旦被创建,就在接收器1006的方向上发送包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN分组。
在与步骤418相同的步骤1222中,INC 1003接收包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN分组并且在接收器1006的方向上重新发送它。在与步骤419相同的步骤1223中,INC 1004接收包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN分组并且在接收器1006的方向上重新发送它。
在步骤1226中,INC 1004接收包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN分组并且进行接收器中继TCP流和经中继的附加MPTCP流之间的关联。通过进行该关联,INC1005确保由INC 1005接收的每个TCP分组被切换成经中继的初始MPTCP子流或经中继的附加MPTCP子流。待使用的MPTCP子流的选择由INC 1005例如根据每个MPTCP子流的使用水平来确定。另外,由INC 1005接收的每个MPTCP分组被切换成接收器中继TCP流。
此外,在步骤1226期间,在接收到包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN分组之后,INC 1005构造包含报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP SYN/ACK分组。报头MP_JOIN+和INFO_SUBFLOW分别与由接收器1006在步骤421期间构造的报头MP_JOIN+和INFO_SUBFLOW相同。
一旦被创建,就在源1001的方向上发送包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN/ACK分组。
在与步骤423相同的步骤1227中,INC 1004接收包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN/ACK分组并且在源1001的方向上重新发送它。在与步骤424相同的步骤1228中,INC 1003接收包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN/ACK分组并且在源1001的方向上重新发送它。
在步骤1231期间,在接收到包含报头MP_JOIN+和INFO_SUBFLOW的MPTCPSYN/ACK分组之后,INC 1002构造包含分别与均由源1001在步骤426期间构造的报头MP_JOIN+和报头INFO_SUBFLOW相同的报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP ACK分组。
在与步骤428相同的步骤1232中,INC 1003接收包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP ACK分组并且在接收器1006的方向上重新发送它。在与步骤429相同的步骤1233中,INC 1004接收包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP ACK分组并且在接收器1006的方向上重新发送它。
使得能够创建经中继的附加MPTCP子流的三次握手过程结束于由INC 1005接收到包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP ACK分组。
然后,源1001和接收器1006可使用源1001和INC 1002之间的源中继TCP流、INC1002和INC 1005之间的经中继的初始MPTCP子流和经中继的附加MPTCP子流以及INC 1005和接收器1006之间的接收器中继流进行通信。
图13示意性地示出了实现根据本发明的用于在网络中创建补充MPTCP子流的方法的示例,在网络中,TCP源通过实现MPTCP+方法的INC与TCP接收器通信,实现MPTCP+方法的INC中的两个是TCP/MPTCP中继器。
在关于图13描述的示例中,再次使用关于图1描述的网络。如在图12A的示例中,源1001和接收器1006与MPTCP协议和MPTCP+方法不兼容并且使用TCP协议进行通信。INC 1002和1005是TCP/MPTCP中继器并且与MPTCP+方法兼容。
此外,假定关于图13描述的实施方式遵循关于图12A和图12B描述的实施方式。假定图13中的示例中创建的补充MPTCP子流是经中继的初始MPTCP子流的补充MPTCP子流,初始MPTCP子流的创建关于图12A被描述。补充MPTCP流是经中继的补充MPTCP流,这是因为下文中描述使用两个中继TCP流来中继它。
还假定被用于中继经中继的补充MPTCP子流的中继TCP流是在关于图12A描述的实施方式中创建的源中继TCP流和接收器中继TCP流。
在图13中的示例实施方式中,新中间路径在接收器1003的方向上从INC 1005打开。创建经中继的补充MPTCP子流的一个目的是使用该新中间路径。
用于创建经中继的补充MPTCP子流的方法非常近似于关于图5描述的用于创建MPTCP子流的方法。这是因为该方法包括用于用信号发送并且打开新中间路径的过程和INC1002与INC 1005之间的三次握手过程,从MPTCP连接的角度来看,INC 1002表现得如同源一样,从MPTCP连接的角度来看,INC 1005表现得如同接收器一样。
在关于图13描述的示例实施方式中,经中继的补充MPTCP子流共享关于图12A描述的实施方式中创建的经中继的初始MPTCP子流的源和接收器IP地址以及源和接收器端口号。
在步骤1300中,INC 1003开始通过构造ADD_SUBFLOW型的报头来用信号发送中间路径的打开的过程。
在步骤1301期间,INC 1003将字段SF_Id 1444和Addr_Id 1445设置成允许识别哪个初始或附加MPTCP子流必须充当用于创建经中继的补充MPTCP子流的基础的值。由于在图13中的示例中,使用经中继的初始MPTCP子流,因此字段SF_Id 1444和Addr_Id 1445取与经中继的初始MPTCP子流对应的值。字段D 1446取值“0”,以指示INC 1002发起补充MPTCP子流的创建。字段Seq_Req 1447取由INC 1003确定的随机值“AL3”。字段Seq_Req 1447的随机值“AL3”被存储在INC 1003的存储器中。在这个示例中,不使用报头ADD_SUBFLOW的可选字段Port 1448,这是因为不存在关于在INC 1002和INC 1005之间将遵循的路线的不明确性。
用于用信号发送打开新中间路径的过程继续进行至步骤1301,在步骤1301期间,报头ADD_SUBFLOW被插入意图用于源1001的至少一个DUP_ACK分组中。在一个实施方式中,使用意图用于源1001的多个现有MPTCP子流,将报头ADD_SUBFLOW插入经过INC 1003的多个DUP_ACK分组中。
在接收到包含报头ADD_SUBFLOW的DUP_ACK分组中的至少一个之后,INC 1002将经中继的补充MPTCP子流与源中继TCP流关联。通过进行该关联,INC 1002确保由INC 1002接收的每个TCP分组被切换成MPTCP子流(经中继的初始、经中继的附加或经中继的补充)中的一个。待使用的MPTCP子流的选择也可取决于表示每个MPTCP子流的使用水平的信息。另外,由INC 1002接收的每个MPTCP分组被切换成源中继TCP流,而无论它是源自经中继的初始MPTCP子流、源自经中继的附加MPTCP子流还是源自经中继的补充MPTCP子流。
此外,在步骤1302期间,INC 1002发起三次握手过程来创建经中继的补充MPTCP子流。三次握手过程开始于在步骤1302期间由INC 1002创建包含报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP SYN分组,并且然后进行发送。
步骤1221期间创建的MPTCP SYN分组非常类似于步骤504期间创建的MPTCP SYN分组。仅报头INFO_SUBFLOW的字段Seq_Req 1406的值是不同的,并且取随机值“AL3”。
在与步骤506相同的步骤1303中,INC 1003接收包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN分组。通过读取报头INFO_SUBFLOW的字段Seq_Req 1406的值,INC1003确定该分组与用于创建其发起的经中继的补充MPTCP子流的过程有关,并且依此推导出必须使用新中间路径将该分组重新发送到INC 1005。
在与步骤507相同的步骤1304中,INC 1004接收包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN分组并且将它重新发送到INC 1005。
在接收到包含报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN分组之后,INC 1005在步骤1305期间构造具有报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP SYN/ACK分组并且发送它。步骤1305期间创建的SYN/ACK分组与步骤509期间创建的SYN/ACK分组相同。
在与步骤511和512分别相同的步骤1306和1307期间,INC 1004和1003接收包括报头MP_JOIN+和INFO_SUBFLOW的MPTCP SYN/ACK分组并且将它重新发送到INC 1002。
在步骤1308期间,INC 1002创建包括报头MP_JOIN+和报头INFO_SUBFLOW的MPTCPACK分组。报头MP_JOIN+和INFO_SUBFLOW分别与由源1001在步骤514期间构造的报头MP_JOIN+和INFO_SUBFLOW相同。
在与步骤516和517分别相同的步骤1309和1310期间,INC 1003和1004接收包括报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP ACK分组并且使用新中间路径将它重新发送到INC 1005。当INC 1005接收到包括报头MP_JOIN+和报头INFO_SUBFLOW的MPTCP ACK分组时,用于创建经中继的补充MPTCP子流的方法结束。
然后,源1001和接收器1006可使用源1001和INC 1002之间的源中继TCP流、INC1002和INC 1005之间的经中继的初始MPTCP子流、经中继的附加MPTCP子流和经中继的补充MPTCP子流、以及INC 1005和接收器1006之间的接收器中继流进行通信。
在关于图12A、图12B和图13描述的示例实施方式中,可以用能够实现封装的网络单元替换每个TCP/MPTCP中继器。在这种情况下,不是被中继,而是每个TCP流被封装在由多个MPTCP子流构成的MPTCP连接中。使用能够实现封装的网络单元对用于创建MPTCP子流的方法没有影响。
在特定实施方式中,用能够实现将MPTCP子流封装在TCP流中的网络单元来替换这些TCP/MPTCP中继器。
在该特定实施方式中,每个封装后的TCP流被称为“待封装的TCP流”,并且用于封装TCP流的每个MPTCP子流(初始、附加或补充)被称为“封装MPTCP子流(初始、附加或补充)”。
用于创建初始封装MPTCP子流、和附加封装MPTCP子流和补充封装MPTCP子流的三次握手过程分别与关于图12A、图12B和图13描述的用于创建初始中继的MPTCP子流、附加中继的MPTCP子流和补充中继的MPTCP子流的三次握手过程。然而,在这种情况下,只要创建了封装,就建立初始封装MPTCP子流和附加封装MPTCP子流。在使用能够实现将多个TCP连接封装在MPTCP连接中的网络单元的特定实施方式中,仅INC 1002和1005具有不同行为。这是因为,不是由MPTCP子流中继TCP流和由TCP流中继MPTCP子流,而是INC 1002和1005将TCP流封装在MPTCP子流中并且解封装MPTCP流的这些TCP流。
源1001和接收器1006接下来可以显然地使用在INC 1002和INC 1005之间配置的MPTCP型的封装,在从源1001到接收器1006的方向上通信。

Claims (22)

1.一种用于使用适于多路径通信模式的传输协议来创建补充数据分组子流作为被称为多路径网络连接的网络连接中存在的数据分组子流的补充的方法,所述多路径网络连接在包括多个网络单元的通信网络中实现,所述多个网络单元中的第一网络单元使用连接集合,所述连接集合包括用于经由所述多个网络单元中的第三网络单元与所述多个网络单元中的第二网络单元通信的所述多路径网络连接,所述第三网络单元被称为中间网络组件,其特征在于,在打开从所述中间网络组件开始并且在所述第二网络单元的方向上的中间通信路径之后,所述中间网络组件实现以下步骤:
●获得(502、802、1102、1301)意图用于所述第一网络单元或所述第二网络单元并且与所述传输协议兼容的分组;
●创建(501、801、1101、1300)第一类型的报头,所述第一类型的报头表示创建所述补充数据分组子流的请求,所述补充数据分组子流意图用于在创建所述补充数据分组子流之后,在数据分组传递阶段中使用所述中间通信路径;
●将所述第一类型的所述报头插入(502、802、1102、1301)所述分组中;
●在所述目的地的方向上发送(502、802、1102、1301)所述分组,以致使由所述第一网络单元或所述第二网络单元发起用于在所述多路径网络连接的背景下创建所述补充数据分组子流的过程。
2.根据权利要求1所述的方法,其特征在于,对于在所述多路径网络连接的背景下创建的每个子流,所述中间网络组件使用所创建的所述子流中的至少一个向在数据分组传递阶段期间发送的每个分组应用加速处理过程,并且所述中间网络组件中断用于所创建的所述子流中的至少一个的所述加速处理过程,以使得能够获得其中将被插入所述第一类型的报头的所述分组并且发送其中已经被插入所述第一类型的所述报头的所述分组。
3.根据权利要求1或2所述的方法,其特征在于,用于创建所述补充数据分组子流的所述过程包括在所述多个网络单元中的两个网络单元之间实现的三次握手过程,所述三次握手过程包括:
●创建第一同步分组并且经由所述中间网络组件在所述第二网络单元的所述方向上发送所述第一同步分组的第一步骤(504、803、1104、1302);
●创建第二同步分组并且经由所述中间网络组件在所述第一网络单元的方向上发送所述第二同步分组的第二步骤(509、809、1109、1305),所述第二同步分组能够确认所述第一同步分组的接收;
●创建接收确认分组并且经由所述中间网络在所述第二网络单元的所述方向上发送所述接收确认分组的第三步骤(514、811、1112、1308);
在所述三次握手过程期间交换的至少一个分组包括第二类型的报头,所述第二类型的报头包括致使在所述数据分组传递阶段期间使用所述中间通信路径的信息。
4.根据权利要求3所述的方法,其特征在于,所述第一同步分组的所述第二类型的所述报头由所述第一网络单元(504、803)创建并且被插入所述第一同步分组中。
5.根据权利要求3所述的方法,其特征在于,所述第一同步分组的所述第二类型的所述报头由所述中间网络组件创建并且被插入(1105)所述第一同步分组中。
6.根据权利要求5所述的方法,其特征在于,所述第二同步分组的所述第二类型的所述报头在被发送到所述第一网络单元之前,由所述中间网络组件从所述第二同步分组删除(1111)。
7.根据权利要求6所述的方法,其特征在于,所述接收确认分组的所述第二类型的所述报头由所述中间网络组件创建并且被插入(1113)所述接收确认分组中。
8.根据权利要求1至4中的任一项所述的方法,其特征在于,当创建(501、801、1300)所述第一类型的所述报头时,所述中间网络组件确定随机序列号并且将所述随机序列号插入所述第一类型的所述报头中,所述随机序列号由所述中间网络组件用来识别(506、512、516、804、810、812、1303、1307、1309)在所述三次握手过程的背景下经由所述中间网络组件在所述源和所述接收器之间交换的分组。
9.根据从属于权利要求4的权利要求8所述的方法,其特征在于,当创建所述第一同步分组时,由所述中间网络组件确定的所述随机序列号值被复制到所述第二类型的所述报头的第一字段中,使得当所述中间网络组件随后接收到包括其值与所述随机序列号的值相等的第一字段的第一同步分组时,所述中间网络组件确定(506、804、1303)所述第一同步分组与用于创建所述补充数据分组子流的过程有关并且依此推导出必须使用所述中间通信路径来发送所述第一同步分组。
10.根据权利要求9所述的方法,其特征在于,当创建所述第一同步分组时,由所述第一网络单元定义的子流标识符归因于所述补充子流并且被插入所述第二类型的所述报头的第二字段中,并且在由所述中间网络组件接收到包括其值与所述随机序列号的值相等的第一字段的所述第一同步分组时,所述中间网络组件将插入所述第二类型的所述报头的所述第二字段中的由所述第一网络单元定义的所述子流标识符与所述中间路径关联,使得由所述第一网络单元在所述数据分组传递阶段期间发送的每个分组使用所述中间通信路径。
11.根据权利要求10所述的方法,其特征在于,当创建所述第一同步分组时,所述中间子流与所述第一网络单元的地址关联,所述地址已经由所述现有数据分组子流使用,并且所述第一网络单元的所述地址的标识符被插入所述第二类型的所述报头的第三字段中,并且当所述第一同步分组由所述中间网络组件接收时,所述中间网络组件将所述第一网络单元的所述地址的所述标识符与所述子流标识符关联。
12.根据权利要求5至7中的任一项所述的方法,当创建(1101)所述第一类型的所述报头时,所述中间网络组件确定与属于传送路径的通信路径关联的端口号的第一集合中的第一端口号,所述传送路径用于发送其中插入所述第一类型的所述报头的所述分组,并且所述中间网络组件将表示所述第一端口号的信息插入所述第一类型的所述报头中,所述信息表示所述第一端口号由所述中间网络组件用来识别(1105、1113)在所述三次握手过程的背景下经由所述中间网络组件在所述源和所述接收器之间交换的分组。
13.根据权利要求12所述的方法,其特征在于,所述目的地是所述第一网络单元或所述第二网络单元,并且当所述目的地是所述第二网络单元时,所述第二网络单元实现以下步骤:
●创建(1103)第三类型的报头,所述第三类型的所述报头包括表示所述第一端口号的信息;
●获得(1103)意图用于所述第一网络单元的分组;
●将所述第一类型的所述报头插入(1103)所获得的所述分组中;以及
●在所述第一网络单元的方向上发送(1103)所述分组,使得所述第一网络单元使用与所述第一端口号对应的目的地端口与所述中间网络组件通信(1104)。
14.根据权利要求13所述的方法,其特征在于,所述第一同步分组被发送(1104)到与所述第一端口号对应的所述中间网络组件的端口,在与所述第一端口号对应的所述中间网络组件的所述端口上接收所述第一同步分组使所述中间网络组件能够确定(1105)所述第一同步分组与用于创建所述补充数据分组子流的过程相关并且依此推导出必须使用所述中间通信路径来发送所述第一同步分组。
15.根据权利要求14所述的方法,其特征在于,当创建(1105)插入所述第一同步分组中的所述第二类型的所述报头时,所述中间网络组件将表示取决于所述第一端口号的本地端口号的第一集合的信息插入所述第二类型的所述报头中,所述多个网络单元中的所述第一同步分组经过的每个网络单元定义(1106)在通过表示在所述第二类型的所述报头中接收的本地端口号的集合的信息所表示的所述端口号的集合中包括的本地端口号的第二集合,并且用表示所述本地端口号的所述第二集合的信息来替换表示所述第二类型的所述报头中包含的本地端口号的集合的所述信息。
16.根据权利要求13至15中的任一项所述的方法,其特征在于,所述接收确认分组被发送(1112)到与所述第一端口号对应的所述中间网络组件的端口,在与所述第一端口号对应的所述中间网络组件的所述端口上接收所述接收确认分组使所述中间组件能够确定(1113)所述接收确认分组与用于创建所述补充数据分组子流的过程相关并且依此推导出必须使用所述中间通信路径来发送所述接收确认分组。
17.根据权利要求8至11中的任一项所述的方法,其特征在于,为了关闭所述补充子流,所述中间网络组件执行以下步骤:
●获得(520、820、1301)其目的地是所述第一网络单元或所述第二网络单元并且与所述发送协议兼容的数据分组;
●创建(519、819、1300)第四类型的报头,所述第四类型的所述报头表示关闭所述补充数据子流的请求,
●将所述第四类型的所述报头插入(520、820、1301)所述分组中;
●在所述目的地的方向上发送(520、820、1301)所述分组,以致使由所述第一网络单元或所述第二网络单元发起关闭所述补充数据子流的过程。
18.根据从属于权利要求8至11的权利要求17所述的方法,其特征在于,当创建所述第四类型的所述报头时,多个信息条目被插入所述第四类型的所述报头中,所述多个信息条目包括与所述补充数据分组子流关联的地址的标识符、与所述补充数据子流关联的所述子流的标识符、和指示哪个网络单元必须发起用于关闭所述补充数据分组子流的过程的值,使用所述多个信息条目以关闭所述第一网络单元和所述第二网络单元处的所述补充子流。
19.根据从属于权利要求12至16的权利要求17所述的方法,其特征在于,当创建所述第四类型的所述报头时,多个信息条目被插入所述第四类型的所述报头中,所述多个信息条目包括与所述补充数据分组子流关联的地址的标识符、表示所述第一端口号的信息和指示哪个网络单元必须发起用于关闭所述补充数据分组子流的过程的值,使用所述多个信息条目以关闭所述第一网络单元和所述第二网络单元处的所述补充子流。
20.根据前述权利要求中的任一项所述的方法,其特征在于,所述连接集合包括单路径连接,并且所述中间网络组件在单路径连接的流中中继多路径连接的子流或者将多路径连接的子流封装在单路径连接的流中,所述三次握手过程的所述第一步骤和所述第三步骤和/或所述三次握手过程的所述第二步骤由中间网络组件实现。
21.一种中间网络组件类型的装置,所述装置能够使用适于多路径通信模式的传输协议来创建补充数据分组子流作为被称为多路径网络连接的网络连接中存在的数据分组子流的补充,所述多路径网络连接在包括多个网络单元的通信网络中使用,所述多个网络单元中的第一网络单元使用连接集合,所述连接集合包括用于经由所述装置与所述多个网络单元中的第二网络单元通信的所述多路径网络连接,其特征在于,所述装置包括在打开从所述装置开始且在所述第二网络单元的方向上的中间通信路径之后使用的以下装置:
●用于获得目的用于所述第一网络单元或所述第二网络单元并且与所述传输协议兼容的分组的装置(502、802、1102、1301);
●用于创建第一类型的报头的装置(501、801、1101、1300),所述第一类型的所述报头表示创建所述补充数据分组子流的请求,所述补充数据分组子流意图用于在创建所述补充数据分组子流之后,在数据分组传递阶段中使用中间通信路径;
●用于将所述第一类型的所述报头插入所述分组中的装置(502、802、1102、1301);
●用于在所述分组的所述目的地的方向上发送所述分组,以致使经由所述第一网络单元或所述第二网络单元发起在所述多路径网络连接的背景下创建所述补充数据分组子流的过程的装置(501、801、1101、1300)。
22.一种通信系统,所述通信系统包括至少一个根据权利要求21所述的中间网络组件类型的装置和多个网络单元,所述多个网络单元包括第一网络单元和第二网络单元,所述第一网络单元和所述第二网络单元能够使用适于多路径通信模式的传输协议利用包括被称为多路径网络连接的连接的连接集合进行通信,所述第一网络单元包括在打开从所述中间网络组件类型的所述装置开始且在所述第二网络单元的方向上的所述中间通信路径之后使用的以下装置:
●用于创建第一同步分组并且经由所述中间网络组件类型的所述装置在所述第二网络单元的方向上发送第一同步分组的装置(504、803、1104、1302);
●用于创建接收确认分组并且响应于源自所述第二网络单元的第二同步分组经由所述中间网络组件类型的所述装置在所述第二网络单元的方向上发送所述接收确认分组的装置(514、811、1112、1308);
所述第二网络单元包括在打开所述中间通信路径之后使用的以下装置:
●用于创建第二同步分组并且经由所述中间网络组件类型的所述装置在所述第一网络单元的方向上发送所述第二同步分组的装置(509、809、1109、1305),所述第二同步分组能够确认所述第一同步分组的接收;
至少一个分组包括第二类型的报头,所述第二类型的所述报头包括致使在所述补充数据分组子流的背景下在数据分组传递阶段期间使用所述中间通信路径的信息。
CN201580067294.2A 2014-10-20 2015-10-15 创建数据分组的子流的方法、装置、通信系统和存储装置 Expired - Fee Related CN107005470B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1460060 2014-10-20
FR1460060A FR3027478B1 (fr) 2014-10-20 2014-10-20 Procede de creation d'un sous flux de paquets de donnees.
PCT/EP2015/073862 WO2016062606A1 (fr) 2014-10-20 2015-10-15 Procédé de création d'un sous flux de paquets de données

Publications (2)

Publication Number Publication Date
CN107005470A true CN107005470A (zh) 2017-08-01
CN107005470B CN107005470B (zh) 2020-06-05

Family

ID=52627299

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580067294.2A Expired - Fee Related CN107005470B (zh) 2014-10-20 2015-10-15 创建数据分组的子流的方法、装置、通信系统和存储装置

Country Status (6)

Country Link
US (1) US10270684B2 (zh)
EP (1) EP3210346B1 (zh)
CN (1) CN107005470B (zh)
BR (1) BR112017007972A2 (zh)
FR (1) FR3027478B1 (zh)
WO (1) WO2016062606A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2922416T3 (es) * 2016-09-15 2022-09-14 Alcatel Lucent Transmisión de trayectoria múltiple de datos
US10819524B2 (en) * 2016-10-19 2020-10-27 Qualcomm Incorporated Methods for header extension preservation, security, authentication, and protocol translation for RTP over MPRTP
US10389541B1 (en) * 2017-10-19 2019-08-20 Amdocs Development Limited System, method, and computer program for implementing rating, charging and policy control of multipath communication services
US12058031B2 (en) * 2018-02-22 2024-08-06 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatuses for proxying a multi-path protocol connection
US10965788B2 (en) * 2019-03-18 2021-03-30 Hewlett Packard Enterprise Development Lp Multi-path transmission control protocol (MP-TCP) option tunneling for MP-TCP proxies
US11252264B1 (en) * 2020-07-22 2022-02-15 Nokia Solutions And Networks Oy Load balancing a TCP connection across multiple paths
US11979457B2 (en) * 2020-11-06 2024-05-07 F5, Inc. Managing network services using multipath protocols
WO2024071490A1 (ko) * 2022-09-30 2024-04-04 삼성전자 주식회사 멀티 엑세스 연결을 지원하기 위한 프록시 장치 및 그 동작 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719918A (zh) * 2009-11-27 2010-06-02 北京交通大学 一种改进的适用于多连接多路径的传输方法
WO2011153415A1 (en) * 2010-06-04 2011-12-08 Interdigital Patent Holdings, Inc. Mptcp and mobil ip interworking
WO2013061115A1 (en) * 2011-10-28 2013-05-02 Nokia Corporation Method and apparatus for supporting usage of a multipath transport protocol
CN103597794A (zh) * 2012-02-16 2014-02-19 阿尔卡特朗讯公司 用于提供关于数据数组关联的信息以及用于转发数据数组的设想
CN103856934A (zh) * 2012-11-30 2014-06-11 汤姆逊许可公司 建立多路径连接的方法和多归属设备
CN103918304A (zh) * 2011-09-22 2014-07-09 高通股份有限公司 用于无线通信网络中的多径传输连接的动态子流控制

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9888042B2 (en) * 2013-05-21 2018-02-06 Citrix Systems, Inc. Systems and methods for multipath transmission control protocol connection management

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719918A (zh) * 2009-11-27 2010-06-02 北京交通大学 一种改进的适用于多连接多路径的传输方法
WO2011153415A1 (en) * 2010-06-04 2011-12-08 Interdigital Patent Holdings, Inc. Mptcp and mobil ip interworking
CN103918304A (zh) * 2011-09-22 2014-07-09 高通股份有限公司 用于无线通信网络中的多径传输连接的动态子流控制
WO2013061115A1 (en) * 2011-10-28 2013-05-02 Nokia Corporation Method and apparatus for supporting usage of a multipath transport protocol
CN103597794A (zh) * 2012-02-16 2014-02-19 阿尔卡特朗讯公司 用于提供关于数据数组关联的信息以及用于转发数据数组的设想
CN103856934A (zh) * 2012-11-30 2014-06-11 汤姆逊许可公司 建立多路径连接的方法和多归属设备

Also Published As

Publication number Publication date
CN107005470B (zh) 2020-06-05
EP3210346B1 (fr) 2018-12-12
FR3027478B1 (fr) 2016-12-09
BR112017007972A2 (pt) 2017-12-19
EP3210346A1 (fr) 2017-08-30
US10270684B2 (en) 2019-04-23
WO2016062606A1 (fr) 2016-04-28
US20170317920A1 (en) 2017-11-02
FR3027478A1 (fr) 2016-04-22

Similar Documents

Publication Publication Date Title
CN107005470A (zh) 用于创建数据分组的子流的方法
CN112189323B (zh) 使用安全分段标识符进行分段路由
CN108702331B (zh) Sr应用段与服务功能链(sfc)报头元数据的集成
US11296972B2 (en) Scalable network path tracing
CN106487719B (zh) 经由分组中继使网络功能外部化的系统和方法
CN107005472B (zh) 一种用于提供域间服务功能链接的方法及装置
CN105052087B (zh) 一种基于流表的表项寻址方法、交换机及控制器
CN107682284A (zh) 发送报文的方法和网络设备
CN106233673A (zh) 网络服务插入
EP2882148A1 (en) Establishing a data transfer connection
CN107682370B (zh) 创建用于嵌入的第二层数据包协议标头的方法和系统
US10050859B2 (en) Apparatus for processing network packet using service function chaining and method for controlling the same
CN106105165A (zh) 具有网络地址转换检测的动态服务链
EP3861690B1 (en) Securing mpls network traffic
CN101030935B (zh) 一种IPSec穿越NAT-PT的方法
CN104365064A (zh) 主机-路由器虚拟隧穿
CN105337881A (zh) 一种数据报文的处理方法、业务节点以及引流点
US9445384B2 (en) Mobile device to generate multiple maximum transfer units and data transfer method
US20070133547A1 (en) Method for providing QoS using flow label in providing multimedia service in IPV6 network and system applying the same
CN110431885B (zh) 处理报文的方法和装置
CN113541924B (zh) 报文检测的方法、设备以及系统
US20180227271A1 (en) Method for transmitting information between two domains with distinct security levels
US7978728B2 (en) Network clustering for improving connection management and re-routing capabilities
CN113542188A (zh) 报文检测的方法以及第一网络设备
CN107231309A (zh) 获取sdn全网视图的方法、控制器及目的交换节点

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200605

CF01 Termination of patent right due to non-payment of annual fee