US20070147360A1 - System and Method for Scheduling Digital Information Transmission and Retransmission on a Network During Time Slots - Google Patents
System and Method for Scheduling Digital Information Transmission and Retransmission on a Network During Time Slots Download PDFInfo
- Publication number
- US20070147360A1 US20070147360A1 US11/566,749 US56674906A US2007147360A1 US 20070147360 A1 US20070147360 A1 US 20070147360A1 US 56674906 A US56674906 A US 56674906A US 2007147360 A1 US2007147360 A1 US 2007147360A1
- Authority
- US
- United States
- Prior art keywords
- transmission
- digital information
- network
- time
- constraints
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
- H04L47/564—Attaching a deadline to packets, e.g. earliest due date first
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Abstract
The present invention is a computer system for delivering digital information over a network. A request receiving process receives a request for transmitting digital information after a start time and before an end time. The digital information has a number of packets. A transmit time process determines the time required to transmit the digital information based on the number of packets and a network speed. A scheduler schedules a transmit time for the digital information and an acceptance process accepts the digital information for transmission only if the time required to transmit is less than or equal to the difference between the transmit time and the end time.
Description
- This application is a continuation of patent application Ser. No. 09/649,953, filed Aug. 29, 2000.
- This invention relates to the field of network communications. More specifically, this invention relates to transmission and retransmission of digital information during specific times. BACKGROUND OF THE INVENTION
- With the increased popularity and usage of the Internet and World Wide Web, computers are used to distribute data files (which are often large in size) over digital networks. These data files include electronic mail addressed to individuals and/or groups of people, postings for electronic bulletin boards (e.g. the usenet), pages from World Wide Web servers, audio files (encoded with MP3), video files, digital images, digitized books and diagrams, and updates and errata of digitized books and other documentation. In general, network computing is well known. For example, see U.S. Pat. No. 5,371,852 to Attanasio et al. issued on Dec. 6, 1994. This Patent is herein incorporated by reference in its entirety.
- For example, an insurance company may transmit many different forms of digital data to their insurance agents. The company may produce training videos and audio tapes which are digitized into video and audio data files. It may also publish its rules and regulations in digital form as web pages or digital books. Updated actuarial tables and insurance prices may be transmitted periodically. And the insurance company may use e-mail to communicate with the agents as a whole or individually. The size of these data files can vary greatly and clearly, some data files are more important than others and need to be transmitted at a higher priority or otherwise in a controlled manner. Currently, much of the prior art does not use the priority and size of documents to determine how the documents are transmitted over a network.
- While many techniques and tools are used in scheduling real-time tasks for computer central processing units (CPUs), these techniques have not been applied to scheduling transmissions of data files over a network. In a real-time operating system, a computer has many jobs to run, each of which has a release time, deadline, worst-case running time, and optionally a period. The scheduler of the real-time operating system examines these job constraints and devises a schedule which allows the computers CPU(s) to operate the tasks to completion and meet the release and deadline constraints if the constraints taken as a whole are feasible. Some real-time operating system schedulers also have the ability to discard jobs on a priority basis in the event that a feasible schedule cannot be computed for the entire job set. Two well known scheduling algorithms for computing a real-time job schedule are the Earliest Deadline First (EDF) algorithm and the Rate Monotonic (RM) algorithm.
- However, CPU scheduling is different than bandwidth scheduling. Bandwidth availability can vary over time—number and speed of CPU processors are constant over time. Temporary bursty congestion on network may also slow or choke data transmission. Current TCP/IP file transmission packages (FTP, HTTP) do not support scheduled pacing and preemption of data flow. TCP/IP stack and network is available only on a “first come, first served” basis. FTP and HTTP do not have scheduling capabilities to start sending the file at a given time (they just start “now”).
- Further, it would be desirable in some instances, that transmissions over a digital network be sent with priorities and staggered at different data rates and bursts.
- Also, Quality of Service scheduling within routers and switches provides bandwidth constraints either at a packet by packet or cell by cell level. This scheduling is not applicable to multi-megabyte or gigabyte files. Queue length and other buffer resources within switches and routers are severely constrained. (In this disclosure, “packet” is used to describe any sub unit of information transmitted over a network, without the loss of generality.)
- In addition, limitations of computer networks include bandwidth constraints, limited availability of shared bandwidth, network congestion, the speed of intermediate network devices (such as routers, switches, bridges, and proxy servers), and data loss to network errors.
- The prior art has not adequately addressed delivering information over a network during specified time intervals.
- The prior art has not been able to apply scheduling or dispatching techniques to deal with: priority information; staggered information; quality of service; queue length and buffer constraints; bandwidth constraints; and information delivery during specific time intervals. Nor has the prior art developed adequate business methods for dealing with information transmission subject to these constraints over a network.
- An object of this invention is an improved system and method for scheduling, dispatching, and/or transmitting information over a network.
- An object of this invention is an improved system and method for scheduling, dispatching, and/or transmitting information during specific time periods over a network.
- An object of this invention is an improved system and method for scheduling, dispatching, and/or transmitting information over a network with a quality of service.
- An object of this invention is an improved system and method for scheduling, dispatching, and/or transmitting information over a network despite network constraints.
- An object of this invention is an improved system and method for scheduling, dispatching, and/or transmitting information with priorities over a network.
- The present invention is a computer system for delivering digital information over a network. A request receiving process receives a request for transmitting digital information after a start time and before an end time. The digital information has a number of packets. A transmit time process determines the time required to transmit the digital information based on the number of packets and a network speed. A scheduler schedules a transmit time for the digital information and an acceptance process accepts the digital information for transmission only if the time required to transmit is less than or equal to the difference between the transmit time and the end time.
- The foregoing and other objects, aspects and advantages will be better understood from the following detailed description of preferred embodiments of the invention with reference to the drawings that are include the following:
-
FIG. 1 is a block diagram of a system for requesting and transmitting data files using the present invention. -
FIG. 2 is a block diagram of a transmission decision list which contains transmission criteria which is used by a dispatcher process to determine when to transmit data files. -
FIG. 3 is a block diagram of a file list which identifies the data files and is used by a dispatcher process. -
FIG. 4 is a block diagram of the history log generated during the execution of a dispatcher process. -
FIG. 5 is a block diagram of the network use criteria table which is used by a dispatcher process. -
FIG. 6 is a flow chart of a dispatcher process. -
FIG. 6 a is a flow chart of an amount-to-write computation process. -
FIG. 7 is a block diagram of a transmission request data structure. -
FIG. 7 a is a block diagram of an example transmission request data structure. -
FIG. 8 is a block diagram of the architecture of the scheduler with an optional estimate transmissions process. -
FIG. 9 is a block diagram of one preferred storage filing system. -
FIG. 9 a is a block diagram showing sample records in a delivery criteria list. -
FIG. 10 is a flow chart of an estimate transmissions process which receives an accepted transmission request and its associated file and creates records in the delivery criteria list so that the file will be transmitted by the system. -
FIG. 11 is a flow chart of a scheduling process using a novel network use allocation process. -
FIG. 12 is a flow chart of a novel network use allocation process. -
FIG. 13 is a flow chart of a feedback process. -
FIG. 14 is a flow chart of an acceptance process. -
FIGS. 1 through 6 A, below, describe a dispatch process that is used with the present invention and is further described and claimed in U.S. patent application Ser. No. 09/649,954, now U.S. Pat. No. 6,959,327, entitled “System and Method for Dispatching and Scheduling Network Transmissions with Feedback” to Vogl, et al. which was filed on the same day as the parent application to the present application, and which is herein incorporated by reference in its entirety as if fully restated herein. -
FIG. 1 is a block diagram of asystem 100 containing one or more computer network dispatching process 600 (e.g. 600A, 600B). The system contains one or more servers (120, 130, and 140) which read information from one or moremass storage devices 110 and transmit the information overnetwork 159 and/or other transmission means such as a radio/frequency transmitter and/orsatellite 150 to one or more clients (160, 170, 180). Thenetwork 159 can be any generally known network such as the Internet, an intra net, the phone network, or a telecommunications network. -
Block 120 is a dispatch server which runs the computernetwork dispatcher process 600 600A, 600B). Thisprocess 600 is described in detail inFIG. 6 below. Thedispatch server 120, optionally, runs ascheduler process 128 and abilling process 129. Thedispatch server 120 has one ormore memories 126 which contain atransmission decision list 200, afile list 300, a filetransmission history log 400, and an optional network use criteria table 500. These lists (200, 300, 400, 500) are described in detail inFIGS. 2, 3 , 4, and 5, below, respectively.System time 125 is a clock which provides timing information to thedispatch server 120. -
Blocks dispatch server 120 to its network connections, 122A, 122B. Eachnetwork buffer available space 123 in the network buffers 124A, 124B will change over time as information is written into the network buffers 124A, 124B by thedispatching process 600 and other processes which may be sharing the network buffers 124A, 124B. Theavailable space measure 123 will also change as information within the network buffers 124A, 124B is transmitted to connectedcomputer networks satellite 150 time, may be available on a scheduled basis, and their network parameters (e.g. cost, pricing, speed, bandwidth) may vary depending on a time of day. -
Block 110 is a mass storage device. In a preferred embodiment, thismass storage device 110 is a disk drive. In alternative embodiments, thestorage device 110 could be one or more disk drives, magnetic tape drives, memories, or optical drives (e.g. CD-ROM, DVD). Themass storage device 110 contains afile system 112 containing zero ormore files 112A and adatabase 113 which contains zero or more delivery criteria lists 114. Thefile system 112 anddatabase 113 hold the information which the computernetwork dispatching process 600 writes onto thecomputer networks mass storage device 110 is connected 116 to thedispatch server 120. In a preferred embodiment, thisconnection 116 is made via a Small Computer System Interface (SCSI) connection. In alternative embodiments, theconnection 116 could be a network connection or any other connection used for transmitting data. Theconnection 116 serves as an input to thedispatch server 120 for accessing thefiles 112A anddatabases 113 of themass storage device 110.Connections 116 may also exist between themass storage device 110 and theoptional schedule server 130 andrequest server 140. -
Block 130 is an optional scheduling server. Thisserver 130 runs ascheduler process 134, anacceptance process 139, adelivery status process 137, and, optionally, abilling process 136 andanalysis process 138. The scheduler process 134 (and theoptional scheduler process 128 of the dispatch server 120) schedules one or more portions of thefiles 112A in themass storage 110file system 112 for transmission by thedispatch server 120 via itsnetwork buffers transmission decision list 200 and afile list 300 in thememory 126 of thedispatch server 120. Thefile list 300associates files 112A in thefile system 112 with thenetwork buffer 124A. Thetransmission decision list 200 provides transmission criteria 250 (e.g. pacing, timing, and portioning information) about the transmission of thefiles 112A. - The optional billing processes (129, 136) of the
dispatch server 120 and thescheduling server 130 monitor the progress of the dispatching process 600 (600A, 600B) and examine statistics stored in thedispatching process 600history log 400 and network use criteria table 500 in order to determine a cost of a file transmission. Optionally, ananalysis process 138 also examines these statistics (400, 500) to test for conformance of the dispatching processes 600 to the schedule defined by thescheduler process 134 and for overall system monitoring and activity charting. In a preferred embodiment, the outputs of thebilling process 136 andanalysis process 138 are stored in adatabase 113. - The
scheduling server 130 contains amemory 131 which contains zero or more transmission requests 700. The transmission requests 700 contain scheduling constraints and information regarding the transmission ofinformation files 112A. Transmission requests 700 are discussed inFIG. 7 , below. - The
acceptance process 139 is a process which determines if it is possible to schedule a transmission of afile 112A in accordance with the information in atransmission request 700, taking into consideration network use availability, as recorded in the network use criteria table 500, and other pending transmission requests 700. Theacceptance process 139 is described inFIG. 14 , below. - The
delivery status process 137 is a process which takes an action (such as notifying a system operator, or aclient system 100 determines that it cannot meet the scheduling constraints of an accepted transmission. Thedelivery status process 137 is described inFIG. 8 , below. -
Block 140 is a request server which contains arequest receiver process 144 and acontent generator process 146. Therequest receiver process 144 andcontent generator process 146 are interfaces by which arequest client 180 can request the insertion offiles 112A into thefile system 112, request the transmission offiles 112A, view the history logs 400 andnetwork use statistics 500 generated by thedispatch server 120, and view the outputs of thebilling process 136 andanalysis process 138. In a preferred embodiment, therequest receiver process 144 andcontent generator process 146 are web servers and receive/transmit information from/to arequest client 180 via the well known Hypertext Transfer Protocol (HTTP) protocol. In an alternate embodiment, therequest receiver process 144 interacts with arequest client 180 via the Simple Network Management Protocol (SNMP) protocol and thecontent generator process 146 interacts with arequest client 180 via the File Transfer Protocol (FTP) protocol. Therequest receiver process 144 andcontent generator process 146 may alternatively interact with arequest client 180 via a non-real time protocol such as e-mail or message queues.Block 142 of therequest server 140 is a network connection. Thenetwork connection 142 provides a connection to anetwork 159 which is also accessible in real time or non-real time to theclient 180 and, optionally,clients - The
request server 140 also contains a transmittime process 147 which determines the time requested to transmit afile 112A based on its size, the network speed, the time of day, the size of the network buffers (124A, 124B), and information in thetransmission request 700 associated with thefile 112A. Thisprocess 147 is described in the networkuse allocation process 1200,FIG. 12 below, specifically instep 1235. - Note that
servers delivery status process 137, request receiver processes 144, transmittime processes 147, and/or content generator processes 146 may also be combined or distributed. -
Blocks Block 159 is an internet/intranet network. Internet/intranet networks 159 are well known and consists of one or moreinterconnected switches 153,bridges 154,routers 155, andproxies 156. The intranet/internet network 159 passes digital messages and transmissions between servers (e.g. 120, 140) and connected clients (e.g. 170, 180). Each connected server (120, 140) and client (170, 180) has a network connection (122B, 142, 172, 182, respectively) to thenetwork 159.Line 157 represents the network links between the network connection (122B, 142, 172, 182) and the internet/intranet network 159. These network links 159 are typically telephone lines, cable networks, or wireless networks. -
Blocks network link 158 to asatellite transmitter 151 where it is modulated into radio-frequencies (RF) and broadcast into the sky to be reflected/rebroadcast by an orbitingsatellite 150. The reflected/rebroadcast RF encoded data is received atsatellite receivers 152, demodulated into digital data, and transmitted over anetwork link 158 to asatellite client 160.Blocks dispatch server 120 and satellite client 160) with the network links 158 of thebroadcast satellite network 150. As a non-limiting example of anetwork connection 162, see U.S. Pat. No. 6,021,419 to Clarke et al. issued on Feb. 1, 2000. This Patent is herein incorporated by reference in its entirety. -
Blocks dispatch server 120 and onto the respective connected computer networks (150, 159) by thedispatching process 600. Each client (160, 170)has a network buffer (164, 174) which buffers information received from the connected computer network (150, 159) and a receiving process (166, 175) which performs an action on the received information. - The
satellite client 160 is connected to thesatellite network 150 vianetwork connection 162. It receives information transmitted by thedispatch server 120 throughnetwork buffer 124A. Through well know protocols, after thedispatching process 600 writes information into thenetwork buffer 124A, that information will be digitally sent tosatellite transmitter 151 and modulated into RF. The RF encoded information will be reflected/rebroadcast bysatellite 150 and received bysatellite receiver 152 to arrive in digital form atnetwork connection 162. The information will then enter thenetwork buffer 164 of thesatellite client 160. The receivingprocess 166 will be alerted to the presence of the received information in thenetwork buffer 164 and will take an appropriate action. - Similarly, internet/
intranet client 170 is connected to internet/intranet 159 vianetwork connection 172. It receives information transmitted by thedispatch server 120 throughnetwork buffer 124B. Through well known protocols, after thedispatching process 600 writes information into thenetwork buffer 124B, that information will flow through the internet/intranet network 159 to arrive atnetwork connection 172. The information will then enter the network buffer 174 of the internet/intranet client 170. The receivingprocess 175 will be alerted to the presence of the received information in the network buffer 174 and will take an appropriate action. The actions of the internet/intranet client 170receiving process 175 and thesatellite client 160receiving process 166 could include: decoding the information into an audio wave form and playing it over aspeaker 176; decoding the information into a video presentation and displaying it on amonitor 177; displaying the information as a web page on amonitor 177; and/or storing the information on amass storage device 178. -
Block 180 is a requesting client which has anetwork connection 182 to internet/intranet network 159.Client 180 has arequest process 186 which communicates to therequest receiver process 144 throughnetwork buffer 184 and connectednetwork 159. Thisprocess 186 createstransmission requests 700 which are sent to therequest receiver process 144 to schedule transmissions of afile 112A. Theclient 180 may contain anoptional mass storage 188 which holdsfiles 112A which are accessed by thecontent generator process 146 for storage and transfer to thefile system 112 ofmass storage 110. -
FIG. 2 is a block diagram of thetransmission decision list 200 data structure. Thetransmission decision list 200 is a sequence of zero ormore transmission criteria 250 that instruct the dispatching process 600 (600A, 600B) about how, when, and at what burst rate, afile 112A should be transmitted over a network (150, 159). Thetransmission criteria 250 data structure contains the following fields: anindex 205, a release time 210, aportion quantity 215, a duration 220, aburst size 225, a burst rate 230, aquantity completion measure 235, and a status code 240. Theindex field 205 contains a reference into thefile list 300 described inFIG. 3 below. Each value in atransmission criteria 250index field 205 should refer to exactly onefile list record 350. In a preferred embodiment, theindex field 205 contains a numeric integer value. In alternate embodiments, theindex field 205 can contain a numeric identifier, an alphanumeric identifier such as a filename, or a memory address. Note thatmultiple transmission criteria 250 may haveindex fields 205 which refer to the samefile list record 350. - The
portion quantity 215 field defines the quantity of the portion of the indexed 205file 112A, that thedispatching process 600 should transmit. In a preferred embodiment, theportion quantity 215 field holds a byte count (e.g. 64000 bytes). In alternative embodiments, theportion quantity 215 field could hold a percentage (e.g. 10%). The release time 210 field indicates the minimum time at which the respective portion of the indexed 205file 112A should be written to the network buffer (124A, 124B) by thedispatching process 600. The duration 220 field establishes an end time beyond which no more of the portion is written to the network buffer (124A, 124B) by thedispatching process 600. In a preferred embodiment, both the release time 210 field and the duration 220 fields hold time stamp values. In an alternate embodiment, the duration 220 field could hold a number which indicated an offset (perhaps in seconds) against the release time 210. Hence, these threefields 210, 215, 220 of thetransmission criteria 250 data structure define the size of a portion and an interval during which thedispatching process 600 should transmit the respective portion. - Note that in a preferred embodiment, the
portion quantity 215 is included in thetransmission criteria 250 but a value indicating where portion begins in thefile 112A is not specified. As described below, thedispatching process 600 reads each portion from thefiles 112A starting with the value located in thecursor 315 field of thefile list 300. As information within the portion is transmitted, thecursor 315 field is increased accordingly. Thedispatching process 600 does this so that as portions of afile 112A are transmitted over a network buffer, e.g. 124A, the information transmitted will be contiguous within thefile 112A. That is, there will be no gaps from one portion to another if, due to excessive load on a network, e.g. 150, thedispatching process 600 is unable to write anentire portion quantity 215 amount of information into the network buffer during the time interval specified by the release time 210 and duration 220. - The
burst size 225 and burst rate 230 fields of thetransmission criteria 250 data structure are used to specify limits on the amount of a portion written into a network buffer (124A, 124B) at any specific time. Together, theburst size 225 and burst rate 230 fields provide pacing information to thedispatching process 600. Thedispatching process 600 will partition the respective portion of thefile 112A into quantities of a size no greater than theburst size 225 and each quantity will be written to its respective network buffer (124A, 124B) at a time interval not less than the burst rate 230. This pacing information can be used to lessen the chance of information loss through the network (150, 159) when, for example, the network buffer (124A, 1224B) of the dispatchingserver 120 is of a different size than the network buffer (164, 174) of a connected client (160, 170). Or when the receiving process (166, 175) and/or the network buffers (164, 174) of a client cannot receive anentire portion quantity 215 of information in one transmission. Theburst size 225 and burst rate 230 fields are optional. - The
index 205, release time 210,portion quantity 215, duration 220, burstsize 225, and burst rate 230 fields of thetransmission criteria 250 data structure provide input data to thedispatching process 600. - The
quantity completion measure 235 and status code 240 fields of thetransmission criteria 250 data structure are filled in, over time, with an output of thedispatching process 600. As thedispatching process 600 writes portions, or quantities of partitioned portions, into a network buffer (124A, 124B) for transmission, the dispatching process 600 aquantity completion measure 235 will be accumulated. In a preferred embodiment, thequantity completion measure 235 field holds a byte count of information within the partition transmitted. When the value in thequantity completion measure 235 field is equal to the value in theportion quantity 215 field, the portion has been completely written into the network buffer (124A, 124B). Thequantity completion measure 235 and status code 240 fields are optional. - The status code 240 field of the
transmission criteria 250 data structure can take on one of the following values: “Pending”, “Active”, “Complete”, and “Timed out”. This field 240 indicates state of the partition in thetransmission criteria 250 data structure. If the status code 240 field has a “Pending” or “Active” value, the partition specified by thetransmission criteria 250 is available to be written into thenetwork buffer dispatching process 600 has completed the writing of the partition into thenetwork buffer status code 250 value indicates that thedispatching process 600 was unable to write the entire portion quantity to thenetwork buffer -
FIG. 3 is a block diagram of thefile list 300 data structure. Thefile list 300 is a sequence of zero or morefile list records 350 that correlate one ormore transmission criteria 250 withindividual files 112A within thefile system 112 of themass storage 110. Thefile list record 350 data structure contains the following fields: anindex 305, asource file identifier 310, an (optional)cursor 315, a destination address 320, and a transmission type 325. Thefile list records 350identify files 112A in themass storage 110 that are to be transmitted over one or more of the computer networks (150, 159) connected to a respective network buffer (124A, 124B). Thefile list records 350 also serve to associate thefiles 112A with the portioning information defined in thetransmission criteria 250. - The
index 305 field holds a value which uniquely distinguishes afile list record 350 from otherfile list records 350 in afile list 300. In a preferred embodiment, theindex 305 field holds an integer value. In alternate embodiments, theindex 305 field can hold some other type of unique value such as a file name or other mass storage identifier and may also share the same value as thesource file identifier 310 field. Or, theindex 305 field may be the address in thememory 126 of the dispatchingserver 120 where thefile list record 350 is located. Theindex 305 field is used as a cross reference to theindex 205 field intransmission criteria 250 as described above. - The
source file identifier 310 field associates thefile list record 350 with afile 112A inmass storage 110. In a preferred embodiment, thesource file identifier 310 field contains a handle value through which thedispatching process 600 can read information from afile 112A inmass storage 110. In alternative embodiments, thesource file identifier 310 field could contain a file name (e.g. “C:\Data\Video.MPG”), a TCP/IP socket identifier, or a memory address of a computer process which delivered file information as its output. - Hence, through the
index 305 field and thesource file identifier 310 field, thefile list record 350 provides an association betweentransmission criteria 250 andfiles 112A. - The
optional cursor 315 field of thefile list record 350 is used when the information of afile 112A is available in a random access mode. The values of thecursor 315 field indicate where information should be read from, by thedispatching process 600, in the identified 310file 112A. As information is read and transmitted to network buffers (124A, 124B), by thedispatching process 600, the dispatching process 600 (600A, 600B) will update the value in thecursor 315 field. In a preferred embodiment, thecursor 315 field contains integer values with zero being a “beginning of file” value. In alternate embodiments, thecursor 315 field may contain memory addresses or other values appropriate to the type ofmass storage 110 in use. - When the
file 112A can only be read in a serial manner (i.e. is not read in a random access manner), thecursor 315 field is omitted from thefile list record 350 data structure. - The destination address 320 field of the
file list record 350 identifies one or more network buffers (124A, 124B) that thedispatching process 600 should write the associated portioned 250file 112A information into. The destination address 320 field may further identify one or more network connected client (160, 170) machines which will receive the portioned 250file 112A information. In a preferred embodiment, the destination address 320 field holds an internet multicast address. - The transmission type 325 field identifies the protocol to be used by the dispatching process to transmit the portioned 250
file 112A information. Transmission types can include the well known unicast, multicast, broadcast, internet protocol (IP), IPX, asynchronous transfer mode (ATM), UDP, and TCP/IP protocols. -
FIG. 4 is a block diagram of the history log 400 data structure. Thehistory log 400 is a sequence of zero or more history records 450 which provide an accumulated amount of one or more of theportions 250 offiles 112A transmitted over one or more of thecomputer networks dispatching process 600 in an interval. The history log record 450 data structure contains the following fields: anindex 405, astart time stamp 410, a status code 415, a completion time stamp 420, and a quantity completion measure 425. Thehistory log 400 is an output of thedispatching process 600. - The
index 405 field of thehistory record 405 holds a value equal to a value of anindex 305 field in a file list record. Thestart time stamp 410 and completion time stamp 420 fields define a time interval. And, the status code 415 field and quantity completion measure 425 fields are progress indicators which hold a success value and an accumulated amount of portions transmitted by thedispatching process 600 during the specified interval (410, 420). In a preferred embodiment, the status code 415 field can hold the same values as the status code 240 field in thetransmission criteria 250 data structure. Similarly, the quantity completion measure 425 field is of the same data type as thequantity completion measure 235 field of thetransmission criteria 250 data structure. In alternative embodiments, the progress indicators (415, 425) may hold multiple values, e.g. multiple status codes. - During its execution, the
dispatching process 600 progressively populates the history log 400 with history records 450. Study of the growinghistory log 400 of history records 450 can provideanalysis processes 138 and/or billing processes (129, 136) with statistics about the progress offile 112A portionmemory 126 of the dispatchingserver 120 and stored inmass storage 110 for off-line analysis. In a preferred embodiment, thedispatching process 600 populates the history log 400 with a history record 450 each time an amount of portioned 250 information is written into a network buffer (124A, 124B). In alternative embodiments, thedispatching process 600 may populate the history log 400 less frequently, perhaps on a timed basis (e.g. create cumulative history records 450 each minute or hour of activity). -
FIG. 5 is a block diagram of an optional network use criteria table 500. The network use criteria table 500 is a sequence of zero or more network use criteria records 550 which specify a maximum value of network resource that is to be used by the dispatching process 600 (600A, 600B) in a given interval of time. The network use criteria record 550 data structure contains the following: atime stamp 505 field, a definednetwork use 510 field, an aggregate amount ofnetwork use 515 field and an optional network identifier 520 field. The network use criteria record 550 data structure may also contain a network use window 525 field and a remaining bandwidth 530 field. - The defined
network use 510 field is used to constrain thedispatching process 600 to use a limited amount of network resource (e.g. bandwidth) starting at a time specified in thetime stamp 505. In a preferred embodiment the definednetwork use 510 field defines a maximum amount of the information stored in thefiles 112A which should be written to a network buffer (124A, 124B) after aspecific time 505. As information is written into the network buffers (124A, 124B) by thedispatching process 600, thedispatching process 600 wilt maintain a count of the network resources (e.g. bandwidth) used in the aggregate amount ofnetwork use 515 field. - The network use criteria table 500 is most useful when resources of a computer network (e.g. 150) resources, such as
satellite 150 time, are be available on a scheduled basis, and network parameters (cost, speed, bandwidth) vary depending on time of day. For example, a satellite uplink facility may leasesatellite network 150 bandwidth at 45 Mbps between 4:00 AM and 5:00 AM and 15 Mbps at all other times of the day. To accommodate these constraints in thesystem 100, a network use criteria table 500 containing twenty-four network use criteria records 550 could be constructed on a daily basis. The twenty-four network use criteria records 550 could containsuccessive time stamp 505 values ranging from 0:00 (midnight) to 23:00 (11:00 PM). The network use criteria record 550 which had atime stamp 505 value of 04:00 AM could have definednetwork use 510 value of 45 Mbps×60×60 (i.e. the amount of bandwidth available in that one hour). The other network use criteria records 550 could have a definednetwork use 510 value of 15 Mbps×60×60. - The aggregate amount of
network use 515 values written by thedispatching process 600 may be recorded as a supplement to thehistory log 400 and stored inmass storage 110 for analysis purposes. - The optional network use window 525 field is used to indicate the length of the interval of time the network use is defined 510 for. In a preferred embodiment, this field 525 does not exist in the network use criteria record 550 data structure, but a value for this field 525 is computed on demand. The network use window 525 is a virtual field. The virtual network use window field 525 value being the time interval between the
time stamp 505 of the network use criteria record 550 and thetime stamp 505 of the network use criteria record 550 with the nextgreater time stamp 505. In alternate embodiments, the network use window 525 field may exist in the network use criteria record 550, e.g. occupy memory. In other alternate embodiments, anend time stamp 505 may be used in place of an interval window 525. - The optional remaining bandwidth 530 field is used to indicate an amount of available bandwidth which is available during the time period specified by the network use criteria record 550. In a preferred embodiment, the remaining bandwidth field 530 is a virtual field and its value is computed on demand. The virtual remaining bandwidth field 530 has a value equal to the difference between the defined
network use 510 and the aggregate amount ofnetwork use 515 divided by the network use window 525. - The network use window 525 and remaining bandwidth 530 fields are used in the network
use allocation process 1200,FIG. 12 below, in order for the networkuse allocation process 1200 to tentatively reserve portions of network use. - The optional network identifier 520 field is used to identify which
computer network server 120 is connected to two or more computer networks, each with possibly differing constraints. - The dispatching process 600 (600A, 600B) uses the data structures described above (200, 300, 400, 500) to transmit portions of one or
more files 112A over the network (150, 159) on a scheduled basis. And, to provide feedback to processes (e.g. Scheduler process billing process 136, analysis process 138) indicating the progress of eachfile 112A portion transmission over time. -
FIG. 6 is a flowchart of a dispatching process 600 (600A, 600B) called the Dispatch State Machine with Feedback for Scheduled Transmissions. Thisprocess 600 transmitsfiles 112A over a computer network (150, 159) based upontransmission criteria 250 contained in atransmission decision list 200. The process begins 605 by selecting thetransmission criteria 250 entry on thetransmission decision list 200 with the earliest release time 210 and a status code 240 which is either “Pending” or “Active”. Thedispatching process 600 then examines 610 the (optional) duration field 220 of the selectedtransmission criteria 250. The value in the duration field 220 is compared against the current time of thesystem clock 125. If the duration 220 has passed, step 615 stores a “Timed Out” value in the status code 240 field oftransmission criteria 250 and execution of theprocess 600 continues to step 675 where anext iteration 605 of the dispatching process 600 (600A, 600B) is begun. - If the duration 220 has not passed, the
dispatching process 600 continues to step 620 where theprocess 600 pauses in an idle state until the release time 210 of thetransmission criteria 250 has passed. In a preferred embodiment of theprocess 600, thispause 620 may be interrupted when anew entry 200 is inserted into thetransmission decision list 200 which has a release time 210 earlier than the currently selectedtransmission criteria 250 or when an existing entry of thetransmission decision list 200 is modified so that its release time 210 is earlier than that of the currently selectedtransmission criteria 250. When theprocess 600 is interrupted in this manner, execution returns to step 605. Thisidle step 620 allows thedispatching process 600 to (a) support schedules which are non-work conserving, (b) ensure that transmissions will not be initiated prematurely before their specified release times 210, and (c) allow the throttling of transmissions to an arbitrarily specifiedburst rate 225 and burst size 230. - For example, a
transmission decision list 200 may contain atransmission criteria entry 250 with a release time 210 of 05:00 hours. If, during the execution ofprocess 600, thisentry 250 is selected at 04:45 hours, theprocess 600 will idle atstep 620 for fifteen minutes. During this idle period theprocess 600 will write no data to the network even though there are entries in thetransmission decision list 200 and thus will be non-work conserving (a). Execution of theprocess 600 will not resume until 05:00 hours and therefore the portion defined by thetransmission criteria 250 with a release time of 05:00 hours will not be transmitted prematurely (b). - Similarly, suppose that a
transmission criteria 250 contains aburst size field 225 of 10 Kbytes and a burst rate field 230 of 00:01 hours (one minute). After a first amount of data is written byprocess 600, thetransmission criteria 250 will be rescheduled,step 670, with a release time 210 one minute greater than the first release time. This will causestep 620 to idle until one minute has elapsed and limit the burst rate of the transmission (c). - When the release time 210 of the selected
transmission criteria 250 has arrived (or has past), thedispatching process 600 checks for availability of bandwidth,step 625. A network use criteria record 550 is chosen from the network use criteria table 500, and the definednetwork usage 510 is compared against the aggregate amount ofnetwork usage 515 to determine a network resource availability. In a preferred embodiment, the definednetwork usage 510 field and the aggregate amount ofnetwork usage 515 fields hold integer amounts of bandwidth. Equal values of the two fields (510, 515) indicate that there is no available bandwidth, and upon finding equal values, the process moves into a secondidle state 630. Theprocess 600 will idle 630 until the time specified in thetime stamp 505 field of the next entry of the network use criteria table 500. After the idle time ofstep 630 has elapsed, execution resumes to step 685 and then step 605 where a second iteration of thedispatching process 600 is begun. - The network use criteria record 550 is chosen from the network use criteria table 500 by selecting the record in the network use criteria table 500 which has the greatest
time stamp field 505 that is less than or equal to the time of thesystem clock 125. By using thesystem clock 125 as an index into the network use criteria table 500, thedispatching process 600 can operate on and take advantage of computer networks, e.g. 150, where the network resources available varies over time. - Refer now to
FIG. 6A which is a flow chart of an amount-to-write computation process 635A. - The
dispatching process 600 continues 635 by computing an amount ofdata 635 to write. - This
amount 635 will be used by theprocess 600 during the reservation and write steps (640, 645 respectively) described below when theprocess 600 writes information into anetwork buffer amount 635 is the minimum (e.g. byte length) 636 of the following values: (a) the quantity of network resources currently available 510 less the aggregate amount ofnetwork use 515 in the network use criteria table 500; (b) theportion quantity 215 value stored in the currently selected transmissiondecision list entry 200; (c) theburst size 225 value also from the currently selected transmissiondecision list entry 200. Each of these fields (515, 215, 225) can have optional “not-specified” values which indicate that no number is given in the respective field. Fields which contain the not-specified value are ignored for purposes of calculating the amount ofdata 635 to write. In alternate embodiments, these fields (515, 215, 225) are optional and may be ignored during thecalculation 635. An embodiment may also include (d) theavailable space 123 in a network buffer (124A, 124B) as a further factor in the minimum calculation. - The
portion quantity 215 value of thetransmission criteria 250 is chosen as a candidate for the amount of data to write 635 because it indicates the maximum total amount of data which should be transmitted for the transmissiondecision list entry 200. This value may be smaller than theburst size 225 and the network resources available 510, 515. If theprocess 600 were to write more than quantity to write 215 bytes, the process could read past a buffer, encounter an end-of-file error, or write more data than thetransmission criteria 250 called for. - The
burst size 225 value of thetransmission criteria 250 is chosen as a candidate for the amount of data to write 635 because it indicates the amount of data which should be transmitted for thetransmission criteria 250 during a burst rate 230 interval. Theprocess 600 will not write more thanburst size 225 bytes for any transmission during a burst rate 230 interval. Theprocess 600 paces itself in this manner so as not to overwhelm thenetworks e.g. proxies 156,routers 155, switches 153, bridges 154), and receiving buffers (164, 174) and receiving processes (166, 175) in client computers (160, 170) will be able to handle the network load. - Now refer back to
FIG. 6 . - After computing the amount to write 635 value, the
dispatching process 600 then 640 reserves bandwidth from the network use criteria table 500. In a preferred embodiment this reservation is done by increasing the aggregate amount ofnetwork use 515 field of the network use criteria record 550 selected instep 625 by the amount to writevalue 635. In alternate embodiments the reservation may be performed using a second table or other data structure. This reservation prevents two or more instances of thisprocess 600 which may be running concurrently from writing more data to a network (150, 159) than it can handle. - The
dispatching process 600 then proceeds 645 to write data into a network buffer (124A, 124B). Theprocess 600 does this by locating thefile list record 350 in the file list table which has afile list index 305 that is equal to theindex 205 in the selectedtransmission criteria 250. Data is then read from thefile 112A referenced by thesource file identifier 310 starting at the location specified by thecursor 315. The read data is written to the network buffer (124A, 124B) identified by the destination address 320, optionally, accompanied with the destination reference 320. The amount to write value computed instep 635 is used to place a limit on how much data is written at thisstep 645. In a preferred embodiment, the data is written in a non-blocking manner so that execution of thedispatching process 600 will not be delayed by a block waiting for anetwork buffer dispatching process 600 also maintains a timer and monitors the elapsed time of thewrite operation 645. If the time of thesystem clock 125 passes the duration 220 specified in thetransmission criteria 250 or the elapsed time exceeds the burst rate 230, the process cleanly preempts (rather than aborting) itswrite operation 650. In alternate embodiments, theprocess 600 may also conditionally interrupt thewrite operation 650 when thetransmission criteria 250 is modified by a second process (i.e. a scheduler). - When its
write operation 645 completes (normally or preemptively), thedispatching process 600updates fields 655 within thetransmission criteria 250, thefile list record 300, and the network use criteria record 550 to reflect the transmission (writing of data step 645). Within the selectedtransmission criteria 250, theportion quantity field 215 is decremented by the amount of data written (which may be less than the value computed instep 625 if the write operation was interrupted), and the quantity writtenfield 235 is incremented by the same amount. Thecursor 315 field in the selectedfile list record 350 is incremented by the amount of data written. And within the selected network use criteria record 550, the aggregate amount ofnetwork use 515 is decremented by the difference between the amount of resources used and the amount of network resources estimated by the amount of data to write 625 (in order to give back any unused resources previously reserved in step 640). - The
dispatching process 600 then 660 edits the history log 400 to record thetransmission 645 event. Step 650 appends a new history record 450 is appended to thehistory log 400. Theindex field 205 value of the selectedtransmission criteria 250 is copied into the history record 450index 405, the time reading from thesystem clock 125 instep 625 is copied into the starttime stamp field 410, the time reading from thecurrent system clock 125 is copied into the completion time stamp field 420, and the amount of data written instep 635 is recorded into the quantity completion field 425. Further, a status code (e.g. “Success”, “Preempted due to duration”, “Preempted due to transmission criteria modification”, “Preempted due to network error”, “Preempted due to disk error”, “File not found”, . . . ) is written into the status code field 415. - These two steps (655, 660) allow other processes (e.g.
Schedulers billing feedback processes 1300, described inFIG. 13 below) to monitor the progress of file transmissions. By updating thehistory log 400, thedispatching process 600 can provide feedback to a scheduler (128, 134) so that it can dynamically reschedule transmissions due to delays in the network or due to unexpected increases in network bandwidth. Analysis processes 138 may also use this information to check the network and state machine for conformance to and variances from a defined schedule. These other processes may also monitor changes made by thedispatching process 600 to thetransmission criteria 250 and file list records 350. - The
dispatching process 600 then, step 665, examines theportion quantity 215 field of thetransmission criteria 250. If theportion quantity 215 field has a value of zero,step 680 marks the status code field 240 of thetransmission criteria 250 as “Complete” and thedispatching process 600 will no longer select thetransmission criteria 250 duringstep 605. Execution of theprocess 600 continues to step 685 and to step 605 where a next iteration of the process begins. - If the
portion quantity 215 field of thetransmission criteria 250 contains a non-zero value, step 610 marks the status code 240 field “Active” andtransmission criteria 250 remains a candidate for selection instep 605. If an optional burst rate 230 was specified in the transmissiondecision list entry 200, the release time 210 field is incremented by the burst rate 230 instep 675. This will cause thedispatching process 600 to not transmit any more data for thistransmission criteria 250 until the duration of time specified in the burst rate 230 has passed 620. Execution of theprocess 600 continues to step 685 which is simply a jump to the start of theprocess 600,step 605, where a next iteration of theprocess 600 will commence. - The present invention is now described in more detail in
FIGS. 7 through 14 . -
FIG. 7 is a block diagram of atransmission request 700. Transmission requests 700 are received from aclient 180 by therequest receiver process 144, described inFIG. 1 above. In a preferred embodiment, a message containing atransmission request 700 is sent from theclient 180 to therequest receiver process 144 via HTTP (the Hypertext Transport Protocol). Thetransmission request 700 data structure contains information which instructs theschedule architecture 800 to retrieve, transmit over a network (150, 159), and optionally confirm transmission of adata file 112A. Thetransmission request 700 contains fields that specify retrieval, packaging, billing, transmission, and/or acknowledgment requirements of the transmission. For example, these fields may specify: (a) how the data file 112A should be retrieved from aclient 180 machine; (b) how thesystem 100 can bill theclient 180 for work performed; (c) when the transmission should take place, and which destination clients (160, 170) should receive the transmission; and/or (d) what acknowledgments theclient 180 wants regarding the success and/or failure of the transmission. - The fields (a) which specify how the data file 112A should be retrieved from a
client 180 machine may include: asource address 710, aretrieval options field 712, aretrieval start time 714, aretrieval interval field 716, a maximumretrieval count field 718, apackaging options field 720, and/or an expecteddata file size 722 field. - The fields (b) which specify how the
system 100 can bill theclient 180 for the work performed may include: a billingaccount field 730, an optionalbilling user field 732, and/or an optionalbilling cost field 734. - The fields (c) which specify when the transmission should take place, and who should receive the transmission may include: a
transmission priority field 740, a transmissionrelease time field 742, atransmission deadline field 744, aretransmission interval field 746, aretransmission count field 748, a list ofrecipients 750, and/or abandwidth constraints field 752. - The field (d) which specifies what acknowledgments the
client 180 wants regarding the success and/or failure of the transmission is theacknowledgments field 760. - In a preferred embodiment of the
system 100, thedata file 112A which is to be transmitted over the network (150, 159) is not included in thetransmission request 700. Instead, thetransmission request 700 contains information which instructs thecontent generator process 146, described inFIG. 1 , how and when to retrieve thedata file 112A. Thesource address field 710 contains an address, e.g. a Uniform Resource Locator (URL), which indicates where the data file 112A can be retrieved from. An optional retrieval options field 712 contains additional information such as a userid and password which is used in conjunction with thesource address 710 to retrieve the data file 112A over the network. A preferred embodiment of thesystem 100 includes scheduling information (714, 716, 718) which indicates when thedata file 112A should be retrieved. The retrieval starttime field 714 indicates a time when a retrieval of the data file 112A should be attempted. Theretrieval interval field 716 indicates an interval, typically in seconds, after which a next retrieval should be attempted should a retrieval fail. Themaximum retrieval count 718 field indicates the maximum number of retrieval attempts which should be made by thecontent generator process 146. An expecteddata file size 722 field is also included in thetransmission request 700 and contains a well known quantization of the size of thefile 112A to be transmitted. Typically, thefield 722 contains a count of bytes. - There are many different ways to bring a
data file 112A from aclient 180 to themass storage 110. Alternative embodiments of thesystem 100 may not include retrieval scheduling information (fields transmission request 700 and may perform one and only one retrieval attempt at the time thetransmission request 700 is received. Other embodiments perform a fixed number of attempts. Further, the data file 112A may not be available over a connected network (150, 159) from theclient 180 and need to be physically brought into thesystem 100. The data file 112A may arrive at a location accessible to thecontent generator process 146 on a CD-ROM, DVD disc, or VHS cassette tape. In these cases, alternative fields which include case-specific scheduling information (e.g. media type and a shippers tracking number) may be included in thetransmission request 700. - After a
data file 112A is stored inmass storage 110, optional packaging transformations may be performed on thedata file 112A prior to its transmission. These transformations could include encryption, compression, or generation of forward error correction codes. The (optional)packaging options field 720 is used to indicate which, if any, transformations should be applied to thedata file 112A. - In alternative embodiments, an additional field, the
information content field 765, is included in thetransmission request 700, in place of the fields pertaining to the retrieval of thedata file 112A (710, 712, 714, 716, 718). In this embodiment, the expecteddata file size 722 field may be omitted and the size of the data stored in theinformation content field 765 used in its place. - The
client 180 indicates how the transmission should be charged through thebilling account 730 andbilling user 732 fields of thetransmission request 700. Thebilling account 730 field holds an account number/identifier such as a MasterCard or VISA credit card number or a previously negotiated identifier. The (optional)billing user 732 field contains a name or other identifier of the person placing thetransmission request 700. - The (optional)
billing cost 734 field specifies a maximum cost that can be charged to thebilling account 730 for the requested transmission. In a preferred embodiment, thebilling cost 734 field is omitted and the cost of a transmission depends on other fields in the transmission request (expecteddata file size 722,retransmission count 748,transmission release date 750,transmission deadline 744, and selected acknowledgments 1356). In alternative embodiments, thebilling cost 734 field is used and can hold a dollar amount. - Several of the fields in the
transmission request 700 hold details about when the transmission should take place, and who should receive the transmission. Anoptional transmission priority 740 field holds a keyword indicating a selected priority of the transmission. These keywords can include values such as “two day delivery”, “acknowledged overnight delivery”, and “freight”. These values are used within theschedule architecture 800, particularly in theacceptance process 139, and the schedule process (128, 134) to indicate a desired quality and speed of service. A “two day delivery” keyword would indicate that afile 112A should be transmitted within 48 hours of receipt of thetransmission request 700. A “acknowledged overnight delivery” keyword would indicate that afile 112A be transmitted before the next morning and that acknowledgments be returned by each recipient of thefile 112A. A “freight” keyword would indicate that thefile 112A be transmitted within a week of receipt of thetransmission request 700. - In a preferred embodiment, the
transmission priority 740 field is omitted from thetransmission request 700. Instead of specifying apriority 740, thetransmission request 700 contains additional fields. The optionaltransmission release time 742 is the time after which the customer wants the file transmitted. Thetransmission deadline 744 is the time before which thefile 112A must to be transmitted. Note that these times can also be specified by arelease time 744 and a transmission send window time, or atransmission deadline 744 and a transmission send window time. - The
optional recipients 750 field designates the locations/people that are to be sent thefile 112A.Recipient information 750 is typically used whenretransmissions 748 and/oracknowledgments 760 are used. In a broadcast situation, therecipients 750 need not be specified because everyone on the network will be sent the file. - The
optional acknowledgments field 760 is used to indicate when an acknowledgment is required from one or more of the recipients. One type ofacknowledgment 760 indicates that a recipient received thefile 112A, or parts of thefile 112A. Another type of acknowledgment, a negative acknowledgment, indicates that the recipient did not receive thefile 112A or did not receive parts of the file. For example, if a recipient expected afile 112A at 10:00 PM and did not receive it, it would send a negative acknowledgment. If a recipient received a portion of afile 112A and another portion of thefile 112A was not received (e.g. due to being timed out 615, or due tonetwork retransmission 748 to take place. - The optional
bandwidth constraints field 752 defines the bandwidth requirements for aparticular file 112A transmission. The bandwidth requirements can depend on the capabilities of the recipients, the quality of service that a subscriber paid for, and/or the physical requirements of thefile 112A (e.g. constant bitrate video requires a minimum bandwidth for real-time playback). - The optional retransmission fields (746, 748) indicate that the
client 180 requests retransmission of thefile 112A if no acknowledgment or negative acknowledgment is received by any of the recipients. Retransmissions (746, 748) must conform todeadline 744 and bandwidth (625, 752) availability requirements. The optionalretransmission interval field 746 indicates an interval, typically in seconds, after which a next transmission (i.e. a retransmission) should be attempted. Theretransmission count 748 field indicates the maximum number of retransmissions which should be performed. - The collection of
fields transmission constraint 770. -
FIG. 7A shows anexample transmission request 700A. In this non limiting example, a subscriber such as a product or service provider, e.g. an insurance company providing digitized training videos, located at thesource address 710, to its representatives (recipients 750), requests that thevideos 710 be sent out over a weekend in order to be used in a course in the following week (transmission deadline 744). The company (billing account 730) requests a quality of service which provides ten megabits of bandwidth (bandwidth constraint 752), collection ofacknowledgments 760 from the representatives, and a maximum of two retransmissions (retransmission count 748). The video is 3.6 Gigabytes long (expected data file size 722), approximately two hours of MPEG-2 compressed audio and video, and there are two groups of recipients: group B, the insurance agents, and group D, state regulators (see values in recipients field 750). - If this
transmission request 700A is accepted into thesystem 100, thevideo file 112A will be retrieved from the source, e.g. FTP site, given in thesource address 710. A maximum of three retrieval attempts (maximum retrieval count field 718) will be made. The first retrieval attempt will begin at or after 21:00 on Thursday (retrieval start time 714). Should the first retrieval attempt fail, a second retrieval will be attempted at or after 03:00 Friday, and possibly a third retrieval attempt at or after 09:00 Friday, per the sixhour retrieval interval 716. Thesource address 710 is public and no userid and password is specified in theretrieval options field 712, which is empty. Once it is retrieved, thefile 710 will be stored locally, inmass storage 110, as adata file 112A. The transmission request 700 a indicates that no additional transformations (encryption, compression) should be performed after thedata file 112A retrieved (see packaging options field 720). - In this
transmission request 700A, thetransmission priority field 740 is empty and therefore the other transmission related fields (742, 744, 746, 748) specify details about the scheduling of thefile 112A network transmission and retransmissions. Thetransmission release time 742 indicates that the retrievedfile 112A should be transmitted no earlier than 21:00 on Friday night and that all transmissions and retransmissions should conclude on or before 23:00 Friday (transmission deadline 744). The transmissions should be broadcast at approximately 10 megabits per second (bandwidth constraints 752). And tworetransmissions 748 are requested after intervals of thirty minutes (retransmission interval 746). A transmission of a 3.6 GB file at 10 Mbps will take eight minutes to complete. In an alternative embodiment, thetransmission priority field 740 can be specified as described above and their will be no need to fill infields - Charges for the retrieval, transmission, retransmissions, and acknowledgments the
system 100 performs for thisrequest 700A will be billed to the Insurance Company (billing account 730). Thetransmission request 700A does not specify abilling user 732, and does not place any restrictions on the amount to be billed 734.Billing user field 732 could specify a specific individual at the insurance company that made the transmission request and/or be used to identify sub-accounts within the company, e.g. the education department. Billingcost field 734 is filled by the user to indicate the maximum amount the user is willing to pay for thistransmission request 700. If the maximum amount exceeds the cost of thetransmission request 700 and the transmission is successful, no action is taken. However, if no retransmission count is specified, retransmissions will continue if no acknowledgment is received until the amount specified in thebilling cost 734 is exhausted. -
FIG. 8 is a block diagram of thearchitecture 800 of the scheduler (128, 134) with an optionalestimate transmissions process 1000 and other related functions. Thearchitecture 800 is a system and method for scheduling digital information transmission and retransmission on a network during time slots. - Transmission requests 700 arc received from a
client 180 by therequest receiver process 144, described inFIG. 1 above. Thetransmission request 700 containstransmission constraints 770 such as transmission timing information as explained in the description ofFIG. 7 (and in example inFIG. 7A ) and, in a preferred embodiment, pricing information. In some embodiments, therequest receiver process 144 would notify theclient 180 whether or not thetransmission request 700 was accepted by thesystem 100. For example, a notice would be sent to theclient 180 if thebilling cost amount 734 was too low for the service requested or if the network could not accommodate the transmission constraints (740, 742, 744, 746, 748, 752, 722), typically 770. - The received
transmission request 700 is passed to anacceptance process 139, described inFIG. 14 below. Theacceptance process 139 determines if it is possible to schedule a transmission of the information in thetransmission request 700 in accordance to the receivedtransmission constraints 770. In an alternative embodiment, theacceptance process 139 is not used and adelivery status function 137 provides the acceptance function. - If the
transmission request 700 for transmission is rejected bytile acceptance process 139, therequest receiver process 144 is notified (and optionally notifies the client 180) and anext request 700 is received. In a more preferred embodiment, therequest receiver process 144 includesalternate transmission constraints 770 categorized by priority so that theacceptance process 139 can reject thetransmission request 700 with one or more of theconstraints 770 but accept thetransmission request 700 with one of theother constraints 770. In an alternative preferred embodiment, theacceptance process 139 would reject thetransmission request 700 but would return through therequest receiver process 144 to theclient 180 alternate criteria (e.g. transmission time availability and pricing) which is used in a negotiating process between thesystem 100 and theclient 180 to come to anacceptable transmission constraints 770 for thetransmission request 700. In another embodiment, theclient 180 submitsmultiple transmission requests 700 withdifferent transmission constraints 770, probably starting with the mostconstrained transmission request 700 first. Theclient 180 continues submittingtransmission requests 700 until thesystem 100 accepts one. - If a
transmission request 700 is accepted, it is passed to acontent generator process 146 as described inFIG. 1 above. Thecontent generator 146 has two functions: aschedule retrieval function 841; and aretrieval function 843. Theschedule retrieval function 841 determines if thefile 112A to be transmitted to satisfy thetransmission request 700 is available, e.g. in thesystem mass storage 110. If thefile 112A is available, the file is associated with the acceptedtransmission request 700 that contains thetransmission constraints 770 for thefile 112A. If thefile 112A is unavailable, theschedule retrieval function 841 requests theretrieval function 843 to take an action to access the associatedfile 112A. Such actions might include: notifying an operator to load a disk, tape, or CD; sending a request over the network, e.g. to theclient 180 to transmit thefile 112A. The access of thefile 112A that is not available in thesystem memory 110 may occur hours or days after therequest receiver process 144 receives thetransmission request 700. Preferably, thefile 112A will be brought into the mass storage/system memory 110 before the time specified in thetransmission release time 742. If thefile 112A is accessed late, corrective action will be taken by thefeedback process 1300 as described inFIG. 13 below. Note that thefiles 112A may be stored in themass storage 110 and at different times be sent by different transmission requests 700. - In a preferred embodiment, the
retrieval function 843 access thefiles 112A and ensures that they are in thememory 110. Upon receiving afile 112A intomemory 110, the retrieval function 843 (a) associates thefile 112A with thetransmission request 700 and (b) stores theactual file 112A size in the expected datafile size field 722. The association (a) is done because the location of thefile 112A in the mass storage/system memory 110 may not be known until the file is received intomemory 110. The expected datafile size field 722 is updated (b) upon receipt of the file 12A because the exact size of thefile 112A may also not be known until thefile 112A is received and may be relevant to the pricing of the transmission. - The
schedule retrieval 841 andretrieval 843 functions may be separate processes or performed as part of other processes in the system 800 (e.g. the request receiver process 144). - The schedule process (128, 134) contains an
estimate transmissions process 1000 which receives an acceptedtransmission request 700 and its associatedfile 112A. Thisprocess 1000, modified byfeedback process 1300 and an optionalacknowledgment receiver process 135, repeatedly creates and/or modifies delivery criteria records 914 in thedelivery criteria list 114 to schedule the transmission of thefile 112A to meet thetransmission constraints 770. Theestimate transmission process 1000 is described in more detail inFIG. 10 , below. Theacknowledgment receiver process 135 is described in more detail inFIG. 13 , below. The delivery criteria records 914 of thedelivery criteria list 114 are described in more detail inFIG. 9 , below. - In a preferred embodiment, entries in the
transmission decision list 200 andfile list 300 described above in the description ofFIGS. 2 and 3 , are created by theschedule dispatch process 1100 and networkuse allocation process 1200, seeFIG. 11 and 12 below, based on information in the scheduleddelivery criteria list 114. These lists (200, 300) are used by the dispatching process 600 (600A, 600B) to transmit thefiles 112A and to generate thehistory log 400 and the network use criteria table 500 as described inFIGS. 4, 5 , and 6 above. Thehistory log 400 and network use criteria table 500 are used in thefeedback process 1300. - Hence, this
architecture 800 is used in and further defines thesystem 100 where digital information (e.g.Files 112A) are accepted for transmission (request receiver process 144, acceptance process 139), scheduled (estimate transmissions process 1000,schedule dispatch process 1100, network use allocation process 1200), and transmitted (dispatch process 600). - Note that the associated
file 112A may or may not be present in thememory 110 at thetime process 1000 adds and/or modifies delivery criteria records 914 in thedelivery criteria list 114. Therefore, thesystem 800 allows reserving a transmission time with certain delivery criteria records 914 without having theactual file 112A to be transmitted. In this way, thefile 112A, meeting thetransmission constraints 770, can be under development up until the time thetransmission request 700 requires transmission. This feature is useful in transmitting dynamic data, e.g. news or weather data, which is unavailable until just before the transmission time in thetransmission constraints 770. The feature is also useful in reserving a transmission time for data which is being developed in parts and transferred at various times and unified at a distant location. In this case, a daily time is reserved for transmission of files for information to be used, assembled, and examined in a collective work at another location. - For example, an on-line university may transmit a digitized lecture which is a portion of a digitized course one or two times a week at a certain time to its students. The availability of each lecture, as measured in terms of the time before transmission may vary. And the size of each lecture, as measured in terms of the file length of the compressed and/or digitized data file may vary. Some lectures may contain large image files, MPEG video, and lecture notes, while other lectures may just contain voice.
- In one preferred embodiment, delivery criteria records 914 for
files 112A that are unable to be scheduled in conformance with their associatedtransmission constraints 770 are dropped. This could occur due to dynamic changes in thesystem 100, e.g. delays, unforeseen increases infile sizes 722 which are delivered prior to the delivery criteria record 914, or time-outsituations 615, or atransmission request 700 with a higher priority taking precedence of thesystem 100 resources. In a preferred embodiment, when delivery criteria records 914 are dropped, theschedule dispatch process 1100 sends a signal to adelivery status module 137. - The
delivery status module 137 first receives thedropped signal 882. For delivery criteria records 914 that are dropped, thedelivery status module 137estimates 884 the impact of dropping the delivery criteria record 914. This is done by determining to what extent other delivery criteria records 914 associated with thesame file 112A have been satisfied. For example, if thefile 112A of a dropped delivery criteria record 914 is scheduled for periodic retransmission and it is expected that these future retransmissions would satisfy thetransmission constraints 770 for all or some of therecipients 750, no action may be required at this time, but may be required later. However, if this time is the only time thefile 112A is transmitted and the file has a high priority, a dropped delivery criteria record 914 might have to be rescheduled at a later time, and this rescheduling may affect the current dispatch schedule. - Step 886 determines if the impact of dropping a delivery criteria record 914 exceeds a threshold. If the impact exceeds a threshold,
corrective action 888 is taken. - For example, in one preferred embodiment dropping any delivery criteria record 914 exceeds the
threshold 886 and the action taken 888 would be to alert an operator. In an alternative embodiment, the number of delivery criteria records 914 dropped is counted and if the count exceeds a count threshold, a program such as Tivoli is alerted to increase the network bandwidth allotted to thesystem 100, when delivery criteria records 914 are being dropped due to network bandwidth problems. (Tivoli is a registered trademark of the IBM Corporation). In a further alternative embodiment, thesystem 800 determines why a delivery criteria record 914 was dropped and thecorrective action 888 taken is to reschedule transmission with a new delivery criteria record 914 that permits thefile 112A to be transmitted. - In another alternate embodiment, the
corrective action 888 taken is for the scheduler (128, 134) to reschedule a transmit time after the digital information (portion offile 112A) is rejected (dropped). The scheduler (128, 134) may also contain a rejection queue and reclamation policy. In this alternate embodiment, as transmissions forfiles 112A are dropped, they are placed on the rejection queue. A rejection policy within theestimate transmissions process 1000,FIG. 10 below, and/or within theSchedule Dispatch process 1100,FIG. 11 below, pulls entries from the rejection queue when as network bandwidth becomes available or whenacknowledgments 135 are received andtransmission constraints 770 are satisfied sooner than expected. - In another alternate embodiment, the
corrective action 888 taken is to alert theacceptance process 139 of a network bandwidth shortage. Upon receiving the alert, theacceptance process 139 would refuse (or limit) the acceptance oftransmission requests 700 withtransmission constraints 770 that required transmission during a time window around the network bandwidth shortage time period. For example, in this alternate embodiment, theacceptance process 139 would refusetransmission requests 700 during days (peak hours, off-peak hours, . . . ) where one or more preexisting delivery criteria records 914 were dropped. Or, theacceptance process 139 could refusetransmission request 700 higher than a given priority during time periods of known network congestion. - An alternative
corrective action 888 is described in theacceptance process 139,FIG. 14 , below. -
FIG. 9 is a block diagram of one preferredstorage filing system 110. The storage system comprises any known storage means 110 which contains one or more filingsystem data structures 112. Thesefiling systems 112 containfiles 112A to be transmitted by thesystem 100. Thestorage system 110 also comprises adatabase 113 which contains adelivery criteria list 114. Thedelivery criteria list 114 has a plurality of records, typically 914. Each delivery criteria record 914 has the following fields: a file list record 350 (see description,FIG. 3 , above); afile size 922; arelease time 924; adeadline 926; one or moreoptional recipients 928; anacknowledgment designator 930; anoptional bandwidth 932; and anoptional retransmission designation 934. - In a preferred embodiment, the delivery criteria records 914 of the
delivery criteria list 114 are created and maintained by theestimate transmissions process 1000, described inFIG. 10 , below. Theprocess 1000 creates one or more delivery criteria records 914 for eachtransmission request 700 and each record 914 represents a transmission of the transmission request's associateddata file 112A. Delivery criteria records 914 may also represent a retransmission of some or all portions of an associateddata file 112A. - Each delivery criteria record 914 contains (or references) a
file list record 350. This filelist record field 350 identifies thefile 112A which is to be transmitted to satisfy the delivery criteria record 914. - The
file size field 922 is any well known quantization of the size of the file (350, 112A) to be transmitted. Typically thefile size 922 is given in byte lengths. Therelease time field 924 is the time after which the file (350, 112A) should be transmitted. Thedeadline field 926 is the time before which a transmission of the file (350, 112A) should complete. Note that these times can also be specified by arelease time 924 and a send window time, or adeadline 926 and a send window time. - The
optional recipients 928 designate the location/people that are to be sent the file (350, 112A).Recipient information 928 is typically used withretransmissions 934 and/oracknowledgments 930 are used. In a broadcast situation, the recipients need not be specified because everyone on the network will be sent the file (350, 112A). - The
optional acknowledgment field 930 is used to indicate when an acknowledgment is required from one or more of the recipients. One type ofacknowledgment 930 indicates that a recipient received the file (350, 112 a), or parts of the file (350, 112 a). Another type of acknowledgment, a negative acknowledgment, indicates that the recipient did not receive the file (350, 112 a) or did not receive parts of the file. For example, if a recipient expected a file (350, 112 a) at 10:00 PM and did not receive it, it would send a negative acknowledgment. If a recipient received a portion of a file (350, 112 a) and another portion of the file (350, 112 a) was not received (e.g. due to being timed out 615, or due tonetwork retransmission 934 to take place. - The
optional bandwidth field 932 defines the bandwidth requirements for a particular file (350, 112 a) transmission. The bandwidth requirements can depend on the capabilities of the recipients, the quality of service that a subscriber paid for, and/or the physical requirements of the file (350, 112 a). (Constant bit rate video requires a minimum bandwidth for real-time playback). - The
optional retransmission field 934 indicates that aclient 180 requires retransmission of the file if no acknowledgment or negative acknowledgment is received by any of the recipients.Retransmissions 934 must conform to deadline (615, 926) and bandwidth (625, 932) availability requirements. - An example of a
delivery criteria list 114 is shown inFIG. 9A . This non limiting example is a continuation of the example given inFIG. 7A . Referring toFIG. 7A , a subscriber such as a product or service provider, e.g. an insurance company providing digitized training videos, located at thesource address 710, to its representatives (recipients 750), requests that thevideos 710 be sent out over a weekend in order to be used in a course in the following week (transmission deadline 744). The company (billing account 730) requests a quality of service which provides ten megabits of bandwidth (bandwidth constraint 752), collection ofacknowledgments 760 from the representatives, and a maximum of two retransmissions (retransmission count 748). The video is 3.6 Gigabytes long (expected data file size 722), approximately two hours of MPEG-2 compressed audio and video, and there are two groups of recipients: group B, the insurance agents, and group D, state regulators (see values in recipients field 750). - Now referring to
FIG. 9A . There are five delivery criteria records 914 (A, B, C, D, E) in the exampledelivery criteria list 114. Delivery criteria records 914A, 914B, and 914C are criteria for the transmission and retransmission of the transmission request shown inFIG. 7A .Delivery criteria record 914A requests a transmission of the 3.6 GB (size 922)file 112A “training.mpg” (source file identifier 310 in file list record 350) to be performed between 21:00 Friday (release time 924) and 23:00 Friday (deadline 926) to the recipient groups B and D (recipients 928) withacknowledgments 930 at a bandwidth of 10 Mbps (bandwidth 932).Delivery criteria record 914A also indicates that tworetransmissions 934 may follow.Delivery criteria records delivery criteria record 914A except that they have different release times 924 (21:30 Friday and 23:00 Friday, respectively) and different retransmissions fields 934 (containing values of one and zero respectively). -
Delivery criteria records Delivery criteria record 914D requests a transmission of the 375 MB (size 922)file 112A “rulesUpdate.zip” (source file identifier 310 in file list record 350) to be performed between 21:30 Friday (release time 924) and 22:00 Friday (deadline 926) to the recipient groups A and B (recipients 928) with noacknowledgments 930 orretransmissions 934 at a bandwidth of 5 Mbps (bandwidth 932).Delivery criteria record 914E requests a transmission of the 750 MB (size 922)file 112A “catalog.zip” (source file identifier 310 in file list record 350) to be performed between 22:00 Friday (release time 924) and 22:30 Friday (deadline 926) to recipient group C (recipients 928) with noacknowledgments 930 orretransmissions 934 at a bandwidth of 10 Mbps (bandwidth 932). - In this example,
delivery criteria file 112A. The three transmissions are to be scheduled withrelease times 924 that are thirty minutes apart. Thirty minutes being theretransmission interval 746 ofsample transmission request 700A. - Note that
delivery criteria same release time 924 value. - In this example, the
system 100 sent the entire package during an available network slot onFriday night 924. However, due to a cut cable network outage, the regulators (recipients 928 group D) did not receive the package and did not send an acknowledgment. Also, because of client limitations, the agents (recipients 928 group B) only received half of the package. Since the agents only acknowledged receipt of half of the package, and no acknowledgment was received from the regulators, the entire package was retransmitted to the regulators and the missing half was retransmitted to the agents. These functions were performed by the scheduling process (128, 134). Criteria fordifferent transmission requests 700 are given in each of the records (typically 914) of thedelivery criteria list 114 containing the delivery criteria records 914. -
FIG. 10 is a flow chart of anestimate transmissions process 1000. Thisprocess 1000 receives acceptedtransmission requests 700 and creates records 914 in thedelivery criteria list 114 so that the associatedfiles 112A will be transmitted by thesystem 100. The schedule process (128, 134) executes theestimate transmissions process 1000 each time anew transmission request 700 is accepted 841 into the system (128, 134), and each time information is generated (e.g. anexact file 112A size is determined, a prior transmission of thefile 112A completes 1300, andacknowledgments 135 are received fromclients 160, 170) regarding thetransmission request 700. When executed, theestimate transmissions process 1000 will modify thedelivery criteria list 114 so that thefile 112A will be transmitted (and/or retransmitted) over the network (150, 159). - The
estimate transmissions process 1000 begins 1020 by determining a current release time which is the earliest time a transmission of thefile 112A can take place. Thecurrent release time 1020 is the greater of thetransmission release date 742 specified in the acceptedtransmission request 700 and thecurrent system time 125. Theprocess 1000 then iterates 1030 over the transmissions which need to be scheduled making a delivery criteria record 914 in thedelivery criteria list 114 for each required transmission. When theprocess 1000 is first called with a newly acceptedtransmission request 700, theprocess 1000 will iterate once to create a delivery criteria record 914 for an initial transmission of thefile 112A, and then will continue to iterate, once per requestedretransmission 748, to create delivery criteria records 914 for retransmissions of thefile 112A. When theprocess 1000 is called after one or more transmissions and/or retransmissions have taken place, theprocess 1000iterates 1030 to modify the remaining delivery criteria records 914, e.g. to reset the release time (e.g. if bandwidth is freed up), and/or to adjust the size (e.g. if part of the transmission was sent and acknowledged). - The
process 1000 creates and selects 1040 a delivery criteria record 914 in thedelivery criteria list 114 for each transmission which is to take place. If theprocess 1000 has already created a delivery criteria record 914 for this transmission during a prior execution, the previously created delivery criteria record 914 is simply selected in thedelivery criteria list 114 and not recreated. This is to avoid having duplicate records 914 in thedelivery criteria list 114. - When the
process 1000 creates 1040 a delivery criteria record 914, it sets the fields of the new delivery criteria record 914 as follows: thesize 922 field is set to the size of thefile 112A; thedeadline field 926 is set to thetransmission deadline 744 of thetransmission request 700; therecipients field 928 is set to therecipients 750 field of thetransmission request 700; theacknowledgments field 930 is set to theacknowledgments field 760 of thetransmission request 700; thebandwidth field 932 is set to the bandwidth constraints field 752 of thetransmission request 700; and theoptional retransmissions field 934 is set to theretransmission count field 748 of thetransmission request 700. Further, theprocess 1000 sets the fields of thefile list record 350 contained in the delivery criteria record 914 as follows: thesource file identifier 310 is set to the location of thefile 112A inmass storage 110; thecursor field 315 is set to indicate the start of the file (typically set to 0); and the destination address 320 field of thefile list record 350 within the delivery criteria record 914 is set to a network address for the listedrecipients 750. - In both cases, i.e. for new and existing delivery criteria records 914, the
process 1000 continues to step 1050 where therelease time 924 field of the selected delivery criteria record 914 is set to hold thecurrent release time 1020 value.Step 1050 also sets therecipients field 928 of new and existing delivery criteria records 914. In a preferred embodiment, therecipients field 928 is set to the groups ofrecipients 750 who have not yet acknowledged receipt of theentire file 112A. In alternate embodiments, therecipients field 928 is set to the group of recipients listed in therecipients field 750 in thetransmission request 700. - Through these two steps (1040, 1050), the
process 1000 has created/modified a delivery criteria record 914 that will cause a transmission/retransmission of thefile 112A to be scheduled by theschedule dispatch process 1100, described inFIG. 11 below, and dispatched by thedispatching process 600. - The
process 1000 continues to determine 1060 the parameters for a next retransmission of thefile 112A. There are many different ways that values can be selected for the fields (e.g. therelease time 924, and the deadline 926) of the delivery criteria record 914 for a next retransmission.Steps next release time 924 for a next retransmission.Steps 1070 A, B, and C are different preferred embodiments of the invention. In some embodiments, these steps can be user selected. One step would be selected over another by balancing ease of scheduling with network bandwidth use and expected data loss. -
Step 1070A maintains aconstant release time 1020 throughout the delivery criteria records 914.Step 1070B increments thecurrent release time 1020 by theretransmission interval 746 value of the transmission request. And step 1070C allots a portion of the time between the initial release time set instep 1020 and the deadline to each transmission/retransmission. This is easier to schedule but could use more network bandwidth. - Choosing to perform
step 1070A makes all delivery criteria records 914 for thetransmission request 700 have thesame release time 924. This means that theschedule dispatch process 1100 may schedule the retransmissions to take place simultaneously. And, because each delivery criteria record 914 has the largest possible window of time between itsrelease time 924 anddeadline 926 thisstep 1070A has the greatest likelihood of creating feasible schedules. - Choosing to perform step. 1070B causes the
release times 924 of the delivery criteria records 914 to be staggered throughout the window between thetransmission release date 742 and thetransmission deadline 744. Each successive delivery criteria record 914 has arelease time 924 which is offset from the previous delivery criteria'srelease time 924 by theretransmission interval 746. By staggering therelease times 924, transmissions of afile 112A are more likely to not be broadcast over thenetwork release time 1020 logic on the value of a field (i.e. the retransmission interval 746), the characteristics of thesystem 100 can be changed by altering theretransmission interval 746 value. Step 1070B potentially uses less bandwidth thanstep 1070A and gives flexibility in scheduling the retransmissions. - Choosing to perform
step 1070C causes therelease times 924 of the delivery criteria records 914 to be evenly distributed between the window of thetransmission release date 742 and thetransmission deadline 744. This further lessens the likelihood of simultaneous transmissions and tends to cause the transmissions to be dispatched distributed throughout the window. However, as therelease time 924 of a delivery criteria record 914 nears thedeadline 926 of the delivery criteria record 914, the chances that the delivery criteria record 914 may not be able to be scheduled by thedispatch schedule process 1100 increase. Step 1070C potentially uses less network bandwidth thanstep -
Step 1070B is performed in a preferred embodiment. Alternative embodiments may perform eithersteps process 1000 withstep 1070B againsttransmission request 700A, described inFIG. 7A . - Note that because the
deadline 926 of the delivery criteria record 914 is kept constant by each of the steps (1070A, 1070B, 1070C), the steps all generate delivery criteria records 914 which may result in simultaneous transmissions. Further, all transmissions may be scheduled at the latest time possible by the dispatch scheduler. Alternative embodiments may modify thedeadline 926 of delivery criteria record 914 in order to guarantee that a transmission is completely dispatched well before itstransmission deadline 744 and in time for acknowledgments to be received and processed by theacknowledgment receiver process 135. - In another alternative embodiment, the
estimate transmissions process 1000 may only generate a delivery criteria record 914 for one retransmission (rather than allretransmission count 748 retransmissions). This would be done by iterating once instep 1030 instead of iterating over all transmissions. In this alternative embodiment, simultaneous transmissions of thesame file 112A would not occur because only one delivery criteria record 914 for thetransmission request 700 would be in the database at any one time. As thefeedback process 1300 indicated that the transmissions were completed, and as acknowledgments were received byprocess 135, successive delivery criteria record 914 could be created for any necessary retransmissions. - Once the parameters are determined for the next delivery criteria record 914, the process proceeds to step 1080 where a next iteration of
step 1030 takes place. Once all transmissions have been iterated 1030 over, the process ends 1090. - The scheduling processes 1100,
FIG. 11 , and 1200,FIG. 12 , novely use Earliest Deadline First (EDF) scheduling techniques while accounting for network bandwidth limitations to determine iffiles 112A can be dispatched 600 within the required time period subject to networking and transmission constraints. -
FIG. 11 is a flow chart of ascheduler process 1100 that converts information in thedelivery criteria list 114 into commands in thetransmission decision list 200 that are used by the dispatcher process 600 (600A, 600B). In addition, thescheduler process 1100 determines whether or not the delivery criteria records 914 in thedelivery criteria list 114 can be satisfied by theavailable system 100 resources to transmitfiles 112A over thesatellite 150 and/or over thenetwork 159. - The
process 1100 begins,step 1110, by accessing information in the network use criteria table 500. In a preferred embodiment, the information in this table 500 is duplicated 1110. - The
process 1100 then iterates 1115 over thedelivery criteria list 114. In a preferred embodiment,step 1115 sorts the delivery criteria records 914 in thedelivery criteria list 114 bydeadline 926, in increasing order, earliest deadline first. -
Step 1120 determines a record, e.g. by setting a pointer, in thetransmission decision list 200, and saves a prior state of the network use criteria table 500. -
Step 1125 initializes a quantity variable to thecursor 315 identified in thefile list record 350 of the delivery criteria record 914 selected by theiteration step 1115. -
Step 1130 performs another iteration while the quantity variable set instep 1125 is less than thesize 922 of the selected delivery criteria record 914. While the condition instep 1130 exists,step 1200 is performed which attempts to tentatively reserve use of the network for the selected delivery criteria record 914 by placingtime stamp 505 and definednetwork use 510 information in the network use criteria table 500, for the respective delivery criteria record 914. See the description of theFIG. 12 , below. -
Step 1140 determines whether or notprocess 1200 was able to tentatively reserve the network use, by examining the return code (1215, 1245, 1280 below). - If the return code indicates that the attempted reservation failed (1215, 1245),
step 1170 rejects the selected delivery criteria record 914, and optionally sends a drop signal to thedelivery status 137. Then step 1175 changes thetransmission decision list 200 to remove all theentries 250 associated with the selected record 914. In a preferred embodiment, the removedentries 250 are all those entered after the pointer set instep 1120. Further,step 1175 changes the network use criteria table 500 to restore the network use criteria table 500 to the state prior to the performance ofstep 1120. - If
step 1140 determines that the network use was reserved (1280) inprocess 1200,step 1150 returns back to step 1130 where a next reservation will be attempted for a next portion of the delivery criteria record 914. If thequantity variable 1125 is equal to thefile size 922,step 1155 is performed and finally commits the changes in thetransmission decision list 200 and the network use criteria table 500. In a preferred embodiment, this allows the pointer in table 1120 to be moved and the prior state information in table 500 to be overwritten. In a preferred embodiment, these functions (transactions, rollbacks, commits) are performed by standard database techniques. - After
step 1155 orstep 1175 has completed,step 1180 determines if there is another delivery criteria record 914 to iterate over. If there is, theprocess 1100 returns to step 1115. If not, thescheduler process 1100 ends. -
FIG. 12 is a flow chart of a novel networkuse allocation process 1200 which tentatively reserves network use in the network use criteria table 500 so that some or all of a transmission for a selected delivery criteria record 914 can be performed. Further, the networkuse allocation process 1200 createstransmission criteria records 250 which instruct thedispatching process 600 when to begin the selected delivery criteria record 914 transmission. - This
process 1200 is executed numerous times during execution ofprocess 1100,FIG. 11 above. Whileprocess 1200 is executing, it accesses the delivery criteria record 914 selected instep 1115,process 1100.Process 1200 accesses and modifies the network use criteria table (500, 1110) which is duplicated 1110 at the start ofprocess 1100, possibly adding new network use criteria records 550 to the table 1110.Process 1200 modifies thetransmission decision list 200 by creatingnew transmission criteria 250. And,process 1200 also modifies the value of thequantity variable 1130 maintained byprocess 1100. - The
process 1200 begins 1205, by finding a network use criteria record 550 in the network use criteria table (500, 1110) that meets the following constraints: 1205 a it has atime stamp 505 which is greater than or equal to therelease time 924 but less than thedeadline 926 of the selected delivery criteria (914, 1115); and, 1205 b, has ample remaining bandwidth 530 to support thebandwidth requirements 932 of the selected delivery criteria (914, 1115). In a preferred embodiment, thissearch 1205 is performed via an iteration of the network use criteria table (500, 1110), ordered bytime stamp 505. The time stamp constraint, 1205 a, causesstep 1205 to search for a network use criteria record 550 which indicates the availability of network use during the time window of the delivery criteria (914, 1115). Any network use criteria records 550 which define network use for periods before therelease time 924 or after thedeadline 926 will be ignored by the constraint 1205 a. - The bandwidth check constraint, 1205 b, causes
step 1205 to search for network use criteria records 550 which indicate that there is enough bandwidth available in the network to transmit some or all of thefile 112A of the selected delivery criteria (914, 1115). In a preferred embodiment, the bandwidth check 1205 b consists of comparing thebandwidth requirements 932 against the remaining bandwidth 530 of the network use criteria record 550. When thebandwidth requirements 932 specify a bandwidth which is less than or equal to the remaining bandwidth 530, the bandwidth check constraint 1205 b is considered met. When thebandwidth requirements 932 specify a bandwidth which is greater than the remaining bandwidth 530, the bandwidth check constraint 1205 b rejects the network use criteria record 550 as a candidate forstep 1205. - In a
preferred embodiment step 1205 will select the network use criteria record 550 with theearliest time stamp 505 that meets the constraints (1205 a, 1205 b). - If no network criteria records 550 exist which meet the constraints (1205 a, 1205 b), the process, 1200 sets a
failure indicator 1215 and returns. This will cause execution ofprocess 1100 to move to step 1170 where the selected delivery criteria (914, 1115) will be dropped from the transmission schedule. - If a network use criteria record 550 is found,
step 1210, execution ofprocess 1200 continues to (optional)step 1220. Instep 1220,process 1200 performs a second search of the network use criteria table (500, 1110). Theprocess 1200 searches to find the set of zero or more additional network use criteria records 550 which satisfy the constraints (1205 a, 1205 b) and which are contiguous in time. That is, theprocess 1200 finds each record 550(a) in the network use criteria table (500, 1110) which satisfies constraints (1205 a, 1205 b) and where there does not exist a second record 550(b) having a time stamp 505(b) with a value between thetime stamp 505 of the foundrecord 1205 and the time stamp 505(a) that does not satisfy the constraints (1205 a, 1205 b). - By performing these searches (1205, optionally 1220), the
process 1200, locates a range of time where there is enough network use available to transmit some or all of thefile 112A for the selected delivery criteria (914, 1115). - In a preferred embodiment, network use criteria records 550 can be iterated over in the network use criteria table 500, by order of increasing
time stamp 505. This means that the searches (1205, 1220) can be performed easily and in linear time. - After finding contiguous network use criteria records 550, execution continues to step 1225 where the
process 1200 begins to reserve bandwidth for a transmission. Theprocess 1200 portions the first found 1205 network use criteria record 550 into two new network use criteria records 550, 1225 a and 1225 b. The first network use criteria record 1225 a holds bandwidth/network use allocated for a window of time after thetime stamp 505 of the network use criteria record (550, 1205) but before therelease time 924 of the selected delivery criteria record (914, 1115). The second network use criteria record 1225 b holds the remainder of the bandwidth/network use from the first found 1205 network use criteria record 550. - The fields of network use criteria record 1225 a are set as follows: values for the
time stamp 505 and (optional) network identifier 520 fields are copied from the respective fields of the first found 1205 network use criteria record 550. And the aggregate 515 and defined network use 510 fields are set to a proportion of the aggregate 515 and defined network use 510 fields, respectively, of networkuse criteria record 1205 equal to the proportion of the window between therelease time 924 and thetime stamp 505, compared to the network use window 525. - The fields of network use criteria record 1225 b are set as follows: the value of the (optional) network identifier 520 field is copied from first found 1205 network use criteria record 550. The
time stamp 505 field is set to therelease time 924 of the selected delivery criteria (914, 1115). And the aggregate 515 and defined network use 510 fields are set to the remaining proportion of the aggregate 515 and defined network use 510 fields, respectively, of networkuse criteria record 1205 equal to the proportion of the window between therelease time 924 and end of the network use window 525, compared to the network use window 525. - After creating network use criteria record 1225 b, the
process 1200 removes network criteria record 1205 from the network criteria table (500, 110). And theprocess 1200 sets the first found networkuse criteria record 1205 to be network use criteria record 1225 b. - For example, suppose that the
release time 924 of the selected delivery criteria (914, 1115) occurs five minutes after thetime stamp 505 of networkuse criteria record 1205. And suppose that the network use window 525 field of the networkuse criteria record 1205 contains a value of twenty minutes. Further, suppose that networkuse criteria record 1205 defines 100 units ofnetwork use 505 and has an aggregate amount ofnetwork use 510 of 60 units. Then, therelease time 924 occurs ¼ of time into the network use window 525. Thus, new network use criteria record 1225 a would have a defined network use of 25 units and an aggregate amount ofnetwork use 515 of 15 units. And new network use criteria record 1225 b would have a defined network use of 75 units and an aggregate amount ofnetwork use 515 of 45 units. - In cases where the
time stamp 505 of networkuse criteria record 1205 is greater than or equal to therelease time 924 of the selected delivery criteria (914, 1115), network use criteria records 1225 a and 1225 b are not created bystep 1225. - By performing
step 1225, theprocess 1200 has now found a range of network use criteria records (the record 550 found instep 1205 and possibly replaced by new record 1225 b, and those records 550 found in step 1220) all of which havetime stamps 505 which are equal to or greater than therelease time 924 of the selected delivery criteria (914, 1115). -
Process 1200 now iterates 1230 over the found network use criteria records 550, selecting each network use criteria record 550 ordered bytime stamp 505. - During each
iteration 1230, theprocess 1200 computes,step 1235, aportion quantity 1235 a of data which needs to be transmitted to satisfy the selected delivery criteria (914, 1115). Thisportion quantity 1235 a is equal to the value in thesize 922 field of the selected delivery criteria record (914, 1115) less the amount in thequantity variable 1130 ofprocess 1100. Theprocess 1200 then determines a computed bandwidth rate 1235 b suitable for the selected network criteria 550 and divides theportion quantity 1235 a by the computed bandwidth rate 1235 b to compute a duration value 1235 c. -
Step 1235 is a time to transmit process which determines the time to transmit a portion of afile 112A within the constraints of the delivery criteria record 914,transmission criteria 770, and available network use 550. In alternative embodiments, thesetransmission criteria 770 can further include the time of day and/or size of network buffers (124A, 124B). - In a preferred embodiment, the computed bandwidth rate 1235 b is set to the
bandwidth 932 specified in the selected delivery criteria record (914, 1115). In alternate embodiments, the computed bandwidth rate 1235 b may vary if thebandwidth 932 specifies a range of allowable bandwidth values. In these alternate embodiments, the computed bandwidth rate 1235 b may be set to a preferred bandwidth value which is specified 932 in the selected delivery criteria record (914, 1115) and which there is space for (remaining bandwidth 530) in the selected networkuse criteria record 1230. - If the computed duration value 1235 c is greater than the window between the
time stamp 505 of the selectednetwork use record 1230 and the next network use record 550,step 1235 adjusts the computed duration value 1235 c to be equal to the window. And step 1235 adjusts theportion quantity 1235 a to be equal to the amount of data which can be written in that window, e.g. the computed bandwidth rate 1235 b multiplied by the new computed duration value 1235 c. - The
process 1200,step 1240, then compares the computed duration value 1235 c against thedeadline 926 in the selected delivery criteria record (914, 1115). When the value of thetime stamp 505 of the selected networkuse criteria record 1230 plus the computed duration value 1235 c is greater than thedeadline 926, execution of theprocess 1200 moves to step 1245 where the process sets a failure indicator, ends its execution, and returns to process 1100. In this case, theprocess 1200,step 1245, has determined that there is not enough time and bandwidth available between thetime stamp 505 and thedeadline 926 to complete the transmission of thefile 112A and, hence, a failure code is returned. - When the
process 1200 determines that there is enough time and bandwidth to transmit aportion 1235 a of thefile 112A before the deadline, execution moves to step 1250. The process,step 1250, compares the computed duration value 1235 c to the network use window 525. If the computed duration value 1235 c holds a time interval smaller than the network use window 525, step 1255 portions the selected networkuse criteria record 1230 into two new network use criteria records 1255 a and 1255 b. - New network use criteria record 1255 a represents the network use during the time period starting at the
time stamp 505 of networkuse criteria record 1230 and extending to the time interval of the computed duration 1235 c. Network use criteria record 1255 b represents the network use for the remainder of the time at and past the duration 1235 c up to the network use window 525. - The fields of network use criteria record 1255 a are set as follows: values for the
time stamp 505 and (optional) network identifier 520 fields are copied from the respective fields of the selected networkuse criteria record 1230. And the aggregate amount ofnetwork use 515 and defined network use 510 fields are set to a proportion of the aggregate amount ofnetwork use 515 and defined network use 510 fields, respectively, of networkuse criteria record 1230 equal to the proportion of the window between the duration 1235 c and the network use window 525 of the selected networkuse criteria record 1230. - The fields of network use criteria record 1255 b are set as follows: the value of the (optional) network identifier 520 field is copied from first found 1205 network use criteria record 550. The
time stamp 505 field is set to the value of thetime stamp 505 of the selected networkuse criteria record 1230 plus the duration 1235 c. And the aggregate amount ofnetwork use 515 and defined network use 510 fields are set to the remaining proportion of the aggregate amount ofnetwork use 515 and defined network use 510 fields, respectively, of networkuse criteria record 1230 equal to the proportion of the time between the duration 1235 c and the network use window 525. - After creating network use criteria records 1255 a and 1255 b, the
process 1200 removes network criteria record 1230 from the network criteria table (500, 1110). And theprocess 1200 sets the selected networkuse criteria record 1230 to be network use criteria record 1255 a. - Execution of the
process 1200 then continues to step 1260.Step 1260 will also be executed (and step 1255 bypassed) whenstep 1250 finds that the computed duration 1235 c is equal to the network use window 525. -
Step 1260 creates anew transmission criteria 250 record for the transmission criteria table 200. Thistransmission criteria 250 record instructs thedispatching process 600 to send a portion of thefile 112A for the selected delivery criteria (914, 1115). The fields of thenew transmission criteria 250 are set as follows: theindex 205 is set to theindex 305 of thefile list record 350 in the selected delivery criteria record 914; the release time 210 is set to thetime stamp 505 of the selected networkuse criteria record 1230; thequantity completion measure 235 is initialized (set to zero in a preferred embodiment); and the status code 240 is set to a “Pending” value. - In a preferred embodiment,
step 1260 sets theburst size 225 and burst rate 230 fields to values for the computed bandwidth rate 1235 b determined instep 1235. Theportion quantity field 215 is set to the computedportion quantity 1235 a, and the duration field 220 is set to the computed duration 1235 c. In alternate embodiments, the duration field 220 may be left unspecified, set to the value of thedeadline 926 in the selected delivery criteria record (914, 1115), or set to the value of thetime stamp 505 in the next network use criteria record 550. -
Step 1260 has now created anew transmission criteria 250 record requesting that thedispatching process 600 transmit a portion of thefile 112A for the selected delivery criteria record (914, 1115). Execution ofprocess 1200 moves to step 1265 where 1265 a the value of the computedportion quantity 1235 a is added to value stored in the aggregate amount ofnetwork use field 515 for the selected networkuse criteria record 1230. This records that network use has been reserved for thenew transmission criteria 250 record.Process 1200 further 1265 b adds the computedportion quantity 1235 a to thequantity variable 1125 ofprocess 1100. Thusquantity variable 1125 is updated to hold the amount of data which has been scheduled for the currently selected delivery criteria (914, 1115). -
Step 1270 compares thequantity variable 1125 to the value of thesize 922 field in the selected delivery criteria record (914, 1115). If thequantity 1125 is not equal to thesize 922,more transmission criteria 250 records need to be created to satisfy the delivery criteria (914, 1115). Theprocess 1200 continues execution to step 1275 where, if there are more found networkuse criteria records 1230, execution branches back tostep 1230. - When the
quantity 1125 is equal to the size 922 (step 1256), or when there are no more networkuse criteria records 1230 to iterate over (as determined by step 1275), execution continues to step 1280 where theprocess 1200 sets a success indicator value and execution ofprocess 1200 ends. - Note that the constraints (1205 a, 1205 b) chosen for
steps - Alternative embodiments may use alternate processes, such as the Fazzt Digital Delivery System by KenCast, Inc. to perform the function of the dispatching process (600A, 600B). New constraints in addition to, or in replacement for, constraints 1205 a and 1205 b may be added to the network
use allocation process 1200. For instance, if thealternate dispatching process 600 has a limitation on the number of simultaneous portions offiles 112A which may be transmitted at any given time, a constraint 1205 c may be introduced to process 1200 which enforces this limit. A constraint 1205 c may check that no more than fourtransmission criteria records 250 exist with release times 210 and durations 220 that overlap the network use window of a candidate (1205, 1220) network use criteria record 550 This alternate constraint 1205 c would cause the networkuse allocation process 1200 to not schedule any more than overlapping simultaneous transmission criteria records 250. - Another alternate constraint 1205 d could be put in place to check that there was enough remaining network bandwidth in contiguous network
use criteria records 500 so that it was possible to schedule thefile 112A for transmission as one portion. - Further, an alternate constraint 1205 e could be put in place to limit the cumulative bandwidth delivered to a destination or destination group during a time period. Alternate constraint 1205 e could check, for example that no more than a cumulative 10 Mbps was transmitted for a destination, regardless of the number of simultaneous transmissions delivered to the destination.
-
Process 1100 iterates over thedelivery criteria list 114,step 1115, ordered bydeadline 926, and the delivery criteria record 914 which have theearliest deadlines 926 are scheduled first.Process process 1200 allows multiple transmissions of portions offiles 112A to be scheduled simultaneously during the same time period therefore allowing overlapping and simultaneous scheduling. Step 1265 a ofprocess 1200 works with constraint 1205 b to keep track of the bandwidth consumed by simultaneously scheduled transmissions so that the cumulative bandwidth scheduled during a time period is not greater than the available bandwidth for the time period. - Further, by allowing multiple network use criteria records 550 to exist, each with a distinct network use window 525,
processes FIG. 5 above, differing portions of bandwidth may be available to a network during different times of day. For instance, 45 Mbps of network bandwidth may be available during off-peak hours but only 15 Mbps available during peak time. - A preferred embodiment of this invention creates a
transmission decision list 200 usingprocesses -
FIG. 13 is a flow chart of anoptional feedback process 1300 which examines entries in the filetransmission history log 400 and adjustsrelated transmission requests 700 accordingly. - The
process 1300 begins,step 1310, by iterating 1320 over the entries in thehistory log 400. Thehistory log 400 is populated by the dispatching process 600 (600A, 600B) whenever a portion of afile 112A is transmitted over the network (150, 159). In a preferred embodiment, theprocess 1300 iterates over history records 450 which have been added to thehistory log 400 after a previous execution ofprocess 1300. By doing this, history records 450 are not examined twice. Theprocess 1300 can detect newly added history records 450 by examining the value in the completion time stamp 420 field. -
Step 1325 locates thetransmission request 700 associated with the history record 450. Thetransmission request 700 can be found through theindex 405 field of the history record 450. Theindex 405 field identifies thefile list record 350 and thus identifies thefile 112A which has an association with thetransmission request 700. Through similar steps of following indirection, theprocess 1300 can locate the delivery criteria record 914 which contains thefile list record 350 associated with the history log 450. - The
process 1300 then,step 1330, examines the status code 415 field of each history record 450 selected instep 1320. The status code 415 field contains information regarding an attempted transmission of a portion of afile 112A over the network (150, 159). In a preferred embodiment, the status code 415 is checked to see if it contains one of two values. When the status code 415 contains a “File not found” indicator, thedispatch process 600 attempted to make a transmission but found that thefile 112A did not exist in the memory/mass storage 110. In this case, the process moves to step 1340. When the status code 415 contains a “Success” indicator, thedispatch process 600 successfully transmitted a portion of afile 112A over the network (150, 159). In this case, the process moves to step 1370. In alternate embodiments, the status code 415 is checked to see if it contains additional values such as a “Preempted due to network error” or “Preempted due to disk error” and appropriate steps are performed for each of these indicators. - When a
file 112A was not found by thedispatch process 600, execution of theprocess 1300 moves to step 1340.Step 1340 increases thetransmission release time 742 of the found transmission request (700, 1325). In a preferred embodiment, thetransmission release time 742 is increased by a fixed value, e.g. an hour. In alternate embodiments, thetransmission release time 742 may be increased by a value related to the expecteddata file size 722. - The
transmission release time 742 is increased because the data for thefile 112A has not yet been completely retrieved from theclient 180 byretrieval function 843. Increasing thetransmission release time 742 allows theretrieval function 843 to have more of an opportunity to receive thedata file 112A. - Note that as the
transmission release time 742 is increased and moves closer to thetransmission deadline 744, it is more likely that a schedule cannot be created by theschedule process 800 which will satisfy thetransmission criteria 770 withavailable network use 500. By increasing thetransmission release time 742, thefeedback process 1300 may cause thetransmission request 700 to be dropped 882 by theschedule dispatch process 1100. In an extreme case, thetransmission release time 742 may be increased past thetransmission deadline 744, andtransmission request 700 will be dropped 882. - Alternate embodiments of
process 1300 may perform anacceptance test 139 to determine if the modifiedtransmission criteria 770 is still acceptable within thesystem 100. - In further alternate embodiments, the
process 1300 drops thetransmission request 700 when thefile 112A has not been retrieved before thetransmission release time 742. This rejection can cause a notification signal, e.g. an e-mail message, to be transmitted to theclient 180, informing theclient 180 of the droppedrequest 700, and cause theclient 180 to schedule a next transmission of thefile 112A by interacting with therequest receiver process 144. - After increasing the release time,
step 1340, executon ofprocess 1300 moves to step 1380 where, if a next history log record 450 exists, it is selected for iteration and execution branches to step 1320. After all history log records 450 have been iterated 1320 over, execution branches to step 1390 where theprocess 1300 ends. - When
step 1330 finds that the status code 415 contains a “Success” indicator, execution ofprocess 1300 moves to step 1370.Step 1370 examines fields in thefile list record 350 and the delivery criteria record 914 associated with the selected history record 450 to determine if afile 112A has been completely transmitted. If thecursor 315 field of thefile list record 350 is equal to thesize 922 field of tide delivery criteria record, all portions of thefile 112A have been transmitted, and execution ofprocess 1300 proceeds to step 1375. In a preferred embodiment,step 1375 sends a message to theclient 180 indicating that a transmission/retransmission of thefile 112A has completed. In alternate embodiments, theprocess 1300,step 1375, may also send messages to therecipients 928 listed in the delivery criteria record 914. This message would request acknowledgment of the transmittedfile 112A and may be sent conditionally based on the value of theacknowledgments 930 field. After performingstep 1375, execution of theprocess 1300 continues to step 1380. -
Step 1375 may optionally produce a bill after each successful transmission, may create a new line items in a pending bill which charged an amount for each transmission, or may send a signal to abilling process 136 to perform the billing. Thebilling process 136 could examine the history log 400 to determine how many portions of afile 112A were sent for a transmission request and generate a bill accordingly. - When the
process 1300 determines that afile 112A has not yet been completely transmitted 1370, execution of the process branches directly to step 1380 where theprocess 1300 will perform anext iteration 1320 of a next history record 450, orend 1390 when all history records 450 have been iterated through. - In a preferred embodiment,
process 1300 is executed by the schedule process (128, 134) on a periodic basis, e.g. every five minutes. In alternate embodiments,process 1300 is executed whenever new history records 450 are added to thehistory log 400, or when a the number of new history records 450 within the history log 400 passes a threshold, e.g. when there are at least twenty new history records 450 in thehistory log 400. - In addition to writing history records 450 into the history log 400r), the
dispatching process 600 generates other information which may be used for feedback. As thedispatching process 600 transmits portions offiles 112A over the network (150, 159), it modifies the aggregate amount of network use 515 fields of network use criteria records 550. These modified network use criteria records 550 are used by theschedule dispatch process 1100,FIG. 11 above, to determine the remaining bandwidth 530 during a time period. - The
dispatching process 600 also updates thecursor field 315 offile list records 350 as it transmits portions of their associatedfiles 112A. Thecursor field 315 is used byprocess 1100,step 1125, and process 120),step 1235, to determine the quantity of file 12A data which needs to be transmitted. As portions of thefile 112A are transmitted over time for distinct delivery criteria records 914, thecursor field 315 of the delivery criteria records 914 is increased. And, if theschedule dispatch process 1100 is executed after a portion of afile 112A has been transmitted, because thecursor 315 field will have been updated during the portion transmission, theschedule dispatch process 1100 will not try to reschedule that portion. - Referring back to the description of
FIG. 8 ,box 135 is an optional acknowledgment receiver process. Thisprocess 135 receives messages (e.g. positive or negative acknowledgments) from clients (160, 170) that indicate successful receipt of a transmission, successful receipt of one or more portions of a transmission; partial receipt of a transmission, and receipt of a transmission with errors (e.g. missing data, damaged data, partial data) in one or more of its portions. Upon receiving acknowledgments (positive or negative), theprocess 135 examines the associatedtransmission request 700 and determines if a retransmission of the data file 112A or a portion of the data file 112A is warranted. When theprocess 135 determines that a retransmission is needed or is no longer needed, it signals theestimate transmissions process 1000 to schedule and/or remove delivery criteria 914 associated with thetransmission request 700. Theprocess 135 may also signal thebilling process 136 to generate a bill. -
FIG. 14 is a flow chart of anacceptance process 139 which determines if it is possible to schedule a transmission of the information in thetransmission request 700 in accordance to the receivedtransmission constraints 770. - The
acceptance process 139 begins,step 1410, by iterating over thetransmission constraints 770 in thetransmission request 700 received by therequest receiver process 144. In a preferred embodiment of the invention, thetransmission request 700 contains only onetransmission constraint 770. However, in alternate embodiments, thetransmission request 700 may containmultiple transmission constraints 770, and each is iterated over in turn bystep 1410. -
Step 1420 of theprocess 139 estimates the cost of performing thetransmission request 700 in accordance to the selected transmission constraints (770, 1410). The costs of the transmission can be based on many cost factors and fees. Cost factors which relate to thecontent generator process 146 include: rental of a network connection 157 (a leaded line, an internet connection) between theclient 180 and theserver 140; an on-line; or off-line storage fee to maintain the retrievedfiles 112A inmass storage 110; a fee relating to the expecteddata file size 722 of the file 12A being retrieved; a fee relating to the expected length of time taken to retrieve the data file 112A; a fee for preparation work (digitization, encryption) requested bypackaging options 720; and a fee for polling theclient 180 to retrieve updated data files 112A. - Cost factors which relate to the transmissions of the
data file 112A include: a priority based fee; network usage fees based on peak and off-peaktransmission release times 742 andtransmission deadlines 744; fees based on the amount of leeway between thetransmission release time 742 and thetransmission deadline 744; number of retransmissions requested (retransmission count 748); and theacknowledgments 760 requested. The cost may also be influenced by the number ofrecipients 750 which are to acknowledge the transmissions, and their prior reception history. Aclient 180 may qualify for a discount if all therecipients 750 in atransmission request 770 have a history of excellent reception andretransmissions 748 are not expected to be necessary. A further cost factor may be the type of report offered to theclient 180 detailing the transmissions, retransmissions, and itemized success or failure ofrecipient 750 reception. Other factors which are considered by thebilling process 136 may also be estimated bystep 1420. - After calculating an estimate of the cost of the transmission,
step 1420, theprocess 139 checks,step 1430, to see if the cost is within the (optional)biiling cost 734 amount specified in thetransmission request 700. If the estimatedcost 1420 is greater than thebilling cost 734, execution of theprocess 139 branches to step 1460 where an iteration of anext transmission constraint 770 is performed. - If the estimated
cost 1420 is equal to or less than the billing cost 734 (or if the optionalbilling cost field 734 was omitted), theprocess 139 tests thetransmission request 700 for, step 1435, other business constraints. For instance, theprocess 139 may estimate the time required to perform transformations requested in the packaging options field 720 such as encryption or digitization. Thetransmission request 700 is then checked to see that there is a sufficient amount of time between theretrieval start time 714 and thetransmission release time 742 to prepare thefile 112A for transmission. Theprocess 139 may also step 1435, estimate the time required for thecontent generator process 146 to retrieve the data file 112A, given its estimateddata file size 722, and see that there is enough time to retrieve the data file 112A before transmitting it. - In alternate embodiments, the tests of step 1435 are performed before
step 1430. - If the
transmission request 700 passes the tests of step 1435, theprocess 139 executesprocess 1000 to estimate the transmissions which are required to fulfill thetransmission constraints 770. Theprocess 139 then executesprocess 1100 to schedule the transmission. When execution ofprocess 1100 ends with the transmission being successfully scheduled, i.e. it was not dropped (882 and step 1440), thetransmission constraint 770 are considered acceptable to thesystem 100 and thetransmission request 700 is accepted,step 1450. - If during execution of
process 1100, the transmission is dropped (882 and step 1440), theacceptance process 139 determines that thetransmission constraint 770 cannot be scheduled by thesystem 100. Execution of theprocess 139 moves to step 1460 where an iteration of anext transmission constraint 770 is performed. -
Step 1460 checks thetransmission request 700 to see if it contains anytransmission constraints 770 which have not yet been iterated over. If so,step 1460 causes execution of theprocess 139 to branch to step 1410 to perform the next iteration. When alltransmission constraints 770 have been iterated over 1410, execution of theprocess 139 moves to step 1470 where thetransmission request 700 is rejected. Allcandidate transmission constraints 770 have been examined and none have found acceptable, so thetransmission request 700 is rejected and a rejection signal is sent to theclient 180 by therequest receiver process 144. Theclient 180 can then submit anew transmission request 700 withalternate transmission constraints 770. - In alternate embodiments, the
acceptance process 139 marks eachtransmission constraint 770 with an indication of why it was considered unacceptable. This marking can indicate that aconstraint 770 was too costly and not accepted bystep 1430, for example. Or the marking can indicate that the cost was sufficient but there was not enough available network use, determined bystep 1440, to schedule thetransmission request 700. The marked uptransmission constraints 770 are returned to theclient 180 by therequest receiver process 144 and provide theclient 180 with information which can be used to negotiate anacceptable transmission request 700. - Alternate embodiments may also return a copy (or a detailed or summarized report) of the network use criteria table (500, 1110) used in the
schedule dispatch process 1100, when transmission requests 700 are rejected. This report would let theclient 180 know when the network has available bandwidth and would let theclient 180 fine-tune anext transmission request 700 that would be more acceptable. - Further embodiments of the
acceptance process 139 may executeprocesses - In a non limiting example, a subscriber, such as a software provider (client 180), wants to provide software updates to its network (150, 159) connected customers (160, 170). The software provider sends a
transmission request 700 to therequest receiver process 144. Thefile 112A containing the software updates is 100 megabytes long. The connected customers (e.g. recipients 750) can receive at speeds up to 128 kilobits per second (e.g. bandwidth constraints 752). The software provider requests (through packaging options field 720) that the software updates be encrypted and digitally signed. The software provider also requests (through acknowledgments field 760) that eachrecipient 750 acknowledge receipt of thefile 112A. The software provider specifies aretrieval start time 714 of 08.00 AM, atransmission release time 742 of 08:30 AM, and atransmission deadline 744 of 09:00 AM. - The
request receiver process 144 receives the software provider'stransmission request 700 and passes it to theacceptance process 139. Theacceptance process 139 rejects thetransmission request 700 because thecontent generator process 146 requires at least forty-five minutes to retrieve the data file 112A, encrypt it, and sign it (rejection due to failure of tests in step 1435); and because (rejection due to failure in step 1440) the 100megabyte file 112A cannot be transmitted in thirty minutes at 128 kilobits per second. - After the
transmission request 700 is rejected byacceptance process 139, the request receiver notifies the software provider (client 180) of the rejection and indicates the minimal time requirements needed to satisfy the tests ofstep 1435 and 1440. A person at the software provider submits asecond transmission request 700 with atransmission release time 742 of 11:00 AM and atransmission deadline 744 of 02:30 PM. Thissecond transmission request 700 is accepted byprocess 139. - Referring now to
FIG. 8 , an additional action taken 888 is for thedelivery status module 137 to notify theacceptance process 1440 when a delivery criteria record 914 associated with a candidate transmission constraint (1410, 770) was dropped. - Alternate embodiments of the
system architecture 800 may include multiple scheduler processes (128, 134), request receiver processes 144 and acceptance processes 139,content generators 146, dispatch processes 600 (600A, 600B), acknowledgment receiver processes 135, anddelivery status modules 137, communicating with each other. Onerequest receiver process 144 may act as a broker and forward a receivedtransmission request 700 to multiple acceptance processes 139 in an attempt to have atransmission request 700 accepted at a preferred billing rate ortransmission criteria 770. If afirst acceptance process 131 rejects thetransmission request 700, therequest 700 would be passed by therequest receiver broker 144 to asecond acceptance process 139 which may be connected to asystem 100 which offers better rates or have more available bandwidth. - A broker
request receiver process 144 may also break atransmission request 700 into two or morenew transmission requests 700 which may be accepted, rejected, and/or serviced independently. For example, suppose a company wishes to deliver a digitized video of a product announcement to people who have registered on its mailing list. The recipients for the product announcement may include satellite connected users (e.g. 160), terrestrial users (e.g. 170) connected to the Internet Multicast Backbone (M-Bone), and terrestrial users (e.g. 170) connected to the Internet via America On-Line (AOL). The company may create atransmission request 700 which lists all of its users and send therequest 700 to a brokerrequest receiver process 144. This brokerrequest receiver process 144 may generate threetransmission requests 700, therequest 700 listing the satellite connected users, the M-Bone connected terrestrial users, and the AOL users, in therecipients 750 field, respectively. The brokerrequest receiver process 144 would then submit thenew transmission requests 700 to acceptance processes 139 which were connected to the appropriate networks (150, 159). - A broker
request receiver process 144 may also break atransmission request 700 into two or morenew transmission requests 700 by other means (besidesrecipient 750network request receiver process 144 which receives atransmission request 700 asking for aretransmission 748 may generate twotransmission requests 700, each asking for zeroretransmissions 748. In essence, the brokerrequest receiver process 144 performs a negotiation process with one or more acceptance processes 139 on behalf of aclient 180. - Other businesses processes may also be built around the
system 100. A company may wish to have data files on its agent computers synchronized with a central data source. Each time afile 112A changes at the central data source (client 180), atransmission request 700 could be generated to have the new data file 112A transmitted over the network (150, 159) to the company's agents (160, 170). Thisfile 112A may or may not be encrypted to maintain privacy. - Another company may add a finishing process to the
system 100 which receives a transmitteddata file 112A and forwards it on a local area network to other network connected clients or performs some other final manipulation. A sample finishing process may be for receiveddata files 112A at a client (160, 170) which contain e-mail messages to be forwarded over a local area network. Or, when receiveddata files 112A contain digitized video, the finishing process maybe to convert thefiles 112A into analog NTSC video for displayed in an auditorium or conference room, or storage on analog video tape. - The
system 100 makes it easy to transmitdata files 112A to a large number of recipients and provides an assurance that the transmission will take place. And, it provides a way to manage the network (e.g. Satellite network) bandwidth. This easy-to-use system opens the satellite marketplace up to many new business opportunities. Small to midsize businesses can now transmit their digital information over the satellite easily and economically. - Note that a business method using the present invention is further described and claimed in U.S. patent application Ser. No. 09/649,973, still pending, entitled “A Method of Doing Business over a Network by Transmission and Retransmission of Digital Information on a Network During Time Slots” to Vogl, et al. which was filed on the same day as the parent application to the present application, and which is herein incorporated by reference in its entirety as if fully restated herein.
- Given this disclosure alternative equivalent embodiments will become apparent to those skilled in the art. These embodiments are also within the contemplation of the inventors.
Claims (27)
1. A computer system for delivering digital information over a network, the computer system having one or more memories, one or more central processing units, and one or more network connections, the system further comprising:
a request receiving process configured to receive a request for transmitting digital information, the request specifying a plurality of constraints comprising at least a delivery time constraint and a cost of delivery constraint, the digital information having a number of packets;
a transmit time process configured to determine the time required to transmit the digital information based on the number of packets and a network speed;
a scheduler configured to schedule a transmit time for the digital information; and
an acceptance process configured to accept the digital information for transmission only if the plurality of transmission constraints are satisfied, the acceptance process further comprising a transmission cost estimation process configured to estimate the cost of transmitting the digital information in accordance with the plurality of constraints.
2. A system, as in claim 1 , where the digital information is transmitted at a first price.
3. A system, as in claim 1 , where the digital information is rejected for transmission if the delivery time constraints cannot be satisfied.
4. A system, as in claim 3 , where the scheduler reschedules a transmit time after the digital information is rejected.
5. A system, as in claim 3 , where the digital information is accepted for transmission at a second price.
6. A system, as in claim 3 , where the digital information is rescheduled by the scheduler and accepted for transmission at a second price after the information is rejected.
7. A system, as in claim 1 , where the time required to transmit is dependent on any one or more of the following: network speed, time of day, and size of buffer.
8. A system, as in claim 1 , where the digital information is accepted for transmission and is transmitted.
9. A system, as in claim 8 , that receives an acknowledgement of the transmission.
10. A system, as in claim 9 , that produces a bill on receipt of the acknowledgement.
11. A system, as in claim 1 , where one or more portions of the digital information are accepted for transmission and are transmitted.
12. A system, as in claim 11 , that receives an acknowledgement of the transmission of one or more of the portions.
13. A system, as in claim 12 , that produces a bill on receipt of the acknowledgement for one or more of the portions.
14. A system, as in claim 1 , where the digital information is accepted for transmission and is transmitted but a negative acknowledgment is received.
15. A system, as in claim 14 , where a negative acknowledgment is any one or more of the following: a missing data, a damaged data, a partial data.
16. A system, as in claim 1 , where the digital information is accessed at a time after the acceptance process accepts the digital information but before the scheduled transmit time.
17. A method for delivering digital information over a network comprising:
receiving a request for transmitting digital information having a number of packets, the request specifying a plurality of constraints comprising at least a delivery time constraint and a cost of delivery constraint;
determining the time required to transmit the digital information based on the number of packets and a network speed;
scheduling a transmit time for the digital information;
estimating cost of transmission in dependence on the plurality of constraints; and
accepting the digital information for transmission only if the plurality of constraints can be satisfied.
18. A computer system for delivering digital information over a network comprising:
means for receiving a request for transmitting digital information having a number of packets, the request specifying a plurality of constraints comprising at least a delivery time constraint and a cost of delivery constraint;
means for determining the time required to transmit the digital information based on the number of packets and a network speed;
means for scheduling a transmit time for the digital information;
means for estimating cost of transmitting the digital information in accordance with the plurality of constraints; and
means for accepting the digital information for transmission only if the plurality of constraints can be satisfied.
19. A computer program product for delivering digital information over a network having a program comprising the following steps:
receiving a request for transmitting digital information having a number of packets, the request specifying a plurality of constraints comprising at least a delivery time constraint and cost of delivery constraint;
determining the time required to transmit the digital information based on the number of packets and a network speed;
scheduling a transmit time for the digital information;
estimating cost of transmission in accordance with the plurality of constraints; and
accepting the digital information for transmission only if the plurality of constraints can be satisfied.
20. A computer system as in claim 1 , wherein the plurality of constraints further comprises an electronic packaging constraint indicating how the digital information should be electronically packaged.
21. A computer system as in claim 20 , wherein the electronic packaging constraint concerns encryption of the digital information.
22. A computer system as in claim 20 , wherein the electronic packaging constraint concerns generation of forward error correction codes for the digital information.
23. A computer system as in claim 20 , wherein the electronic packaging constraint concerns compression of the digital information.
24. A computer system as in claim 20 , where the acceptance process is further configured to accept the digital information for transmission if transformations required by the electronic packaging constraint can be performed while still satisfying the delivery time constraint.
25. A computer system as in claim 20 , where the acceptance process is further configured to accept the digital information for transmission if transformations required by the electronic packaging constraint can be performed while still satisfying the cost of delivery constraint.
26. A computer system for delivering digital information over a network, the computer system comprising at least one memory, at least one central processing unit, and at least one network connection, the system further comprising:
a request receiving process configured to receive a request for transmitting digital information, the request specifying a plurality of constraints comprising at least a delivery time constraint and a cost of delivery constraint;
a transmit time process configured to determine the time required to transmit the digital information based on the number of packets and a network speed;
a scheduler configured to schedule a transmit time for the digital information;
a plurality of acceptance processes each configured to accept the digital information for transmission only if the plurality of transmission constraints are satisfied and to forward a message indicting that the digital information cannot be accepted if the plurality of transmission constraints cannot be satisfied, each of the plurality of acceptance processes further comprising a transmission cost estimation process configured to estimate the cost of transmitting the digital information in accordance with the plurality of constraints; and
a broker process configured to receive a message from at least one of the plurality of acceptance processes indicating that the at least one of the plurality of acceptance processes cannot transmit the digital information in accordance with the plurality of transmission constraints, the broker process further configured to forward the digital information to another one of the plurality of acceptance processes upon receipt of the message from the at least one of the plurality of acceptance processes.
27. A computer system for delivering digital information over a network, the computer system having one or more memories, one or more central processing units, and one or more network connections, the system further comprising:
a request receiving process configured to receive a request from a client for transmitting digital information, the request specifying a plurality of transmission constraints comprising at least a delivery time constraint and a cost of delivery constraint, the digital information having a number of packets;
a transmit time process configured to determine the time required to transmit the digital information based on the number of packets and a network speed;
a scheduler configured to schedule a transmit time for the digital information;
an acceptance process configured to accept the digital information for transmission only if the plurality of transmission constraints are satisfied, the acceptance process further comprising a transmission cost estimation process configured to estimate the cost of transmitting the digital information in accordance with the plurality of constraints; and
the request receiving process further comprising a negotiating process for facilitating negotiations between the acceptance process and a client submitting the request, and wherein the acceptance process is configured to negotiate with the client to reach acceptable transmission constraints, the acceptance process accepting the digital information for transmission only if acceptable transmission constraints are negotiated.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/566,749 US20070147360A1 (en) | 2000-08-29 | 2006-12-05 | System and Method for Scheduling Digital Information Transmission and Retransmission on a Network During Time Slots |
US12/145,880 US7996545B2 (en) | 2000-08-29 | 2008-06-25 | System and method for scheduling digital information transmission and retransmission on a network during time slots |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/649,953 US7150017B1 (en) | 2000-08-29 | 2000-08-29 | System and method for scheduling digital information transmission and retransmission on a network during time slots |
US11/566,749 US20070147360A1 (en) | 2000-08-29 | 2006-12-05 | System and Method for Scheduling Digital Information Transmission and Retransmission on a Network During Time Slots |
Related Parent Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/649,953 Continuation US7150017B1 (en) | 2000-08-29 | 2000-08-29 | System and method for scheduling digital information transmission and retransmission on a network during time slots |
US10/869,922 Division US7143462B2 (en) | 2001-07-03 | 2004-06-18 | Oral care implement |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/932,010 Division US7950100B2 (en) | 2002-09-20 | 2007-10-31 | Oral care implement |
US12/145,880 Continuation US7996545B2 (en) | 2000-08-29 | 2008-06-25 | System and method for scheduling digital information transmission and retransmission on a network during time slots |
Publications (1)
Publication Number | Publication Date |
---|---|
US20070147360A1 true US20070147360A1 (en) | 2007-06-28 |
Family
ID=37497441
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/649,953 Expired - Fee Related US7150017B1 (en) | 2000-08-29 | 2000-08-29 | System and method for scheduling digital information transmission and retransmission on a network during time slots |
US11/566,749 Abandoned US20070147360A1 (en) | 2000-08-29 | 2006-12-05 | System and Method for Scheduling Digital Information Transmission and Retransmission on a Network During Time Slots |
US12/145,880 Expired - Fee Related US7996545B2 (en) | 2000-08-29 | 2008-06-25 | System and method for scheduling digital information transmission and retransmission on a network during time slots |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/649,953 Expired - Fee Related US7150017B1 (en) | 2000-08-29 | 2000-08-29 | System and method for scheduling digital information transmission and retransmission on a network during time slots |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/145,880 Expired - Fee Related US7996545B2 (en) | 2000-08-29 | 2008-06-25 | System and method for scheduling digital information transmission and retransmission on a network during time slots |
Country Status (1)
Country | Link |
---|---|
US (3) | US7150017B1 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198385A1 (en) * | 2004-01-30 | 2005-09-08 | Aust Brian S. | System and method for generating a consistent user name-space on networked devices |
US20070291674A1 (en) * | 2006-06-19 | 2007-12-20 | Fang-Chen Cheng | Method for coordinated control of radio resources for multicasting in a distributed wireless system |
US20080005505A1 (en) * | 2006-06-30 | 2008-01-03 | Kabushiki Kaisha Toshiba | Apparatus for providing metadata of broadcast program |
US7523209B1 (en) * | 2002-09-04 | 2009-04-21 | Nvidia Corporation | Protocol and interface for source-synchronous digital link |
WO2009084866A1 (en) * | 2007-12-28 | 2009-07-09 | Lg Electronics Inc. | Method of scheduling broadcast messages for transmitting system information |
US20150365188A1 (en) * | 2014-06-12 | 2015-12-17 | Fujitsu Limited | Wavelength selective device, wavelength selective method, and wavelength selective system |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020156669A1 (en) * | 2000-06-27 | 2002-10-24 | Verhaegh Wilhelmus Franciscus Johannes | Method of determining a schedule, scheduler and system |
JP4974405B2 (en) * | 2000-08-31 | 2012-07-11 | ソニー株式会社 | Server use method, server use reservation management apparatus, and program storage medium |
EP1429559B1 (en) * | 2001-09-18 | 2017-04-12 | Sony Corporation | Transmission apparatus, transmission method, content delivery system, content delivery method, and program |
CA2410114C (en) * | 2001-10-26 | 2011-07-19 | Research In Motion Limited | System and method for remotely controlling mobile communication devices |
US8166562B2 (en) | 2002-05-31 | 2012-04-24 | Peoplechart Corporation | Method and system for protecting information on a computer system |
US7647320B2 (en) * | 2002-01-18 | 2010-01-12 | Peoplechart Corporation | Patient directed system and method for managing medical information |
JP4198921B2 (en) * | 2002-02-28 | 2008-12-17 | 株式会社エヌ・ティ・ティ・ドコモ | Adaptive radio parameter control method, QoS control device, base station, and radio communication system |
US8370420B1 (en) * | 2002-07-11 | 2013-02-05 | Citrix Systems, Inc. | Web-integrated display of locally stored content objects |
US7542471B2 (en) | 2002-10-30 | 2009-06-02 | Citrix Systems, Inc. | Method of determining path maximum transmission unit |
US7630305B2 (en) | 2003-07-29 | 2009-12-08 | Orbital Data Corporation | TCP selective acknowledgements for communicating delivered and missed data packets |
US8233392B2 (en) | 2003-07-29 | 2012-07-31 | Citrix Systems, Inc. | Transaction boundary detection for reduction in timeout penalties |
US7616638B2 (en) | 2003-07-29 | 2009-11-10 | Orbital Data Corporation | Wavefront detection and disambiguation of acknowledgments |
US8270423B2 (en) | 2003-07-29 | 2012-09-18 | Citrix Systems, Inc. | Systems and methods of using packet boundaries for reduction in timeout prevention |
KR100456636B1 (en) * | 2002-11-25 | 2004-11-10 | 한국전자통신연구원 | Architecture of look-up service in jini-based home network supporting ieee 1394 and tcp/ip and method thereof |
US20060059483A1 (en) * | 2002-12-03 | 2006-03-16 | Albertina De Bunje | Pull scheduling of software components in hard real-time systems |
US8437284B2 (en) | 2003-07-29 | 2013-05-07 | Citrix Systems, Inc. | Systems and methods for additional retransmissions of dropped packets |
US8432800B2 (en) | 2003-07-29 | 2013-04-30 | Citrix Systems, Inc. | Systems and methods for stochastic-based quality of service |
US8238241B2 (en) | 2003-07-29 | 2012-08-07 | Citrix Systems, Inc. | Automatic detection and window virtualization for flow control |
US7656799B2 (en) | 2003-07-29 | 2010-02-02 | Citrix Systems, Inc. | Flow control system architecture |
US8113418B2 (en) * | 2004-05-13 | 2012-02-14 | Cisco Technology, Inc. | Virtual readers for scalable RFID infrastructures |
US8249953B2 (en) * | 2004-05-13 | 2012-08-21 | Cisco Technology, Inc. | Methods and apparatus for determining the status of a device |
US8604910B2 (en) | 2004-07-13 | 2013-12-10 | Cisco Technology, Inc. | Using syslog and SNMP for scalable monitoring of networked devices |
US7526566B2 (en) * | 2004-09-10 | 2009-04-28 | Sony Ericsson Mobile Communications Ab | Methods of operating radio communications devices including predefined streaming times and addresses and related devices |
US8024416B2 (en) * | 2004-10-20 | 2011-09-20 | Research In Motion Limited | System and method for bundling information |
JP4967228B2 (en) * | 2004-11-29 | 2012-07-04 | ソニー株式会社 | Content communication system, communication apparatus and method, and program |
US20060177803A1 (en) * | 2005-02-10 | 2006-08-10 | Envision Telephony, Inc. | System and method for training distribution management |
US7953826B2 (en) | 2005-07-14 | 2011-05-31 | Cisco Technology, Inc. | Provisioning and redundancy for RFID middleware servers |
US7345585B2 (en) | 2005-08-01 | 2008-03-18 | Cisco Technology, Inc. | Network based device for providing RFID middleware functionality |
US20070043874A1 (en) * | 2005-08-17 | 2007-02-22 | Virendra Nath | File transfer method and system |
US8698603B2 (en) | 2005-11-15 | 2014-04-15 | Cisco Technology, Inc. | Methods and systems for automatic device provisioning in an RFID network using IP multicast |
US7877752B2 (en) * | 2005-12-14 | 2011-01-25 | Broadcom Corp. | Method and system for efficient audio scheduling for dual-decode digital signal processor (DSP) |
US7694322B2 (en) * | 2005-12-20 | 2010-04-06 | Sony Ericsson Mobile Communications Ab | Efficient streamed content delivery to portable communications device |
US8745676B2 (en) * | 2006-12-19 | 2014-06-03 | General Instrument Corporation | Admitting a data file into a channel |
KR101342363B1 (en) * | 2006-12-20 | 2013-12-16 | 엘지전자 주식회사 | A broadcasting receiver and a controlling method for a broadcasting receiver |
US8606287B2 (en) * | 2007-01-09 | 2013-12-10 | Broadcom Corporation | Method and system for controlling and regulating services and resources in high-performance downlink channels |
US9270944B2 (en) * | 2007-02-14 | 2016-02-23 | Time Warner Cable Enterprises Llc | Methods and apparatus for content delivery notification and management |
US7706266B2 (en) | 2007-03-12 | 2010-04-27 | Citrix Systems, Inc. | Systems and methods of providing proxy-based quality of service |
US7796510B2 (en) | 2007-03-12 | 2010-09-14 | Citrix Systems, Inc. | Systems and methods for providing virtual fair queueing of network traffic |
US7760642B2 (en) | 2007-03-12 | 2010-07-20 | Citrix Systems, Inc. | Systems and methods for providing quality of service precedence in TCP congestion control |
US9071859B2 (en) | 2007-09-26 | 2015-06-30 | Time Warner Cable Enterprises Llc | Methods and apparatus for user-based targeted content delivery |
US8099757B2 (en) | 2007-10-15 | 2012-01-17 | Time Warner Cable Inc. | Methods and apparatus for revenue-optimized delivery of content in a network |
US8037499B2 (en) * | 2007-12-27 | 2011-10-11 | At&T Intellectual Property I, L.P. | Systems, methods, and computer products for recording of repeated programs |
JP4495254B2 (en) * | 2008-08-05 | 2010-06-30 | パナソニック株式会社 | COMMUNICATION DEVICE, COMMUNICATION METHOD, PROGRAM, AND INTEGRATED CIRCUIT |
WO2010042578A1 (en) | 2008-10-08 | 2010-04-15 | Citrix Systems, Inc. | Systems and methods for real-time endpoint application flow control with network structure component |
WO2010082523A1 (en) * | 2009-01-13 | 2010-07-22 | 日本電気株式会社 | Content distribution administration device, method of administration of content distribution, and program for administration of content distribution |
CN101854588B (en) * | 2009-04-01 | 2013-11-06 | 中兴通讯股份有限公司 | Data retransmission method and device in enhanced multimedia broadcast and multicast service |
US8560635B1 (en) * | 2011-03-30 | 2013-10-15 | Google Inc. | User experience of content rendering with time budgets |
WO2013044999A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Mobile Communications GmbH | Communication terminal, network component, base station and method for communicating |
US9854280B2 (en) | 2012-07-10 | 2017-12-26 | Time Warner Cable Enterprises Llc | Apparatus and methods for selective enforcement of secondary content viewing |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
US10911794B2 (en) | 2016-11-09 | 2021-02-02 | Charter Communications Operating, Llc | Apparatus and methods for selective secondary content insertion in a digital network |
US11770441B2 (en) | 2019-06-07 | 2023-09-26 | Qualcomm Incorporated | File delivery failure feedback and application feedback |
Citations (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4642758A (en) * | 1984-07-16 | 1987-02-10 | At&T Bell Laboratories | File transfer scheduling arrangement |
US5287194A (en) * | 1992-11-25 | 1994-02-15 | Xerox Corporation | Distributed printing |
US5412031A (en) * | 1993-05-25 | 1995-05-02 | Minnesota Mining & Manufacturing Company | Multi-arm block copolymers, and pressure sensitive adhesive and tape employing a multi-arm elastomeric block copolymer |
US5515379A (en) * | 1993-10-18 | 1996-05-07 | Motorola, Inc. | Time slot allocation method |
US5574934A (en) * | 1993-11-24 | 1996-11-12 | Intel Corporation | Preemptive priority-based transmission of signals using virtual channels |
US5581369A (en) * | 1992-09-25 | 1996-12-03 | Ralin, Inc. | Apparatus and method for communicating electrocardiographic data to a facsimile machine |
US5623606A (en) * | 1991-10-31 | 1997-04-22 | Hitachi, Ltd. | Communication control method and apparatus for performing high speed transfer of data by controlling transfer starting times |
US5640504A (en) * | 1994-01-24 | 1997-06-17 | Advanced Computer Applications, Inc. | Distributed computing network |
US5729540A (en) * | 1995-10-19 | 1998-03-17 | Qualcomm Incorporated | System and method for scheduling messages on a common channel |
US5737009A (en) * | 1996-04-04 | 1998-04-07 | Hughes Electronics | On-demand digital information delivery system and method using signal fragmentation and linear/fractal sequencing. |
US5745694A (en) * | 1994-08-30 | 1998-04-28 | Nec Corporation | Network resource reservation with admission and link control functions separated for expandability and high-speed operation |
US5790198A (en) * | 1990-09-10 | 1998-08-04 | Starsight Telecast, Inc. | Television schedule information transmission and utilization system and process |
US5819094A (en) * | 1996-03-26 | 1998-10-06 | Fujitsu Ltd. | Apparatus for log data collection and analysis |
US5875175A (en) * | 1997-05-01 | 1999-02-23 | 3Com Corporation | Method and apparatus for time-based download control |
US5890134A (en) * | 1996-02-16 | 1999-03-30 | Mcdonnell Douglas Corporation | Scheduling optimizer |
US5903724A (en) * | 1995-09-08 | 1999-05-11 | Hitachi, Ltd. | Method of transferring packet data in a network by transmitting divided data packets |
US5907556A (en) * | 1996-05-30 | 1999-05-25 | Fuji Xerox Co., Ltd. | Data transmission system having feature for predicting time completion based on changing of states of use of bandwidth and time required for retransmission |
US5920701A (en) * | 1995-01-19 | 1999-07-06 | Starburst Communications Corporation | Scheduling data transmission |
US6014651A (en) * | 1993-11-04 | 2000-01-11 | Crawford; Christopher M. | Commercial online software distribution systems and methods using encryption for security |
US6072982A (en) * | 1994-08-02 | 2000-06-06 | Haddad; Joseph C. | Interactive audiovisual distribution system |
US6088363A (en) * | 1996-12-04 | 2000-07-11 | Kabushiki Kaisha Toshiba | Network system transmission control method |
US6122280A (en) * | 1995-08-11 | 2000-09-19 | Matsushita Electric Industrial Co. Ltd. | Packet output device and packet output method |
US6134596A (en) * | 1997-09-18 | 2000-10-17 | Microsoft Corporation | Continuous media file server system and method for scheduling network resources to play multiple files having different data transmission rates |
US6240460B1 (en) * | 1996-02-02 | 2001-05-29 | Fuji Xerox, Ltd. | Method and system for data transmission accordance with the form of the data transmission based on control information exchanged between applications of a data transmitter and a data receiver before data transmission is started |
US6243755B1 (en) * | 1995-03-07 | 2001-06-05 | Kabushiki Kaisha Toshiba | Information processing system using information caching based on user activity |
US6330603B1 (en) * | 1997-02-26 | 2001-12-11 | Kabushiki Kaisha Toshiba | Communication apparatus, communication method, and record medium |
US6353844B1 (en) * | 1996-12-23 | 2002-03-05 | Silicon Graphics, Inc. | Guaranteeing completion times for batch jobs without static partitioning |
US6374405B1 (en) * | 1999-02-17 | 2002-04-16 | Opentv, Corp. | Module scheduling with a time interval and ending time |
US6374336B1 (en) * | 1997-12-24 | 2002-04-16 | Avid Technology, Inc. | Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner |
US6373929B1 (en) * | 1995-11-06 | 2002-04-16 | Summit Telecom, Inc. | Bidding for telecommunications traffic |
US6453316B1 (en) * | 1995-10-26 | 2002-09-17 | Matsushita Electric Industrial Co., Ltd. | Scheduling unit for scheduling service requests to cyclically provide services |
US6502062B1 (en) * | 1999-06-21 | 2002-12-31 | Lucent Technologies Inc. | System and method for scheduling data delivery using flow and stretch algorithms |
US6519693B1 (en) * | 1989-08-23 | 2003-02-11 | Delta Beta, Pty, Ltd. | Method and system of program transmission optimization using a redundant transmission sequence |
US6543053B1 (en) * | 1996-11-27 | 2003-04-01 | University Of Hong Kong | Interactive video-on-demand system |
US6564382B2 (en) * | 2000-08-16 | 2003-05-13 | Koninklijke Philips Electronics N.V. | Method for playing multimedia applications |
US6615262B2 (en) * | 1999-06-28 | 2003-09-02 | Xacct Technologies, Ltd. | Statistical gathering framework for extracting information from a network multi-layer stack |
US6628777B1 (en) * | 1999-11-16 | 2003-09-30 | Knowlagent, Inc. | Method and system for scheduled delivery of training to call center agents |
US6701372B2 (en) * | 1997-08-22 | 2004-03-02 | Canon Kabushiki Kaisha | Data communication apparatus and method |
US6701299B2 (en) * | 2001-03-16 | 2004-03-02 | United Parcel Service Of America, Inc. | Real-time delivery feasibility analysis systems and methods |
US6738972B1 (en) * | 1999-12-30 | 2004-05-18 | Opentv, Inc. | Method for flow scheduling |
US6959327B1 (en) * | 2000-08-29 | 2005-10-25 | International Business Machines Corporation | System and method for dispatching and scheduling network transmissions with feedback |
US6986156B1 (en) * | 1999-06-11 | 2006-01-10 | Scientific Atlanta, Inc | Systems and methods for adaptive scheduling and dynamic bandwidth resource allocation management in a digital broadband delivery system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1893955A (en) * | 1931-04-27 | 1933-01-10 | American Optical Corp | Surfacing machine |
US2579193A (en) * | 1949-07-22 | 1951-12-18 | Bausch & Lomb | Mist trapping shield for lens surfacing machines |
US4521994A (en) * | 1983-07-20 | 1985-06-11 | Coburn Optical Industries | Polisher-finer apparatus |
US5701582A (en) | 1989-08-23 | 1997-12-23 | Delta Beta Pty. Ltd. | Method and apparatus for efficient transmissions of programs |
US6080044A (en) * | 1998-03-26 | 2000-06-27 | Gerber Coburn Optical, Inc. | Fining/polishing machine |
US6529950B1 (en) * | 1999-06-17 | 2003-03-04 | International Business Machines Corporation | Policy-based multivariate application-level QoS negotiation for multimedia services |
-
2000
- 2000-08-29 US US09/649,953 patent/US7150017B1/en not_active Expired - Fee Related
-
2006
- 2006-12-05 US US11/566,749 patent/US20070147360A1/en not_active Abandoned
-
2008
- 2008-06-25 US US12/145,880 patent/US7996545B2/en not_active Expired - Fee Related
Patent Citations (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4642758A (en) * | 1984-07-16 | 1987-02-10 | At&T Bell Laboratories | File transfer scheduling arrangement |
US6519693B1 (en) * | 1989-08-23 | 2003-02-11 | Delta Beta, Pty, Ltd. | Method and system of program transmission optimization using a redundant transmission sequence |
US5790198A (en) * | 1990-09-10 | 1998-08-04 | Starsight Telecast, Inc. | Television schedule information transmission and utilization system and process |
US5623606A (en) * | 1991-10-31 | 1997-04-22 | Hitachi, Ltd. | Communication control method and apparatus for performing high speed transfer of data by controlling transfer starting times |
US5581369A (en) * | 1992-09-25 | 1996-12-03 | Ralin, Inc. | Apparatus and method for communicating electrocardiographic data to a facsimile machine |
US5287194A (en) * | 1992-11-25 | 1994-02-15 | Xerox Corporation | Distributed printing |
US5412031A (en) * | 1993-05-25 | 1995-05-02 | Minnesota Mining & Manufacturing Company | Multi-arm block copolymers, and pressure sensitive adhesive and tape employing a multi-arm elastomeric block copolymer |
US5515379A (en) * | 1993-10-18 | 1996-05-07 | Motorola, Inc. | Time slot allocation method |
US6014651A (en) * | 1993-11-04 | 2000-01-11 | Crawford; Christopher M. | Commercial online software distribution systems and methods using encryption for security |
US5574934A (en) * | 1993-11-24 | 1996-11-12 | Intel Corporation | Preemptive priority-based transmission of signals using virtual channels |
US5640504A (en) * | 1994-01-24 | 1997-06-17 | Advanced Computer Applications, Inc. | Distributed computing network |
US6072982A (en) * | 1994-08-02 | 2000-06-06 | Haddad; Joseph C. | Interactive audiovisual distribution system |
US5745694A (en) * | 1994-08-30 | 1998-04-28 | Nec Corporation | Network resource reservation with admission and link control functions separated for expandability and high-speed operation |
US5920701A (en) * | 1995-01-19 | 1999-07-06 | Starburst Communications Corporation | Scheduling data transmission |
US6243755B1 (en) * | 1995-03-07 | 2001-06-05 | Kabushiki Kaisha Toshiba | Information processing system using information caching based on user activity |
US6122280A (en) * | 1995-08-11 | 2000-09-19 | Matsushita Electric Industrial Co. Ltd. | Packet output device and packet output method |
US5903724A (en) * | 1995-09-08 | 1999-05-11 | Hitachi, Ltd. | Method of transferring packet data in a network by transmitting divided data packets |
US5729540A (en) * | 1995-10-19 | 1998-03-17 | Qualcomm Incorporated | System and method for scheduling messages on a common channel |
US6453316B1 (en) * | 1995-10-26 | 2002-09-17 | Matsushita Electric Industrial Co., Ltd. | Scheduling unit for scheduling service requests to cyclically provide services |
US6373929B1 (en) * | 1995-11-06 | 2002-04-16 | Summit Telecom, Inc. | Bidding for telecommunications traffic |
US6240460B1 (en) * | 1996-02-02 | 2001-05-29 | Fuji Xerox, Ltd. | Method and system for data transmission accordance with the form of the data transmission based on control information exchanged between applications of a data transmitter and a data receiver before data transmission is started |
US5890134A (en) * | 1996-02-16 | 1999-03-30 | Mcdonnell Douglas Corporation | Scheduling optimizer |
US5819094A (en) * | 1996-03-26 | 1998-10-06 | Fujitsu Ltd. | Apparatus for log data collection and analysis |
US5737009A (en) * | 1996-04-04 | 1998-04-07 | Hughes Electronics | On-demand digital information delivery system and method using signal fragmentation and linear/fractal sequencing. |
US5907556A (en) * | 1996-05-30 | 1999-05-25 | Fuji Xerox Co., Ltd. | Data transmission system having feature for predicting time completion based on changing of states of use of bandwidth and time required for retransmission |
US6543053B1 (en) * | 1996-11-27 | 2003-04-01 | University Of Hong Kong | Interactive video-on-demand system |
US6088363A (en) * | 1996-12-04 | 2000-07-11 | Kabushiki Kaisha Toshiba | Network system transmission control method |
US6353844B1 (en) * | 1996-12-23 | 2002-03-05 | Silicon Graphics, Inc. | Guaranteeing completion times for batch jobs without static partitioning |
US6330603B1 (en) * | 1997-02-26 | 2001-12-11 | Kabushiki Kaisha Toshiba | Communication apparatus, communication method, and record medium |
US5875175A (en) * | 1997-05-01 | 1999-02-23 | 3Com Corporation | Method and apparatus for time-based download control |
US6701372B2 (en) * | 1997-08-22 | 2004-03-02 | Canon Kabushiki Kaisha | Data communication apparatus and method |
US6134596A (en) * | 1997-09-18 | 2000-10-17 | Microsoft Corporation | Continuous media file server system and method for scheduling network resources to play multiple files having different data transmission rates |
US6374336B1 (en) * | 1997-12-24 | 2002-04-16 | Avid Technology, Inc. | Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner |
US6374405B1 (en) * | 1999-02-17 | 2002-04-16 | Opentv, Corp. | Module scheduling with a time interval and ending time |
US6986156B1 (en) * | 1999-06-11 | 2006-01-10 | Scientific Atlanta, Inc | Systems and methods for adaptive scheduling and dynamic bandwidth resource allocation management in a digital broadband delivery system |
US6502062B1 (en) * | 1999-06-21 | 2002-12-31 | Lucent Technologies Inc. | System and method for scheduling data delivery using flow and stretch algorithms |
US6615262B2 (en) * | 1999-06-28 | 2003-09-02 | Xacct Technologies, Ltd. | Statistical gathering framework for extracting information from a network multi-layer stack |
US6628777B1 (en) * | 1999-11-16 | 2003-09-30 | Knowlagent, Inc. | Method and system for scheduled delivery of training to call center agents |
US6738972B1 (en) * | 1999-12-30 | 2004-05-18 | Opentv, Inc. | Method for flow scheduling |
US6564382B2 (en) * | 2000-08-16 | 2003-05-13 | Koninklijke Philips Electronics N.V. | Method for playing multimedia applications |
US6959327B1 (en) * | 2000-08-29 | 2005-10-25 | International Business Machines Corporation | System and method for dispatching and scheduling network transmissions with feedback |
US6701299B2 (en) * | 2001-03-16 | 2004-03-02 | United Parcel Service Of America, Inc. | Real-time delivery feasibility analysis systems and methods |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7523209B1 (en) * | 2002-09-04 | 2009-04-21 | Nvidia Corporation | Protocol and interface for source-synchronous digital link |
US8041841B1 (en) | 2002-09-04 | 2011-10-18 | Nvidia Corporation | Protocol and interface for source-synchronous digital link |
US8108483B2 (en) * | 2004-01-30 | 2012-01-31 | Microsoft Corporation | System and method for generating a consistent user namespace on networked devices |
US20050198385A1 (en) * | 2004-01-30 | 2005-09-08 | Aust Brian S. | System and method for generating a consistent user name-space on networked devices |
US7664467B2 (en) * | 2006-06-19 | 2010-02-16 | Alcatel-Lucent Usa Inc. | Method for coordinated control of radio resources for multicasting in a distributed wireless system |
US20070291674A1 (en) * | 2006-06-19 | 2007-12-20 | Fang-Chen Cheng | Method for coordinated control of radio resources for multicasting in a distributed wireless system |
US20080005505A1 (en) * | 2006-06-30 | 2008-01-03 | Kabushiki Kaisha Toshiba | Apparatus for providing metadata of broadcast program |
US8707358B2 (en) * | 2006-06-30 | 2014-04-22 | Kabushiki Kaisha Toshiba | Apparatus for providing metadata of broadcast program |
WO2009084866A1 (en) * | 2007-12-28 | 2009-07-09 | Lg Electronics Inc. | Method of scheduling broadcast messages for transmitting system information |
US20090175247A1 (en) * | 2007-12-28 | 2009-07-09 | Lg Electronics Inc. | Method of scheduling broadcast messages for transmitting system information |
CN101911538A (en) * | 2007-12-28 | 2010-12-08 | Lg电子株式会社 | Method of scheduling broadcast messages for transmitting system information |
US8144655B2 (en) | 2007-12-28 | 2012-03-27 | Lg Electronics Inc. | Method of scheduling broadcast messages for transmitting system information |
US20150365188A1 (en) * | 2014-06-12 | 2015-12-17 | Fujitsu Limited | Wavelength selective device, wavelength selective method, and wavelength selective system |
US9954637B2 (en) * | 2014-06-12 | 2018-04-24 | Fujitsu Limited | Wavelength selective device, wavelength selective method, and wavelength selective system |
Also Published As
Publication number | Publication date |
---|---|
US7150017B1 (en) | 2006-12-12 |
US20090010177A1 (en) | 2009-01-08 |
US7996545B2 (en) | 2011-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7996545B2 (en) | System and method for scheduling digital information transmission and retransmission on a network during time slots | |
US6959327B1 (en) | System and method for dispatching and scheduling network transmissions with feedback | |
US8090841B2 (en) | Method of doing business over a network by transmission and retransmission of digital information on a network during time slots | |
EP1123605B1 (en) | Service control in a telecommunications network | |
US20050086306A1 (en) | Providing background delivery of messages over a network | |
US5613155A (en) | Bundling client write requests in a server | |
US7984156B2 (en) | Data center scheduler | |
CN100365613C (en) | Apparatus and methods for delayed network information transfer | |
JPH09152977A (en) | Dynamic hierarchical resource scheduling for continuous medium | |
US7222193B2 (en) | Computer network payment system | |
US20080244117A1 (en) | Method and system for data metering | |
US20010025308A1 (en) | Data transmission management apparatus and data transmission system, and methods thereof | |
US20020198850A1 (en) | System and method for dynamic price determination in differentiated services computer networks | |
US7277448B1 (en) | Hierarchical scheduler inter-layer eligibility deferral | |
US7782870B1 (en) | Method and apparatus for consolidating available computing resources on different computing devices | |
US20070053286A1 (en) | Router congestion management | |
US7349406B1 (en) | Method and apparatus for virtual network connection merging | |
Tlili et al. | On providing deadline-aware cloud storage services | |
Rottmann et al. | A simple distributed scheduling policy for parallel interactive continuous media servers | |
KR100942052B1 (en) | System and method for providing scheduling management of mail receipt | |
Varian et al. | Some FAQs about usage-based pricing | |
JP2002009813A (en) | Electronic mail distribution system and its method | |
JP2006134076A (en) | File transfer system, file transfer method and program | |
Pung et al. | A CORBA Based QOS Support for Distributed Multimedia Applications | |
Schill et al. | QoS Support for Advanced RPC Interactions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |