[go: up one dir, main page]

HK1026487A - System for dynamically controlling a network device - Google Patents

System for dynamically controlling a network device Download PDF

Info

Publication number
HK1026487A
HK1026487A HK00105602.9A HK00105602A HK1026487A HK 1026487 A HK1026487 A HK 1026487A HK 00105602 A HK00105602 A HK 00105602A HK 1026487 A HK1026487 A HK 1026487A
Authority
HK
Hong Kong
Prior art keywords
network device
network
service provider
instructions
client
Prior art date
Application number
HK00105602.9A
Other languages
Chinese (zh)
Inventor
R‧C‧克瑙埃尔哈泽
M‧M-H‧特索
Original Assignee
英特尔公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特尔公司 filed Critical 英特尔公司
Publication of HK1026487A publication Critical patent/HK1026487A/en

Links

Description

System for dynamically controlling a network device
The present invention claims the benefit of U.S. provisional application 60/042071 (applied by Robert c. knauehase et al, 1997, 3/25, and assigned to intel corporation) entitled "system for Dynamically Controlling a Network Proxy," the disclosure of which is incorporated herein by reference.
Background
Technical Field
The present invention relates generally to the field of computer networks, and more particularly to a method and apparatus for configuring a device as a network proxy to perform a predetermined action in response to dynamic input.
Prior Art
It is well known that a network proxy or proxy server may be disposed as an intermediary between one or more client computers and an external network, such as the internet. HTML Source Book written in Ian s.graham: a Complete Guide to HTML 3.0403 (1996, 2 nd edition) has basically described a network proxy. Most existing network proxies, however, lack the ability to command processing or dynamic configuration. The network proxy is typically pre-configured using a static control panel and settings stored, for example, in a file such as the ". INI" file or the MS-Windows registry. These settings remain unchanged as long as the network proxy is still running. Moreover, such network proxies lack the ability to dynamically receive and execute commands or instructions that would normally effect reconfiguration of the network proxy. This is because it is common to use the network proxy as a pipe. For example, a network proxy for World Wide Web (WWW) access simply passes HTTP requests received from a client computer to a server computer capable of servicing the requests. Similarly, content received by the network proxy from the server computer in response to such a request is simply transmitted to the requesting client computer. In other words, the network proxy does not view the content delivered through it.
In view of the above limitations of the prior art, there is therefore a need for a network proxy that is capable of operating on information communicated thereto, whether such information is commands embedded in a request from a client computer or content provided by a server computer. While such dynamic control of network proxies is desirable, it is impractical to expect the extensive internet infrastructure to change rapidly to accommodate this new functionality. For this reason, it is desirable to implement this new functionality in a manner that does not require changes to existing client computers or server computers.
Summary of The Invention
The present invention relates to systems, methods and apparatus for dynamically controlling a network proxy. For example, various embodiments may be used to dynamically reconfigure a network to change the operating parameters of a network proxy and transcode network content before it is delivered to a client device.
According to a particular embodiment, a dynamically controllable network device includes an analyzer and a service provider. The analyzer includes instructions for selectively invoking the service provider in response to a command analyzed from an external input received from the network device.
Brief description of the drawings
Fig. 1 is a schematic diagram illustrating a dynamically controllable network device according to an embodiment of the present invention.
Fig. 2 is a schematic diagram of an embodiment of the present invention in which a dynamically controllable network device is implemented as a network proxy.
Fig. 3 is a schematic diagram of an embodiment of the present invention in which a dynamically controllable network device is implemented as a transcoding server. .
Fig. 4 is a schematic diagram of a method of dynamically controlling a network device according to an embodiment of the present invention.
Detailed Description
According to a first embodiment of the invention, as illustrated in fig. 1, there is provided an apparatus by which a network device 2 (which may be a computer configured for network transactions on behalf of another computer) is instructed to operate in a particular manner based on an input from the outside. Such input may originate, for example, from a system administrator. The network device 2 is configured to examine network traffic passing through it. In some instances, the network device 2 may intercept the command and take some predetermined responsive action. In other instances, network device 2 may take some action based on characteristics of the content it receives, such as a data type or MIME (multipurpose internet mail extension) type, which may include, for example, setting operational parameters of network device 2, such as a cache size; remote management of the network device 2, such as retrieving/clearing log files, obtaining system state information, and restarting the network device 2; and issuing upgrades of the software.
In this embodiment, the network device 2 comprises a control module 4 having an analyzer 6 and a plurality of service providers 8. The control module 4 may for example be implemented as a software module installed in the network device 2. The analyzer 6 is configured to act upon external input received by the control module 4, such as a request for a network object generated by a client device or an answer to a request provided by a network server device. In this particular embodiment, the analyzer 6 is responsible for selectively invoking one or more service providers 8 based on a predetermined selection criterion. The predetermined selection criterion may for example be a command embedded in a request, a characteristic of a received request or data object, a condition of the network device 2 itself, a combination of the former, etc.
According to another embodiment of the present invention, which is illustrated in fig. 2, a dynamically controllable network device may be implemented as a network proxy. A network proxy or proxy server is often used in conjunction with so-called "firewall" software to prevent unauthorized use of a LAN (local area network) over the internet. Firewalls, typically installed on a gateway computer connecting the LAN to the outside world, restrict network packets originating from the outside world from entering the local network, thereby protecting the LAN from disasters such as unauthorized access. However, the firewall also prevents users of the network from directly accessing external resources, such as the Web. Network proxies are often used to address this shortcoming. See Graham's article (page 403).
The network proxy is typically configured to have free access to internal LAN resources and external resources and can securely pass data back through the firewall. The user can then be securely (although indirectly) accessed to the Web resource by configuring the user's Web browser to reference the Web proxy, rather than an external target server. When a Web browser is used to retrieve information from outside the firewall, it sends a request to the network proxy, which then completes the request and returns the result to the requestor. And Id.
Referring now to FIG. 2, in accordance with this embodiment, a dynamically controllable network proxy 34 manages the transfer of data from the Internet 18 to a network client 12. The network client 12 and the network proxy 34 may be any computer having suitable data communication capabilities and processing capabilities. The network client 12 transmits requests for information to the network proxy 34 and receives information from the network proxy 34 over a client/server communication link 14. The client/server communication link 14 may comprise, for example, a so-called "slow network" using, for example, POTS (plain old telephone service) dial-up technology or wireless connections. Alternatively, the client/server communication link 14 may comprise a so-called "fast network", such as a LAN or WAN (Wide area network), which is capable of operating at a speed (e.g., 5 to 10 times) faster than that possible with a slow network. Combinations of these access methods are also possible. For example, the network client 12 may connect to a modem bank maintained by an ISP (internet service provider) using a POTS or wireless dial-up, which in turn connects to a network proxy 34 via a LAN. The network proxy 34 communicates with computers on the internet 18 via a server/network communication link 16, which may include any suitable communication medium known in the art. The server/network communication link 16 is typically connected faster than the client/server communication link 14.
The network proxy 34 may be implemented, for example, as part of a network server, as a stand-alone computer in communication with a network server, or even as a distributed system of computers. The network proxy 34 may, for example, connect to a network server (not shown) on the internet 18, an ISP's network, an enterprise network, or anywhere, and provide a way for multiple users to obtain content residing on the internet 18. The network proxy 34 is distinct from known network proxies in that it is typically only a channel that requests and receives responses from external internet resources. Here, the network proxy 34 not only examines such requests and responses, but may also operate according to the commands in the request by, for example, dynamically reconfiguring one or more operating parameters.
Referring now to fig. 3, in accordance with yet another embodiment of the present invention, a dynamically controllable network device may be implemented as a transcoding server 34, which comprises a transcoder 20, which transcoder 20 comprises an analyzer 22 and transcoding service providers 24. The parser 22 is configured to operate on data received by the transcoder 20, such as a request for a network object generated by a client device or an answer to a request provided by a content server device. In this particular embodiment, the analyzer 22 is responsible for selectively invoking one or more transcoding service providers 24 based on a predetermined selection criteria. As illustrated, transcoding server 34 may include an HTTP (HyperText transfer protocol) remote agent 36 that is capable of accessing Internet 18 via server/network communication link 16. The HTTP remote proxy 36, using transcoder 20, is able to transcode (e.g., add, change and/or delete) content received from the internet 18 before returning it to a requesting network client 12.
Analyzing the embodiment of fig. 3 now in more detail, the analyzer 22 manages transcoding of data transmitted from the transcoding server 34 to the network client 12. To this end, the analyzer 22 controls the transcoding service provider 24 to selectively transcode the content according to a predetermined selection criterion. For example, one or more transcoding service providers 24 may provide the ability to compress and/or scale different types of data content, such as images, video, or HTML (hypertext markup language). As will be explained further below, one or more transcoding service providers 24 may also be provided to implement the dynamic control functions described herein based on a command or other information contained in a request or a data object received by transcoding server 34, or any other information determined by transcoding server 34.
As shown in FIG. 3, transcoding server 34 may also include a server-side cache 30 managed by a server-side cache interface 28. The server-side cache 30 may be used to store both the original version and the transcoded version of the content for later transmission to the network client 12 without the need to re-retrieve the content from the internet 18 or re-transcode the content.
Transcoding server 34 is coupled to network client 12 via client/server communication link 14. The network client 12 includes a browser 32, such as the netscape navigator v.3.0 browser of netscape corporation (although the invention is not limited in this respect), which manages the display of data to the user. In this embodiment, the network client 12 is "disabled," meaning that no specialized transcoding software is preloaded onto the network client 12.
The analyzer 22 may comprise a fairly simple, consistent interface to the HTTP remote proxy 36 and may provide an API (application programming interface) for dynamically controlling the transcoding server 34 and/or for transcoding data received by the HTTP remote proxy 36. The parser 22 manages one or more transcoding service providers 24, which are accessed through a common SPI (service provider interface). In this particular embodiment, the analyzer 22 is designed to be consistent with the open systems architecture for Windows (WOSA), and may be implemented as a Win32 DLL (dynamic link library). The WOSA architecture described in reading on Microsoft Windows and WOSA (Microsoft corp.1995) allows additional transcoding service providers 24 to be dynamically added to the system to provide new features, such as new or improved transcoding algorithms, while not requiring changes or retesting of other software components in the system. This feature is also extremely useful when transcoding server 34 also interacts with "enabled" web clients that have specialized transcoding software installed. Advantageously, transcoding server 34 may be configured with sufficient flexibility to interact with non-enabled and enabled network clients at any time.
Like the parser 22, the server-side cache interface 28 may be manufactured following a standard Get/Set (Get/Set) interface. In essence, the server-side cache 30 "owns" all cached targets, where it manages the nature and storage of these targets, and can invalidate any non-locked targets at any time; however, the actual format of any given cached object is known only to the parser 22 and its associated transcoding service provider 24. Thus, all access to the server-side cache 30 in this embodiment is through the analyzer 22 for data integrity and transcoding efficiency purposes.
In this particular embodiment, the analyzer 22 includes the following calls:
GetObject(URL,InParams,&Outparams,&OutStream,…);
GetScaledObject(URL,InParams,&OutParams,&OutStream,Stage,…);
PutObject(URL,InParamStruct,&InStream,&OutParams,&OutStream,…)。
the analyzer 22 uses these calls to manage the provision of the requested content to the network client 12.
GetObject () calls a non-transcoding (i.e., original) version for servicing non-enabled client requests and returns a particular hypertext object. In this embodiment, the transcoding server 34 assumes that each HTTP request has a unique thread that can be blocked until the request is satisfied. Accordingly, the GetObject () call will block until it returns the requested data stream or indicates the reason for the failure (e.g., the target does not exist). For compatibility reasons, this ability to return a so-called standard hypertext target is advantageous, allowing embodiments of the present invention to be used with existing browsers that do not include support for certain transcoding functions (e.g., advanced data compression), and allowing users to selectively retrieve non-transcoded versions.
The GetScaledObject () call is similar to Getobject () and is also used to request a target from the server-side cache 30; however, it adds support for requesting a specific version of the object, such as a high quality reproduction. Unlike conventional caching agents, transcoding service provider 24 may use server-side cache 30 to store several different versions of a target to support clients with different communication and/or presentation capabilities. Thus, a conventional "Stage" parameter may be used to indicate which version of the cached target is to be returned to the network client 12. In the case where transcoding service provider 24 is configured to scale network content, this parameter may be used to request a version of a cached target having, for example, a default scaling quality, an improved version having better quality, or the original non-scaled version.
In this embodiment, when the network client 12 requests a hypertext object, the HTTP remote agent 36 retrieves the hypertext object from the parser 22 using a GetObject () or GetScaledObject () call (depending on whether the network client 12 is capable of receiving the scaled/transcoded data type). If the hypertext target is not found, the parser 22 uses the CreateEntry () call to create an entry (actually a save place) in the server-side cache 30 for the new target. The new entry is returned to the HTTP remote proxy 36, which requests the hypertext target from the internet 18. When a data stream of the hypertext object is returned, the HTTP remote proxy 36 calls the parser 22 with PutObject () to transfer the new item and the handle to the data stream to be placed in the item into the call. The parser 22 selects an appropriate transcoding service provider 24 based on, for example, the content type of the data stream. In this context, the term content type includes a data type, an HTTP MIME (multipurpose internet mail extension) type, a content format, and the like. The selected transcoding service provider 24 uses a separate thread to read the incoming data stream, transcode it, and place it into the entry of the server-side cache 30. The current thread immediately returns to the HTTP remote proxy 36 which again calls GetScaledObject () (or GetObject ()). This situation always results in a cache hit. This thread then works simultaneously with the separate thread in PutObject () to transfer data (raw or transcoded) from the transcoding server 34 to the network client 12.
Multithreading may be used to improve the efficiency of the transcoding server 34 by not waiting for a hypertext object to be completely received by the HTTP remote agent 36 or to be entirely entered into the server-side cache 30 before beginning to send a hypertext object to the network client 12. Another benefit of multi-threaded processing is that the parser 12 can efficiently process requests from multiple network clients 12 for the same hypertext target. The hypertext target need only be retrieved once from the internet 18 and the appropriate version can be transmitted to the same plurality of network clients 12 at the same time. However, it should be noted that embodiments of the present invention may be implemented without multithreading.
According to the embodiment of fig. 3, the transcoding server 34 may be dynamically controlled to perform a wide range of operations, such as reconfiguring operating parameters of the transcoding server 34. For example, to reconfigure which network devices are allowed to access transcoding server 34, an HTTP message may be sent to analyzer 22, causing analyzer 22 to update (either by itself or through transcoding service provider 24) a security mechanism (e.g., a table of valid network addresses) maintained by transcoding server 34. Similarly, an HTTP message may be transmitted to transcoding server 34 to reconfigure one or more parameters used by transcoding service provider 24 to transcode the content before transmission to network client 12, such as instructing transcoding service provider 24 to remove all occurrences of a particular word from the content passing through it. Other examples of the types of dynamic control exercised using embodiments of the present invention include having the transcoding server 34 use more (or less) CPU resources for specific operations, reconfiguring the cache 30, and flushing the cache 30.
To further describe the operation of a dynamically controllable network device, FIG. 4 shows a flowchart of a generalized method for dynamically controlling a network device, according to one embodiment of the invention. Processing begins with a dynamically controllable network device receiving an input from another network device (step 20). In the case where the dynamically controllable network device comprises a network proxy, such other network device may comprise a client device or a content server. The dynamically controllable network device then analyzes the received input to extract a command therefrom (step 30). Assuming a command is found, the dynamically controllable network device then performs some predetermined action based on the command (step 40). The method of this embodiment may be used, for example, to provide the dynamic control functionality described above.
A benefit of a dynamically controllable network device according to embodiments of the present invention is that no changes to the existing network infrastructure are required. In an embodiment where the network device includes a network proxy for Web transactions, commands may be sent to the network proxy, for example, via standard HTTP "POST" methods to a particular URL. Accordingly, the client software required to only distribute proxy commands is a standard Web browser, with no special configuration requirements for the client device other than the requirement to specify an HTTP proxy as a destination device in a manner currently known in the art. Alternatively, the network proxy may also accept commands from specialized client software (if present). Similarly, the dynamically controllable network proxy may freely interact with existing server devices. The proxy can generate its own form and status responses as needed for the client, without any specially configured HTTP server software or CGI (common gateway interface) script processing capabilities. For example, the proxy may generate an HTML form that is displayed by the client browser. The user can populate the form and submit it. The browser takes the populated form and uses the input to create a POST that communicates the results from the HTML form. The agent may then act upon the POST, possibly generating its own status response, to inform the user whether the input command is working. Such status responses may then be displayed by the browser. With this type of arrangement, existing servers and clients can interact with the dynamically controllable network agent in the same manner that they interact with any other network agent. Thus, embodiments of the present invention may be implemented transparently in existing network infrastructures, without requiring special communication ports or special protocols.
Embodiments of the invention may be distributed, for example, as a set of instructions located on a storage medium. The storage medium may be a memory of a computer; a piece of firmware; a portable storage device such as a diskette or other magnetic storage device, or a CD-ROM; or any other known medium for storing executable instructions.
Although the present invention has been described with reference to embodiments in which data is accessed from the internet, those of ordinary skill in the art will readily recognize that the present invention may have equal applicability to other network environments. For example, embodiments of the present invention may be used to enhance data communications between a network client computer and an "intranet". An intranet is typically a secure enterprise network built around the internet architecture and typically includes mechanisms for communicating with external networks, such as the internet.
The foregoing is a detailed description of specific embodiments of the invention. The present invention includes all alternatives, modifications, and variations that fall within the literal and spirit of the claims of the invention, as well as all costs of the claimed subject matter. For example, those skilled in the art will readily recognize that the functions described herein may be implemented in virtually any network device capable of receiving HTTP messages, including content servers and client devices. Moreover, embodiments of the present invention may be applied to communication protocols other than the HTTP protocol. One of ordinary skill in the art will recognize from the foregoing detailed description that many alternatives, modifications, and variations are possible.

