Note: this white paper was originally written in early 1998 by John Ousterhout while he was at Sun. At that time we were experimenting with TclHttpd and Scotty to create a web-based interface to SNMP-managed devices. Since that time, TclHttpd was released as open source and has been used for a variety of embedded applications.
Over the past few years the World Wide Web has revolutionized the way that people access and view information. Web browsers such as Netscape Navigator and Microsoft Internet Explorer provide a simple and consistent way to access information in a variety of formats provided by millions of people all over the world. Links embedded in Web pages provide a powerful mechanism for connecting related information, so that users can browse from topic to related topic at their convenience.
In this white paper we describe how the Web can be used for management applications by embedding Web servers directly into devices or services to be managed. This approach provides easy remote access, simplifies the development of graphical user interfaces, and makes it easier to integrate management tools with other applications. We have developed an embeddable Web server based on the Tcl scripting language that is ideal for these applications, along with a client-side browser plugin module to enable enhanced user interfaces.
Problems with current approaches to management
Building software to manage devices and services has proven to be difficult and expensive. Whether managing an embedded device such as a network switch, energy control system, or manufacturing robot, or managing a server application such as a transaction processing system, management tools must address several complex issues.
First, the management tools must provide remote access to the device or service. Typically a single management tool will be used by many people to control many devices or services. Ideally, each user should have complete access to all the devices or services from their desktop. In the past, this has required the development of custom network protocols. Each manufacturer uses its own protocols, so it is difficult to integrate the management tools from different manufacturers.
Second, management tools require graphical user interfaces (GUIs) to simplify their use. Unfortunately, GUI development has traditionally been very expensive and time-consuming, so management tools often have weak interfaces. Furthermore, the APIs used to develop GUIs are platform-specific, so management tools developed for Windows cannot be used on Unix platforms or vice versa; sometimes the tools are not even portable among different flavors of Unix.
Third, management tools need to be flexible. It should be easy to extend management tools to support new devices or services, and it should be easy to integrate management tools with other applications. For example, management tools for network switches should be able to communicate with a database system that stores information about the network configuration, and management tools for energy control systems should have easy access to weather information for predicting future demand. Unfortunately, many of today's tools are not very flexible: they are based on compiled languages and distributed in binary form, which makes it hard for customers to extend the tools and integrate them with other applications. Each manufacturer uses different APIs and GUIs, which makes it hard for different management tools to work together.
The Web solution
The Web offers simple solutions to many of the management problems described above. It uses a single protocol, HTTP, for communicating between browsers and the Web servers that store Web pages. Thus browsers and servers from different manufacturers can easily work together, just by supporting the standard HTTP protocol. Furthermore, the HTTP protocol allows browsers not only to fetch information for display, but also to invoke actions on the Web servers using "post" requests that include parameters.
The Web also provides a standard approach to graphical user interfaces based on the HTML document format. Browsers are available for virtually all platforms, so GUIs based on HTML are highly portable.
Lastly, the Web makes it easy to integrate diverse applications and information sources. A Web page from one source can refer to other pages using links (Uniform Resource Locators, or URLs) and can also invoke actions on various servers.
Embedded Web servers
Many device and service vendors have recognized the opportunity offered by the Web and are looking for ways to replace their existing management tools with Web-based tools. In this approach, Web browsers provide a universal interface for management applications. They communicate with the devices and services using the same HTTP protocol used for normal Web accesses.
In order for standard Web browsers to communicate with devices and servers, each device or service must contain an embedded Web server. The embedded Web server runs as part of the device or service, implements the server side of the HTTP protocol, and maps URL references to procedure calls in its associated device or service. To query the status of the device or service, a user might click on a link that refers to a page hosted by the embedded Web server. When the server receives the request, it invokes a procedure associated with the URL, which synthesizes a page containing the requested information. Different URLs correspond to different kinds of information. For example, a network switch might offer one URL that returns information about recent traffic patterns through the switch and another URL that returns configuration information about the switch's ports.
To control a device or service, a user can fill out an HTML form and submit it to the embedded server. For example, to disable a port on a network switch, a manager might fill out a form that contains the name of the port. When the form is submitted, it will be posted to a URL in the embedded server and the information provided by the manager will be included as parameters for the post request. When the server receives the post request, it invokes a procedure associated with the request, passing it the parameter from the request that indicates the name of the port. The procedure uses the parameter to disable the particular port.
In order to use the Web for management a new kind of Web server is needed. Such a Web server must have the following properties:
Existing Web servers fail to meet most of these criteria. They are designed as large stand-alone applications that are not intended to be embedded in other applications or devices. They typically have large memory footprints (many megabytes) and place significant demands on the underlying operating system. Many servers are tailored for particular operating systems and cannot easily be used in other environments. Most servers are difficult to customize, requiring large configuration files that provide relatively little power. Finally, most commercially-available servers have high per-unit prices that make it impractical to deploy them in large volumes.
The Tcl solution
We have developed a new kind of Web server that is ideally suited for embedded applications. The server is implemented as a script in the Tcl scripting language, and it uses the existing Tcl mechanisms for customization and integration. The resulting server has many attractive properties:
Enhancing client-side GUIs with the Tcl/Tk plugin
Although the Web simplifies many of the issues associated with remote management, it constrains the graphical user interfaces that can be constructed on the client side. HTML supports only simple forms based on textual input and requires server involvement to handle nontrivial user interactions. To get around these limitations we have developed a Tcl/Tk plugin module for Netscape Navigator and Microsoft Internet Explorer. The plugin module allows Tcl/Tk scripts to be incorporated into Web pages and executed in the browser. This permits more intuitive and graphical user interfaces than are possible with HTML alone. For example, with the plugin it is possible to create animations, graphs, and charts. It is also possible to create more interactive user interfaces that respond locally to user input. Tcl and Tk enable exceptionally rapid development of these interfaces, typically 10x faster than with other approaches to GUI development, and Tcl/Tk scripts are portable among all major platforms.
The Tcl/Tk plugin makes it possible to program both the client and
server sides with the same language, which provides additional productivity
improvements. This also enables interesting interactions between the
browser client and the Tcl server where Tcl scripts are sent back and
forth between the client and server to invoke complex actions.