WO2017105258A1 - Techniques for network multicasting with acknowledgement - Google Patents

Techniques for network multicasting with acknowledgement Download PDF

Info

Publication number
WO2017105258A1
WO2017105258A1 PCT/PL2015/000202 PL2015000202W WO2017105258A1 WO 2017105258 A1 WO2017105258 A1 WO 2017105258A1 PL 2015000202 W PL2015000202 W PL 2015000202W WO 2017105258 A1 WO2017105258 A1 WO 2017105258A1
Authority
WO
WIPO (PCT)
Prior art keywords
client devices
unicast
multicast
group
syn
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/PL2015/000202
Other languages
French (fr)
Inventor
Maciej SOSNOWSKI
Mirosław WALUKIEWICZ
Waldemar FRYCA
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to PCT/PL2015/000202 priority Critical patent/WO2017105258A1/en
Publication of WO2017105258A1 publication Critical patent/WO2017105258A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • 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/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]

Definitions

  • Multicasting by a server to multiple client devices across a network typically involves a tradeoff between multicasting to a relatively large group of client devices and supporting the use of acknowledgement indications transmitted by a relatively small group of client devices. More specifically, where a relatively small group of client devices are each to receive the same data from a server as a group, it may be deemed beneficial to transmit that same data to each of those client devices in a separate unicast transmission that allow for each of those client devices to respond with an acknowledgement message that confirms that each of those client devices successfully received the data. Unfortunately, such use of a unicast transmission to each client device does not scale very well to a relatively large group of client devices.
  • FIGS. I A and IB each illustrate an example embodiment of a communications system.
  • FIG.2 illustrates the example embodiment of the communications system of FIG. I A or IB in greater detail.
  • FIGS, 3A, 3B and 3C each depict an example embodiment of a portion of a communications system.
  • FIGS.4A and 4B together, illustrate an example embodiment of preparing to convey data in a multicast session.
  • FIG.5 illustrates an example embodiment of conveying data in a multicast session.
  • FIG. ⁇ illustrates a logic flow according to an embodiment.
  • FIG.7 illustrates another logic flow according to an embodiment.
  • FIG. 8 illustrates a processing architecture according to an embodiment. Detailed Description
  • Various embodiments are generally directed to techniques for network multicasting to multiple client devices with acknowledgement
  • Each client device of a group of client devices may transmit a synchronization (SYN) message to a server that includes a request to become a recipient of a multicast transmission to be made by the server.
  • SYN synchronization
  • Each of these SYN messages may be forwarded to the server through one or more routers interposed between the client devices and the server, and the one or more routers may store indications of these requests to become a recipient of that multicast transmission.
  • the server may respond to each such SYN message by transmitting an acknowledgement (ACK) message back through the one or more routers and to the client device from which that SYN message was received to acknowledge receipt of that SYN message, but without including a corresponding return SYN message to that client device. Instead, the server may delay transmitting any SYN message to the group of client devices until after the server has received all of the SYN messages expected by the server from the client devices in the group, and until after individually responding to all of those SYN messages with ACK messages that do not include a corresponding return SYN message.
  • ACK acknowledgement
  • the server may then transmit a single SYN message to all of the client devices in the group in a single multicast transmission through the one or more routers.
  • Each of the client devices of the group of client devices may respond to this single multicast SYN message with an ACK message transmitted back toward the server as a unicast message.
  • the one or more routers may aggregate these ACK messages from the client devices of the group of client devices, rather than forward each individual one of these ACK messages onward to the server.
  • the one or more routers may cooperate to transmit a single aggregate ACK message to the server in a unicast transmission if ACK messages in response to the single multicast SYN message are received from all of the client devices of the group of client devices. If ACK messages in response to the single multicast SYN message are received from less than all of the client devices of the group of client devices, then the one or more routers may refrain from transmitting any ACK message to the server, thereby triggering the server to repeat transmission of the single multicast SYN message.
  • the one or more routers may cooperate to limit the forwarding of that retransmission to only the one or more client devices of the group of client devices from which an ACK message was not received by the one or more routers.
  • the SYN and/or ACK messages that are exchanged in preparing devices to engage in the multicast session may be generated to include specific pieces of information and/or specific arrangements of information in conformance with various specifications for the Transmission Control Protocol (TCP) promulgated by the Internet Engineering Taskforce (IETF) of Fremont, California.
  • TCP Transmission Control Protocol
  • IETF Internet Engineering Taskforce
  • each SYN and/or ACK message so exchanged may include an identifier of the source device that transmitted it, an identifier of one or more destination devices that are intended to receive it, an identifier of a session of communications with which it is associated, and an indicator of the type of message (e.g., SYN, ACK or data message).
  • the identifiers of the source and/or destination devices may include an Internet Protocol (IP) address. It should be noted that a single device may have more than one IP address where different ⁇ addresses are associated with different functions, and it should be noted that a single IP address may be associated with more than one device.
  • IP Internet Protocol
  • the session ID may be generated from one or more of the identifier of the source device, a port number associated with the source device, the identifier of the destination device, and a port number associated with the destination device.
  • each SYN message may include a sequence number generated by the device that transmits it and/or may provide an indication of the position of that SYN message among a stream of messages.
  • Each ACK message may include an
  • acknowledgement number that may be based on the sequence number of the message that the ACK message acknowledges the reception of.
  • the server may be coupled to multiple client devices through one or more routers that are interposed between the server and the multiple client devices in a tree-like topography in which the server is at the root, each of the one or more routers is at a point at which branching occurs, and each client device is at an Midpoint of a branch.
  • the server may be deemed to be upstream from the one or more routers, and each of the client devices may be deemed to be downstream from the one or more routers.
  • the multiple client devices may include a group of client devices that are to participate in a multicast session with the server in which the server is to transmit data to the client devices of the group of client devices in one or more multicast transmissions.
  • each of the client devices of the group of client devices may transmit a SYN message upstream to the server as part of requesting to participate in the multicasting session.
  • Each such SYN message may be transmitted by one of die client devices as a unicast transmission.
  • each such SYN message may include an identifier (ED) of the client device that transmits that SYN message, a sequence number randomly generated by that client device, and an identifier of the multicast session that distinguishes that multicast session from others.
  • ED identifier
  • each of the one or more routers may store an indication of which downstream branch each such SYN message is received from by that router. It should be noted that where there is more than one router, the tree-like topography may result in one or more instances of one router being downstream from another such that the upstream one of those two routers may receive multiple ones of such SYN messages from the downstream one of those two routers. In other embodiments, either in addition to or as an alternative to storing indications of which downstream branch each SYN message is received from, the one or more routers may cooperate to store indications of which client device each such SYN message is received from.
  • the server may compare the identifier of the client device to a set of identifiers to determine whether the client device from which that SYN message is received is to receive the data in the multicast session. If not, then the server may simply ignore that SYN message. However, if the client device from which that SYN message is received is to so receive the data in that multicast session, then the server may be caused to transmit an ACK message downstream back to that client device in a unicast transmission to acknowledge receipt of that SYN message.
  • the ACK message may include an
  • acknowledgement number generated by incrementing the sequence number of that SYN message by a value of 1 to provide an indication to that client device that the ACK message is in response to that SYN message.
  • the ACK message may not include a corresponding return SYN message from the server to that client device that may otherwise be so included if that SYN message received from that client device was part of requesting participation in a unicast session with the server, instead of the multicast session.
  • the server may be caused by the multicast transmission routine to track the SYN messages received from each client device of the group of client devices and the ACK messages transmitted in response to those SYN messages to determine when all of such SYN messages that were expected to be received from all of the client devices of the group have been received and have been responded to with ACK messages as part of determining when and/or whether to proceed further in opening the multicast session.
  • the server may transmit a single multicast SYN message downstream toward all of the client devices of the group of client devices that are to participate in the multicast session.
  • This single multicast SYN message may include an identifier of the server and/or the identifier of the multicast session.
  • this single multicast SYN message may include a sequence number randomly generated by the server such that is has no relation to any of the sequence numbers in any of the SYN messages transmitted by the client devices of the group of client devices to request to participate in the multicast session.
  • each of the one or more routers may use the identifier of the multicast session included within the single multicast SYN message to correlate the single multicast SYN message to earlier stored indications of which downstream branches to which that router is coupled are the downstream branches from which the earlier upstream SYN messages were received. The one or more routers may then limit their forwarding of that single multicast SYN message to only the downstream branches from which one or more of those earlier upstream SYN messages were received.
  • each of the client devices of the group of client devices may to transmit an ACK message upstream back towards the server to acknowledge receipt of the single multicast SYN message from the server.
  • Each such ACK message may be transmitted by one of the client devices as a unicast transmission, and each such ACK message may include an identifier of the client device that transmits that ACK message and the identifier of the multicast session.
  • each such ACK message may include an acknowledgement number generated by incrementing the sequence number of the single multicast SYN message from the server by a value of 1 to provide an indication that the ACK message is in response to that single multicast SYN message.
  • the one or more routers may cooperate to aggregate these ACK messages received from the client devices of the group of client devices in response to the single multicast SYN message, instead of forwarding each of these individual ACK messages upstream to the server. More specifically, the one or more routers may cooperate to wait until all of these individual ACK messages have been received, and then transmit a single aggregate ACK message upstream to the server. The one or more routers may be triggered to so aggregate these individual ACK messages received from the client devices of the group of client devices by the identifier of the multicast session included within each of these individual ACK messages.
  • each of these individual ACK messages may include an acknowledgement number generated by incrementing the sequence number of the single multicast SYN message by a value of 1, all of these individual ACK messages may have the same acknowledgement number.
  • the aggregate ACK message that each of the one or more routers may generate may include a device ID of that router.
  • the single aggregate ACK message that is directly transmitted to the server by the router that is most directly coupled to the server may include the device ID of that router.
  • all of the client devices of the group of client devices received the single multicast SYN message, then all of those client devices may transmit one of the individual ACK messages upstream towards the one or more routers, and the server may receive the single aggregate ACK message from the one or more routers in response to the single multicast SYN message. With the receipt of the single aggregate ACK message by the server, the multicast session is open. The server may then transmit the data downstream toward the client devices of the group of client devices in one or more multicast messages.
  • each of the client devices may respond to receiving the downstream multicast messages from the server in which the data is transferred by transmitting one or more further individual ACK messages upstream.
  • the one or more routers may aggregate the ACK messages transmitted by the client devices in response to receiving the downstream multicast messages from the server in which the data is transferred.
  • the server may not receive one of the expected aggregate ACK message from the one or more routers such that a timeout for receiving that aggregate ACK message occurs at the server.
  • a lack of reception of one of the messages transferring the data may result in the server receiving multiple ACK messages that include the same acknowledgement number.
  • the server may retransmit the single multicast SYN message, or may retransmit one or more of the messages transferring the data downstream toward the client devices.
  • Each of the one or more routers may have earlier identified any downstream branch to which it is directly coupled and from which an ACK message was expected to be received, but from which an ACK message was not received.
  • Each of the one or more routers each that has identified such a downstream branch may limit its forwarding of the one or more retransmitted messages to such a downstream branch. In this way, such retransmissions are not caused to occupy bandwidth through more of the branches of the tree-like topography than are necessary to the address errors that triggered such
  • FIGS. 1A and IB each illustrate a block diagram of an embodiment of a
  • the communications system 1000 including a network 999 through which packets of data may be exchanged among client devices 100, one or more routers 300 and a server 500.
  • the network 999 may have a tree-like topography in which the server 500 is at the root, the one or more routers 300 define the points at which branching occurs, and each client device 100 is at an endpoint of a branch.
  • the server 500 may be coupled to a router 300 via a root segment 599 of the network 999, and each of the client devices 100 may be coupled to a router 300 via an endpoint segment 199 of the network 999.
  • FIG. IB where there may be more than one router 300, those multiple routers 300 may be coupled to each other via one or more intermediate segments 399.
  • the root location of the server 500 in the tree-like topography of the network 999 may be deemed to be
  • the network 999 may be a packetized network in which the client devices 100, the one or more routers 300 and the server 500 exchange sets of packets therethrough to convey any of a variety of types of data, including and not limited to, voice and/or non-voice audio, still images, motion video, documents, etc. Additionally, each piece of data, regardless of its type, may be any of a variety of sizes as measured in bits, bytes, words, doublewords, quad words, etc.
  • the network 999 may include wired and/or wireless portions by which the sets of packets are conveyed therethrough.
  • FIG.2 illustrates aspects of the operation of the devices 100, 300 and 500 of the communications system 1000 in greater detail. More specifically, FIG. 2 illustrates aspects of the interaction among the devices 100, 300 and 500 to open a multicast session in which the server 500 transmits data 530 in one or more downstream multicast transmissions through the one or more routers 300, and onward to the client devices 100.
  • the server 500 may incorporate one or more of a processor component 550, a storage 560, and a network interface 590 to couple the server to the root segment 599 of the network 999.
  • the storage 560 may store a control routine 540, a unicast routine 541 and/or a multicast transmission routine 545.
  • the control routine 540, the unicast routine 541 and/or the multicast transmission routine 545 may each incorporate a sequence of instructions operative on the processor component 550 to implement logic to perform various functions.
  • the processor component 550 may be caused to cooperate with the client devices 100 to open a multicast session between the server 500 and the client devices 100, as well as through the one or more routers 300, to transmit the data 530 from the server 500 downstream to the client devices 100 in one or more multicast transmissions in which the server 500 receives one or more aggregate ACK messages that serve to confirm reception thereof by the client devices 100.
  • each of the client devices 100 may incorporate one or more of a processor component ISO, a storage 160, and a network interface 190 to couple that client device 100 to an endpoint segment 199 of the network 999.
  • the storage 160 may store a control routine 140, a unicast routine 141 and/or a multicast reception routine 145.
  • the control routine 140, the unicast routine 141 and/or the multicast reception routine 145 may each incorporate a sequence of instructions operative on the processor component 150 to implement logic to perform various functions.
  • the processor component 150 of each of the client devices 100 may be caused to cooperate with the server 500 to open the multicast session with the server 500 to receive the data 530 from the server 500 from the one or more multicast transmissions, and to provide confirmation of reception thereof by transmitting one or more individual ACK messages upstream toward the server 500.
  • each of die one or more routers 300 may incorporate one or more of a processor component 350 and/or a storage 360.
  • Each of the routers 300 may also incorporate one or more network interfaces 390 to couple that router to the root segment 599 and/or to one or more endpoint segments 199 of die network 999.
  • the one or more network interfaces 390 may alternatively or additionally couple that router to one or more intermediate segments 399 (depicted in FIG. IB).
  • the storage 360 may store a control routine 340, a unicast routine 341 and/or a multicast relay routine 345.
  • the control routine 340, the unicast routine 341 and/or the multicast relay routine 345 may each incorporate a sequence of instructions operative on the processor component 350 to implement logic to perform various functions.
  • the processor component 350 of each of the one or more routers 300 may be caused to track SYN and ACK messages associated with opening the multicast session and/or with the downstream transmission of the data 530 by the server 500 in one or more multicast transmissions.
  • the processor component 350 of each of the one or more routers 300 may aggregate ACK messages transmitted upstream by at least a subset of the client devices 100 and/or other router(s) 300, and may transmit an aggregate ACK message upstream toward the server 500 as part of reducing the overall amount of traffic occurring on the network 999 as part of the multicast session.
  • FIGS.3A-C each illustrate a block diagram of a portion of an embodiment of the communications system 1000 of either of FIGS. 1 A or IB in greater detail. More specifically, FIG.3A depicts aspects of the operating environment of an example embodiment of one of the client devices 100 in which the processor component ISO, in executing at least the multicast reception routine 14S, cooperates with the server 500 to open a multicast session by which the server 500 may transmit the data 530 to the client device 100 via the network in one or more multicast messages.
  • the processor component ISO in executing at least the multicast reception routine 14S
  • FIG.3B depicts aspects of the operating environment of an example embodiment of one of the routers 300 in which the processor component 350, in executing at least the multicast relay routine 345, supports the opening and use of the multicast session between the server 500 and the client devices 100 to so transmit the data 530.
  • FIG.3C depicts aspects of the operating environment of an example embodiment of the server 500 in which the processor component 550, in executing at least the multicast transmission routine 545, so cooperates with the client devices to open the multicast session by which the server 500 may so transmit the data 530 to the client devices 100.
  • routines 140, 141, 145, 340, 341, 345, 540, 541 and 545 are selected to be operative on whatever type of processor or processors that may be selected to implement applicable ones of the processor components 150, 350 or 550.
  • each of the control routines 140, 340 and 540 may include one or more of an operating system, device drivers, virtual machine (VM) management routines and/or application-level routines (e.g., so-called "software suites” provided on disc media, "applets” obtained from a remote server, etc.).
  • VM management routines may be any of a variety of available operating systems, VM management routines or combinations thereof appropriate for whatever corresponding ones of the processor components 150, 350 or 550.
  • those device drivers may provide support for any of a variety of other components, whether hardware or software components, of corresponding ones of the devices 100, 300 or 500.
  • the control routines 140, 340 or 540 may include a communications component 149, 349 or 549, respectively, executable by whatever corresponding ones of the processor components 150, 350 or 550 to operate corresponding ones of the network interfaces 190, 390 or 590 to transmit and receive signals via the network 999 as has been described.
  • signals may be signals conveying the SYN and/or ACK messages, and/or messages conveying the data 530 among one or more of the devices 100, 300 and/or 500.
  • each of these communications components is selected to be operable with whatever type of interface technology is selected to implement corresponding ones of the network interfaces 190, 390 or 590.
  • the unicast routines 141, 341 and/or 541 may each be any of a variety of routines that initiate and/or perform communications through the network 999 in unicast sessions in which a single device is the intended recipient of data transmitted by another device, instead of multiple devices being the intended recipient as is the case in a multicast session.
  • the server 500 may do so in a unicast session in which the unicast routines 141 and 541 cooperate to open the unicast session and then control that transfer of the data 530 in one or more unicast messages.
  • the unicast routine 341 within at least one of the one or more routers 300 may forward the one or more unicast messages of the server toward the one client device 100.
  • the communications components 149, 349 and/or 549 may distinguish between messages associated with unicast sessions and messages associated with multicast sessions.
  • Messages received via the network interfaces 190, 390 and/or 590 that are associated with unicast sessions may be conveyed by corresponding ones of the communications components 149, 349 and/or 549 to corresponding ones of the unicast routines 141, 341 and/or 541.
  • messages received via the network interfaces 190, 390 and/or 590 that are associated with multicast sessions may be conveyed by corresponding ones of the communications components 149, 349 and/or 549 to corresponding ones of the multicast reception routine 145, the multicast relay routine 345 and/or the multicast transmission routine 545.
  • routines 141, 145, 341, 345, 541 and 545 may be executed by corresponding ones of the processor components 150, 350 and 550 in separate VMs that are instantiated and/or maintained by such VM management routines.
  • one or more of the communications components 149, 349 and 549 may so distinguish between and convey unicast and multicast messages as part of serving as virtual routers within corresponding ones of the devices 100, 300 and 500.
  • the multicast reception routine 145 may incorporate a SYN transmit component 1453 executable by the processor component 150 to cooperate with the server 500 to begin the opening of a multicast session therebetween in which the server 500 is to transmit the data 530 to a group of the client devices 100 (including the client device 100 of FIG. 3A) in one or more multicast messages.
  • the SYN transmit component 1453 may cooperate with the communications component 149 to operate the network interface 190 to transmit a unicast SYN message upstream toward the server 500 on its endpoint segment 199.
  • That upstream unicast SYN message may include a device identifier of the client device 100, a sequence number randomly generated by the SYN transmit component 1453 (or elsewhere within the client device 100), and a multicast session identifier that identifies the particular multicast session in which the data 530 is to be so transmitted by the server 500 (thereby distinguishing this particular multicast session from others).
  • the multicast identifier may include an IF addresses designated for use with a multicast session, a port number within a range of port numbers designated for use with a multicast session, or a combination of both.
  • all of the other client devices 100 of the group of client devices 100 that are to participate in the multicast session may each similarly transmit such a unicast SYN message upstream towards the server 500 on their corresponding endpoint segments 199.
  • all of such upstream unicast SYN messages transmitted by each of the client devices 100 of the group of client devices (including the client device 100 of FIG. 3A) towards the server 500 may pass through one or more of the routers 300.
  • the multicast relay routine 345 may incorporate a session component 3453 executable by the processor component 350 to enable the server 500 and the group of client devices 100 (including the client device 100 of FIG. 3A) to cooperate to open the multicast session therebetween and through the one or more routers 300 (including the router 300 of FIG. 3B).
  • the session component 3453 may cooperate with the communications component 349 to operate the network interface 390 to receive one or more of the upstream unicast SYN messages transmitted by at least a subset of the client devices 100 of the group of client devices 100 (including the client device 100 of FIG. 3A) upstream toward the server 500.
  • the session component 3453 may store an indication of the multicast session identifier in a session entry 333 of the multicast tracking data 335, along with indications of the quantity of such upstream unicast SYN messages that are received from each downstream endpoint segment 199 and/or downstream intermediate segment 399 to which the router 300 is connected. It should be noted that where there is more than one of the routers 300, multiple ones of the upstream unicast SYN messages may be received through a single intermediate segment 399 that couples the router 300 of FIG. 3B to another one of the routers 300 that is downstream from the router 300 of FIG. 3B.
  • the session component 3453 may store indications of the device identifiers of each of the client devices 100 from which one of the upstream unicast SYN messages is received correlated to which downstream endpoint segment 199 and/or downstream intermediate segment 399 that the router 300 is coupled to and from which each such upstream unicast SYN message was received. In addition to storing such information about each such upstream unicast SYN message that is received, the session component 3453 may cooperate with the communications component 349 to operate the network interface 390 to forward each of those received upstream unicast SYN messages further upstream towards the server 500.
  • the multicast transmission routine 545 may incorporate a SYN receive component 5453 executable by the processor component 550 to cooperate with the group of client devices 100 (including the client device 100 of FIG. 3A) to open the multicast session therebetween.
  • the SYN receive component 5453 may cooperate with the
  • the communications component 549 to operate the network interface 590 to receive one or more of the upstream unicast SYN messages transmitted by the group of client devices 100 (including the client device 100 of FIG. 3 A) through the one or more routers 300 and the root segment 599.
  • the SYN receive component 5453 may store an indication of the device identifier of the one of the client devices 100 that transmitted it in a session entry 533 within a portion of the multicast tracking data 535 in which the SYN receive component 5453 may also store an indication of the multicast session identifier.
  • the SYN receive component 5453 may cooperate with the communications component 549 to operate the network interface 590 to transmit a unicast ACK message downstream toward each one of the client devices 100 from which each such upstream unicast SYN message is received.
  • Each such downstream unicast ACK message may include a device identifier of the server 500 and the multicast session identifier.
  • Each such downstream unicast ACK message may also include an acknowledgement number generated by the SYN receive component 5453 (or elsewhere within the server 500) by adding the value of 1 to the sequence number in the upstream unicast SYN message being responded to with that downstream unicast ACK message.
  • each of these downstream unicast ACK messages transmitted by the server 500 in response the receipt of one of the upstream unicast SYN messages transmitted by one of the client devices to request to participate in the multicast session may not be accompanied by a unicast SYN message. Instead, and as will shortly be explained, these individual unicast SYN messages that might otherwise accompany the downstream unicast ACK messages are replaced by a single downstream multicast SYN message.
  • the multicast relay routine 345 may incorporate a relay component 3454 executable by the processor component 350 to forward at least a subset of the downstream unicast ACK messages transmitted by the server 500 further downstream towards at least a subset of the client devices 100 of the group of client devices 100. More precisely, the relay component 3454 may cooperate with the communications component 349 to operate the network interface 390 to receive one or more of the unicast ACK messages transmitted downstream by the server 500 toward the group of client devices 100 (including the client device 100 of FIG. 3A). Again, where there are more than one of the routers 300, the router 300 of FIG. 3B may receive only a subset of these downstream unicast ACK messages.
  • the relay component 3454 may then cooperate with the communications component 349 to operate the network interface 390 to relay each of the downstream unicast ACK messages received by the router 300 of FIG. 3B further downstream on an endpoint segment 199 or an intermediate segment 399 to which the router 300 of FIG. 3B may be coupled, and towards the ones of the client devices 100 for which each of these downstream unicast ACK messages is intended.
  • the SYN transmit component 1453 may monitor the amount of time that elapses from the transmission of an upstream unicast SYN message to the server 500 to when the downstream unicast ACK message expected from the server 500 in response is actually received. If a predetermined amount of time so elapses without that ACK message having been received, then the SYN transmit component 1453 may determine that a timeout error has occurred. In response to such a timeout error, the SYN transmit component 1453 may retransmit that upstream unicast SYN message to the server 500 to again request to participate in the multicast session to receive the data 530.
  • FIG.4A depicts, in more detail, such transmissions of upstream unicast SYN messages by three client devices 100a, 100b and 100c through the network 999, followed by such transmissions of downstream unicast ACK messages by the server 500 through the network 999 as part of opening the multicast session in which the server is to transmit the data 530 to three of the client devices 100 (each separately designated as 100a, 100b and 100c) in one or more multicast transmission. Also depicted are indications of operating states of the client device 100a and of the server 500 associated with the exchanges of these messages. However, for the sake of reducing visual clutter, operating states of the client devices 100b and 100c, which resemble those of the client device 100a, are not shown. As depicted in FIG.
  • each of the client devices lOOa-c and the server 500 may be operating in a state in which the multicast session is "closed” such that the client devices lOOa-c and the server 500 are not yet prepared to engage in the multicast transmission of the data 530 from the server 500 to the client devices lOOa-c. Then, the server 500 transitions from its session closed state to a "listen" state in which the server 500 is to await receipt of the upstream unicast SYN messages from each of the client devices lOOa-c. Separately, each of the client devices lOOa-c transmits its upstream unicast SYN message toward the server 500 to request to participate in the multicast session.
  • each of the upstream unicast SYN messages may include the device ID of the one of the client devices lOOa-c that transmitted it, a sequence number randomly generated by that one of the client devices lOOa-c, and/or the multicast session ID for the multicast session.
  • each such upstream unicast SYN message passes upstream through a router 300 interposed between the client devices lOOa-c and the server 500, the router 300 forwards it upstream toward the server 500.
  • the router 300 may track each such upstream unicast SYN message by storing an indication of the multicast session identifier along with a count of upstream unicast SYN messages received from each downstream segment of the network 999 (e.g., each downstream endpoint segment 199 and/or downstream intermediate segment 399) to which the router 300 is coupled.
  • the router 300 may store an indication of the device identifier of each one of the client devices 100a-c from which the router 300 receives one of the upstream unicast SYN messages.
  • the server 500 receives each of these upstream unicast SYN messages and separately responds to each by transmitting a downstream unicast ACK message.
  • each of the downstream unicast ACK messages may include the device ID of the server 500, an acknowledgement number generated by incrementing the sequence number of the corresponding upstream unicast SYN message by the value of 1 , and/or the multicast session ED for the multicast session.
  • the server 500 transitions among multiple "SYN round" states as it receives and responds to each of these upstream unicast SYN messages.
  • the server 500 may have received and responded to all of the upstream unicast SYN messages that the server 500 is expecting, and may transition to a "SYN received" state in which the server 500 ceases to listen for any more of such upstream unicast SYN messages requesting participation in the multicast session.
  • the multicast transmission routine 545 may incorporate a SYN transmit component 5454 executable by the processor component 550 to engage in further cooperation with the group of client devices 100 (including the client device 100 of FIG. 3A) to open the multicast session therebetween.
  • the downstream unicast ACK messages individually transmitted in response to each upstream unicast SYN message received from the group of client devices 100 that are to participate in the multicast session may not be accompanied by a SYN message.
  • the transmitting of any SYN message to the group of client devices 100 may be delayed until all of the upstream unicast SYN messages expected to be received from the group of client devices 100 have actually been received at the server 500, and then a single downstream multicast SYN message may be transmitted to the group of client devices 100 by the server 500.
  • the session entry 533 for the multicast session in which the data 530 is to be transmitted to the group of client devices 100 may have been generated earlier with a list of the device identifiers of the particular client devices 100 that are the members of the group of client devices 100.
  • the SYN transmit component 5454 may be able to determine when all of the upstream unicast SYN messages that are expected to be received have actually been received at the server 500 by comparing the device identifiers in each of those upstream unicast SYN messages to the list of device identifiers in the session entry 533.
  • other criteria may be used to determine when all of the upstream unicast SYN messages that are expected to be received have actually been received, such as a cutoff time by which any such upstream unicast SYN messages are expected to be received, and/or a maximum quantity of upstream unicast SYN messages that may be received before no more upstream unicast SYN messages will be accepted. It may be deemed desirable to employ such other criteria where the multicast transmission of the data S30 is required to begin at or no later than a predetermined time, and/or where there is a reason to impose an upper limit on the quantity of the client devices 100 to which the data 530 may be transmitted in the multicast session (e.g., a licensing limitation, etc.).
  • the SYN transmit component 5454 may cooperate with the communications component 549 to operate the network interface 590 to transmit the single multicast SYN message downstream on the root segment 599 toward the group of client devices 100 (including the client device 100 of FIG. 3A).
  • This downstream multicast SYN message may include the device identifier of the server 500 and the multicast session identifier.
  • the downstream multicast SYN message may also include a sequence number randomly generated by the SYN transmit component 5454 (or elsewhere within the server 500) such that it is in no way related to any of the sequence numbers in any of the upstream unicast SYN messages received at the server 500 from the group of client devices 100.
  • the relay component 3454 may cooperate with the
  • the communications component 349 to operate the network interface 390 to receive the multicast SYN message transmitted downstream by the server 500 toward the group of client devices 100 (including the client device 100 of FIG. 3A).
  • the relay component 3454 may then cooperate with the communications component 349 to operate the network interface 390 to forward the multicast SYN message further downstream.
  • the relay component 3545 may limit such the forwarding of the downstream multicast SYN message to only downstream endpoint segments) 199 and/or downstream intermediate segments) 399 to which the router 300 of FIG. 3B is coupled, and from which die router 300 of FIG. 3B earlier received at least one of the upstream unicast SYN messages.
  • the multicast reception routine 145 may incorporate a SYN receive component 1454 executable by the processor component 150 to further cooperate with the server 500 to open the multicast session therebetween. More specifically, the SYN receive component 1454 may cooperate with the communications component 149 to operate the network interface 190 to receive the downstream multicast SYN message transmitted downstream by the server 500 toward the group of client devices 100 (including the client device 100 of FIG. 3A). Upon receiving the downstream multicast SYN message, the SYN receive component 1454 may cooperate with the communications component 149 to operate the network interface 190 to transmit a unicast ACK message upstream toward the server 500.
  • the upstream unicast ACK message may include a device identifier of the client device 100 and the multicast session identifier.
  • the upstream unicast ACK message may also include an acknowledgement number generated by the SYN receive component 1454 (or elsewhere within the client device 100) by incrementing the sequence number of the downstream multicast SYN message by the value of 1.
  • the multicast relay routine 345 may incorporate an aggregation component 3456 executable by the processor component 350 to aggregate upstream unicast ACK messages transmitted by at least a subset of the client devices 100 of the group of client devices 100 (including the client device 100 of FIG. 3A), and to transmit a single aggregate unicast ACK message upstream toward the server 500 to reduce overall network traffic on the network 999.
  • the router 300 of FIG. 3B may receive only a subset of these upstream unicast ACK messages.
  • the aggregation component 3456 may cooperate with the communications component 349 to operate the network interface 390 to receive one or more of the upstream unicast ACK messages transmitted by at least a subset of the client devices 100 of the group of client devices 100 (including the client device 100 of FIG. 3A) upstream toward the server 500.
  • the aggregation component 3456 may retrieve, from the session entry 333 associated with the multicast session, indications of quantities of upstream unicast SYN messages that the router 300 of FIG. 3B had earlier received from each downstream endpoint segment 199 and/or downstream intermediate segment 399 to which the router 300 of FIG. 3B is coupled.
  • the aggregation component 3456 may so retrieve identifiers of client devices 100 from which the router 300 of FIG.
  • the aggregation component 3456 may then use such indications of quantities and/or indications of identifiers to determine whether the router 300 of FIG. 3B has received all of the upstream unicast ACK messages that it should from whichever one(s) of the client devices 100 of the group of client devices 100 that are downstream from the router 300 of FIG. 3B. In response to determining that the router 300 of FIG. 3B has received all expected upstream unicast ACK messages, the aggregation component 3456 may then cooperate with the communications component 349 to operate the network interface 390 to transmit a single aggregate unicast ACK message upstream towards the server 500.
  • the SYN transmit component 5454 may cooperate with the communications component 549 to operate the network interface 590 to receive a single aggregate unicast ACK message transmitted upstream by whichever router 300 of the one or more routers 300 that is furthest upstream so as to be coupled to the root segment 599.
  • at least one router 300 may receive an aggregate unicast ACK message transmitted upstream by another router 300 that is further downstream via an intermediate segment 399 extending therebetween, and may itself aggregate that aggregate unicast ACK message in much the same was as it would an upstream unicast ACK message received directly from a client device 100.
  • the reception at the server 500 of a single aggregate unicast ACK message via the root segment 599 signifies that the multicast session by which the server 500 is to transmit the data 530 to the group of client devices 100 in one or more multicast transmissions is open. Stated differently, such receipt of a single aggregate unicast ACK message provides the SYN transmit component 5454 with confirmation that the group of client devices 100 are ready to receive the one or more multicast transmissions by which the data 530 is to be transmitted to them by the server 500.
  • FIG.4B depicts, in more detail, such transmissions of the downstream multicast SYN message by the server 500 through the network 999, followed by such transmissions of upstream unicast ACK messages by the client devices lOOa-c and the corresponding transmission of the upstream aggregate ACK message to the server 500 by the router 300 through the network 999.
  • operating states of the client device 100a and of the server 500 associated with the exchanges of these messages are depicted, but not operating states of the client devices 100b and 100c for the sake of reducing visual clutter.
  • the server 500 transmits its multicast SYN message downstream toward the client devices lOOa-c.
  • the downstream multicast SYN message may include the device ID of the server 500, a sequence number randomly generated by the server 500, and/or the multicast session ED for the multicast session.
  • the router 300 may forward the downstream multicast SYN message further downstream to each of the client devices lOOa-c. Again, in so doing, the router 300 may limit its forwarding of the downstream multicast SYN message to only the downstream endpoint segment(s) 199 and/or the intermediate segment(s) 399 that are coupled to the router 300 and from which the router 300 earlier received one or more of the upstream unicast SYN messages. As also depicted, each of the client devices lOOa-c receives a forwarded form of the downstream multicast SYN message and each separately responds by transmitting an upstream unicast ACK message towards the server 500.
  • each of these upstream unicast ACK messages may include the device ID of the one of the client devices lOOa-c that transmits it, an acknowledgement number generated by incrementing the sequence number of the downstream multicast SYN message by the value of 1, and/or the multicast session ID for the multicast session.
  • the client device 100a transitions to a state in which the multicast session by which the client device 100a is to receive the data 530 in one or more multicast transmissions is now open inasmuch as the client device 100a is now prepared to so receive the data 530.
  • the router 300 may aggregate these three upstream unicast ACK messages and may transmit a single aggregate unicast ACK message further upstream toward the server 500 upon receiving all three of these upstream unicast ACK messages. Stated differently, where these three upstream unicast ACK messages are, together, all of the upstream unicast ACK messages that the router 300 expected to receive, the router 300 may condition the transmission of a single aggregate upstream ACK message toward the server on a determination that all expected upstream unicast ACK messages have been received as a result of receiving these three messages from the client devices lOOa-c.
  • the router 300 may retrieve the previously stored indications of the quantities of the upstream unicast SYN messages that the router 300 earlier received from each of the downstream network segments 199 and/or 399 to which the router 300 is coupled. Alternatively or additionally, the router may retrieve previously stored indications of which client devices lOOa-c had earlier transmitted one of the upstream unicast SYN messages that were earlier received by the router 300.
  • the reception at the server 500 of the single aggregate unicast ACK message transmitted by the router 300 signifies that the multicast session by which the server 500 is to transmit the data 530 to the client devices lOOa-c in one or more multicast messages is open.
  • the server 500 in response to the receipt of this single aggregate unicast ACK message, the server 500 also transitions to a state in which the multicast session by which the server 500 transmits the data 530 to the client devices lOOa-c in one or more multicast messages is now open inasmuch as all three of the client devices lOOa-c are confirmed to be prepared to so receive the data 530.
  • the multicast transmission routine 545 may incorporate a transmission component 5455 executable by the processor component 550 to transfer the data 530 to multiple client devices 100 in one or more multicast messages during the multicast session.
  • the transmission component 5455 may cooperate with the communications component 549 to operate the network interface 590 to transmit the data 530 downstream in one or more multicast data messages toward the group of client devices 100 (including the client device 100 of FIG. 3 A).
  • each of the one or more downstream multicast data messages may include the device identifier of the server 500 and the multicast session identifier.
  • each such downstream multicast data message may also include a sequence number generated by the transmission component 5455 (or elsewhere within the server 500) to provide an indication of the quantity of bytes of the data 530 that have been already been transmitted.
  • the first multicast data message to transfer the data 530 to the group of client devices 100 may include a sequence number generated by incrementing the sequence number of the earlier transmitted downstream multicast SYN message by the value of 1.
  • Any subsequent multicast data message to so transfer the data 530 may include a sequence number generated by incrementing the sequence number of the preceding multicast data message by the quantity of bytes of the data 530 that were transferred in that preceding multicast data message.
  • the relay component 3454 may cooperate with the
  • the communications component 349 to operate the network interface 390 to receive the one or more multicast data messages transmitted downstream by the server 500 toward the group of client devices 100 (including the client device 100 of FIG. 3A).
  • the relay component 3454 may then cooperate with the communications component 349 to operate the network interface 390 to forward the one or more multicast data messages further downstream in a manner not unlike that in which the single downstream multicast SYN message was forwarded.
  • the multicast reception routine 145 may incorporate a reception component 1455 executable by the processor component 150 to receive the data 530 in one or more multicast data messages during the multicast session therebetween.
  • the reception component 1455 may cooperate with the communications component 149 to operate the network interface 190 to receive the one or more downstream multicast data messages transmitted downstream by the server 500 toward the group of client devices 100 (including the client device 100 of FIG. 3 A).
  • the reception component 1455 may cooperate with the communications component 149 to operate the network interface 190 to transmit a unicast ACK message upstream toward the server 500.
  • the upstream unicast ACK message may include a device identifier of the client device 100 and the multicast session identifier.
  • the upstream unicast ACK message may include an acknowledgement number generated by the reception component 14SS (or elsewhere within the client device 100) by first identifying the one of the data messages among those that have been received so far that is last in order, and by then incrementing the sequence number of that last in order data message by the quantity of bytes of the data 530 that it contains.
  • this upstream unicast ACK message transmitted in response to the one or more downstream multicast data messages may then be forwarded through the router 300 and upstream to the server 500 in much the same manner as was the earlier upstream unicast ACK message transmitted in response to the downstream multicast SYN message.
  • the server 500 may, depending on the amount of data 530 that may remain, transmit still more downstream multicast data messages, or transmit one or more messages downstream toward the group of client devices 100 indicating that the multicast session is now closed.
  • FIG.5 depicts, in more detail, such transmissions of die one or more downstream multicast data messages by the server 500 through the network 999, followed by such transmissions of upstream unicast ACK messages by the client devices lOOa-c and the corresponding transmission of the upstream aggregate ACK message to the server 500 by the router 300 through the network 999.
  • operating states of the client device 100a and of the server 500 associated with the exchanges of these messages are depicted, but not operating states of the client devices 100b and 100c for the sake of reducing visual clutter.
  • each of the one or more downstream multicast data messages may include the device ID of the server 500 and/or the multicast session ED for the multicast session.
  • each of the one or more downstream multicast data messages may include a sequence number generated in a manner that is initially based on the sequence number of the downstream multicast SYN message, and that is incremented by an amount indicative of die quantity of bytes of the data 530 that have been already transferred in any preceding downstream multicast data messages.
  • the router 300 may forward the one or more downstream multicast data messages further downstream to each of the client devices lOOa-c in much the same manner as the earlier downstream multicast SYN message was forwarded.
  • each of the client devices lOOa-c receives a forwarded form of the one or more downstream multicast data messages and each separately responds by transmitting an upstream unicast ACK message towards the server 500.
  • each of these upstream unicast ACK messages may include the device ID of the one of the client devices lOOa-c that transmits it, and/or the multicast session ID for the multicast session.
  • each such unicast ACK message may include an acknowledgement number generated by first identifying the one of the data messages among those that have been received so far that is last in order, and by men incrementing the sequence number of that last in order data message by the quantity of bytes of the data 530 that it contains.
  • the router 300 may aggregate these three upstream unicast ACK messages and may transmit a single aggregate unicast ACK message further upstream toward the server 500 in much the same manner as the earlier upstream unicast ACK messages transmitted by each of the client devices lOOa-c in response to receiving the downstream multicast SYN message.
  • the reception at the server 500 of the single aggregate unicast ACK message transmitted by the router 300 signifies that the one or more downstream multicast data messages conveying the data 530 were successfully received by the client devices lOOa-c.
  • the aggregation component 3456 may not proceed with cooperating with the communications component 349 to operate the network interface 390 to transmit an aggregate unicast ACK message upstream towards the server 500. As a result, no aggregate unicast ACK message may be received at the server 500.
  • the multicast transmission routine 545 may incorporate a retransmission component S456 executable by the processor component 550 to cause a retransmission of either the downstream multicast SYN message transmitted to open the multicast session or the one or more downstream multicast data messages to transfer the data 530 to multiple client devices 100 during the multicast session.
  • the retransmission component 5456 may cooperate with the communications component 549 to operate the network interface 590 to retransmit either the downstream multicast SYN message or the one or more downstream multicast data messages toward the group of client devices 100 (including the client device 100 of FIG. 3 A).
  • the relay component 3454 may cooperate with the
  • the communications component 349 to operate the network interface 390 to receive the retransmitted downstream multicast SYN message or the retransmitted one or more downstream multicast data messages from the server 500.
  • the relay component 3454 may then cooperate with the communications component 349 to operate the network interface 390 to forward the retransmitted downstream multicast SYN message or to forward the retransmitted one or more downstream multicast data messages.
  • the multicast relay routine 345 may incorporate a filter component 3455 executable by the processor component 350 to cooperate with the relay component 3554 to limit such downstream forwarding of such retransmitted downstream messages to only downstream endpoint segments) 199 and/or downstream intermediate segments) 399 to which the router 300 of FIG. 3B is coupled, and from which the router 300 of FIG. 3B earlier received at least one of the upstream unicast SYN messages, but from which the router 300 of FIG. 3B did not receive an upstream unicast ACK message, thereby leading to such retransmission.
  • a filter component 3455 executable by the processor component 350 to cooperate with the relay component 3554 to limit such downstream forwarding of such retransmitted downstream messages to only downstream endpoint segments) 199 and/or downstream intermediate segments) 399 to which the router 300 of FIG. 3B is coupled, and from which the router 300 of FIG. 3B earlier received at least one of the upstream unicast SYN messages, but from which the router 300 of FIG. 3B did not receive an upstream unicast
  • the filter component 3455 may identify these particular downstream segments 199 and/or 399 by referring to the indications of which downstream segments 199 and/or 399 are the one(s) from which upstream unicast SYN messages were earlier received in the session entry 333 for this multicast session.
  • the device that receives this discontiguous set may repeated transmit unicast ACK messages upstream toward the server 500 in which the acknowledgement number never increases beyond a value that reflects the quantity of bytes of the data 530 that were received up to die discontinuity in the set of data messages.
  • the retransmission component 5456 may cooperate with the communications component 549 to operate the network interface 590 to retransmit at least the one of the data messages that was not received, using the unchanging acknowledgement number of those multiple upstream unicast ACK messages as an indicator of which of the data messages is the one that was not received.
  • the filer component 3455 may have also identified this error condition based on the same multiple upstream unicast ACK messages with an unchanging acknowledgement number, and may have stored an indication of which downstream segment 199 or 399 those multiple upstream unicast ACK messages were received from.
  • the filter component 3455 may cooperate with the relay component to cause forwarding of the retransmitted one or more data messages only through that identified downstream segment. Again, in this way unnecessary consumption of network bandwidth on others of the downstream segments 199 and/or 399 to which the router 300 of FIG. 3B is coupled is avoided.
  • the processor components 450 and/or 550 may include any of a wide variety of commercially available processors. Further, one or more of these processor components may include multiple processors, a multi-threaded processor, a multi-core processor (whether the multiple cores coexist on the same or separate dies), and/or a multi-processor architecture of some other variety by which multiple physically separate processors are in some way linked.
  • the storage 560 may be based on any of a wide variety of information storage technologies, possibly including volatile technologies requiring the uninterrupted provision of electric power, and possibly including technologies entailing the use of machine-readable storage media that may or may not be removable.
  • each of these storages may include any of a wide variety of types (or combination of types) of storage device, including without limitation, read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM (DDR-DRAM), synchronous DRAM
  • SDRAM static RAM
  • SRAM static RAM
  • PROM programmable ROM
  • EPROM erasable programmable ROM
  • EEPROM electrically erasable programmable ROM
  • flash memory polymer memory (e.g., ferroelectric polymer memory), ovonic memory, phase change or ferroelectric memory, siUcon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, one or more individual ferromagnetic disk drives, or a plurality of storage devices organized into one or more arrays (e.g., multiple ferromagnetic disk drives organized into a Redundant Array of Independent Disks array, or RAID array).
  • polymer memory e.g., ferroelectric polymer memory
  • ovonic memory phase change or ferroelectric memory
  • magnetic or optical cards e.g., magnetic or optical cards, one or more individual ferromagnetic disk drives
  • each of these storages is depicted as a single block, one or more of these may include multiple storage devices that may be based on differing storage technologies.
  • one or more of each of these depicted storages may represent a combination of an optical drive or flash memory card reader by which programs and/or data may be stored and conveyed on some form of machine- readable storage media, a ferromagnetic disk drive to store programs and/or data locally for a relatively extended period, and one or more volatile solid state memory devices enabling relatively quick access to programs and/or data (e.g., SRAM or DRAM).
  • each of these storages may be made up of multiple storage components based on identical storage technology, but which may be maintained separately as a result of specialization in use (e.g., some DRAM devices employed as a main storage while other DRAM devices employed as a distinct frame buffer of a graphics controller).
  • the network interface 590 may employ any of a wide variety of signaling technologies enabling these devices to be coupled to other devices as has been described.
  • Each of these interfaces includes circuitry providing at least some of the requisite functionality to enable such coupling.
  • each of these interfaces may also be at least partially implemented with sequences of instructions executed by corresponding ones of the processor components (e.g., to implement a protocol stack or other features).
  • these interfaces may employ signaling and/or protocols conforming to any of a variety of industry standards, including without limitation, RS-232C, RS-422, USB, Ethernet (IEEE-802.3) or IEEE- 1394.
  • these interfaces may employ signaling and/or protocols conforming to any of a variety of industry standards, including without limitation, IEEE 802.1 la, 802.1 lb. 802.1 lg, 802.16, 802.20 (commonly referred to as "Mobile Broadband Wireless Access”); Bluetooth; ZigBee; or a cellular radiotelephone service such as GSM with General Packet Radio Service (GSM/GPRS), CDMA/lxRTT, Enhanced Data Rates for Global Evolution (EDGE), Evolution Data Only/Optimized (EV-DO), Evolution For Data and Voice (EV-DV), High Speed Downlink Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA), 4G LTE, etc.
  • GSM General Packet Radio Service
  • EDGE Enhanced Data Rates for Global Evolution
  • EV-DO Evolution Data Only/Optimized
  • EV-DV Evolution For Data and Voice
  • HSDPA High Speed Downlink Packet Access
  • HSUPA High Speed Uplink Packet Access
  • 4G LTE
  • FIG.6 illustrates an embodiment of a logic flow 2100.
  • the logic flow 2100 may be representative of some or all of the operations executed by one or more embodiments described herein. More specifically, the logic flow 2100 may illustrate operations performed by the processor component 550 in executing one or more of the control routine 540 and the multicast transmission routine 545; and/or performed by other component(s) of the server 500. In particular, the logic flow 2100 is focused on operations to open the multicast session to transmit the data 530 to the client devices 100 in one or more multicast transmission, and on operations to effect the one or more multicast transmissions.
  • a processor component of a server may receive a unicast SYN message transmitted to the server from a client device (e.g., one of the client devices 100), and conveying a request for that client device to participate in a multicast session in which the server is to transmit data to multiple client devices in one or more multicast data messages (e.g., the data 530).
  • a client device e.g., one of the client devices 100
  • multicast data messages e.g., the data 530
  • such an identifier of the multicast session may be an IP address in a range of IP addresses designated to be associated with multicast sessions, may be a port number in a range of port numbers designated to be associated with multicast sessions, or may be a combination of both.
  • the processor component may transmit a unicast ACK message back to that client device to acknowledge receipt of the unicast SYN message conveying the request to participate in the multicast session.
  • that unicast ACK message may not include or otherwise be accompanied by a corresponding unicast SYN message from the server to that client device.
  • a check may be made by the processor component as to whether any more unicast SYN messages conveying requests to participate in the multicast session are expected.
  • the server may maintain a list of client devices from which such unicast SYN messages are expected to be received, or may employ other criteria for determining whether or not all of the unicast SYN messages mat are expected to be received have actually been received. If, at 2120, there are more of such unicast SYN messages expected to be received, then the processor component may return to awaiting and then receiving another of such unicast SYN messages at 2110.
  • the processor component may transmit a multicast SYN message to all of the client devices that are to participate in the multicast session at 2130.
  • one or more routers interposed between the server and the client devices may limit forwarding of the multicast SYN message transmitted by the server to only network segments that lead to the client devices from which the one or more routers received the unicast SYN messages requesting to participate in the multicast session.
  • a check may be made by the processor component as to whether an aggregate unicast ACK message has been received at the server to acknowledge successful receipt of the multicast SYN message by all of the client devices that are to participate in the multicast session.
  • the one or more routers may cooperate to aggregate the unicast ACK messages separately transmitted by each of those client devices in response to receiving the multicast SYN message, and to transmit a single unicast ACK message to the server in response to receiving such separate unicast ACK messages from all of those client devices.
  • the server may retransmit the multicast SYN message at 2130.
  • the one or more routers may engage in filtering that identifies which downstream network segments) to forward the retransmitted multicast SYN message to in order minimize the consumption of network bandwidth arising from such retransmission.
  • the processor component may transmit one or more multicast data messages to effect the conveying of the data to all of the client devices that are to participate in the multicast session at 2150.
  • the one or more routers may limit forwarding of the multicast data messages transmitted by the server to only network segments that lead to the client devices from which the one or more routers received the unicast SYN messages requesting to participate in the multicast session.
  • a check may be made by the processor component as to whether an aggregate unicast ACK message has been received at the server to acknowledge successful receipt of the one or more multicast data messages by all of the client devices that are to participate in the multicast session. If at 2160, no such aggregate unicast ACK message has been received, then the server may retransmit the one or more multicast data messages at 2150.
  • FIG.7 illustrates an embodiment of a logic flow 2200.
  • the logic flow 2200 may be representative of some or all of the operations executed by one or more embodiments described herein. More specifically, the logic flow 2200 may illustrate operations performed by the processor component 150 in executing one or more of the control routine 140 and the multicast reception routine 145; and/or performed by other components) of one of the client devices 100. In particular, the logic flow 2200 is focused on operations to open the multicast session to transmit the data 530 to the client device 100 in one or more multicast transmission from the server 500, and on operations to effect the one or more multicast transmissions.
  • a processor component of a client device may transmit a unicast SYN message to a server (e.g., the server 500), where the unicast SYN message conveys a request for the client device to participate in a multicast session in which the server is to transmit data to multiple client devices in one or more multicast transmissions (e.g., the data 530).
  • a server e.g., the server 500
  • the unicast SYN message transmitted by a client device to the server may include an identifier of the multicast session that the client device is requesting to participate in.
  • a unicast ACK message may be received at the client device from the server to acknowledge receipt by the server of the unicast SYN message transmitted by the client device at 2210.
  • the receipt of this unicast ACK message may cause the client device to transition to a state in which the client device waits for a multicast SYN message from the server.
  • the client device may receive that multicast SYN message from the server.
  • the client device may treat the lack of receipt of the unicast ACK message as a timeout condition and may retransmit that unicast SYN message.
  • the processor component may transmit a unicast ACK message to the server to acknowledge receipt of the multicast SYN message from the server.
  • one or more routers interposed between the server and the client devices may cooperate to aggregate the unicast ACK message transmitted by the client device with other such unicast ACK messages separately transmitted by other client devices in response to receiving the multicast SYN message, and may further cooperate to transmit a single unicast ACK message to the server in response to receiving such separate unicast ACK messages from all of those client devices.
  • the unicast ACK message transmitted by the client device may be combined with such ACK messages from the other client devices to provide confirmation to the server that all of the client devices that are to participate in the multicast session have received the multicast SYN message.
  • the client device may receive one or more multicast data messages from the server to effect the multicast transmission of the data to the client device, along with the other client devices.
  • the processor component may transmit a unicast ACK message to the server to acknowledge receipt of the one or more multicast data messages from the server.
  • FIG. 8 illustrates an embodiment of an exemplary processing architecture 3000 suitable for implementing various embodiments as previously described. More specifically, the processing architecture 3000 (or variants thereof) may be implemented as part of one or more of the devices 100, 200, 304, 305 or 500, and/or the controller 400. It should be noted that components of the processing architecture 3000 are given reference numbers in which the last two digits correspond to the last two digits of reference numbers of at least some of the components earlier depicted and described as part of these devices and/or controllers. This is done as an aid to correlating components of each.
  • the processing architecture 3000 includes various elements commonly employed in digital processing, including without limitation, one or more processors, multi-core processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input/output (I/O) components, power supplies, etc.
  • system and “component” are intended to refer to an entity of a device in which digital processing is carried out, that entity being hardware, a combination of hardware and software, software, or software in execution, examples of which are provided by this depicted exemplary processing architecture.
  • a component can be, but is not limited to being, a process running on a processor component, the processor component itself, a storage device (e.g., a hard disk drive, multiple storage drives in an array, etc.) that may employ an optical and/or magnetic storage medium, a software object, an executable sequence of instructions, a thread of execution, a program, and/or an entire device (e.g., an entire computer).
  • a storage device e.g., a hard disk drive, multiple storage drives in an array, etc.
  • an optical and/or magnetic storage medium e.g., a software object, an executable sequence of instructions, a thread of execution, a program, and/or an entire device (e.g., an entire computer).
  • an application running on a server and the server can be a component
  • One or more components can reside within a process and/or thread of execution, and a component can be localized on one device and/or distributed between two or more devices.
  • components may be communicatively coupled to each
  • the coordination may involve the uni-directional or bi-directional exchange of information.
  • the components may communicate information in the form of signals communicated over the communications media.
  • the information can be implemented as signals allocated to one or more signal lines.
  • a message (including a command, status, address or data message) may be one of such signals or may be a plurality of such signals, and may be transmitted either serially or substantially in parallel through any of a variety of connections and/or interfaces.
  • a device in implementing the processing architecture 3000, includes at least a processor component 950, a storage 960, an interface 990 to other devices, and a coupling 959.
  • a device may further include additional components, such as without limitation, a display interface 985.
  • the coupling 959 includes one or more buses, point-to-point interconnects, transceivers, buffers, crosspoint switches, and/or other conductors and/or logic that communicatively couples at least the processor component 950 to the storage 960.
  • Coupling 959 may further couple the processor component 950 to one or more of the interface 990, the audio subsystem 970 and the display interface 985 (depending on which of these and/or other components are also present). With the processor component 950 being so coupled by couplings 959, the processor component 950 is able to perform the various ones of the tasks described at length, above, for whichever one(s) of the aforedescribed devices implement the processing architecture 3000.
  • Coupling 959 may be implemented with any of a variety of technologies or combinations of technologies by which signals are optically and/or electrically conveyed. Further, at least portions of couplings 959 may employ timings and/or protocols conforming to any of a wide variety of industry standards, including without limitation.
  • AGP Accelerated Graphics Port
  • CardBus Extended Industry Standard Architecture (E-ISA)
  • MCA Micro Channel Architecture
  • NuBus NuBus
  • PCI-X Peripheral Component Interconnect Express
  • PCI-E PCI Express
  • PCMCIA Personal Computer Memory Card International Association
  • the processor component 950 (which may correspond to the processor component 450) may include any of a wide variety of commercially available processors, employing any of a wide variety of technologies and implemented with one or more cores physically combined in any of a number of ways.
  • the storage 960 (which may correspond to the storage 460) may be made up of one or more distinct storage devices based on any of a wide variety of technologies or combinations of technologies. More specifically, as depicted, the storage 960 may include one or more of a volatile storage 961 (e.g., solid state storage based on one or more forms of RAM technology), a non-volatile storage 962 (e.g., solid state, ferromagnetic or other storage not requiring a constant provision of electric power to preserve their contents), and a removable media storage 963 (e.g., removable disc or solid state memory card storage by which information may be conveyed between devices).
  • a volatile storage 961 e.g., solid state storage based on one or more forms of RAM technology
  • a non-volatile storage 962 e.g., solid state, ferromagnetic or other storage not requiring a constant provision of electric power to preserve their contents
  • a removable media storage 963 e.g., removable disc or solid state memory card storage by
  • This depiction of the storage 960 as possibly including multiple distinct types of storage is in recognition of the commonplace use of more than one type of storage device in devices in which one type provides relatively rapid reading and writing capabilities enabling more rapid manipulation of data by the processor component 950 (but possibly using a "volatile" technology constantly requiring electric power) while another type provides relatively high density of non-volatile storage (but likely provides relatively slow reading and writing capabilities).
  • one type provides relatively rapid reading and writing capabilities enabling more rapid manipulation of data by the processor component 950 (but possibly using a "volatile" technology constantly requiring electric power) while another type provides relatively high density of non-volatile storage (but likely provides relatively slow reading and writing capabilities).
  • the volatile storage 961 may be communicatively coupled to coupling 9S9 through a storage controller 965a providing an appropriate interface to the volatile storage 961 that perhaps employs row and column addressing, and where the storage controller 965a may perform row refreshing and/or other maintenance tasks to aid in preserving information stored within the volatile storage 961.
  • the non-volatile storage 962 may be communicatively coupled to coupling 9S9 through a storage controller 965b providing an appropriate interface to the non-volatile storage 962 mat perhaps employs addressing of blocks of information and/or of cylinders and sectors.
  • the removable media storage 963 may be communicatively coupled to coupling 959 through a storage controller 965c providing an appropriate interface to the removable media storage 963 that perhaps employs addressing of blocks of information, and where the storage controller 965c may coordinate read, erase and write operations in a manner specific to extending the lifespan of the machine-readable storage medium 969.
  • One or the other of the volatile storage 961 or the non- volatile storage 962 may include an article of manufacture in the form of a machine-readable storage media on which a routine including a sequence of instructions executable by the processor component 950 may be stored, depending on the technologies on which each is based.
  • the non- volatile storage 962 includes ferromagnetic-based disk drives (e.g., so-called "hard drives")
  • each such disk drive typically employs one or more rotating platters on which a coating of magnetically responsive particles is deposited and magnetically oriented in various patterns to store information, such as a sequence of instructions, in a manner akin to storage medium such as a floppy diskette.
  • the non-volatile storage 962 may be made up of banks of solid-state storage devices to store information, such as sequences of instructions, in a manner akin to a compact flash card. Again, it is commonplace to employ differing types of storage devices in a device at different times to store executable routines and/or data. Thus, a routine including a sequence of instructions to be executed by the processor component 950 may initially be stored on the machine-readable storage medium 969, and the removable media storage 963 may be subsequently employed in copying that routine to the non-volatile storage 962 for longer term storage not requiring the continuing presence of the machine-readable storage medium 969 and/or the volatile storage 961 to enable more rapid access by the processor component 950 as that routine is executed.
  • the interface 990 (which may correspond to the interface(s)
  • the interface 990 may employ any of a variety of signaling technologies corresponding to any of a variety of communications technologies that may be employed to communicatively couple a device to one or more other devices.
  • signaling technologies corresponding to any of a variety of communications technologies that may be employed to communicatively couple a device to one or more other devices.
  • one or both of various forms of wired or wireless signaling may be employed to enable the processor component 950 to interact with input/output devices (e.g., the depicted example keyboard 920 or printer 925) and/or other devices, possibly through a network (e.g., the network 999) or an interconnected set of networks.
  • the interface 990 is depicted as including multiple different interface controllers 995a, 995b and 995c.
  • the interface controller 995a may employ any of a variety of types of wired digital serial interface or radio frequency wireless interface to receive serially transmitted messages from user input devices, such as the depicted keyboard 920.
  • the interface controller 995b may employ any of a variety of cabling-based or wireless signaling, timings and/or protocols to access other devices through the depicted network 999 (perhaps a network made up of one or more links, smaller networks, or perhaps the Internet).
  • the interface controller 995b may incorporate one or more radio frequency (RF) transceivers and/or may be coupled to one or more antennae 991 (which may be incorporated into a portion of the interface 990) to exchange RF wireless signals with antenna(e) of one or more other devices as part of wireless communications on the depicted network 999.
  • the interface 995c may employ any of a variety of electrically conductive cabling enabling the use of either serial or parallel signal transmission to convey data to the depicted printer 925.
  • a microphone to monitor sounds of persons to accept commands and/or data signaled by those persons via voice or other sounds they may make, remote controls, stylus pens, card readers, finger print readers, virtual reality interaction gloves, graphical input tablets, joysticks, other keyboards, retina scanners, the touch input component of touch screens, trackballs, various sensors, a camera or camera array to monitor movement of persons to accept commands and/or data signaled by those persons via gestures and/or facial expressions, laser printers, inkjet printers, mechanical robots, milling machines, etc.
  • a device is communicatively coupled to (or perhaps, actually incorporates) a display (e.g., the depicted example display 980)
  • a device implementing the processing architecture 3000 may also include the display interface 985.
  • the somewhat specialized additional processing often required in visually displaying various forms of content on a display, as well as the somewhat specialized nature of the cabling-based interfaces used, often makes the provision of a distinct display interface desirable.
  • Wired and/or wireless signaling technologies that may be employed by the display interface 985 in a communicative coupling of the display 980 may make use of signaling and/or protocols that conform to any of a variety of industry standards, including without limitation, any of a variety of analog video interfaces, Digital Video Interface (DVT), DisplayPort, etc.
  • DVD Digital Video Interface
  • DisplayPort etc.
  • the various elements of the devices described and depicted herein may include various hardware elements, software elements, or a combination of both.
  • hardware elements may include devices, logic devices, components, processors,
  • microprocessors circuits, processor components, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field
  • FPGA programmable gate array
  • memory units logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth.
  • software elements may include software components, programs, applications, computer programs, application programs, system programs, software development programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof.
  • API application program interfaces
  • determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints, as desired for a given implementation.
  • Some embodiments may be described using the expression “one embodiment” or “an embodiment” along with their derivatives. These terms mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. Further, some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, some embodiments may be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other. Furthermore, aspects or elements from different embodiments may be combined.
  • an apparatus includes a processor component; a network interface to couple the processor component to a network; a synchronize (S YN) receive component to transmit a unicast acknowledge (ACK) message via the network to each client device of a group of client devices from which a unicast SYN message that requests participation in a multicast session is received at the network interface, the multicast session to convey data to the group of client devices; and a SYN transmit component to determine whether all expected unicast SYN messages from the group of client devices have been received at the network interface, and to transmit a multicast SYN message via the network to the group of client devices when all expected unicast SYN messages from the group of client devices are received at the network interface.
  • S YN synchronize
  • ACK unicast acknowledge
  • Example 2 which includes the subject matter of Example 1, the apparatus may include a transmission component to transmit at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to reception of a First aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
  • Example 3 which includes the subject matter of any of Examples 1-2, the transmission component may transmit at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
  • the apparatus may include a retransmission component to retransmit the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
  • the apparatus may include a retransmission component to retransmit the multicast SYN message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the multicast SYN message to the group of client devices.
  • the SYN transmit component may determine whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
  • the apparatus may include a unicast routine to exchange other data with a client device of the group of client devices in a unicast session; and a communications component to analyze each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session, and to convey a unicast SYN message that requests participation in the unicast session to the unicast routine.
  • each unicast SYN message received from the group of client devices that requests participation in the multicast session may include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions, and the communications component may distinguish a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
  • ID multicast session identifier
  • the multicast session ED may include at least one of an Internet protocol (IP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
  • IP Internet protocol
  • an apparatus includes a processor component; a network interface to couple the processor component to a network; a synchronize (SYN) transmit component to determine whether expected unicast SYN messages that request participation in a multicast session to convey data to a group of client devices have been received from all client devices of the group of client devices at the network interface, and to transmit a multicast SYN message via the network to the group of client devices when the expected unicast SYN messages have been received from all of the client devices of the group of client devices at the network interface; and a transmission component to transmit at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to reception of a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
  • SYN synchronize
  • Example 11 which includes the subject matter of Example 10, the apparatus may include a SYN receive component to transmit a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the expected unicast SYN messages is received.
  • ACK unicast acknowledge
  • Example 12 which includes the subject matter of any of Examples 10-11, the transmission component may transmit at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
  • the apparatus may include a retransmission component to retransmit the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
  • the SYN transmit component may determine whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
  • the apparatus may include a unicast routine to exchange other data with a client device of the group of client devices in a unicast session; and a communications component to analyze each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session, and to convey a unicast SYN message that requests participation in the unicast session to the unicast routine.
  • each unicast SYN message received from the group of client devices that requests participation in the multicast session may include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions, and the communications component may distinguish a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
  • ID multicast session identifier
  • the multicast session ID may include at least one of an Internet protocol (IP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
  • IP Internet protocol
  • the multicast SYN message and each unicast SYN message that requests participation in the multicast session may include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions.
  • ID multicast session identifier
  • a computing-implemented method includes receiving via a network, at a network interface of a server, unicast synchronize (SYN) messages from a group of client devices that each request participation in a multicast session with the server to convey data to the group of client devices; transmitting a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the unicast SYN messages is received at the network interface; determining whether all expected unicast SYN messages from the group of client devices have been received at the network interface; and transmitting a multicast SYN message via the network to the group of client devices when all expected unicast SYN messages from the group of client devices are received at the network interface.
  • SYN unicast synchronize
  • Example 20 which includes the subject matter of Example 19, the method may include transmitting at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to receiving a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
  • Example 21 which includes the subject matter of any of Examples 19-20, the method may include transmitting at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
  • Example 22 which includes the subject matter of any of Examples 19-21, the method may include retransmitting the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
  • Example 23 which includes the subject matter of any of Examples 19-22, the method may include retransmitting the multicast SYN message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the multicast SYN message to the group of client devices.
  • Example 24 which includes the subject matter of any of Examples 19-23, the method may include determining whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
  • Example 25 which includes the subject matter of any of Examples 19-24, the method may include exchanging other data with a client device of the group of client devices in a unicast session; analyzing each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message mat requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session; and conveying a unicast SYN message that requests participation in the unicast session to a unicast routine of the server.
  • each unicast SYN message received from the group of client devices that requests participation in the multicast session may include a multicast session identifier (ED) that distinguishes the multicast session from other multicast sessions
  • the method may include distinguishing a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ED.
  • ED multicast session identifier
  • the multicast session ED may include at least one of an Internet protocol (TP) address within a range of EP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
  • TP Internet protocol
  • a computing-implemented method includes determining whether expected unicast synchronize (SYN) messages that request participation in a multicast session with a server to convey data to a group of client devices have been received from all client devices of the group of client devices at a network interface of the server; transmitting a multicast SYN message via a network to the group of client devices when all expected unicast SYN messages have been received from all of the client devices of the group of client devices at the network interface; and transmitting at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to reception of a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
  • SYN expected unicast synchronize
  • Example 29 which includes the subject matter of Example 28, the method may include transmitting a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the expected unicast SYN messages is received.
  • ACK unicast acknowledge
  • Example 30 which includes the subject matter of any of Examples 28-29, the method may include transmitting at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
  • Example 31 which includes the subject matter of any of Examples 28-30, the method may include retransmitting the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
  • Example 32 which includes the subject matter of any of Examples 28-31, the method may include determining whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
  • Example 33 which includes the subject matter of any of Examples 28-32, the method may include exchanging other data with a client device of the group of client devices in a unicast session; analyzing each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session; and conveying a unicast SYN message that requests participation in the unicast session to a unicast routine of the server.
  • each unicast SYN message received from the group of client devices that requests participation in the multicast session may include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions
  • the method may include distinguishing a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ED.
  • the multicast session ID may include at least one of an Internet protocol (IP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
  • IP Internet protocol
  • Example 36 which includes the subject matter of any of Examples 28-35, the multicast SYN message and each unicast SYN message that requests participation in the multicast session to include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions.
  • ID multicast session identifier
  • At least one tangible machine-readable storage medium includes instructions that when executed by a processor component, may cause the processor component to receive via a network, at a network interface of a server, unicast synchronize (SYN) messages from a group of client devices that each request participation in a multicast session with the server to convey data to the group of client devices; transmit a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the unicast SYN messages is received at the network interface; determine whether all expected unicast SYN messages from the group of client devices have been received at the network interface; and transmit a multicast SYN message via the network to the group of client devices when all expected unicast SYN messages from the group of client devices are received at the network interface.
  • SYN unicast synchronize
  • Example 38 which includes the subject matter of Example 37, the processor component may be caused to transmit at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to receiving a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
  • Example 39 which includes the subject matter of any of Examples 37-38, the processor component may be caused to transmit at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
  • Example 40 which includes the subject matter of any of Examples 37-39, the processor component may be caused to retransmit the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
  • Example 41 which includes the subject matter of any of Examples 37-40, the processor component may be caused to retransmit the multicast SYN message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the multicast SYN message to the group of client devices.
  • Example 42 which includes the subject matter of any of Examples 37-41, the processor component may be caused to determine whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
  • Example 43 which includes the subject matter of any of Examples 37-42, the processor component may be caused to exchange other data with a client device of the group of client devices in a unicast session; analyze each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session; and convey a unicast SYN message that requests participation in the unicast session to a unicast routine of the server.
  • each unicast SYN message received from the group of client devices that requests participation in the multicast session may include a multicast session identifier (ED) that distinguishes the multicast session from other multicast sessions, and the processor component may be caused to distinguish a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
  • ED multicast session identifier
  • the multicast session ID may include at least one of an Internet protocol (EP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
  • EP Internet protocol
  • At least one tangible machine-readable storage medium includes instructions that when executed by a processor component, may cause the processor component to determine whether expected unicast synchronize (SYN) messages that request participation in a multicast session with a server to convey data to a group of client devices have been received from all client devices of the group of client devices at a network interface of the server;
  • SYN expected unicast synchronize
  • Example 47 which includes the subject matter of Example 46, the processor component may be caused to transmit a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the expected unicast SYN messages is received.
  • ACK unicast acknowledge
  • Example 48 which includes the subject matter of any of Examples 46-47, the processor component may be caused to transmit at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
  • Example 49 which includes the subject matter of any of Examples 46-48, the processor component may be caused to retransmit the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
  • Example 50 which includes the subject matter of any of Examples 46-49, the processor component may be caused to determine whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
  • Example 51 which includes the subject matter of any of Examples 46-50, the processor component may be caused to exchange other data with a client device of the group of client devices in a unicast session; analyze each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session; and convey a unicast SYN message that requests participation in the unicast session to a unicast routine of the server.
  • each unicast SYN message received from the group of client devices that requests participation in the multicast session to include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions
  • the processor component may be caused to distinguish a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
  • ID multicast session identifier
  • the multicast session ID may include at least one of an Internet protocol (IP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
  • IP Internet protocol
  • Example 54 which includes the subject matter of any of Examples 46-53, the multicast SYN message and each unicast SYN message that requests participation in the multicast session may include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions.
  • ID multicast session identifier
  • At least one tangible machine-readable storage medium may include instructions that when executed by a processor component, cause the processor component to perform any of the above.
  • an apparatus may include means for performing any of the above.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Various embodiments are generally directed to techniques for network multicasting to multiple client devices with acknowledgement. An apparatus may include a network interface, a SYN transmit component to determine whether expected unicast SYN messages requesting participation in a multicast session to convey data to a group of client devices have been received from all of the client devices at the network interface, and to transmit a multicast SYN message to the group of client devices when the expected unicast SYN messages have been received from all of the client devices; and a transmission component to transmit at least one multicast data message to the group of client devices to convey the data to the group of client devices in response to reception of an aggregate unicast ACK message acknowledging receipt of the multicast SYN message by all of the client devices.

Description

TECHNIQUES FOR NETWORK MULTICASTING WITH ACKNOWLEDGI.MENT
Background
Multicasting by a server to multiple client devices across a network typically involves a tradeoff between multicasting to a relatively large group of client devices and supporting the use of acknowledgement indications transmitted by a relatively small group of client devices. More specifically, where a relatively small group of client devices are each to receive the same data from a server as a group, it may be deemed beneficial to transmit that same data to each of those client devices in a separate unicast transmission that allow for each of those client devices to respond with an acknowledgement message that confirms that each of those client devices successfully received the data. Unfortunately, such use of a unicast transmission to each client device does not scale very well to a relatively large group of client devices. Where a relatively large group of client devices are each to receive the same data from the server the use of a separate unicast transmissions to each client device can consume a prohibitively large amount of available network bandwidth, as well as the corresponding separate acknowledgement messages received from each client device for each such unicast transmission. Also, even where a relatively small group of client devices ate each to receive the same data from the server, a prohibitively large amount of available network bandwidth may be consumed if the quantity of data is relatively large.
Brief Description of the Drawings
FIGS. I A and IB each illustrate an example embodiment of a communications system.
FIG.2 illustrates the example embodiment of the communications system of FIG. I A or IB in greater detail.
FIGS, 3A, 3B and 3C each depict an example embodiment of a portion of a communications system.
FIGS.4A and 4B, together, illustrate an example embodiment of preparing to convey data in a multicast session.
FIG.5 illustrates an example embodiment of conveying data in a multicast session.
FIG. ί illustrates a logic flow according to an embodiment.
FIG.7 illustrates another logic flow according to an embodiment.
FIG. 8 illustrates a processing architecture according to an embodiment. Detailed Description
Various embodiments are generally directed to techniques for network multicasting to multiple client devices with acknowledgement Each client device of a group of client devices may transmit a synchronization (SYN) message to a server that includes a request to become a recipient of a multicast transmission to be made by the server. Each of these SYN messages may be forwarded to the server through one or more routers interposed between the client devices and the server, and the one or more routers may store indications of these requests to become a recipient of that multicast transmission. The server may respond to each such SYN message by transmitting an acknowledgement (ACK) message back through the one or more routers and to the client device from which that SYN message was received to acknowledge receipt of that SYN message, but without including a corresponding return SYN message to that client device. Instead, the server may delay transmitting any SYN message to the group of client devices until after the server has received all of the SYN messages expected by the server from the client devices in the group, and until after individually responding to all of those SYN messages with ACK messages that do not include a corresponding return SYN message. After responding to all of such expected SYN messages with such ACK messages, the server may then transmit a single SYN message to all of the client devices in the group in a single multicast transmission through the one or more routers. Each of the client devices of the group of client devices may respond to this single multicast SYN message with an ACK message transmitted back toward the server as a unicast message. However, the one or more routers may aggregate these ACK messages from the client devices of the group of client devices, rather than forward each individual one of these ACK messages onward to the server. Instead, the one or more routers may cooperate to transmit a single aggregate ACK message to the server in a unicast transmission if ACK messages in response to the single multicast SYN message are received from all of the client devices of the group of client devices. If ACK messages in response to the single multicast SYN message are received from less than all of the client devices of the group of client devices, then the one or more routers may refrain from transmitting any ACK message to the server, thereby triggering the server to repeat transmission of the single multicast SYN message. Where such a retraiismission of the single multicast SYN message is so triggered, the one or more routers may cooperate to limit the forwarding of that retransmission to only the one or more client devices of the group of client devices from which an ACK message was not received by the one or more routers.
In various embodiments, the SYN and/or ACK messages that are exchanged in preparing devices to engage in the multicast session (often referred to as "opening" the multicast session) and/or during the multicast session may be generated to include specific pieces of information and/or specific arrangements of information in conformance with various specifications for the Transmission Control Protocol (TCP) promulgated by the Internet Engineering Taskforce (IETF) of Fremont, California. More specifically, each SYN and/or ACK message so exchanged may include an identifier of the source device that transmitted it, an identifier of one or more destination devices that are intended to receive it, an identifier of a session of communications with which it is associated, and an indicator of the type of message (e.g., SYN, ACK or data message). The identifiers of the source and/or destination devices may include an Internet Protocol (IP) address. It should be noted that a single device may have more than one IP address where different ΓΡ addresses are associated with different functions, and it should be noted that a single IP address may be associated with more than one device. The session ID may be generated from one or more of the identifier of the source device, a port number associated with the source device, the identifier of the destination device, and a port number associated with the destination device. Further each SYN message may include a sequence number generated by the device that transmits it and/or may provide an indication of the position of that SYN message among a stream of messages. Each ACK message may include an
acknowledgement number that may be based on the sequence number of the message that the ACK message acknowledges the reception of.
The server may be coupled to multiple client devices through one or more routers that are interposed between the server and the multiple client devices in a tree-like topography in which the server is at the root, each of the one or more routers is at a point at which branching occurs, and each client device is at an Midpoint of a branch. In this topography, the server may be deemed to be upstream from the one or more routers, and each of the client devices may be deemed to be downstream from the one or more routers.
The multiple client devices may include a group of client devices that are to participate in a multicast session with the server in which the server is to transmit data to the client devices of the group of client devices in one or more multicast transmissions. To open mis multicast session, each of the client devices of the group of client devices may transmit a SYN message upstream to the server as part of requesting to participate in the multicasting session. Each such SYN message may be transmitted by one of die client devices as a unicast transmission. Also, each such SYN message may include an identifier (ED) of the client device that transmits that SYN message, a sequence number randomly generated by that client device, and an identifier of the multicast session that distinguishes that multicast session from others. As each such SYN message is forwarded upstream from the client device that sends it to the server by the one or more routers, each of the one or more routers may store an indication of which downstream branch each such SYN message is received from by that router. It should be noted that where there is more than one router, the tree-like topography may result in one or more instances of one router being downstream from another such that the upstream one of those two routers may receive multiple ones of such SYN messages from the downstream one of those two routers. In other embodiments, either in addition to or as an alternative to storing indications of which downstream branch each SYN message is received from, the one or more routers may cooperate to store indications of which client device each such SYN message is received from.
Upon receiving each such SYN message, the server may compare the identifier of the client device to a set of identifiers to determine whether the client device from which that SYN message is received is to receive the data in the multicast session. If not, then the server may simply ignore that SYN message. However, if the client device from which that SYN message is received is to so receive the data in that multicast session, then the server may be caused to transmit an ACK message downstream back to that client device in a unicast transmission to acknowledge receipt of that SYN message. The ACK message may include an
acknowledgement number generated by incrementing the sequence number of that SYN message by a value of 1 to provide an indication to that client device that the ACK message is in response to that SYN message. Also, the ACK message may not include a corresponding return SYN message from the server to that client device that may otherwise be so included if that SYN message received from that client device was part of requesting participation in a unicast session with the server, instead of the multicast session.
The server may be caused by the multicast transmission routine to track the SYN messages received from each client device of the group of client devices and the ACK messages transmitted in response to those SYN messages to determine when all of such SYN messages that were expected to be received from all of the client devices of the group have been received and have been responded to with ACK messages as part of determining when and/or whether to proceed further in opening the multicast session. Upon making the determination to proceed, the server may transmit a single multicast SYN message downstream toward all of the client devices of the group of client devices that are to participate in the multicast session. This single multicast SYN message may include an identifier of the server and/or the identifier of the multicast session. Also, this single multicast SYN message may include a sequence number randomly generated by the server such that is has no relation to any of the sequence numbers in any of the SYN messages transmitted by the client devices of the group of client devices to request to participate in the multicast session. Upon receiving the single multicast SYN message, each of the one or more routers may use the identifier of the multicast session included within the single multicast SYN message to correlate the single multicast SYN message to earlier stored indications of which downstream branches to which that router is coupled are the downstream branches from which the earlier upstream SYN messages were received. The one or more routers may then limit their forwarding of that single multicast SYN message to only the downstream branches from which one or more of those earlier upstream SYN messages were received.
In response to receiving the single multicast SYN message transmitted by the server, each of the client devices of the group of client devices may to transmit an ACK message upstream back towards the server to acknowledge receipt of the single multicast SYN message from the server. Each such ACK message may be transmitted by one of the client devices as a unicast transmission, and each such ACK message may include an identifier of the client device that transmits that ACK message and the identifier of the multicast session. Also, each such ACK message may include an acknowledgement number generated by incrementing the sequence number of the single multicast SYN message from the server by a value of 1 to provide an indication that the ACK message is in response to that single multicast SYN message.
The one or more routers may cooperate to aggregate these ACK messages received from the client devices of the group of client devices in response to the single multicast SYN message, instead of forwarding each of these individual ACK messages upstream to the server. More specifically, the one or more routers may cooperate to wait until all of these individual ACK messages have been received, and then transmit a single aggregate ACK message upstream to the server. The one or more routers may be triggered to so aggregate these individual ACK messages received from the client devices of the group of client devices by the identifier of the multicast session included within each of these individual ACK messages. Also, given that each of these individual ACK messages may include an acknowledgement number generated by incrementing the sequence number of the single multicast SYN message by a value of 1, all of these individual ACK messages may have the same acknowledgement number. Further, the aggregate ACK message that each of the one or more routers may generate may include a device ID of that router. Thus, where there is more than one router, the single aggregate ACK message that is directly transmitted to the server by the router that is most directly coupled to the server may include the device ID of that router.
If all of the client devices of the group of client devices received the single multicast SYN message, then all of those client devices may transmit one of the individual ACK messages upstream towards the one or more routers, and the server may receive the single aggregate ACK message from the one or more routers in response to the single multicast SYN message. With the receipt of the single aggregate ACK message by the server, the multicast session is open. The server may then transmit the data downstream toward the client devices of the group of client devices in one or more multicast messages. Just as each of the client devices responded to receiving the single multicast SYN message from the server by transmitting an individual ACK message upstream toward the server, each of the client devices may respond to receiving the downstream multicast messages from the server in which the data is transferred by transmitting one or more further individual ACK messages upstream. Also, just as the one or more routers aggregated the individual ACK messages transmitted by the client devices in response to receiving the single multicast SYN message, the one or more routers may aggregate the ACK messages transmitted by the client devices in response to receiving the downstream multicast messages from the server in which the data is transferred. Thus, if all of the messages transmitted downstream by the server to transfer the data are received by all of the client devices of the group of client devices, then the server should receive one or more further aggregated ACK messages transmitted upstream from the one or more routers.
However, if one or more of the client devices of the group of client devices receives a corrupted version of the single multicast SYN message or of one of the messages transferring the data transmitted downstream by the server, then the server may not receive one of the expected aggregate ACK message from the one or more routers such that a timeout for receiving that aggregate ACK message occurs at the server. Alternatively, and as will be explained in greater detail, a lack of reception of one of the messages transferring the data may result in the server receiving multiple ACK messages that include the same acknowledgement number. In response to that timeout or to the reception of such multiple ACK messages, the server may retransmit the single multicast SYN message, or may retransmit one or more of the messages transferring the data downstream toward the client devices. Each of the one or more routers may have earlier identified any downstream branch to which it is directly coupled and from which an ACK message was expected to be received, but from which an ACK message was not received. Each of the one or more routers each that has identified such a downstream branch may limit its forwarding of the one or more retransmitted messages to such a downstream branch. In this way, such retransmissions are not caused to occupy bandwidth through more of the branches of the tree-like topography than are necessary to the address errors that triggered such
retransmissions. With general reference to notations and nomenclature used herein, portions of the detailed description which follows may be presented in terms of program procedures executed on a computer or network of computers. These procedural descriptions and representations are used by those skilled in the art to most effectively convey the substance of their work to others skilled in the art A procedure is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. These operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic or optical signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It proves convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or die like. It should be noted, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to those quantities.
Further, these manipulations are often referred to in terms, such as adding or comparing, which are commonly associated with mental operations performed by a human operator.
However, no such capability of a human operator is necessary, or desirable in most cases, in any of the operations described herein that form part of one or more embodiments. Rather, these operations are machine operations. Useful machines for performing operations of various embodiments include general purpose digital computers as selectively activated or configured by a computer program stored within that is written in accordance with the teachings herein, and/or include apparatus specially constructed for the required purpose. Various embodiments also relate to apparatus or systems for performing these operations. These apparatus may be specially constructed for the required purpose or may include a general purpose computer. The required structure for a variety of these machines will appear from the description given.
Reference is now made to the drawings, wherein like reference numerals are used to refer to like elements throughout In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding thereof. It may be evident, however, that the novel embodiments can be practiced without these specific details. In other instances, well known structures and devices are shown in block diagram form in order to facilitate a description thereof. The intention is to cover all modifications, equivalents, and alternatives within the scope of the claims.
FIGS. 1A and IB each illustrate a block diagram of an embodiment of a
communications system 1000 including a network 999 through which packets of data may be exchanged among client devices 100, one or more routers 300 and a server 500. As depicted. the network 999 may have a tree-like topography in which the server 500 is at the root, the one or more routers 300 define the points at which branching occurs, and each client device 100 is at an endpoint of a branch. The server 500 may be coupled to a router 300 via a root segment 599 of the network 999, and each of the client devices 100 may be coupled to a router 300 via an endpoint segment 199 of the network 999. Referring more specifically to FIG. IB, where there may be more than one router 300, those multiple routers 300 may be coupled to each other via one or more intermediate segments 399. As depicted in both FIGS. 1A and IB, the root location of the server 500 in the tree-like topography of the network 999 may be deemed to be
"upstream" of the one or more routers 300 while the endpoint locations of the client devices 100 may be deemed to be "downstream" of the one or more routers 300. Thus, where the server 500 transmits data to one or more of the client devices 100, such a transmission may be described as a downstream transmission.
The network 999 may be a packetized network in which the client devices 100, the one or more routers 300 and the server 500 exchange sets of packets therethrough to convey any of a variety of types of data, including and not limited to, voice and/or non-voice audio, still images, motion video, documents, etc. Additionally, each piece of data, regardless of its type, may be any of a variety of sizes as measured in bits, bytes, words, doublewords, quad words, etc. The network 999 may include wired and/or wireless portions by which the sets of packets are conveyed therethrough.
FIG.2 illustrates aspects of the operation of the devices 100, 300 and 500 of the communications system 1000 in greater detail. More specifically, FIG. 2 illustrates aspects of the interaction among the devices 100, 300 and 500 to open a multicast session in which the server 500 transmits data 530 in one or more downstream multicast transmissions through the one or more routers 300, and onward to the client devices 100.
In various embodiments, the server 500 may incorporate one or more of a processor component 550, a storage 560, and a network interface 590 to couple the server to the root segment 599 of the network 999. The storage 560 may store a control routine 540, a unicast routine 541 and/or a multicast transmission routine 545. The control routine 540, the unicast routine 541 and/or the multicast transmission routine 545 may each incorporate a sequence of instructions operative on the processor component 550 to implement logic to perform various functions. In executing at least the multicast transmission routine 545, the processor component 550 may be caused to cooperate with the client devices 100 to open a multicast session between the server 500 and the client devices 100, as well as through the one or more routers 300, to transmit the data 530 from the server 500 downstream to the client devices 100 in one or more multicast transmissions in which the server 500 receives one or more aggregate ACK messages that serve to confirm reception thereof by the client devices 100.
In various embodiments, each of the client devices 100 may incorporate one or more of a processor component ISO, a storage 160, and a network interface 190 to couple that client device 100 to an endpoint segment 199 of the network 999. The storage 160 may store a control routine 140, a unicast routine 141 and/or a multicast reception routine 145. The control routine 140, the unicast routine 141 and/or the multicast reception routine 145 may each incorporate a sequence of instructions operative on the processor component 150 to implement logic to perform various functions. In executing the multicast reception routine 145, the processor component 150 of each of the client devices 100 may be caused to cooperate with the server 500 to open the multicast session with the server 500 to receive the data 530 from the server 500 from the one or more multicast transmissions, and to provide confirmation of reception thereof by transmitting one or more individual ACK messages upstream toward the server 500.
In various embodiments, each of die one or more routers 300 may incorporate one or more of a processor component 350 and/or a storage 360. Each of the routers 300 may also incorporate one or more network interfaces 390 to couple that router to the root segment 599 and/or to one or more endpoint segments 199 of die network 999. In embodiments in which there is more than one router 300, the one or more network interfaces 390 may alternatively or additionally couple that router to one or more intermediate segments 399 (depicted in FIG. IB). The storage 360 may store a control routine 340, a unicast routine 341 and/or a multicast relay routine 345. The control routine 340, the unicast routine 341 and/or the multicast relay routine 345 may each incorporate a sequence of instructions operative on the processor component 350 to implement logic to perform various functions. In executing the multicast relay routine 345, the processor component 350 of each of the one or more routers 300 may be caused to track SYN and ACK messages associated with opening the multicast session and/or with the downstream transmission of the data 530 by the server 500 in one or more multicast transmissions. Also in executing the multicast relay routine 345, the processor component 350 of each of the one or more routers 300 may aggregate ACK messages transmitted upstream by at least a subset of the client devices 100 and/or other router(s) 300, and may transmit an aggregate ACK message upstream toward the server 500 as part of reducing the overall amount of traffic occurring on the network 999 as part of the multicast session.
FIGS.3A-C each illustrate a block diagram of a portion of an embodiment of the communications system 1000 of either of FIGS. 1 A or IB in greater detail. More specifically, FIG.3A depicts aspects of the operating environment of an example embodiment of one of the client devices 100 in which the processor component ISO, in executing at least the multicast reception routine 14S, cooperates with the server 500 to open a multicast session by which the server 500 may transmit the data 530 to the client device 100 via the network in one or more multicast messages. FIG.3B depicts aspects of the operating environment of an example embodiment of one of the routers 300 in which the processor component 350, in executing at least the multicast relay routine 345, supports the opening and use of the multicast session between the server 500 and the client devices 100 to so transmit the data 530. FIG.3C depicts aspects of the operating environment of an example embodiment of the server 500 in which the processor component 550, in executing at least the multicast transmission routine 545, so cooperates with the client devices to open the multicast session by which the server 500 may so transmit the data 530 to the client devices 100. As recognizable to those skilled in the art, the various routines 140, 141, 145, 340, 341, 345, 540, 541 and 545, including the components of which each may be composed, are selected to be operative on whatever type of processor or processors that may be selected to implement applicable ones of the processor components 150, 350 or 550.
In various embodiments, each of the control routines 140, 340 and 540 may include one or more of an operating system, device drivers, virtual machine (VM) management routines and/or application-level routines (e.g., so-called "software suites" provided on disc media, "applets" obtained from a remote server, etc.). Where an operating system and/or VM management routines are included, the operating system and/or VM management routines may be any of a variety of available operating systems, VM management routines or combinations thereof appropriate for whatever corresponding ones of the processor components 150, 350 or 550. Where one or more device drivers are included, those device drivers may provide support for any of a variety of other components, whether hardware or software components, of corresponding ones of the devices 100, 300 or 500.
The control routines 140, 340 or 540 may include a communications component 149, 349 or 549, respectively, executable by whatever corresponding ones of the processor components 150, 350 or 550 to operate corresponding ones of the network interfaces 190, 390 or 590 to transmit and receive signals via the network 999 as has been described. Among those signals may be signals conveying the SYN and/or ACK messages, and/or messages conveying the data 530 among one or more of the devices 100, 300 and/or 500. As will be recognized by those skilled in the art, each of these communications components is selected to be operable with whatever type of interface technology is selected to implement corresponding ones of the network interfaces 190, 390 or 590. It should be noted that although much of what is disclosed herein is focused on communications through the network 999 in multicast sessions, embodiments are possible in which one or more of the client devices 100, the routers 300 and/or the server 500 may also engage communications in unicast sessions. More specifically, the unicast routines 141, 341 and/or 541 , if present within corresponding ones of the devices 100, 300 and/or 500, may each be any of a variety of routines that initiate and/or perform communications through the network 999 in unicast sessions in which a single device is the intended recipient of data transmitted by another device, instead of multiple devices being the intended recipient as is the case in a multicast session. By way of example, if the server 500 were to transfer the data 530 to only a single one of the client devices 100, then it may do so in a unicast session in which the unicast routines 141 and 541 cooperate to open the unicast session and then control that transfer of the data 530 in one or more unicast messages. In such an example, the unicast routine 341 within at least one of the one or more routers 300 may forward the one or more unicast messages of the server toward the one client device 100. In support of unicast sessions, the communications components 149, 349 and/or 549 may distinguish between messages associated with unicast sessions and messages associated with multicast sessions. Messages received via the network interfaces 190, 390 and/or 590 that are associated with unicast sessions may be conveyed by corresponding ones of the communications components 149, 349 and/or 549 to corresponding ones of the unicast routines 141, 341 and/or 541. Alternatively or additionally, messages received via the network interfaces 190, 390 and/or 590 that are associated with multicast sessions (e.g., the multicast session by which the data 530 is to be conveyed from the server 500 to multiple ones of the client devices 100) may be conveyed by corresponding ones of the communications components 149, 349 and/or 549 to corresponding ones of the multicast reception routine 145, the multicast relay routine 345 and/or the multicast transmission routine 545. In embodiments in which one or more of the control routines 140, 340 and 540 incorporate VM management routines, various ones of the routines 141, 145, 341, 345, 541 and 545 may be executed by corresponding ones of the processor components 150, 350 and 550 in separate VMs that are instantiated and/or maintained by such VM management routines. In such
embodiments, one or more of the communications components 149, 349 and 549 may so distinguish between and convey unicast and multicast messages as part of serving as virtual routers within corresponding ones of the devices 100, 300 and 500.
Turning to FIG.3A, the multicast reception routine 145 may incorporate a SYN transmit component 1453 executable by the processor component 150 to cooperate with the server 500 to begin the opening of a multicast session therebetween in which the server 500 is to transmit the data 530 to a group of the client devices 100 (including the client device 100 of FIG. 3A) in one or more multicast messages. The SYN transmit component 1453 may cooperate with the communications component 149 to operate the network interface 190 to transmit a unicast SYN message upstream toward the server 500 on its endpoint segment 199. That upstream unicast SYN message may include a device identifier of the client device 100, a sequence number randomly generated by the SYN transmit component 1453 (or elsewhere within the client device 100), and a multicast session identifier that identifies the particular multicast session in which the data 530 is to be so transmitted by the server 500 (thereby distinguishing this particular multicast session from others). In some embodiments, the multicast identifier may include an IF addresses designated for use with a multicast session, a port number within a range of port numbers designated for use with a multicast session, or a combination of both.
As previously discussed, all of the other client devices 100 of the group of client devices 100 that are to participate in the multicast session may each similarly transmit such a unicast SYN message upstream towards the server 500 on their corresponding endpoint segments 199. As also previously discussed, all of such upstream unicast SYN messages transmitted by each of the client devices 100 of the group of client devices (including the client device 100 of FIG. 3A) towards the server 500 may pass through one or more of the routers 300.
Turning to FIG.3B, the multicast relay routine 345 may incorporate a session component 3453 executable by the processor component 350 to enable the server 500 and the group of client devices 100 (including the client device 100 of FIG. 3A) to cooperate to open the multicast session therebetween and through the one or more routers 300 (including the router 300 of FIG. 3B). The session component 3453 may cooperate with the communications component 349 to operate the network interface 390 to receive one or more of the upstream unicast SYN messages transmitted by at least a subset of the client devices 100 of the group of client devices 100 (including the client device 100 of FIG. 3A) upstream toward the server 500. Upon receiving the one or more upstream unicast SYN messages, the session component 3453 may store an indication of the multicast session identifier in a session entry 333 of the multicast tracking data 335, along with indications of the quantity of such upstream unicast SYN messages that are received from each downstream endpoint segment 199 and/or downstream intermediate segment 399 to which the router 300 is connected. It should be noted that where there is more than one of the routers 300, multiple ones of the upstream unicast SYN messages may be received through a single intermediate segment 399 that couples the router 300 of FIG. 3B to another one of the routers 300 that is downstream from the router 300 of FIG. 3B.
Alternatively or additionally, in some embodiments, the session component 3453 may store indications of the device identifiers of each of the client devices 100 from which one of the upstream unicast SYN messages is received correlated to which downstream endpoint segment 199 and/or downstream intermediate segment 399 that the router 300 is coupled to and from which each such upstream unicast SYN message was received. In addition to storing such information about each such upstream unicast SYN message that is received, the session component 3453 may cooperate with the communications component 349 to operate the network interface 390 to forward each of those received upstream unicast SYN messages further upstream towards the server 500.
Turning to FIG.3C, the multicast transmission routine 545 may incorporate a SYN receive component 5453 executable by the processor component 550 to cooperate with the group of client devices 100 (including the client device 100 of FIG. 3A) to open the multicast session therebetween. The SYN receive component 5453 may cooperate with the
communications component 549 to operate the network interface 590 to receive one or more of the upstream unicast SYN messages transmitted by the group of client devices 100 (including the client device 100 of FIG. 3 A) through the one or more routers 300 and the root segment 599. Upon receiving each of the upstream unicast SYN messages, the SYN receive component 5453 may store an indication of the device identifier of the one of the client devices 100 that transmitted it in a session entry 533 within a portion of the multicast tracking data 535 in which the SYN receive component 5453 may also store an indication of the multicast session identifier.
In addition to storing such information about each such upstream unicast SYN message that is received, the SYN receive component 5453 may cooperate with the communications component 549 to operate the network interface 590 to transmit a unicast ACK message downstream toward each one of the client devices 100 from which each such upstream unicast SYN message is received. Each such downstream unicast ACK message may include a device identifier of the server 500 and the multicast session identifier. Each such downstream unicast ACK message may also include an acknowledgement number generated by the SYN receive component 5453 (or elsewhere within the server 500) by adding the value of 1 to the sequence number in the upstream unicast SYN message being responded to with that downstream unicast ACK message.
Unlike ACK messages that may otherwise be transmitted by the server 500 in response to the receipt of SYN messages from the client devices 100 that request to participate in a unicast session, each of these downstream unicast ACK messages transmitted by the server 500 in response the receipt of one of the upstream unicast SYN messages transmitted by one of the client devices to request to participate in the multicast session may not be accompanied by a unicast SYN message. Instead, and as will shortly be explained, these individual unicast SYN messages that might otherwise accompany the downstream unicast ACK messages are replaced by a single downstream multicast SYN message.
Returning to FIG.3B, the multicast relay routine 345 may incorporate a relay component 3454 executable by the processor component 350 to forward at least a subset of the downstream unicast ACK messages transmitted by the server 500 further downstream towards at least a subset of the client devices 100 of the group of client devices 100. More precisely, the relay component 3454 may cooperate with the communications component 349 to operate the network interface 390 to receive one or more of the unicast ACK messages transmitted downstream by the server 500 toward the group of client devices 100 (including the client device 100 of FIG. 3A). Again, where there are more than one of the routers 300, the router 300 of FIG. 3B may receive only a subset of these downstream unicast ACK messages. The relay component 3454 may then cooperate with the communications component 349 to operate the network interface 390 to relay each of the downstream unicast ACK messages received by the router 300 of FIG. 3B further downstream on an endpoint segment 199 or an intermediate segment 399 to which the router 300 of FIG. 3B may be coupled, and towards the ones of the client devices 100 for which each of these downstream unicast ACK messages is intended.
Returning to FIG.3A, in some embodiments, the SYN transmit component 1453 may monitor the amount of time that elapses from the transmission of an upstream unicast SYN message to the server 500 to when the downstream unicast ACK message expected from the server 500 in response is actually received. If a predetermined amount of time so elapses without that ACK message having been received, then the SYN transmit component 1453 may determine that a timeout error has occurred. In response to such a timeout error, the SYN transmit component 1453 may retransmit that upstream unicast SYN message to the server 500 to again request to participate in the multicast session to receive the data 530.
FIG.4A depicts, in more detail, such transmissions of upstream unicast SYN messages by three client devices 100a, 100b and 100c through the network 999, followed by such transmissions of downstream unicast ACK messages by the server 500 through the network 999 as part of opening the multicast session in which the server is to transmit the data 530 to three of the client devices 100 (each separately designated as 100a, 100b and 100c) in one or more multicast transmission. Also depicted are indications of operating states of the client device 100a and of the server 500 associated with the exchanges of these messages. However, for the sake of reducing visual clutter, operating states of the client devices 100b and 100c, which resemble those of the client device 100a, are not shown. As depicted in FIG. 4A, initially, each of the client devices lOOa-c and the server 500 may be operating in a state in which the multicast session is "closed" such that the client devices lOOa-c and the server 500 are not yet prepared to engage in the multicast transmission of the data 530 from the server 500 to the client devices lOOa-c. Then, the server 500 transitions from its session closed state to a "listen" state in which the server 500 is to await receipt of the upstream unicast SYN messages from each of the client devices lOOa-c. Separately, each of the client devices lOOa-c transmits its upstream unicast SYN message toward the server 500 to request to participate in the multicast session. As each of the client devices lOOa-c does so, each transitions to a "SYN sent" state in which each awaits receipt of a corresponding one of the downstream unicast ACK messages to be transmitted by the server 500 in response to the upstream unicast SYN messages just transmitted. Again, each of the upstream unicast SYN messages may include the device ID of the one of the client devices lOOa-c that transmitted it, a sequence number randomly generated by that one of the client devices lOOa-c, and/or the multicast session ID for the multicast session.
As also depicted, as each such upstream unicast SYN message passes upstream through a router 300 interposed between the client devices lOOa-c and the server 500, the router 300 forwards it upstream toward the server 500. Also, and as previously discussed, the router 300 may track each such upstream unicast SYN message by storing an indication of the multicast session identifier along with a count of upstream unicast SYN messages received from each downstream segment of the network 999 (e.g., each downstream endpoint segment 199 and/or downstream intermediate segment 399) to which the router 300 is coupled. Alternatively or additionally, and as also previously discussed, the router 300 may store an indication of the device identifier of each one of the client devices 100a-c from which the router 300 receives one of the upstream unicast SYN messages.
As further depicted, the server 500 receives each of these upstream unicast SYN messages and separately responds to each by transmitting a downstream unicast ACK message. Again, each of the downstream unicast ACK messages may include the device ID of the server 500, an acknowledgement number generated by incrementing the sequence number of the corresponding upstream unicast SYN message by the value of 1 , and/or the multicast session ED for the multicast session. The server 500 transitions among multiple "SYN round" states as it receives and responds to each of these upstream unicast SYN messages. Upon receiving and responding to the upstream unicast SYN messages transmitted by each of the client devices lOOa-c, the server 500 may have received and responded to all of the upstream unicast SYN messages that the server 500 is expecting, and may transition to a "SYN received" state in which the server 500 ceases to listen for any more of such upstream unicast SYN messages requesting participation in the multicast session.
It should be noted that despite the depiction of a particular order in which the client devices lOOa-c transmit the upstream unicast SYN messages, it is expected that the client devices lOOa-c would not coordinate the timing of those transmissions among themselves, and so these upstream unicast SYN messages may be transmitted in any order. It should also be noted that despite the depiction of a particular order in which the server 500 responds to each of those upstream unicast SYN messages by transmitting corresponding a downstream unicast ACK message, it may be that the order in which the server 500 responds to those upstream unicast SYN messages may differ from the order in which the server 500 receives those upstream unicast SYN messages.
Returning to FIG.3C, the multicast transmission routine 545 may incorporate a SYN transmit component 5454 executable by the processor component 550 to engage in further cooperation with the group of client devices 100 (including the client device 100 of FIG. 3A) to open the multicast session therebetween. As previously discussed, the downstream unicast ACK messages individually transmitted in response to each upstream unicast SYN message received from the group of client devices 100 that are to participate in the multicast session (including the client device 100 of FIG. 3 A) may not be accompanied by a SYN message. Instead, and as also previously discussed, the transmitting of any SYN message to the group of client devices 100 may be delayed until all of the upstream unicast SYN messages expected to be received from the group of client devices 100 have actually been received at the server 500, and then a single downstream multicast SYN message may be transmitted to the group of client devices 100 by the server 500.
In some embodiments, the session entry 533 for the multicast session in which the data 530 is to be transmitted to the group of client devices 100 may have been generated earlier with a list of the device identifiers of the particular client devices 100 that are the members of the group of client devices 100. Thus, the SYN transmit component 5454 may be able to determine when all of the upstream unicast SYN messages that are expected to be received have actually been received at the server 500 by comparing the device identifiers in each of those upstream unicast SYN messages to the list of device identifiers in the session entry 533. However, in other embodiments, other criteria may be used to determine when all of the upstream unicast SYN messages that are expected to be received have actually been received, such as a cutoff time by which any such upstream unicast SYN messages are expected to be received, and/or a maximum quantity of upstream unicast SYN messages that may be received before no more upstream unicast SYN messages will be accepted. It may be deemed desirable to employ such other criteria where the multicast transmission of the data S30 is required to begin at or no later than a predetermined time, and/or where there is a reason to impose an upper limit on the quantity of the client devices 100 to which the data 530 may be transmitted in the multicast session (e.g., a licensing limitation, etc.).
Regardless of the exact manner in which the SYN transmit component S454 may determine that all of the upstream unicast SYN messages that are expected to be received at the server 500 have actually been received, upon determining that all expected upstream unicast SYN messages have actually been received, the SYN transmit component 5454 may cooperate with the communications component 549 to operate the network interface 590 to transmit the single multicast SYN message downstream on the root segment 599 toward the group of client devices 100 (including the client device 100 of FIG. 3A). This downstream multicast SYN message may include the device identifier of the server 500 and the multicast session identifier. The downstream multicast SYN message may also include a sequence number randomly generated by the SYN transmit component 5454 (or elsewhere within the server 500) such that it is in no way related to any of the sequence numbers in any of the upstream unicast SYN messages received at the server 500 from the group of client devices 100.
Returning to FIG.3B, the relay component 3454 may cooperate with the
communications component 349 to operate the network interface 390 to receive the multicast SYN message transmitted downstream by the server 500 toward the group of client devices 100 (including the client device 100 of FIG. 3A). The relay component 3454 may then cooperate with the communications component 349 to operate the network interface 390 to forward the multicast SYN message further downstream. In so doing, the relay component 3545 may limit such the forwarding of the downstream multicast SYN message to only downstream endpoint segments) 199 and/or downstream intermediate segments) 399 to which the router 300 of FIG. 3B is coupled, and from which die router 300 of FIG. 3B earlier received at least one of the upstream unicast SYN messages.
Returning to FIG. 3 A, the multicast reception routine 145 may incorporate a SYN receive component 1454 executable by the processor component 150 to further cooperate with the server 500 to open the multicast session therebetween. More specifically, the SYN receive component 1454 may cooperate with the communications component 149 to operate the network interface 190 to receive the downstream multicast SYN message transmitted downstream by the server 500 toward the group of client devices 100 (including the client device 100 of FIG. 3A). Upon receiving the downstream multicast SYN message, the SYN receive component 1454 may cooperate with the communications component 149 to operate the network interface 190 to transmit a unicast ACK message upstream toward the server 500. The upstream unicast ACK message may include a device identifier of the client device 100 and the multicast session identifier. The upstream unicast ACK message may also include an acknowledgement number generated by the SYN receive component 1454 (or elsewhere within the client device 100) by incrementing the sequence number of the downstream multicast SYN message by the value of 1.
Returning to FIG. 3B, the multicast relay routine 345 may incorporate an aggregation component 3456 executable by the processor component 350 to aggregate upstream unicast ACK messages transmitted by at least a subset of the client devices 100 of the group of client devices 100 (including the client device 100 of FIG. 3A), and to transmit a single aggregate unicast ACK message upstream toward the server 500 to reduce overall network traffic on the network 999. Again, where there are more than one of the routers 300, the router 300 of FIG. 3B may receive only a subset of these upstream unicast ACK messages. More precisely, the aggregation component 3456 may cooperate with the communications component 349 to operate the network interface 390 to receive one or more of the upstream unicast ACK messages transmitted by at least a subset of the client devices 100 of the group of client devices 100 (including the client device 100 of FIG. 3A) upstream toward the server 500. The aggregation component 3456 may retrieve, from the session entry 333 associated with the multicast session, indications of quantities of upstream unicast SYN messages that the router 300 of FIG. 3B had earlier received from each downstream endpoint segment 199 and/or downstream intermediate segment 399 to which the router 300 of FIG. 3B is coupled. Alternatively or additionally, the aggregation component 3456 may so retrieve identifiers of client devices 100 from which the router 300 of FIG. 3B had earlier received upstream unicast SYN messages. The aggregation component 3456 may then use such indications of quantities and/or indications of identifiers to determine whether the router 300 of FIG. 3B has received all of the upstream unicast ACK messages that it should from whichever one(s) of the client devices 100 of the group of client devices 100 that are downstream from the router 300 of FIG. 3B. In response to determining that the router 300 of FIG. 3B has received all expected upstream unicast ACK messages, the aggregation component 3456 may then cooperate with the communications component 349 to operate the network interface 390 to transmit a single aggregate unicast ACK message upstream towards the server 500.
Returning to FIG.3C, the SYN transmit component 5454 may cooperate with the communications component 549 to operate the network interface 590 to receive a single aggregate unicast ACK message transmitted upstream by whichever router 300 of the one or more routers 300 that is furthest upstream so as to be coupled to the root segment 599. Again, where there are multiple routers 300, at least one router 300 may receive an aggregate unicast ACK message transmitted upstream by another router 300 that is further downstream via an intermediate segment 399 extending therebetween, and may itself aggregate that aggregate unicast ACK message in much the same was as it would an upstream unicast ACK message received directly from a client device 100.
Regardless of how many routers 300 there are between the server 500 and the group of client devices 100, the reception at the server 500 of a single aggregate unicast ACK message via the root segment 599 signifies that the multicast session by which the server 500 is to transmit the data 530 to the group of client devices 100 in one or more multicast transmissions is open. Stated differently, such receipt of a single aggregate unicast ACK message provides the SYN transmit component 5454 with confirmation that the group of client devices 100 are ready to receive the one or more multicast transmissions by which the data 530 is to be transmitted to them by the server 500.
FIG.4B depicts, in more detail, such transmissions of the downstream multicast SYN message by the server 500 through the network 999, followed by such transmissions of upstream unicast ACK messages by the client devices lOOa-c and the corresponding transmission of the upstream aggregate ACK message to the server 500 by the router 300 through the network 999. Again, operating states of the client device 100a and of the server 500 associated with the exchanges of these messages are depicted, but not operating states of the client devices 100b and 100c for the sake of reducing visual clutter.
As depicted in FIG. 4B, having transitioned to the "SYN received" state as a result of the exchanges of messages described in reference to FIG.4A, the server 500 transmits its multicast SYN message downstream toward the client devices lOOa-c. Again, the downstream multicast SYN message may include the device ID of the server 500, a sequence number randomly generated by the server 500, and/or the multicast session ED for the multicast session.
Upon receiving the downstream multicast SYN message, the router 300 may forward the downstream multicast SYN message further downstream to each of the client devices lOOa-c. Again, in so doing, the router 300 may limit its forwarding of the downstream multicast SYN message to only the downstream endpoint segment(s) 199 and/or the intermediate segment(s) 399 that are coupled to the router 300 and from which the router 300 earlier received one or more of the upstream unicast SYN messages. As also depicted, each of the client devices lOOa-c receives a forwarded form of the downstream multicast SYN message and each separately responds by transmitting an upstream unicast ACK message towards the server 500. Again, each of these upstream unicast ACK messages may include the device ID of the one of the client devices lOOa-c that transmits it, an acknowledgement number generated by incrementing the sequence number of the downstream multicast SYN message by the value of 1, and/or the multicast session ID for the multicast session. With its transmission of one of the upstream unicast ACK messages, the client device 100a transitions to a state in which the multicast session by which the client device 100a is to receive the data 530 in one or more multicast transmissions is now open inasmuch as the client device 100a is now prepared to so receive the data 530.
Upon receiving the upstream unicast ACK messages transmitted by each of the client devices lOOa-c, the router 300 may aggregate these three upstream unicast ACK messages and may transmit a single aggregate unicast ACK message further upstream toward the server 500 upon receiving all three of these upstream unicast ACK messages. Stated differently, where these three upstream unicast ACK messages are, together, all of the upstream unicast ACK messages that the router 300 expected to receive, the router 300 may condition the transmission of a single aggregate upstream ACK message toward the server on a determination that all expected upstream unicast ACK messages have been received as a result of receiving these three messages from the client devices lOOa-c. As part of determining whether all of the upstream unicast ACK messages that were expected to be received have actually been received, the router 300 may retrieve the previously stored indications of the quantities of the upstream unicast SYN messages that the router 300 earlier received from each of the downstream network segments 199 and/or 399 to which the router 300 is coupled. Alternatively or additionally, the router may retrieve previously stored indications of which client devices lOOa-c had earlier transmitted one of the upstream unicast SYN messages that were earlier received by the router 300.
The reception at the server 500 of the single aggregate unicast ACK message transmitted by the router 300 signifies that the multicast session by which the server 500 is to transmit the data 530 to the client devices lOOa-c in one or more multicast messages is open. As further depicted, in response to the receipt of this single aggregate unicast ACK message, the server 500 also transitions to a state in which the multicast session by which the server 500 transmits the data 530 to the client devices lOOa-c in one or more multicast messages is now open inasmuch as all three of the client devices lOOa-c are confirmed to be prepared to so receive the data 530.
Returning to FIG.3C, the multicast transmission routine 545 may incorporate a transmission component 5455 executable by the processor component 550 to transfer the data 530 to multiple client devices 100 in one or more multicast messages during the multicast session. In response to the reception of the single upstream aggregate ACK message at the server 500, the transmission component 5455 may cooperate with the communications component 549 to operate the network interface 590 to transmit the data 530 downstream in one or more multicast data messages toward the group of client devices 100 (including the client device 100 of FIG. 3 A). Not unlike the downstream multicast SYN message, each of the one or more downstream multicast data messages may include the device identifier of the server 500 and the multicast session identifier. Also, each such downstream multicast data message may also include a sequence number generated by the transmission component 5455 (or elsewhere within the server 500) to provide an indication of the quantity of bytes of the data 530 that have been already been transmitted. More specifically, the first multicast data message to transfer the data 530 to the group of client devices 100 may include a sequence number generated by incrementing the sequence number of the earlier transmitted downstream multicast SYN message by the value of 1. Any subsequent multicast data message to so transfer the data 530 may include a sequence number generated by incrementing the sequence number of the preceding multicast data message by the quantity of bytes of the data 530 that were transferred in that preceding multicast data message.
Returning to FIG.3B, the relay component 3454 may cooperate with the
communications component 349 to operate the network interface 390 to receive the one or more multicast data messages transmitted downstream by the server 500 toward the group of client devices 100 (including the client device 100 of FIG. 3A). The relay component 3454 may then cooperate with the communications component 349 to operate the network interface 390 to forward the one or more multicast data messages further downstream in a manner not unlike that in which the single downstream multicast SYN message was forwarded.
Returning to FIG.3A, the multicast reception routine 145 may incorporate a reception component 1455 executable by the processor component 150 to receive the data 530 in one or more multicast data messages during the multicast session therebetween. The reception component 1455 may cooperate with the communications component 149 to operate the network interface 190 to receive the one or more downstream multicast data messages transmitted downstream by the server 500 toward the group of client devices 100 (including the client device 100 of FIG. 3 A). Upon receiving the one or more downstream multicast data messages, the reception component 1455 may cooperate with the communications component 149 to operate the network interface 190 to transmit a unicast ACK message upstream toward the server 500. Again, the upstream unicast ACK message may include a device identifier of the client device 100 and the multicast session identifier. Also, the upstream unicast ACK message may include an acknowledgement number generated by the reception component 14SS (or elsewhere within the client device 100) by first identifying the one of the data messages among those that have been received so far that is last in order, and by then incrementing the sequence number of that last in order data message by the quantity of bytes of the data 530 that it contains.
Returning to FIG.3B, this upstream unicast ACK message transmitted in response to the one or more downstream multicast data messages may then be forwarded through the router 300 and upstream to the server 500 in much the same manner as was the earlier upstream unicast ACK message transmitted in response to the downstream multicast SYN message. Returning to FIG.3C, upon receiving a single aggregate unicast ACK message transmitted to the server 500 from the aggregation of the upstream unicast ACK messages transmitted by the group of client devices 100 in response to receiving the one or more downstream multicast data messages, the server 500 may, depending on the amount of data 530 that may remain, transmit still more downstream multicast data messages, or transmit one or more messages downstream toward the group of client devices 100 indicating that the multicast session is now closed.
FIG.5 depicts, in more detail, such transmissions of die one or more downstream multicast data messages by the server 500 through the network 999, followed by such transmissions of upstream unicast ACK messages by the client devices lOOa-c and the corresponding transmission of the upstream aggregate ACK message to the server 500 by the router 300 through the network 999. Again, operating states of the client device 100a and of the server 500 associated with the exchanges of these messages are depicted, but not operating states of the client devices 100b and 100c for the sake of reducing visual clutter.
As depicted in FIG. 5, having transitioned to the state in which the multicast session is open as a result of the exchanges of messages described in reference to FIG.4B, the server 500 transmits its one or more multicast data messages downstream toward the client devices lOOa-c. Again, each of the one or more downstream multicast data messages may include the device ID of the server 500 and/or the multicast session ED for the multicast session. Also again, each of the one or more downstream multicast data messages may include a sequence number generated in a manner that is initially based on the sequence number of the downstream multicast SYN message, and that is incremented by an amount indicative of die quantity of bytes of the data 530 that have been already transferred in any preceding downstream multicast data messages.
Upon receiving the one or more downstream multicast data messages, the router 300 may forward the one or more downstream multicast data messages further downstream to each of the client devices lOOa-c in much the same manner as the earlier downstream multicast SYN message was forwarded.
As also depicted, each of the client devices lOOa-c receives a forwarded form of the one or more downstream multicast data messages and each separately responds by transmitting an upstream unicast ACK message towards the server 500. Again, each of these upstream unicast ACK messages may include the device ID of the one of the client devices lOOa-c that transmits it, and/or the multicast session ID for the multicast session. Again, each such unicast ACK message may include an acknowledgement number generated by first identifying the one of the data messages among those that have been received so far that is last in order, and by men incrementing the sequence number of that last in order data message by the quantity of bytes of the data 530 that it contains.
Upon receiving these upstream unicast ACK messages transmitted by each of the client devices lOOa-c, the router 300 may aggregate these three upstream unicast ACK messages and may transmit a single aggregate unicast ACK message further upstream toward the server 500 in much the same manner as the earlier upstream unicast ACK messages transmitted by each of the client devices lOOa-c in response to receiving the downstream multicast SYN message. The reception at the server 500 of the single aggregate unicast ACK message transmitted by the router 300 signifies that the one or more downstream multicast data messages conveying the data 530 were successfully received by the client devices lOOa-c.
However, while the successful reception and acknowledgement of downstream multicast messages is discussed in reference to FIGS.3A-C and is depicted in FIGS.4B and 5, it is recognizable to those skilled in the art that errors in transmission may occur such that one or more client devices 100 may not receive a downstream multicast message transmitted by the server 500 and/or the upstream unicast ACK message transmitted by one or more client devices 100 in response to successfully receiving such a downstream multicast message may itself not be received. Returning to FIG.3B, were either type of transmission error to occur, then at least one upstream unicast ACK message that is expected to be received by the aggregation component 3456 would not be so received. In response, the aggregation component 3456 may not proceed with cooperating with the communications component 349 to operate the network interface 390 to transmit an aggregate unicast ACK message upstream towards the server 500. As a result, no aggregate unicast ACK message may be received at the server 500.
Returning to FIG.3C, the multicast transmission routine 545 may incorporate a retransmission component S456 executable by the processor component 550 to cause a retransmission of either the downstream multicast SYN message transmitted to open the multicast session or the one or more downstream multicast data messages to transfer the data 530 to multiple client devices 100 during the multicast session. In response to the lack of reception of the single upstream aggregate ACK message expected at the server 500 following the transmission of the downstream multicast SYN message or following the transmission of the one or more downstream multicast data messages, the retransmission component 5456 may cooperate with the communications component 549 to operate the network interface 590 to retransmit either the downstream multicast SYN message or the one or more downstream multicast data messages toward the group of client devices 100 (including the client device 100 of FIG. 3 A).
Returning to FIG.3B, the relay component 3454 may cooperate with the
communications component 349 to operate the network interface 390 to receive the retransmitted downstream multicast SYN message or the retransmitted one or more downstream multicast data messages from the server 500. The relay component 3454 may then cooperate with the communications component 349 to operate the network interface 390 to forward the retransmitted downstream multicast SYN message or to forward the retransmitted one or more downstream multicast data messages.
However, as additionally depicted, the multicast relay routine 345 may incorporate a filter component 3455 executable by the processor component 350 to cooperate with the relay component 3554 to limit such downstream forwarding of such retransmitted downstream messages to only downstream endpoint segments) 199 and/or downstream intermediate segments) 399 to which the router 300 of FIG. 3B is coupled, and from which the router 300 of FIG. 3B earlier received at least one of the upstream unicast SYN messages, but from which the router 300 of FIG. 3B did not receive an upstream unicast ACK message, thereby leading to such retransmission. The filter component 3455 may identify these particular downstream segments 199 and/or 399 by referring to the indications of which downstream segments 199 and/or 399 are the one(s) from which upstream unicast SYN messages were earlier received in the session entry 333 for this multicast session.
Returning to FIG. 3C, in another possible error condition involving multiple ones of the downstream multicast data messages that transfer the data 530 to the group of client devices 100, it may be that one of the client devices 100 of the group of client devices 100 and/or the router 300 of FIG. 3B does not receive one of the downstream multicast data messages in a manner that results in the receipt of a discontiguous set of the downstream multicast data messages. As familiar to those skilled in the art, a possible result may be that the device that receives this discontiguous set may repeated transmit unicast ACK messages upstream toward the server 500 in which the acknowledgement number never increases beyond a value that reflects the quantity of bytes of the data 530 that were received up to die discontinuity in the set of data messages. In response to receiving such multiple unicast ACK messages in which the acknowledgement number does not change, the retransmission component 5456 may cooperate with the communications component 549 to operate the network interface 590 to retransmit at least the one of the data messages that was not received, using the unchanging acknowledgement number of those multiple upstream unicast ACK messages as an indicator of which of the data messages is the one that was not received.
Returning to FIG.3B, the filer component 3455 may have also identified this error condition based on the same multiple upstream unicast ACK messages with an unchanging acknowledgement number, and may have stored an indication of which downstream segment 199 or 399 those multiple upstream unicast ACK messages were received from. Upon receiving the retransmitted one or more data messages, the filter component 3455 may cooperate with the relay component to cause forwarding of the retransmitted one or more data messages only through that identified downstream segment. Again, in this way unnecessary consumption of network bandwidth on others of the downstream segments 199 and/or 399 to which the router 300 of FIG. 3B is coupled is avoided.
In various embodiments, the processor components 450 and/or 550 may include any of a wide variety of commercially available processors. Further, one or more of these processor components may include multiple processors, a multi-threaded processor, a multi-core processor (whether the multiple cores coexist on the same or separate dies), and/or a multi-processor architecture of some other variety by which multiple physically separate processors are in some way linked.
In various embodiments, the storage 560 may be based on any of a wide variety of information storage technologies, possibly including volatile technologies requiring the uninterrupted provision of electric power, and possibly including technologies entailing the use of machine-readable storage media that may or may not be removable. Thus, each of these storages may include any of a wide variety of types (or combination of types) of storage device, including without limitation, read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM (DDR-DRAM), synchronous DRAM
(SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory (e.g., ferroelectric polymer memory), ovonic memory, phase change or ferroelectric memory, siUcon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, one or more individual ferromagnetic disk drives, or a plurality of storage devices organized into one or more arrays (e.g., multiple ferromagnetic disk drives organized into a Redundant Array of Independent Disks array, or RAID array). It should be noted that although each of these storages is depicted as a single block, one or more of these may include multiple storage devices that may be based on differing storage technologies. Thus, for example, one or more of each of these depicted storages may represent a combination of an optical drive or flash memory card reader by which programs and/or data may be stored and conveyed on some form of machine- readable storage media, a ferromagnetic disk drive to store programs and/or data locally for a relatively extended period, and one or more volatile solid state memory devices enabling relatively quick access to programs and/or data (e.g., SRAM or DRAM). It should also be noted that each of these storages may be made up of multiple storage components based on identical storage technology, but which may be maintained separately as a result of specialization in use (e.g., some DRAM devices employed as a main storage while other DRAM devices employed as a distinct frame buffer of a graphics controller).
In various embodiments, at least a portion of the network interface 590 may employ any of a wide variety of signaling technologies enabling these devices to be coupled to other devices as has been described. Each of these interfaces includes circuitry providing at least some of the requisite functionality to enable such coupling. However, each of these interfaces may also be at least partially implemented with sequences of instructions executed by corresponding ones of the processor components (e.g., to implement a protocol stack or other features). Where electrically and/or optically conductive cabling is employed, these interfaces may employ signaling and/or protocols conforming to any of a variety of industry standards, including without limitation, RS-232C, RS-422, USB, Ethernet (IEEE-802.3) or IEEE- 1394. Where the use of wireless signal transmission is entailed, these interfaces may employ signaling and/or protocols conforming to any of a variety of industry standards, including without limitation, IEEE 802.1 la, 802.1 lb. 802.1 lg, 802.16, 802.20 (commonly referred to as "Mobile Broadband Wireless Access"); Bluetooth; ZigBee; or a cellular radiotelephone service such as GSM with General Packet Radio Service (GSM/GPRS), CDMA/lxRTT, Enhanced Data Rates for Global Evolution (EDGE), Evolution Data Only/Optimized (EV-DO), Evolution For Data and Voice (EV-DV), High Speed Downlink Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA), 4G LTE, etc.
FIG.6 illustrates an embodiment of a logic flow 2100. The logic flow 2100 may be representative of some or all of the operations executed by one or more embodiments described herein. More specifically, the logic flow 2100 may illustrate operations performed by the processor component 550 in executing one or more of the control routine 540 and the multicast transmission routine 545; and/or performed by other component(s) of the server 500. In particular, the logic flow 2100 is focused on operations to open the multicast session to transmit the data 530 to the client devices 100 in one or more multicast transmission, and on operations to effect the one or more multicast transmissions.
At 2110, a processor component of a server (e.g., the processor component 550 of the server 500) may receive a unicast SYN message transmitted to the server from a client device (e.g., one of the client devices 100), and conveying a request for that client device to participate in a multicast session in which the server is to transmit data to multiple client devices in one or more multicast data messages (e.g., the data 530). As has been discussed, such a unicast SYN message transmitted by a client device to a server may include an identifier of the multicast session that the client device is requesting to participate in. Also, such an identifier of the multicast session may be an IP address in a range of IP addresses designated to be associated with multicast sessions, may be a port number in a range of port numbers designated to be associated with multicast sessions, or may be a combination of both.
At 2112, in response to receiving the unicast SYN message from the client device, the processor component may transmit a unicast ACK message back to that client device to acknowledge receipt of the unicast SYN message conveying the request to participate in the multicast session. However, as previously discussed, that unicast ACK message may not include or otherwise be accompanied by a corresponding unicast SYN message from the server to that client device.
At 2120, a check may be made by the processor component as to whether any more unicast SYN messages conveying requests to participate in the multicast session are expected. As has been discussed, the server may maintain a list of client devices from which such unicast SYN messages are expected to be received, or may employ other criteria for determining whether or not all of the unicast SYN messages mat are expected to be received have actually been received. If, at 2120, there are more of such unicast SYN messages expected to be received, then the processor component may return to awaiting and then receiving another of such unicast SYN messages at 2110.
However, if at 2120, no more of such unicast SYN messages are expected to be received, then the processor component may transmit a multicast SYN message to all of the client devices that are to participate in the multicast session at 2130. As previously discussed, one or more routers interposed between the server and the client devices may limit forwarding of the multicast SYN message transmitted by the server to only network segments that lead to the client devices from which the one or more routers received the unicast SYN messages requesting to participate in the multicast session.
At 2140, a check may be made by the processor component as to whether an aggregate unicast ACK message has been received at the server to acknowledge successful receipt of the multicast SYN message by all of the client devices that are to participate in the multicast session. As previously discussed, the one or more routers may cooperate to aggregate the unicast ACK messages separately transmitted by each of those client devices in response to receiving the multicast SYN message, and to transmit a single unicast ACK message to the server in response to receiving such separate unicast ACK messages from all of those client devices.
If at 2140, no such aggregate unicast ACK message has been received, then the server may retransmit the multicast SYN message at 2130. As has been discussed, the one or more routers may engage in filtering that identifies which downstream network segments) to forward the retransmitted multicast SYN message to in order minimize the consumption of network bandwidth arising from such retransmission.
However, if at 2140, such an aggregate unicast ACK message has been received, then the processor component may transmit one or more multicast data messages to effect the conveying of the data to all of the client devices that are to participate in the multicast session at 2150. Again, just as with the multicast SYN message, the one or more routers may limit forwarding of the multicast data messages transmitted by the server to only network segments that lead to the client devices from which the one or more routers received the unicast SYN messages requesting to participate in the multicast session.
At 2160, a check may be made by the processor component as to whether an aggregate unicast ACK message has been received at the server to acknowledge successful receipt of the one or more multicast data messages by all of the client devices that are to participate in the multicast session. If at 2160, no such aggregate unicast ACK message has been received, then the server may retransmit the one or more multicast data messages at 2150.
FIG.7 illustrates an embodiment of a logic flow 2200. The logic flow 2200 may be representative of some or all of the operations executed by one or more embodiments described herein. More specifically, the logic flow 2200 may illustrate operations performed by the processor component 150 in executing one or more of the control routine 140 and the multicast reception routine 145; and/or performed by other components) of one of the client devices 100. In particular, the logic flow 2200 is focused on operations to open the multicast session to transmit the data 530 to the client device 100 in one or more multicast transmission from the server 500, and on operations to effect the one or more multicast transmissions.
At 2210, a processor component of a client device (e.g., the processor component ISO of the one of the client devices 100) may transmit a unicast SYN message to a server (e.g., the server 500), where the unicast SYN message conveys a request for the client device to participate in a multicast session in which the server is to transmit data to multiple client devices in one or more multicast transmissions (e.g., the data 530). Again, such a unicast SYN message transmitted by a client device to the server may include an identifier of the multicast session that the client device is requesting to participate in.
At 2220, a unicast ACK message may be received at the client device from the server to acknowledge receipt by the server of the unicast SYN message transmitted by the client device at 2210. As has been discussed, the receipt of this unicast ACK message may cause the client device to transition to a state in which the client device waits for a multicast SYN message from the server. At 2230, the client device may receive that multicast SYN message from the server. However, as has also been discussed, if the unicast ACK message is not received within a predetermined amount of time following the transmission of the unicast SYN message at 2210, then the client device may treat the lack of receipt of the unicast ACK message as a timeout condition and may retransmit that unicast SYN message.
At 2240, the processor component may transmit a unicast ACK message to the server to acknowledge receipt of the multicast SYN message from the server. Again, one or more routers interposed between the server and the client devices may cooperate to aggregate the unicast ACK message transmitted by the client device with other such unicast ACK messages separately transmitted by other client devices in response to receiving the multicast SYN message, and may further cooperate to transmit a single unicast ACK message to the server in response to receiving such separate unicast ACK messages from all of those client devices. Thus, the unicast ACK message transmitted by the client device may be combined with such ACK messages from the other client devices to provide confirmation to the server that all of the client devices that are to participate in the multicast session have received the multicast SYN message.
At 2250, the client device may receive one or more multicast data messages from the server to effect the multicast transmission of the data to the client device, along with the other client devices. At 2260, the processor component may transmit a unicast ACK message to the server to acknowledge receipt of the one or more multicast data messages from the server.
FIG. 8 illustrates an embodiment of an exemplary processing architecture 3000 suitable for implementing various embodiments as previously described. More specifically, the processing architecture 3000 (or variants thereof) may be implemented as part of one or more of the devices 100, 200, 304, 305 or 500, and/or the controller 400. It should be noted that components of the processing architecture 3000 are given reference numbers in which the last two digits correspond to the last two digits of reference numbers of at least some of the components earlier depicted and described as part of these devices and/or controllers. This is done as an aid to correlating components of each.
The processing architecture 3000 includes various elements commonly employed in digital processing, including without limitation, one or more processors, multi-core processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input/output (I/O) components, power supplies, etc. As used in this application, the terms "system" and "component" are intended to refer to an entity of a device in which digital processing is carried out, that entity being hardware, a combination of hardware and software, software, or software in execution, examples of which are provided by this depicted exemplary processing architecture. For example, a component can be, but is not limited to being, a process running on a processor component, the processor component itself, a storage device (e.g., a hard disk drive, multiple storage drives in an array, etc.) that may employ an optical and/or magnetic storage medium, a software object, an executable sequence of instructions, a thread of execution, a program, and/or an entire device (e.g., an entire computer). By way of illustration, bom an application running on a server and the server can be a component One or more components can reside within a process and/or thread of execution, and a component can be localized on one device and/or distributed between two or more devices. Further, components may be communicatively coupled to each other by various types of communications media to coordinate operations. The coordination may involve the uni-directional or bi-directional exchange of information. For instance, the components may communicate information in the form of signals communicated over the communications media. The information can be implemented as signals allocated to one or more signal lines. A message (including a command, status, address or data message) may be one of such signals or may be a plurality of such signals, and may be transmitted either serially or substantially in parallel through any of a variety of connections and/or interfaces.
As depicted, in implementing the processing architecture 3000, a device includes at least a processor component 950, a storage 960, an interface 990 to other devices, and a coupling 959. As will be explained, depending on various aspects of a device implementing the processing architecture 3000, including its intended use and/or conditions of use, such a device may further include additional components, such as without limitation, a display interface 985. The coupling 959 includes one or more buses, point-to-point interconnects, transceivers, buffers, crosspoint switches, and/or other conductors and/or logic that communicatively couples at least the processor component 950 to the storage 960. Coupling 959 may further couple the processor component 950 to one or more of the interface 990, the audio subsystem 970 and the display interface 985 (depending on which of these and/or other components are also present). With the processor component 950 being so coupled by couplings 959, the processor component 950 is able to perform the various ones of the tasks described at length, above, for whichever one(s) of the aforedescribed devices implement the processing architecture 3000. Coupling 959 may be implemented with any of a variety of technologies or combinations of technologies by which signals are optically and/or electrically conveyed. Further, at least portions of couplings 959 may employ timings and/or protocols conforming to any of a wide variety of industry standards, including without limitation. Accelerated Graphics Port (AGP), CardBus, Extended Industry Standard Architecture (E-ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI-X), PCI Express (PCI-E), Personal Computer Memory Card International Association (PCMCIA) bus, HypeiTransport™, QuickPath, and the like.
As previously discussed, the processor component 950 (which may correspond to the processor component 450) may include any of a wide variety of commercially available processors, employing any of a wide variety of technologies and implemented with one or more cores physically combined in any of a number of ways.
As previously discussed, the storage 960 (which may correspond to the storage 460) may be made up of one or more distinct storage devices based on any of a wide variety of technologies or combinations of technologies. More specifically, as depicted, the storage 960 may include one or more of a volatile storage 961 (e.g., solid state storage based on one or more forms of RAM technology), a non-volatile storage 962 (e.g., solid state, ferromagnetic or other storage not requiring a constant provision of electric power to preserve their contents), and a removable media storage 963 (e.g., removable disc or solid state memory card storage by which information may be conveyed between devices). This depiction of the storage 960 as possibly including multiple distinct types of storage is in recognition of the commonplace use of more than one type of storage device in devices in which one type provides relatively rapid reading and writing capabilities enabling more rapid manipulation of data by the processor component 950 (but possibly using a "volatile" technology constantly requiring electric power) while another type provides relatively high density of non-volatile storage (but likely provides relatively slow reading and writing capabilities). Given the often different characteristics of different storage devices employing different technologies, it is also commonplace for such different storage devices to be coupled to other portions of a device through different storage controllers coupled to their differing storage devices through different interfaces. By way of example, where the volatile storage 961 is present and is based on RAM technology, the volatile storage 961 may be communicatively coupled to coupling 9S9 through a storage controller 965a providing an appropriate interface to the volatile storage 961 that perhaps employs row and column addressing, and where the storage controller 965a may perform row refreshing and/or other maintenance tasks to aid in preserving information stored within the volatile storage 961. By way of another example, where the non- volatile storage 962 is present and includes one or more ferromagnetic and/or solid-state disk drives, the non-volatile storage 962 may be communicatively coupled to coupling 9S9 through a storage controller 965b providing an appropriate interface to the non-volatile storage 962 mat perhaps employs addressing of blocks of information and/or of cylinders and sectors. By way of still another example, where the removable media storage 963 is present and includes one or more optical and/or solid-state disk drives employing one or more pieces of machine-readable storage medium 969, the removable media storage 963 may be communicatively coupled to coupling 959 through a storage controller 965c providing an appropriate interface to the removable media storage 963 that perhaps employs addressing of blocks of information, and where the storage controller 965c may coordinate read, erase and write operations in a manner specific to extending the lifespan of the machine-readable storage medium 969.
One or the other of the volatile storage 961 or the non- volatile storage 962 may include an article of manufacture in the form of a machine-readable storage media on which a routine including a sequence of instructions executable by the processor component 950 may be stored, depending on the technologies on which each is based. By way of example, where the non- volatile storage 962 includes ferromagnetic-based disk drives (e.g., so-called "hard drives"), each such disk drive typically employs one or more rotating platters on which a coating of magnetically responsive particles is deposited and magnetically oriented in various patterns to store information, such as a sequence of instructions, in a manner akin to storage medium such as a floppy diskette. By way of another example, the non-volatile storage 962 may be made up of banks of solid-state storage devices to store information, such as sequences of instructions, in a manner akin to a compact flash card. Again, it is commonplace to employ differing types of storage devices in a device at different times to store executable routines and/or data. Thus, a routine including a sequence of instructions to be executed by the processor component 950 may initially be stored on the machine-readable storage medium 969, and the removable media storage 963 may be subsequently employed in copying that routine to the non-volatile storage 962 for longer term storage not requiring the continuing presence of the machine-readable storage medium 969 and/or the volatile storage 961 to enable more rapid access by the processor component 950 as that routine is executed.
As previously discussed, the interface 990 (which may correspond to the interface(s)
490) may employ any of a variety of signaling technologies corresponding to any of a variety of communications technologies that may be employed to communicatively couple a device to one or more other devices. Again, one or both of various forms of wired or wireless signaling may be employed to enable the processor component 950 to interact with input/output devices (e.g., the depicted example keyboard 920 or printer 925) and/or other devices, possibly through a network (e.g., the network 999) or an interconnected set of networks. In recognition of the often greatly different character of multiple types of signaling and/or protocols that must often be supported by any one device, the interface 990 is depicted as including multiple different interface controllers 995a, 995b and 995c. The interface controller 995a may employ any of a variety of types of wired digital serial interface or radio frequency wireless interface to receive serially transmitted messages from user input devices, such as the depicted keyboard 920. The interface controller 995b may employ any of a variety of cabling-based or wireless signaling, timings and/or protocols to access other devices through the depicted network 999 (perhaps a network made up of one or more links, smaller networks, or perhaps the Internet). More specifically, the interface controller 995b may incorporate one or more radio frequency (RF) transceivers and/or may be coupled to one or more antennae 991 (which may be incorporated into a portion of the interface 990) to exchange RF wireless signals with antenna(e) of one or more other devices as part of wireless communications on the depicted network 999. The interface 995c may employ any of a variety of electrically conductive cabling enabling the use of either serial or parallel signal transmission to convey data to the depicted printer 925. Other examples of devices that may be communicatively coupled through one or more interface controllers of the interface 990 include, without limitation, a microphone to monitor sounds of persons to accept commands and/or data signaled by those persons via voice or other sounds they may make, remote controls, stylus pens, card readers, finger print readers, virtual reality interaction gloves, graphical input tablets, joysticks, other keyboards, retina scanners, the touch input component of touch screens, trackballs, various sensors, a camera or camera array to monitor movement of persons to accept commands and/or data signaled by those persons via gestures and/or facial expressions, laser printers, inkjet printers, mechanical robots, milling machines, etc. Where a device is communicatively coupled to (or perhaps, actually incorporates) a display (e.g., the depicted example display 980), such a device implementing the processing architecture 3000 may also include the display interface 985. Although more generalized types of interface may be employed in communicatively coupling to a display, the somewhat specialized additional processing often required in visually displaying various forms of content on a display, as well as the somewhat specialized nature of the cabling-based interfaces used, often makes the provision of a distinct display interface desirable. Wired and/or wireless signaling technologies that may be employed by the display interface 985 in a communicative coupling of the display 980 may make use of signaling and/or protocols that conform to any of a variety of industry standards, including without limitation, any of a variety of analog video interfaces, Digital Video Interface (DVT), DisplayPort, etc.
More generally, the various elements of the devices described and depicted herein may include various hardware elements, software elements, or a combination of both. Examples of hardware elements may include devices, logic devices, components, processors,
microprocessors, circuits, processor components, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field
programmable gate array (FPGA), memory units, logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software elements may include software components, programs, applications, computer programs, application programs, system programs, software development programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. However, determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints, as desired for a given implementation.
Some embodiments may be described using the expression "one embodiment" or "an embodiment" along with their derivatives. These terms mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase "in one embodiment" in various places in the specification are not necessarily all referring to the same embodiment. Further, some embodiments may be described using the expression "coupled" and "connected" along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, some embodiments may be described using the terms "connected" and/or "coupled" to indicate that two or more elements are in direct physical or electrical contact with each other. The term "coupled," however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other. Furthermore, aspects or elements from different embodiments may be combined.
It is emphasized that the Abstract of the Disclosure is provided to allow a reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment In the appended claims, the terms "including" and "in which" are used as the plain-English equivalents of the respective terms "comprising" and "wherein," respectively. Moreover, the terms "first," "second," "third," and so forth, are used merely as labels, and are not intended to impose numerical requirements on their objects.
What has been described above includes examples of the disclosed architecture. It is, of course, not possible to describe every conceivable combination of components and/or methodologies, but one of ordinary skill in the art may recognize that many further combinations and permutations are possible. Accordingly, the novel architecture is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. The detailed disclosure now turns to providing examples that pertain to further embodiments. The examples provided below are not intended to be limiting.
In Example 1, an apparatus includes a processor component; a network interface to couple the processor component to a network; a synchronize (S YN) receive component to transmit a unicast acknowledge (ACK) message via the network to each client device of a group of client devices from which a unicast SYN message that requests participation in a multicast session is received at the network interface, the multicast session to convey data to the group of client devices; and a SYN transmit component to determine whether all expected unicast SYN messages from the group of client devices have been received at the network interface, and to transmit a multicast SYN message via the network to the group of client devices when all expected unicast SYN messages from the group of client devices are received at the network interface.
In Example 2, which includes the subject matter of Example 1, the apparatus may include a transmission component to transmit at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to reception of a First aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
In Example 3, which includes the subject matter of any of Examples 1-2, the transmission component may transmit at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
In Example 4, which includes the subject matter of any of Examples 1-3, the apparatus may include a retransmission component to retransmit the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
In Example 5, which includes the subject matter of any of Examples 1-4, the apparatus may include a retransmission component to retransmit the multicast SYN message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the multicast SYN message to the group of client devices.
In Example 6, which includes the subject matter of any of Examples 1-5, the SYN transmit component may determine whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices. In Example 7, which includes the subject matter of any of Examples 1-6, the apparatus may include a unicast routine to exchange other data with a client device of the group of client devices in a unicast session; and a communications component to analyze each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session, and to convey a unicast SYN message that requests participation in the unicast session to the unicast routine.
In Example 8, which includes the subject matter of any of Examples 1-7, each unicast SYN message received from the group of client devices that requests participation in the multicast session may include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions, and the communications component may distinguish a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
In Example 9, which includes the subject matter of any of Examples 1-8, the multicast session ED may include at least one of an Internet protocol (IP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
In Example 10, an apparatus includes a processor component; a network interface to couple the processor component to a network; a synchronize (SYN) transmit component to determine whether expected unicast SYN messages that request participation in a multicast session to convey data to a group of client devices have been received from all client devices of the group of client devices at the network interface, and to transmit a multicast SYN message via the network to the group of client devices when the expected unicast SYN messages have been received from all of the client devices of the group of client devices at the network interface; and a transmission component to transmit at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to reception of a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
In Example 11, which includes the subject matter of Example 10, the apparatus may include a SYN receive component to transmit a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the expected unicast SYN messages is received.
In Example 12, which includes the subject matter of any of Examples 10-11, the transmission component may transmit at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
In Example 13, which includes the subject matter of any of Examples 10-12, the apparatus may include a retransmission component to retransmit the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
In Example 14, which includes the subject matter of any of Examples 10-13, the SYN transmit component may determine whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
In Example 15, which includes the subject matter of any of Examples 10-14, the apparatus may include a unicast routine to exchange other data with a client device of the group of client devices in a unicast session; and a communications component to analyze each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session, and to convey a unicast SYN message that requests participation in the unicast session to the unicast routine.
In Example 16, which includes the subject matter of any of Examples 10-15, each unicast SYN message received from the group of client devices that requests participation in the multicast session may include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions, and the communications component may distinguish a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
In Example 17, which includes the subject matter of any of Examples 10-16, the multicast session ID may include at least one of an Internet protocol (IP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions. In Example 18, which includes the subject matter of any of Examples 10-17, the multicast SYN message and each unicast SYN message that requests participation in the multicast session may include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions.
In Example 19, a computing-implemented method includes receiving via a network, at a network interface of a server, unicast synchronize (SYN) messages from a group of client devices that each request participation in a multicast session with the server to convey data to the group of client devices; transmitting a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the unicast SYN messages is received at the network interface; determining whether all expected unicast SYN messages from the group of client devices have been received at the network interface; and transmitting a multicast SYN message via the network to the group of client devices when all expected unicast SYN messages from the group of client devices are received at the network interface.
In Example 20, which includes the subject matter of Example 19, the method may include transmitting at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to receiving a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
In Example 21, which includes the subject matter of any of Examples 19-20, the method may include transmitting at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
In Example 22, which includes the subject matter of any of Examples 19-21, the method may include retransmitting the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
In Example 23, which includes the subject matter of any of Examples 19-22, the method may include retransmitting the multicast SYN message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the multicast SYN message to the group of client devices.
In Example 24, which includes the subject matter of any of Examples 19-23, the method may include determining whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
In Example 25, which includes the subject matter of any of Examples 19-24, the method may include exchanging other data with a client device of the group of client devices in a unicast session; analyzing each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message mat requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session; and conveying a unicast SYN message that requests participation in the unicast session to a unicast routine of the server.
In Example 26, which includes the subject matter of any of Examples 19-25, each unicast SYN message received from the group of client devices that requests participation in the multicast session to include a multicast session identifier (ED) that distinguishes the multicast session from other multicast sessions, and the method may include distinguishing a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ED.
In Example 27, which includes the subject matter of any of Examples 19-26, the multicast session ED may include at least one of an Internet protocol (TP) address within a range of EP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
In Example 28, a computing-implemented method includes determining whether expected unicast synchronize (SYN) messages that request participation in a multicast session with a server to convey data to a group of client devices have been received from all client devices of the group of client devices at a network interface of the server; transmitting a multicast SYN message via a network to the group of client devices when all expected unicast SYN messages have been received from all of the client devices of the group of client devices at the network interface; and transmitting at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to reception of a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
In Example 29, which includes the subject matter of Example 28, the method may include transmitting a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the expected unicast SYN messages is received.
In Example 30, which includes the subject matter of any of Examples 28-29, the method may include transmitting at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
In Example 31, which includes the subject matter of any of Examples 28-30, the method may include retransmitting the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
In Example 32, which includes the subject matter of any of Examples 28-31, the method may include determining whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
In Example 33, which includes the subject matter of any of Examples 28-32, the method may include exchanging other data with a client device of the group of client devices in a unicast session; analyzing each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session; and conveying a unicast SYN message that requests participation in the unicast session to a unicast routine of the server.
In Example 34, which includes the subject matter of any of Examples 28-33, each unicast SYN message received from the group of client devices that requests participation in the multicast session to include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions, and the method may include distinguishing a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ED.
In Example 35, which includes the subject matter of any of Examples 28-34, the multicast session ID may include at least one of an Internet protocol (IP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
In Example 36, which includes the subject matter of any of Examples 28-35, the multicast SYN message and each unicast SYN message that requests participation in the multicast session to include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions.
In Example 37, at least one tangible machine-readable storage medium includes instructions that when executed by a processor component, may cause the processor component to receive via a network, at a network interface of a server, unicast synchronize (SYN) messages from a group of client devices that each request participation in a multicast session with the server to convey data to the group of client devices; transmit a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the unicast SYN messages is received at the network interface; determine whether all expected unicast SYN messages from the group of client devices have been received at the network interface; and transmit a multicast SYN message via the network to the group of client devices when all expected unicast SYN messages from the group of client devices are received at the network interface.
In Example 38, which includes the subject matter of Example 37, the processor component may be caused to transmit at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to receiving a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
In Example 39, which includes the subject matter of any of Examples 37-38, the processor component may be caused to transmit at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices. In Example 40, which includes the subject matter of any of Examples 37-39, the processor component may be caused to retransmit the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
In Example 41 , which includes the subject matter of any of Examples 37-40, the processor component may be caused to retransmit the multicast SYN message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the multicast SYN message to the group of client devices.
In Example 42, which includes the subject matter of any of Examples 37-41, the processor component may be caused to determine whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
In Example 43, which includes the subject matter of any of Examples 37-42, the processor component may be caused to exchange other data with a client device of the group of client devices in a unicast session; analyze each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session; and convey a unicast SYN message that requests participation in the unicast session to a unicast routine of the server.
In Example 44, which includes the subject matter of any of Examples 37-43, each unicast SYN message received from the group of client devices that requests participation in the multicast session may include a multicast session identifier (ED) that distinguishes the multicast session from other multicast sessions, and the processor component may be caused to distinguish a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
In Example 45, which includes the subject matter of any of Examples 37-44, the multicast session ID may include at least one of an Internet protocol (EP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
In Example 46, at least one tangible machine-readable storage medium includes instructions that when executed by a processor component, may cause the processor component to determine whether expected unicast synchronize (SYN) messages that request participation in a multicast session with a server to convey data to a group of client devices have been received from all client devices of the group of client devices at a network interface of the server;
transmit a multicast SYN message via a network to the group of client devices when all expected unicast SYN messages have been received from all of the client devices of the group of client devices at the network interface; and transmit at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to reception of a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
In Example 47, which includes the subject matter of Example 46, the processor component may be caused to transmit a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the expected unicast SYN messages is received.
In Example 48, which includes the subject matter of any of Examples 46-47, the processor component may be caused to transmit at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
In Example 49, which includes the subject matter of any of Examples 46-48, the processor component may be caused to retransmit the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
In Example 50, which includes the subject matter of any of Examples 46-49, the processor component may be caused to determine whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
In Example 51, which includes the subject matter of any of Examples 46-50, the processor component may be caused to exchange other data with a client device of the group of client devices in a unicast session; analyze each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session; and convey a unicast SYN message that requests participation in the unicast session to a unicast routine of the server.
In Example 52, which includes the subject matter of any of Examples 46-51 , each unicast SYN message received from the group of client devices that requests participation in the multicast session to include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions, and the processor component may be caused to distinguish a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
In Example 53, which includes the subject matter of any of Examples 46-52, the multicast session ID may include at least one of an Internet protocol (IP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
In Example 54, which includes the subject matter of any of Examples 46-53, the multicast SYN message and each unicast SYN message that requests participation in the multicast session may include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions.
In Example 55, at least one tangible machine-readable storage medium may include instructions that when executed by a processor component, cause the processor component to perform any of the above.
In Example 56, an apparatus may include means for performing any of the above.

Claims

Claims 1. An apparatus to control communications comprising:
a processor component;
a network interface to couple the processor component to a network; a synchronize (SYN) receive component to transmit a unicast acknowledge (ACK) message via the network to each client device of a group of client devices from which a unicast SYN message that requests participation in a multicast session is received at the network interface, the multicast session to convey data to the group of client devices; and
a SYN transmit component to determine whether all expected unicast SYN messages from the group of client devices have been received at the network interface, and to transmit a multicast SYN message via the network to the group of client devices when all expected unicast SYN messages from the group of client devices are received at the network interface.
2. The apparatus of claim 1, comprising a transmission component to transmit at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to reception of a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
3. The apparatus of claim 2, the transmission component to transmit at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by ail of the client devices of the group of client devices.
4. The apparatus of claim 1, comprising a retransmission component to retransmit the multicast SYN message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the multicast SYN message to the group of client devices.
5. The apparatus of claim 1, the SYN transmit component to determine whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
6. The apparatus of claim 1, comprising:
a unicast routine to exchange other data with a client device of the group of client devices in a unicast session; and
a communications component to analyze each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session, and to convey a unicast SYN message that requests participation in the unicast session to the unicast routine.
7. The apparatus of claim 6, each unicast SYN message received from the group of client devices that requests participation in the multicast session to include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions, and the communications component to distinguish a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
8. An apparatus to control communications comprising:
a processor component;
a network interface to couple the processor component to a network; a synchronize (SYN) transmit component to determine whether expected unicast SYN messages that request participation in a multicast session to convey data to a group of client devices have been received from all client devices of the group of client devices at the network interface, and to transmit a multicast SYN message via the network to the group of client devices when the expected unicast SYN messages have been received from all of the client devices of the group of client devices at the network interface; and a transmission component to transmit at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to reception of a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
9. The apparatus of claim 8, comprising a SYN receive component to transmit a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the expected unicast SYN messages is received.
10. The apparatus of claim 8, the transmission component to transmit at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
11. The apparatus of claim 10, comprising a retransmission component to retransmit the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
12. The apparatus of claim 8, the SYN transmit component to determine whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
13. The apparatus of claim 8, comprising:
a unicast routine to exchange other data with a client device of the group of client devices in a unicast session; and
a communications component to analyze each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session, and to convey a unicast SYN message that requests participation in the unicast session to the unicast routine.
14. The apparatus of claim 13, each unicast SYN message received from the group of client devices that requests participation in the multicast session to include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions, and the communications component to distinguish a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
15. The apparatus of claim 14, the multicast session ID comprising at least one of an Internet protocol (IP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
16. A computer-implemented method for controlling communications comprising:
receiving via a network, at a network interface of a server, unicast synchronize
(SYN) messages from a group of client devices that each request participation in a multicast session with the server to convey data to the group of client devices;
transmitting a unicast acknowledge (ACK) message via the network to each client device of the group of client devices from which one of the unicast SYN messages is received at the network interface;
determining whether all expected unicast SYN messages from the group of client devices have been received at the network interface; and
transmitting a multicast SYN message via the network to the group of client devices when all expected unicast SYN messages from the group of client devices are received at the network interface.
17. The computer-implemented method of claim 16, comprising transmitting at least one multicast data message via the network to the group of client devices to convey the data to the group of client devices during the multicast session in response to receiving a first aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices.
18. The computer-implemented method of claim 17, comprising transmitting at least one additional multicast data message via the network to the group of client devices to convey more of the data to the group of client devices during the multicast session in response to reception of a second aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices.
19. The computer-implemented method of claim 17, comprising retransmitting the at least one multicast data message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the at least one multicast data message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the at least one multicast data message to the group of client devices.
20. The computer-implemented method of claim 16, comprising retransmitting the multicast SYN message via the network to the group of client devices in response to a lack of reception of an aggregate unicast ACK message that acknowledges receipt of the multicast SYN message by all of the client devices of the group of client devices within a predetermined period of time after the transmission of the multicast SYN message to the group of client devices.
21. The computer-implemented method of claim 16, comprising determining whether all expected unicast SYN messages from the group of client devices have been received based on at least one of a list of identifiers of the client devices of the group of client devices, a
predetermined maximum quantity of client devices to participate in the multicast session, or a predetermined time at which the data is to be conveyed to the group of client devices.
22. The computer-implemented method of claim 16, comprising:
exchanging other data with a client device of the group of client devices in a unicast session;
analyzing each unicast SYN message received from the group of client devices at the network interface to distinguish a unicast SYN message that requests participation in a unicast session from a unicast SYN message that requests participation in the multicast session; and
conveying a unicast SYN message that requests participation in the unicast session to a unicast routine of the server.
23. The computer-implemented method of claim 22, each unicast SYN message received from the group of client devices that requests participation in the multicast session to include a multicast session identifier (ID) that distinguishes the multicast session from other multicast sessions, and the method comprising distinguishing a unicast SYN message that requests participation in the multicast session from the unicast SYN message that requests participation in a unicast session by the multicast session ID.
24. The computer-implemented method of claim 23, the multicast session ID comprising at least one of an Internet protocol (IP) address within a range of IP addresses designated as associated with multicast sessions, or a port number within a range of port numbers designated as associated with multicast sessions.
25. At least one tangible machine-readable storage medium comprising instructions that when executed by a processor component, cause the processor component to perform the method of any of claims 16-24.
PCT/PL2015/000202 2015-12-18 2015-12-18 Techniques for network multicasting with acknowledgement Ceased WO2017105258A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/PL2015/000202 WO2017105258A1 (en) 2015-12-18 2015-12-18 Techniques for network multicasting with acknowledgement

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/PL2015/000202 WO2017105258A1 (en) 2015-12-18 2015-12-18 Techniques for network multicasting with acknowledgement

Publications (1)

Publication Number Publication Date
WO2017105258A1 true WO2017105258A1 (en) 2017-06-22

Family

ID=55236883

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/PL2015/000202 Ceased WO2017105258A1 (en) 2015-12-18 2015-12-18 Techniques for network multicasting with acknowledgement

Country Status (1)

Country Link
WO (1) WO2017105258A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080219271A1 (en) * 2006-04-25 2008-09-11 Nokia Corporation IP multicast based systems, apparatuses and methods for TCP connection migration
US20110066746A1 (en) * 2009-09-11 2011-03-17 Broadcom Corporation Synchronized data streaming

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080219271A1 (en) * 2006-04-25 2008-09-11 Nokia Corporation IP multicast based systems, apparatuses and methods for TCP connection migration
US20110066746A1 (en) * 2009-09-11 2011-03-17 Broadcom Corporation Synchronized data streaming

Similar Documents

Publication Publication Date Title
US11792114B2 (en) System and method for facilitating efficient management of non-idempotent operations in a network interface controller (NIC)
US12277079B2 (en) Direct memory access architecture, system and method, electronic device, and medium
US10567510B2 (en) Techniques for routing packets between virtual machines
US10782978B2 (en) Techniques for cooperative execution between asymmetric processor cores
US9430432B2 (en) Optimized multi-root input output virtualization aware switch
US20230079868A1 (en) Techniques for coordinating parallel performance and cancellation of commands in a storage cluster system
CN103559156B (en) Communication system between a kind of FPGA and computing machine
WO2017031250A1 (en) Techniques for routing packets among virtual machines
CN106055504B (en) Method, device and computer equipment for controlling data transmission
CN116719755A (en) A method, device and equipment for multi-application memory access
CN112817774A (en) System and method for transaction broadcasting in network on chip
CN110445666A (en) A network quality detection method, device and server
US9377966B2 (en) Method and apparatus for efficiently processing storage commands
CN101841477B (en) Method for improving reliable message transmission credit of network control chip
US12438821B2 (en) System for storage of received messages
WO2017105258A1 (en) Techniques for network multicasting with acknowledgement
CN117579224B (en) Real-time simulation data transmission method, device, equipment and storage medium
US20210014307A1 (en) Data transmission and network interface controller
CN102075526B (en) Soft real-time application-oriented verification system under multi-core virtualized environment
CN101207526A (en) Network card transmission test method
CN103428110A (en) Method and device for receiving and processing real-time transport protocol data packet

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: 15828690

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15828690

Country of ref document: EP

Kind code of ref document: A1