Patent Publication Number: US-7917610-B2

Title: XML control management

Description:
REFERENCE TO RELATED APPLICATIONS 
     This application claims the benefit of Provisional Application Ser. No. 60/370,920, filed Apr. 9, 2002. 
    
    
     BACKGROUND OF THE INVENTION 
     This invention relates to data communications networks, and particularly to methods for controlling such networks and monitoring the operation thereof in connection with data traffic. 
     It is an object of the invention to provide an improved method for monitoring and controlling the operation of embedded devices, such as access points and routers, in a data communications networks. 
     SUMMARY OF THE INVENTION 
     In accordance with the invention there is provided a method for monitoring operation of embedded devices in a network having a computer with a user interface and at least one embedded device for carrying out network data communications. An XML server is provided at the embedded network device and arranged to monitor operational data in the embedded device. The XML server provides XML data messages having data representing the operational data of the embedded device over the network to the computer. A browser program is provided at the computer for receiving the XML data messages from the XML server and for providing corresponding data to a user via the user interface. 
     In one arrangement the data can be graphically displayed to the user in a display representing the data received from one or more embedded devices. The data may represent data traffic rate handled by the embedded device, device statistics, error rates, current configuration settings and alerts. 
     In a preferred arrangement the user can formulate XML command data messages for controlling the operation of the embedded device. The command messages are configured by the browser and sent to the embedded device over the network. The server program is arranged to receive and parse the XML command messages and store the command data in the embedded device for controlling the operation thereof. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a data communications network in which the method of the present invention may be practiced. 
         FIG. 2  is a block diagram illustrating the software configuration of an embedded device according to an embodiment of the method of the present invention. 
         FIG. 3  is an illustration of a first user interface according to an embodiment of the present invention. 
     
    
    
     DESCRIPTION OF THE INVENTION 
     Referring to  FIG. 1 , there is shown a data communications network  10 , which in the  FIG. 1  example includes a personal computer  14 , which may be provided for the purpose of monitoring and controlling of network operation. Network  10  includes wired network  12  and routers  18 A and  18 B connected thereto for data communications with computer  14  and other computers connected to wired network  12 . In addition to devices that are connected to network  10  by wired connections, there are provided mobile units  22 A to  22 E which are in wireless communication with network  10  by wireless data communication with access points  20 A through  20 F, using a selected wireless communication protocol, such as IEEE Standard 820.11. Wireless data communications may also be provided using one more cell controllers  19 , which operate in conjunction with RF Ports  21 A and  21 B, as described in copending U.S. patent application Ser. No. 09/528,697 filed Mar. 17, 2000, the disclosure of which is incorporated herein by reference. Routers  18 A and  18 B interconnect the access points and wired devices  19  to the wired network  10 . 
     In a large institution, such as an industrial facility, educational institution or hospital, network  10  may be very large and complex. In such systems it is desired that the system administrator using computer  14  have the ability to monitor system operation, including overload or failure of embedded devices, such as routers  18 , Access Points  20  and other devices, such as telephone system interfaces that may be part of the system. 
     The present invention provides a method wherein a system administrator can monitor operation of the embedded devices, to determine their operational status and traffic load. The invention further provides a method of providing command data messages for controlling operation of such embedded devices using the network control computer  14 . 
     The embedded devices are provided with a specialized eXtensible Markup Language (XML) based management interface. The XML management interface provides a complete interface for the various functions of the embedded network device, including real time device statistics, system alerts and notification, device command and control and configuration settings, user interface design and validation, all of which are defined in a specialized embedded markup language. The user interface is accessed through a browser program operating on computer  14  and executed on a variety of Java enabled agents. This feature enables direct access to the embedded device from computer  14  on network  10  or through an interface form the World Wide Web. 
     The Java applet in computer  14  typically runs in the context of a Java enabled browser and processes XML messages provided from the embedded devices in a specialized markup language similar to HTML. The markup language is selected to have tags and attributes that correspond to the attributes of the embedded network device. The XML language is selected to provide communication of generalized embedded device variables that can be communicated to the computer  14  and modified by an applet or the user and displayed to the system administrator via a User Interface. In addition The administrator can originate XML control messages to be sent to the embedded device to modify the variables stored therein and thereby control its operation. 
     An XML applet and a portable server component are provided in the embedded device and run on the embedded device processor. The server component is preferably an HTTP and XML server built from a set of portable software modules. The XML server can communicate to the core of the embedded device in a variety of ways to retrieve or to store system variables. The applet portion is stored on the embedded device, but executes in the context of a Java enabled agent or browser. The applet includes a general HTTP and XML protocol handlers, which implement highly secure network access to various functions and data from the server on the embedded device, as well as markup parsing, embedded system variable and content objects, that format and display GUI control objects within the applet. 
     The system enables an embedded device to provide a complete management interface including real-time statistical information, command and control, and configuration to any XML enabled client by writing some simple markup language. The system connects the embedded device system variables and information to a UI using a simple markup language. The simple markup language defines special UI control objects designed to display specialized embedded network device information in an easy to understand graphical format. In addition the system can update the system variable information displayed by the applet in real-time reflecting the current state of the embedded device. 
     As shown in  FIG. 2 , XML messages are sent and received by the core logic of the embedded device using an open standards CORBA interface  32 . The CORBA interface  32  can be used to access the device and the services it offers by any client that is CORBA capable. The CORBA interface  32  is also used internally by the HTTP Web server  34 , SNMP services  36  and Command Line Interface (CLI) services  38 . The CORBA interface can also be accessed by an external CORBA client device. 
     The XML Server/Parser  40  formulates XML data messages by reading operational data concerning embedded system variables  42  from the processor of the embedded device. These variables include operational data generated in the embedded system business/functional logic  46 . The XML Server/Parser  40  also receives and parses command messages in XML format from the computer  14  over the network and provides embedded system command variables  44  to be stored in the device and available to the embedded system business/functional logic  46 . 
     One simple example of XML that may be used across the interface is as follows: 
     
       
         
           
               
             
               
                   
               
             
            
               
                 &lt;config&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;RFPort_Profiles&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;rfpprofile config=“Default RFPort 
               
            
           
           
               
            
               
                 Profile,rfpp_desc1,runtime1.img, 
               
               
                 diagnostic1.img,envsens1.img,1,3,5,1,2.0,10,3,3,FF.FF. 
               
               
                 FF.00, 
               
            
           
           
               
               
            
               
                   
                 FF.FF.00.00,1,64” /&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;rfpprofile config=“Alternate RFPort 
               
            
           
           
               
            
               
                 Profile,,rfpRuntime.bin, 
               
               
                 rfpDiagnostics.bin,rfpEnvironment.bin,9,0,0,0,,32,8,8, 
               
            
           
           
               
               
            
               
                   
                 00.00.00.00,00.00.00.00,1,256” /&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;/RFPort_Profiles&gt; 
               
               
                   
                 &lt;CC_Profiles&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;cc_profile config=“Default CC Profile 0” 
               
            
           
           
               
            
               
                 rfport_profiles=“Default RFPort Profile”/&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;cc_profile config=“Default CC Profile 1” 
               
            
           
           
               
            
               
                 rfport_profiles=“Alternate RFPort Profile”/&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;/CC_Profiles&gt; 
               
               
                   
                 &lt;CC config=“CellController Name,CC 
               
            
           
           
               
            
               
                 Description,1,Default CC Profile 0, 
               
            
           
           
               
               
            
               
                   
                 CellController. ini, 
               
            
           
           
               
            
               
                 /usr/bin/apache/cc,1,00:A4:C0:91:D2:9C” /&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;RFPort&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;RF config=“RF 
               
            
           
           
               
            
               
                 Port#1,AA:AA:AA:AA:AA:AA,1,40,RFPort Location,v1.00, 
               
            
           
           
               
               
            
               
                   
                 Default RFPort Profile,9,1.0,082101,US” 
               
            
           
           
               
            
               
                 graphs =“Graph_RFPort_0”/&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;RF config=“RF 
               
            
           
           
               
            
               
                 Port#2,AA:AA:AA:AA:AA:BB,1,40,RFPort Location,v1.00, 
               
            
           
           
               
               
            
               
                   
                 Default RFPort Profile,9,1.0,082101,US” 
               
            
           
           
               
            
               
                 graphs=“Graph_RFPort_1”/&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;/RFPort&gt; 
               
               
                   
                 &lt;Graphs&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;CC_Profiles&gt; &lt;/CC_Profiles&gt; 
               
               
                   
                 &lt;RFPort_Profiles&gt; &lt;/RFPort_Profiles&gt; 
               
               
                   
                 &lt;RFPort&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;gr 
               
            
           
           
               
            
               
                 configr=“AA:AA:AA:AA:AA:AA,Graph_RFPort_0,0,RfTx,0,RfRx 
               
               
                 ” /&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;gr 
               
            
           
           
               
            
               
                 config=“AA:AA:AA:AA:AA:BB,Graph_RFPort_1,1,RfTx,1,RfRx 
               
               
                 ” /&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;/RFPort&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;/Graphs&gt; 
               
            
           
           
               
            
               
                 &lt;/config&gt; 
               
               
                   
               
            
           
         
       
     
     The XML above would be used by a software client such as an Applet to display properties or data related to the business objects contained in the embedded device. In this case, a Cell Controller device  19  and its&#39; properties, and two RF Port devices  21 A and  21 B and their properties. In addition, graphical information about the RF Port devices is also delivered to the Applet software for display. 
     Once the client software (such as an applet) has created a display object that represents a business object in the embedded device, the embedded device can push an updated data set to the connected client. The data can be immediately rendered by the client software. An example of XML data pushed across the interface is as follows: 
     
       
         
           
               
             
               
                   
               
               
                 //Data for statistic graph on the Applet(PUSH MODEL) 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
               
            
               
                   
                 &lt;metric&gt; 
               
            
           
           
               
               
            
               
                   
                 &lt;stats statType=“RfTx” oid=“12”&gt; 
               
               
                   
                 &lt;stats statType=“RfTx” oid=“0” 
               
            
           
           
               
               
            
               
                   
                 val=“#,998690869,318,#,998438936,271,#,998438976, 
               
               
                   
                 253,373,290,323,289,302,296,268,309,250,305,314,316, 
               
               
                   
                 308,255,281,348,302,313,347,302,315,281,326,333,314, 
               
               
                   
                 313,283,295,293,270,301,296,257,266,272,#,998439096, 
               
               
                   
                 292,301,296,304,292,285,299,291,#,998439816,208,298, 
               
               
                   
                 296,298,294,299,297,295,299,290,290,301,296,301,298, 
               
               
                   
                 295,300,298,291,296,297,308,295,296,295,295,302,300, 
               
               
                   
                 293,297,301,298,299,297,294,291,301,300,302,292,295, 
               
               
                   
                 298,297,295,296,291,290,299,298,294,301,301,289,297, 
               
               
                   
                 301,296,292,297” 
               
               
                   
                 &gt; 
               
               
                   
                 &lt;stats statType=“RfRx” oid=“0”&gt; 
               
               
                   
                 &lt;stats statType=“RfTx” oid=“1”&gt; 
               
               
                   
                 &lt;stats statType=“RfRx” oid=“1” 
               
               
                   
                 val=“#,998690869,366,#,998442856,265,151,282, 
               
               
                   
                 467,371,286,256,297,541,352,584,534,353,365,334,472, 
               
               
                   
                 322,#,998442916,444,324,414,421,393,422,431,398, 
               
               
                   
                 360,406,425,439,415,385,382,394,367,371,359,371,410, 
               
               
                   
                 473,395,435,365,361,368,386,410,423,434,339,366,397, 
               
               
                   
                 441,341,408,386,400,364,383,418,382,337,395,443,379, 
               
               
                   
                 349,439,358,405,409,389,406,429,358,391,#,998443036, 
               
               
                   
                 391,398,395,401,395,388,388,406,391,386,#,998443756, 
               
               
                   
                 423,290,291,304,296,297,296,290,298,296,296,294,292, 
               
               
                   
                 293,297,299,293,290,294,299,301,296,295,296,301,297, 
               
               
                   
                 296,295,294,303,303,296,296,296,295,295,293,293,297, 
               
               
                   
                 311,395,393,392,391,391,395,401,394,396,392,395,389, 
               
               
                   
                 394 ,397,390,395,401,391” 
               
            
           
           
               
               
            
               
                   
                 &lt;/metric&gt; 
               
               
                   
                   
               
            
           
         
       
     
     The XML interface is not only used to store and retrieve data to and from the embedded device, but also can be used as a command interface to the embedded device. The external client (Applet, SNMP, CLI, etc.) can command the embedded device to perform functions by simply sending an XML command to the device. The XML command below commands the embedded device to enable the push of transmit packets to the connected software client, and disables the push of received packets for the business object as follows: 
                                            &lt;setGroup p=“cc.statistic” seq=“1”&gt;                         &lt;set n=“RFPort[1] .TxPackets”&gt; &lt;str           v=“true”&gt; &lt;/set&gt;                         &lt;set n=“RFPort[2] .RcvPackets”&gt; &lt;str v=“false”&gt; &lt;/set&gt;                         &lt;/setGroup&gt;                        
The reply to the XML request is interface is as follows:
         &lt;ok seq=“1”/&gt;       

     The data supplied by one or more embedded devices can be displayed graphically to the user, for example traffic via Access Points or RF Ports can be displayed as a speedometer display as shown in  FIG. 3 . 
     While there have been described what are believed to be the preferred embodiments of the invention those skilled in the art will recognize that other changes and modifications may be made thereto without departing from the spirit of the invention, and it is intended to claim all such changes and modifications as fall within the true scope of the invention.