WO2012162672A1 - Multipath overlay network and its multipath management protocol - Google Patents

Multipath overlay network and its multipath management protocol Download PDF

Info

Publication number
WO2012162672A1
WO2012162672A1 PCT/US2012/039729 US2012039729W WO2012162672A1 WO 2012162672 A1 WO2012162672 A1 WO 2012162672A1 US 2012039729 W US2012039729 W US 2012039729W WO 2012162672 A1 WO2012162672 A1 WO 2012162672A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
communication
helper
identifier
join
Prior art date
Application number
PCT/US2012/039729
Other languages
French (fr)
Inventor
Ramanathan Viswanathan
Xiaolong Huang
Vijayalakshmi R. Raveendran
Original Assignee
Qualcomm Incorporated
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
Priority claimed from US13/116,980 external-priority patent/US9444887B2/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Priority to CN201280037115.7A priority Critical patent/CN103703740B/en
Priority to KR1020137034576A priority patent/KR101527830B1/en
Priority to JP2014512170A priority patent/JP5852232B2/en
Publication of WO2012162672A1 publication Critical patent/WO2012162672A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/52Multiprotocol routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/10Connection setup
    • 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/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]

Definitions

  • the present disclosure relates generally to communication networks, and more particularly, communication access in Wireless Wide Area Networks (WWANs).
  • WWANs Wireless Wide Area Networks
  • Access links such as a wireless air interface between an access terminal and a base station
  • WWANs Wireless Wide Area Networks
  • multimedia applications increasingly introduce a higher traffic load on access links of WWANs, causing unsatisfactory user experience.
  • the apparatus is a first node.
  • the first node sends a join request to a second node to route communication associated with a third node to the first node.
  • the join request includes a first node identifier associated with the first node.
  • the first node receives from the second node a join response including a second node identifier associated with the second node.
  • the first node sends a setup request to the third node.
  • the setup request includes the second node identifier.
  • the first node receives a communication with the first node identifier from the second node, the communication originating from the third node.
  • the apparatus is a first node.
  • the first node receives a setup request from a second node.
  • the setup request includes an identifier associated with one of the second node or a third node.
  • the first node sends a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node.
  • the join request includes the identifier associated with one of the second node or the third node.
  • the first node receives from the fourth node a join response including a fourth node identifier associated with the fourth node.
  • the first node sends a communication for the second node to the fourth node. The communication is sent with the fourth node identifier.
  • the apparatus is a first node.
  • the first node receives a join request from a second node.
  • the join request includes a second node identifier associated with the second node.
  • the first node sends a join response to the second node.
  • the join response includes a remote-to- local-incoming identifier associated with the first node.
  • the first node receives a communication with the remote-to-local-incoming identifier from one of a third node or a fourth node.
  • the communication originates from the third node.
  • the first node sends the communication with the second node identifier to the second node.
  • the apparatus is a first node.
  • the first node receives a join request from a second node.
  • the join request includes an identifier associated with one of a third node or a fourth node.
  • the first node sends a join response to the second node.
  • the join response includes a local- to-remote-incoming identifier associated with the first node.
  • the first node receives a communication with the local-to-remote-incoming identifier from the second node.
  • the first node sends the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
  • FIG. 1 is a block diagram illustrating an example of a hardware implementation for an apparatus employing a processing system.
  • FIG. 2 is an illustration of a multipath overlay network.
  • FIG. 3 illustrates a protocol stack of the overlay network data plane.
  • FIG. 4 illustrates a protocol stack of the control plane.
  • FIG. 5 illustrates an example of a label distribution
  • FIG. 6 illustrates a state transition diagram
  • FIGs. 7A-7F illustrate Specification and Description Language (SDL) diagrams for an Aggregator.
  • FIG. 8 illustrates a state transition diagram for an aggregator helper.
  • SDL Specification and Description Language
  • FIGs. 9A-9B illustrate an SDL diagram for an aggregator helper.
  • FIG. 10 illustrates a state transition diagram for a source.
  • FIGS. 1 lA-1 IF illustrate an SDL diagram for a source.
  • FIG. 12 illustrates a state transition diagram for a source helper.
  • FIGs. 13A-13B illustrate an SDL diagram for a source helper.
  • FIG. 14 is an example of a packet header of multipath overlay network data packets.
  • FIG. 15 is an example of a packet header of multipath overlay network signaling messages.
  • FIG. 16 is a first diagram illustrating exemplary methods in which a protocol execution does not rely on distinguishing between aggregator helpers and source helpers.
  • FIG. 17 is a second diagram illustrating exemplary methods.
  • FIG. 18 is a third diagram illustrating exemplary methods.
  • FIG. 19 is a flow chart of a first method of wireless communication.
  • FIG. 20 is a flow chart of a second method of wireless communication.
  • FIG. 21 is a flow chart of a third method of wireless communication.
  • FIG. 22 is a flow chart of a fourth method of wireless communication.
  • FIG. 23 is a flow chart of a fifth method of wireless communication.
  • FIG. 24 is a flow chart of a sixth method of wireless communication.
  • FIG. 25 is a flow chart of a seventh method of wireless communication.
  • FIG. 26 is a flow chart of an eighth method of wireless communication.
  • FIG. 27 is a conceptual data flow diagram illustrating the data flow between different modules/means/components in an exemplary apparatus.
  • FIG. 28 is a diagram illustrating an example of a hardware implementation for an apparatus employing a processing system.
  • processors include microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionality described throughout this disclosure.
  • DSPs digital signal processors
  • FPGAs field programmable gate arrays
  • PLDs programmable logic devices
  • state machines gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionality described throughout this disclosure.
  • One or more processors in the processing system may execute software.
  • Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.
  • the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or encoded as one or more instructions or code on a computer-readable medium.
  • Computer-readable media includes computer storage media. Storage media may be any available media that can be accessed by a computer.
  • such computer- readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer.
  • Disk and disc includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
  • FIG. 1 is a block diagram illustrating an example of a hardware implementation for an apparatus 100 employing a processing system 1 14.
  • the processing system 114 may be implemented with a bus architecture, represented generally by the bus 102.
  • the bus 102 may include any number of interconnecting buses and bridges depending on the specific application of the processing system 114 and the overall design constraints.
  • the bus 102 links together various circuits including one or more processors, represented generally by the processor 104, and computer-readable media, represented generally by the computer-readable medium 106.
  • the bus 102 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further.
  • a bus interface 108 provides an interface between the bus 102 and a transceiver 1 10.
  • the transceiver 110 provides a means for communicating with various other apparatus over a transmission medium.
  • a user interface 1 12 e.g., keypad, display, speaker, microphone, joystick
  • the processor 104 is responsible for managing the bus 102 and general processing, including the execution of software stored on the computer-readable medium 106.
  • the software when executed by the processor 104, causes the processing system 114 to perform the various functions described infra for any particular apparatus.
  • the computer-readable medium 106 may also be used for storing data that is manipulated by the processor 104 when executing software.
  • various concepts presented throughout this disclosure may be implemented across a broad variety of telecommunication systems, network architectures, and communication standards.
  • various aspects may be implemented in UMTS systems such as W-CDMA, TD-CDMA, TD-SCDMA, High Speed Packet Access (HSPA), and HSPA+.
  • W-CDMA Wideband Code Division Multiple Access
  • TD-CDMA Time Division Multiple Access
  • TD-SCDMA High Speed Packet Access
  • HSPA High Speed Packet Access
  • HSPA+ High Speed Packet Access
  • FIG. 2 is an illustration of the architecture of a multipath overlay network 200 in accordance with some aspects of the present disclosure.
  • the multipath overlay network 200 includes various paths between different nodes such as one or more traffic sources (“source”) 210, and one or more traffic destinations (“aggregator”) 220.
  • the source 210 and the aggregator 220 may each "discover" specific "helpers” to establish the paths, and to route substreams of a streaming session between the respective source 210 and aggregator 220.
  • Each multimedia communication session (“streaming session”) may include a source 210, one or more source helpers 215 (optional), one or more aggregator helpers 225 (optional), and an aggregator 210.
  • a traffic substream may flow from a source 210 to a source helper 215, then to an aggregator helper 225, and then to an aggregator 220.
  • the selected source helper 215 and aggregator helper 225 thus serve to relay the substream of the streaming multimedia communication session from the source 210 to the aggregator 220. If data is transmitted from the source 210 directly to the aggregator 220, that data may be characterized as a first description of the streaming session. Substreams of data transmitted over other paths, e.g., utilizing one or more helpers, may be characterized as second and subsequent descriptions of the streaming session. Thus, multiple descriptions of the streaming session may be transmitted over separate paths and reassembled at the aggregator 220 for an enhanced quality of service by virtue of the additional bandwidth being utilized.
  • the source helper 215 and the aggregator 210 may thus "cooperatively help" the source 1 10 and the aggregator 120 to achieve, for example, a streaming communication that has a quality greater than a threshold value of quality, in order to enhance a user experience.
  • the sources 210 are the traffic sources of a streaming session
  • the aggregators 220 are the traffic destinations of the streaming session.
  • a source helper 215 is a cooperative node, which may be selected by the source 210 to receive and retransmit a description of the session in a substream.
  • An aggregator helper 225 is a cooperative node, which may be selected by the aggregator 220 to receive and retransmit a description of the session in a substream.
  • a source helper 215 and an aggregator helper 225 can be a helper for one or more traffic sessions at the same time. That is, a node can take different roles for different traffic sessions, i.e., as a source 210, a source helper 215, an aggregator 220, and/or an aggregator helper 225. • Multipath Overlay Network Protocol Stack
  • FIG. 3 illustrates protocol stacks of certain nodes in the overlay network data plane in accordance with some aspects of the disclosure.
  • the data plane can be utilized to deliver the multimedia data across the multipath overlay network 200.
  • the data packets may traverse multiple hops on the multipath overlay network 200.
  • various data plane protocol stacks are illustrated for certain nodes in a particular path including a source 302, a source helper 304, an aggregator helper 304, and an aggregator 306.
  • the protocol stack for the source 302 includes a physical layer (PHY) 302a, a medium access control layer (MAC) 302b, an internet protocol layer (IP) 302c, a user datagram protocol/transmission control protocol layer (UDP/TCP) 302d, an overlay routing layer 302e, and a real-time transport protocol layer (RTP) 302f.
  • PHY physical layer
  • MAC medium access control layer
  • IP internet protocol layer
  • UDP/TCP user datagram protocol/transmission control protocol layer
  • RTP real-time transport protocol layer
  • the protocol stack for the source helper 304 includes, at an input side, a PHY layer 304al, a MAC layer 304bl, an IP layer 304cl, and a UDP/TCP layer 304dl ; and at an output side, a PHY layer 304a2, a MAC layer 304b2, an IP layer 304c2, and a UDP/TCP layer 304d2.
  • the source helper 304 further includes an overlay routing layer 304e.
  • the protocol stack for the aggregator helper 306 includes, at an input side, a PHY layer 306al, a MAC layer 306bl, an IP layer 306cl, and a UDP/TCP layer 306dl ; and at an output side, a PHY layer 306a2, a MAC layer 306b2, an IP layer 306c2, and a UDP/TCP layer 306d2.
  • the aggregator helper 306 further includes an overlay routing layer 306e.
  • the protocol stack for the aggregator 308 includes a PHY layer 308a, a MAC layer 308b, an IP layer 308c, a UDP/TCP layer 308d, an overlay routing layer 308e, and an RTP layer 308f.
  • the multipath overlay network 200 utilizes a UDP or a TCP port (e.g., a predetermined UDP or TCP port) for transporting overlay network data packets.
  • a UDP or a TCP port e.g., a predetermined UDP or TCP port
  • an end-to-end UDP/IP transport can be utilized between those nodes.
  • an end-to-end UDP/IP transport can be utilized between the source 302 and the source helper 304; between the source 302 and the aggregator helper 306; between the source helper 304 and the aggregator 308; and between the aggregator helper 306 and the aggregator 308.
  • FIG. 4 illustrates a protocol stack of the overlay network control plane in accordance with some aspects of the disclosure.
  • the control plane of the multipath overlay network may be used to setup, release, and switch a path in the data plane between a respective source 210 and aggregator 220.
  • each of the respective nodes includes a PHY layer, a MAC layer, an IP layer, and a TCP layer.
  • each of the respective nodes includes an overlay control layer.
  • multipath overlay network signaling messages may traverse a single hop on the multipath overlay network. That is, if a data path segment is expected between a respective pair of nodes (e.g., between a source helper 402a and a source 402b; between a source 404a and an aggregator 404b; or between an aggregator 406a and an aggregator helper 406b), TCP/IP transport can be utilized between those nodes.
  • the multipath overlay network uses a transmission control protocol (TCP) port (e.g., a predetermined TCP port) for transporting overlay network signaling messages.
  • TCP transmission control protocol
  • the multipath overlay network routing function uses a label switching mechanism to route the data traffic.
  • an input label identifier ID
  • an output label ID can be used by the source 210, the source helper 215, and the aggregator helper 225 to identify the data packets of a unique stream (e.g., a substream) to be sent by the underlying node.
  • the input label ID may be assigned by the recipient of the data packet during the signaling phase, and in one aspect, may be unique only from the perspective of the recipient.
  • the output label ID may be assigned by the sender of the data packet.
  • a node in the multipath overlay network When a node in the multipath overlay network receives a multipath overlay network data packet, the node examines the input label ID and then sends out this packet to a next hop overlay network address, which may be the destination of the packet in the underlying network. The packet may be tagged with the corresponding output label ID.
  • Table 1 Switching Table
  • FIG. 5 is an illustration of a multipath overlay network substantially similar to that illustrated in FIG. 2, further including details to illustrate distribution of label IDs.
  • the label IDs that are assigned by a common node are tagged with the same alphabetic character.
  • a first overlay network data packet may be sent from source 1 210 along a direct path to aggregator 2 220d.
  • the source 1 210 may assign an output label ID of dl, corresponding to the overlay network address of the aggregator 2 220d; and similarly, because this particular data packet is to follow a direct path, the next hop overlay network address also may correspond to that of aggregator 2 220d.
  • the data packet arrives at the aggregator 2 220d, the data packet then receives an input label ID corresponding to the overlay network address of the source.
  • a second overlay network data packet may be sent from source 1 210 along an alternative path to aggregator 2 220d.
  • the alternative path includes source helper 215a and aggregator helper 225b.
  • the source 1 210 may assign an output label ID of dl, corresponding to the overlay network address of aggregator 2 220d.
  • the next hop overlay network address corresponds to that of source helper 215a.
  • the source helper 215a assigns an input label ID corresponding to the overlay network address of source 1 210, since that node was the source of the data packet; and retains the output label ID of aggregator 220d.
  • the source helper 215a assigns a next hop overlay network address corresponding to that of the aggregator helper 225b.
  • the aggregator helper 225b assigns an input label ID corresponding to the overlay network address of source helper 215a, and retains the output label ID of aggregator 2 220d.
  • the aggregator helper 225b assigns a next hop overlay network address corresponding to that of aggregator 2 220d.
  • aggregator 2 220d assigns an input label ID corresponding to the overlay network address of the aggregator helper 225b.
  • an aggregator 220 may be capable of receiving information over multiple paths from a corresponding source 210.
  • an aggregator 220 may include a master state machine that governs the path management of the multiple paths it has with the corresponding source 210.
  • a master state machine for an aggregator 220 can include multiple atomic state machines.
  • each atomic state machine governs the path management of a single path between the aggregator 220 and the corresponding source 210.
  • a state transition diagram 600 for an aggregator 220 in accordance with some aspects of the disclosure is shown in FIG. 6.
  • the aggregator 220 has states including a Released state 610; a Wait for Aggregator Helper to Join state 620; a Wait for Source to Join state 630; a Joined state 640; a Wait for Aggregator Helper to Replace state 650; and a Wait for Source to Switch state 660.
  • the aggregator 220 may utilize timers including an Original Helper Join timer, a Replacement Helper Join timer, and a Source Join timer.
  • the aggregator 220 may utilize a binary state variable "helper_active" for state reduction, with, e.g., a default value set to false. Signaling messages that are not designed to be handled as inputs at a certain state may be queued for delayed processing.
  • FIGs. 7A-7F are specification and description language (SDL) flow charts illustrating state transitions in the state transition diagram 600 illustrated in FIG. 6.
  • SDL specification and description language
  • the aggregator 220 has sent an Aggregator Helper Join Request message, and is awaiting, for the duration of the Original Helper Join timer, an Aggregator Helper Join Response message.
  • the aggregator 220 may receive an Aggregator Helper Join Response message 710. If the message is not accepted, the aggregator 220 may enter the Released state 610. If the message is accepted, the aggregator 220 may then set the helper_active variable to true 711, send a Source Join Request message 712, start a Source Join timer 714, and enter the Wait for Source to Join state 630.
  • the aggregator 220 has sent a Source Join Request message, and is awaiting, for the duration of the Source Join timer, a Source Join Response message.
  • the aggregator 220 may enter the Released state 610.
  • the aggregator may wish to release the helper corresponding to the helper_active variable, so it may send a Helper Release Request message 718 to its helper, set the helper active variable to false, and thereafter enter the Released state 610.
  • the aggregator 220 may receive a Source Join Response message 722 from the source 210 in response to the Source Join Request message. If the aggregator 220 does not accept the Source Join Response message, then the aggregator 220 follows the process outlined just above to enter into the Released state 610. If the aggregator 220 accepts the Source Join Response message from the source 210, then the aggregator 220 enters the Joined state 640.
  • the aggregator 220 may receive an Aggregator Switch Request message 724 from the source 210, to request the aggregator 220 to switch a path between the source 210 and the aggregator 220. The aggregator 220 may then respond to the source 210 with an Aggregator Switch Response message 726 and return to the Joined state 640.
  • the aggregator 220 may receive a Helper Release Notification message 728 from a helper node, indicating to release a particular path utilizing that node, between the source 210 and the aggregator 220.
  • the aggregator 220 may set the helper_active variable to false 730, and seek to find a replacement helper 732.
  • the aggregator 220 may also receive an indication for replacing a joined helper 734, in response to which the aggregator 220 similarly may seek to find a replacement helper 732.
  • the aggregator 220 may send a Source Release Command message 736 to the source 210 to release the path between the source 210 and the aggregator 220, and enter the Released state 610. If a replacement helper is found, the aggregator 220 may send an Aggregator Helper Join Request message 738 to the found aggregator helper 225, seeking to set up the path between the source 210 and the aggregator 220 utilizing the found aggregator helper 225. The aggregator 220 may then start the Replacement Helper Join timer 740, and enter the Wait for Aggregator Helper to Replace state 650.
  • the aggregator 220 may receive a Source Release Notification message 742 from the source 210 indicating to release a path between the source 210 and the aggregator 220.
  • the aggregator 220 may send a Helper Release Command message 744 to a joined helper to release a path between the source 210 and the aggregator 220 utilizing the corresponding helper, and set the helper_active variable false 746, before entering the Released state 610.
  • the aggregator 220 has sent an Aggregator Helper Join Request message to a found replacement aggregator helper 225, and is awaiting, for the duration of the Replacement Helper Join timer, an Aggregator Helper Join Response message from the found replacement aggregator helper 225.
  • the Replacement Helper Join timer expires 748, but if the helper_active variable is false (indicating that the aggregator 220 is not joined to a helper node)
  • the aggregator 220 sends a Source Release Command message 750 to the source 210 to release the path between the source 210 and the aggregator 220, and enters the Released state 610.
  • the aggregator 220 enters the Joined state 640, retaining the path between the source 210 and the aggregator 220 that includes the helper corresponding to this particular atomic state machine. Further, prior to the expiration of the Replacement Helper Join timer, the aggregator 220 may receive an Aggregator Helper Join Response message 752 from a corresponding aggregator helper 225 in response to an Aggregator Helper Join Request message. If the aggregator 220 does not accept the Aggregator Helper Join Response message, then the aggregator 220 follows the process outlined above to enter into either the Released state 610 or the Joined state 640.
  • the aggregator 220 may send a Helper Release Command message 754 to the original helper to release the corresponding path between the source 210 and the aggregator 220 utilizing that helper node. If the helper_active variable is false, the aggregator 220 may skip the sending of the Helper Release Command message 754. Next, the aggregator 220 may send a Source Switch Request message 756 to the source 210 to request the source 210 to switch a path between the source 210 and the aggregator 220, start the Source Join timer 758, and enter the Wait for Source to Switch state 660.
  • the aggregator 220 has sent a Source Switch Request message, and is awaiting, for the duration of the Source Join timer, a Source Switch Response message.
  • the aggregator 220 may send a Helper Release command 762 to the respective helper, to release the corresponding path between the source 210 and the aggregator 220 utilizing that helper node.
  • the aggregator 220 may then set the helper_active variable to false 764, and enter the Released state 610.
  • the aggregator 220 may receive a Source Switch Response message 766 from the source 210 in response to the Source Switch Request message.
  • the aggregator 220 may follow the process outlined just above to enter into the Released state 610. If the aggregator 220 accepts the Source Switch Response message 766, then the aggregator 220 enters the Joined state 640.
  • FIG. 8 is an illustration of a state machine 800 corresponding to an aggregator helper 225, illustrated in FIG. 2.
  • An aggregator helper 225 may include a Released state 810 and a Joined state 820. That is, the aggregator helper 225 may be joined to take part in forming a path, or may be released as a cooperative node.
  • FIGs. 9A-9B are SDL flow charts illustrating state transitions in the state transition diagram 800 illustrated in FIG. 8. As illustrated in FIG. 9A, at the Released state 810, the aggregator helper 225 does not act as a cooperative node for a path between a source 210 and an aggregator 220.
  • the aggregator helper 225 may receive an Aggregator Helper Join Request message 902 from an aggregator 220 to request the aggregator helper 225 set up a path between a source 210 and the aggregator 220. If the aggregator helper 225 does not accept the Aggregator Helper Join Request message, the aggregator helper 225 may send a Negative Aggregator Helper Join Response message 904 to the aggregator 220, and return to the Released state 810.
  • the aggregator helper 225 may send a Positive Aggregator Helper Join Response message 906 to the aggregator 220, and enter the Joined state 820, in which the aggregator helper 225 acts as a cooperative node in a path between a source 210 and the aggregator 220.
  • the aggregator helper 225 acts as a cooperative node in a path between a source 210 and an aggregator 220.
  • the aggregator helper 225 may receive a Release Indication message 908, indicating to release the path between the source 210 and the aggregator 220, including the aggregator helper 225.
  • the aggregator helper 225 may send a Helper Release Notification message 910 to the aggregator 220 to release the corresponding path.
  • the aggregator helper 225 may receive a Helper Release Command message 912 from an aggregator 220 to release a path between the aggregator 220 and a source 210.
  • the aggregator helper 225 may enter the Released state 810, wherein the aggregator helper 225 does not act as a cooperative node for a path between a source 210 and an aggregator 220.
  • a source 210 may be capable of sending information over multiple paths to a corresponding aggregator 220.
  • a source 210 may include a master state machine that governs the path management of the multiple paths established with the corresponding aggregator 220.
  • a master state machine for a source 210 can include multiple atomic state machines.
  • each atomic state machine governs the path management of a path between the source 210 and the corresponding aggregator 220.
  • a state transition diagram 1000 for a source 210 in accordance with some aspects of the disclosure is shown in FIG. 10.
  • the source 210 For each atomic state machine of the source 210, the source 210 has states including a Released state 1010; a Wait for Source Helper to Join state 1020; a Joined state 1040; a Wait for Source Helper to Replace state 1050; a Wait for Aggregator to Switch state 1060; and a Wait for Source Helper to Switch state 1070.
  • the source 210 may utilize timers including an Original Helper Join timer, a Replacement Helper Join timer, and an Aggregator Join timer.
  • the source 210 may utilize a binary state variable "helper_active" for state reduction, with, e.g., a default value set to false. Signaling messages that are not designed to be handled as inputs at a certain state may be queued for a delayed processing.
  • FIGs. 11A-1 1F are SDF flow charts illustrating state transitions in the state transition diagram 1000 illustrated in FIG. 10.
  • the path between the source 210 and the node corresponding to this particular atomic state machine is released.
  • the source 210 may transition to the Joined state 1040 or the Wait for Source Helper to Join state 1020.
  • the source 210 may receive a Source Join Request message 1 102 from an aggregator 220 to request the source 210 to setup a path between the source 210 and the aggregator 220.
  • the source 210 may update path information 1 104 to establish a direct path from the source 210 to the aggregator 220, and may move to the Joined state 1040. If the source 210 desires a helper, the source 210 may send a Source Helper Join Request message 1 106 to the corresponding source helper 215, and start an Original Helper Join timer 1108. The source 210 may then enter the Wait for Source Helper to Join state 1020.
  • the source 210 has sent a Source Helper Join Request message, and is awaiting, for the duration of the Original Helper Join timer, a Source Helper Join Response message.
  • the source 210 may send a Negative Source Join Response message 11 12 to the aggregator 220, and may enter the Released state 1010.
  • the source 210 may receive a Source Helper Join Response message 11 14. If the message is not accepted, the source 210 may send a Negative Source Join Response message 11 12 to the aggregator 220, and may enter the Released state 1010. If the message is accepted, the source 210 may then set the helper active variable to true 11 16, send a Positive Source Join Response message 1 118, and enter the Joined state 1040.
  • a path from the source 210 to a corresponding aggregator 220 exists, that path including the node corresponding to this particular atomic state machine.
  • the source 210 may receive a Source Switch Request message 1120 from the aggregator 220, to request the source 210 to switch a path between the source 210 and the aggregator 220. If the helper_active variable is false, then the source 210 may update path information 1122 to indicate the new path between the source 210 and the aggregator 220, and may enter the Joined state 1040.
  • the source 210 may send a Source Helper Switch Request message 1 124 to a source helper 215 to request the source helper 215 to switch a path between the source 210 and the aggregator 220, start the Source Helper Join timer 1 126, and enter the Wait for Source Helper to Switch state 1070. Further, in the Joined state 1040, the source 210 may receive a Helper Release Notification message 1128 from a helper node, indicating to release a particular path utilizing that node, between the source 210 and the aggregator 220. Here, to release the path, the source 210 may set the helper active variable to false 1130, and seek to find a replacement helper 1 132.
  • the source 210 may also receive an indication for replacing a joined helper 1134, in response to which the source 210 similarly may seek to find a replacement helper 1 132.
  • the source 210 may send a Source Release Notification message 1136 to the aggregator 220 to release the path between the source 210 and the aggregator 220, and enter the Released state 1010.
  • the source 210 may send a Source Helper Join Request message 1 138 to the found source helper 215, seeking to set up the path between the source 210 and the aggregator 220 utilizing the found source helper 215.
  • the source 210 may then start the Replacement Helper Join timer 1140, and enter the Wait for Source Helper to Replace state 1050. Further, in the Joined state 1040, the source 210 may receive a Source Release Command message 1 142 from the aggregator 220 indicating to release a path between the source 210 and the aggregator 220. Here, the source 210 may send a Helper Release Command message 1144 to a joined helper to release a path between the source 210 and the aggregator 220 utilizing the corresponding helper, and set the helper_active variable to false 1146, before entering the Released state 1010.
  • the source 210 may receive an Indication to Release message 1 148, in response to which the source 210 may send a Helper Release Command message 1150 to the corresponding helper to release a path between the source 210 and the aggregator 220 utilizing that helper node.
  • the source 210 may then set the helper active variable to false 1 152, send a Source Release Notification message 1154 to the aggregator 220, and enter the Released state 1010.
  • the source 210 has sent a Source Helper Switch Request message, and is awaiting, for the duration of the Original Helper Join timer, a Source Helper Switch Response message.
  • the source 210 may send a Helper Release command 1 158 to the respective helper, to release the corresponding path between the source 210 and the aggregator 220 utilizing that helper node.
  • the source 210 may then set the helper active variable to false 1160, and enter the Released state 1010.
  • the source 210 may receive a Source Helper Switch Response message 1166 from the source helper 215 in response to a Source Helper Switch Request message. If the source 210 does not accept the Source Helper Switch Response message, the source 210 may follow the process outlined just above to enter into the Released state 1010. If the source 210 accepts the Source Helper Switch Response message 766, then the source 210 may send a Source Switch Response message 1168 to the aggregator to respond to the Source Switch Request message, and may enter the Joined state 1040.
  • the source 210 has sent a Source Helper Join Request message to a found replacement source helper 215, and is awaiting, for the duration of the Replacement Helper Join timer, a Source Helper Join Response message from the found replacement source helper 215.
  • the Replacement Helper Join timer expires 1 170, but if the helper active variable is false (indicating that the source 210 is not joined to a helper node), the source 210 sends a Source Release Notification message 1 172 to the aggregator 220 to release the path between the source 210 and the aggregator 220, and enters the Released state 1010.
  • the source 210 enters the Joined state 1040, retaining the path between the source 210 and the aggregator 220 that includes the helper corresponding to this particular atomic state machine. Further, prior to the expiration of the Replacement Helper Join timer, the source 210 may receive a Source Helper Join Response message 1 174 from a corresponding source helper 215 in response to a Source Helper Join Request message. If the source 210 does not accept the Source Helper Join Response message, then the source 210 follows the process outlined above to enter into either the Released state 1010 or the Joined state 1040.
  • the source 210 may send a Helper Release Command message 1176 to the original helper to release the corresponding path between the source 210 and the aggregator 220 utilizing that helper node. If the helper_active variable is false, the source 210 may skip the sending of the Helper Release Command message 1176. Next, the source 210 may send an Aggregator Switch Request message 1178 to the aggregator 220 to request the aggregator 220 to switch a path between the source 210 and the aggregator 220, start the Aggregator Join timer 1180, and enter the Wait for Aggregator to Switch state 1060.
  • the source 210 has sent an Aggregator Switch Request message, and is awaiting, for the duration of the Aggregator Join timer, an Aggregator Switch Response message.
  • the source 210 may send a Helper Release command 1 184 to the respective helper, to release the corresponding path between the source 210 and the aggregator 220 utilizing that helper node.
  • the source 210 may then set the helper active variable to false 1 186, and enter the Released state 1010.
  • the source 210 may receive an Aggregator Switch Response message 1 188 from the aggregator 220 in response to the Aggregator Switch Request message. If the source 210 does not accept the Aggregator Switch Response message, the source 210 may follow the process outlined just above to enter into the Released state 1010. If the source 210 accepts the Aggregator Switch Response message 1 188, then the source 210 enters the Joined state 1040.
  • FIG. 12 is an illustration of a state machine 1200 corresponding to a source helper 215, illustrated in FIG. 2.
  • a source helper 215 may include a Released state 1210 and a Joined state 1220. That is, the source helper 215 may be joined to take part in forming a path, or may be released as a cooperative node.
  • FIGs. 13A-13B are SDL flow charts illustrating state transitions in the state transition diagram 1200 illustrated in FIG. 12.
  • the source helper 215 does not act as a cooperative node for a path between a source 210 and an aggregator 220.
  • the source helper 215 may receive a Source Helper Join Request message 1302 from a source 210 to request the source helper 215 set up a path between the source 210 and an aggregator 220. If the source helper 215 does not accept the Source Helper Join Request message, the source helper 215 may send a Negative Source Helper Join Response message 1304 to the source 210, and return to the Released state 1210.
  • the source helper 215 may send a Positive Source Helper Join Response message 1306 to the source 210, and enter the Joined state 1220, in which the source helper 215 acts as a cooperative node in a path between the source 210 and an aggregator 220.
  • the source helper 215 acts as a cooperative node in a path between a source 210 and an aggregator 220.
  • the source helper 215 may receive a Release Indication 1308, and in response, the source helper 215 may send a Helper Release Notification message 1310 to the source 210 to release the path between the source 210 and an aggregator 220 utilizing the source helper 215. Further, the source helper 215 may receive a Helper Release Command message 1312 from a source 210 to release a path between the source 210 and an aggregator 220.
  • the source helper 215 may enter the Released state 1210, wherein the source helper 215 does not act as a cooperative node for a path between a source 210 and an aggregator 220. Still further, the source helper 215 may receive a Source Helper Switch Request message 1314 from the source 210 to request the source helper 215 to switch a path between the source 210 and an aggregator 220. Here, the source helper 215 may respond by sending a Source Helper Switch Response message 1316 and enter the Joined state 1220.
  • FIG. 14 An example of a data packet header that may be utilized in multipath overlay network data packets are shown in FIG. 14.
  • the message type field in the packet header of data packets may be set to "data,” and the data payload of the data packets may start immediately after the packet header.
  • FIG. 15 An example of a signaling packet header that may be utilized in multipath overlay network signaling messages is shown in FIG. 15.
  • the payload of the corresponding signaling messages may start immediately after the packet header.
  • Table 2 The meanings of the packet header fields for a particular implementation in accordance with some aspects of the disclosure are given in Table 2.
  • an information element for characterizing the overlay network message type may be carried.
  • the message types utilized in an exemplary implementation in accordance with some aspects of the present disclosure are listed in Table 3.
  • an Aggregator Helper Join Request message may be sent from the aggregator 220 to corresponding aggregator helper 225, in order to request the aggregator helper 225 to set up a path between the source 210 and the aggregator 220.
  • An Aggregator Helper Join Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 4.
  • Aggregator Overlay network address of the aggregator used 32 bits address by the receiver of the Join Request to identify the
  • Aggregator helper Overlay network address of the aggregator 32 bits address helper: used by the receiver of the Join Request
  • Transport layer Transport layer type to be used for the data 4 bits type delivered over this path, such as TCP, UDP, etc.
  • An Aggregator Helper Join Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 5.
  • the Aggregator Helper Join Response message may be sent from the aggregator helper 225 to the aggregator 220, in order to respond to a corresponding Aggregator Helper Join Request message.
  • Source Join Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 6.
  • the Source Join Request message may be sent from the aggregator 220 to the source 210 to request the source 210, in order to setup a path between the source 210 and the aggregator 220.
  • Aggregator Overlay network address of the aggregator used 32 bits address by the receiver of the Join Request to identify its
  • Source address Overlay network address of the source used by 32 bits
  • Session ID Uniquely identifies the traffic session to be 32 bits
  • Aggregator or Overlay network address of the aggregator 32 bits aggregator helper helper may be used by either the source or the
  • Transport layer Transport layer type to be used for the data 4 bits type delivered over this path, such as TCP, UDP, etc.
  • Source Join Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 7.
  • the Source Join Response message may be sent from the source 210 to the aggregator 220, in order to respond to a Source Join Request message.
  • Source address Overlay network address of the source used by 32 bits
  • Aggregator Overlay network address of the aggregator used 32 bits address by the receiver of the Join Response to check
  • Transaction ID May be equal to the transaction ID in the 8 bits
  • the Aggregator Switch Request message may be sent from the source 210 to the aggregator 220, in order to request the aggregator 220 to switch a path between the source 210 and the aggregator 220.
  • Aggregator Switch Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 9.
  • the Aggregator Switch Response message may be sent from the aggregator 220 to the source 210, in order to respond to an Aggregator Switch Request message.
  • Table 9 Aggregator Switch Response Message
  • Source Switch Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 10.
  • the Source Switch Request message may be sent from the aggregator 220 to the source 210, in order to request the source 210 to switch a path between the source 210 and the aggregator 220.
  • Aggregator Overlay network address of the aggregator used 32 bits address by the receiver of the Switch Request to identify
  • Source address Overlay network address of the source used by 32 bits
  • Session ID Uniquely identifies the traffic session to be 32 bits
  • New Label ID New label ID to be used on the packet sent from 8 bits
  • Source Switch Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 1 1.
  • the Source Switch Response message may be sent from the source 210 to the aggregator 220, in order to respond to a Source Switch Request message.
  • Source Helper Join Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 12.
  • the Source Helper Join Request message may be sent from the source 210 to the source helper 215, in order to request the source helper 215 to set up a path between the source 210 and the aggregator 220.
  • Source Helper Join Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 13.
  • the Source Helper Join Response message may be sent from the source helper 215 to the source 210, in order to respond to a Source Helper Join Request message.
  • Table 13 Source Helper Join Response Message
  • Source Helper Switch Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 14.
  • the Source Helper Switch Request message may be sent from the source 210 to the source helper 215, in order to request a source helper 215 to switch a path between the source and the aggregator.
  • Source helper Overlay network address of the source helper 32 bits address used by the receiver of the Switch Request to
  • Source address Overlay network address of the source used by 32 bits
  • Source Helper Switch Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 15.
  • the Source Helper Switch Response message may be sent from the source helper 215 to the source 210, in order to respond to the Source Helper Switch Request message.
  • Source Release Command message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 16.
  • the Source Release Command message may be sent from the aggregator 220 to the source 210, in order to release a path between the source 210 and the aggregator 220.
  • Aggregator Overlay network address of the aggregator used 32 bits address by the receiver of the Release Command to
  • Source address Overlay network address of the source used by 32 bits
  • Session ID Uniquely identify the traffic session to be 32 bits
  • Path index Index of the path for this traffic session between 4 bits the source and the aggregator
  • Source Release Notification message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 17.
  • the Source Release Notification message may be sent from the source 210 to the aggregator 220, in order to release a path between the source 210 and the aggregator 220.
  • Helper Release Command message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 18.
  • the Helper Release Command message may be sent from the aggregator 220 or the source 210 to its respective helper 225 or 215, in order to release a path between the aggregator 220 and the source 210.
  • Helper Release Notification message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 19.
  • the Helper Release Notification message may be sent from a respective helper 225, 215 to its aggregator 220 or source 210, in order to release a path between the source 210 and the aggregator 220.
  • Nodes such as aggregators, sources, their respective helpers, processors contained therein, computer program products, etc., may "support" data transport and communication, as disclosed in the specification, by providing or originating data, as provided, for example, by a source (in one or more substreams containing distinct descriptions of the data), relaying a description of the data in a substream, as provided, for example by a source helper and aggregator helper, and by receiving and aggregating one or more descriptions of the data in respective substreams, as provided, for example, by an aggregator.
  • the protocol execution relies on distinguishing between aggregator helpers and source helpers, as messages between a node and the node's helper differ depending on whether the node's helper is an aggregator helper or a source helper.
  • the protocol execution does not rely on distinguishing between aggregator helpers and source helpers.
  • the message types may be as provided in Table 20. Table 20: Messages Types
  • FIG. 16 is a first diagram 1600 illustrating exemplary methods in which a protocol execution does not rely on distinguishing between aggregator helpers and source helpers.
  • label IDs in parenthesis are within the payload of the message and label IDs in the angled brackets are within a header of the packet.
  • the node 2 1610 may send the node 1 1604 an outgoing path setup indication.
  • the node 2 1610 sends the node 1 1604 an outgoing path setup indication because the node 2 1610, which has data to send/transmit to the node 1 1604, is initiating the communication link with the node 1 1604.
  • Step 1612 is not performed if node 1 1604 initiates the communication link with the node 2 1610.
  • the outgoing path setup indication may include one or more of a sender address, a receiver address, and quality of service (QoS) information.
  • QoS quality of service
  • Receiver address The overlay network address of the destination 32 bits
  • This field should be used by the receiver to identify the identity of the sender.
  • the QoS information may be based on the amount of data the node 2 1610 will send, the rate at which the node 2 1610 will send the data packets, and/or other quality related information.
  • the node 1 1604 receives the outgoing path setup indication. Based on the outgoing path setup indication, the node 1 1604 may determine whether to enlist/request a helper node to help receive the packets from the node 2 1610. For example, if the rate at which the node 2 1610 will send the packets is greater than the rate at which the node 1 1604 can receive the packets, the node 1 1604 may determine to request a helper node to receive some of the packets and relay the received packets to the node 1 1604.
  • the node 1 1604 sends a helper join request for incoming path to the node l 's helper 1606.
  • the helper join request for incoming path may include one or more of a sender address, a receiver address, a transaction ID, a label ID, a transport layer type, a payload type, and QoS information.
  • This field should be used by the receiver to identify the identity of the sender.
  • Receiver address The overlay network address of the helper 32 bits
  • Transport layer This indicates the transport layer type to be 4 bits type used for the data delivered over this path, such
  • TCP TCP
  • UDP UDP
  • Payload Type This indicates the payload type of the data 4 bits
  • the helper join request for incoming path includes the label ID "Label 1.”
  • the label ID "Label 1" identifies the label ID that the node l 's helper 1606 may use to send incoming packets to the node 1 1604.
  • the node l 's helper 1606 responds with a helper join response for incoming path.
  • the helper join response for incoming path may include one or more of a sender address, a receiver address, a transaction ID, a response code, a label ID, and QoS information.
  • This field should be used by the receiver to identify the identity of the sender.
  • Receiver address The overlay network address of the primary 32 bits
  • the helper join response for incoming path includes the label ID "Label 2.”
  • the label ID "Label 2" identifies the label ID that may be used for sending incoming packets to the node l 's helper 1606.
  • the node l 's helper 1606 links “Label 2" to "Label 1" such that packets received and directed to "Label 2" are routed to "Label 1.”
  • the node l 's helper 1606 may help other nodes and therefore may have other label IDs for which the node l 's helper 1606 receives incoming packets.
  • the node 1 1604 sends a setup request to the node 2 1610.
  • the setup request may include one or more of a sender address, a receiver address, a transaction ID, a helper address, a label ID, a transport layer type, a payload type, and QoS information.
  • This field should be used by the receiver to identify the identity of the sender.
  • Receiver address The overlay network address of the source of 32 bits
  • helper If there is no helper, this should be the overlay network address of the primary node.
  • Transport layer This indicates the transport layer type to be 4 bits type used for the data delivered over this path, such
  • TCP TCP
  • UDP UDP
  • Payload Type This indicates the payload type of the data 4 bits
  • the setup request includes the label ID "Label 2.”
  • the label ID "Label 2” identifies the label ID that node 2 1610 may use for sending packets that ultimately ends up at the node 1 1604.
  • the node 2 1610 may or may not know that "Label 2" is associated with a helper node rather than the node 1 1604.
  • the node 2 1610 may route all or a portion of the packets to the node l 's helper 1606 via the "Label 2" and a remaining portion to the packets directly to the node 1 1604.
  • the node 2 1610 will conform to the QoS information provided in the setup request.
  • the node 2 1610 may also enlist/request a helper node, such as the node 2's helper 1608.
  • the node 2 1610 sends a helper join request for outgoing path to the node 2's helper 1608.
  • the helper join request for outgoing path may include one or more of a sender address, a receiver address, a transaction ID, a remote helper address, a label ID, a transport layer type, a payload type, and QoS information.
  • This field should be used by the receiver to identify the identity of the sender.
  • Receiver address The overlay network address of the helper 32 bits
  • Transport layer This indicates the transport layer type to be 4 bits type used for the data delivered over this path, such
  • TCP TCP
  • UDP UDP
  • Payload Type This indicates the payload type of the data 4 bits
  • the node 2's helper 1608 receives the helper join request for outgoing path from the node 2 1610.
  • the node 2's helper 1608 receives the label ID "Label 2" in the helper join request for outgoing path and generates a corresponding label ID "Label 3.”
  • the node 2's helper 1608 links the two label IDs such that packets received at "Label 3" are routed to "Label 2.”
  • the node 2's helper 1608 sends a helper join response for outgoing path to the node 2 1610.
  • the helper join response for outgoing path includes the label ID "Label 3" so that the node 2 1610 will know how to route packets to the node 2's helper 1608 that the node 2 1610 would ultimately like routed to the node 1 1604.
  • the helper join response for outgoing path may include one or more of a sender address, a receiver address, a transaction ID, a response code, a label ID, and QoS information.
  • This field should be used by the receiver to identify the identity of the sender.
  • Receiver address The overlay network address of the primary 32 bits
  • This field should be used by the receiver to check whether this message should be processed.
  • the node 2 1610 sends a setup response to the node 1 1604.
  • the setup response is a response to the setup request received in step 1618.
  • the setup response may include one or more of a sender address, a receiver address, a transaction ID, a response code, and QoS information.
  • Receiver address The overlay network address of the destination 32 bits
  • This field should be used by the receiver to identify the identity of the sender.
  • the node 2 1610 sends a packet including a header and data to the node 2's helper 1608.
  • the header includes the label ID "Label 3.”
  • the node 2's helper 1608 receives the packet, determines that the packet includes "Label 3" and is therefore associated with “Label 2,” inserts the "Label 2" into the header, and in step 1628, forwards the packet to node l 's helper 1606.
  • the node l 's helper 1606 receives the packet, determines that the packet includes "Label 2" and is therefore associated with “Label 1,” inserts the "Label 1" into the header, and in step 1630, forwards the packet to node 1 1604.
  • the node 1 1604 may also setup an outgoing path to the node 2 1610.
  • the node 1 1604 sends an outgoing path setup indication to the node 2 1610.
  • the node 2 1610 receives the outgoing path setup indication.
  • the node 2 1610 may determine whether to enlist/request a helper node to receive the packets from the node 1 1604 based on QoS information in the outgoing path setup indication. As shown in FIG. 16, the node 2 1610 determines to utilize a helper node in receiving packets from the node 1 1604.
  • step 1634 the node 2 1610 sends a helper join request for incoming path including the label ID "Label 4.”
  • the node 2's helper 1608 receives the helper join request for incoming path with the label ID "Label 4,” generates an associated label ID "Label 5,” and in step 1636, sends a helper join response for incoming path including the label ID "Label 5.”
  • step 1638 the node 2 1610 sends a setup request including the label ID "Label 5" to the node 1 1604.
  • the node 1 1604 provides the label ID "Label 5" to the node l 's helper 1606 in a helper join request for outgoing path.
  • the node l 's helper 1606 receives the helper join request for outgoing path with the label ID "Label 5," generates an associated label ID "Label 6,” and in step 1642, sends a helper join response for outgoing path including the label ID "Label 6.” In step 1644, the node 1 1604 sends a setup response to the node 2 1610.
  • the node 1 1604 and the node 2 1610 may both send communication to and receive communication from each other.
  • the node 2 1610 sends a packet including a header and data to the node 2's helper 1608.
  • the header includes the label ID "Label 3.”
  • the node 2's helper 1608 receives the packet, determines that the packet includes "Label 3" and is therefore associated with "Label 2,” inserts the "Label 2" into the header, and in step 1648, forwards the packet to node l 's helper 1606.
  • the node l 's helper 1606 receives the packet, determines that the packet includes "Label 2" and is therefore associated with “Label 1,” inserts the "Label 1" into the header, and in step 1650, forwards the packet to node 1 1604.
  • the node 1 1604 sends a packet including a header and data to the node l 's helper 1606.
  • the header includes the label ID "Label 6.”
  • the node l 's helper 1606 receives the packet, determines that the packet includes "Label 6" and is therefore associated with “Label 5,” inserts the "Label 5" into the header, and in step 1654, forwards the packet to node 2's helper 1608.
  • the node 2's helper 1608 receives the packet, determines that the packet includes "Label 5" and is therefore associated with “Label 4," inserts the "Label 4" into the header, and in step 1656, forwards the packet to node 2 1610.
  • FIG. 17 is a second diagram 1700 illustrating exemplary methods.
  • label IDs in parenthesis are within the payload of the message and label IDs in the angled brackets are within a header of the packet.
  • the diagram 1700 illustrates how helper nodes may be switched after helper nodes are setup. With two-way communication enabled, the node 1 1704 and the node 2 1714 may both send communication to and receive communication from each other. In step 1716, the node 2 1714 sends a packet including a header and data to the node 2's helper 1712.
  • the header includes the label ID "Label 3.”
  • the node 2's helper 1712 receives the packet, determines that the packet includes "Label 3" and is therefore associated with “Label 2,” inserts the "Label 2" into the header, and in step 1718, forwards the packet to node l 's old helper 1706.
  • the node l 's old helper 1706 receives the packet, determines that the packet includes "Label 2" and is therefore associated with "Label 1,” inserts the "Label 1" into the header, and in step 1720, forwards the packet to node 1 1704.
  • the node 1 1704 sends a packet including a header and data to the node l 's old helper 1706.
  • the header includes the label ID "Label 6.”
  • the node l 's old helper 1706 receives the packet, determines that the packet includes “Label 6" and is therefore associated with “Label 5,” inserts the "Label 5" into the header, and in step 1724, forwards the packet to node 2's helper 1712.
  • the node 2's helper 1712 receives the packet, determines that the packet includes "Label 5" and is therefore associated with "Label 4,” inserts the "Label 4" into the header, and in step 1726, forwards the packet to node 2 1714.
  • the node l 's old helper 1706 sends a helper release notification to the node 1 1704 in order to notify the node 1 1704 that the node l 's old helper 1706 is going to stop helping the node 1 1704.
  • the helper release notification may include one or more of a sender address and a receiver address. Table 28: Helper Release Notification
  • Receiver address The overlay network address of the primary 32 bits
  • This field should be used by the receiver to identify the identity of the sender.
  • step 1728 does not occur, and in step 1729, the node 1 1704 sends a helper release command to node l 's old helper 1706.
  • Both the first configuration in step 1728 and the second configuration in step 1729 are break-before- make procedures in which the existing helper relationship is broken before a new helper relationship is established.
  • steps 1728, 1729 are not performed, and step 1742 is performed in a make-before-break procedure in which the new helper relationship is established before the existing helper relationship is broken.
  • the helper release command may include one or more of a sender address and a receiver address.
  • Receiver address The overlay network address of the helper 32 bits
  • This field should be used by the receiver to identify the identity of the sender.
  • the node 1 1704 may determine to break the helper relationship based on expiration of a timer.
  • the node I 's old helper 1706 may determine to break the helper relationship based on expiration of a timer.
  • the node 1 's old helper 1706 and/or and the node 1 1704 may determine to break the helper relationship based on other factors, such as an inability to maintain a link between the node 1 1704 and the node I 's old helper 1706, a decreased performance (e.g., poor path quality) of the link between the node 1 1704 and the node I 's old helper 1706, a lack of response (e.g., multiple time outs) by either of the node 1 1704 or the node I 's old helper 1706, or other factors associated or unassociated with the link itself.
  • factors such as an inability to maintain a link between the node 1 1704 and the node I 's old helper 1706, a decreased performance (e.g., poor path quality) of the link between the node 1 1704 and the node I 's old helper 1706, a lack of response (e.g., multiple time outs) by either of the node 1 1704 or
  • the node 1 1704 sends a switch request for local helper to the node I 's new helper 1708.
  • the switch request for local helper may include a label ID "Label 1" to which the node I 's new helper 1708 may send incoming packets and a label ID "Label 5" to which the node's 1 new helper 1708 may send outgoing packets.
  • the switch request for local helper may include one or more of a sender address, a receiver address, a transaction ID, a first label ID, a remote helper address, a second label ID, and QoS information.
  • This field should be used by the receiver to identify the identity of the sender.
  • Receiver address The overlay network address of the helper 32 bits
  • Label ID 1 This Label ID should be used for the packet 8 bits
  • Label ID 2 This Label ID should be used for the packet 8 bits
  • the node l 's new helper 1708 sends a switch response for local helper to the node 1 1704.
  • the node l 's new helper 1708 generates a label ID "Label 7" associated with "Label 1" for incoming packets and a label ID "Label 8" associated with "Label 5" for outgoing packets.
  • the switch response for local helper includes the label ID "Label 7" and the label ID "Label 8.”
  • the switch response for local helper may include one or more of a sender address, a receiver address, a transaction ID, a response code, a first label ID, and a second label ID.
  • This field should be used by the receiver to identify the identity of the sender.
  • Receiver address The overlay network address of the primary 32 bits
  • Label ID 1 This Label ID should be used for the packet 8 bits
  • Label ID 2 This Label ID should be used for the packet 8 bits
  • the node 1 1704 sends a helper change notification to the node 2 1714.
  • the helper change notification includes the label ID "Label 7" to which the node 2 1714 should now send packets.
  • the help change notification may include one or more of a sender address, a receiver address, a transaction ID, a helper address, a label ID, and QoS information.
  • This field should be used by the receiver to identify the identity of the sender.
  • Receiver address The overlay network address of the receiver. 32 bits
  • the node 2 1714 sends a switch request for remote helper to the node 2's helper 1712.
  • the switch request for remote helper includes the label ID "Label 7" to which the node 2's helper should now send outgoing data.
  • the switch request for remote helper may include one or more of a sender address, a receiver address, a transaction ID, a remote helper address, and a label ID.
  • the node 2's helper 1712 responds by sending a switch response for remote helper to the node 2 1714.
  • the switch response for remote helper may include one or more of a sender address, a receiver address, a transaction ID, and a response code.
  • This field should be used by the receiver to identify the identity of the sender.
  • Receiver address The overlay network address of the primary 32 bits
  • the node 2 1714 responds to the helper change notification by sending a helper change response to the node 1 1704.
  • the helper change response may include one or more of a sender address, a receiver address, a transaction ID, and a response code.
  • Receiver address The overlay network address of the node that 32 bits
  • This field should be used by the receiver to identify the identity of the sender. Transaction ID Identical to that in the original request 8 bits
  • the node 2 1714 sends a packet including a header and data to the node 2's helper 1712.
  • the header includes the label ID "Label 3.”
  • the node 2's helper 1712 receives the packet, determines that the packet includes "Label 3" and is therefore associated with “Label 7,” inserts the "Label 7" into the header, and in step 1746, forwards the packet to node l 's new helper 1708.
  • the node l 's new helper 1708 receives the packet, determines that the packet includes "Label 7" and is therefore associated with “Label 1,” inserts the "Label 1" into the header, and in step 1748, forwards the packet to node 1 1704.
  • the node 1 1704 sends a packet including a header and data to the node l 's new helper 1708.
  • the header includes the label ID "Label 8.”
  • the node l 's new helper 1708 receives the packet, determines that the packet includes "Label 8" and is therefore associated with “Label 5,” inserts the "Label 5" into the header, and in step 1752, forwards the packet to node 2's helper 1712.
  • the node 2's helper 1712 receives the packet, determines that the packet includes "Label 5" and is therefore associated with "Label 4,” inserts the "Label 4" into the header, and in step 1754, forwards the packet to node 2 1714.
  • FIG. 18 is a third diagram 1800 illustrating exemplary methods.
  • the diagram 1800 illustrates the release commands and notifications.
  • the node 1 1804 sends a helper release command to the node l 's helper 1806 to release the node l 's helper 1806 from the helper relationship with the node 1 1804.
  • the node 1 1804 sends a release notification 1814 to the node 2 1810.
  • the release notification informs the node 2 1810 to cease the communication with the node 1 1804.
  • the node 2 1810 sends a helper release command to the node 2's helper 1808 to release the node 2's helper 1808 from the helper relationship with the node 2 1810.
  • the release notification may include one or more of a sender address and a receiver address.
  • Sender address The overlay network address of the sender. 32 bits This field should be used by the receiver to identify the identity of the sender.
  • Receiver address The overlay network address of the receiver. 32 bits
  • FIG. 19 is a flow chart of a first method of communication.
  • the method of communication may be wireless.
  • the method may be performed by a communications device, such as a user equipment (UE).
  • the communications device is referred to as a first node.
  • the first node may receive a path setup indication from a third node.
  • the node 1 1604 may receive an outgoing path setup indication from the node 2 1610.
  • the first node may determine whether to send a join request to a second node based on the path setup indication. As discussed supra in relation to FIG.
  • the path setup indication may include QoS information and the node 1 1604 may determine to send a helper join request for incoming path (step 1614) to the node l 's helper 1606 based on the QoS information.
  • the first node sends a join request to the second node to route communication associated with the third node to the first node.
  • the join request includes a first node identifier associated with the first node.
  • step 1614 the first node 1 1604 sends a helper join request for incoming path to the node l 's helper 1606.
  • the helper join request for incoming path includes the label ID "Label 1" associated with the node 1 1604.
  • the first node receives from the second node a join response including a second node identifier associated with the second node.
  • the node 1 1604 receives a helper join response for incoming path from the node l 's helper 1606 that includes the label ID "Label 2" associated with node l 's helper 1606.
  • the first node sends a setup request to the third node.
  • the setup request includes the second node identifier.
  • the node 1 1604 sends a setup request to the node 2 1610.
  • the setup request includes the label ID "Label 2.”
  • the first node receives a communication with the first node identifier from the second node.
  • the communication originates from the third node.
  • the node 1 1604 receives a packet with the label ID "Label 1" from the node l 's helper 1606.
  • the packet originated from the node 2 1610.
  • FIG. 20 is a flow chart of a second method of communication.
  • the method of communication may be wireless.
  • the method may be performed by a communications device, such as a UE.
  • the communications device is referred to as a first node.
  • the first node sends a switch request to a fourth node to route communication associated with the third node to the first node.
  • the switch request includes the first node identifier.
  • the node 1 1704 sends a switch request for local helper to the node l 's new helper 1708 to route communication associated with node 2 1714 to the node 1 1704.
  • the switch request for local helper includes the label ID "Label 1.”
  • the first node receives a switch response from the fourth node.
  • the switch response includes a fourth node identifier associated with the fourth node. For example, referring to FIG.
  • the node 1 1704 receives a switch response for local helper from the node l 's new helper 1708.
  • the switch response for local helper includes the label ID "Label 7" associated with the node l 's new helper 1708.
  • the first node sends a change notification to the third node.
  • the change notification includes the fourth node identifier.
  • the node 1 1704 sends a helper change notification to the node 2 1714.
  • the helper change notification includes the label ID "Label 7.”
  • the first node receives a communication with the first node identifier from the fourth node.
  • the communication originates from the third node.
  • the node 1 1704 receives a packet with the label ID "Label 1" from the node l 's new helper 1708. The packet originated from the node 2 1714.
  • the first node may receive a release notification from the second node and send the switch request in response to the release notification.
  • the node 1 1704 may receive the helper release notification from the node l 's old helper 1706 and, in step 1730, send the switch request for local helper in response to the helper release notification.
  • the first node may set a timer associated with the second node and send the switch request upon expiration of the timer. Referring to FIG.
  • the node 1 1704 may perform a break-before-make procedure by sending the helper release command in step 1729 or a make-before-break procedure by sending the helper release command in step 1742.
  • the first node receives a change response from the third node, and in step 2016, the first node sends a release notification to the second node after receiving the change response.
  • the node 1 1704 receives a helper change response from the node 2 1714, and in step 1742, the node 1 1704 sends a helper release command to the node l 's old helper 1706.
  • FIG. 21 is a flow chart of a third method of communication.
  • the method of communication may be wireless.
  • the method may be performed by a communications device, such as a UE.
  • the communications device is referred to as a first node.
  • the first node may send a release command to the second node before sending a change notification to the third node.
  • the node 1 1704 may send a helper release command to the node l 's old helper 1706.
  • the first node may send a change notification to the third node that includes the first node identifier. For example, referring to FIG.
  • the node 1 1704 may send a helper change notification to the node 2 1714. However, instead of sending the label ID "Label 7" in the helper change notification, the node 1 1704 may send label ID "Label 1" in the helper change notification so that packets are sent directly to the node 1 1704.
  • the first node may receive a communication with the first node identifier from one of the third node or a fourth node. The communication originates from the third node. For example, referring to FIG.
  • the node 1 1704 may receive a packet with the label ID "Label 1" from the node 2 1714 (step 1744, but directly to the node 1 1704) or from the node 2's helper 1712 (step 1746, but directly to the node 1 1704).
  • the first node may receive a change response from the third node.
  • the first node may send a release command to the second node after receiving the change response from the third node.
  • the node 1 1704 may receive a helper change response from the node 2 1714 and send a helper release command to the node l 's old helper 1706.
  • the first node may send a release notification to the third node.
  • the communication with the first node identifier from the second node that originates from the third node may stop after the release notification is sent.
  • the node 1 1804 may send a release notification to the node 2 1810 and the communication from the node l 's helper 1806 that originates from the node 2 1810 may stop after sending the release notification.
  • FIG. 22 is a flow chart of a fourth method of communication.
  • the method of communication may be wireless.
  • the method may be performed by a communications device, such as a UE.
  • the communications device is referred to as a first node.
  • the first node may send a path setup indication to a second node.
  • node 2 1610 may send an outgoing path setup indication to the node 1 1604.
  • the first node receives a setup request from the second node.
  • the setup request includes an identifier associated with one of the second node or a third node.
  • the node 2 1610 receives a setup request from the node 1 1604.
  • the setup request may include the label ID "Label 1" associated with the node 1 1604 or the label ID "Label 2" associated with the node l 's helper 1606. If the setup request includes the label ID "Label 1,” communication from the node 2 1610 is routed directly from the node 2 1610 or the node 2's helper 1608 to the node 1 1604 (i.e., the node 1 1604 has no helper). If the setup request includes the label ID "Label 2,” communication from the node 2 1610 is routed through the node l 's helper 1606 to the node 1 1604.
  • the first node sends a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node.
  • the join request includes the identifier associated with one of the second node or the third node.
  • the node 2 1610 sends a helper join request for outgoing path to the node 2's helper 1608 to route communication for the node 1 1604 from the node 2 1610 to the node 1 1604 or the node l 's helper 1606.
  • the first node receives from the fourth node a join response including a fourth node identifier associated with the fourth node. For example, referring to FIG. 16, step 1622, the node 2 1610 receives a helper join response for outgoing path that includes the label ID "Label 3" associated with the node 2's helper 1608.
  • the first node sends a communication for the second node to the fourth node.
  • the communication is sent with the fourth node identifier.
  • the node 2 1610 sends a packet for the node 1 1604 to the node 2's helper 1608.
  • the packet is sent with the label ID "Label 3.”
  • the first node may receive a change notification from the second node.
  • the change notification includes an identifier associated with one of the second node or a fifth node.
  • the node 2 1714 receives a helper change notification from the node 1 1704.
  • the helper change notification may include the label ID "Label 1" associated with the node 1 1704 or the label ID "Label 7" associated with the node l 's new helper 1708.
  • the first node may send a switch request to the fourth node to route communication for the second node from the first node to one of the second node or the fifth node.
  • the switch request includes the identifier associated with one of the second node or the fifth node.
  • the node 2 1714 sends a switch request for remote helper to the node 2's helper 1712 to route communication for the node 1 1704 from the node 2 1714.
  • the switch request for remote helper includes the label ID received in the helper change notification. If the label ID is "Label 7," as shown in step 1736, the node 2's helper 1712 routes packets from the node 2 1714 to the node l 's new helper 1708. If the label ID is "Label 1," the node 2's helper 1712 routes packets from the node 2 1714 to the node 1 1704.
  • the first node sends a second communication for the second node to the fourth node.
  • the communication is sent with the fourth node identifier.
  • the node 2 1714 sends a packet for the node 1 1704 to the node 2's helper 1712.
  • the packet is sent with the label ID "Label 3" associated with the node 2's helper 1712.
  • FIG. 23 is a flow chart of a fifth method of communication.
  • the method of communication may be wireless.
  • the method may be performed by a communications device, such as a UE.
  • the communications device is referred to as a first node.
  • the first node receives a setup request from a second node.
  • the setup request includes an identifier associated with one of the second node or a third node.
  • the first node sends a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node.
  • the join request includes the identifier associated with one of the second node or the third node.
  • step 2310 the first node receives from the fourth node a join response including a fourth node identifier associated with the fourth node.
  • step 2312 the first node sends a communication for the second node to the fourth node. The communication is sent with the fourth node identifier.
  • the steps 2306, 2308, 2310, and 2312 correspond to steps 1618, 1620, 1622, and 1626, respectively.
  • the first node may send a release command to the fourth node, and in step 2316, send a communication with an identifier associated with one of the second node or the third node to one of the second node or the third node.
  • the node 2 1610 may release the node 2's helper 1608 from the helper relationship and then send a packet directly to the node 1 1604 if the node 1 1604 has no helper (the node 2 1610 already has a communication link with the node 1 1604) or to the node l 's helper 1606 (with the label ID "Label 2").
  • the first node may receive a release notification from the second node, and stop sending the communication for the second node to the fourth node upon receiving the release notification.
  • the node 2 1810 may receive a release notification from the node 1 1804, and upon receiving the release notification, stop sending packets for the node 1 1804 to the node 2's helper 1808.
  • FIG. 24 is a flow chart of a sixth method of communication.
  • the method of communication may be wireless.
  • the method may be performed by a communications device, such as a UE.
  • the communications device is referred to as a first node.
  • the first node receives a join request from a second node.
  • the join request includes a second node identifier associated with the second node.
  • the node l 's helper 1606 receives a helper join request for incoming path from the node 1 1604.
  • the first node sends a join response to the second node.
  • the join response includes a remote-to-local-incoming identifier associated with the first node.
  • the node l 's helper 1606 sends a helper join response for incoming path to the node 1 1604.
  • the helper join response for incoming path includes the label ID "Label 2" associated with the node l 's helper 1606.
  • the first node receives a communication with the remote-to-local-incoming identifier from one of a third node or a fourth node. The communication originates from the third node.
  • the node l 's helper 1606 receives a packet from the node 2's helper 1608 that originates from the node 2 1610.
  • the node l 's helper 1606 would receive the packet directly from the node 2 1610 that originates from the node 2 1610.
  • the first node sends the communication with the second node identifier to the second node.
  • the node l 's helper 1606 sends a packet with the label ID "Label 1" to the node 1 1604.
  • the first node may receive a second join request from the second node.
  • the second join request includes an identifier associated with one of the third node or the fourth node.
  • the node l 's helper 1606 receives a helper join request for outgoing path from the node 1 1604.
  • the helper join request for outgoing path includes label ID "Label 5" associated with the node 2's helper 1608.
  • the helper join request for outgoing path would include the label ID "Label 4" associated with the node 2 1610.
  • the first node may send a second join response to the second node.
  • the second join response includes a local-to-remote-incoming identifier associated with the first node.
  • the node l 's helper 1606 sends a helper join response for outgoing path to the node 1 1604.
  • the helper join response for outgoing path includes the label ID "Label 6" associated with the node l 's helper 1606.
  • the first node may receive a communication with the local-to-remote-incoming identifier from the second node.
  • the node l 's helper 1606 receives a packet with the label ID "Label 6" from the node 1 1604.
  • the first node may send the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
  • the node l 's helper 1606 sends the packet with the label "Label 5" to the node 2's helper 1608. If the node 2 1610 does not have a helper, then the node l 's helper 1606 would send the packet with the label "Label 4" to the node 2 1610.
  • FIG. 25 is a flow chart of a seventh method of communication.
  • the method of communication may be wireless.
  • the method may be performed by a communications device, such as a UE.
  • the communications device is referred to as a first node.
  • the first node may receive a switch request from the second node.
  • the switch request includes the second node identifier and the identifier associated with one of the third node or the fourth node.
  • the node 1 's new helper 1708 may receive a switch request for local helper from the node 1 1704.
  • the switch request for local helper includes label ID "Label 1" associated with the node 1 1704.
  • the switch request for local helper may further include the label ID "Label 5" associated with the node 2's helper 1712 (as shown in step 1730 of FIG. 17) or the label ID "Label 4" associated with the node 2 1714 (if the node 2 1714 has no helper).
  • the first node may send a switch response to the second node.
  • the switch response includes the remote-to-local-incoming identifier and the local-to-remote- incoming identifier.
  • the node l 's new helper sends a switch request for local helper to the node 1 1704.
  • the switch request for local helper includes the label ID "Label 7" and the label ID "Label 8.”
  • the first node may receive an incoming communication with the remote-to-local- incoming identifier from one of the third node or the fourth node.
  • the node l 's new helper 1708 may receive a packet with the label ID "Label 7" from the node 2's helper 1712. If the node 2 1714 doesn't have a helper, then the packet in step 1746 would be received directly from the node 2 1714.
  • the first node may send the incoming communication with the second node identifier to the second node. For example, referring to FIG.
  • the node l 's new helper 1708 sends the received packet with the label ID "Label 1" to the node 1 1704.
  • the first node may receive an outgoing communication with the local-to-remote-incoming identifier from the second node.
  • the node l 's new helper 1708 receives a packet with the label ID "Label 8" from the node 1 1704.
  • the first node may send the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node. For example, referring to FIG.
  • step 1752 the node l 's new helper 1708 sends the received packet to the node 2's helper 1712. If the node 2 1714 does not have a helper, in step 1752, the node l 's new helper 1708 would send the received packet directly to the node 2 1714.
  • FIG. 26 is a flow chart of an eighth method of communication.
  • the method of communication may be wireless.
  • the method may be performed by a communications device, such as a UE.
  • the communications device is referred to as a first node.
  • the first node receives a join request from a second node.
  • the join request includes an identifier associated with one of a third node or a fourth node.
  • the node 2's helper 1608 receives a helper join request for outgoing path from the node 2 1610.
  • the helper join request for outgoing path includes the label ID "Label 2" associated with the node l 's helper 1606.
  • the helper join request for outgoing path would include the label ID "Label 1" associated with the node 1 1604.
  • the first node sends a join response to the second node.
  • the join response includes a local- to-remote-incoming identifier associated with the first node.
  • the node 2's helper 1608 sends a helper join response for outgoing path to the node 2 1610.
  • the helper join response for outgoing path includes the label ID "Label 3" associated with the node 2's helper 1608.
  • the first node receives a communication with the local-to-remote-incoming identifier from the second node.
  • the node 2's helper receives a packet with the label ID "label 3" from the node 2 1610.
  • the first node sends the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
  • the node 2's helper 1608 sends the packet with the label ID "Label 2" to the node l 's helper 1606.
  • the first node may receive a second join request from the second node.
  • the second join request includes a second node identifier associated with the second node.
  • the node 2's helper 1608 receives a helper join request for incoming path from the node 2 1610.
  • the helper join request for incoming path includes the label ID "Label 4" associated with the node 2 1610.
  • the first node may send a second join response to the second node.
  • the second join response includes a remote-to-local-incoming identifier associated with the first node.
  • the node 2's helper 1608 sends a helper join response for incoming path to the node 2 1610.
  • the helper join response for incoming path includes the label ID "Label 5" associated with the node 2's helper 1608.
  • the first node may receive a communication with the remote- to-local-incoming identifier from one of the third node or the fourth node. The communication originates from the third node. For example, referring to FIG.
  • the node 2's helper 1608 receives a packet with the label ID "Label 5" from the node l 's helper 1606 that originates from the node 1 1604. However, if the node 1 1604 does not have a helper, then the node 2's helper 1608 would receive the packet with the label ID "Label 5" from the node 1 1604 that originates from the node 1 1604.
  • the first node may send the communication with the second node identifier to the second node. For example, referring to FIG. 16, step 1656, the node 2's helper 1608 sends the packet with the label ID "Label 4" to the node 2 1610.
  • FIG. 27 is a conceptual data flow diagram 2700 illustrating the data flow between different modules/means/components in an exemplary apparatus 2702.
  • the apparatus may a communications device, such as a wireless communications device.
  • the apparatus may be a UE.
  • the apparatus may be referred to as a first node.
  • the first node 2702 (e.g., node 1 1704) includes a communication module that is configured to send a join request to a second node 2720 (e.g., node l 's old helper 1706) to route communication associated with a third node 2730 (e.g., node 2 1714) to the first node 2702.
  • a second node 2720 e.g., node l 's old helper 1706
  • the join request may include a first node identifier associated with the first node 2702.
  • the communication module 2704 is configured to receive from the second node 2720 a join response including a second node identifier associated with the second node 2720.
  • the communication module 2704 is configured to send a setup request to the third node 2730.
  • the setup request includes the second node identifier.
  • the communication module is configured to receive a communication with the first node identifier from the second node 2720.
  • the communication originates from the third node 2730.
  • the first node 2702 further includes an identifier module 2706 that is configured to generate identifiers and to store received identifiers.
  • the identifier module 2706 communicates identifier information with the communication module 2704.
  • the communication module 2704 may be further configured to receive a path setup indication from the third node 2730.
  • the first node may further include a helper interface module 2708 that is configured to determine whether to send the join request to the second node based on the path setup indication.
  • the path setup indication may include QoS information.
  • the helper interface module 2708 may determine whether to send a join request to establish a helper relationship with the second node based on the QoS information.
  • the helper interface module 2708 may be further configured to determine when to switch helper nodes.
  • the helper interface module 2708 may determine to switch helper nodes based on information from a timer module 2710, which is configured to inform the helper interface module 2708 upon expiration of a timer.
  • the helper interface module 2708 may determine to switch helper nodes based on other information, such as a release notification from a current helper node.
  • the helper interface module 2708 is configured to communicate with the communication module 2704 to switch helper nodes
  • the communication module 2704 may be configured to send a switch request to a fourth node 2750 (e.g., node l 's new helper 1708) to route communication associated with the third node 2730 to the first node 2702.
  • the switch request includes the first node identifier.
  • the communication module 2704 may be configured to receive a switch response from the fourth node 2750.
  • the switch response includes a fourth node identifier associated with the fourth node 2750.
  • the communication module 2704 may be configured to send a change notification to the third node 2730.
  • the change notification includes the fourth node identifier.
  • the communication module 2704 may be configured to receive a communication with the first node identifier from the fourth node 2750. The communication originates from the third node 2730.
  • the communication module 2704 may be configured to receive a release notification from the second node 2720.
  • the switch request may be sent in response to the release notification.
  • the communication module may be configured to receive a change response from the third node 2730 and to send a release notification to the second node 2720 after receiving the change response.
  • the timer module 2710 may be configured to set a timer associated with the second node 2720.
  • the communication module 2704 may be configured to send the switch request upon expiration of the timer.
  • the communication module 2704 may be configured to send a change notification to the third node 2730.
  • the change notification may include the first node identifier.
  • the communication module 2704 may be configured to receive a communication with the first node identifier from one of the third node 2730 or a fourth node 2740 (e.g., node 2's helper 1712). The communication originates from the third node 2730.
  • the communication module 2704 may be configured to send a release command to the second node 2720 before sending the change notification to the third node 2730.
  • the communication module 2704 may be configured to receive a change response from the third node 2730, and to send a release command to the second node 2720 after receiving the change response from the third node 2730.
  • the communication module 2704 may be configured to send a release notification to the third node 2730.
  • the communication with the first node identifier from the second node 2720 that originates from the third node 2730 stops after the release notification is sent.
  • the communication module 2704 is configured to receive a setup request from a second node 2730 (e.g., node 1 1704).
  • the setup request includes an identifier associated with one of the second node 2730 or a third node 2740 (e.g., node l 's old helper 1706).
  • the communication module 2704 is configured to send a join request to a fourth node 2720 (e.g., node 2's helper 1712) to route communication for the second node 2730 from the first node 2702 (e.g., node 2 1714) to one of the second node 2730 or the third node 2740.
  • a fourth node 2720 e.g., node 2's helper 1712
  • the join request includes the identifier associated with one of the second node 2730 or the third node 2740.
  • the communication module 2704 is configured to receive from the fourth node 2720 a join response including a fourth node identifier associated with the fourth node 2720.
  • the communication module 2704 is configured to send a communication for the second node 2730 to the fourth node 2720. The communication is sent with the fourth node identifier.
  • the communication module 2704 may be further configured to send a path setup indication to the second node 2730.
  • the communication module 2704 may be further configured to receive a change notification from the second node 2730.
  • the change notification includes an identifier associated with one of the second node 2730 or a fifth node 2760 (e.g., node l 's new helper 1708).
  • the communication module 2704 may be further configured to send a switch request to the fourth node 2720 to route communication for the second node 2730 from the first node 2704 to one of the second node 2730 or the fifth node 2760.
  • the switch request includes the identifier associated with one of the second node 2730 or the fifth node 2760.
  • the communication module 2704 may be further configured to send a second communication for the second node 2730 to the fourth node 2720. The communication is sent with the fourth node identifier.
  • the communication module 2704 may be further configured to send a release command to the fourth node 2720, and to send a communication with an identifier associated with one of the second node 2730 or the third node 2740 to one of the second node 2730 or the third node 2740.
  • the communication module 2704 may be further configured to receive a release notification from the second node, and to stop sending the communication for the second node to the fourth node upon receiving the release notification.
  • the communication module 2704 is configured to receive a join request from a second node.
  • the join request includes a second node identifier associated with the second node.
  • the communication module 2704 is further configured to send a join response to the second node.
  • the join response includes a remote-to-local-incoming identifier associated with the first node.
  • the communication module 2704 is further configured to receive a communication with the remote-to-local- incoming identifier from one of a third node or a fourth node. The communication originates from the third node.
  • the communication module 2704 is further configured to send the communication with the second node identifier to the second node.
  • the communication module 2704 may be further configured to receive a second join request from the second node.
  • the second join request includes an identifier associated with one of the third node or the fourth node.
  • the communication module 2704 may be further configured to send a second join response to the second node.
  • the second join response includes a local-to-remote-incoming identifier associated with the first node.
  • the communication module 2704 may be further configured to receive a communication with the local-to-remote-incoming identifier from the second node.
  • the communication module 2704 may be further configured to send the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
  • the communication module 2704 may be further configured to receive a switch request from the second node.
  • the switch request includes the second node identifier and the identifier associated with one of the third node or the fourth node.
  • the communication module 2704 may be further configured to send a switch response to the second node.
  • the switch response includes the remote-to-local-incoming identifier and the local-to- remote-incoming identifier.
  • the communication module 2704 may be further configured to receive an incoming communication with the remote-to-local-incoming identifier from one of the third node or the fourth node.
  • the communication module 2704 may be further configured to send the incoming communication with the second node identifier to the second node.
  • the communication module 2704 may be further configured to receive an outgoing communication with the local-to-remote-incoming identifier from the second node.
  • the communication module 2704 may be further configured to send the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
  • the communication module 2704 is configured to receive a join request from a second node.
  • the join request includes an identifier associated with one of a third node or a fourth node.
  • the communication module 2704 is configured to send a join response to the second node.
  • the join response includes a local-to-remote- incoming identifier associated with the first node.
  • the communication module 2704 is configured to receive a communication with the local-to-remote-incoming identifier from the second node.
  • the communication module 2704 is configured to send the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
  • the apparatus may include additional modules that perform each of the steps of the algorithm in the aforementioned flow charts of FIGs. 19-26. As such, each step in the aforementioned flow charts of FIGs. 19-26 may be performed by a module and the apparatus may include one or more of those modules.
  • the modules may be one or more hardware components specifically configured to carry out the stated processes/algorithm, implemented by a processor configured to perform the stated processes/algorithm, stored within a computer-readable medium for implementation by a processor, or some combination thereof.
  • FIG. 28 is a diagram 2800 illustrating an example of a hardware implementation for an apparatus 2702' employing a processing system 2814.
  • the processing system 2814 may be implemented with a bus architecture, represented generally by the bus 2824.
  • the bus 2824 may include any number of interconnecting buses and bridges depending on the specific application of the processing system 2814 and the overall design constraints.
  • the bus 2824 links together various circuits including one or more processors and/or hardware modules, represented by the processor 2804, the modules 2704, 2706, 2708, 2710, and the computer-readable medium 2806.
  • the bus 2824 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further.
  • the processing system 2814 may be coupled to a transceiver 2810.
  • the transceiver 2810 is coupled to one or more antennas 2820.
  • the transceiver 2810 provides a means for communicating with various other apparatus over a transmission medium.
  • the processing system 2814 includes a processor 2804 coupled to a computer-readable medium 2806.
  • the processor 2804 is responsible for general processing, including the execution of software stored on the computer-readable medium 2806.
  • the software when executed by the processor 2804, causes the processing system 2814 to perform the various functions described supra for any particular apparatus.
  • the computer-readable medium 2806 may also be used for storing data that is manipulated by the processor 2804 when executing software.
  • the processing system further includes at least one of the modules 2704, 2706, 2708, 2710.
  • the modules may be software modules running in the processor 2804, resident/stored in the computer readable medium 2806, one or more hardware modules coupled to the processor 2804, or some combination thereof.
  • the first node apparatus 2702/2702' for communication includes means for sending a join request to a second node to route communication associated with a third node to the first node.
  • the join request includes a first node identifier associated with the first node.
  • the apparatus further includes means for receiving from the second node a join response including a second node identifier associated with the second node.
  • the apparatus further includes means for sending a setup request to the third node.
  • the setup request includes the second node identifier.
  • the apparatus further includes means for receiving a communication with the first node identifier from the second node. The communication originates from the third node.
  • the apparatus may further include means for receiving a path setup indication from the third node.
  • the apparatus may further include means for determining whether to send the join request to the second node based on the path setup indication.
  • the apparatus may further include means for sending a switch request to a fourth node to route communication associated with the third node to the first node.
  • the switch request includes the first node identifier.
  • the apparatus may further include means for receiving a switch response from the fourth node.
  • the switch response includes a fourth node identifier associated with the fourth node.
  • the apparatus may further include means for sending a change notification to the third node.
  • the change notification includes the fourth node identifier.
  • the apparatus may further include means for receiving a communication with the first node identifier from the fourth node.
  • the communication originates from the third node.
  • the apparatus may further include means for receiving a release notification from the second node.
  • the switch request is sent in response to the release notification.
  • the apparatus may further include means for receiving a change response from the third node, and means for sending a release notification to the second node after receiving the change response.
  • the apparatus may further include means for setting a timer associated with the second node.
  • the switch request is sent upon expiration of the timer.
  • the apparatus may further include means for sending a change notification to the third node.
  • the change notification includes the first node identifier.
  • the apparatus may further include means for receiving a communication with the first node identifier from one of the third node or a fourth node. The communication originates from the third node.
  • the apparatus may further include means for sending a release command to the second node before sending the change notification to the third node.
  • the apparatus may further include means for receiving a change response from the third node, and means for sending a release command to the second node after receiving the change response from the third node.
  • the apparatus may further include means for sending a release notification to the third node. The communication with the first node identifier from the second node that originates from the third node stops after the release notification is sent.
  • the aforementioned means may be one or more of the aforementioned modules of the apparatus 2702 and/or the processing system 2814 of the apparatus 2702' configured to perform the functions recited by the aforementioned means.
  • the first node apparatus 2702/2702' for communication includes means for receiving a setup request from a second node.
  • the setup request includes an identifier associated with one of the second node or a third node.
  • the apparatus further includes means for sending a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node.
  • the join request includes the identifier associated with one of the second node or the third node.
  • the apparatus further includes means for receiving from the fourth node a join response including a fourth node identifier associated with the fourth node.
  • the apparatus further includes means for sending a communication for the second node to the fourth node. The communication is sent with the fourth node identifier.
  • the apparatus may further include means for sending a path setup indication to the second node.
  • the apparatus may further include means for receiving a change notification from the second node.
  • the change notification includes an identifier associated with one of the second node or a fifth node.
  • the apparatus may further include means for sending a switch request to the fourth node to route communication for the second node from the first node to one of the second node or the fifth node.
  • the switch request includes the identifier associated with one of the second node or the fifth node.
  • the apparatus may further include means for sending a second communication for the second node to the fourth node. The communication is sent with the fourth node identifier.
  • the apparatus may further include means for sending a release command to the fourth node, and means for sending a communication with an identifier associated with one of the second node or the third node to one of the second node or the third node.
  • the apparatus may further include means for receiving a release notification from the second node, means for stopping the sending of the communication for the second node to the fourth node upon receiving the release notification.
  • the aforementioned means may be one or more of the aforementioned modules of the apparatus 2702 and/or the processing system 2814 of the apparatus 2702' configured to perform the functions recited by the aforementioned means.
  • the first node apparatus 2702/2702' for communication includes means for receiving a join request from a second node.
  • the join request includes a second node identifier associated with the second node.
  • the apparatus further includes means for sending a join response to the second node.
  • the join response includes a remote-to-local-incoming identifier associated with the first node.
  • the apparatus further includes means for receiving a communication with the remote-to-local-incoming identifier from one of a third node or a fourth node.
  • the communication originates from the third node.
  • the apparatus further includes means for sending the communication with the second node identifier to the second node.
  • the apparatus may further include means for receiving a second join request from the second node.
  • the second join request includes an identifier associated with one of the third node or the fourth node.
  • the apparatus may further include means for sending a second join response to the second node.
  • the second join response includes a local-to- remote-incoming identifier associated with the first node.
  • the apparatus may further include means for receiving a communication with the local-to-remote-incoming identifier from the second node.
  • the apparatus may further include means for sending the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
  • the apparatus may further include means for receiving a switch request from the second node.
  • the switch request includes the second node identifier and the identifier associated with one of the third node or the fourth node.
  • the apparatus may further include means for sending a switch response to the second node.
  • the switch response includes the remote-to-local-incoming identifier and the local-to-remote-incoming identifier.
  • the apparatus may further include means for receiving an incoming communication with the remote-to-local-incoming identifier from one of the third node or the fourth node, means for sending the incoming communication with the second node identifier to the second node, means for receiving an outgoing communication with the local-to-remote-incoming identifier from the second node, and means for sending the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
  • the aforementioned means may be one or more of the aforementioned modules of the apparatus 2702 and/or the processing system 2814 of the apparatus 2702' configured to perform the functions recited by the aforementioned means.
  • the first node apparatus 2702/2702' for communication includes means for receiving a join request from a second node.
  • the join request includes an identifier associated with one of a third node or a fourth node.
  • the apparatus further includes means for sending a join response to the second node.
  • the join response includes a local-to-remote-incoming identifier associated with the first node.
  • the apparatus further includes means for receiving a communication with the local-to- remote-incoming identifier from the second node, and means for sending the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
  • the apparatus may further include means for receiving a second join request from the second node.
  • the second join request includes a second node identifier associated with the second node.
  • the apparatus may further include means for sending a second join response to the second node.
  • the second join response includes a remote-to-local- incoming identifier associated with the first node.
  • the apparatus may further include means for receiving a communication with the remote-to-local-incoming identifier from one of the third node or the fourth node.
  • the communication originates from the third node.
  • the apparatus may further include means for sending the communication with the second node identifier to the second node.
  • the apparatus may further include means for receiving a switch request from the second node.
  • the switch request includes the second node identifier and the identifier associated with one of the third node or the fourth node.
  • the apparatus may further include means for sending a switch response to the second node.
  • the switch response includes the remote-to-local-incoming identifier and the local-to-remote-incoming identifier.
  • the apparatus may further include means for receiving an incoming communication with the remote-to-local-incoming identifier from one of the third node or the fourth node, means for sending the incoming communication with the second node identifier to the second node, means for receiving an outgoing communication with the local-to-remote-incoming identifier from the second node, and means for sending the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
  • the aforementioned means may be one or more of the aforementioned modules of the apparatus 2702 and/or the processing system 2814 of the apparatus 2702' configured to perform the functions recited by the aforementioned means.

Abstract

A method, a computer program product, and an apparatus are provided. The apparatus, which is a first node, sends a join request to a second node to route communication associated with a third node to the first node. The join request includes a first node identifier associated with the first node. The first node receives from the second node a join response comprising a second node identifier associated with the second node. The first node sends a setup request to the third node, the setup request comprising the second node identifier. The first node receives a communication with the first node identifier from the second node, the communication originating from the third node.

Description

MULTIPATH OVERLAY NETWORK AND ITS MULTIPATH
MANAGEMENT PROTOCOL
CROSS-REFERENCE TO RELATED APPLICATION(S)
This application is a continuation in part and claims the benefit of U.S. Patent Application Serial No. 13/1 16,980, entitled "Multipath Overlay Network and Its Multipath Management Protocol" and filed on May 26, 201 1, which is expressly incorporated by reference herein in its entirety.
BACKGROUND
Field
The present disclosure relates generally to communication networks, and more particularly, communication access in Wireless Wide Area Networks (WWANs).
Background
Access links, such as a wireless air interface between an access terminal and a base station, are often times the bottlenecks of Wireless Wide Area Networks (WWANs). Nowadays, multimedia applications increasingly introduce a higher traffic load on access links of WWANs, causing unsatisfactory user experience.
SUMMARY
A method, a computer program product, and an apparatus are provided. The apparatus is a first node. The first node sends a join request to a second node to route communication associated with a third node to the first node. The join request includes a first node identifier associated with the first node. The first node receives from the second node a join response including a second node identifier associated with the second node. The first node sends a setup request to the third node. The setup request includes the second node identifier. The first node receives a communication with the first node identifier from the second node, the communication originating from the third node.
A method, a computer program product, and an apparatus are provided. The apparatus is a first node. The first node receives a setup request from a second node. The setup request includes an identifier associated with one of the second node or a third node. The first node sends a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node. The join request includes the identifier associated with one of the second node or the third node. The first node receives from the fourth node a join response including a fourth node identifier associated with the fourth node. The first node sends a communication for the second node to the fourth node. The communication is sent with the fourth node identifier.
A method, a computer program product, and an apparatus are provided. The apparatus is a first node. The first node receives a join request from a second node. The join request includes a second node identifier associated with the second node. The first node sends a join response to the second node. The join response includes a remote-to- local-incoming identifier associated with the first node. The first node receives a communication with the remote-to-local-incoming identifier from one of a third node or a fourth node. The communication originates from the third node. The first node sends the communication with the second node identifier to the second node.
A method, a computer program product, and an apparatus are provided. The apparatus is a first node. The first node receives a join request from a second node. The join request includes an identifier associated with one of a third node or a fourth node. The first node sends a join response to the second node. The join response includes a local- to-remote-incoming identifier associated with the first node. The first node receives a communication with the local-to-remote-incoming identifier from the second node. The first node sends the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram illustrating an example of a hardware implementation for an apparatus employing a processing system.
FIG. 2 is an illustration of a multipath overlay network.
FIG. 3 illustrates a protocol stack of the overlay network data plane.
FIG. 4 illustrates a protocol stack of the control plane.
FIG. 5 illustrates an example of a label distribution.
FIG. 6 illustrates a state transition diagram.
FIGs. 7A-7F illustrate Specification and Description Language (SDL) diagrams for an Aggregator. FIG. 8 illustrates a state transition diagram for an aggregator helper.
FIGs. 9A-9B illustrate an SDL diagram for an aggregator helper.
FIG. 10 illustrates a state transition diagram for a source.
FIGS. 1 lA-1 IF illustrate an SDL diagram for a source.
FIG. 12 illustrates a state transition diagram for a source helper.
FIGs. 13A-13B illustrate an SDL diagram for a source helper.
FIG. 14 is an example of a packet header of multipath overlay network data packets.
FIG. 15 is an example of a packet header of multipath overlay network signaling messages.
FIG. 16 is a first diagram illustrating exemplary methods in which a protocol execution does not rely on distinguishing between aggregator helpers and source helpers.
FIG. 17 is a second diagram illustrating exemplary methods.
FIG. 18 is a third diagram illustrating exemplary methods.
FIG. 19 is a flow chart of a first method of wireless communication.
FIG. 20 is a flow chart of a second method of wireless communication.
FIG. 21 is a flow chart of a third method of wireless communication.
FIG. 22 is a flow chart of a fourth method of wireless communication.
FIG. 23 is a flow chart of a fifth method of wireless communication.
FIG. 24 is a flow chart of a sixth method of wireless communication.
FIG. 25 is a flow chart of a seventh method of wireless communication.
FIG. 26 is a flow chart of an eighth method of wireless communication.
FIG. 27 is a conceptual data flow diagram illustrating the data flow between different modules/means/components in an exemplary apparatus.
FIG. 28 is a diagram illustrating an example of a hardware implementation for an apparatus employing a processing system.
DETAILED DESCRIPTION
The detailed description set forth below in connection with the appended drawings is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of various concepts. However, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some instances, well known structures and components are shown in block diagram form in order to avoid obscuring such concepts.
Several aspects of telecommunication systems will now be presented with reference to various apparatus and methods. These apparatus and methods will be described in the following detailed description and illustrated in the accompanying drawings by various blocks, modules, components, circuits, steps, processes, algorithms, etc. (collectively referred to as "elements"). These elements may be implemented using electronic hardware, computer software, or any combination thereof. Whether such elements are implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.
By way of example, an element, or any portion of an element, or any combination of elements may be implemented with a "processing system" that includes one or more processors. Examples of processors include microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionality described throughout this disclosure. One or more processors in the processing system may execute software. Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.
Accordingly, in one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or encoded as one or more instructions or code on a computer-readable medium. Computer-readable media includes computer storage media. Storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer- readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
FIG. 1 is a block diagram illustrating an example of a hardware implementation for an apparatus 100 employing a processing system 1 14. In this example, the processing system 114 may be implemented with a bus architecture, represented generally by the bus 102. The bus 102 may include any number of interconnecting buses and bridges depending on the specific application of the processing system 114 and the overall design constraints. The bus 102 links together various circuits including one or more processors, represented generally by the processor 104, and computer-readable media, represented generally by the computer-readable medium 106. The bus 102 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further. A bus interface 108 provides an interface between the bus 102 and a transceiver 1 10. The transceiver 110 provides a means for communicating with various other apparatus over a transmission medium. Depending upon the nature of the apparatus, a user interface 1 12 (e.g., keypad, display, speaker, microphone, joystick) may also be provided.
The processor 104 is responsible for managing the bus 102 and general processing, including the execution of software stored on the computer-readable medium 106. The software, when executed by the processor 104, causes the processing system 114 to perform the various functions described infra for any particular apparatus. The computer-readable medium 106 may also be used for storing data that is manipulated by the processor 104 when executing software.
The various concepts presented throughout this disclosure may be implemented across a broad variety of telecommunication systems, network architectures, and communication standards. By way of example, various aspects may be implemented in UMTS systems such as W-CDMA, TD-CDMA, TD-SCDMA, High Speed Packet Access (HSPA), and HSPA+. Various aspects may also be implemented in systems employing Long Term Evolution (LTE) (in FDD, TDD, or both modes), LTE-Advanced (LTE-A) (in FDD, TDD, or both modes), CDMA2000, Evolution-Data Optimized (EV-DO), Ultra Mobile Broadband (UMB), IEEE 802.1 1 (Wi-Fi), IEEE 802.16 (WiMAX), IEEE 802.20, Ultra- Wideband (UWB), Bluetooth, and/or any other suitable system. The actual telecommunication standard and/or network architecture employed will depend on the specific implementation and the overall design constraints imposed on the system. FIG. 2 is an illustration of the architecture of a multipath overlay network 200 in accordance with some aspects of the present disclosure. Here, the multipath overlay network 200 includes various paths between different nodes such as one or more traffic sources ("source") 210, and one or more traffic destinations ("aggregator") 220. The source 210 and the aggregator 220 may each "discover" specific "helpers" to establish the paths, and to route substreams of a streaming session between the respective source 210 and aggregator 220. Each multimedia communication session ("streaming session") may include a source 210, one or more source helpers 215 (optional), one or more aggregator helpers 225 (optional), and an aggregator 210. For example, in one path, a traffic substream may flow from a source 210 to a source helper 215, then to an aggregator helper 225, and then to an aggregator 220. The selected source helper 215 and aggregator helper 225 thus serve to relay the substream of the streaming multimedia communication session from the source 210 to the aggregator 220. If data is transmitted from the source 210 directly to the aggregator 220, that data may be characterized as a first description of the streaming session. Substreams of data transmitted over other paths, e.g., utilizing one or more helpers, may be characterized as second and subsequent descriptions of the streaming session. Thus, multiple descriptions of the streaming session may be transmitted over separate paths and reassembled at the aggregator 220 for an enhanced quality of service by virtue of the additional bandwidth being utilized. The source helper 215 and the aggregator 210 may thus "cooperatively help" the source 1 10 and the aggregator 120 to achieve, for example, a streaming communication that has a quality greater than a threshold value of quality, in order to enhance a user experience.
In the above-described multipath overlay network 200, the sources 210 are the traffic sources of a streaming session, and the aggregators 220 are the traffic destinations of the streaming session. A source helper 215 is a cooperative node, which may be selected by the source 210 to receive and retransmit a description of the session in a substream. An aggregator helper 225 is a cooperative node, which may be selected by the aggregator 220 to receive and retransmit a description of the session in a substream.
In some aspects of the disclosure, a source helper 215 and an aggregator helper 225 can be a helper for one or more traffic sessions at the same time. That is, a node can take different roles for different traffic sessions, i.e., as a source 210, a source helper 215, an aggregator 220, and/or an aggregator helper 225. • Multipath Overlay Network Protocol Stack
FIG. 3 illustrates protocol stacks of certain nodes in the overlay network data plane in accordance with some aspects of the disclosure. The data plane can be utilized to deliver the multimedia data across the multipath overlay network 200. In some aspects, the data packets may traverse multiple hops on the multipath overlay network 200. In the illustrated example, various data plane protocol stacks are illustrated for certain nodes in a particular path including a source 302, a source helper 304, an aggregator helper 304, and an aggregator 306. In some aspects, the protocol stack for the source 302 includes a physical layer (PHY) 302a, a medium access control layer (MAC) 302b, an internet protocol layer (IP) 302c, a user datagram protocol/transmission control protocol layer (UDP/TCP) 302d, an overlay routing layer 302e, and a real-time transport protocol layer (RTP) 302f. The protocol stack for the source helper 304 includes, at an input side, a PHY layer 304al, a MAC layer 304bl, an IP layer 304cl, and a UDP/TCP layer 304dl ; and at an output side, a PHY layer 304a2, a MAC layer 304b2, an IP layer 304c2, and a UDP/TCP layer 304d2. The source helper 304 further includes an overlay routing layer 304e. The protocol stack for the aggregator helper 306 includes, at an input side, a PHY layer 306al, a MAC layer 306bl, an IP layer 306cl, and a UDP/TCP layer 306dl ; and at an output side, a PHY layer 306a2, a MAC layer 306b2, an IP layer 306c2, and a UDP/TCP layer 306d2. The aggregator helper 306 further includes an overlay routing layer 306e. The protocol stack for the aggregator 308 includes a PHY layer 308a, a MAC layer 308b, an IP layer 308c, a UDP/TCP layer 308d, an overlay routing layer 308e, and an RTP layer 308f.
In some aspects, the multipath overlay network 200, utilizing the protocol stack illustrated in FIG. 3, utilizes a UDP or a TCP port (e.g., a predetermined UDP or TCP port) for transporting overlay network data packets.
In some aspects of the disclosure, if a data path segment exists between a pair of nodes in the multipath overlay network 200, an end-to-end UDP/IP transport can be utilized between those nodes. For example, an end-to-end UDP/IP transport can be utilized between the source 302 and the source helper 304; between the source 302 and the aggregator helper 306; between the source helper 304 and the aggregator 308; and between the aggregator helper 306 and the aggregator 308.
FIG. 4 illustrates a protocol stack of the overlay network control plane in accordance with some aspects of the disclosure. The control plane of the multipath overlay network may be used to setup, release, and switch a path in the data plane between a respective source 210 and aggregator 220. In the illustrated example of the overlay network control plane connections between pairs of nodes, each of the respective nodes includes a PHY layer, a MAC layer, an IP layer, and a TCP layer. In addition, each of the respective nodes includes an overlay control layer.
In an aspect of the disclosure, multipath overlay network signaling messages may traverse a single hop on the multipath overlay network. That is, if a data path segment is expected between a respective pair of nodes (e.g., between a source helper 402a and a source 402b; between a source 404a and an aggregator 404b; or between an aggregator 406a and an aggregator helper 406b), TCP/IP transport can be utilized between those nodes. In some implementations, the multipath overlay network uses a transmission control protocol (TCP) port (e.g., a predetermined TCP port) for transporting overlay network signaling messages.
• Multipath Overlay Network Routing
The multipath overlay network routing function uses a label switching mechanism to route the data traffic. Here, an input label identifier (ID) can be used by the source helper 215, the aggregator helper 225, and the aggregator 210 to identify the data packets of a unique stream (e.g., a substream) received by the underlying node. Similarly, an output label ID can be used by the source 210, the source helper 215, and the aggregator helper 225 to identify the data packets of a unique stream (e.g., a substream) to be sent by the underlying node. The input label ID may be assigned by the recipient of the data packet during the signaling phase, and in one aspect, may be unique only from the perspective of the recipient. The output label ID may be assigned by the sender of the data packet.
When a node in the multipath overlay network receives a multipath overlay network data packet, the node examines the input label ID and then sends out this packet to a next hop overlay network address, which may be the destination of the packet in the underlying network. The packet may be tagged with the corresponding output label ID. An example of a switching table is shown in Table 1. Table 1: Switching Table
Figure imgf000011_0001
FIG. 5 is an illustration of a multipath overlay network substantially similar to that illustrated in FIG. 2, further including details to illustrate distribution of label IDs. In the illustrated example, the label IDs that are assigned by a common node are tagged with the same alphabetic character.
For example, a first overlay network data packet may be sent from source 1 210 along a direct path to aggregator 2 220d. Here, the source 1 210 may assign an output label ID of dl, corresponding to the overlay network address of the aggregator 2 220d; and similarly, because this particular data packet is to follow a direct path, the next hop overlay network address also may correspond to that of aggregator 2 220d. When the data packet arrives at the aggregator 2 220d, the data packet then receives an input label ID corresponding to the overlay network address of the source.
Further, a second overlay network data packet may be sent from source 1 210 along an alternative path to aggregator 2 220d. Here, the alternative path includes source helper 215a and aggregator helper 225b. Thus, the source 1 210 may assign an output label ID of dl, corresponding to the overlay network address of aggregator 2 220d. However, because this particular data packet is following the alternative path, the next hop overlay network address corresponds to that of source helper 215a. At the next hop, the source helper 215a assigns an input label ID corresponding to the overlay network address of source 1 210, since that node was the source of the data packet; and retains the output label ID of aggregator 2 220d. The source helper 215a assigns a next hop overlay network address corresponding to that of the aggregator helper 225b. At the next hop, the aggregator helper 225b assigns an input label ID corresponding to the overlay network address of source helper 215a, and retains the output label ID of aggregator 2 220d. The aggregator helper 225b assigns a next hop overlay network address corresponding to that of aggregator 2 220d. At the next hop, which is the destination of the data packet, aggregator 2 220d assigns an input label ID corresponding to the overlay network address of the aggregator helper 225b.
Of course, those skilled in the art will recognize that this is only one particular implementation, and other forms of switching tables and addressing of data packets may be utilized within the spirit of the present disclosure and the scope of the claims.
• State and SDL Diagrams of an Aggregator
Referring once again to the multipath overlay network 200 illustrated in FIG. 2, it is seen that an aggregator 220 may be capable of receiving information over multiple paths from a corresponding source 210. In an aspect of the disclosure, as illustrated in FIG. 6, an aggregator 220 may include a master state machine that governs the path management of the multiple paths it has with the corresponding source 210. In a further aspect of the disclosure, a master state machine for an aggregator 220 can include multiple atomic state machines. Here, each atomic state machine governs the path management of a single path between the aggregator 220 and the corresponding source 210.
A state transition diagram 600 for an aggregator 220 in accordance with some aspects of the disclosure is shown in FIG. 6. For each atomic state machine of the aggregator 220, the aggregator 220 has states including a Released state 610; a Wait for Aggregator Helper to Join state 620; a Wait for Source to Join state 630; a Joined state 640; a Wait for Aggregator Helper to Replace state 650; and a Wait for Source to Switch state 660. At some of the states, as described below, the aggregator 220 may utilize timers including an Original Helper Join timer, a Replacement Helper Join timer, and a Source Join timer. Further, in some of the states, the aggregator 220 may utilize a binary state variable "helper_active" for state reduction, with, e.g., a default value set to false. Signaling messages that are not designed to be handled as inputs at a certain state may be queued for delayed processing.
FIGs. 7A-7F are specification and description language (SDL) flow charts illustrating state transitions in the state transition diagram 600 illustrated in FIG. 6. As illustrated in FIG. 7A, at the Released state 610, the path between the aggregator 220 and the node corresponding to this particular atomic state machine is released. Here, the aggregator 220 may transition to the Wait for Source to Join state 630 or the Wait for Aggregator Helper to Join state 620. The aggregator 220 may receive an indication 702, e.g., from a source 210, for setting up a path. If the aggregator 220 is not in need of a helper, then the aggregator 220 may move to the Wait for Source to Join state 630. If the aggregator 220 desires a helper, the aggregator 220 may send an Aggregator Helper Join Request message 704 to the corresponding aggregator helper 225, and start an Original Helper Join timer 706. The aggregator 220 may then enter the Wait for Aggregator Helper to Join state 620.
As illustrated in FIG. 7B, at the Wait for Aggregator Helper to Join state 620, the aggregator 220 has sent an Aggregator Helper Join Request message, and is awaiting, for the duration of the Original Helper Join timer, an Aggregator Helper Join Response message. Here, if the Original Helper Join timer expires 708, the aggregator 220 enters the Released state 610. However, prior to the expiration of the Original Helper Join timer, the aggregator 220 may receive an Aggregator Helper Join Response message 710. If the message is not accepted, the aggregator 220 may enter the Released state 610. If the message is accepted, the aggregator 220 may then set the helper_active variable to true 711, send a Source Join Request message 712, start a Source Join timer 714, and enter the Wait for Source to Join state 630.
As illustrated in FIG. 7C, at the Wait for Source to Join state 630, the aggregator 220 has sent a Source Join Request message, and is awaiting, for the duration of the Source Join timer, a Source Join Response message. Here, if the Source Join timer expires 716, and if the helper_active variable is false, the aggregator 220 may enter the Released state 610. However, if the Source Join timer expires 716, and the helper_active variable is true, then the aggregator may wish to release the helper corresponding to the helper_active variable, so it may send a Helper Release Request message 718 to its helper, set the helper active variable to false, and thereafter enter the Released state 610. However, prior to the expiration of the Source Join timer, the aggregator 220 may receive a Source Join Response message 722 from the source 210 in response to the Source Join Request message. If the aggregator 220 does not accept the Source Join Response message, then the aggregator 220 follows the process outlined just above to enter into the Released state 610. If the aggregator 220 accepts the Source Join Response message from the source 210, then the aggregator 220 enters the Joined state 640.
As illustrated in FIG. 7D, at the Joined state 640, a path from the aggregator 220 to a corresponding source 210 exists, that path including the node corresponding to this particular atomic state machine. Here, the aggregator 220 may receive an Aggregator Switch Request message 724 from the source 210, to request the aggregator 220 to switch a path between the source 210 and the aggregator 220. The aggregator 220 may then respond to the source 210 with an Aggregator Switch Response message 726 and return to the Joined state 640. Further, in the Joined state 640, the aggregator 220 may receive a Helper Release Notification message 728 from a helper node, indicating to release a particular path utilizing that node, between the source 210 and the aggregator 220. Here, to release the path, the aggregator 220 may set the helper_active variable to false 730, and seek to find a replacement helper 732. In the Joined state 640, the aggregator 220 may also receive an indication for replacing a joined helper 734, in response to which the aggregator 220 similarly may seek to find a replacement helper 732. Here, if a replacement helper is not found, the aggregator 220 may send a Source Release Command message 736 to the source 210 to release the path between the source 210 and the aggregator 220, and enter the Released state 610. If a replacement helper is found, the aggregator 220 may send an Aggregator Helper Join Request message 738 to the found aggregator helper 225, seeking to set up the path between the source 210 and the aggregator 220 utilizing the found aggregator helper 225. The aggregator 220 may then start the Replacement Helper Join timer 740, and enter the Wait for Aggregator Helper to Replace state 650. Further, in the Joined state 640, the aggregator 220 may receive a Source Release Notification message 742 from the source 210 indicating to release a path between the source 210 and the aggregator 220. Here, the aggregator 220 may send a Helper Release Command message 744 to a joined helper to release a path between the source 210 and the aggregator 220 utilizing the corresponding helper, and set the helper_active variable false 746, before entering the Released state 610.
As illustrated in FIG. 7E, at the Wait for Aggregator Helper to Replace state 650, the aggregator 220 has sent an Aggregator Helper Join Request message to a found replacement aggregator helper 225, and is awaiting, for the duration of the Replacement Helper Join timer, an Aggregator Helper Join Response message from the found replacement aggregator helper 225. Here, if the Replacement Helper Join timer expires 748, but if the helper_active variable is false (indicating that the aggregator 220 is not joined to a helper node), the aggregator 220 sends a Source Release Command message 750 to the source 210 to release the path between the source 210 and the aggregator 220, and enters the Released state 610. However, if the Replacement Helper Join timer expires 748, and the helper_active variable is true, then the aggregator 220 enters the Joined state 640, retaining the path between the source 210 and the aggregator 220 that includes the helper corresponding to this particular atomic state machine. Further, prior to the expiration of the Replacement Helper Join timer, the aggregator 220 may receive an Aggregator Helper Join Response message 752 from a corresponding aggregator helper 225 in response to an Aggregator Helper Join Request message. If the aggregator 220 does not accept the Aggregator Helper Join Response message, then the aggregator 220 follows the process outlined above to enter into either the Released state 610 or the Joined state 640. If the aggregator 220 accepts the Aggregator Helper Join Response message from the aggregator helper 225, and if the helper_active variable is true, the aggregator 220 may send a Helper Release Command message 754 to the original helper to release the corresponding path between the source 210 and the aggregator 220 utilizing that helper node. If the helper_active variable is false, the aggregator 220 may skip the sending of the Helper Release Command message 754. Next, the aggregator 220 may send a Source Switch Request message 756 to the source 210 to request the source 210 to switch a path between the source 210 and the aggregator 220, start the Source Join timer 758, and enter the Wait for Source to Switch state 660.
As illustrated in FIG. 7F, at the Wait for Source to Switch state 660, the aggregator 220 has sent a Source Switch Request message, and is awaiting, for the duration of the Source Join timer, a Source Switch Response message. Here, if the Source Join timer expires 760, the aggregator 220 may send a Helper Release command 762 to the respective helper, to release the corresponding path between the source 210 and the aggregator 220 utilizing that helper node. The aggregator 220 may then set the helper_active variable to false 764, and enter the Released state 610. However, prior to the expiration of the Source Join timer, the aggregator 220 may receive a Source Switch Response message 766 from the source 210 in response to the Source Switch Request message. If the aggregator 220 does not accept the Source Switch Response message, the aggregator 220 may follow the process outlined just above to enter into the Released state 610. If the aggregator 220 accepts the Source Switch Response message 766, then the aggregator 220 enters the Joined state 640.
• State and SDL Diagrams of an Aggregator Helper
FIG. 8 is an illustration of a state machine 800 corresponding to an aggregator helper 225, illustrated in FIG. 2. An aggregator helper 225 may include a Released state 810 and a Joined state 820. That is, the aggregator helper 225 may be joined to take part in forming a path, or may be released as a cooperative node. FIGs. 9A-9B are SDL flow charts illustrating state transitions in the state transition diagram 800 illustrated in FIG. 8. As illustrated in FIG. 9A, at the Released state 810, the aggregator helper 225 does not act as a cooperative node for a path between a source 210 and an aggregator 220. Here, the aggregator helper 225 may receive an Aggregator Helper Join Request message 902 from an aggregator 220 to request the aggregator helper 225 set up a path between a source 210 and the aggregator 220. If the aggregator helper 225 does not accept the Aggregator Helper Join Request message, the aggregator helper 225 may send a Negative Aggregator Helper Join Response message 904 to the aggregator 220, and return to the Released state 810. If the aggregator helper 225 accepts the Aggregator Helper Join Request message, the aggregator helper 225 may send a Positive Aggregator Helper Join Response message 906 to the aggregator 220, and enter the Joined state 820, in which the aggregator helper 225 acts as a cooperative node in a path between a source 210 and the aggregator 220.
As illustrated in FIG. 9B, at the Joined state 820, the aggregator helper 225 acts as a cooperative node in a path between a source 210 and an aggregator 220. Here, the aggregator helper 225 may receive a Release Indication message 908, indicating to release the path between the source 210 and the aggregator 220, including the aggregator helper 225. In response, the aggregator helper 225 may send a Helper Release Notification message 910 to the aggregator 220 to release the corresponding path. Further, the aggregator helper 225 may receive a Helper Release Command message 912 from an aggregator 220 to release a path between the aggregator 220 and a source 210. Here, the aggregator helper 225 may enter the Released state 810, wherein the aggregator helper 225 does not act as a cooperative node for a path between a source 210 and an aggregator 220.
• State and SDL Diagrams of a Source
Referring once again to the multipath overlay network 200 illustrated in FIG. 2, it is seen that a source 210 may be capable of sending information over multiple paths to a corresponding aggregator 220. In an aspect of the disclosure, as illustrated in FIG. 10, a source 210 may include a master state machine that governs the path management of the multiple paths established with the corresponding aggregator 220. In a further aspect of the disclosure, a master state machine for a source 210 can include multiple atomic state machines. Here, each atomic state machine governs the path management of a path between the source 210 and the corresponding aggregator 220. A state transition diagram 1000 for a source 210 in accordance with some aspects of the disclosure is shown in FIG. 10. For each atomic state machine of the source 210, the source 210 has states including a Released state 1010; a Wait for Source Helper to Join state 1020; a Joined state 1040; a Wait for Source Helper to Replace state 1050; a Wait for Aggregator to Switch state 1060; and a Wait for Source Helper to Switch state 1070. At some of the states, as described below, the source 210 may utilize timers including an Original Helper Join timer, a Replacement Helper Join timer, and an Aggregator Join timer. Further, in some of the states, the source 210 may utilize a binary state variable "helper_active" for state reduction, with, e.g., a default value set to false. Signaling messages that are not designed to be handled as inputs at a certain state may be queued for a delayed processing.
FIGs. 11A-1 1F are SDF flow charts illustrating state transitions in the state transition diagram 1000 illustrated in FIG. 10. As illustrated in FIG. 11A, at the Released state 1010, the path between the source 210 and the node corresponding to this particular atomic state machine is released. Here, the source 210 may transition to the Joined state 1040 or the Wait for Source Helper to Join state 1020. The source 210 may receive a Source Join Request message 1 102 from an aggregator 220 to request the source 210 to setup a path between the source 210 and the aggregator 220. If the source 210 is not in need of a helper, then the source 210 may update path information 1 104 to establish a direct path from the source 210 to the aggregator 220, and may move to the Joined state 1040. If the source 210 desires a helper, the source 210 may send a Source Helper Join Request message 1 106 to the corresponding source helper 215, and start an Original Helper Join timer 1108. The source 210 may then enter the Wait for Source Helper to Join state 1020.
As illustrated in FIG. 1 IB, at the Wait for Source Helper to Join state 1020, the source 210 has sent a Source Helper Join Request message, and is awaiting, for the duration of the Original Helper Join timer, a Source Helper Join Response message. Here, if the Original Helper Join timer expires 11 10, the source 210 may send a Negative Source Join Response message 11 12 to the aggregator 220, and may enter the Released state 1010. However, prior to the expiration of the Original Helper Join timer, the source 210 may receive a Source Helper Join Response message 11 14. If the message is not accepted, the source 210 may send a Negative Source Join Response message 11 12 to the aggregator 220, and may enter the Released state 1010. If the message is accepted, the source 210 may then set the helper active variable to true 11 16, send a Positive Source Join Response message 1 118, and enter the Joined state 1040.
As illustrated in FIG. 1 1C, at the Joined state 1040, a path from the source 210 to a corresponding aggregator 220 exists, that path including the node corresponding to this particular atomic state machine. Here, the source 210 may receive a Source Switch Request message 1120 from the aggregator 220, to request the source 210 to switch a path between the source 210 and the aggregator 220. If the helper_active variable is false, then the source 210 may update path information 1122 to indicate the new path between the source 210 and the aggregator 220, and may enter the Joined state 1040. However, if the helper_active variable is true, then the source 210 may send a Source Helper Switch Request message 1 124 to a source helper 215 to request the source helper 215 to switch a path between the source 210 and the aggregator 220, start the Source Helper Join timer 1 126, and enter the Wait for Source Helper to Switch state 1070. Further, in the Joined state 1040, the source 210 may receive a Helper Release Notification message 1128 from a helper node, indicating to release a particular path utilizing that node, between the source 210 and the aggregator 220. Here, to release the path, the source 210 may set the helper active variable to false 1130, and seek to find a replacement helper 1 132. In the Joined state 1040, the source 210 may also receive an indication for replacing a joined helper 1134, in response to which the source 210 similarly may seek to find a replacement helper 1 132. Here, if a replacement helper is not found, the source 210 may send a Source Release Notification message 1136 to the aggregator 220 to release the path between the source 210 and the aggregator 220, and enter the Released state 1010. If a replacement helper is found, the source 210 may send a Source Helper Join Request message 1 138 to the found source helper 215, seeking to set up the path between the source 210 and the aggregator 220 utilizing the found source helper 215. The source 210 may then start the Replacement Helper Join timer 1140, and enter the Wait for Source Helper to Replace state 1050. Further, in the Joined state 1040, the source 210 may receive a Source Release Command message 1 142 from the aggregator 220 indicating to release a path between the source 210 and the aggregator 220. Here, the source 210 may send a Helper Release Command message 1144 to a joined helper to release a path between the source 210 and the aggregator 220 utilizing the corresponding helper, and set the helper_active variable to false 1146, before entering the Released state 1010. Further, in the Joined state 1040, the source 210 may receive an Indication to Release message 1 148, in response to which the source 210 may send a Helper Release Command message 1150 to the corresponding helper to release a path between the source 210 and the aggregator 220 utilizing that helper node. The source 210 may then set the helper active variable to false 1 152, send a Source Release Notification message 1154 to the aggregator 220, and enter the Released state 1010.
As illustrated in FIG. 11D, at the Wait for Helper to Switch state 1070, the source 210 has sent a Source Helper Switch Request message, and is awaiting, for the duration of the Original Helper Join timer, a Source Helper Switch Response message. Here, if the Original Helper Join timer expires 1 156, the source 210 may send a Helper Release command 1 158 to the respective helper, to release the corresponding path between the source 210 and the aggregator 220 utilizing that helper node. The source 210 may then set the helper active variable to false 1160, and enter the Released state 1010. However, prior to the expiration of the Original Helper Join timer, the source 210 may receive a Source Helper Switch Response message 1166 from the source helper 215 in response to a Source Helper Switch Request message. If the source 210 does not accept the Source Helper Switch Response message, the source 210 may follow the process outlined just above to enter into the Released state 1010. If the source 210 accepts the Source Helper Switch Response message 766, then the source 210 may send a Source Switch Response message 1168 to the aggregator to respond to the Source Switch Request message, and may enter the Joined state 1040.
As illustrated in FIG. HE, at the Wait for Source Helper to Replace state 1150, the source 210 has sent a Source Helper Join Request message to a found replacement source helper 215, and is awaiting, for the duration of the Replacement Helper Join timer, a Source Helper Join Response message from the found replacement source helper 215. Here, if the Replacement Helper Join timer expires 1 170, but if the helper active variable is false (indicating that the source 210 is not joined to a helper node), the source 210 sends a Source Release Notification message 1 172 to the aggregator 220 to release the path between the source 210 and the aggregator 220, and enters the Released state 1010. However, if the Replacement Helper Join timer expires 1 170, and the helper active variable is true, then the source 210 enters the Joined state 1040, retaining the path between the source 210 and the aggregator 220 that includes the helper corresponding to this particular atomic state machine. Further, prior to the expiration of the Replacement Helper Join timer, the source 210 may receive a Source Helper Join Response message 1 174 from a corresponding source helper 215 in response to a Source Helper Join Request message. If the source 210 does not accept the Source Helper Join Response message, then the source 210 follows the process outlined above to enter into either the Released state 1010 or the Joined state 1040. If the source 210 accepts the Source Helper Join Response message from the source helper 215, and if the helper_active variable is true, the source 210 may send a Helper Release Command message 1176 to the original helper to release the corresponding path between the source 210 and the aggregator 220 utilizing that helper node. If the helper_active variable is false, the source 210 may skip the sending of the Helper Release Command message 1176. Next, the source 210 may send an Aggregator Switch Request message 1178 to the aggregator 220 to request the aggregator 220 to switch a path between the source 210 and the aggregator 220, start the Aggregator Join timer 1180, and enter the Wait for Aggregator to Switch state 1060.
As illustrated in FIG. 1 IF, at the Wait for Aggregator to Switch state 1060, the source 210 has sent an Aggregator Switch Request message, and is awaiting, for the duration of the Aggregator Join timer, an Aggregator Switch Response message. Here, if the Aggregator Join timer expires 1182, the source 210 may send a Helper Release command 1 184 to the respective helper, to release the corresponding path between the source 210 and the aggregator 220 utilizing that helper node. The source 210 may then set the helper active variable to false 1 186, and enter the Released state 1010. However, prior to the expiration of the Aggregator Join timer, the source 210 may receive an Aggregator Switch Response message 1 188 from the aggregator 220 in response to the Aggregator Switch Request message. If the source 210 does not accept the Aggregator Switch Response message, the source 210 may follow the process outlined just above to enter into the Released state 1010. If the source 210 accepts the Aggregator Switch Response message 1 188, then the source 210 enters the Joined state 1040.
• State and SDL Diagrams of a Source Helper
FIG. 12 is an illustration of a state machine 1200 corresponding to a source helper 215, illustrated in FIG. 2. A source helper 215 may include a Released state 1210 and a Joined state 1220. That is, the source helper 215 may be joined to take part in forming a path, or may be released as a cooperative node.
FIGs. 13A-13B are SDL flow charts illustrating state transitions in the state transition diagram 1200 illustrated in FIG. 12. As illustrated in FIG. 13 A, at the Released state 1210, the source helper 215 does not act as a cooperative node for a path between a source 210 and an aggregator 220. Here, the source helper 215 may receive a Source Helper Join Request message 1302 from a source 210 to request the source helper 215 set up a path between the source 210 and an aggregator 220. If the source helper 215 does not accept the Source Helper Join Request message, the source helper 215 may send a Negative Source Helper Join Response message 1304 to the source 210, and return to the Released state 1210. If the source helper 215 accepts the Source Helper Join Request message, the source helper 215 may send a Positive Source Helper Join Response message 1306 to the source 210, and enter the Joined state 1220, in which the source helper 215 acts as a cooperative node in a path between the source 210 and an aggregator 220.
As illustrated in FIG. 13B, at the Joined state 1220, the source helper 215 acts as a cooperative node in a path between a source 210 and an aggregator 220. Here, the source helper 215 may receive a Release Indication 1308, and in response, the source helper 215 may send a Helper Release Notification message 1310 to the source 210 to release the path between the source 210 and an aggregator 220 utilizing the source helper 215. Further, the source helper 215 may receive a Helper Release Command message 1312 from a source 210 to release a path between the source 210 and an aggregator 220. Here, the source helper 215 may enter the Released state 1210, wherein the source helper 215 does not act as a cooperative node for a path between a source 210 and an aggregator 220. Still further, the source helper 215 may receive a Source Helper Switch Request message 1314 from the source 210 to request the source helper 215 to switch a path between the source 210 and an aggregator 220. Here, the source helper 215 may respond by sending a Source Helper Switch Response message 1316 and enter the Joined state 1220.
• Multipath Overlay Network Packet Header
An example of a data packet header that may be utilized in multipath overlay network data packets are shown in FIG. 14. The message type field in the packet header of data packets may be set to "data," and the data payload of the data packets may start immediately after the packet header.
An example of a signaling packet header that may be utilized in multipath overlay network signaling messages is shown in FIG. 15. The payload of the corresponding signaling messages may start immediately after the packet header. The meanings of the packet header fields for a particular implementation in accordance with some aspects of the disclosure are given in Table 2.
Table 2: Packet Header Fields
Figure imgf000022_0001
In the "message type" field of the packet header, an information element for characterizing the overlay network message type may be carried. The message types utilized in an exemplary implementation in accordance with some aspects of the present disclosure are listed in Table 3.
Table 3: Message Types
Message Type Message Type Name Data or
Value Signaling
0 Data Data
1 Aggregator Helper Join Request Signaling
2 Aggregator Helper Join Response Signaling
3 Source Join Request Signaling
4 Source Join Response Signaling
5 Aggregator Switch Request Signaling
6 Aggregator Switch Response Signaling
7 Source Switch Request Signaling
8 Source Switch Response Signaling
9 Source Helper Join Request Signaling 10 Source Helper Join Response Signaling
1 1 Source Helper Switch Request Signaling
12 Source Helper Switch Response Signaling
13 Source Release Command Signaling
14 Source Release Notification Signaling
15 Helper Release Command Signaling
16 Helper Release Notification Signaling
17-256 Reserved N/A
• Multipath Overlay Network Signaling Messages
Referring now to FIG. 2 and Table 3, in accordance with some aspects of the disclosure, an Aggregator Helper Join Request message may be sent from the aggregator 220 to corresponding aggregator helper 225, in order to request the aggregator helper 225 to set up a path between the source 210 and the aggregator 220. An Aggregator Helper Join Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 4.
Table 4: Aggregator Helper Join Request Message
Field Description Length
Aggregator Overlay network address of the aggregator: used 32 bits address by the receiver of the Join Request to identify the
its sender
Aggregator helper Overlay network address of the aggregator 32 bits address helper: used by the receiver of the Join Request
to check whether this message should be
processed
Transaction ID Unique ID of this transaction 8 bits
Label ID Used for the packet sent from the aggregator 8 bits
helper to the aggregator over this data path
Transport layer Transport layer type to be used for the data 4 bits type delivered over this path, such as TCP, UDP, etc.
Payload Type Payload type of the data delivered over this path 4 bits
Reserved 8 bits An Aggregator Helper Join Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 5. Here, the Aggregator Helper Join Response message may be sent from the aggregator helper 225 to the aggregator 220, in order to respond to a corresponding Aggregator Helper Join Request message.
Table 5: Aggregator Helper Join Response Message
Figure imgf000024_0001
A Source Join Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 6. Here, the Source Join Request message may be sent from the aggregator 220 to the source 210 to request the source 210, in order to setup a path between the source 210 and the aggregator 220.
Table 6: Source Join Request Message
Field Description Length
Aggregator Overlay network address of the aggregator: used 32 bits address by the receiver of the Join Request to identify its
sender
Source address Overlay network address of the source: used by 32 bits
the receiver of the Join Request to check whether this message should be processed
Transaction ID Unique ID of this transaction 8 bits
Session ID Uniquely identifies the traffic session to be 32 bits
delivered over multiple paths between the source and the aggregator
Path index Index of the path for this traffic session between 4 bits
the source and the aggregator
Aggregator or Overlay network address of the aggregator 32 bits aggregator helper helper: may be used by either the source or the
address source helper
Label ID Used for the packet sent from the source or 8 bits
source helper to the aggregator or aggregator helper over this data path
Transport layer Transport layer type to be used for the data 4 bits type delivered over this path, such as TCP, UDP, etc.
Payload Type Payload type of the data delivered over this path 4 bits
Reserved 4 bits
A Source Join Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 7. Here, the Source Join Response message may be sent from the source 210 to the aggregator 220, in order to respond to a Source Join Request message.
Table 7: Source Join Response Message
Field Description Length
Source address Overlay network address of the source: used by 32 bits
the receiver of the Join Response to identify its sender
Aggregator Overlay network address of the aggregator: used 32 bits address by the receiver of the Join Response to check
whether this message should be processed
Transaction ID May be equal to the transaction ID in the 8 bits
corresponding Source Join Request message
Response code 0x00 = accept; otherwise, reject with various 8 bits reasons
Source or source Overlay network address of the source or the 32 bits helper address source helper
An Aggregator Switch Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 8. Here, the Aggregator Switch Request message may be sent from the source 210 to the aggregator 220, in order to request the aggregator 220 to switch a path between the source 210 and the aggregator 220.
Table 8: Aggregator Switch Request Message
Figure imgf000026_0001
An Aggregator Switch Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 9. Here, the Aggregator Switch Response message may be sent from the aggregator 220 to the source 210, in order to respond to an Aggregator Switch Request message. Table 9: Aggregator Switch Response Message
Figure imgf000027_0001
A Source Switch Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 10. Here, the Source Switch Request message may be sent from the aggregator 220 to the source 210, in order to request the source 210 to switch a path between the source 210 and the aggregator 220.
Table 10: Source Switch Request Message
Field Description Length
Aggregator Overlay network address of the aggregator: used 32 bits address by the receiver of the Switch Request to identify
its sender
Source address Overlay network address of the source: used by 32 bits
the receiver of the Switch Request to check
whether this message should be processed
Transaction ID Unique ID of this transaction 8 bits
Session ID Uniquely identifies the traffic session to be 32 bits
delivered over multiple paths between the source and the aggregator
Path index Index of the path for this traffic session between 4 bits
the source and the aggregator
Aggregator or old Overlay network address of the aggregator or the 32 bits aggregator helper old aggregator helper address
Old Label ID Old label ID used on the packet sent from the 8 bits
source or source helper to the aggregator or the aggregator helper over this data path
Aggregator or Overlay network address of the aggregator or the 32 bits new aggregator new aggregator helper
helper address
New Label ID New label ID to be used on the packet sent from 8 bits
the source or source helper to the aggregator or the aggregator helper over this data path
Reserved 4 bits
A Source Switch Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 1 1. Here, the Source Switch Response message may be sent from the source 210 to the aggregator 220, in order to respond to a Source Switch Request message.
Table 11: Source Switch Response Message
Figure imgf000028_0001
A Source Helper Join Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 12. Here, the Source Helper Join Request message may be sent from the source 210 to the source helper 215, in order to request the source helper 215 to set up a path between the source 210 and the aggregator 220.
Table 12: Source Helper Join Request Message
Figure imgf000029_0001
A Source Helper Join Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 13. Here, the Source Helper Join Response message may be sent from the source helper 215 to the source 210, in order to respond to a Source Helper Join Request message. Table 13: Source Helper Join Response Message
Figure imgf000030_0001
A Source Helper Switch Request message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 14. Here, the Source Helper Switch Request message may be sent from the source 210 to the source helper 215, in order to request a source helper 215 to switch a path between the source and the aggregator.
Table 14: Source Helper Switch Request Message
Field Description Length
Source helper Overlay network address of the source helper: 32 bits address used by the receiver of the Switch Request to
identify its sender
Source address Overlay network address of the source: used by 32 bits
the receiver of the Switch Request to check
whether this message should be processed
Transaction ID Equal to the transaction ID in the corresponding 8 bits
Source Helper Switch Request message
Response code 0x00 = accept; otherwise, reject with various 8 bits
reasons A Source Helper Switch Response message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 15. Here, the Source Helper Switch Response message may be sent from the source helper 215 to the source 210, in order to respond to the Source Helper Switch Request message.
Table 15: Source Helper Switch Response Message
Figure imgf000031_0001
A Source Release Command message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 16. Here, the Source Release Command message may be sent from the aggregator 220 to the source 210, in order to release a path between the source 210 and the aggregator 220.
Table 16: Source Release Command Message
Field Description Length
Aggregator Overlay network address of the aggregator: used 32 bits address by the receiver of the Release Command to
identify its sender
Source address Overlay network address of the source: used by 32 bits
the receiver of the Release Command to check whether this message should be processed
Session ID Uniquely identify the traffic session to be 32 bits
delivered over multiple paths between the source
and the aggregator
Path index Index of the path for this traffic session between 4 bits the source and the aggregator
Aggregator or Overlay network address of the aggregator or the 32 bits aggregator helper aggregator helper
address
Label ID Label ID used for the packet sent from the source 8 bits
or source helper to the aggregator or the
aggregator helper over this data path
Reserved 4 bits
A Source Release Notification message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 17. Here, the Source Release Notification message may be sent from the source 210 to the aggregator 220, in order to release a path between the source 210 and the aggregator 220.
Table 17: Source Release Notification Message
Figure imgf000032_0001
A Helper Release Command message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 18. Here, the Helper Release Command message may be sent from the aggregator 220 or the source 210 to its respective helper 225 or 215, in order to release a path between the aggregator 220 and the source 210.
Table 18: Helper Release Command Message
Figure imgf000033_0001
A Helper Release Notification message for a particular implementation in accordance with some aspects of the disclosure is listed in Table 19. Here, the Helper Release Notification message may be sent from a respective helper 225, 215 to its aggregator 220 or source 210, in order to release a path between the source 210 and the aggregator 220.
Table 19: Helper Release Notification Message
Field Description Length
Aggregator helper Overlay network address of the aggregator helper 32 bits or source helper or source helper: used by the receiver of the
address Release Notification to identify its sender
Aggregator or Overlay network address of the aggregator or 32 bits source address source: used by the receiver of the Release
Notification to check whether this message
should be processed
Label ID Label ID used for the packet sent from the source 8 bits
or source helper to the aggregator or the aggregator helper over this data path.
Reserved 8 bits
Nodes, such as aggregators, sources, their respective helpers, processors contained therein, computer program products, etc., may "support" data transport and communication, as disclosed in the specification, by providing or originating data, as provided, for example, by a source (in one or more substreams containing distinct descriptions of the data), relaying a description of the data in a substream, as provided, for example by a source helper and aggregator helper, and by receiving and aggregating one or more descriptions of the data in respective substreams, as provided, for example, by an aggregator.
In the methods provided supra, the protocol execution relies on distinguishing between aggregator helpers and source helpers, as messages between a node and the node's helper differ depending on whether the node's helper is an aggregator helper or a source helper. In exemplary methods, provided infra with respect to FIGs. 16-28, the protocol execution does not rely on distinguishing between aggregator helpers and source helpers. In the exemplary methods, the message types may be as provided in Table 20. Table 20: Messages Types
Message Type Message Type Name Data or Signaling Value
0 Data Data
1 Helper Join Request for Incoming Path MMP Signaling
2 Helper Join Response for Incoming Path MMP Signaling
3 Setup Request MMP Signaling
4 Setup Response MMP Signaling
5 Helper Join Request for Outgoing Path MMP Signaling
6 Helper Join Response for Outgoing Path MMP Signaling
7 Switch Request for Local Helper MMP Signaling
8 Switch Response for Local Helper MMP Signaling
9 Helper Change Notification MMP Signaling
10 Helper Change Response MMP Signaling
1 1 Switch Request for Remote Helper MMP Signaling
12 Switch Response for Remote Helper MMP Signaling 13 Helper Release Notification MMP Signaling
14 Release Notification MMP Signaling
15 Helper Release Command MMP Signaling
16 Outgoing Path Setup Indication MMP Signaling
17-255 Reserved N/A
FIG. 16 is a first diagram 1600 illustrating exemplary methods in which a protocol execution does not rely on distinguishing between aggregator helpers and source helpers. In FIG. 16, label IDs in parenthesis are within the payload of the message and label IDs in the angled brackets are within a header of the packet. As shown in FIG. 16, in step 1612, the node 2 1610 may send the node 1 1604 an outgoing path setup indication. The node 2 1610 sends the node 1 1604 an outgoing path setup indication because the node 2 1610, which has data to send/transmit to the node 1 1604, is initiating the communication link with the node 1 1604. Step 1612 is not performed if node 1 1604 initiates the communication link with the node 2 1610. As shown in Table 21, the outgoing path setup indication may include one or more of a sender address, a receiver address, and quality of service (QoS) information.
Table 21: Outgoing Path Setup Indication
Field Description Length
Sender address The overlay network address of the source of 32 bits
the path.
This field should be used by the receiver to check whether this message should be
processed.
Receiver address The overlay network address of the destination 32 bits
of the path.
This field should be used by the receiver to identify the identity of the sender.
QoS IE QoS that could be supported in the outgoing
stream. This is to help the node at the receiving
end consider the use of helper in fulfilling the bandwidth requirements.
Padding The QoS information may be based on the amount of data the node 2 1610 will send, the rate at which the node 2 1610 will send the data packets, and/or other quality related information. The node 1 1604 receives the outgoing path setup indication. Based on the outgoing path setup indication, the node 1 1604 may determine whether to enlist/request a helper node to help receive the packets from the node 2 1610. For example, if the rate at which the node 2 1610 will send the packets is greater than the rate at which the node 1 1604 can receive the packets, the node 1 1604 may determine to request a helper node to receive some of the packets and relay the received packets to the node 1 1604. In step 1614, the node 1 1604 sends a helper join request for incoming path to the node l 's helper 1606. As shown in Table 22, the helper join request for incoming path may include one or more of a sender address, a receiver address, a transaction ID, a label ID, a transport layer type, a payload type, and QoS information.
Table 22: Helper Join Request for Incoming Path
Field Description Length
Sender address The overlay network address of the primary 32 bits
node.
This field should be used by the receiver to identify the identity of the sender.
Receiver address The overlay network address of the helper 32 bits
node.
This field should be used by the receiver to check whether this message should be
processed.
Transaction ID Unique ID of this request. 8 bits
Label ID This Label ID should be used for the packet 8 bits
sent from the helper node to the primary node over this data path.
Transport layer This indicates the transport layer type to be 4 bits type used for the data delivered over this path, such
as TCP, UDP, etc.
Payload Type This indicates the payload type of the data 4 bits
delivered over this path. QoS IE Expected QoS treatment for the packets on this
path of this session.
Padding
In step 1614, the helper join request for incoming path includes the label ID "Label 1." The label ID "Label 1" identifies the label ID that the node l 's helper 1606 may use to send incoming packets to the node 1 1604. In step 1616, the node l 's helper 1606 responds with a helper join response for incoming path. As shown in Table 23, the helper join response for incoming path may include one or more of a sender address, a receiver address, a transaction ID, a response code, a label ID, and QoS information. Table 23: Helper Join Response for Incoming Path
Field Description Length
Sender address The overlay network address of the helper 32 bits
node.
This field should be used by the receiver to identify the identity of the sender.
Receiver address The overlay network address of the primary 32 bits
node.
This field should be used by the receiver to check whether this message should be
processed.
Transaction ID Identical to that in the original request 8 bits
Response code 0x00 = Accept. Otherwise, reject for various 8 bits
reasons.
Label ID This Label ID should be used for the packet 8 bits
sent from the remote helper node or the remote
primary node to the local helper over this data path.
QoS IE Expected QoS treatment for the packets on this
path of this session.
Padding In step 1616, the helper join response for incoming path includes the label ID "Label 2." The label ID "Label 2" identifies the label ID that may be used for sending incoming packets to the node l 's helper 1606. The node l 's helper 1606 links "Label 2" to "Label 1" such that packets received and directed to "Label 2" are routed to "Label 1." The node l 's helper 1606 may help other nodes and therefore may have other label IDs for which the node l 's helper 1606 receives incoming packets. In step 1618, the node 1 1604 sends a setup request to the node 2 1610. As shown in Table 24, the setup request may include one or more of a sender address, a receiver address, a transaction ID, a helper address, a label ID, a transport layer type, a payload type, and QoS information. Table 24: Setup Request
Field Description Length
Sender address The overlay network address of the destination 32 bits
of the path.
This field should be used by the receiver to identify the identity of the sender.
Receiver address The overlay network address of the source of 32 bits
the path.
This field should be used by the receiver to check whether this message should be
processed.
Transaction ID Unique ID of this request. 8 bits
Helper address The overlay network address of the local 32 bits
helper. If there is no helper, this should be the overlay network address of the primary node.
Label ID This Label ID should be used for the packet 8 bits
sent from the remote helper or remote primary node to the local helper or local primary node over this data path.
Transport layer This indicates the transport layer type to be 4 bits type used for the data delivered over this path, such
as TCP, UDP, etc.
Payload Type This indicates the payload type of the data 4 bits
delivered over this path. QoS IE Expected QoS treatment for the packets on this
path of this session.
Padding
In step 1618, the setup request includes the label ID "Label 2." The label ID "Label 2" identifies the label ID that node 2 1610 may use for sending packets that ultimately ends up at the node 1 1604. The node 2 1610 may or may not know that "Label 2" is associated with a helper node rather than the node 1 1604. When sending packets to the node 1 1604, the node 2 1610 may route all or a portion of the packets to the node l 's helper 1606 via the "Label 2" and a remaining portion to the packets directly to the node 1 1604. When sending packets to the node l 's helper 1606, the node 2 1610 will conform to the QoS information provided in the setup request. The node 2 1610 may also enlist/request a helper node, such as the node 2's helper 1608. In step 1620, the node 2 1610 sends a helper join request for outgoing path to the node 2's helper 1608. As shown in Table 25, the helper join request for outgoing path may include one or more of a sender address, a receiver address, a transaction ID, a remote helper address, a label ID, a transport layer type, a payload type, and QoS information.
Table 25: Helper Join Request for Outgoing Path
Field Description Length
Sender address The overlay network address of the primary 32 bits
node.
This field should be used by the receiver to identify the identity of the sender.
Receiver address The overlay network address of the helper 32 bits
node.
This field should be used by the receiver to check whether this message should be
processed.
Transaction ID Unique ID of this request. 8 bits
Remote Helper The overlay network address of the remote 32 bits
Address helper. If there is no helper, this should be the
overlay network address of the remote primary node. Label ID This Label ID should be used for the packet 8 bits sent from the local helper to the remote helper
or the remote primary node over this data path.
Transport layer This indicates the transport layer type to be 4 bits type used for the data delivered over this path, such
as TCP, UDP, etc.
Payload Type This indicates the payload type of the data 4 bits
delivered over this path.
QoS IE Expected QoS treatment for the packets on this
path of this session.
Padding
The node 2's helper 1608 receives the helper join request for outgoing path from the node 2 1610. The node 2's helper 1608 receives the label ID "Label 2" in the helper join request for outgoing path and generates a corresponding label ID "Label 3." The node 2's helper 1608 links the two label IDs such that packets received at "Label 3" are routed to "Label 2." In step 1622, the node 2's helper 1608 sends a helper join response for outgoing path to the node 2 1610. The helper join response for outgoing path includes the label ID "Label 3" so that the node 2 1610 will know how to route packets to the node 2's helper 1608 that the node 2 1610 would ultimately like routed to the node 1 1604. As shown in Table 26, the helper join response for outgoing path may include one or more of a sender address, a receiver address, a transaction ID, a response code, a label ID, and QoS information.
Table 26: Helper Join Response for Outgoing Path
Field Description Length
Sender address The overlay network address of the helper 32 bits
node.
This field should be used by the receiver to identify the identity of the sender.
Receiver address The overlay network address of the primary 32 bits
node.
This field should be used by the receiver to check whether this message should be processed.
Transaction ID Identical to that in the original request 8 bits
Response code 0x00 = Accept. Otherwise, reject for various 8 bits
reasons.
Label ID This Label ID should be used for the packet 8 bits
sent from the local helper owner to the local helper over this data path.
QoS IE Expected QoS treatment for the packets on this
path of this session.
Padding
In step 1624, the node 2 1610 sends a setup response to the node 1 1604. The setup response is a response to the setup request received in step 1618. As shown in Table 27, the setup response may include one or more of a sender address, a receiver address, a transaction ID, a response code, and QoS information.
Table 27: Setup Response
Field Description Length
Sender address The overlay network address of the source of 32 bits
the path.
This field should be used by the receiver to check whether this message should be
processed.
Receiver address The overlay network address of the destination 32 bits
of the path.
This field should be used by the receiver to identify the identity of the sender.
Transaction ID Identical to that in the original request 8 bits
Response code 0x00 = Accept. Otherwise, reject for various 8 bits
reasons.
QoS IE Expected QoS treatment for the packets on this
path of this session.
Padding In step 1626, the node 2 1610 sends a packet including a header and data to the node 2's helper 1608. The header includes the label ID "Label 3." The node 2's helper 1608 receives the packet, determines that the packet includes "Label 3" and is therefore associated with "Label 2," inserts the "Label 2" into the header, and in step 1628, forwards the packet to node l 's helper 1606. The node l 's helper 1606 receives the packet, determines that the packet includes "Label 2" and is therefore associated with "Label 1," inserts the "Label 1" into the header, and in step 1630, forwards the packet to node 1 1604.
The node 1 1604 may also setup an outgoing path to the node 2 1610. In step 1632, the node 1 1604 sends an outgoing path setup indication to the node 2 1610. The node 2 1610 receives the outgoing path setup indication. The node 2 1610 may determine whether to enlist/request a helper node to receive the packets from the node 1 1604 based on QoS information in the outgoing path setup indication. As shown in FIG. 16, the node 2 1610 determines to utilize a helper node in receiving packets from the node 1 1604. In step 1634, the node 2 1610 sends a helper join request for incoming path including the label ID "Label 4." The node 2's helper 1608 receives the helper join request for incoming path with the label ID "Label 4," generates an associated label ID "Label 5," and in step 1636, sends a helper join response for incoming path including the label ID "Label 5." In step 1638, the node 2 1610 sends a setup request including the label ID "Label 5" to the node 1 1604. In step 1640, the node 1 1604 provides the label ID "Label 5" to the node l 's helper 1606 in a helper join request for outgoing path. The node l 's helper 1606 receives the helper join request for outgoing path with the label ID "Label 5," generates an associated label ID "Label 6," and in step 1642, sends a helper join response for outgoing path including the label ID "Label 6." In step 1644, the node 1 1604 sends a setup response to the node 2 1610.
With two-way communication enabled, the node 1 1604 and the node 2 1610 may both send communication to and receive communication from each other. In step 1646, the node 2 1610 sends a packet including a header and data to the node 2's helper 1608. The header includes the label ID "Label 3." The node 2's helper 1608 receives the packet, determines that the packet includes "Label 3" and is therefore associated with "Label 2," inserts the "Label 2" into the header, and in step 1648, forwards the packet to node l 's helper 1606. The node l 's helper 1606 receives the packet, determines that the packet includes "Label 2" and is therefore associated with "Label 1," inserts the "Label 1" into the header, and in step 1650, forwards the packet to node 1 1604. In step 1652, the node 1 1604 sends a packet including a header and data to the node l 's helper 1606. The header includes the label ID "Label 6." The node l 's helper 1606 receives the packet, determines that the packet includes "Label 6" and is therefore associated with "Label 5," inserts the "Label 5" into the header, and in step 1654, forwards the packet to node 2's helper 1608. The node 2's helper 1608 receives the packet, determines that the packet includes "Label 5" and is therefore associated with "Label 4," inserts the "Label 4" into the header, and in step 1656, forwards the packet to node 2 1610.
FIG. 17 is a second diagram 1700 illustrating exemplary methods. In FIG. 17, label IDs in parenthesis are within the payload of the message and label IDs in the angled brackets are within a header of the packet. The diagram 1700 illustrates how helper nodes may be switched after helper nodes are setup. With two-way communication enabled, the node 1 1704 and the node 2 1714 may both send communication to and receive communication from each other. In step 1716, the node 2 1714 sends a packet including a header and data to the node 2's helper 1712. The header includes the label ID "Label 3." The node 2's helper 1712 receives the packet, determines that the packet includes "Label 3" and is therefore associated with "Label 2," inserts the "Label 2" into the header, and in step 1718, forwards the packet to node l 's old helper 1706. The node l 's old helper 1706 receives the packet, determines that the packet includes "Label 2" and is therefore associated with "Label 1," inserts the "Label 1" into the header, and in step 1720, forwards the packet to node 1 1704. In step 1722, the node 1 1704 sends a packet including a header and data to the node l 's old helper 1706. The header includes the label ID "Label 6." The node l 's old helper 1706 receives the packet, determines that the packet includes "Label 6" and is therefore associated with "Label 5," inserts the "Label 5" into the header, and in step 1724, forwards the packet to node 2's helper 1712. The node 2's helper 1712 receives the packet, determines that the packet includes "Label 5" and is therefore associated with "Label 4," inserts the "Label 4" into the header, and in step 1726, forwards the packet to node 2 1714.
In a first configuration, in step 1728, the node l 's old helper 1706 sends a helper release notification to the node 1 1704 in order to notify the node 1 1704 that the node l 's old helper 1706 is going to stop helping the node 1 1704. As shown in Table 28, the helper release notification may include one or more of a sender address and a receiver address. Table 28: Helper Release Notification
Field Description Length Sender address The overlay network address of the helper 32 bits node.
This field should be used by the receiver to check whether this message should be
processed.
Receiver address The overlay network address of the primary 32 bits
node.
This field should be used by the receiver to identify the identity of the sender.
Padding
In a second configuration, step 1728 does not occur, and in step 1729, the node 1 1704 sends a helper release command to node l 's old helper 1706. Both the first configuration in step 1728 and the second configuration in step 1729 are break-before- make procedures in which the existing helper relationship is broken before a new helper relationship is established. In a third configuration, steps 1728, 1729 are not performed, and step 1742 is performed in a make-before-break procedure in which the new helper relationship is established before the existing helper relationship is broken. As shown in Table 29, the helper release command may include one or more of a sender address and a receiver address.
Table 29: Helper Release Command
Field Description Length
Sender address The overlay network address of the primary 32 bits
node.
This field should be used by the receiver to check whether this message should be
processed.
Receiver address The overlay network address of the helper 32 bits
node.
This field should be used by the receiver to identify the identity of the sender.
Padding When the node 1 1704 determines to break the helper relationship (in the second and third configurations), the node 1 1704 may determine to break the helper relationship based on expiration of a timer. When the node I 's old helper 1706 determines to break the helper relationship (in the first configuration), the node I 's old helper 1706 may determine to break the helper relationship based on expiration of a timer. The node 1 's old helper 1706 and/or and the node 1 1704 may determine to break the helper relationship based on other factors, such as an inability to maintain a link between the node 1 1704 and the node I 's old helper 1706, a decreased performance (e.g., poor path quality) of the link between the node 1 1704 and the node I 's old helper 1706, a lack of response (e.g., multiple time outs) by either of the node 1 1704 or the node I 's old helper 1706, or other factors associated or unassociated with the link itself.
In step 1730, the node 1 1704 sends a switch request for local helper to the node I 's new helper 1708. The switch request for local helper may include a label ID "Label 1" to which the node I 's new helper 1708 may send incoming packets and a label ID "Label 5" to which the node's 1 new helper 1708 may send outgoing packets. As shown in Table 30, the switch request for local helper may include one or more of a sender address, a receiver address, a transaction ID, a first label ID, a remote helper address, a second label ID, and QoS information.
Table 30: Switch Request for Local Helper
Field Description Length
Sender address The overlay network address of the primary 32 bits
node.
This field should be used by the receiver to identify the identity of the sender.
Receiver address The overlay network address of the helper 32 bits
node.
This field should be used by the receiver to check whether this message should be
processed.
Transaction ID Unique ID of this request. 8 bits
Label ID 1 This Label ID should be used for the packet 8 bits
sent from the local helper to the primary node over this data path. If there is no incoming path, use OxFF.
Remote Helper The overlay network address of the remote 32 bits
Address helper or remote primary node for the outgoing
path. If there is no outgoing path, use
OxFFFFFFFF.
Label ID 2 This Label ID should be used for the packet 8 bits
sent from the local helper to the remote helper or the remote primary node over this data path.
If there is no outgoing path, use OxFF.
QoS IE Expected QoS treatment for the packets on this
path of this session.
Padding
In step 1732, in response to the switch request for local helper, the node l 's new helper 1708 sends a switch response for local helper to the node 1 1704. The node l 's new helper 1708 generates a label ID "Label 7" associated with "Label 1" for incoming packets and a label ID "Label 8" associated with "Label 5" for outgoing packets. The switch response for local helper includes the label ID "Label 7" and the label ID "Label 8." As shown in Table 31, the switch response for local helper may include one or more of a sender address, a receiver address, a transaction ID, a response code, a first label ID, and a second label ID.
Table 31: Switch Response for Local Helper
Field Description Length
Sender address The overlay network address of the helper 32 bits
node.
This field should be used by the receiver to identify the identity of the sender.
Receiver address The overlay network address of the primary 32 bits
node.
This field should be used by the receiver to check whether this message should be
processed.
Transaction ID Identical to that in the original request 8 bits Response code 0x00 = Accept. Otherwise, reject for various 8 bits reasons.
Label ID 1 This Label ID should be used for the packet 8 bits
sent from the primary node to the local helper over this data path. If there is no outgoing path,
use OxFF.
Label ID 2 This Label ID should be used for the packet 8 bits
sent from the remote helper or remote primary node to local helper over this data path. If there
is no incoming path, use OxFF.
Padding
In step 1734, the node 1 1704 sends a helper change notification to the node 2 1714. The helper change notification includes the label ID "Label 7" to which the node 2 1714 should now send packets. As shown in Table 32, the help change notification may include one or more of a sender address, a receiver address, a transaction ID, a helper address, a label ID, and QoS information.
Table 32: Helper Change Notification
Field Description Length
Sender address The overlay network address of the node that 32 bits
has a helper change.
This field should be used by the receiver to identify the identity of the sender.
Receiver address The overlay network address of the receiver. 32 bits
This field should be used by the receiver to check whether this message should be
processed.
Transaction ID Unique ID of this request. 8 bits
Helper Address The overlay network address of the new helper 32 bits
node.
Label ID This Label ID should be used for the packet 8 bits
sent from the remote helper or remote primary node to local helper or the local primary node over this data path.
QoS IE QoS supported by new helper when different
from the helper that was released. This is to notify the node at the receiving end of change
in overlay link quality at the sender.
Padding
In step 1736, the node 2 1714 sends a switch request for remote helper to the node 2's helper 1712. The switch request for remote helper includes the label ID "Label 7" to which the node 2's helper should now send outgoing data. As shown in Table 33, the switch request for remote helper may include one or more of a sender address, a receiver address, a transaction ID, a remote helper address, and a label ID.
Table 33: Switch Request for Remote Helper
Figure imgf000048_0001
In step 1738, the node 2's helper 1712 responds by sending a switch response for remote helper to the node 2 1714. As shown in Table 34, the switch response for remote helper may include one or more of a sender address, a receiver address, a transaction ID, and a response code.
Table 34: Switch Response for Remote Helper
Field Description Length
Sender address The overlay network address of the helper 32 bits
node.
This field should be used by the receiver to identify the identity of the sender.
Receiver address The overlay network address of the primary 32 bits
nope.
This field should be used by the receiver to check whether this message should be
processed.
Transaction ID Identical to that in the original request 8 bits
Response code 0x00 = Accept. Otherwise, reject for various 8 bits
reasons.
Padding
In step 1740, the node 2 1714 responds to the helper change notification by sending a helper change response to the node 1 1704. As shown in Table 35, the helper change response may include one or more of a sender address, a receiver address, a transaction ID, and a response code.
Table 35: Helper Change Response
Field Description Length
Sender address The overlay network address of the receiver 32 bits
node.
This field should be used by the receiver to check whether this message should be
processed.
Receiver address The overlay network address of the node that 32 bits
has a helper change.
This field should be used by the receiver to identify the identity of the sender. Transaction ID Identical to that in the original request 8 bits
Response code 0x00 = Accept. Otherwise, reject for various 8 bits
reasons.
Padding
In step 1744, the node 2 1714 sends a packet including a header and data to the node 2's helper 1712. The header includes the label ID "Label 3." The node 2's helper 1712 receives the packet, determines that the packet includes "Label 3" and is therefore associated with "Label 7," inserts the "Label 7" into the header, and in step 1746, forwards the packet to node l 's new helper 1708. The node l 's new helper 1708 receives the packet, determines that the packet includes "Label 7" and is therefore associated with "Label 1," inserts the "Label 1" into the header, and in step 1748, forwards the packet to node 1 1704. In step 1750, the node 1 1704 sends a packet including a header and data to the node l 's new helper 1708. The header includes the label ID "Label 8." The node l 's new helper 1708 receives the packet, determines that the packet includes "Label 8" and is therefore associated with "Label 5," inserts the "Label 5" into the header, and in step 1752, forwards the packet to node 2's helper 1712. The node 2's helper 1712 receives the packet, determines that the packet includes "Label 5" and is therefore associated with "Label 4," inserts the "Label 4" into the header, and in step 1754, forwards the packet to node 2 1714.
FIG. 18 is a third diagram 1800 illustrating exemplary methods. The diagram 1800 illustrates the release commands and notifications. As shown in FIG. 18, in step 1812, the node 1 1804 sends a helper release command to the node l 's helper 1806 to release the node l 's helper 1806 from the helper relationship with the node 1 1804. In step 1814, the node 1 1804 sends a release notification 1814 to the node 2 1810. The release notification informs the node 2 1810 to cease the communication with the node 1 1804. In step 1816, the node 2 1810 sends a helper release command to the node 2's helper 1808 to release the node 2's helper 1808 from the helper relationship with the node 2 1810. As shown in table 36, the release notification may include one or more of a sender address and a receiver address.
Table 36: Release Notification
Field Description Length
Sender address The overlay network address of the sender. 32 bits This field should be used by the receiver to identify the identity of the sender.
Receiver address The overlay network address of the receiver. 32 bits
This field should be used by the receiver to check whether this message should be
processed.
Padding
FIG. 19 is a flow chart of a first method of communication. The method of communication may be wireless. The method may be performed by a communications device, such as a user equipment (UE). The communications device is referred to as a first node. In step 1904, the first node may receive a path setup indication from a third node. For example, referring to FIG. 16, step 1612, the node 1 1604 may receive an outgoing path setup indication from the node 2 1610. In step 1906, the first node may determine whether to send a join request to a second node based on the path setup indication. As discussed supra in relation to FIG. 16, the path setup indication may include QoS information and the node 1 1604 may determine to send a helper join request for incoming path (step 1614) to the node l 's helper 1606 based on the QoS information. In step 1908, the first node sends a join request to the second node to route communication associated with the third node to the first node. The join request includes a first node identifier associated with the first node. For example, referring to FIG. 16, step 1614, the first node 1 1604 sends a helper join request for incoming path to the node l 's helper 1606. The helper join request for incoming path includes the label ID "Label 1" associated with the node 1 1604. In step 1910, the first node receives from the second node a join response including a second node identifier associated with the second node. For example, referring to FIG. 16, step 1616, the node 1 1604 receives a helper join response for incoming path from the node l 's helper 1606 that includes the label ID "Label 2" associated with node l 's helper 1606. In step 1912, the first node sends a setup request to the third node. The setup request includes the second node identifier. For example, referring to FIG. 16, step 1618, the node 1 1604 sends a setup request to the node 2 1610. The setup request includes the label ID "Label 2." In step 1914, the first node receives a communication with the first node identifier from the second node. The communication originates from the third node. For example, referring to FIG. 16, step 1630, the node 1 1604 receives a packet with the label ID "Label 1" from the node l 's helper 1606. The packet originated from the node 2 1610. FIG. 20 is a flow chart of a second method of communication. The method of communication may be wireless. The method may be performed by a communications device, such as a UE. The communications device is referred to as a first node. In step 2006, the first node sends a switch request to a fourth node to route communication associated with the third node to the first node. The switch request includes the first node identifier. For example, referring to FIG. 17, step 1730, the node 1 1704 sends a switch request for local helper to the node l 's new helper 1708 to route communication associated with node 2 1714 to the node 1 1704. The switch request for local helper includes the label ID "Label 1." In step 2008, the first node receives a switch response from the fourth node. The switch response includes a fourth node identifier associated with the fourth node. For example, referring to FIG. 17, step 1732, the node 1 1704 receives a switch response for local helper from the node l 's new helper 1708. The switch response for local helper includes the label ID "Label 7" associated with the node l 's new helper 1708. In step 2010, the first node sends a change notification to the third node. The change notification includes the fourth node identifier. For example, referring to FIG. 17, step 1734, the node 1 1704 sends a helper change notification to the node 2 1714. The helper change notification includes the label ID "Label 7." In step 2012, the first node receives a communication with the first node identifier from the fourth node. The communication originates from the third node. For example, referring to FIG. 17, step 1748, the node 1 1704 receives a packet with the label ID "Label 1" from the node l 's new helper 1708. The packet originated from the node 2 1714.
In a first configuration, in step 2002, the first node may receive a release notification from the second node and send the switch request in response to the release notification. For example, referring to FIG. 17, in step 1728, the node 1 1704 may receive the helper release notification from the node l 's old helper 1706 and, in step 1730, send the switch request for local helper in response to the helper release notification. In a second configuration, in step 2004, the first node may set a timer associated with the second node and send the switch request upon expiration of the timer. Referring to FIG. 17, when the node 1 1704 utilizes a timer to trigger sending the switch request for local helper, the node 1 1704 may perform a break-before-make procedure by sending the helper release command in step 1729 or a make-before-break procedure by sending the helper release command in step 1742. In the second configuration or in a third configuration, in step 2014, the first node receives a change response from the third node, and in step 2016, the first node sends a release notification to the second node after receiving the change response. For example, referring to FIG. 17, in step 1740, the node 1 1704 receives a helper change response from the node 2 1714, and in step 1742, the node 1 1704 sends a helper release command to the node l 's old helper 1706.
FIG. 21 is a flow chart of a third method of communication. The method of communication may be wireless. The method may be performed by a communications device, such as a UE. The communications device is referred to as a first node. In step 2104, the first node may send a release command to the second node before sending a change notification to the third node. For example, referring to FIG. 17, step 1729, the node 1 1704 may send a helper release command to the node l 's old helper 1706. In step 2106, the first node may send a change notification to the third node that includes the first node identifier. For example, referring to FIG. 17, step 1734, the node 1 1704 may send a helper change notification to the node 2 1714. However, instead of sending the label ID "Label 7" in the helper change notification, the node 1 1704 may send label ID "Label 1" in the helper change notification so that packets are sent directly to the node 1 1704. In step 2108, the first node may receive a communication with the first node identifier from one of the third node or a fourth node. The communication originates from the third node. For example, referring to FIG. 17, the node 1 1704 may receive a packet with the label ID "Label 1" from the node 2 1714 (step 1744, but directly to the node 1 1704) or from the node 2's helper 1712 (step 1746, but directly to the node 1 1704). In step 2110, the first node may receive a change response from the third node. In step 21 12, the first node may send a release command to the second node after receiving the change response from the third node. For example, referring to FIG. 17, steps 1740 and 1742, the node 1 1704 may receive a helper change response from the node 2 1714 and send a helper release command to the node l 's old helper 1706. In step 21 14, the first node may send a release notification to the third node. The communication with the first node identifier from the second node that originates from the third node may stop after the release notification is sent. For example, referring to FIG. 18, step 1814, the node 1 1804 may send a release notification to the node 2 1810 and the communication from the node l 's helper 1806 that originates from the node 2 1810 may stop after sending the release notification.
FIG. 22 is a flow chart of a fourth method of communication. The method of communication may be wireless. The method may be performed by a communications device, such as a UE. The communications device is referred to as a first node. In step 2204, the first node may send a path setup indication to a second node. For example, referring to FIG. 16, step 1612, node 2 1610 may send an outgoing path setup indication to the node 1 1604. In step 2206, the first node receives a setup request from the second node. The setup request includes an identifier associated with one of the second node or a third node. For example, referring to FIG. 16, step 1618, the node 2 1610 receives a setup request from the node 1 1604. The setup request may include the label ID "Label 1" associated with the node 1 1604 or the label ID "Label 2" associated with the node l 's helper 1606. If the setup request includes the label ID "Label 1," communication from the node 2 1610 is routed directly from the node 2 1610 or the node 2's helper 1608 to the node 1 1604 (i.e., the node 1 1604 has no helper). If the setup request includes the label ID "Label 2," communication from the node 2 1610 is routed through the node l 's helper 1606 to the node 1 1604. In step 2208, the first node sends a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node. The join request includes the identifier associated with one of the second node or the third node. For example, referring to FIG. 16, step 1620, the node 2 1610 sends a helper join request for outgoing path to the node 2's helper 1608 to route communication for the node 1 1604 from the node 2 1610 to the node 1 1604 or the node l 's helper 1606. If the helper join request for outgoing path includes the label ID "Label 2," the node 2's helper 1608 routes packets to the node l 's helper 1606. If the helper join request for outgoing path includes the label ID "Label 1," the node 2's helper 1608 routes packets directly to the node 1 1604. In step 2210, the first node receives from the fourth node a join response including a fourth node identifier associated with the fourth node. For example, referring to FIG. 16, step 1622, the node 2 1610 receives a helper join response for outgoing path that includes the label ID "Label 3" associated with the node 2's helper 1608. In step 2212, the first node sends a communication for the second node to the fourth node. The communication is sent with the fourth node identifier. For example, referring to FIG. 16, step 1626, the node 2 1610 sends a packet for the node 1 1604 to the node 2's helper 1608. The packet is sent with the label ID "Label 3."
In step 2214, the first node may receive a change notification from the second node. The change notification includes an identifier associated with one of the second node or a fifth node. For example, referring to FIG. 17, in step 1734, the node 2 1714 receives a helper change notification from the node 1 1704. The helper change notification may include the label ID "Label 1" associated with the node 1 1704 or the label ID "Label 7" associated with the node l 's new helper 1708. In step 2216, the first node may send a switch request to the fourth node to route communication for the second node from the first node to one of the second node or the fifth node. The switch request includes the identifier associated with one of the second node or the fifth node. For example, referring to FIG. 17, in step 1736, the node 2 1714 sends a switch request for remote helper to the node 2's helper 1712 to route communication for the node 1 1704 from the node 2 1714. The switch request for remote helper includes the label ID received in the helper change notification. If the label ID is "Label 7," as shown in step 1736, the node 2's helper 1712 routes packets from the node 2 1714 to the node l 's new helper 1708. If the label ID is "Label 1," the node 2's helper 1712 routes packets from the node 2 1714 to the node 1 1704. In step 2218, the first node sends a second communication for the second node to the fourth node. The communication is sent with the fourth node identifier. For example, referring to FIG. 17, in step 1744, the node 2 1714 sends a packet for the node 1 1704 to the node 2's helper 1712. The packet is sent with the label ID "Label 3" associated with the node 2's helper 1712.
FIG. 23 is a flow chart of a fifth method of communication. The method of communication may be wireless. The method may be performed by a communications device, such as a UE. The communications device is referred to as a first node. In step 2306, the first node receives a setup request from a second node. The setup request includes an identifier associated with one of the second node or a third node. In step 2308, the first node sends a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node. The join request includes the identifier associated with one of the second node or the third node. In step 2310, the first node receives from the fourth node a join response including a fourth node identifier associated with the fourth node. In step 2312, the first node sends a communication for the second node to the fourth node. The communication is sent with the fourth node identifier. For example, referring to FIG. 16, the steps 2306, 2308, 2310, and 2312 correspond to steps 1618, 1620, 1622, and 1626, respectively.
In step 2314, the first node may send a release command to the fourth node, and in step 2316, send a communication with an identifier associated with one of the second node or the third node to one of the second node or the third node. For example, referring to FIG. 16, the node 2 1610 may release the node 2's helper 1608 from the helper relationship and then send a packet directly to the node 1 1604 if the node 1 1604 has no helper (the node 2 1610 already has a communication link with the node 1 1604) or to the node l 's helper 1606 (with the label ID "Label 2"). In step 2318, the first node may receive a release notification from the second node, and stop sending the communication for the second node to the fourth node upon receiving the release notification. For example, referring to FIG. 18, step 1814, the node 2 1810 may receive a release notification from the node 1 1804, and upon receiving the release notification, stop sending packets for the node 1 1804 to the node 2's helper 1808.
FIG. 24 is a flow chart of a sixth method of communication. The method of communication may be wireless. The method may be performed by a communications device, such as a UE. The communications device is referred to as a first node. In step 2404, the first node receives a join request from a second node. The join request includes a second node identifier associated with the second node. For example, referring to FIG. 16, step 1614, the node l 's helper 1606 receives a helper join request for incoming path from the node 1 1604. In step 2406, the first node sends a join response to the second node. The join response includes a remote-to-local-incoming identifier associated with the first node. For example, referring to FIG. 16, step 1616, the node l 's helper 1606 sends a helper join response for incoming path to the node 1 1604. The helper join response for incoming path includes the label ID "Label 2" associated with the node l 's helper 1606. In step 2408, the first node receives a communication with the remote-to-local-incoming identifier from one of a third node or a fourth node. The communication originates from the third node. For example, referring to FIG. 16, step 1628, the node l 's helper 1606 receives a packet from the node 2's helper 1608 that originates from the node 2 1610. If the node 2 1610 does not have a helper, then the node l 's helper 1606 would receive the packet directly from the node 2 1610 that originates from the node 2 1610. In step 2410, the first node sends the communication with the second node identifier to the second node. For example, referring to FIG. 16, step 1630, the node l 's helper 1606 sends a packet with the label ID "Label 1" to the node 1 1604.
In step 2412, the first node may receive a second join request from the second node. The second join request includes an identifier associated with one of the third node or the fourth node. For example, referring to FIG. 16, step 1640, the node l 's helper 1606 receives a helper join request for outgoing path from the node 1 1604. In step 1640, the helper join request for outgoing path includes label ID "Label 5" associated with the node 2's helper 1608. However, if the node 2 1610 does not have a helper, then the helper join request for outgoing path would include the label ID "Label 4" associated with the node 2 1610. In step 2414, the first node may send a second join response to the second node. The second join response includes a local-to-remote-incoming identifier associated with the first node. For example, referring to FIG. 16, step 1642, the node l 's helper 1606 sends a helper join response for outgoing path to the node 1 1604. The helper join response for outgoing path includes the label ID "Label 6" associated with the node l 's helper 1606. In step 2416, the first node may receive a communication with the local-to-remote-incoming identifier from the second node. For example, referring to FIG. 16, step 1652, the node l 's helper 1606 receives a packet with the label ID "Label 6" from the node 1 1604. In step 2418, the first node may send the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node. For example, referring to FIG. 16, step 1654, the node l 's helper 1606 sends the packet with the label "Label 5" to the node 2's helper 1608. If the node 2 1610 does not have a helper, then the node l 's helper 1606 would send the packet with the label "Label 4" to the node 2 1610.
FIG. 25 is a flow chart of a seventh method of communication. The method of communication may be wireless. The method may be performed by a communications device, such as a UE. The communications device is referred to as a first node. In step 2504, the first node may receive a switch request from the second node. The switch request includes the second node identifier and the identifier associated with one of the third node or the fourth node. For example, referring to FIG. 17, step 1730, the node 1 's new helper 1708 may receive a switch request for local helper from the node 1 1704. The switch request for local helper includes label ID "Label 1" associated with the node 1 1704. The switch request for local helper may further include the label ID "Label 5" associated with the node 2's helper 1712 (as shown in step 1730 of FIG. 17) or the label ID "Label 4" associated with the node 2 1714 (if the node 2 1714 has no helper). In step 2506, the first node may send a switch response to the second node. The switch response includes the remote-to-local-incoming identifier and the local-to-remote- incoming identifier. For example, referring to FIG. 17, step 1732, the node l 's new helper sends a switch request for local helper to the node 1 1704. The switch request for local helper includes the label ID "Label 7" and the label ID "Label 8." In step 2508, the first node may receive an incoming communication with the remote-to-local- incoming identifier from one of the third node or the fourth node. For example, referring to FIG. 17, step 1746, the node l 's new helper 1708 may receive a packet with the label ID "Label 7" from the node 2's helper 1712. If the node 2 1714 doesn't have a helper, then the packet in step 1746 would be received directly from the node 2 1714. In step 2510, the first node may send the incoming communication with the second node identifier to the second node. For example, referring to FIG. 17, step 1748, the node l 's new helper 1708 sends the received packet with the label ID "Label 1" to the node 1 1704. In step 2512, the first node may receive an outgoing communication with the local-to-remote-incoming identifier from the second node. For example, referring to FIG. 17, step 1750, the node l 's new helper 1708 receives a packet with the label ID "Label 8" from the node 1 1704. In step 2514, the first node may send the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node. For example, referring to FIG. 17, step 1752, the node l 's new helper 1708 sends the received packet to the node 2's helper 1712. If the node 2 1714 does not have a helper, in step 1752, the node l 's new helper 1708 would send the received packet directly to the node 2 1714.
FIG. 26 is a flow chart of an eighth method of communication. The method of communication may be wireless. The method may be performed by a communications device, such as a UE. The communications device is referred to as a first node. In step 2604, the first node receives a join request from a second node. The join request includes an identifier associated with one of a third node or a fourth node. For example, referring to FIG. 16, step 1620, the node 2's helper 1608 receives a helper join request for outgoing path from the node 2 1610. The helper join request for outgoing path includes the label ID "Label 2" associated with the node l 's helper 1606. However, if the node 1 1604 does not have a helper, then the helper join request for outgoing path would include the label ID "Label 1" associated with the node 1 1604. In step 2606, the first node sends a join response to the second node. The join response includes a local- to-remote-incoming identifier associated with the first node. For example, referring to FIG. 16, step 1622, the node 2's helper 1608 sends a helper join response for outgoing path to the node 2 1610. The helper join response for outgoing path includes the label ID "Label 3" associated with the node 2's helper 1608. In step 2608, the first node receives a communication with the local-to-remote-incoming identifier from the second node. For example, referring to FIG. 16, step 1626, the node 2's helper receives a packet with the label ID "label 3" from the node 2 1610. In step 2610, the first node sends the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node. For example, referring to FIG. 16, step 1628, the node 2's helper 1608 sends the packet with the label ID "Label 2" to the node l 's helper 1606. However, if the node 1 1604 does not have a helper, then the node 2's helper 1608 would send the packet with the label ID "Label 1" directly to the node 1 1604. In step 2612, the first node may receive a second join request from the second node. The second join request includes a second node identifier associated with the second node. For example, referring to FIG. 16, step 1634, the node 2's helper 1608 receives a helper join request for incoming path from the node 2 1610. The helper join request for incoming path includes the label ID "Label 4" associated with the node 2 1610. In step 2614, the first node may send a second join response to the second node. The second join response includes a remote-to-local-incoming identifier associated with the first node. For example, referring to FIG. 16, step 1636, the node 2's helper 1608 sends a helper join response for incoming path to the node 2 1610. The helper join response for incoming path includes the label ID "Label 5" associated with the node 2's helper 1608. In step 2616, the first node may receive a communication with the remote- to-local-incoming identifier from one of the third node or the fourth node. The communication originates from the third node. For example, referring to FIG. 16, step 1654, the node 2's helper 1608 receives a packet with the label ID "Label 5" from the node l 's helper 1606 that originates from the node 1 1604. However, if the node 1 1604 does not have a helper, then the node 2's helper 1608 would receive the packet with the label ID "Label 5" from the node 1 1604 that originates from the node 1 1604. In step 2618, the first node may send the communication with the second node identifier to the second node. For example, referring to FIG. 16, step 1656, the node 2's helper 1608 sends the packet with the label ID "Label 4" to the node 2 1610.
FIG. 27 is a conceptual data flow diagram 2700 illustrating the data flow between different modules/means/components in an exemplary apparatus 2702. The apparatus may a communications device, such as a wireless communications device. For example, the apparatus may be a UE. The apparatus may be referred to as a first node. In a first configuration, the first node 2702 (e.g., node 1 1704) includes a communication module that is configured to send a join request to a second node 2720 (e.g., node l 's old helper 1706) to route communication associated with a third node 2730 (e.g., node 2 1714) to the first node 2702. The join request may include a first node identifier associated with the first node 2702. The communication module 2704 is configured to receive from the second node 2720 a join response including a second node identifier associated with the second node 2720. The communication module 2704 is configured to send a setup request to the third node 2730. The setup request includes the second node identifier. The communication module is configured to receive a communication with the first node identifier from the second node 2720. The communication originates from the third node 2730. The first node 2702 further includes an identifier module 2706 that is configured to generate identifiers and to store received identifiers. The identifier module 2706 communicates identifier information with the communication module 2704.
The communication module 2704 may be further configured to receive a path setup indication from the third node 2730. The first node may further include a helper interface module 2708 that is configured to determine whether to send the join request to the second node based on the path setup indication. As discussed supra, the path setup indication may include QoS information. The helper interface module 2708 may determine whether to send a join request to establish a helper relationship with the second node based on the QoS information. The helper interface module 2708 may be further configured to determine when to switch helper nodes. The helper interface module 2708 may determine to switch helper nodes based on information from a timer module 2710, which is configured to inform the helper interface module 2708 upon expiration of a timer. The helper interface module 2708 may determine to switch helper nodes based on other information, such as a release notification from a current helper node. The helper interface module 2708 is configured to communicate with the communication module 2704 to switch helper nodes.
The communication module 2704 may be configured to send a switch request to a fourth node 2750 (e.g., node l 's new helper 1708) to route communication associated with the third node 2730 to the first node 2702. The switch request includes the first node identifier. The communication module 2704 may be configured to receive a switch response from the fourth node 2750. The switch response includes a fourth node identifier associated with the fourth node 2750. The communication module 2704 may be configured to send a change notification to the third node 2730. The change notification includes the fourth node identifier. The communication module 2704 may be configured to receive a communication with the first node identifier from the fourth node 2750. The communication originates from the third node 2730. The communication module 2704 may be configured to receive a release notification from the second node 2720. The switch request may be sent in response to the release notification. The communication module may be configured to receive a change response from the third node 2730 and to send a release notification to the second node 2720 after receiving the change response. The timer module 2710 may be configured to set a timer associated with the second node 2720. The communication module 2704 may be configured to send the switch request upon expiration of the timer.
The communication module 2704 may be configured to send a change notification to the third node 2730. The change notification may include the first node identifier. The communication module 2704 may be configured to receive a communication with the first node identifier from one of the third node 2730 or a fourth node 2740 (e.g., node 2's helper 1712). The communication originates from the third node 2730. The communication module 2704 may be configured to send a release command to the second node 2720 before sending the change notification to the third node 2730. The communication module 2704 may be configured to receive a change response from the third node 2730, and to send a release command to the second node 2720 after receiving the change response from the third node 2730. The communication module 2704 may be configured to send a release notification to the third node 2730. The communication with the first node identifier from the second node 2720 that originates from the third node 2730 stops after the release notification is sent.
In a second configuration, the communication module 2704 is configured to receive a setup request from a second node 2730 (e.g., node 1 1704). The setup request includes an identifier associated with one of the second node 2730 or a third node 2740 (e.g., node l 's old helper 1706). The communication module 2704 is configured to send a join request to a fourth node 2720 (e.g., node 2's helper 1712) to route communication for the second node 2730 from the first node 2702 (e.g., node 2 1714) to one of the second node 2730 or the third node 2740. The join request includes the identifier associated with one of the second node 2730 or the third node 2740. The communication module 2704 is configured to receive from the fourth node 2720 a join response including a fourth node identifier associated with the fourth node 2720. The communication module 2704 is configured to send a communication for the second node 2730 to the fourth node 2720. The communication is sent with the fourth node identifier.
The communication module 2704 may be further configured to send a path setup indication to the second node 2730. The communication module 2704 may be further configured to receive a change notification from the second node 2730. The change notification includes an identifier associated with one of the second node 2730 or a fifth node 2760 (e.g., node l 's new helper 1708). The communication module 2704 may be further configured to send a switch request to the fourth node 2720 to route communication for the second node 2730 from the first node 2704 to one of the second node 2730 or the fifth node 2760. The switch request includes the identifier associated with one of the second node 2730 or the fifth node 2760. The communication module 2704 may be further configured to send a second communication for the second node 2730 to the fourth node 2720. The communication is sent with the fourth node identifier.
The communication module 2704 may be further configured to send a release command to the fourth node 2720, and to send a communication with an identifier associated with one of the second node 2730 or the third node 2740 to one of the second node 2730 or the third node 2740. The communication module 2704 may be further configured to receive a release notification from the second node, and to stop sending the communication for the second node to the fourth node upon receiving the release notification.
In a third configuration, the communication module 2704 is configured to receive a join request from a second node. The join request includes a second node identifier associated with the second node. The communication module 2704 is further configured to send a join response to the second node. The join response includes a remote-to-local-incoming identifier associated with the first node. The communication module 2704 is further configured to receive a communication with the remote-to-local- incoming identifier from one of a third node or a fourth node. The communication originates from the third node. The communication module 2704 is further configured to send the communication with the second node identifier to the second node.
The communication module 2704 may be further configured to receive a second join request from the second node. The second join request includes an identifier associated with one of the third node or the fourth node. The communication module 2704 may be further configured to send a second join response to the second node. The second join response includes a local-to-remote-incoming identifier associated with the first node. The communication module 2704 may be further configured to receive a communication with the local-to-remote-incoming identifier from the second node. The communication module 2704 may be further configured to send the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node. The communication module 2704 may be further configured to receive a switch request from the second node. The switch request includes the second node identifier and the identifier associated with one of the third node or the fourth node. The communication module 2704 may be further configured to send a switch response to the second node. The switch response includes the remote-to-local-incoming identifier and the local-to- remote-incoming identifier. The communication module 2704 may be further configured to receive an incoming communication with the remote-to-local-incoming identifier from one of the third node or the fourth node. The communication module 2704 may be further configured to send the incoming communication with the second node identifier to the second node. The communication module 2704 may be further configured to receive an outgoing communication with the local-to-remote-incoming identifier from the second node. The communication module 2704 may be further configured to send the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
In a fourth configuration, the communication module 2704 is configured to receive a join request from a second node. The join request includes an identifier associated with one of a third node or a fourth node. The communication module 2704 is configured to send a join response to the second node. The join response includes a local-to-remote- incoming identifier associated with the first node. The communication module 2704 is configured to receive a communication with the local-to-remote-incoming identifier from the second node. The communication module 2704 is configured to send the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
The apparatus may include additional modules that perform each of the steps of the algorithm in the aforementioned flow charts of FIGs. 19-26. As such, each step in the aforementioned flow charts of FIGs. 19-26 may be performed by a module and the apparatus may include one or more of those modules. The modules may be one or more hardware components specifically configured to carry out the stated processes/algorithm, implemented by a processor configured to perform the stated processes/algorithm, stored within a computer-readable medium for implementation by a processor, or some combination thereof.
FIG. 28 is a diagram 2800 illustrating an example of a hardware implementation for an apparatus 2702' employing a processing system 2814. The processing system 2814 may be implemented with a bus architecture, represented generally by the bus 2824. The bus 2824 may include any number of interconnecting buses and bridges depending on the specific application of the processing system 2814 and the overall design constraints. The bus 2824 links together various circuits including one or more processors and/or hardware modules, represented by the processor 2804, the modules 2704, 2706, 2708, 2710, and the computer-readable medium 2806. The bus 2824 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further.
The processing system 2814 may be coupled to a transceiver 2810. The transceiver 2810 is coupled to one or more antennas 2820. The transceiver 2810 provides a means for communicating with various other apparatus over a transmission medium. The processing system 2814 includes a processor 2804 coupled to a computer-readable medium 2806. The processor 2804 is responsible for general processing, including the execution of software stored on the computer-readable medium 2806. The software, when executed by the processor 2804, causes the processing system 2814 to perform the various functions described supra for any particular apparatus. The computer-readable medium 2806 may also be used for storing data that is manipulated by the processor 2804 when executing software. The processing system further includes at least one of the modules 2704, 2706, 2708, 2710. The modules may be software modules running in the processor 2804, resident/stored in the computer readable medium 2806, one or more hardware modules coupled to the processor 2804, or some combination thereof.
In one configuration, the first node apparatus 2702/2702' for communication includes means for sending a join request to a second node to route communication associated with a third node to the first node. The join request includes a first node identifier associated with the first node. The apparatus further includes means for receiving from the second node a join response including a second node identifier associated with the second node. The apparatus further includes means for sending a setup request to the third node. The setup request includes the second node identifier. The apparatus further includes means for receiving a communication with the first node identifier from the second node. The communication originates from the third node.
The apparatus may further include means for receiving a path setup indication from the third node. The apparatus may further include means for determining whether to send the join request to the second node based on the path setup indication. The apparatus may further include means for sending a switch request to a fourth node to route communication associated with the third node to the first node. The switch request includes the first node identifier. The apparatus may further include means for receiving a switch response from the fourth node. The switch response includes a fourth node identifier associated with the fourth node. The apparatus may further include means for sending a change notification to the third node. The change notification includes the fourth node identifier. The apparatus may further include means for receiving a communication with the first node identifier from the fourth node. The communication originates from the third node. The apparatus may further include means for receiving a release notification from the second node. The switch request is sent in response to the release notification. The apparatus may further include means for receiving a change response from the third node, and means for sending a release notification to the second node after receiving the change response. The apparatus may further include means for setting a timer associated with the second node. The switch request is sent upon expiration of the timer. The apparatus may further include means for sending a change notification to the third node. The change notification includes the first node identifier. The apparatus may further include means for receiving a communication with the first node identifier from one of the third node or a fourth node. The communication originates from the third node. The apparatus may further include means for sending a release command to the second node before sending the change notification to the third node. The apparatus may further include means for receiving a change response from the third node, and means for sending a release command to the second node after receiving the change response from the third node. The apparatus may further include means for sending a release notification to the third node. The communication with the first node identifier from the second node that originates from the third node stops after the release notification is sent.
The aforementioned means may be one or more of the aforementioned modules of the apparatus 2702 and/or the processing system 2814 of the apparatus 2702' configured to perform the functions recited by the aforementioned means.
In one configuration, the first node apparatus 2702/2702' for communication includes means for receiving a setup request from a second node. The setup request includes an identifier associated with one of the second node or a third node. The apparatus further includes means for sending a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node. The join request includes the identifier associated with one of the second node or the third node. The apparatus further includes means for receiving from the fourth node a join response including a fourth node identifier associated with the fourth node. The apparatus further includes means for sending a communication for the second node to the fourth node. The communication is sent with the fourth node identifier.
The apparatus may further include means for sending a path setup indication to the second node. The apparatus may further include means for receiving a change notification from the second node. The change notification includes an identifier associated with one of the second node or a fifth node. The apparatus may further include means for sending a switch request to the fourth node to route communication for the second node from the first node to one of the second node or the fifth node. The switch request includes the identifier associated with one of the second node or the fifth node. The apparatus may further include means for sending a second communication for the second node to the fourth node. The communication is sent with the fourth node identifier. The apparatus may further include means for sending a release command to the fourth node, and means for sending a communication with an identifier associated with one of the second node or the third node to one of the second node or the third node. The apparatus may further include means for receiving a release notification from the second node, means for stopping the sending of the communication for the second node to the fourth node upon receiving the release notification.
The aforementioned means may be one or more of the aforementioned modules of the apparatus 2702 and/or the processing system 2814 of the apparatus 2702' configured to perform the functions recited by the aforementioned means.
In one configuration, the first node apparatus 2702/2702' for communication includes means for receiving a join request from a second node. The join request includes a second node identifier associated with the second node. The apparatus further includes means for sending a join response to the second node. The join response includes a remote-to-local-incoming identifier associated with the first node. The apparatus further includes means for receiving a communication with the remote-to-local-incoming identifier from one of a third node or a fourth node. The communication originates from the third node. The apparatus further includes means for sending the communication with the second node identifier to the second node.
The apparatus may further include means for receiving a second join request from the second node. The second join request includes an identifier associated with one of the third node or the fourth node. The apparatus may further include means for sending a second join response to the second node. The second join response includes a local-to- remote-incoming identifier associated with the first node. The apparatus may further include means for receiving a communication with the local-to-remote-incoming identifier from the second node. The apparatus may further include means for sending the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node. The apparatus may further include means for receiving a switch request from the second node. The switch request includes the second node identifier and the identifier associated with one of the third node or the fourth node. The apparatus may further include means for sending a switch response to the second node. The switch response includes the remote-to-local-incoming identifier and the local-to-remote-incoming identifier. The apparatus may further include means for receiving an incoming communication with the remote-to-local-incoming identifier from one of the third node or the fourth node, means for sending the incoming communication with the second node identifier to the second node, means for receiving an outgoing communication with the local-to-remote-incoming identifier from the second node, and means for sending the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
The aforementioned means may be one or more of the aforementioned modules of the apparatus 2702 and/or the processing system 2814 of the apparatus 2702' configured to perform the functions recited by the aforementioned means.
In one configuration, the first node apparatus 2702/2702' for communication includes means for receiving a join request from a second node. The join request includes an identifier associated with one of a third node or a fourth node. The apparatus further includes means for sending a join response to the second node. The join response includes a local-to-remote-incoming identifier associated with the first node. The apparatus further includes means for receiving a communication with the local-to- remote-incoming identifier from the second node, and means for sending the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
The apparatus may further include means for receiving a second join request from the second node. The second join request includes a second node identifier associated with the second node. The apparatus may further include means for sending a second join response to the second node. The second join response includes a remote-to-local- incoming identifier associated with the first node. The apparatus may further include means for receiving a communication with the remote-to-local-incoming identifier from one of the third node or the fourth node. The communication originates from the third node. The apparatus may further include means for sending the communication with the second node identifier to the second node. The apparatus may further include means for receiving a switch request from the second node. The switch request includes the second node identifier and the identifier associated with one of the third node or the fourth node. The apparatus may further include means for sending a switch response to the second node. The switch response includes the remote-to-local-incoming identifier and the local-to-remote-incoming identifier. The apparatus may further include means for receiving an incoming communication with the remote-to-local-incoming identifier from one of the third node or the fourth node, means for sending the incoming communication with the second node identifier to the second node, means for receiving an outgoing communication with the local-to-remote-incoming identifier from the second node, and means for sending the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
The aforementioned means may be one or more of the aforementioned modules of the apparatus 2702 and/or the processing system 2814 of the apparatus 2702' configured to perform the functions recited by the aforementioned means.
It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. Further, some steps may be combined or omitted. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean "one and only one" unless specifically so stated, but rather "one or more." Unless specifically stated otherwise, the term "some" refers to one or more. All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed as a means plus function unless the element is expressly recited using the phrase "means for."
WHAT IS CLAIMED IS:

Claims

1. A method of communication in a first node, comprising:
sending a join request to a second node to route communication associated with a third node to the first node, the join request comprising a first node identifier associated with the first node;
receiving from the second node a join response comprising a second node identifier associated with the second node;
sending a setup request to the third node, the setup request comprising the second node identifier; and
receiving a communication with the first node identifier from the second node, the communication originating from the third node.
2. The method of claim 1, further comprising receiving a path setup indication from the third node.
3. The method of claim 2, further comprising determining whether to send the join request to the second node based on the path setup indication.
4. The method of claim 3, wherein the path setup indication includes quality of service (QoS) information, and the join request is determined to be sent to the second node based on the QoS information.
5. The method of claim 1, further comprising:
sending a switch request to a fourth node to route communication associated with the third node to the first node, the switch request comprising the first node identifier;
receiving a switch response from the fourth node, the switch response comprising a fourth node identifier associated with the fourth node;
sending a change notification to the third node, the change notification comprising the fourth node identifier; and
receiving a communication with the first node identifier from the fourth node, the communication originating from the third node.
6. The method of claim 5, further comprising receiving a release notification from the second node, wherein the switch request is sent in response to the release notification.
7. The method of claim 5, further comprising:
receiving a change response from the third node; and
sending a release notification to the second node after receiving the change response.
8. The method of claim 7, further comprising setting a timer associated with the second node, wherein the switch request is sent upon expiration of the timer.
9. The method of claim 1, further comprising:
sending a change notification to the third node, the change notification comprising the first node identifier; and
receiving a communication with the first node identifier from one of the third node or a fourth node, the communication originating from the third node.
10. The method of claim 9, further comprising sending a release command to the second node before sending the change notification to the third node.
1 1. The method of claim 9, further comprising:
receiving a change response from the third node; and
sending a release command to the second node after receiving the change response from the third node.
12. The method of claim 1, further comprising sending a release notification to the third node, wherein the communication with the first node identifier from the second node that originates from the third node stops after the release notification is sent.
13. The method of claim 1, wherein the method of communication is a method of wireless communication.
14. A method of wireless communication of a first node, comprising:
receiving a setup request from a second node, the setup request comprising an identifier associated with one of the second node or a third node;
sending a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node, the join request comprising the identifier associated with one of the second node or the third node; receiving from the fourth node a join response comprising a fourth node identifier associated with the fourth node;
sending a communication for the second node to the fourth node, the communication being sent with the fourth node identifier.
15. The method of claim 14, further comprising sending a path setup indication to the second node.
16. The method of claim 14, further comprising:
receiving a change notification from the second node, the change notification comprising an identifier associated with one of the second node or a fifth node; sending a switch request to the fourth node to route communication for the second node from the first node to one of the second node or the fifth node, the switch request comprising the identifier associated with one of the second node or the fifth node; and
sending a second communication for the second node to the fourth node, the communication being sent with the fourth node identifier.
17. The method of claim 14, further comprising:
sending a release command to the fourth node; and
sending a communication with an identifier associated with one of the second node or the third node to one of the second node or the third node.
18. The method of claim 14, further comprising:
receiving a release notification from the second node; and
stopping the sending of the communication for the second node to the fourth node upon receiving the release notification.
19. The method of claim 14, wherein the method of communication is a method of wireless communication.
20. A method of communication of a first node, comprising:
receiving a join request from a second node, the join request comprising a second node identifier associated with the second node;
sending a join response to the second node, the join response comprising a remote-to-local-incoming identifier associated with the first node;
receiving a communication with the remote-to-local-incoming identifier from one of a third node or a fourth node, the communication originating from the third node; and
sending the communication with the second node identifier to the second node.
21. The method of claim 20, further comprising:
receiving a second join request from the second node, the second join request comprising an identifier associated with one of the third node or the fourth node;
sending a second join response to the second node, the second join response comprising a local-to-remote-incoming identifier associated with the first node;
receiving a communication with the local-to-remote-incoming identifier from the second node; and
sending the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
22. The method of claim 21, further comprising:
receiving a switch request from the second node, the switch request comprising the second node identifier and the identifier associated with one of the third node or the fourth node;
sending a switch response to the second node, the switch response comprising the remote-to-local-incoming identifier and the local-to-remote-incoming identifier; receiving an incoming communication with the remote-to-local-incoming identifier from one of the third node or the fourth node;
sending the incoming communication with the second node identifier to the second node; receiving an outgoing communication with the local-to-remote-incoming identifier from the second node; and
sending the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
23. A method of communication of a first node, comprising:
receiving a join request from a second node, the join request comprising an identifier associated with one of a third node or a fourth node;
sending a join response to the second node, the join response comprising a local- to-remote-incoming identifier associated with the first node;
receiving a communication with the local-to-remote-incoming identifier from the second node; and
sending the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
24. The method of claim 23, further comprising:
receiving a second join request from the second node, the second join request comprising a second node identifier associated with the second node;
sending a second join response to the second node, the second join response comprising a remote-to-local-incoming identifier associated with the first node;
receiving a communication with the remote-to-local-incoming identifier from one of the third node or the fourth node, the communication originating from the third node; and
sending the communication with the second node identifier to the second node.
25. The method of claim 24, further comprising:
receiving a switch request from the second node, the switch request comprising the second node identifier and the identifier associated with one of the third node or the fourth node;
sending a switch response to the second node, the switch response comprising the remote-to-local-incoming identifier and the local-to-remote-incoming identifier; receiving an incoming communication with the remote-to-local-incoming identifier from one of the third node or the fourth node; sending the incoming communication with the second node identifier to the second node;
receiving an outgoing communication with the local-to-remote-incoming identifier from the second node; and
sending the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
26. A first node apparatus for communication, comprising:
means for sending a join request to a second node to route communication associated with a third node to the first node, the join request comprising a first node identifier associated with the first node;
means for receiving from the second node a join response comprising a second node identifier associated with the second node;
means for sending a setup request to the third node, the setup request comprising the second node identifier; and
means for receiving a communication with the first node identifier from the second node, the communication originating from the third node.
27. The apparatus of claim 26, further comprising means for receiving a path setup indication from the third node.
28. The apparatus of claim 27, further comprising means for determining whether to send the join request to the second node based on the path setup indication.
29. The apparatus of claim 28, wherein the path setup indication includes quality of service (QoS) information, and the join request is determined to be sent to the second node based on the QoS information.
30. The apparatus of claim 26, further comprising:
means for sending a switch request to a fourth node to route communication associated with the third node to the first node, the switch request comprising the first node identifier;
means for receiving a switch response from the fourth node, the switch response comprising a fourth node identifier associated with the fourth node; means for sending a change notification to the third node, the change notification comprising the fourth node identifier; and
means for receiving a communication with the first node identifier from the fourth node, the communication originating from the third node.
31. The apparatus of claim 30, further comprising means for receiving a release notification from the second node, wherein the switch request is sent in response to the release notification.
32. The apparatus of claim 30, further comprising:
means for receiving a change response from the third node; and
means for sending a release notification to the second node after receiving the change response.
33. The apparatus of claim 32, further comprising means for setting a timer associated with the second node, wherein the switch request is sent upon expiration of the timer.
34. The apparatus of claim 26, further comprising:
means for sending a change notification to the third node, the change notification comprising the first node identifier; and
means for receiving a communication with the first node identifier from one of the third node or a fourth node, the communication originating from the third node.
35. The apparatus of claim 34, further comprising means for sending a release command to the second node before sending the change notification to the third node.
36. The apparatus of claim 34, further comprising:
means for receiving a change response from the third node; and
means for sending a release command to the second node after receiving the change response from the third node.
37. The apparatus of claim 26, further comprising means for sending a release notification to the third node, wherein the communication with the first node identifier from the second node that originates from the third node stops after the release notification is sent.
38. The apparatus of claim 26, wherein the communication is wireless communication.
39. A first node apparatus for communication, comprising:
means for receiving a setup request from a second node, the setup request comprising an identifier associated with one of the second node or a third node;
means for sending a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node, the join request comprising the identifier associated with one of the second node or the third node;
means for receiving from the fourth node a join response comprising a fourth node identifier associated with the fourth node;
means for sending a communication for the second node to the fourth node, the communication being sent with the fourth node identifier.
40. The apparatus of claim 39, further comprising means for sending a path setup indication to the second node.
41. The apparatus of claim 39, further comprising:
means for receiving a change notification from the second node, the change notification comprising an identifier associated with one of the second node or a fifth node;
means for sending a switch request to the fourth node to route communication for the second node from the first node to one of the second node or the fifth node, the switch request comprising the identifier associated with one of the second node or the fifth node; and
means for sending a second communication for the second node to the fourth node, the communication being sent with the fourth node identifier.
42. The apparatus of claim 39, further comprising:
means for sending a release command to the fourth node; and means for sending a communication with an identifier associated with one of the second node or the third node to one of the second node or the third node.
43. The apparatus of claim 39, further comprising:
means for receiving a release notification from the second node; and
means for stopping the sending of the communication for the second node to the fourth node upon receiving the release notification.
44. The apparatus of claim 39, wherein the communication is wireless communication.
45. A first node apparatus for communication, comprising:
means for receiving a join request from a second node, the join request comprising a second node identifier associated with the second node;
means for sending a join response to the second node, the join response comprising a remote-to-local-incoming identifier associated with the first node;
means for receiving a communication with the remote-to-local-incoming identifier from one of a third node or a fourth node, the communication originating from the third node; and
means for sending the communication with the second node identifier to the second node.
46. The apparatus of claim 45, further comprising:
means for receiving a second join request from the second node, the second join request comprising an identifier associated with one of the third node or the fourth node; means for sending a second join response to the second node, the second join response comprising a local-to-remote-incoming identifier associated with the first node;
means for receiving a communication with the local-to-remote-incoming identifier from the second node; and
means for sending the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
47. The apparatus of claim 46, further comprising: means for receiving a switch request from the second node, the switch request comprising the second node identifier and the identifier associated with one of the third node or the fourth node;
means for sending a switch response to the second node, the switch response comprising the remote-to-local-incoming identifier and the local-to-remote-incoming identifier;
means for receiving an incoming communication with the remote-to-local- incoming identifier from one of the third node or the fourth node;
means for sending the incoming communication with the second node identifier to the second node;
means for receiving an outgoing communication with the local-to-remote- incoming identifier from the second node; and
means for sending the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
48. A first node apparatus for communication, comprising:
means for receiving a join request from a second node, the join request comprising an identifier associated with one of a third node or a fourth node;
means for sending a join response to the second node, the join response comprising a local-to-remote-incoming identifier associated with the first node;
means for receiving a communication with the local-to-remote-incoming identifier from the second node; and
means for sending the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
49. The apparatus of claim 48, further comprising:
means for receiving a second join request from the second node, the second join request comprising a second node identifier associated with the second node;
means for sending a second join response to the second node, the second join response comprising a remote-to-local-incoming identifier associated with the first node;
means for receiving a communication with the remote-to-local-incoming identifier from one of the third node or the fourth node, the communication originating from the third node; and means for sending the communication with the second node identifier to the second node.
50. The apparatus of claim 49, further comprising:
means for receiving a switch request from the second node, the switch request comprising the second node identifier and the identifier associated with one of the third node or the fourth node;
means for sending a switch response to the second node, the switch response comprising the remote-to-local-incoming identifier and the local-to-remote-incoming identifier;
means for receiving an incoming communication with the remote-to-local- incoming identifier from one of the third node or the fourth node;
means for sending the incoming communication with the second node identifier to the second node;
means for receiving an outgoing communication with the local-to-remote- incoming identifier from the second node; and
means for sending the outgoing communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
51. A first node apparatus for communication, comprising:
a processing system configured to:
send a join request to a second node to route communication associated with a third node to the first node, the join request comprising a first node identifier associated with the first node;
receive from the second node a join response comprising a second node identifier associated with the second node;
send a setup request to the third node, the setup request comprising the second node identifier; and
receive a communication with the first node identifier from the second node, the communication originating from the third node.
52. A first node apparatus for communication, comprising:
a processing system configured to: receive a setup request from a second node, the setup request comprising an identifier associated with one of the second node or a third node;
send a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node, the join request comprising the identifier associated with one of the second node or the third node; receive from the fourth node a join response comprising a fourth node identifier associated with the fourth node;
send a communication for the second node to the fourth node, the
communication being sent with the fourth node identifier.
53. A first node apparatus for communication, comprising:
a processing system configured to:
receive a join request from a second node, the join request comprising a second node identifier associated with the second node;
send a join response to the second node, the join response comprising a remote- to-local-incoming identifier associated with the first node;
receive a communication with the remote-to-local-incoming identifier from one of a third node or a fourth node, the communication originating from the third node; and send the communication with the second node identifier to the second node.
54. A first node apparatus for communication, comprising:
a processing system configured to:
receive a join request from a second node, the join request comprising an identifier associated with one of a third node or a fourth node;
send a join response to the second node, the join response comprising a local-to- remote-incoming identifier associated with the first node;
receive a communication with the local-to-remote-incoming identifier from the second node; and
send the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
55. A computer program product in a first node, comprising:
a computer-readable medium comprising code for: sending a join request to a second node to route communication associated with a third node to the first node, the join request comprising a first node identifier associated with the first node;
receiving from the second node a join response comprising a second node identifier associated with the second node;
sending a setup request to the third node, the setup request comprising the second node identifier; and
receiving a communication with the first node identifier from the second node, the communication originating from the third node.
56. A computer program product in a first node, comprising:
a computer-readable medium comprising code for:
receiving a setup request from a second node, the setup request comprising an identifier associated with one of the second node or a third node;
sending a join request to a fourth node to route communication for the second node from the first node to one of the second node or the third node, the join request comprising the identifier associated with one of the second node or the third node; receiving from the fourth node a join response comprising a fourth node identifier associated with the fourth node;
sending a communication for the second node to the fourth node, the communication being sent with the fourth node identifier.
57. A computer program product in a first node, comprising:
a computer-readable medium comprising code for:
receiving a join request from a second node, the join request comprising a second node identifier associated with the second node;
sending a join response to the second node, the join response comprising a remote-to-local-incoming identifier associated with the first node;
receiving a communication with the remote-to-local-incoming identifier from one of a third node or a fourth node, the communication originating from the third node; and
sending the communication with the second node identifier to the second node.
58. A computer program product in a first node, comprising:
a computer-readable medium comprising code for:
receiving a join request from a second node, the join request comprising an identifier associated with one of a third node or a fourth node;
sending a join response to the second node, the join response comprising a local- to-remote-incoming identifier associated with the first node;
receiving a communication with the local-to-remote-incoming identifier from the second node; and
sending the communication with the identifier associated with one of the third node or the fourth node to one of the third node or the fourth node.
PCT/US2012/039729 2011-05-26 2012-05-25 Multipath overlay network and its multipath management protocol WO2012162672A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201280037115.7A CN103703740B (en) 2011-05-26 2012-05-25 Multipath overlay network and its multipath management agreement
KR1020137034576A KR101527830B1 (en) 2011-05-26 2012-05-25 Multipath overlay network and its multipath management protocol
JP2014512170A JP5852232B2 (en) 2011-05-26 2012-05-25 Multipath overlay network and multipath management protocol thereof

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/116,980 US9444887B2 (en) 2011-05-26 2011-05-26 Multipath overlay network and its multipath management protocol
US13/116,980 2011-05-26
US13/480,326 2012-05-24
US13/480,326 US8995338B2 (en) 2011-05-26 2012-05-24 Multipath overlay network and its multipath management protocol

Publications (1)

Publication Number Publication Date
WO2012162672A1 true WO2012162672A1 (en) 2012-11-29

Family

ID=46201884

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2012/039729 WO2012162672A1 (en) 2011-05-26 2012-05-25 Multipath overlay network and its multipath management protocol

Country Status (6)

Country Link
US (1) US8995338B2 (en)
JP (1) JP5852232B2 (en)
KR (1) KR101527830B1 (en)
CN (1) CN103703740B (en)
TW (1) TWI507077B (en)
WO (1) WO2012162672A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021072299A3 (en) * 2019-10-09 2021-05-20 Curated Networks Multipath routing in communication networks

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9444887B2 (en) 2011-05-26 2016-09-13 Qualcomm Incorporated Multipath overlay network and its multipath management protocol
US8885502B2 (en) 2011-09-09 2014-11-11 Qualcomm Incorporated Feedback protocol for end-to-end multiple path network systems
WO2014117775A1 (en) * 2013-01-31 2014-08-07 Codemate A/S Network content delivery method using a delivery helper node
JP6263843B2 (en) * 2013-02-28 2018-01-24 株式会社リコー Communication management system, communication management method, and program
US20140317616A1 (en) * 2013-04-23 2014-10-23 Thomas P. Chu Cloud computing resource management
JP6191466B2 (en) * 2014-01-09 2017-09-06 富士通株式会社 VIDEO DISTRIBUTION SYSTEM AND NODE DEVICE USED IN VIDEO DISTRIBUTION SYSTEM
JP6369024B2 (en) * 2014-01-09 2018-08-08 富士通株式会社 VIDEO DISTRIBUTION SYSTEM AND NODE DEVICE USED IN VIDEO DISTRIBUTION SYSTEM
US9942131B2 (en) * 2015-07-29 2018-04-10 International Business Machines Corporation Multipathing using flow tunneling through bound overlay virtual machines
CN105357139A (en) * 2015-10-30 2016-02-24 小米科技有限责任公司 Data transmission method and device
US11283876B2 (en) * 2020-03-20 2022-03-22 Verizon Patent And Licensing Inc. Systems and methods for end-to-end request-response flow routing for geographically distributed client devices

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000079730A2 (en) * 1999-06-18 2000-12-28 Digital Island, Inc. On-demand overlay routing for computer-based communication networks
WO2006015614A1 (en) * 2004-08-13 2006-02-16 Matsushita Electric Industrial Co., Ltd. Providing mobility to a mobile host in a network employing point-to-multipoint multi-protocol label switching
US20060039371A1 (en) * 2004-08-19 2006-02-23 Microsoft Corporation Network routing
US20080137653A1 (en) * 2004-01-30 2008-06-12 Telefonaktiebolaget Lm Ericsson (Publ) Method for Transferring Packets in Networks Comprising a Plurality of Linked Intermediate Networks
US20090073921A1 (en) * 2007-09-19 2009-03-19 At&T Services Inc. Data forwarding in hybrid mesh networks
US20100064049A1 (en) * 2006-11-29 2010-03-11 Nazanin Magharei Contribution aware peer-to-peer live streaming service

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6580909B1 (en) 1999-08-26 2003-06-17 International Business Machines Corporation Communications system and method based on the relative positions of mobile units
US7228350B2 (en) 2000-08-04 2007-06-05 Avaya Technology Corp. Intelligent demand driven recognition of URL objects in connection oriented transactions
WO2002023934A1 (en) 2000-09-15 2002-03-21 Mspect, Inc. Wireless network monitoring
FI110977B (en) 2001-02-09 2003-04-30 Nokia Oyj A mechanism for promoting services and authorizing a user
US6834044B2 (en) 2001-02-15 2004-12-21 Telefonaktiebolaget L M Ericsson (Publ) Multi-path data streaming in a wireless packet data network
US20030007515A1 (en) 2001-07-03 2003-01-09 Apostolopoulos John G. System and method for receiving mutiple description media streams in fixed and mobile streaming media systems
US6954435B2 (en) 2002-04-29 2005-10-11 Harris Corporation Determining quality of service (QoS) routing for mobile ad hoc networks
US7388841B2 (en) 2003-10-20 2008-06-17 Mitsubishi Electric Research Laboratories, Inc. Selecting multiple paths in overlay networks for streaming data
US7080173B2 (en) 2004-05-27 2006-07-18 Microsoft Corporation Reducing information reception delays
US7733769B1 (en) 2004-06-08 2010-06-08 Cisco Technology, Inc. Method and apparatus for identifying a media path in a network
US7330457B2 (en) 2004-10-07 2008-02-12 Polytechnic University Cooperative wireless communications
US20060224763A1 (en) 2005-03-18 2006-10-05 Sharp Laboratories Of America, Inc. Switching and simultaneous usage of 802.11a and 802.11g technologies for video streaming
KR100687739B1 (en) 2005-03-29 2007-02-27 한국전자통신연구원 Method for monitoring link performance and diagnosing active status of link for Ethernet Passive Optical Network
KR101275726B1 (en) 2005-08-12 2013-06-17 노키아 지멘스 네트웍스 게엠베하 운트 코. 카게 A multi-source and resilient video on demand streaming system for a peer-to-peer subscriber community
WO2007020563A1 (en) 2005-08-19 2007-02-22 Koninklijke Philips Electronics N.V. Method and apparatus of multiple antennas transmission
US8467377B2 (en) 2005-08-24 2013-06-18 Qualcomm Incorporated Interleaving VoIP/VIP transmission in multiple sessions to increase quality of service in mobile devices having multiple interfaces
JP2007074564A (en) 2005-09-08 2007-03-22 Oki Electric Ind Co Ltd Network routing method and radio station
US20070110035A1 (en) 2005-11-14 2007-05-17 Broadcom Corporation, A California Corporation Network nodes cooperatively routing traffic flow amongst wired and wireless networks
US7839850B2 (en) 2006-01-30 2010-11-23 Juniper Networks, Inc. Forming equal cost multipath multicast distribution structures
KR101256687B1 (en) 2006-02-13 2013-04-19 리서치 파운데이션 오브 더 시티 유니버시티 오브 뉴욕 Apparatus for setting multipath and method thereof
US7643427B2 (en) 2006-03-28 2010-01-05 Nec Laboratories America, Inc. Multipath routing architecture for large data transfers
US8976670B2 (en) 2006-11-16 2015-03-10 Rockstar Consortium Us Lp System and method for delivering packet data over a multiplicity of communication links
US8898232B2 (en) * 2006-11-29 2014-11-25 Thomson Licensing Contribution aware peer-to-peer live streaming service
US7630370B2 (en) 2007-02-28 2009-12-08 Sharp Laboratories Of America, Inc. Overlay join latency reduction using preferred peer list
CN101287268B (en) * 2007-04-13 2012-05-09 中兴通讯股份有限公司 Method for updating connection relation of wireless relay station
US8175043B2 (en) 2007-12-20 2012-05-08 Verizon Patent And Licensing Inc. Method and system for establishing disparate connection paths from a mobile user device to a base station through a mobile peer-to-peer (PTP) network
EP2245885B1 (en) 2008-01-22 2012-11-28 Research In Motion Limited Path selection for a wireless system with relays
KR101414632B1 (en) * 2008-03-06 2014-07-03 엘지전자 주식회사 Method for communicating in a mobile station and system with relay stations
JP5026617B2 (en) * 2008-04-22 2012-09-12 トムソン ライセンシング Method and apparatus for multicast tree management in a multi-hop relay communication system
US20090290555A1 (en) * 2008-05-21 2009-11-26 Comsys Communication & Signal Processing Ltd. Autonomous anonymous association between a mobile station and multiple network elements in a wireless communication system
US20100088390A1 (en) 2008-10-03 2010-04-08 Microsoft Corporation Data sharing proxy for mobile devices
US7738406B2 (en) 2008-10-08 2010-06-15 Microsoft Corporation Models for routing tree selection in peer-to-peer communications
US20100121971A1 (en) 2008-11-10 2010-05-13 Samsung Electronics Co., Ltd. Multipath transmission of three-dimensional video information in wireless communication systems
WO2010073656A1 (en) * 2008-12-26 2010-07-01 パナソニック株式会社 Communication terminal, communication method, and program
GB2469469B (en) 2009-04-14 2015-06-10 Skype Method and system for data transmission
WO2010143894A2 (en) 2009-06-10 2010-12-16 Lg Electronics Inc. Method and apparatus for transmitting frame in wireless local area network (wlan) system
US20100315958A1 (en) 2009-06-11 2010-12-16 Luo Xiapu Method for non-cooperative measurement of network data-path quality
US8489722B2 (en) 2009-11-24 2013-07-16 International Business Machines Corporation System and method for providing quality of service in wide area messaging fabric
US9444887B2 (en) 2011-05-26 2016-09-13 Qualcomm Incorporated Multipath overlay network and its multipath management protocol
US20120311072A1 (en) 2011-06-01 2012-12-06 Qualcomm Incorporated Multipath management architecture and protocols for mobile multimedia service with multiple description coding
US8885502B2 (en) 2011-09-09 2014-11-11 Qualcomm Incorporated Feedback protocol for end-to-end multiple path network systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000079730A2 (en) * 1999-06-18 2000-12-28 Digital Island, Inc. On-demand overlay routing for computer-based communication networks
US20080137653A1 (en) * 2004-01-30 2008-06-12 Telefonaktiebolaget Lm Ericsson (Publ) Method for Transferring Packets in Networks Comprising a Plurality of Linked Intermediate Networks
WO2006015614A1 (en) * 2004-08-13 2006-02-16 Matsushita Electric Industrial Co., Ltd. Providing mobility to a mobile host in a network employing point-to-multipoint multi-protocol label switching
US20060039371A1 (en) * 2004-08-19 2006-02-23 Microsoft Corporation Network routing
US20100064049A1 (en) * 2006-11-29 2010-03-11 Nazanin Magharei Contribution aware peer-to-peer live streaming service
US20090073921A1 (en) * 2007-09-19 2009-03-19 At&T Services Inc. Data forwarding in hybrid mesh networks

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021072299A3 (en) * 2019-10-09 2021-05-20 Curated Networks Multipath routing in communication networks

Also Published As

Publication number Publication date
US8995338B2 (en) 2015-03-31
TWI507077B (en) 2015-11-01
KR20140017677A (en) 2014-02-11
US20130136116A1 (en) 2013-05-30
CN103703740A (en) 2014-04-02
KR101527830B1 (en) 2015-06-10
JP2014520428A (en) 2014-08-21
JP5852232B2 (en) 2016-02-03
TW201301933A (en) 2013-01-01
CN103703740B (en) 2017-03-01

Similar Documents

Publication Publication Date Title
US8995338B2 (en) Multipath overlay network and its multipath management protocol
KR101523685B1 (en) Multipath overlay network and its multipath management protocol
RU2456745C2 (en) Method and device for macrodiversion of downlink in cellular communication networks
US20150237525A1 (en) Traffic Shaping and Steering for a Multipath Transmission Control Protocol Connection
US9660898B2 (en) Enhanced protocol independent multicast source registration over a reliable transport
US20120311072A1 (en) Multipath management architecture and protocols for mobile multimedia service with multiple description coding
KR20160021271A (en) Lte and external wifi bandwidth aggregation
WO2019076306A1 (en) Data transmission channel processing method, apparatus and system
WO2020151641A1 (en) Method and device for data transmission, transmitting node, and receiving node
US9473992B1 (en) SBC-localized handoff
KR101307114B1 (en) Method of performing an intra-segment handover
CN106034078B (en) Method and system for reducing DR change of PIM protocol
EP2742738A1 (en) Transmitting data over multiple networks
JP2024510023A (en) METHODS, APPARATUS, ELECTRONIC EQUIPMENT AND STORAGE MEDIA FOR AUGMENTING IMS SERVICES
CN116743861A (en) Multicast joining method and related equipment
CN117119538A (en) Redundant transmission negotiation method, strategy matching method, device and industry network

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12725275

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014512170

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 20137034576

Country of ref document: KR

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 12725275

Country of ref document: EP

Kind code of ref document: A1