A method of classifying, scheduling, prioritizing, and optimizing data to provide a final data packet ready for transmission by the modem to the head end. Additionally, a feedback loop is provided to improve scheduling, prioritizing and optimizing data by providing real-time bandwidth availability related information and maximum packet size to be sent over the physical layer.
|
1. A method comprising:
receiving, at a hardware device, application data for transmission by one or more application programs;
classifying the received application data, at the hardware device, based on a set of parameters comprising at least one of a port number, an ip address, and an application signature;
determining, at the hardware device, whether the application data corresponds to tunneled traffic or non-tunneled traffic based on the classification;
processing the application data along one of two processing paths depending on whether the application data corresponds to tunneled traffic or non-tunneled traffic;
in at least one of said processing paths, prioritizing the application data in accordance with a set of predefined rules, wherein according to the prioritizing call set-up matters are given super priority over VoIP data, and VoIP data is given priority over data transfer applications;
optimizing the application data in real time, wherein the optimizing performed depends on whether the application data corresponds to tunneled traffic or non-tunneled traffic;
compressing the application data, wherein the compressing performed depends on whether the application data corresponds to tunneled traffic or non-tunneled traffic;
accelerating the application data, wherein the accelerating performed depends on whether the application data corresponds to tunneled traffic or non-tunneled traffic;
fragmenting and packing the application data;
transmitting the application data over a transmission channel to a head end;
receiving feedback from the head end concerning a current amount of available bandwidth;
determining a current bandwidth requirement for at least one application program; and
dynamically varying the bandwidth allocated to the at least one application program based on the determined current bandwidth requirement for at least one application program and based on the available bandwidth feedback received from the head end.
7. An apparatus comprising:
a processor;
a memory storage device configured to store instructions that when executed by the processor, cause the apparatus to:
receive application data for transmission by one or more application programs;
classify the received application data based on a set of parameters comprising at least one of a port number, an ip address, and an application signature;
determine whether the application data corresponds to tunneled traffic or non-tunneled traffic based on the classification;
process the application data along one of two processing paths depending on whether the application data corresponds to tunneled traffic or non-tunneled traffic;
in at least one of said processing paths, prioritize the application data in accordance with a set of predefined rules, wherein according to the prioritizing call set-up matters are given super priority over VoIP data, and VoIP data is given priority over data transfer applications;
optimize the application data in real time, wherein the optimizing performed depends on whether the application data corresponds to tunneled traffic or non-tunneled traffic;
compress the application data, wherein the compressing performed depends on whether the application data corresponds to tunneled traffic or non-tunneled traffic;
accelerate the application data, wherein the accelerating performed depends on whether the application data corresponds to tunneled traffic or non-tunneled traffic;
fragment and pack the application data;
transmit the application data over a transmission channel to a head end;
receive feedback from the head end concerning a current amount of available bandwidth;
determine a current bandwidth requirement for at least one application program; and
dynamically vary the bandwidth allocated to the at least one application program based on the determined current bandwidth requirement for at least one application program and based on the available bandwidth feedback received from the head end.
2. The method of
receiving available bandwidth information; and
scheduling application data for transmission in accordance with the received available bandwidth information.
3. The method of
receiving packet size information; and
packing the application data in accordance with the received packet size information.
4. The method of
5. The method of
6. The method of
dynamically varying a compression of a VoIP application based on the available bandwidth and increasing or decreasing the compression and the associated voice quality based on feedback from the head end concerning available bandwidth.
8. The apparatus of
receiving available bandwidth information; and
scheduling application data for transmission in accordance with the received available bandwidth information.
9. The apparatus of
receiving packet size information; and
packing the application data in accordance with the received packet size information.
10. The apparatus of
11. The apparatus of
12. The apparatus of
dynamically varying a compression of a VoIP application based on the available bandwidth and increasing or decreasing the compression and the associated voice quality based on feedback from the head end concerning available bandwidth.
|
This non-provisional application claims the benefit of the following provisional application: U.S. Patent Application Ser. No. 61/051,370, filed May 8, 2008, which is also incorporated herein by reference.
The invention relates to the field of data transmission, and in particular to a method of prioritizing user applications to optimize and accelerate Internet traffic.
Over the last couple of decades, the Internet has grown to be an increasingly important part of our society. It is not uncommon that a typical user accesses the Internet at work or at school, for example, to send emails or pictures to friends or to conduct business meetings in a web-based conference room. At home, the user may download music, surf websites, watch videos on YouTube, check email, or make phone calls using Voice over Internet Protocol (VoIP). As the selection of applications supported by the Internet grows to meet the needs of users, many users are now utilizing multiple Internet applications on a daily basis. This increase in Internet usage inevitably requires more bandwidth to support the additional traffic on the network. The need to effectively distribute bandwidth is compounded by an increase in users who are multi-tasking on the Internet, and in particular, running real-time applications that require more bandwidth than non-time-sensitive applications.
Attempting to manage traffic by increasing bandwidth or by accelerating all data for all applications without taking user preferences and priorities into account is inefficient and not cost effective. The cost associated with improving performance in such a fashion is substantial as newer technology available over the Internet requires new and expensive hardware, large-scale programming, and other additional costs to the user. Additionally, current schemes waste bandwidth on applications that can tolerate slower transfer rates, and potentially, do not allocate enough bandwidth to applications that the user would highly prioritize and/or applications where time is of the essence. For example, VoIP likely requires a large amount of bandwidth to ensure seamless real-time communication where one user can talk to another user without annoying delays, choppiness, or other undesirable consequences of Internet lag. Conversely, downloading a song for later playback or browsing the Internet for current news updates is not as time sensitive, and thus, a user would be more likely to tolerate small delays as compared to the VoIP application. In both cases, the user is broadcasting to the modem compressed sound data. However, conventionally, the modem has not distinguished between these sound files. Ideally, a system making a phone call over VoIP and downloading music concurrently would prioritize un-interruption of the phone call over saving a few minutes in music download time. Users are likely to tolerate slower transfer rates for non-priority applications if sufficient transfer rates for priority applications are provided along with the additional benefit of cost savings.
Aspects of the present invention include a cost effective system that can more efficiently allocate bandwidth based on priorities while allowing users to fully enjoy high priority applications while tolerating small delays on non-priority applications.
In some embodiments, a device may be configured to execute an algorithm to prioritize and shape data prior to transmission. The device may itself be variously configured, and the algorithm may also be variously configured. The device may be any device that sees the data prior to the data being sent to a network modem. Alternatively, the device may be inside the network modem. For example, it may be a PC serving a single user, an external hardware device distributed between the associated computer and the modem, or the device may be embedded into the modem itself. The algorithm may also be in either software which is installed on a single user PC or a server serving multiple users or even installed inside the modem itself. In one example, the algorithm may be stored as computer-executable instructions within storage media such as random access memory (RAM), read-only memory (ROM), a compact disc (CD), and the like. The algorithm executed by the device processes and shapes the data for transmission by the modem to the head end. In a one embodiment, the device receives the data from the computer and prioritizes the data in accordance with a set of dynamically variable or predefined criteria such that the more time-sensitive applications are given higher priority over applications that are not as time-sensitive. Where the necessary bandwidth for reliable priority application (e.g., VoIP) communication is not available, the modem may request from the headend that additional bandwidth be allocated to the modem to support the high priority application. Additionally, applications with the same data pattern may be grouped together. Based upon the prioritization, data is scheduled, and further optimized for delivery by selectively accelerating and compressing the data. The traffic may also be optimized by packing and fragmentation before the final data packet is transmitted to the modem for delivery. The method may also receives from time to time updated data from the modem regarding the current available bandwidth for transmission and act accordingly whether it will be to lower data rate of non essential applications or request additional bandwidth for transmission.
In general, when the solution is inside a VSAT or PC or any other hardware device it may well be implemented as a software component and not necessarily a hardware components.
Referring to
Additionally, the plurality of computing devices may communicate with each other through the communication network 120. For example, in peer-to-peer VoIP applications, the individual terminal devices 101-103 may communicate directly with each other by virtue of the communication network 120 either looped back through the head end transmission facility 150 or directly through the network where the network supports direct connections. Additionally, the terminal device may have multiple sessions where some communicate with other terminal devices through the head-end transmission facility 150 which may include a gateway providing access to the public switched telephone network and other communicate in a peer-to-peer network.
Referring to
The hardware device 204 may be configured to prioritize the requests, optimize the data to be sent and pass the data through transmission devices 203 and 214 to the modem 111 for transmission to the head end transmission facility 150 through devices 215 and 222. The head end transmission facility 150 may send information back to the modem 111 via transmission devices 222, 215. The modem 111 may send information back to the computing device 101, including the hardware device 204, via transmission devices 203, 214. In one alternative, hardware device 204 may instead be implemented as software stored on a storage device such as physical memory (e.g., RAM, ROM, CD, hard-drive, etc.)
Referring to
Referring to
In a preferred embodiment, the client may be running three Internet applications concurrently. For example, the three applications include a VoIP application, a music downloading application, and an email application. All three applications require the Internet and, as such, the data requesting bandwidth for data transfer is passed along from the personal computer 101 to the hardware device 204 at block 401. At block 403, the hardware device 204 prioritizes, based on predefined criteria, the three applications and determines that the VoIP application is a high priority application and the other two applications are medium or low priority. Based on this prioritization, the data for the three applications are optimally compressed and accelerated at block 405. The data is then sent in their respective reserved bandwidth slots at block 409. As the VoIP application completes the call and is in a waiting state or any other state where the bandwidth requirements are lower than when a call is active, the priority level drops and bandwidth is dynamically re-distributed among the other running applications. For example, where the call is on-hold and/or experiencing periods of silence, the bandwidth may be dynamically deallocated even though the call is still active. Such information, for example, may take advantage of the feedback loop 413 and keep the system efficient. Should another call on the VoIP application be initiated or otherwise active, the bandwidth would again be re-distributed to reflect the priority of the additional VoIP call. The feedback loop 413 can also function, for example, as a way for the hardware device 204 to receive real-time bandwidth availability information. Described exemplary methods may also be configured to fit data transfers from the head end to the remote stations and is applicable to other systems such as paying for gas at the gas pump, and further applicable to other scenarios not described.
Referring to
Referring to
In a preferred embodiment, VoIP is concurrently active with other applications such as webpage browser and/or transferring over a home or office network. This data passed to a data packet identifier and is classified based on application signature or other criteria. Next, the traffic type of the data is determined. For example, VoIP data and webpage browser data may be internet traffic and file transferring over a home or office network may be considered tunneled traffic. The data is then passed to the path which it corresponds. For example, VoIP data and webpage data is passed along the internet traffic path and the file being transferred over the intranet is passed along to the tunneled traffic path. Next, the data is scheduled and prioritized based on application priority and other factors, such as user priority or may be scheduled and prioritized based on a combination of factors according to the criteria. VoIP may be given priority and given access to a higher percentage of bandwidth over the other traffic. The FTP or webpage data may be highly compressed and accelerated while allocated a lower amount of bandwidth. Such a tradeoff is acceptable as the webpage access or the FTP transfer is not as time-sensitive as compared to the VoIP application. Prioritizing of bandwidth is not limited to the user allocated bandwidth but is applicable across the entire system such that if there is available network space or bandwidth on the system, it may be allocated to the most time-sensitive application. Following data optimization, traffic optimization may occur. Here, the processed data is fragmented and packed forming the final data packet which is sent to the modem for transmission.
In a preferred embodiment, the application running inside the modem or hardware device has selective acceleration. In a situation where two or more applications are running simultaneously on the user's machine, the classification and scheduling of the data corresponding to the different types of applications may be based off of pre-defined or dynamic criteria. In addition subsequent data and traffic optimization includes optimizing the bandwidth in accordance with the various applications. For example, where the user is utilizing an application to browse a webpage and an application to perform VoIP or another real-time application, the application with the real-time VoIP is prioritized and accelerated over the application that is accessing the webpage. Additionally, the modem may be able to switch the processor bandwidth over to the Transmission Control Protocol (TCP) acceleration as the real-time application is terminated. Also, even within a single application such as a web-browser, the Quality of Service (QoS) client and the hardware device, for example inside a modem or a computing device, may be configured to determine what types of data are currently being accessed based on, for example, the IP address being accessed. For example, accessing a VoIP gateway, and the address associated with the VoIP gateway would be given priority over an IP address of a search application, such as a search engine. This concept is not limited to VoIP gateways and can extend to unlimited number of applications. In a situation where the user is purchasing gas at a gas pump, the transactions associated with the credit card initiation and verification would be given priority over other applications such as FTP transfers or web browsing applications. In a preferred embodiment, priority or super priority is given to call-set-up matters such as Session Initiation Protocol (SIP) or H.323 protocol. In this manner, the call-set-up has super priority over traffic such as simple web page access and even VoIP data. The client may automatically be allocated additional bandwidth on demand based on the particular application the client is running at the time such as sending/receiving SIP configuration information and/or communicating control information with a H.323 gateway. For example in a VoIP session, as the user initiates the session, he is granted real-time high priority bandwidth to make, progress, and complete the call. In another example, where the user is watching video off the Internet, the user's downstream bandwidth is increased so that the video can appear on the user's screen uninterrupted in real-time. Thus, the overall perceived bandwidth that the user has and the user experience with the satellite-delivered Internet access and VoIP is enhanced.
In another embodiment, multiple high-priority, bandwidth intensive applications are concurrently active. For example, a client is running a VoIP application to make a phone call while streaming real-time video off the Internet. Here, the bandwidth required to ensure both a smooth uninterrupted phone call and a real-time video playback is substantial and it would be advantageous if the client could request additional bandwidth on demand to enjoy active applications without a sacrificing performance.
Accordingly, a device may advantageously be configured to utilize a less-expensive processor and still provide uninterrupted real-time voice or video. For example, by improving the intelligence of the acceleration client to make decisions about which data and applications to accelerate, the overall costs for the system are substantially reduced while the user's experience with the system is substantially uninhibited.
While the invention has been described with respect to specific examples including presently preferred modes of carrying out the invention, those skilled in the art will appreciate that there are numerous variations and permutations of the above described systems and techniques that fall within the spirit and scope of the invention as set forth in the appended claims.
Patent | Priority | Assignee | Title |
10075876, | May 07 2012 | Intel Corporation | Method and apparatus for host-controlled packet data suppression |
10110655, | Jun 14 2011 | Samsung Electronics Co., Ltd. | Method and apparatus for transmitting/receiving media contents in multimedia system |
10447754, | Jun 14 2011 | Samsung Electronics Co., Ltd. | Method and apparatus for transmitting/receiving media contents in multimedia system |
10542065, | Jun 14 2011 | Samsung Electronics Co., Ltd. | Method and apparatus for transmitting/receiving media contents in multimedia system |
10567257, | Jan 10 2014 | International Business Machines Corporation | Bandwidth-sensitive content sharing system |
10693793, | Sep 12 2018 | International Business Machines Corporation | Mitigating network saturation following periods of device disconnection and subsequent reconnection |
9973407, | Jan 10 2014 | International Business Machines Corporation | Bandwidth-sensitive content sharing system |
Patent | Priority | Assignee | Title |
6901048, | Aug 20 1999 | RPX CLEARINGHOUSE LLC | Link-level protection of traffic in a packet-switched network |
7324447, | Sep 30 2002 | CA, INC | Methods, apparatuses and systems facilitating concurrent classification and control of tunneled and non-tunneled network traffic |
7620055, | Aug 31 2001 | Cisco Technology, Inc. | Method and apparatus for mapping an MPLS tag to a data packet in a headend |
7778176, | Jan 14 2008 | CA, INC | Methods, apparatuses and systems facilitating concurrent classification and control of tunneled and non-tunneled network traffic |
7969996, | Mar 04 2005 | NEC Corporation | Tunneling apparatus and tunnel frame sorting method and its program for use therein |
20010055319, | |||
20040081197, | |||
20040202467, | |||
20050201414, | |||
20060120369, | |||
20060268905, | |||
20070070986, | |||
20070242675, | |||
20080031141, | |||
20090059785, | |||
20090080418, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
May 05 2009 | Gilat Satellite Networks Ltd. | (assignment on the face of the patent) | / | |||
May 07 2009 | CARASSO, MOSHE | GILAT SATELLITE NETWORKS LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 022749 | /0053 | |
May 24 2009 | BEN-HAIM, RAZ | GILAT SATELLITE NETWORKS LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 022749 | /0053 |
Date | Maintenance Fee Events |
Jul 29 2016 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 21 2020 | REM: Maintenance Fee Reminder Mailed. |
Mar 08 2021 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Jan 29 2016 | 4 years fee payment window open |
Jul 29 2016 | 6 months grace period start (w surcharge) |
Jan 29 2017 | patent expiry (for year 4) |
Jan 29 2019 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jan 29 2020 | 8 years fee payment window open |
Jul 29 2020 | 6 months grace period start (w surcharge) |
Jan 29 2021 | patent expiry (for year 8) |
Jan 29 2023 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jan 29 2024 | 12 years fee payment window open |
Jul 29 2024 | 6 months grace period start (w surcharge) |
Jan 29 2025 | patent expiry (for year 12) |
Jan 29 2027 | 2 years to revive unintentionally abandoned end. (for year 12) |