Claims (23)

1. A dynamically controllable network device comprising an analyzer and a service provider, said analyzer comprising instructions for selectively invoking said service provider in response to a command parsed from an external input received by said network device.
2. The network device of claim 1, wherein the external input comprises an HTTP-compliant message.
3. The network device of claim 1, wherein the network device is located between a client and a server, the parser further comprising instructions to selectively invoke the service provider in response to a command parsed from a request received from the client.
4. The network device of claim 1, wherein said network device is located between a client and a server, said parser further comprising instructions for selectively invoking said service provider in response to a command parsed from a data object received by the server.
5. A network device according to claim 4, wherein said service provider includes instructions for transcoding said data object prior to transmitting said data object to the client.
6. The network device of claim 1, wherein said network device is located between a client and a second network device, said parser further comprising instructions for selectively invoking said service provider in response to a command parsed by said network device from a data object received by the second network device.
7. The network device of claim 1, wherein the service provider includes instructions for reconfiguring the network device.
8. The network device of claim 7, wherein said service provider further comprises instructions for setting an operating parameter of said network device.
9. The network device of claim 1, wherein said service provider further comprises instructions for managing a log file used by said network device.
10. The network device of claim 1, wherein the service provider further comprises instructions for obtaining a status message from the network device.
11. The network device of claim 1, wherein the service provider further comprises instructions for restarting the network device.
12. The network device of claim 1, wherein said network device further comprises a network proxy.
13. The network device of claim 1, wherein said network device further comprises a content server.
14. The network device of claim 1, wherein said network device further comprises a client device.
15. A method for dynamically controlling a network device, wherein the network device is connected to a second network device, said method comprising the steps of:
receiving an input from the second network device;
extracting a command from the input; and
an action is performed in response to the extracted command.
16. The method of claim 15, wherein said step of receiving an input comprises receiving an HTTP-compliant message.
17. The method of claim 15, wherein said step of performing an action comprises reconfiguring the network device.
18. The method of claim 17, wherein the step of receiving an input comprises receiving results of an HTML form.
19. The method of claim 15, wherein said step of performing an action comprises transcoding a data object and transmitting said transcoded data object to another device.
20. A storage medium comprising a set of instructions for execution by a network device, wherein the network device is coupled to a second network device, said set of instructions comprising instructions for:
receiving an input from the second network device;
extracting a command from the input; and
an action is performed in response to the extracted command.
21. The storage medium of claim 20, wherein the storage medium comprises a magnetic storage device.
22. The storage medium of claim 20, wherein the storage medium comprises a memory coupled to the computer.
23. The storage medium of claim 20, wherein the storage medium comprises an optical storage device.
HK00105602.9A 1997-03-25 1998-03-20 System for dynamically controlling a network device HK1026487A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US60/042,071 1997-03-25
US09/000,711 1997-12-30

