US20060190654A1 - Method and apparatus for providing quality-of-service delivery facilities over a bus - Google Patents

Method and apparatus for providing quality-of-service delivery facilities over a bus Download PDF

Info

Publication number
US20060190654A1
US20060190654A1 US10/851,187 US85118704A US2006190654A1 US 20060190654 A1 US20060190654 A1 US 20060190654A1 US 85118704 A US85118704 A US 85118704A US 2006190654 A1 US2006190654 A1 US 2006190654A1
Authority
US
United States
Prior art keywords
node
isochronous
bus
channel
receiving
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.)
Abandoned
Application number
US10/851,187
Inventor
Joseph Joy
Georgios Chrysanthakopoulos
Rajesh Sundaram
Arvind Murching
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Priority to US10/851,187 priority Critical patent/US20060190654A1/en
Publication of US20060190654A1 publication Critical patent/US20060190654A1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40058Isochronous transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40065Bandwidth and channel allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/13Flow control; Congestion control in a LAN segment, e.g. ring or bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/205Quality of Service based

Definitions

  • the present invention relates generally to providing network-type services over a bus, such as the IEEE-1394 serial bus. More particularly, the invention provides a method and apparatus for providing quality of service delivery facilities over such a bus.
  • TCP/IP Transmission Control Protocol/Internet Protocol
  • IP Transmission Control Protocol/Internet Protocol
  • IP Internet Protocol
  • LANs local area networks
  • IP data packets are “encapsulated” in an Ethernet frame, transmitted over an Ethernet LAN, and “unwrapped” at the receiving node to restore the original IP packet.
  • IP Internet Protocol
  • LANs local area networks
  • IP data packets are “encapsulated” in an Ethernet frame, transmitted over an Ethernet LAN, and “unwrapped” at the receiving node to restore the original IP packet.
  • time-sensitive data such as video streams can be delayed for an indeterminate time period.
  • One scheme for mitigating the aforementioned problem requires that network users (e.g., application programs) request bandwidth from a “Subnet Manager,” which acts as a central clearinghouse for bandwidth on the Ethernet.
  • Each network user must register with and use the service to transmit data packets. If even one network user fails to register before making use of the network, the scheme can fail, since the one user can effectively make unfettered use of the bandwidth on the network.
  • Existing application programs must typically be modified to conform to the new scheme.
  • the physical bus topology is inherently non-deterministic (e.g., collisions can prevent a given packet from reaching its destination in a specified time period), packets can still arrive late, causing jitter and other effects.
  • a serial bus standard known as the IEEE 1394 bus has been developed. Implementations of this bus are based on the internationally adopted ISO/IEC 13213 (ANSI/IEE 1212) CSR Architecture Specification and the IEEE 1394-1995 Serial Bus Specification.
  • a typical system conforming to the IEEE 1394 standard includes a plurality of nodes that are interconnected via point-to-point links, such as cables, that each connect a single node of the serial bus to another node of the serial bus.
  • the nodes are addressable entities that can be independently reset and identified.
  • the 1394 bus provides both asynchronous and isochronous (time-guaranteed delivery) capabilities. Up to 64 isochronous channels are available on the bus. Nodes needing to send isochronous data must reserve bandwidth and a channel number on which to transmit. Bandwidth is measured as the percentage of a nominally 125-microsecond isochronous interval. Reservation of bandwidth and channel numbers is performed by manipulating registers on a well-known bus node, referred to as the isochronous resource manager (IRM).
  • IRM isochronous resource manager
  • the IEEE 1394 bus provides three primary types of bulk transfer:
  • async-write write to a specific address on a specific node. This is a point-to-point, best-effort, acknowledged service with no timeliness guarantees.
  • async-stream (stream data on a specific channel). This is a multicast, best-effort, non-acknowledged service with no timeliness guarantees.
  • isoch-stream (stream data on a specific channel with time guarantees). This is a multicast, isochronous (latency under 250 microseconds) non-acknowledged service that uses the same 64 channels available under async-stream.
  • IEEE 1394 bus in computer systems typically include layered hardware and software support based on transaction, link, and physical layer protocols.
  • the Internet Request for Comments (RFC) 2734 available at http://www.ietf.org/rfc/rfc2734.txt, describes a scheme for using the 1394 bus to transmit IP datagrams.
  • the document generally describes a multicast channel allocation protocol (MCAP), which permits management of serial bus resources when used by IP multicast groups.
  • MCAP multicast channel allocation protocol
  • it does not provide a generalized approach for providing quality-of-service facilities for applications using the bus.
  • Another document (IEC 61883-1) describes a protocol for the cooperative allocation and sharing of IEEE 1394 isochronous channels among audio/video devices.
  • the protocol concerns itself purely with the reservation of channels and setting maximum transmission parameters for channels; it does not concern itself with the advertisement of the type of data transmitted over a particular channel.
  • a transmitting node on a bus transmits a message to an intended recipient indicating a requested bandwidth for a connection. If the intended recipient has sufficient resources (e.g., a typical 1394 implementation limits each receiver to no more than 4 reception channels), it allocates an isochronous data channel on the bus and notifies the transmitter of the allocated channel. Thereafter, the transmitter transmits the data on the allocated channel. If the recipient cannot allocate a channel, it does not respond, and the transmitter thereafter detects a time-out condition and begins transmitting using a “best efforts” scheme (i.e., non-guaranteed time delivery).
  • QoS quality-of-service
  • a receiving node detects that it is receiving large quantities of data from a transmitting node on a broadcast channel. In response, the receiving node allocates an isochronous data channel on the 1394 bus and notifies the transmitter of the allocated channel. Thereafter, the transmitter transmits using the allocated isochronous channel.
  • each receiver transmits a message to other potential recipients to determine whether any other recipient has already allocated an isochronous channel. If no other receiver has already allocated a channel, the first receiver allocates a channel and notifies other potential recipients of the allocated channel. (If another receiver had already allocated a channel, the second receiver receives the transmission on the already-allocated channel.) If the first receiver that allocated the channel no longer needs it, it keeps it allocated if any other receivers are listening to the channel and deallocates it when no other receivers are using it.
  • each receiver can periodically transmit a “keep alive” message on a broadcast channel that acts as a deadman timer to indicate that the receiver is still receiving on a given channel. If a transmitter detects that the deadman timer has expired, it reverts to transmitting data using a “best-efforts” scheme. Moreover, a transmitter can transmit both to receivers that can handle QoS services and those that cannot explicitly support QoS services.
  • FIG. 1 is a schematic block diagram of a conventional general-purpose digital computing environment that can be used to implement various aspects of the present invention.
  • FIG. 2 shows a system employing a quality-of-service manager ( 205 and 210 ) in each of a plurality of nodes coupled over an IEEE 1394 bus.
  • FIG. 3 shows method steps for allocating bandwidth in a system between a transmitting node and a receiving node according to one variation of the invention.
  • FIG. 4 shows method steps for allocating bandwidth in a system between a transmitting node and a receiving node according to a second variation of the invention.
  • FIG. 5 shows method steps for allocating bandwidth in a system between a transmitting node and a plurality of receiving nodes according to a third variation of the invention.
  • FIG. 1 is a schematic diagram of a conventional general-purpose digital-computing environment that can be used to implement various aspects of the present invention.
  • a computer 100 includes a processing unit 110 , a system memory 120 and a system bus 130 that couples various system components including the system memory to the processing unit 110 .
  • the system bus 130 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
  • the system memory 120 includes a read only memory (ROM) 140 and a random access memory (RAM) 150 .
  • ROM read only memory
  • RAM random access memory
  • Computer 100 also includes a hard disk drive 170 for reading from and writing to a hard disk (not shown), a magnetic disk drive 180 for reading from or writing to a removable magnetic disk 190 , and an optical disk drive 191 for reading from or writing to a removable optical disk 192 , such as a CD ROM or other optical media.
  • Hard disk drive 170 , magnetic disk drive 180 , and optical disk drive 191 are respectively connected to the system bus 130 by a hard disk drive interface 192 , a magnetic disk drive interface 193 , and an optical disk drive interface 194 .
  • the drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the computer 100 . It will be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read only memories (ROMs), and the like, may also be used in the exemplary operating environment.
  • a number of program modules can be stored on the hard disk, magnetic disk 190 , optical disk 192 , ROM 140 or RAM 150 , including an operating system 195 , one or more application programs 196 , other program modules 197 , and program data 198 .
  • the RAM 150 will, from time to time, store various device drivers, as known in the art.
  • a user can enter commands and information into computer 100 through input or selection devices, such as a keyboard 101 and a pointing device 102 .
  • the pointing device 102 may comprise a mouse, touch pad, touch screen, voice control and activation or other similar devices.
  • Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
  • serial port interface 106 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, a game port or a universal serial bus (USB).
  • a monitor 107 or other type of display device is also connected to system bus 130 via an interface, such as a video adapter 108 .
  • personal computers typically include other peripheral output devices (not shown), such as speakers and printers.
  • An IEEE 1394 interface 140 may also be provided.
  • the IEEE 1394 interface 140 couples an IEEE 1394-compliant serial bus 145 to the system bus 130 or similar communication bus.
  • the IEEE 1394-compliant serial bus 145 allows multiple devices 150 to communicate with the computer 100 and each other using high-speed serial channels.
  • the IEEE 1394 serial bus standard is based largely upon the internationally adopted ISO/IEC 13213 (ANSI/IEEE 1212) CSR Architecture Specification and the IEEE 1394-1995 Serial Bus Specification. Additional buses such as the PCI bus can be provided in computer 100 and interfaced to the IEEE 1394 and other buses.
  • a typical serial bus having an IEEE 1394 standard architecture is comprised of a multiplicity of nodes that are interconnected via point-to-point links, such as cables, that each connect a single node of the serial bus to another node of the serial bus.
  • the nodes themselves are addressable entities that can be independently reset and identified.
  • Nodes are logical entities, each with a unique address.
  • Each node provides a so-called configuration ROM (read-only memory)—hereinafter referred to as configuration memory—and a standardized set of control registers that can be accessed by software residing within the computer system.
  • the computer 100 can operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 109 .
  • the remote computer 109 typically includes at least some of the elements described above relative to the computer 100 , although only a memory storage device 111 has been illustrated in FIG. 1 .
  • the logical connections depicted in FIG. 1 include a local area network (LAN) 112 and a wide area network (WAN) 113 .
  • LAN local area network
  • WAN wide area network
  • the computer 100 When used in a LAN networking environment, the computer 100 is connected to local network 112 through a network interface or adapter 114 . When used in a WAN networking environment, the computer 100 and remote computer 109 may both include a modem 115 or other means for establishing a communications over wide area network 113 , such as the Internet.
  • the modem 115 which may be internal or external, is connected to system bus 130 via the serial port interface 106 .
  • program modules depicted relative to the computer 100 may be stored in the remote memory storage device.
  • FIG. 2 shows a system employing a quality-of-service manager ( 205 and 210 ) in each of a plurality of nodes coupled over an IEEE 1394 bus according to one aspect of the present invention.
  • a quality-of-service manager ( 205 and 210 ) in each of a plurality of nodes coupled over an IEEE 1394 bus according to one aspect of the present invention.
  • two computer nodes are coupled through a bus such as the IEEE 1394 bus.
  • each node includes a 1394 hardware card ( 207 and 208 , respectively) and an appropriate 1394 bus driver ( 206 and 209 , respectively) that collectively permit the nodes to communicate using the 1394 bus.
  • each 1394-compliant bus driver comprises an Open Host Controller Interface (OHCI) driver implementation of the IEEE 1394 link layer protocol.
  • OHCI Open Host Controller Interface
  • the OHCI is described in the 1394 Open Host Controller Interface Specification, which is widely available and well known to those of skill in the art.
  • This interface can transmit and receive all defined 1394 packet formats using Direct Memory Access (DMA) to write the packets into the host computer's memory.
  • DMA Direct Memory Access
  • virtual device drivers can be used to connect to and communicate over the bus.
  • each node includes one or more application programs ( 201 , 202 , 213 , and 214 , respectively) that operate using TCP/IP protocols 204 and 211 .
  • Each application program may comprise, for example, a program that transmits audio and/or video data between nodes.
  • one application program may comprise a videoconferencing application that permits two persons to see and hear each other by transmitting audio and video packets over the bus. In this case, it may be important or desirable to provide time-guaranteed delivery of data packets to prevent “jerky” audio and video displays at each node.
  • Certain videoconferencing applications may be “QoS-enabled” in that they are aware of bandwidth allocation procedures and can issue commands to allocate bandwidth in the network. Other applications may not have such features. In one embodiment, the present invention can also accommodate the latter type of applications without requiring software modifications to the applications.
  • a traffic control manager (TCM) component 203 and 212 traps QoS calls and routes them to the appropriate functions in the lower levels of software, as described in more detail herein.
  • Data packets are transmitted using TCP/IP protocols 204 and 211 , as is conventional.
  • TCP/IP protocols 204 and 211 TCP/IP protocols 204 and 211 .
  • Various features of the present invention can be incorporated into QoS managers 205 and 210 , as described in more detail below. It may be desirable to abstract out or translate different types of QoS requests (including conventional ones such as RSVP) into 1394-specific allocation requests.
  • FIG. 3 shows method steps for allocating bandwidth in a system between a transmitting node and a receiving node according to one variation of the invention. It is assumed in FIG. 3 that a QoS-enabled application on a first node seeks to communicate with a QoS-enabled application on a second node over the IEEE 1394 bus. Steps performed by the transmitting node are shown on the left side of FIG. 3 , while those performed by the receiving node are shown on the right side of FIG. 3 . It will be appreciated that for a two-way transmission (e.g., full-duplex videoconferencing), each node will effectively act as both a transmitter and a receiver, and thus the steps shown can be replicated on opposite nodes. In one embodiment, the steps shown in FIG. 3 are performed by QoS managers 205 and 210 of FIG. 2 . The inventive steps, however, can be practiced in various other ways, and the invention is not limited to the structures shown in FIG. 2 .
  • the transmitting node in response to receiving a request to transmit data at a given data rate (e.g., a known rate sufficient to support good-quality video frames), transmits a request for bandwidth to the intended receiving node.
  • the request can include related information such as the source IP address, port number, protocol, and destination IP address.
  • a flow descriptor can be used to reference information pertaining to each flow and to allow an application to advertise what it is providing and what it needs.
  • a flow descriptor may comprise fields such as TCP/IP flow information (source IP address, source port, destination IP address, and destination port) and, optionally, a data format (e.g., MPEG, audio, etc.) This transmission can occur over a broadcast channel that is used to communicate among the nodes for purposes of resource allocation.
  • TCP/IP flow information source IP address, source port, destination IP address, and destination port
  • a data format e.g., MPEG, audio, etc.
  • the receiving node checks to determine whether resources (e.g., an isochronous channel and suitable bandwidth) are available. For example, in certain systems the IEEE 1394 bus may be configured to permit each node to allocate a maximum number (e.g., four) of isochronous data channels. If the intended recipient node had already allocated this maximum number of channels, then no further resources would be available for allocation.
  • resources e.g., an isochronous channel and suitable bandwidth
  • step 310 a check is made in the intended receiver to determine whether resources are available for the communication. If not, then in step 311 the request is ignored, and processing terminates. (If the receiving node does not support QoS services, the request will also be ignored or rejected, leading to the same or similar result). Ignoring the request will cause the transmitter to time-out, as described in more detail below.
  • step 312 if resources are available, the receiver allocates an isochronous data channel with desired bandwidth. In one embodiment, these resources are allocated using conventional IEEE 1394-specific function calls.
  • step 313 the receiving node transmits a message on the broadcast channel to the transmitting node indicating the allocated channel number and bandwidth. Thereafter, the receiving node periodically transmits a “keep alive” message in step 314 to the transmitting node indicating that the resources are still allocated.
  • step 315 the receiver receives data from the transmitter over the allocated isochronous data channel.
  • step 316 the receiver checks to determine whether the transmitting node has transmitted a similar periodic “keep alive” message. If such a message is received, then processing continues in step 314 until such messages are no longer received. If no such “keep alive” message is received within a time-out period, then in step 317 the resources are deallocated, and the transmitter is optionally notified of the deallocation.
  • the “keep alive” timer scheme described above allows for system resources to be automatically deallocated in the event that one of the nodes (e.g., the transmitter or receiver) fails, thus preventing resource lock-up.
  • step 304 communication will revert to a “best efforts” transmission scheme, which does not require allocation of bus resources.
  • the transmitting node can transmit the data packets using asynchronous writes over the 1394 bus.
  • the transmitting node can transmit the data packets using asynchronous streams on a specific data channel.
  • the latter scheme provides non-acknowledged service with no timeliness guarantees.
  • This default to a best-efforts transmission mode provides a degraded communication mode that permits the nodes to communicate even if bus resources are not available, rather than returning an error message to the application program.
  • step 303 assuming that a response was received from the intended receiver (i.e., no time-out), then in step 305 the transmitter begins transmitting data using the allocated resources (e.g., using the allocated channel and bandwidth parameters).
  • the transmitter periodically transmits a “keep alive” message to the receiver in order to signal that the allocated channel is still in use. If in step 307 the transmitter determines that a similar “keep alive” message has not been received from the receiver within a certain time-out period, then in step 308 communication reverts to a “best efforts” transmission mode as described above. In one variation, the transmitter can attempt to later re-establish guaranteed delivery communication with the intended receiver after a time-out period. Assuming that the receiver and transmitter continue to transmit “keep alive” messages for the resources, the transmitter transmits data using the allocated resources.
  • a QoS-enabled application can communicate with a non-QoS enabled application over the bus. For example, if a QoS-enabled transmitting node attempts to allocate bus resources to transmit streaming video packets, but the corresponding application at the receiving node is not QoS-enabled, then the transmission can automatically proceed in a degraded mode using best-efforts communication. This is advantageous over a scheme that would otherwise not allow incompatible transmitting and receiving nodes to communicate.
  • FIG. 4 shows method steps for allocating bandwidth in a system between a transmitting node and a receiving node according to a second variation of the invention.
  • the embodiment of FIG. 4 works even where the transmitting application is not QoS-enabled.
  • a high traffic condition is automatically detected between the nodes, and an isochronous data channel is automatically allocated and used to transfer further data packets between the nodes.
  • the steps in FIG. 4 can be carried out in QoS manager 205 and 210 of FIG. 2 , preferably in a data link layer of a protocol stack.
  • an application program begins transmitting data packets over the bus, such as over a broadcast channel or over an asynchronous data channel.
  • the receiving node begins receiving the data packets and determines that a large number of packets are continually being received from the transmitting node. (This can be further refined to detect not only traffic from a particular node, but traffic occurring over a specific IP flow, such as from a particular IP address).
  • the receiver in step 408 allocates an isochronous data channel on the bus with sufficient bandwidth to support the expected data packets, and maps the data channel to the particular flow (e.g., the IP addresses from which the packets are being received).
  • the receiving node notifies the transmitting node of the newly allocated isochronous data channel. Steps 410 through 413 are similar to steps 314 through 317 of FIG. 3 and no further elaboration is required.
  • step 402 the transmitting node detects the assignment of a new data channel for the designated flow, and in step 403 changes its transmission mode to begin transmitting the packets associated with the flow over the newly allocated isochronous data channel.
  • step 404 the transmitter periodically transmits a “keep alive” message to the receiver to signal that the resources are being used.
  • step 405 the transmitter determines whether a similar periodic “keep alive” message has been received from the receiver and, if not, reverts to the broadcast channel mode of communication in step 406 .
  • one advantage of the method shown in FIG. 4 is that time-bounded data transmission can be used even where application programs are not QoS-enabled. That is, the isochronous data channels can be used efficiently in the system even where application programs are not knowledgeable about such channels.
  • FIG. 5 shows method steps for allocating bandwidth in a system between a transmitting node and a plurality of receiving nodes according to a third variation of the invention.
  • a single transmitter transmits data packets, and two different receiving nodes seek to receive the same data stream from the transmitter.
  • a video broadcast e.g., a TV program
  • multiple recipient nodes seek to receive the same broadcast.
  • Steps 501 and 502 shown in abbreviated form in FIG. 5 , are assumed to encompass steps such as those shown in FIG. 3 or FIG. 4 .
  • the transmitting node and the first receiving node set up an isochronous communication channel using techniques such as those illustrated in FIG. 3 or FIG. 4 .
  • step 507 it is assumed that an application program in a second receiving node seeks to receive the same packets transmitted from the transmitting node. If a TV program is being transmitted using a known IP address, for example, the second receiving node can determine that such a broadcast is currently being transmitted over the bus.
  • the second receiving node broadcasts a request over the bus for information regarding the flow corresponding to the transmitted packets. This request is received by the first receiver which, in step 504 , checks its internal allocation tables to find the corresponding channel information for the flow.
  • the first receiving node sets a flag indicating that the channel is now being shared by a second node, and in step 506 transmits the flow mapping information (e.g., the channel and bandwidth information corresponding to the requested flow) to the second receiving node.
  • the flow mapping information e.g., the channel and bandwidth information corresponding to the requested flow
  • step 509 the second receiving node waits for a response to the request for information.
  • step 510 if no response is received within a time-out period, then in step 511 it is assumed that no other node has allocated resources for the flow, and the node proceeds to allocate resources and receive the transmission over the allocated resource.
  • the second receiving node if a response was received from the first receiving node, then in step 512 the second receiving node begins receiving data on the shared channel.
  • the first receiving node sets a flag indicating that the channel is shared (see step 505 ) in order to prevent the de-allocation of the resource if another node is using the shared channel. For example, if the user at the first receiving node terminates viewing of a video program, first receiving node should first check to see whether any other nodes are sharing the channel before deallocating the resources. If another node continues to share the channel, the first receiving node can continue to leave the resources allocated until either receiving a termination request from the other node(s), or until a “keep alive” message (not shown) is no longer received from the second node.

