Abstract: A METHOD AND AN APPARARTUS FOR DATA STEERING ABSTRACT The present invention relates to a method and an apparatus for steering which includes determining an overall length of the data that needs to be steered, computing a TCP sequence number of a last packet for the received data based on the overall length of the data thus determined and steering the data such that a section of the data is routed without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data as computed above. FIGURE 3
CLIAMS:WE CLAIM:
1. A method of data steering, comprising:
• receiving, at a steering device, data from a source device for delivery to a destination device;
• evaluating, by the steering device, an initial part of the data to determine:
o need for steering the data prior to transmitting the same;
o details of a service device to which the data will be steered; and
o an overall length of the data that needs the steering;
• computing, by the steering device, a TCP sequence number of a last packet for the received data based on the overall length of the data thus determined;
• routing, by the steering device, the data to the service device such that a section of the data is routed without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data as computed above;
• receiving, by the steering device, the data from the service device and transmitting the same to the destination device.
2. The method as claimed in claim 1, comprising:
• receiving, at the steering device, data from the source device for delivery to the destination device;
• evaluating, by the steering device, an initial part of the data to determine a need for filtering the data prior to transmitting the same to the destination device and an overall length of the data that needs steering;
• computing, by the steering device, a TCP sequence number of a last packet for the received data based on the overall length of the data thus determined;
• establishing, by the steering device, a session with a filtering device;
• routing, by the steering device, the data thus received from the source device to the filtering device, such that a section of the data is routed without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data as computed above;
• receiving, by the steering device, an approval for sending the data to the destination device;
• terminating, by the steering device, the session with the filtering device, wherein the termination is based on:
o receiving, by the steering device, a message denoting end of session, said message being generated by the filtering device; or
o a determination that a TCP sequence number in transmission is equal to the TCP sequence number of the last packet for the received data; and
• transmitting, by the steering device, the data to the destination device.
3. The method as claimed in claim 1, comprising:
• receiving, at the steering device, data from the source device for delivery to the destination device;
• evaluating, by the steering device, an initial part of the data to determine a need for optimizing the data prior to transmitting the same to the destination device and an overall length of the data that needs steering;
• computing, by the steering device, a TCP sequence number of a last packet for the received data based on the overall length of the data thus determined;
• establishing, by the steering device, a session with an optimization device;
• routing, by the steering device, the data thus received from the source device to the optimization device, such that a section of the data is routed without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data as computed above;
• receiving, by the steering device, optimized data for sending to the destination device;
• terminating, by the steering device, the session with the optimization device, wherein the termination is based on:
o receiving, by the steering device, a message denoting end of session, said message being generated by the optimization device; or
o a determination that a TCP sequence number in transmission is equal to the TCP sequence number of the last packet for the received data;
• transmitting, by the steering device, the optimized data to the destination device.
4. The method as claimed in claim 1, further comprising:
• starting, by the steering device, a data counter and storing in the same a value corresponding to a TCP data sequence number under transmission along with source device and destination device details; and
• monitoring, by the steering device, the data counter and steering data to the service, if the TCP data sequence number under transmission is less than the TCP sequence number of the last packet for the received data.
5. A steering device for implementing data steering, comprising:
• a first receiver for receiving data from a source device;
• a processor for evaluating an initial part of the data to determine:
o need for steering the data prior to transmitting the same;
o details of a service device to which the data will be steered; and
o an overall length of the data that needs the steering;
• the processor being further adapted to compute a TCP sequence number of a last packet for the received data based on the overall length of the data thus determined;
• a first transmitter for sending the data to the service device such that a section of the data is routed without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data as computed above;
• a second receiver for receiving the data from the service device; and
• a second transmitter for transmitting the data received from the service device to the destination device.
6. The steering device as claimed in claim 5, further comprising:
• a data counter storing a value corresponding to a TCP data sequence number under transmission along with source device and destination device details.
,TagSPECI:Field of the Invention:
The present invention relates generally to the field of data communications, and in particular to a system for dynamically steering data between a source device and a destination device.
Background of the Invention:
Advances in Internet and wireless technologies have triggered an exponential upsurge in the amount of content that is accessible by wireless devices. For a wide variety of reasons, it may be desirable to manipulate data transmitted between a source device and a destination. For example, in certain instances it may be advantageous to dynamically add, modify or delete content retrieved from an Internet server computer before that content is provided to a client device. Conversely, it may be advantageous to modify a content request from a client computer prior to transmitting the request to an Internet server computer. Another example is to have filters that restrict the contents being accessed. As different content types, such as video, audio, and webpages, pose different demands for quality of service (QOS), yet another example includes optimization devices which are tailor made to receive data flow of a particular type and perform the optimization so as to improve QOS.
One of the base requirements to enable any of the above is to put in place a steering device, wherein the steering device determines the need to steer data and details of a service device to which the data should be steered. Presently know steering devices are either based on Application Delivery Controller (ADC) or Deep Packet Inspect (DPI).
The architecture of the system 100 that adopt the ADC approach is demonstrated in Figure 1. In this approach, the steering device 102 receives requests from the subscriber 104 (or a device which is either directly or indirectly connected to the subscriber), wherein the request may be directed towards any of the destination device 106/108/110 and may require presence of a particular service device 112/114/116 and on the basis of the same fixes a particular flow path. Thereafter, all communication from the subscriber or to the subscriber is directed through that particular flow path, wherein each flow path will have a virtual instance (VI) and a service device 112/114/116 (that provides the desired functionality). If it is determined that multiple flow paths are needed, multiple instances are created at the steering device level.
It has been found that this type of approach is not ideally suited for handling persistent connections, wherein different types of request come in the same flow. This therefore, tends to increase the resource requirement at the service device which performs the desired functionality. Also, the need to create multiple VI increases resource requirement of the steering device.
The architecture of the system that adopts DPI approach is demonstrated in Figure 2. In this approach, all data are received at the steering device 202. The data can be received either from a source device or from a destination device. Based on the flow, the subscriber could be the source or the destination and similarly, the devices as present on the internet 206/208/210 could be source of destination. The steering device 202 performs inspection of all data thus received. As the name suggests, in the method, all packets are analysed in a much deeper manner to determine on a packet to packet basis, the need for steering and the details of the service device 212/214/216 to which the packet should be steered. In case it is determined that the packet is not needed to be steered, the same is sent to the destination device. On the other hand, if it is determined that the steering for a particular packet is required, the packet is steered to the corresponding service device and a suitable response is received from the service device.
While, this approach may solve some of the problems as faced by the ADC approach, it has its own problems. For example, the overhead factor in this approach is substantially high. The hardware resource requirement at the steering device is substantially high.
It can be said that a telecom operator implementing either of the aforesaid approaches ends up incurring high costs because of the need to set up higher hardware and network resources. It has also been observed that despite incurring such higher hardware and network resources, the solutions do not provide the desired result in terms of the enriching the quality of experience of the subscriber.
Object of the Invention:
Thus it is an object of the invention to provide an improved method for steering and a steering device that address one or more of the aforesaid problems.
Summary of the Invention:
Accordingly, the present invention provides a method of data steering, comprising:
• receiving, at a steering device, data from a source device for delivery to a destination device;
• evaluating, by the steering device, an initial part of the data to determine:
o need for steering the data prior to transmitting the same;
o details of a service device to which the data will be steered; and
o an overall length of the data that needs the steering;
• computing, by the steering device, a TCP sequence number of a last packet for the received data based on the overall length of the data thus determined;
• routing, by the steering device, the data to the service device such that a section of the data is routed without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data as computed above;
• receiving, by the steering device, the data from the service device and transmitting the same to the destination device.
Also, the present invention provides a steering device for implementing data steering, comprising:
• a first receiver for receiving data from a source device;
• a processor for evaluating an initial part of the data to determine:
o need for steering the data prior to transmitting the same;
o details of a service device to which the data will be steered; and
o an overall length of the data that needs the steering;
• the processor being further adapted to compute a TCP sequence number of a last packet for the received data based on the overall length of the data thus determined;
• a first transmitter for sending the data to the service device such that a section of the data is routed without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data as computed above;
• a second receiver for receiving the data from the service device; and
• a second transmitter for transmitting the data received from the service device to the destination device.
To further clarify advantages and features of the present invention, a more particular description of the invention will be rendered by reference to specific embodiments thereof, which is illustrated in the appended drawings. It is appreciated that these drawings depict only typical embodiments of the invention and are therefore not to be considered limiting of its scope. The invention will be described and explained with additional specificity and detail with the accompanying drawings.
Brief Description of Figures:
These and other features, aspects, and advantages of the present invention will become better understood when the following detailed description is read with reference to the accompanying drawings in which like characters represent like parts throughout the drawings, wherein:
Figure 1 shows architecture of the system that adopts the ADC approach;
Figure 2 shows architecture of the system that adopts the DPI approach;
Figure 3 shows a flow chart of the process in accordance with an embodiment of the present invention;
Figure 4 shows the detailed internal construction of the steering device in accordance with one embodiment of the present invention;
Figure 5 shows yet another internal construction of the steering device in accordance with another embodiment of the present invention;
Figure 6 illustrates a flow chart of the process adopted for performing a filtering operation in accordance with one embodiment of the present invention;
Figure 7 illustrates a flow chart of the process adopted for performing a content optimization in accordance with one embodiment of the present invention; and
Figure 8 illustrates a flow chart of the process adopted for termination based on the content of the counters in accordance with one embodiment of the present invention.
Figure 9 shows the process flow along with the overall system configuration corresponding to a first embodiment of the invention.
Further, skilled artisans will appreciate that elements in the drawings are illustrated for simplicity and may not have been necessarily been drawn to scale. For example, the flow charts illustrate the method in terms of the most prominent steps involved to help to improve understanding of aspects of the present invention. Furthermore, in terms of the construction of the device, one or more components of the device may have been represented in the drawings by conventional symbols, and the drawings may show only those specific details that are pertinent to understanding the embodiments of the present invention so as not to obscure the drawings with details that will be readily apparent to those of ordinary skill in the art having benefit of the description herein.
Detailed Description:
For the purpose of promoting an understanding of the principles of the invention, reference will now be made to the embodiment illustrated in the drawings and specific language will be used to describe the same. It will nevertheless be understood that no limitation of the scope of the invention is thereby intended, such alterations and further modifications in the illustrated system, and such further applications of the principles of the invention as illustrated therein being contemplated as would normally occur to one skilled in the art to which the invention relates.
It will be understood by those skilled in the art that the foregoing general description and the following detailed description are exemplary and explanatory of the invention and are not intended to be restrictive thereof.
Reference throughout this specification to “an aspect”, “another aspect” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrase “in an embodiment”, “in another embodiment” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
The terms "comprises", "comprising", or any other variations thereof, are intended to cover a non-exclusive inclusion, such that a process or method that comprises a list of steps does not include only those steps but may include other steps not expressly listed or inherent to such process or method. Similarly, one or more devices or sub-systems or elements or structures or components proceeded by "comprises... a" does not, without more constraints, preclude the existence of other devices or other sub-systems or other elements or other structures or other components or additional devices or additional sub-systems or additional elements or additional structures or additional components.
Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. The system, methods, and examples provided herein are illustrative only and not intended to be limiting.
Embodiments of the present invention will be described below in detail with reference to the accompanying drawings.
As stated in the background section, there is a need to provide a method for steering of data in a manner which not only consumes limited amount of system resources, but which also delivers value to the client in terms of the overall satisfaction.
Let’s us consider a scenario wherein the subscriber has subscribed to service pertaining to parental control. In this scenario, if the ADC approach is adopted, the system will initially determine the need to steer the request from the user through a filtering device. If the filtering device implements a URL based parental control scheme, then once the request has been approved, the filtering device does not take any substantial part in the overall process. However, in the ADC process, despite the aforesaid, all data which is sent by the web-server corresponding to the URL are steered through the filtering device. This substantially increases the load of the filtering device and hence, the bandwidth between the filtering device and the web-servers and the bandwidth between the filtering device and the steering device has to be substantially increased. In addition, the hardware at the filtering device also needs to be increased to cater to all of these data flow. However, since the steering device in the ADC approach does not intrusively detect the content of each packet flowing thereto, a reasonably fast response time can be attained. On the contrary, in the DPI approach, since each packet is deeply inspected, there is huge issued involving latency in delivering the content to the subscriber.
Also, when it comes to persistent data flows, wherein a request starts for a particular flow and thereafter shifts to a different flow, the ADC approach is unable to detect the same and accordingly, reallocate fresh service devices, which may be more suited for the subsequent flows. Let’s say for example, a subscriber has subscribed to service pertaining to parental control as well as video optimization and let’s say the initial request comes in the form of a URL which has both text as well as video content. Upon receiving the request, the system adopting the ADC approach steers the request to the filtering device. While the filtering device (service device) comes into the loop, if the user accesses video content from that webpage, the service device performing video optimization may not necessarily get involved. In order to ensure that the service device performing video optimization a separate virtual instance needs to be created and maintained alongside the first virtual instance handling the parental control.
Referring to figure 3, addressing the aforesaid problems, the present invention provides a method of data steering 300, comprising:
• receiving, at a steering device, data from a source device for delivery to a destination device (step 302);
• evaluating, by the steering device, an initial part of the data to determine (step 304):
o need for steering the data prior to transmitting the same;
o details of a service device to which the data will be steered; and
o an overall length of the data that needs the steering;
• computing, by the steering device, a TCP sequence number of a last packet for the received data based on the overall length of the data thus determined (step 306);
• routing, by the steering device, the data to the service device such that a section of the data is routed without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data as computed above (step 308); and
• receiving, by the steering device, the data from the service device and transmitting the same to the destination device (step 310).
It can be noticed that the steering device upon receiving data (which can be either a request or data corresponding to the request) evaluates an initial part of the data to evaluate a need for steering the data. If it is determined that the data needs steering, it determines the details of the service device which is best suited for the purpose. It can be said that there are known processes to perform these steps and hence, any of the known processes can be adopted.
Thereafter, the steering device determines an overall length of the data that needs to be steered. Once the overall size of the data which needs to be steered has been obtained, the steering device computes a TCP sequence number of a last packet for the received data based on the overall length of the data thus determined and proceeds to steer the data to the service device.
While routing, the steering device routes the data to the service device such that a section of the data is routed without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data as computed above.
Let’s say for example, the steering device determines an overall length of the data to be X (on the basis of evaluation of the initial part of the data) and computes a TCP sequence number of a last packet for the received data as Y, then the steering device shall route data which has a TCP sequence number equal to or less than Y without evaluation.
The service device after receiving the data from the steering device may be required to perform certain actions on the received data. For example, the service device may be required to perform an optimization action on the received data to generate an optimized data or may be required to send a response to a query as may be contained in the data thus received. Based on the function which the service device is required to perform, the service device generates data and sends it back to the steering device.
The steering device may once again evaluate the data as received from the service device to determine the destination details and transmits the data to the corresponding destination device.
Once all data from the service device has been received, the steering device will check as to whether the session with the service device can be terminated and if it is determined that the session with the service device can be terminated, proceeds to terminate the session. It can be said that based on the value of the TCP packets under circulation between the steering device and the service device, the session can be terminated or alternatively, the session can be terminated on the basis of triggers which may be explicitly generated by the service device. For example, when a service device finishes processing of a data, it sends a TCP_FIN back to the steering device and this TCP_FIN is used as an identifier to check for next data type in the subsequent response streams, thus reducing the need to check more packets on the lookout for multiple content types in a response package. Such an action may be called as chaining various data services independently, by using TCP_FIN as indicator.
Now referring to figure 4, the present invention provides a steering device 400 for implementing data steering, comprising:
• a first receiver 402 for receiving data from a source device;
• a processor 404 for evaluating an initial part of the data to determine:
o need for steering the data prior to transmitting the same;
o details of a service device to which the data will be steered; and
o an overall length of the data that needs the steering;
• the processor 404 being further adapted to compute a TCP sequence number of a last packet for the received data based on the overall length of the data thus determined;
• a first transmitter 406 for sending the data to the service device such that a section of the data is routed without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data as computed above;
• a second receiver 408 for receiving the data from the service device; and
• a second transmitter 410 for transmitting the data received from the service device to the destination device.
Referring to figure 5, yet another typical hardware configuration of the steering device in the form of a computer system 400 is shown. The computer system 400 can include a set of instructions that can be executed to cause the computer system 400 to perform any one or more of the methods disclosed. The computer system 400 may operate as a standalone device or may be connected, e.g., using a network, to other computer systems or peripheral devices.
In a networked deployment, the computer system 400 may operate in the capacity of a server or as a client user computer in a server-client user network environment, or as a peer computer system in a peer-to-peer (or distributed) network environment. The computer system 400 can also be implemented as or incorporated into various devices, such as a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile device, a palmtop computer, a laptop computer, a desktop computer, a communications device, a wireless telephone, a land-line telephone, a control system, a camera, a scanner, a facsimile machine, a printer, a pager, a personal trusted device, a web appliance, a network router, switch or bridge, or any other machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while a single computer system 400 is illustrated, the term "system" shall also be taken to include any collection of systems or sub-systems that individually or jointly execute a set, or multiple sets, of instructions to perform one or more computer functions.
The computer system 400 may include a processor 502, e.g., a central processing unit (CPU), a graphics processing unit (GPU), or both. The processor 502 may be a component in a variety of systems. For example, the processor 502 may be part of a standard personal computer or a workstation. The processor 502 may be one or more general processors, digital signal processors, application specific integrated circuits, field programmable gate arrays, servers, networks, digital circuits, analog circuits, combinations thereof, or other now known or later developed devices for analyzing and processing data The processor 502 may implement a software program, such as code generated manually (i.e., programmed).
The computer system 400 may include a memory 504, such as a memory 504 that can communicate via a bus 508. The memory 504 may be a main memory, a static memory, or a dynamic memory. The memory 504 may include, but is not limited to computer readable storage media such as various types of volatile and non-volatile storage media, including but not limited to random access memory, read-only memory, programmable read-only memory, electrically programmable read-only memory, electrically erasable read-only memory, flash memory, magnetic tape or disk, optical media and the like. In one example, the memory 504 includes a cache or random access memory for the processor 502. In alternative examples, the memory 504 is separate from the processor 502, such as a cache memory of a processor, the system memory, or other memory. The memory 504 may be an external storage device or database for storing data. Examples include a hard drive, compact disc ("CD"), digital video disc ("DVD"), memory card, memory stick, floppy disc, universal serial bus ("USB") memory device, or any other device operative to store data. The memory 504 is operable to store instructions executable by the processor 502. The functions, acts or tasks illustrated in the figures or described may be performed by the programmed processor 502 executing the instructions stored in the memory 504. The functions, acts or tasks are independent of the particular type of instructions set, storage media, processor or processing strategy and may be performed by software, hardware, integrated circuits, firm-ware, micro-code and the like, operating alone or in combination. Likewise, processing strategies may include multiprocessing, multitasking, parallel processing and the like.
As shown, the computer system 500 may or may not further include a display unit 510, such as a liquid crystal display (LCD), an organic light emitting diode (OLED), a flat panel display, a solid state display, a cathode ray tube (CRT), a projector, a printer or other now known or later developed display device for outputting determined information. The display 510 may act as an interface for the user to see the functioning of the processor 502, or specifically as an interface with the software stored in the memory 504 or in the drive unit 516.
Additionally, the computer system 400 may include an input device 512 configured to allow a user to interact with any of the components of system 400. The input device 512 may be a number pad, a keyboard, or a cursor control device, such as a mouse, or a joystick, touch screen display, remote control or any other device operative to interact with the computer system 400.
The computer system 400 may also include a disk or optical drive unit 516. The disk drive unit 316 may include a computer-readable medium 522 in which one or more sets of instructions 524, e.g. software, can be embedded. Further, the instructions 524 may embody one or more of the methods or logic as described. In a particular example, the instructions 524 may reside completely, or at least partially, within the memory 504 or within the processor 502 during execution by the computer system 400. The memory 504 and the processor 502 also may include computer-readable media as discussed above.
The present invention contemplates a computer-readable medium that includes instructions 524 or receives and executes instructions 524 responsive to a propagated signal so that a device connected to a network 526 can communicate voice, video, audio, images or any other data over the network 526. Further, the instructions 524 may be transmitted or received over the network 526 via a communication port or interface 520 or using a bus 508. The communication port or interface 520 may be a part of the processor 502 or may be a separate component. The communication port 520 may be created in software or may be a physical connection in hardware. The communication port 520 may be configured to connect with a network 526, external media, the display 510, or any other components in system 400, or combinations thereof. The connection with the network 526 may be a physical connection, such as a wired Ethernet connection or may be established wirelessly as discussed later. Likewise, the additional connections with other components of the system 400 may be physical connections or may be established wirelessly. The network 526 may alternatively be directly connected to the bus 508.
The network 526 may include wired networks, wireless networks, Ethernet AVB networks, or combinations thereof. The wireless network may be a cellular telephone network, an 802.11, 802.16, 802.20, 802.1Q or WiMax network. Further, the network 526 may be a public network, such as the Internet, a private network, such as an intranet, or combinations thereof, and may utilize a variety of networking protocols now available or later developed including, but not limited to TCP/IP based networking protocols.
In an alternative example, dedicated hardware implementations, such as application specific integrated circuits, programmable logic arrays and other hardware devices, can be constructed to implement various parts of the system 400.
Applications that may include the systems can broadly include a variety of electronic and computer systems. One or more examples described may implement functions using two or more specific interconnected hardware modules or devices with related control and data signals that can be communicated between and through the modules, or as portions of an application-specific integrated circuit. Accordingly, the present system encompasses software, firmware, and hardware implementations.
The system described may be implemented by software programs executable by a computer system. Further, in a non-limited example, implementations can include distributed processing, component/object distributed processing, and parallel processing. Alternatively, virtual computer system processing can be constructed to implement various parts of the system.
The system is not limited to operation with any particular standards and protocols. For example, standards for Internet and other packet switched network transmission (e.g., TCP/IP, UDP/IP, HTML, HTTP) may be used. Such standards are periodically superseded by faster or more efficient equivalents having essentially the same functions. Accordingly, replacement standards and protocols having the same or similar functions as those disclosed are considered equivalents thereof.
In the following paragraphs a detailed description about implementation of the aforesaid method that involves certain specific types of service device is provided. It should however, be understood every implementation of the method need not follow the scenario as mentioned in the following paragraphs. Thus, the scope of the claims is intended to be restricted only on the basis of the claims and their equivalents and not on the basis of the examples provided herein below.
TECHNICAL IMPLEMENTATION OF THE METHOD AS PER EXAMPLE 1:
This example concerns with a steering method for providing filtering functions to the subscriber, for example, parental control filtering. Referring to figure 6, the method 600 comprises receiving, at a routing device, a data from a source device for delivery to a destination device (Step 602). The steering then proceed to the evaluation step, wherein it evaluates an initial part of the data to determine a need for filtering the data prior to transmitting the same to the destination device and an overall length of the data that needs steering (steps 604).
Since the data thus received is a request for a particular URL, it may happen that the overall data gets accommodated in a single packet and in which case, the TCP sequence number of a last packet for the received data may be equal to the TCP sequence number of the sole packet (step 606).
The steering device then proceeds to establish a session with the filtering device (step 608) and transmits the data (i.e. the request for the URL) to the filtering device (step 610). However, in case the overall data gets accommodated in plurality of packets, the steering device routes a section of the data without evaluation, wherein the section of the data has a TCP sequence number less than the TCP sequence number of the last packet for the received data.
The filtering device after performing appropriate processing, which is well known in the art, responds to the steering device. Since the filtering device may respond to the steering device with a permission or a denial for the requested URL, it may happen that the overall data thus sent by the filtering device to the steering device gets accommodated in a single packet and in which case, the TCP sequence number of a last packet for the received data may be equal to the TCP sequence number of the sole packet (step 612).
If the filtering device responds with a permission i.e. allow the subscriber to access the URL, the steering device sends the request to the webserver hosting the URL and obtains data therefrom (in a conventional manner) (step 616).
However, in the present invention, once a response is received from the filtering device, the subsequently fetched data from the webserver corresponding to the URL need not be routed through the filtering device (unless yet another criteria triggers routing of the content through the filtering device).
Thus, at a point of time, when the steering device receives a response from the filtering device, the filtering device can send a TCP_FIN message and hence, on the basis of the same, the steering device can terminate the session with the filtering device. Alternatively, based on a determination that a TCP sequence number in transmission is equal to the TCP sequence number of the last packet for the received data, the steering device can terminate the session with the filtering device (step 614).
TECHNICAL IMPLEMENTATION OF THE METHOD AS PER EXAMPLE 2:
This example concerns with a steering method for providing content optimization functions to the subscriber, for example, video optimization or web optimization. Referring to figure 7, the method 700 comprises receiving, at a routing device, a data from a source device for delivery to a destination device (Step 702). The steering then proceed to the evaluation step, wherein it evaluates an initial part of the data to determine a need for optimizing the data prior to transmitting the same to the destination device, the type of optimization and an overall length of the data that needs steering (steps 704). The steering device on the basis of the overall length indication (as contained in the initial part of the received data) computes a TCP sequence number of a last packet for the received data.
The steering device then proceeds to establish a session with the optimization device (step 708) and transmits the data to the optimization device (step 710) such that a section of the data is routed without evaluation, wherein the section routed without evaluation has a TCP sequence number less than the TCP sequence of the last packet of the received data .
The optimization device after performing appropriate processing, which is well known in the art, responds to the steering device with optimized data (step 712). The steering device in turn sends the optimized data thus received to the destination device (step 716).
During the process the steering device determines as to whether it has received a TCP_FIN message from the optimization device corresponding to the TCP sequence, in which case, it proceeds to terminate the session. Alternatively, based on a determination that a TCP sequence number in transmission is equal to the TCP sequence number of the last packet for the optimized data, the steering device can terminate the session with the filtering device (step 714).
TECHNICAL IMPLEMENTATION OF THE METHOD AS PER EXAMPLE 3:
As stated above, in addition to taking receipt of TCP_FIN as an instance for terminating a session with the service device, the steering device can also keep track at its own end. Referring to figure 8, the steering device may perform a method 800 for such purposes. The method may comprise starting a data counter and storing in the same a value corresponding to a TCP data sequence number under transmission (step 802). Along with the above, the steering device may store source device and destination device details. The steering device already knows the TCP sequence number of the last packet and hence, monitors the counter for the TCP data sequence number under transmission. If the TCP data sequence number under transmission (as contained in the counter) is less than the TCP sequence number of the last packet for the received data, the session is not terminated. On the other hand, if the TCP data sequence number under transmission (as contained in the counter) is greater, the same can be taken as an instance for terminating the session (step 804). It is also feasible to envisage a scenario, wherein in addition to the above criteria, the system can put additional criteria for termination of the session.
TECHNICAL IMPLEMENTATION OF THE METHOD AS PER EXAMPLE 4:
Referring to figure 9, the process flow along with the overall system 900 configuration corresponding to a persistent connection scenario is discussed. The system is shown to comprise the steering device 400, a subscriber device 902 in operational interconnection with internet 904 such that a persistent connection is possible to be established between the same and three service devices 906, 908 and 910 which will come into picture during such persistent connection, wherein the service device 906 provides a filtering operation, service device 908 provides web optimization (alternatively called as web optimization device) and service device 910 provides video optimization (alternatively called as video optimization device).
At the initial part, a TCP/IP session connection is established with the internet. Thereafter, the subscriber sends in a data request. After performing the evaluations, a session is established with the service device 906 and the data request is sent to thereto. Assuming that the URL is not blacklisted, the service device 906 grants permission and sends a FIN message. Thereafter the session with the service device is terminated and the steering device then sends the data request to the webserver hosting the URL.
Once the data is received, the steering device once again performs the evaluation step, wherein it evaluates an initial part of the data to determine a need for optimizing the data prior to transmitting the same to the destination device, the type of optimization and an overall length of the data that needs steering. The steering device on the basis of the overall length indication (as contained in the initial part of the received data) computes a TCP sequence number of a last packet for the received data.
Assuming that the required type of optimization is web optimization, the steering device then proceeds to establish a session with the web optimization device 908 and transmits the data to the web optimization device such that a section of the data is routed without evaluation, wherein the section routed without evaluation has a TCP sequence number less than the TCP sequence of the last packet of the received data. The web optimization device 908 after performing appropriate processing, which is well known in the art, responds to the steering device with optimized data and finally with a FIN message. Thereafter the session with the web optimization device is terminated and the steering device sends the data request to the subscriber 902.
Similarly, the steering device once again performs the evaluation step, wherein it evaluates an initial part of the data to determine a need for optimizing the data prior to transmitting the same to the destination device, the type of optimization and an overall length of the data that needs steering. The steering device on the basis of the overall length indication (as contained in the initial part of the received data) computes a TCP sequence number of a last packet for the received data.
Assuming that the required type of optimization is video optimization, the steering device then proceeds to establish a session with the video optimization device 908 and transmits the data to the video optimization device such that a section of the data is routed without evaluation, wherein the section routed without evaluation has a TCP sequence number less than the TCP sequence of the last packet of the received data. The video optimization device 908 after performing appropriate processing, which is well known in the art, responds to the steering device with optimized data and finally with a FIN message. Thereafter the session with the video optimization device is terminated and the steering device sends the data request to the subscriber 902.
While specific language has been used to describe the disclosure, any limitations arising on account of the same are not intended. As would be apparent to a person in the art, various working modifications may be made to the method in order to implement the inventive concept as taught herein.
The drawings and the forgoing description give examples of embodiments. Those skilled in the art will appreciate that one or more of the described elements may well be combined into a single functional element. Alternatively, certain elements may be split into multiple functional elements. Elements from one embodiment may be added to another embodiment. For example, orders of processes described herein may be changed and are not limited to the manner described herein. Moreover, the actions any flow diagram need not be implemented in the order shown; nor do all of the acts necessarily need to be performed. Also, those acts that are not dependent on other acts may be performed in parallel with the other acts. The scope of embodiments is by no means limited by these specific examples. Numerous variations, whether explicitly given in the specification or not, such as differences in structure, dimension, and use of material, are possible. The scope of embodiments is at least as broad as given by the following claims.
Benefits, other advantages, and solutions to problems have been described above with regard to specific embodiments. However, the benefits, advantages, solutions to problems, and any component(s) that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as a critical, required, or essential feature or component of any or all the claims.
| # | Name | Date |
|---|---|---|
| 1 | FORM 5.pdf | 2014-04-02 |
| 2 | Form 3.pdf | 2014-04-02 |
| 3 | form 26.pdf | 2014-04-02 |
| 4 | drawings.pdf | 2014-04-02 |
| 5 | 1640IN032_Draft Specification.pdf | 2014-04-02 |
| 6 | 917-del-2014-Correspondence-Others-(26-09-2014).pdf | 2014-09-26 |
| 7 | 917-del-2014-GPA-(02-07-2015).pdf | 2015-07-02 |
| 8 | 917-del-2014-Correspondence Others-(02-07-2015).pdf | 2015-07-02 |
| 9 | 917-DEL-2014-FER.pdf | 2018-11-02 |
| 10 | 917-DEL-2014-AbandonedLetter.pdf | 2019-10-12 |
| 1 | searchstrategy_30-07-2018.pdf |