Publications (1)

Publication Number Publication Date
HK1026487A true HK1026487A (en) 2000-12-15

Family

ID=

Similar Documents

Publication Publication Date Title
CN1716940B (en) System for dynamically controlling a network device
US6345303B1 (en) Network proxy capable of dynamically selecting a destination device for servicing a client request
US6311215B1 (en) System for dynamic determination of client communications capabilities
US6457054B1 (en) System for reducing user-visibility latency in network transactions
US6088803A (en) System for virus-checking network data during download to a client device
US6185625B1 (en) Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object
US6311197B2 (en) Method for downloading a web page to a client for efficient display on a television screen
US6101328A (en) System for preventing multiple instances of the same dynamic executable module
KR100274738B1 (en) Method and apparatus for providing proxying and transcoding of documents in a distributed metwork
US20030093585A1 (en) System and method for providing real-time information to a web browser
US6108655A (en) Method and apparatus for transmitting images and other objects over a computer network system
US6957260B1 (en) Method of improving access to services provided by a plurality of remote service providers
CN1167016C (en) Methods to allow applets to access hosts other than the applet's origin
US7228343B2 (en) Client version advertisement service for overriding default version properties of client
US20020046262A1 (en) Data access system and method with proxy and remote processing
WO2002045374A2 (en) Filter proxy system and method
CA2313802A1 (en) Dynamic web page caching system and method
CA2505310A1 (en) A system and method for reducing bandwidth requirements for remote applications by utilizing client processing power
CN1494022A (en) A Method of Accessing Database Through Protocol Proxy
EP1696627B1 (en) Apparatus and system to retrieve information in a network
MacLarty et al. Policy-based content delivery: an active network approach
HK1026487A (en) System for dynamically controlling a network device
US20060074914A1 (en) Dynamic sample data switch
JP5043331B2 (en) Enhanced Internet session management protocol
CA2400808A1 (en) A system and method for providing real-time information to a web browser