Abstract

The invention provides quality-of-service (QoS) delivery services over a computer bus having isochronous data transfer capabilities. A transmitting node on the bus transmits a message to an intended recipient indicating a requested bandwidth for a connection. If the intended recipient has sufficient resources, it allocates an isochronous data channel on the bus and notifies the transmitter of the allocated channel. Thereafter, the transmitter transmits the data on the allocated channel. If the recipient cannot allocate a channel, it does not respond, and the transmitter thereafter detects a time-out condition and begins transmitting using a “best efforts” scheme (i.e., non-guaranteed time delivery). In a second variation, a receiving node detects that it is receiving large quantities of data from a transmitting node. In response, the receiving node allocates an isochronous data channel on the bus and notifies the transmitter of the allocated channel. Thereafter, the transmitter transmits using the allocated isochronous channel. In a third variation, multiple receiving nodes that need to receive streaming data from a single transmitting node share a common isochronous data channel. In any of these variations, each receiver can periodically transmit a “deadman” timer message on a broadcast channel to indicate that it is still receiving on a given channel. If a transmitter detects that the deadman timer has expired, it reverts to transmitting data using a “best-efforts” scheme. A transmitter can transmit both to receivers that can handle QoS services and those that cannot explicitly support QoS services.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application is a continuation of prior U.S. application Ser. No. 09/829,880, filed Apr. 11, 2001, the entire contents of which are incorporated herein by reference.
  • TECHNICAL FIELD
  • The present invention relates generally to providing network-type services over a bus, such as the IEEE-1394 serial bus. More particularly, the invention provides a method and apparatus for providing quality of service delivery facilities over such a bus.
  • BACKGROUND OF THE INVENTION
  • The well-known Transmission Control Protocol/Internet Protocol (TCP/IP) has been used for many years to transmit data between computers. With the advent of the Internet, increasing numbers of people are using TCP/IP to transmit video, audio, and other forms of digital information. Applications such as videoconferencing and remote downloading of music rely on TCP/IP to transmit large quantities of information by breaking it up into packets that are then routed through the Internet. Unfortunately, the Internet cannot guarantee delivery of the information within a specified time period. Because data packets can be routed through many different computers depending on network traffic conditions, some packets may be delayed, causing “jerky” audio or video data.
  • It is conventional to transmit Internet Protocol (IP) packets over local area networks (LANs) such as an Ethernet. In such a scheme, IP data packets are “encapsulated” in an Ethernet frame, transmitted over an Ethernet LAN, and “unwrapped” at the receiving node to restore the original IP packet. In such networks, even though the distance between computers is generally much shorter than the Internet, there is no way to guarantee delivery of a given data packet within a specified time period. If the local area network becomes temporarily congested due to network traffic, time-sensitive data such as video streams can be delayed for an indeterminate time period.
  • One scheme for mitigating the aforementioned problem requires that network users (e.g., application programs) request bandwidth from a “Subnet Manager,” which acts as a central clearinghouse for bandwidth on the Ethernet. Each network user must register with and use the service to transmit data packets. If even one network user fails to register before making use of the network, the scheme can fail, since the one user can effectively make unfettered use of the bandwidth on the network. Existing application programs must typically be modified to conform to the new scheme. Moreover, because the physical bus topology is inherently non-deterministic (e.g., collisions can prevent a given packet from reaching its destination in a specified time period), packets can still arrive late, causing jitter and other effects.
  • Recently, a serial bus standard known as the IEEE 1394 bus has been developed. Implementations of this bus are based on the internationally adopted ISO/IEC 13213 (ANSI/IEE 1212) CSR Architecture Specification and the IEEE 1394-1995 Serial Bus Specification. A typical system conforming to the IEEE 1394 standard includes a plurality of nodes that are interconnected via point-to-point links, such as cables, that each connect a single node of the serial bus to another node of the serial bus. The nodes are addressable entities that can be independently reset and identified.
  • The 1394 bus provides both asynchronous and isochronous (time-guaranteed delivery) capabilities. Up to 64 isochronous channels are available on the bus. Nodes needing to send isochronous data must reserve bandwidth and a channel number on which to transmit. Bandwidth is measured as the percentage of a nominally 125-microsecond isochronous interval. Reservation of bandwidth and channel numbers is performed by manipulating registers on a well-known bus node, referred to as the isochronous resource manager (IRM).
  • The IEEE 1394 bus provides three primary types of bulk transfer:
  • (1) async-write (write to a specific address on a specific node). This is a point-to-point, best-effort, acknowledged service with no timeliness guarantees.
  • (2) async-stream (stream data on a specific channel). This is a multicast, best-effort, non-acknowledged service with no timeliness guarantees.
  • (3) isoch-stream (stream data on a specific channel with time guarantees). This is a multicast, isochronous (latency under 250 microseconds) non-acknowledged service that uses the same 64 channels available under async-stream.
  • Various implementations of the IEEE 1394 bus in computer systems typically include layered hardware and software support based on transaction, link, and physical layer protocols. The Internet Request for Comments (RFC) 2734, available at http://www.ietf.org/rfc/rfc2734.txt, describes a scheme for using the 1394 bus to transmit IP datagrams. The document generally describes a multicast channel allocation protocol (MCAP), which permits management of serial bus resources when used by IP multicast groups. However, it does not provide a generalized approach for providing quality-of-service facilities for applications using the bus.
  • Another document (http://search.ietf.org/internet-drafts-ietf-ip1394-ip-over-iso1394-00.txt) describes a proposal for using the isochronous channels on an IEEE 1394-compliant bus to guarantee bandwidth. The document generally suggests transmitting specific IP flows over a certain isochronous channel on the 1394 bus. However, it does not address various QoS requirements (e.g., point-to-point flows, such as a TCP connection), and does not support multicast.
  • Another document (IEC 61883-1) describes a protocol for the cooperative allocation and sharing of IEEE 1394 isochronous channels among audio/video devices. The protocol concerns itself purely with the reservation of channels and setting maximum transmission parameters for channels; it does not concern itself with the advertisement of the type of data transmitted over a particular channel.
  • Conventional approaches for allocating bandwidth to transmit data packets over a bus can incur various disadvantages, such as: (1) the possibility that bus resources can be locked up indefinitely if a resource requester crashes after allocation; (2) wasteful allocation where a transmitting node requests resources but the intended recipient is not available or able to use the resources; (3) an inability of applications that lack QoS capabilities to efficiently use bandwidth on the bus; and (4) no graceful degradation (i.e., failure to allocate isochronous facilities results in failure of communication, rather than degraded communication).
  • Consequently, there is a need to provide a decentralized quality-of-service facility that can be implemented over the IEEE 1394 bus, and that can adapt to changing conditions on the bus. Moreover, there is a need to provide quality-of-service features even for applications that do not directly support QoS services.
  • SUMMARY OF THE INVENTION
  • The invention permits applications, including those that support quality-of-service (QoS) features (e.g., videoconferencing), to take advantage of guaranteed delivery features of a computer bus such as the IEEE 1394 serial bus. In one embodiment, a transmitting node on a bus transmits a message to an intended recipient indicating a requested bandwidth for a connection. If the intended recipient has sufficient resources (e.g., a typical 1394 implementation limits each receiver to no more than 4 reception channels), it allocates an isochronous data channel on the bus and notifies the transmitter of the allocated channel. Thereafter, the transmitter transmits the data on the allocated channel. If the recipient cannot allocate a channel, it does not respond, and the transmitter thereafter detects a time-out condition and begins transmitting using a “best efforts” scheme (i.e., non-guaranteed time delivery).
  • In a second embodiment, a receiving node detects that it is receiving large quantities of data from a transmitting node on a broadcast channel. In response, the receiving node allocates an isochronous data channel on the 1394 bus and notifies the transmitter of the allocated channel. Thereafter, the transmitter transmits using the allocated isochronous channel.
  • In a third embodiment, multiple receiving nodes that need to receive streaming data from a single transmitting node share a common isochronous data channel. In this embodiment, each receiver transmits a message to other potential recipients to determine whether any other recipient has already allocated an isochronous channel. If no other receiver has already allocated a channel, the first receiver allocates a channel and notifies other potential recipients of the allocated channel. (If another receiver had already allocated a channel, the second receiver receives the transmission on the already-allocated channel.) If the first receiver that allocated the channel no longer needs it, it keeps it allocated if any other receivers are listening to the channel and deallocates it when no other receivers are using it.
  • In any of the above embodiments, each receiver can periodically transmit a “keep alive” message on a broadcast channel that acts as a deadman timer to indicate that the receiver is still receiving on a given channel. If a transmitter detects that the deadman timer has expired, it reverts to transmitting data using a “best-efforts” scheme. Moreover, a transmitter can transmit both to receivers that can handle QoS services and those that cannot explicitly support QoS services.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a schematic block diagram of a conventional general-purpose digital computing environment that can be used to implement various aspects of the present invention.
  • FIG. 2 shows a system employing a quality-of-service manager (205 and 210) in each of a plurality of nodes coupled over an IEEE 1394 bus.
  • FIG. 3 shows method steps for allocating bandwidth in a system between a transmitting node and a receiving node according to one variation of the invention.
  • FIG. 4 shows method steps for allocating bandwidth in a system between a transmitting node and a receiving node according to a second variation of the invention.
  • FIG. 5 shows method steps for allocating bandwidth in a system between a transmitting node and a plurality of receiving nodes according to a third variation of the invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • FIG. 1 is a schematic diagram of a conventional general-purpose digital-computing environment that can be used to implement various aspects of the present invention. A computer 100 includes a processing unit 110, a system memory 120 and a system bus 130 that couples various system components including the system memory to the processing unit 110. The system bus 130 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory 120 includes a read only memory (ROM) 140 and a random access memory (RAM) 150.
  • A basic input/output system (BIOS) 160 containing the basic routines that help to transfer information between elements within the computer 100, such as during start-up, is stored in ROM 140. Computer 100 also includes a hard disk drive 170 for reading from and writing to a hard disk (not shown), a magnetic disk drive 180 for reading from or writing to a removable magnetic disk 190, and an optical disk drive 191 for reading from or writing to a removable optical disk 192, such as a CD ROM or other optical media. Hard disk drive 170, magnetic disk drive 180, and optical disk drive 191 are respectively connected to the system bus 130 by a hard disk drive interface 192, a magnetic disk drive interface 193, and an optical disk drive interface 194. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the computer 100. It will be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read only memories (ROMs), and the like, may also be used in the exemplary operating environment.
  • A number of program modules can be stored on the hard disk, magnetic disk 190, optical disk 192, ROM 140 or RAM 150, including an operating system 195, one or more application programs 196, other program modules 197, and program data 198. In particular, the RAM 150 will, from time to time, store various device drivers, as known in the art. A user can enter commands and information into computer 100 through input or selection devices, such as a keyboard 101 and a pointing device 102. The pointing device 102 may comprise a mouse, touch pad, touch screen, voice control and activation or other similar devices. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 110 through a serial port interface 106 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, a game port or a universal serial bus (USB). A monitor 107 or other type of display device is also connected to system bus 130 via an interface, such as a video adapter 108. In addition to the monitor, personal computers typically include other peripheral output devices (not shown), such as speakers and printers.
  • An IEEE 1394 interface 140 may also be provided. The IEEE 1394 interface 140 couples an IEEE 1394-compliant serial bus 145 to the system bus 130 or similar communication bus. The IEEE 1394-compliant serial bus 145, as known in the art, allows multiple devices 150 to communicate with the computer 100 and each other using high-speed serial channels. The IEEE 1394 serial bus standard is based largely upon the internationally adopted ISO/IEC 13213 (ANSI/IEEE 1212) CSR Architecture Specification and the IEEE 1394-1995 Serial Bus Specification. Additional buses such as the PCI bus can be provided in computer 100 and interfaced to the IEEE 1394 and other buses.
  • A typical serial bus having an IEEE 1394 standard architecture is comprised of a multiplicity of nodes that are interconnected via point-to-point links, such as cables, that each connect a single node of the serial bus to another node of the serial bus. The nodes themselves are addressable entities that can be independently reset and identified. Nodes are logical entities, each with a unique address. Each node provides a so-called configuration ROM (read-only memory)—hereinafter referred to as configuration memory—and a standardized set of control registers that can be accessed by software residing within the computer system.
  • The computer 100 can operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 109. The remote computer 109 typically includes at least some of the elements described above relative to the computer 100, although only a memory storage device 111 has been illustrated in FIG. 1. The logical connections depicted in FIG. 1 include a local area network (LAN) 112 and a wide area network (WAN) 113. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
  • When used in a LAN networking environment, the computer 100 is connected to local network 112 through a network interface or adapter 114. When used in a WAN networking environment, the computer 100 and remote computer 109 may both include a modem 115 or other means for establishing a communications over wide area network 113, such as the Internet. The modem 115, which may be internal or external, is connected to system bus 130 via the serial port interface 106. In a networked environment, program modules depicted relative to the computer 100, or portions thereof, may be stored in the remote memory storage device.
  • It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used. The existence of any of various well-known protocols, such as TCP/IP, “ETHERNET”, FTP, HTTP and the like, is presumed, and the system can be operated in a client-server configuration to permit a user to retrieve web pages from a web-based server. Procedures of the present invention to be described below can operate within the environment of the computer 100 shown in FIG. 1. Although the invention is generally applicable to a computer operating in accordance with the IEEE 1394 standard, it is not intended to be so limited.
  • FIG. 2 shows a system employing a quality-of-service manager (205 and 210) in each of a plurality of nodes coupled over an IEEE 1394 bus according to one aspect of the present invention. As shown in FIG. 2, two computer nodes are coupled through a bus such as the IEEE 1394 bus. As is conventional, each node includes a 1394 hardware card (207 and 208, respectively) and an appropriate 1394 bus driver (206 and 209, respectively) that collectively permit the nodes to communicate using the 1394 bus.
  • In one embodiment, each 1394-compliant bus driver comprises an Open Host Controller Interface (OHCI) driver implementation of the IEEE 1394 link layer protocol. The OHCI is described in the 1394 Open Host Controller Interface Specification, which is widely available and well known to those of skill in the art. This interface can transmit and receive all defined 1394 packet formats using Direct Memory Access (DMA) to write the packets into the host computer's memory. In various embodiments, virtual device drivers can be used to connect to and communicate over the bus.
  • As is conventional, each node includes one or more application programs (201, 202, 213, and 214, respectively) that operate using TCP/ IP protocols 204 and 211. Each application program may comprise, for example, a program that transmits audio and/or video data between nodes. As one example, one application program may comprise a videoconferencing application that permits two persons to see and hear each other by transmitting audio and video packets over the bus. In this case, it may be important or desirable to provide time-guaranteed delivery of data packets to prevent “jerky” audio and video displays at each node. Certain videoconferencing applications may be “QoS-enabled” in that they are aware of bandwidth allocation procedures and can issue commands to allocate bandwidth in the network. Other applications may not have such features. In one embodiment, the present invention can also accommodate the latter type of applications without requiring software modifications to the applications.
  • For applications that are “QoS-enabled” (i.e., they include functionality that makes direct use of quality-of-service features such as bandwidth allocation), a traffic control manager (TCM) component 203 and 212 traps QoS calls and routes them to the appropriate functions in the lower levels of software, as described in more detail herein. Data packets are transmitted using TCP/ IP protocols 204 and 211, as is conventional. Various features of the present invention can be incorporated into QoS managers 205 and 210, as described in more detail below. It may be desirable to abstract out or translate different types of QoS requests (including conventional ones such as RSVP) into 1394-specific allocation requests. Although it is contemplated that the inventive principles can be implemented using the architecture of FIG. 2, other approaches are of course possible and the invention is not intended to be limited in this respect.
  • FIG. 3 shows method steps for allocating bandwidth in a system between a transmitting node and a receiving node according to one variation of the invention. It is assumed in FIG. 3 that a QoS-enabled application on a first node seeks to communicate with a QoS-enabled application on a second node over the IEEE 1394 bus. Steps performed by the transmitting node are shown on the left side of FIG. 3, while those performed by the receiving node are shown on the right side of FIG. 3. It will be appreciated that for a two-way transmission (e.g., full-duplex videoconferencing), each node will effectively act as both a transmitter and a receiver, and thus the steps shown can be replicated on opposite nodes. In one embodiment, the steps shown in FIG. 3 are performed by QoS managers 205 and 210 of FIG. 2. The inventive steps, however, can be practiced in various other ways, and the invention is not limited to the structures shown in FIG. 2.
  • Beginning in step 301, in response to receiving a request to transmit data at a given data rate (e.g., a known rate sufficient to support good-quality video frames), the transmitting node transmits a request for bandwidth to the intended receiving node. The request can include related information such as the source IP address, port number, protocol, and destination IP address. In one embodiment, a flow descriptor can be used to reference information pertaining to each flow and to allow an application to advertise what it is providing and what it needs. For example, a flow descriptor may comprise fields such as TCP/IP flow information (source IP address, source port, destination IP address, and destination port) and, optionally, a data format (e.g., MPEG, audio, etc.) This transmission can occur over a broadcast channel that is used to communicate among the nodes for purposes of resource allocation.
  • In step 309, the receiving node checks to determine whether resources (e.g., an isochronous channel and suitable bandwidth) are available. For example, in certain systems the IEEE 1394 bus may be configured to permit each node to allocate a maximum number (e.g., four) of isochronous data channels. If the intended recipient node had already allocated this maximum number of channels, then no further resources would be available for allocation.
  • In step 310, a check is made in the intended receiver to determine whether resources are available for the communication. If not, then in step 311 the request is ignored, and processing terminates. (If the receiving node does not support QoS services, the request will also be ignored or rejected, leading to the same or similar result). Ignoring the request will cause the transmitter to time-out, as described in more detail below.
  • In step 312, if resources are available, the receiver allocates an isochronous data channel with desired bandwidth. In one embodiment, these resources are allocated using conventional IEEE 1394-specific function calls.
  • In step 313, the receiving node transmits a message on the broadcast channel to the transmitting node indicating the allocated channel number and bandwidth. Thereafter, the receiving node periodically transmits a “keep alive” message in step 314 to the transmitting node indicating that the resources are still allocated. In step 315, the receiver receives data from the transmitter over the allocated isochronous data channel. In step 316, the receiver checks to determine whether the transmitting node has transmitted a similar periodic “keep alive” message. If such a message is received, then processing continues in step 314 until such messages are no longer received. If no such “keep alive” message is received within a time-out period, then in step 317 the resources are deallocated, and the transmitter is optionally notified of the deallocation.
  • The “keep alive” timer scheme described above allows for system resources to be automatically deallocated in the event that one of the nodes (e.g., the transmitter or receiver) fails, thus preventing resource lock-up.
  • Returning to the left side of FIG. 3, if in step 303 no response is received from the intended recipient within a timeout period, then in step 304 communication will revert to a “best efforts” transmission scheme, which does not require allocation of bus resources. For example, the transmitting node can transmit the data packets using asynchronous writes over the 1394 bus. Alternatively, the transmitting node can transmit the data packets using asynchronous streams on a specific data channel. The latter scheme provides non-acknowledged service with no timeliness guarantees. This default to a best-efforts transmission mode provides a degraded communication mode that permits the nodes to communicate even if bus resources are not available, rather than returning an error message to the application program.
  • In step 303, assuming that a response was received from the intended receiver (i.e., no time-out), then in step 305 the transmitter begins transmitting data using the allocated resources (e.g., using the allocated channel and bandwidth parameters). In step 306, the transmitter periodically transmits a “keep alive” message to the receiver in order to signal that the allocated channel is still in use. If in step 307 the transmitter determines that a similar “keep alive” message has not been received from the receiver within a certain time-out period, then in step 308 communication reverts to a “best efforts” transmission mode as described above. In one variation, the transmitter can attempt to later re-establish guaranteed delivery communication with the intended receiver after a time-out period. Assuming that the receiver and transmitter continue to transmit “keep alive” messages for the resources, the transmitter transmits data using the allocated resources.
  • One advantage to the above-described scheme is that a QoS-enabled application can communicate with a non-QoS enabled application over the bus. For example, if a QoS-enabled transmitting node attempts to allocate bus resources to transmit streaming video packets, but the corresponding application at the receiving node is not QoS-enabled, then the transmission can automatically proceed in a degraded mode using best-efforts communication. This is advantageous over a scheme that would otherwise not allow incompatible transmitting and receiving nodes to communicate.
  • FIG. 4 shows method steps for allocating bandwidth in a system between a transmitting node and a receiving node according to a second variation of the invention. In contrast to the scheme shown in FIG. 3, where it is assumed that the transmitting node is QoS-enabled (i.e., it makes an explicit request to allocate bus resources), the embodiment of FIG. 4 works even where the transmitting application is not QoS-enabled. In this embodiment, a high traffic condition is automatically detected between the nodes, and an isochronous data channel is automatically allocated and used to transfer further data packets between the nodes. As with the embodiment of FIG. 3, the steps in FIG. 4 can be carried out in QoS manager 205 and 210 of FIG. 2, preferably in a data link layer of a protocol stack.
  • Beginning in step 401, an application program begins transmitting data packets over the bus, such as over a broadcast channel or over an asynchronous data channel. In step 407, the receiving node begins receiving the data packets and determines that a large number of packets are continually being received from the transmitting node. (This can be further refined to detect not only traffic from a particular node, but traffic occurring over a specific IP flow, such as from a particular IP address). In response to this determination, the receiver in step 408 allocates an isochronous data channel on the bus with sufficient bandwidth to support the expected data packets, and maps the data channel to the particular flow (e.g., the IP addresses from which the packets are being received). In step 409, the receiving node notifies the transmitting node of the newly allocated isochronous data channel. Steps 410 through 413 are similar to steps 314 through 317 of FIG. 3 and no further elaboration is required.
  • Returning to the transmitting side of FIG. 4, in step 402 the transmitting node detects the assignment of a new data channel for the designated flow, and in step 403 changes its transmission mode to begin transmitting the packets associated with the flow over the newly allocated isochronous data channel. In step 404, the transmitter periodically transmits a “keep alive” message to the receiver to signal that the resources are being used. In step 405, the transmitter determines whether a similar periodic “keep alive” message has been received from the receiver and, if not, reverts to the broadcast channel mode of communication in step 406.
  • As explained above, one advantage of the method shown in FIG. 4 is that time-bounded data transmission can be used even where application programs are not QoS-enabled. That is, the isochronous data channels can be used efficiently in the system even where application programs are not knowledgeable about such channels.
  • FIG. 5 shows method steps for allocating bandwidth in a system between a transmitting node and a plurality of receiving nodes according to a third variation of the invention. In the embodiment of FIG. 5, it is assumed that a single transmitter transmits data packets, and two different receiving nodes seek to receive the same data stream from the transmitter. As one example, a video broadcast (e.g., a TV program) is to be transmitted from a central node, and multiple recipient nodes seek to receive the same broadcast.
  • Steps 501 and 502, shown in abbreviated form in FIG. 5, are assumed to encompass steps such as those shown in FIG. 3 or FIG. 4. In other words, the transmitting node and the first receiving node set up an isochronous communication channel using techniques such as those illustrated in FIG. 3 or FIG. 4.
  • In step 507, it is assumed that an application program in a second receiving node seeks to receive the same packets transmitted from the transmitting node. If a TV program is being transmitted using a known IP address, for example, the second receiving node can determine that such a broadcast is currently being transmitted over the bus.
  • In step 508, the second receiving node broadcasts a request over the bus for information regarding the flow corresponding to the transmitted packets. This request is received by the first receiver which, in step 504, checks its internal allocation tables to find the corresponding channel information for the flow. In step 505, the first receiving node sets a flag indicating that the channel is now being shared by a second node, and in step 506 transmits the flow mapping information (e.g., the channel and bandwidth information corresponding to the requested flow) to the second receiving node.
  • In step 509, the second receiving node waits for a response to the request for information. In step 510, if no response is received within a time-out period, then in step 511 it is assumed that no other node has allocated resources for the flow, and the node proceeds to allocate resources and receive the transmission over the allocated resource. Alternatively, if a response was received from the first receiving node, then in step 512 the second receiving node begins receiving data on the shared channel.
  • In one embodiment, the first receiving node sets a flag indicating that the channel is shared (see step 505) in order to prevent the de-allocation of the resource if another node is using the shared channel. For example, if the user at the first receiving node terminates viewing of a video program, first receiving node should first check to see whether any other nodes are sharing the channel before deallocating the resources. If another node continues to share the channel, the first receiving node can continue to leave the resources allocated until either receiving a termination request from the other node(s), or until a “keep alive” message (not shown) is no longer received from the second node.
  • Thus has been described a system and various methods for implementing quality-of-service facilities such as guaranteed time delivery of data packets in a system, even for application programs that are not QoS-enabled. The system and methods can be used in any number of applications such as videoconferencing, music downloading, Internet browsing, and the like. The inventive principles can be practiced without requiring a central resource flow allocation manager, thus providing a fail-safe and robust system.
  • What has been described above is merely illustrative of the application of the principles of the present invention. Other arrangements and methods can be implemented by those skilled in the art without departing from the spirit and scope of the present invention. Any of the methods of the invention can be implemented in software that can be stored on computer disks or other computer-readable media for execution in a host or target computer. While an electrical medium has been described as the communications channel, the principles can also be applied using RF, fiber optic, or other media. No claim should be interpreted to be in means plus function format. Numbered steps in method claims should not be interpreted to require a particular ordering of the steps.

Claims (4)

1. A method of providing time-guaranteed delivery of data packets over a bus that supports both isochronous and asynchronous modes of data transmission, comprising the steps of:
(1) establishing an isochronous mode of data communication over the bus between a transmitting node and a first receiving node and transmitting a plurality of data packets from the transmitting node to the first receiving node over an isochronous data channel allocated by the first receiving node;
(2) in a second receiving node, receiving information regarding the isochronous data channel allocated to support the transmission of data packets in step (1); and
(3) in the second receiving node, receiving the plurality of data packets from the transmitting node using the isochronous data channel allocated in step (1).
2. The method of claim 1, further comprising the step of setting a flag in the first receiving node indicating that the second receiving node is sharing the allocated isochronous data channel, wherein the first receiving node inhibits deallocation of the allocated isochronous data channel if the flag is set, and otherwise deallocates the allocated isochronous data channel if it is no longer to be used by the first receiving node.
3. A computer-readable medium comprising computer instructions which, when executed by a computer node coupled to a bus that supports both isochronous and asynchronous data transmission modes, performs the steps of:
(1) establishing an isochronous mode of data communication over the bus and receiving a plurality of data packets over an isochronous data channel allocated by the computer node;
(2) in response to receiving a request to share the isochronous data channel by another computer node, setting a flag that inhibits deallocation of the isochronous data channel while it is being shared by the another computer node; and
(3) in response to detecting that the isochronous data channel is no longer needed and is not being shared by the another computer node, deallocating the isochronous data channel.
4. A system comprising a first computer node and a second computer node coupled over a communication bus that provides both asynchronous and isochronous communication modes,
wherein the first computer node transmits a request for time-guaranteed bandwidth using the isochronous communication mode to the second computer node and, in response to detecting a time-out condition for failing to receive a response to the request, transmits data packets to the second computer node using the asynchronous communication mode.
US10/851,187 2001-04-11 2004-05-24 Method and apparatus for providing quality-of-service delivery facilities over a bus Abandoned US20060190654A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/851,187 US20060190654A1 (en) 2001-04-11 2004-05-24 Method and apparatus for providing quality-of-service delivery facilities over a bus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/829,880 US6820150B1 (en) 2001-04-11 2001-04-11 Method and apparatus for providing quality-of-service delivery facilities over a bus
US10/851,187 US20060190654A1 (en) 2001-04-11 2004-05-24 Method and apparatus for providing quality-of-service delivery facilities over a bus

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/829,880 Continuation US6820150B1 (en) 2001-04-11 2001-04-11 Method and apparatus for providing quality-of-service delivery facilities over a bus

Publications (1)

Publication Number Publication Date
US20060190654A1 true US20060190654A1 (en) 2006-08-24

Family

ID=33419025

Family Applications (3)

Application Number Title Priority Date Filing Date
US09/829,880 Expired - Lifetime US6820150B1 (en) 2001-04-11 2001-04-11 Method and apparatus for providing quality-of-service delivery facilities over a bus
US10/851,187 Abandoned US20060190654A1 (en) 2001-04-11 2004-05-24 Method and apparatus for providing quality-of-service delivery facilities over a bus
US10/971,031 Expired - Fee Related US7093044B2 (en) 2001-04-11 2004-10-25 Method and apparatus for providing quality-of-service delivery facilities over a bus

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/829,880 Expired - Lifetime US6820150B1 (en) 2001-04-11 2001-04-11 Method and apparatus for providing quality-of-service delivery facilities over a bus

Family Applications After (1)

Application Number Title Priority Date Filing Date
US10/971,031 Expired - Fee Related US7093044B2 (en) 2001-04-11 2004-10-25 Method and apparatus for providing quality-of-service delivery facilities over a bus

Country Status (1)

Country Link
US (3) US6820150B1 (en)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060083232A1 (en) * 2004-10-15 2006-04-20 Samsung Electronics Co., Ltd. Method and apparatus for transmitting isochronous stream
US20060172698A1 (en) * 2005-02-01 2006-08-03 Lg Electronics Inc. Apparatus for receiving a broadcast and method for alerting a user of the broadcast
US20080204248A1 (en) * 2007-02-23 2008-08-28 Nancy Cam Winget Rfid tag management and operation
US20090318235A1 (en) * 2006-07-26 2009-12-24 Hiroyuki Ashida Game system, game terminal therefor, and server device therefor
US20100029388A1 (en) * 2006-07-26 2010-02-04 Konami Digital Entertainment Co. Ltd Game system, game terminal therefor, and server device therefor
US20140071806A1 (en) * 2012-09-10 2014-03-13 Research In Motion Limited Methods and apparatus for mobile device recovery following radio link failure
WO2016172304A1 (en) * 2015-04-23 2016-10-27 Sorenson Media, Inc. Automatic content recognition fingerprint sequence matching
US9813781B2 (en) 2015-10-27 2017-11-07 Sorenson Media, Inc. Media content matching and indexing
US11077366B2 (en) 2006-04-12 2021-08-03 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US11082746B2 (en) * 2006-04-12 2021-08-03 Winview, Inc. Synchronized gaming and programming
US11148050B2 (en) 2005-10-03 2021-10-19 Winview, Inc. Cellular phone games based upon television archives
US11154775B2 (en) 2005-10-03 2021-10-26 Winview, Inc. Synchronized gaming and programming
US11266896B2 (en) 2006-01-10 2022-03-08 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US11298621B2 (en) 2006-01-10 2022-04-12 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US11308765B2 (en) 2018-10-08 2022-04-19 Winview, Inc. Method and systems for reducing risk in setting odds for single fixed in-play propositions utilizing real time input
US11358064B2 (en) 2006-01-10 2022-06-14 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US11400379B2 (en) 2004-06-28 2022-08-02 Winview, Inc. Methods and apparatus for distributed gaming over a mobile device
US11451883B2 (en) 2005-06-20 2022-09-20 Winview, Inc. Method of and system for managing client resources and assets for activities on computing devices
US11551529B2 (en) 2016-07-20 2023-01-10 Winview, Inc. Method of generating separate contests of skill or chance from two independent events
US11601727B2 (en) 2008-11-10 2023-03-07 Winview, Inc. Interactive advertising system
US11654368B2 (en) 2004-06-28 2023-05-23 Winview, Inc. Methods and apparatus for distributed gaming over a mobile device
US11786813B2 (en) 2004-07-14 2023-10-17 Winview, Inc. Game of skill played by remote participants utilizing wireless devices in connection with a common game event

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002017566A1 (en) * 2000-08-23 2002-02-28 Koninklijke Philips Electronics N.V. Communication system and device
US6970481B2 (en) * 2001-04-17 2005-11-29 Microsoft Corporation Methods and systems for distributing multimedia data over heterogeneous networks
US7808895B2 (en) * 2003-10-30 2010-10-05 Intel Corporation Isochronous device communication management
US7675916B2 (en) * 2004-07-12 2010-03-09 At&T Intellectual Property I, L.P. Systems and methods for dynamically adjusting QoS parameters
US7551606B2 (en) * 2004-08-20 2009-06-23 Sony Corporation Isochronous transmission for IP-oriented network
US8077603B2 (en) * 2004-10-29 2011-12-13 Honeywell International Inc. IEEE 1394 gateway for fault-tolerant communication
US7990898B2 (en) * 2004-10-29 2011-08-02 Honeywell International Inc. IEEE 1394 network for deterministic and/or fault-tolerant communication
US7774750B2 (en) * 2005-07-19 2010-08-10 Microsoft Corporation Common concurrency runtime
JP4974508B2 (en) * 2005-10-28 2012-07-11 キヤノン株式会社 Bus master device, bus arbitration device, and bus arbitration method
US20070133546A1 (en) * 2005-12-08 2007-06-14 Electronics & Telecommunications Research Institute Method for providing QoS using address system and system resolution protocol
JP2008017409A (en) * 2006-07-10 2008-01-24 Hitachi Ltd QoS CONTROL SYSTEM, QoS CONTROL DEVICE AND SESSION CONTROL DEVICE
US8483108B2 (en) * 2006-07-24 2013-07-09 Apple Inc. Apparatus and methods for de-emphasis training on a point-to-point connection
JP2008079116A (en) * 2006-09-22 2008-04-03 Fujitsu Ltd Method of setting monitor control line
US8539098B2 (en) * 2007-10-17 2013-09-17 Dispersive Networks, Inc. Multiplexed client server (MCS) communications and systems
US7941578B2 (en) * 2008-06-11 2011-05-10 Hewlett-Packard Development Company, L.P. Managing command request time-outs in QOS priority queues
US8577404B2 (en) 2008-07-15 2013-11-05 Qualcomm Incorporated Prioritization of group communications at a wireless communication device
US8755831B2 (en) * 2009-03-24 2014-06-17 QYALCOMM Incorporated Selectively allocating data channel resources to wireless communication devices within a wireless communications system
US8738058B2 (en) * 2009-04-06 2014-05-27 Qualcomm Incorporated High-priority communications sessions within a wireless communications system
US9244866B2 (en) * 2010-04-30 2016-01-26 International Business Machines Corporation Remote access of peripheral device connected to serial bus
US8848731B2 (en) 2011-01-31 2014-09-30 Qualcomm Incorporated System and method for facilitating data transfer using a shared non-deterministic bus

Citations (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774695A (en) * 1996-03-22 1998-06-30 Ericsson Inc. Protocol interface gateway and method of connecting an emulator to a network
US5845152A (en) * 1997-03-19 1998-12-01 Apple Computer, Inc. Method for transmission of isochronous data with two cycle look ahead
US5911059A (en) * 1996-12-18 1999-06-08 Applied Microsystems, Inc. Method and apparatus for testing software
US5938735A (en) * 1997-10-21 1999-08-17 Ricoh Company, Ltd. System for establishing optimized ISDN communication by identifying common communication attributes of destination and source terminals prior to establishing communication link therebetween
US5953511A (en) * 1997-04-08 1999-09-14 National Instruments Corporation PCI bus to IEEE 1394 bus translator
US5978902A (en) * 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US5991520A (en) * 1996-02-02 1999-11-23 Sony Corporation Application programming interface for managing and automating data transfer operations between applications over a bus structure
US6088364A (en) * 1996-07-15 2000-07-11 Yamaha Corporation Interface apparatus connecting between multimedia network and music network
US6094530A (en) * 1998-04-29 2000-07-25 Intel Corporation Remotely monitoring execution of a program
US6134662A (en) * 1998-06-26 2000-10-17 Vlsi Technology, Inc. Physical layer security manager for memory-mapped serial communications interface
US6219697B1 (en) * 1997-05-02 2001-04-17 3Com Corporation Method and apparatus for operating the internet protocol over a high-speed serial bus
US6266729B1 (en) * 1997-05-20 2001-07-24 Microsoft Corporation Computer for encapsulating legacy data transport protocol for IEEE 1394 serial bus
US6279123B1 (en) * 1997-09-15 2001-08-21 Lucent Technologies, Inc. System for viewing and monitoring embedded processor operation
US6347337B1 (en) * 1999-01-08 2002-02-12 Intel Corporation Credit based flow control scheme over virtual interface architecture for system area networks
US6353595B1 (en) * 1997-05-07 2002-03-05 Siemens Aktiengesellschaft Method and configuration for the network-wide analysis of connections in telecommunications networks
US6374399B1 (en) * 1999-04-21 2002-04-16 Advanced Micro Devices, Inc. Apparatus and method for providing list and read list capability for a host computer system
US6378000B1 (en) * 1999-04-29 2002-04-23 Mitsubish Electric Research Laboratories, Inc Address mapping in home entertainment network
US6430635B1 (en) * 1998-10-10 2002-08-06 Lg Electronics Inc Protocol interfacing method
US6434117B1 (en) * 1998-03-06 2002-08-13 Nec Corporation IEEE-1394 serial bus network capable of multicast communication
US20020133632A1 (en) * 2001-03-09 2002-09-19 Salloum Salazar Antonio Elias System of apparatuses that communicate via a bus structure
US20020141418A1 (en) * 1999-03-19 2002-10-03 Avner Ben-Dor Tunneling between a bus and a network
US6496509B1 (en) * 1998-08-03 2002-12-17 Advanced Micro Devices, Inc. System for transmitting data packets between computers via an IEEE-1394 network medium
US6496862B1 (en) * 1998-08-25 2002-12-17 Mitsubishi Electric Research Laboratories, Inc. Remote monitoring and control of devices connected to an IEEE 1394 bus via a gateway device
US6522654B1 (en) * 1998-05-15 2003-02-18 Harris-Exigent, Inc. Method for hosting the internet protocol suite on the IEEE-1394 high speed serial bus
US6538758B1 (en) * 1998-05-15 2003-03-25 Canon Kabushiki Kaisha Image output apparatus and method thereof, and image output system
US20030078063A1 (en) * 2000-01-27 2003-04-24 Yvon Legallais Method for isochronous resource management in a network based on hiperlan 2 techonology
US6600756B1 (en) * 1999-06-14 2003-07-29 Hewlett-Packard Development Company, Lp. Method of improving the performance of a bus which is asynchronous-traffic intensive
US20030217220A1 (en) * 1998-11-18 2003-11-20 Samsung Electronics Co., Ltd. Method for transferring variable isochronous data and apparatus therefor
US6658512B1 (en) * 2000-09-28 2003-12-02 Intel Corporation Admission control method for data communications over peripheral buses
US6701371B1 (en) * 1998-08-29 2004-03-02 Samsung Electronics Co., Ltd. Data transfer method for matching upper protocal layer to high speed serial bus
US6725311B1 (en) * 2000-09-14 2004-04-20 Microsoft Corporation Method and apparatus for providing a connection-oriented network over a serial bus

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151688A (en) 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system

Patent Citations (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991520A (en) * 1996-02-02 1999-11-23 Sony Corporation Application programming interface for managing and automating data transfer operations between applications over a bus structure
US5774695A (en) * 1996-03-22 1998-06-30 Ericsson Inc. Protocol interface gateway and method of connecting an emulator to a network
US6088364A (en) * 1996-07-15 2000-07-11 Yamaha Corporation Interface apparatus connecting between multimedia network and music network
US5911059A (en) * 1996-12-18 1999-06-08 Applied Microsystems, Inc. Method and apparatus for testing software
US5845152A (en) * 1997-03-19 1998-12-01 Apple Computer, Inc. Method for transmission of isochronous data with two cycle look ahead
US5953511A (en) * 1997-04-08 1999-09-14 National Instruments Corporation PCI bus to IEEE 1394 bus translator
US5978902A (en) * 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US6219697B1 (en) * 1997-05-02 2001-04-17 3Com Corporation Method and apparatus for operating the internet protocol over a high-speed serial bus
US6353595B1 (en) * 1997-05-07 2002-03-05 Siemens Aktiengesellschaft Method and configuration for the network-wide analysis of connections in telecommunications networks
US6266729B1 (en) * 1997-05-20 2001-07-24 Microsoft Corporation Computer for encapsulating legacy data transport protocol for IEEE 1394 serial bus
US6272581B1 (en) * 1997-05-20 2001-08-07 Microsoft Corporation System and method for encapsulating legacy data transport protocols for IEEE 1394 serial bus
US6279123B1 (en) * 1997-09-15 2001-08-21 Lucent Technologies, Inc. System for viewing and monitoring embedded processor operation
US5938735A (en) * 1997-10-21 1999-08-17 Ricoh Company, Ltd. System for establishing optimized ISDN communication by identifying common communication attributes of destination and source terminals prior to establishing communication link therebetween
US6434117B1 (en) * 1998-03-06 2002-08-13 Nec Corporation IEEE-1394 serial bus network capable of multicast communication
US6094530A (en) * 1998-04-29 2000-07-25 Intel Corporation Remotely monitoring execution of a program
US6522654B1 (en) * 1998-05-15 2003-02-18 Harris-Exigent, Inc. Method for hosting the internet protocol suite on the IEEE-1394 high speed serial bus
US6538758B1 (en) * 1998-05-15 2003-03-25 Canon Kabushiki Kaisha Image output apparatus and method thereof, and image output system
US6134662A (en) * 1998-06-26 2000-10-17 Vlsi Technology, Inc. Physical layer security manager for memory-mapped serial communications interface
US6496509B1 (en) * 1998-08-03 2002-12-17 Advanced Micro Devices, Inc. System for transmitting data packets between computers via an IEEE-1394 network medium
US6496862B1 (en) * 1998-08-25 2002-12-17 Mitsubishi Electric Research Laboratories, Inc. Remote monitoring and control of devices connected to an IEEE 1394 bus via a gateway device
US6701371B1 (en) * 1998-08-29 2004-03-02 Samsung Electronics Co., Ltd. Data transfer method for matching upper protocal layer to high speed serial bus
US6430635B1 (en) * 1998-10-10 2002-08-06 Lg Electronics Inc Protocol interfacing method
US20030217220A1 (en) * 1998-11-18 2003-11-20 Samsung Electronics Co., Ltd. Method for transferring variable isochronous data and apparatus therefor
US6347337B1 (en) * 1999-01-08 2002-02-12 Intel Corporation Credit based flow control scheme over virtual interface architecture for system area networks
US20020141418A1 (en) * 1999-03-19 2002-10-03 Avner Ben-Dor Tunneling between a bus and a network
US6374399B1 (en) * 1999-04-21 2002-04-16 Advanced Micro Devices, Inc. Apparatus and method for providing list and read list capability for a host computer system
US6378000B1 (en) * 1999-04-29 2002-04-23 Mitsubish Electric Research Laboratories, Inc Address mapping in home entertainment network
US6600756B1 (en) * 1999-06-14 2003-07-29 Hewlett-Packard Development Company, Lp. Method of improving the performance of a bus which is asynchronous-traffic intensive
US20030078063A1 (en) * 2000-01-27 2003-04-24 Yvon Legallais Method for isochronous resource management in a network based on hiperlan 2 techonology
US6725311B1 (en) * 2000-09-14 2004-04-20 Microsoft Corporation Method and apparatus for providing a connection-oriented network over a serial bus
US6658512B1 (en) * 2000-09-28 2003-12-02 Intel Corporation Admission control method for data communications over peripheral buses
US20020133632A1 (en) * 2001-03-09 2002-09-19 Salloum Salazar Antonio Elias System of apparatuses that communicate via a bus structure

Cited By (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11654368B2 (en) 2004-06-28 2023-05-23 Winview, Inc. Methods and apparatus for distributed gaming over a mobile device
US11400379B2 (en) 2004-06-28 2022-08-02 Winview, Inc. Methods and apparatus for distributed gaming over a mobile device
US11786813B2 (en) 2004-07-14 2023-10-17 Winview, Inc. Game of skill played by remote participants utilizing wireless devices in connection with a common game event
US20060083232A1 (en) * 2004-10-15 2006-04-20 Samsung Electronics Co., Ltd. Method and apparatus for transmitting isochronous stream
US20060172698A1 (en) * 2005-02-01 2006-08-03 Lg Electronics Inc. Apparatus for receiving a broadcast and method for alerting a user of the broadcast
US11451883B2 (en) 2005-06-20 2022-09-20 Winview, Inc. Method of and system for managing client resources and assets for activities on computing devices
US11154775B2 (en) 2005-10-03 2021-10-26 Winview, Inc. Synchronized gaming and programming
US11148050B2 (en) 2005-10-03 2021-10-19 Winview, Inc. Cellular phone games based upon television archives
US11918880B2 (en) 2006-01-10 2024-03-05 Winview Ip Holdings, Llc Method of and system for conducting multiple contests of skill with a single performance
US11338189B2 (en) 2006-01-10 2022-05-24 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US11298621B2 (en) 2006-01-10 2022-04-12 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US11266896B2 (en) 2006-01-10 2022-03-08 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US11358064B2 (en) 2006-01-10 2022-06-14 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US11951402B2 (en) 2006-01-10 2024-04-09 Winview Ip Holdings, Llc Method of and system for conducting multiple contests of skill with a single performance
US20210360325A1 (en) * 2006-04-12 2021-11-18 Winview, Inc. Synchronized gaming and programming
US11179632B2 (en) 2006-04-12 2021-11-23 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US11678020B2 (en) 2006-04-12 2023-06-13 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US11716515B2 (en) 2006-04-12 2023-08-01 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US11917254B2 (en) 2006-04-12 2024-02-27 Winview Ip Holdings, Llc Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US11077366B2 (en) 2006-04-12 2021-08-03 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US11082746B2 (en) * 2006-04-12 2021-08-03 Winview, Inc. Synchronized gaming and programming
US11083965B2 (en) 2006-04-12 2021-08-10 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US11889157B2 (en) 2006-04-12 2024-01-30 Winview Ip Holdings, Llc Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US11825168B2 (en) 2006-04-12 2023-11-21 Winview Ip Holdings, Llc Eception in connection with games of skill played in connection with live television programming
US11235237B2 (en) 2006-04-12 2022-02-01 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US11722743B2 (en) * 2006-04-12 2023-08-08 Winview, Inc. Synchronized gaming and programming
US11185770B2 (en) 2006-04-12 2021-11-30 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US11736771B2 (en) 2006-04-12 2023-08-22 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US8280960B2 (en) 2006-07-26 2012-10-02 Konami Digital Entertainment Co., Ltd. Game system, game terminal therefor, and server device therefor
US20100029388A1 (en) * 2006-07-26 2010-02-04 Konami Digital Entertainment Co. Ltd Game system, game terminal therefor, and server device therefor
US20090318235A1 (en) * 2006-07-26 2009-12-24 Hiroyuki Ashida Game system, game terminal therefor, and server device therefor
US8219617B2 (en) * 2006-07-26 2012-07-10 Konami Digital Entertainment Co., Ltd. Game system, game terminal therefor, and server device therefor
US20080204248A1 (en) * 2007-02-23 2008-08-28 Nancy Cam Winget Rfid tag management and operation
US7817042B2 (en) * 2007-02-23 2010-10-19 Cisco Technology, Inc. RFID tag management and operation
US11601727B2 (en) 2008-11-10 2023-03-07 Winview, Inc. Interactive advertising system
US9253667B2 (en) * 2012-09-10 2016-02-02 Blackberry Limited Methods and apparatus for mobile device recovery following radio link failure
US9622285B2 (en) 2012-09-10 2017-04-11 Blackberry Limited Methods and apparatus for mobile device recovery following radio link failure
US20140071806A1 (en) * 2012-09-10 2014-03-13 Research In Motion Limited Methods and apparatus for mobile device recovery following radio link failure
KR20180036647A (en) * 2015-04-23 2018-04-09 소렌슨 미디어, 인크. Automatic Content Aware Fingerprint Sequence Matching
KR20200004445A (en) * 2015-04-23 2020-01-13 더 닐슨 컴퍼니 (유에스) 엘엘씨 Automatic content recognition fingerprint sequence matching
KR102063117B1 (en) * 2015-04-23 2020-01-08 더 닐슨 컴퍼니 (유에스) 엘엘씨 Automatic Content Aware Fingerprint Sequence Matching
US10750236B2 (en) 2015-04-23 2020-08-18 The Nielsen Company (Us), Llc Automatic content recognition with local matching
WO2016172304A1 (en) * 2015-04-23 2016-10-27 Sorenson Media, Inc. Automatic content recognition fingerprint sequence matching
US11683560B2 (en) 2015-04-23 2023-06-20 Roku, Inc. Automatic content recognition with local matching
US11240556B2 (en) 2015-04-23 2022-02-01 Roku, Inc. Automatic content recognition with local matching
KR102352584B1 (en) 2015-04-23 2022-01-17 로쿠, 인코퍼레이티드 Automatic content recognition fingerprint sequence matching
US9813781B2 (en) 2015-10-27 2017-11-07 Sorenson Media, Inc. Media content matching and indexing
US10187705B2 (en) 2015-10-27 2019-01-22 Sorenson Media, Inc. Media content matching and indexing
US10827234B2 (en) 2015-10-27 2020-11-03 The Nielsen Company (Us), Llc Media content matching and indexing
US11551529B2 (en) 2016-07-20 2023-01-10 Winview, Inc. Method of generating separate contests of skill or chance from two independent events
US11308765B2 (en) 2018-10-08 2022-04-19 Winview, Inc. Method and systems for reducing risk in setting odds for single fixed in-play propositions utilizing real time input

Also Published As

Publication number Publication date
US6820150B1 (en) 2004-11-16
US20050080947A1 (en) 2005-04-14
US7093044B2 (en) 2006-08-15

Similar Documents

Publication Publication Date Title
US7093044B2 (en) Method and apparatus for providing quality-of-service delivery facilities over a bus
US5461611A (en) Quality of service management for source routing multimedia packet networks
US6735633B1 (en) System for bandwidth allocation in a computer network
US6590865B1 (en) Transmission system, bandwidth management apparatus, and bandwidth management method
JP2528626B2 (en) DATA COMMUNICATION METHOD AND DEVICE
US6310886B1 (en) Method and apparatus implementing a multimedia digital network
JP4410408B2 (en) Service quality management method and apparatus for network equipment
US5991831A (en) High speed serial communications link for desktop computer peripherals
US10009189B2 (en) System and method for a managed network with quality-of-service management
US20080288638A1 (en) Method and system for managing network resources in audio/video bridging enabled networks
EP1124357B1 (en) Method and device for communicating between a first and a second network
US20060010253A1 (en) Exposing a bridged network as a single virtual segment
JPH06112963A (en) Data processing system and information transmission method
US6738816B1 (en) System and method for reliable real-time communications among a plurality of nodes having functions conforming to IEEE-1394 serial bus and participating in a session of sharing the maximum bandwidth
JP2002026944A (en) Method and system for common use of device and arbitration
JPH09231143A (en) Communication control method
Venkatramani The design, implementation and evaluation of RETHER: a real-time Ethernet protocol
KR100699019B1 (en) Method and device for bandwidth allocation
US20070153825A1 (en) Streaming service providing method adaptive to dynamic network changes
KR100815581B1 (en) Method for managing resources of a link in a communication network
US6728821B1 (en) Method and system for adjusting isochronous bandwidths on a bus
JP2000261435A (en) Minimum band guarantee connection method and device
Yau et al. Operating system support for distributed multimedia
Bisdikian et al. The use of priorities on token-ring networks for multimedia traffic
KR100415583B1 (en) Service Management System and Method for supporting Differentiated Service on the Internet

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001

Effective date: 20141014