SlideShare a Scribd company logo
United States Patent 
US007039724B1 
(12) (10) Patent N0.: US 7,039,724 B1 
Lavian et al. (45) Date of Patent: May 2, 2006 
(54) PROGRAMMABLE COMMAND-LINE 5,892,950 A * 4/1999 Rigori et a1. ............. .. 717/146 
INTERFACE API FOR MANAGING 6,199,133 B1* 3/2001 Schnell ........ .. 710/110 
OPERATION OF A NETWORK DEVICE 6,625,590 B1 * 9/2003 Chen et a1. . . . . . . . . . . . .. 707/1 
6,661,800 Bl * l2/2003 Hayama et a1. 370/403 
75 _ . _ 6,662,221 Bl* 12/2003 Gonda et a1. 709/223 
( ) Inventors‘ lTlalblsialg ljavlan’ gl11nny‘éa1e? CAB/?gs’ 6,665,714 B1 * 12/2003 Blumenau et a1. 709/222 
(68)“ ' aeger’ Iver Pnng’ 6,724,408 B1 * 4/2004 Chen et a1. ............... .. 715/853 
* cited by examiner 
(73) Assignee: Nortel Networks Limited, (CA) _ 
Primary ExamineriKlm Huynh 
( * ) Notice: Subject to any disclaimer, the term of this Assistant ExamineriAngel _L Caslano _ 
patent is extended or adjusted under 35 (74) Attorney, Agent, or FtrmiMcGumness & Manaras 
U.S.C. 154(b) by 810 days. LLP 
(21) Appl. No.2 09/753,017 (57) ABSTRACT 
(22) Filed: Dec. 29, 2000 Amethod of managing a network device, includes providing 
a command-line interface application programming inter 
Related U-s- Application Data face (CLl-API) compatible with a command-line interface 
(63) continuationdmpart of application NO 09/522,332, (CLI) of the network device, receiving instructions from an 
?led on Mar‘ 9 2000' application that calls one or more routines in the CLI 
’ application programming interface, and generating at least 
(51) Int CL one command in response to receiving instructions from the 
G06F 15/16 (200601) application wherein the at least one command is compatible 
G061? 15/177 (200601) with the CLI of the network device. An apparatus includes 
(52) us. Cl. .................... .. 709/250- 709/208- 709/220- a remote Sen'al Command-line interface (RS-CU) device 
709/221. 709/2’22. 710/1’10. 707/1’ having a storage device capable of storing instructions, a 
(58) Field of Classi?cation seérch ’ 709/22’0i222 network port capable of being connected to the network and 
7O9/Z6éIW7IO/HO 707/1’ capable ofprocessing a network protocol stack in addition to 
See a lication ?le for Com lete séarch histo’ receiving the instructions, a serial port capable of processing 
pp p ry' a serial protocol and capable of being connected to the 
(56) References Cited non-application enabled network device, and a processor 
U.S. PATENT DOCUMENTS 
capable of processing instructions stored in the storage area 
of the RS-CLI device. 
5,617,527 A * 4/1997 Kressin et a1. ............ .. 715/840 
5,701,488 A * 12/1997 Mulchandani et a1. .... .. 717/128 15 Claims, 11 Drawing Sheets 
108 110 
Application Authentication 
Sewer Sewer 
1 1 
' 104 
Network 102 Network 
Device Device 
111 
112 Target 
Network 
Device 
11 
17 
Client Node 114 
106 With User 
Interface 
Network 
Device 
1 
116 
Network 
Monitor 
Server
U.S. Patent May 2, 2006 Sheet 1 0f 11 US 7,039,724 B1 
108 110 
Application / Authentication / 
Sewer Server 
I I 104 
Network /1O2 Network / 
Device Device 
111 
112 Target / Network 
Device 
Client Node /114 
106 With User 
Interface 
Network 
Device 
I 116 
Network / Monitor 
100 / Server 
FIG. 1
U.S. Patent May 2, 2006 Sheet 2 0f 11 US 7,039,724 B1 
112 
202  
MEMORY / 226 
Client Application 
/ 224 
Mobile Agent 
Module / 222 
Object-Oriented MIB Interface 221 
MIB Compiler / 220 
MIB Map 
21 
6  Native SNMP Virtual 
Variable Stack Machine 218 
Interface Runtime / 204 
214 _ .  Annota?on Environme 212 Processor 
Layer  ?t / 
RTOS 
 217 
211 
Network 208 210 
206 Communication Secondary Input-Output 
 Port / 207 Storage Ports 
Loopback / 
Address 
FIG. 2
U.S. Patent May 2, 2006 Sheet 3 0f 11 US 7,039,724 B1 
C Start ) 
i 302 
 Receive Management Information 
Base Definitions For Network Device 
i 304 
 Parse And Process MIB Definitions 
For Network Device 
306 1 l 
 Generate Object Oriented MIB 
Interface And MIB Map 
Corresponding To MIB Definitions 
( End 3 
FIG. 3
U.S. Patent May 2, 2006 Sheet 4 0f 11 US 7,039,724 B1 
MIB Data 
Group 
406A 
SNMP 
Group 
MIB Data 
Class 
Interface 
Class 
4068 
SNMP 
Class
U.S. Patent May 2, 2006 Sheet 5 0f 11 US 7,039,724 B1 
502 Network Management Server 
 Requests That A Network Device 
Load Operations Associated With A 
Task 
l 504 Network Device Accesses 
 Application Server For Application 
Corresponding To Requested 
Process 
l 506  Application Server Locates 
Application And Transfers To 
Network Device 
l 
508 . . .  Network Devlce Loads Appllcatlon 
And Executes Requested Process 
l 510  Network Device Results Are 
Provided To Network Management 
Services 
FIG. 5
U.S. Patent May 2, 2006 Sheet 6 0f 11 US 7,039,724 B1 
( Start I 
0 
Receive Request For 
602  Network Parameters 
From Application 
Executing On 606 
Network Device  
Send SNMP 
Request For 
604 Network 
|s Request Parameters T0 
or MIB Information Network Address 
Targeted At Local Of Target 
Network Network Device 
Devlce? 
612  
608  ‘V 
S d SNMP 
Reqleirest Through SNMP Stack on 
Network Protocol 611 Target Network Device 
.. .. Retrieves Network 
( loopback Access MIB Parameters 
Address) LOCa| Information 
Network Device Direc?y? 610  
v 
614  ‘V Results Returned To 
Network protocol on Application Executing 
Local Network Device _ on LOCal ‘Network 
Converts Request Access MIB Devlce 
Into SNMP Request Information For 
For A Network Requesting Local 
Parameter Network Device 
+ t 
SNMP Stack pReslultstiRetéirned To 
Retrieves MIB — 2;’ ‘GL8 'orl' Nxecut'lz'g ; 
Request n oca . etwor 
Device 
 618 / " 
616 End
U.S. Patent May 2, 2006 Sheet 7 0f 11 US 7,039,724 B1 
702 
226 / 
 MEMORY 
 Client Application 
224 Mobile Agent / 
Module / 222 
Object-Oriented MIB Interface 
221 
MIB Com iler 
207 . P . / 220 
MIB Map 
Loop-back Native SNMP Virtual 
Address Variable Stack Machine / 218 
interface Runtime 
Annotation Environme 
Layer  nt 212 
RTOS 
'  217 
708 Unseoure 710 Secure 
Communication 
Link 
Communication 
Link 
704  
NMS 
Network 
Management 
Application 
‘ A 
/ 
706 
FIG. 7
U.S. Patent May 2, 2006 Sheet 8 0f 11 US 7,039,724 B1 
802  
Network Management Application 
Encrypts Network Management 
Commands And Transmits Over 
Network 
l 
804  
Client Application On Network 
Device Authenticates And 
Authorizes Network Management 
Application 
l 
806  Client Application Decrypts Network 
Management Commands Received 
Over Network 
l 
808  Network Commands Are 
Transmitted To Local Network 
Device Through Loopback Address 
l 
810  Results Are Encrypted And 
Returned To Network Management 
Application 
FIG. 8
U.S. Patent May 2, 2006 Sheet 9 0f 11 US 7,039,724 B1 
902  
Programmable Command Line Interface 
API (CLl/API) 
904 
Session Mgt Classes 
906 
Input-Output Classes 
Configuration Classes 908 
910 
Macro Generation 
Classes 
912 
Other Classes 
FIG. 9
U.S. Patent May 2, 2006 Sheet 10 0f 11 US 7,039,724 B1 
1012 1006 SNJEN 
- Device 
o i ii n‘—>ISeria|C0nnection 
Terminal 1008  RS_CL| 
Device 
Network connection 
1010 
1002 1004 
 JEN Device  NJEN 
Device 
 1000 
FIG. 10
U.S. Patent 
1104 
1114  
May 2, 2006 Sheet 11 0f 11 
1102 
Application Processes 
Instructions To Control Target 
Network . 
Does Target 
Network Device Receive 
Instructions Only Over 
CLl-API Creates Corresponding 
CLI Commands In Response To 
Application Instructions 
CLl-API Sends CLI Commands 
To Target Network Device Over 
Network Connection 
l 
l 
1108 / 
CLl-API Sends Instructions To 
RS-CLI Device 
1110 
RS-CLI Device Creates CLI 
Commands In Response To 
Application Instructions 
RS-CLI Device Sends CLI 
Commands To Target Network 
Device Over Serial Port 
1116  CLI Commands Are Executed On 
Target Network Device 
V 
Results Are Returned To 
Application 
End 
FIG. 11 
US 7,039,724 B1
US 7,039,724 B1 
1 
PROGRAMMABLE COMMAND-LINE 
INTERFACE API FOR MANAGING 
OPERATION OF A NETWORK DEVICE 
This application is a continuation-in-part and claims pri 
ority from US. application Ser. No. 09/522,332, entitled 
METHOD AND APPARATUS FOR ACCESSING NET 
WORK INFORMATION ONANETWORK DEVICE, ?led 
Mar. 9, 2000. 
TECHNICAL FIELD 
This invention generally relates to performing netWork 
management remotely on netWork devices connected to a 
netWork. 
BACKGROUND 
Computer netWorks are becoming increasingly complex 
and di?icult to manage. This is driven in part by the 
ever-increasing variety of netWork devices, computers, and 
softWare being combined together to integrate large enter 
prise-based intranets With the Internet. NetWork manage 
ment tools have been produced to monitor these combina 
tions of hardWare and software and help troubleshoot 
netWork failures When they occurred. 
Traditional netWork management tools use a protocol 
called simple netWork management protocol (SNMP) to 
monitor netWork devices such as routers, sWitches, hubs, 
remote access devices, or even computers in a netWork. The 
protocol used to interface With SNMP includes rudimentary 
commands to operate on data such as to “get” a variable, 
“set” a variable, or “test” a variable. 
Having just a feW simple commands can make it di?icult 
to perform netWork management tasks. Speci?cally, it can 
be di?icult using these basic commands to develop sophis 
ticated netWork management applications to monitor and 
troubleshoot a netWork. Each task may need to be custom 
iZed to the parameters and capabilities of each netWork 
device. Further, a netWork management task sending com 
binations of these commands to one or more netWork 
devices connected to the netWork may Wait a signi?cant 
period of time for all the necessary results to be returned. 
NetWork delays can be caused by netWork congestion and 
the unique processing bottlenecks associated With each 
netWork device. 
NetWork management tasks must also be performed 
securely to prevent accidental or even malicious interlopers 
from altering netWork con?gurations and operation. The 
most Widely used SNMP based netWorks do not provide the 
appropriate levels of security because commands are trans 
mitted in the “clear”. Con?dential information such as a 
community string and private string can be captured and 
used to gain access to netWorks. Further, sensitive business 
information transmitted in the course of an electronic busi 
ness transaction can also be captured and misused for 
monetary gain. Advanced versions of SNMP such as SNMP 
Version 3 provide a degree of security but have not been 
Widely adopted and therefore cannot be relied on. 
It is also di?icult to manage netWorks having netWork 
devices from different vendors and with different capabili 
ties. Each netWork device generally requires the netWork 
administrators managing the netWork to have special net 
Work management training. Additionally, the interface used 
to manage the netWork devices may also hinder e?fective 
netWork management practices. For example, some netWork 
devices can only be managed using a terminal connected to 
20 
25 
30 
35 
40 
45 
50 
55 
60 
65 
2 
a serial port on the netWork device While others can be 
managed by logging into the netWork device over a netWork 
connection using telnet, rlogin, or other remote login ser 
vices. Often the netWork devices receiving commands over 
the serial interface implement proprietary command-line 
interfaces (CLI) and commands only accessible by a user 
entering commands on the serially attached terminal. Unfor 
tunately, these command-line interfaces (CLI) are not stan 
dard and require the netWork administrators to learn and use 
different commands and netWork management methods. 
SUMMARY 
In one aspect of the present invention, a method of 
managing a netWork device, includes providing a command 
line interface application programming interface (CLI-API) 
compatible With a command-line interface (CLI) of the 
netWork device, receiving instructions from an application 
that calls one or more routines in the CLI application 
programming interface, and generating at least one com 
mand in response to receiving instructions from the appli 
cation Wherein the at least one command is compatible With 
the CLI of the netWork device. 
In another aspect of the invention, a netWork having 
netWork management capabilities, includes a non-applica 
tion enabled netWork device having a CLI capable of 
controlling one or more netWork management aspects of the 
non-application enabled netWork device, and an application 
enabled netWork device capable of executing applications 
that use a CLI-API to generate one or more commands 
compatible With the non-application enabled netWork device 
CLI and transmits the one or more commands to the non 
application enabled netWork device over the netWork for 
execution. 
Yet another aspect of the invention is a remote serial CLI 
(RS-CLI) device having a storage device capable of storing 
instructions, a netWork port capable of being connected to 
the netWork and capable of processing a netWork protocol 
stack in addition to receiving the instructions, a serial port 
capable of processing a serial protocol and capable of being 
connected to the non-application enabled netWork device, 
and a processor capable of processing instructions stored in 
the storage area of the RS-CLI device that at least generates 
commands compatible With a CLI of the non-application 
enabled netWork device in response to processing the 
instructions stored in the storage area. 
Another aspect of the invention includes a method of 
managing a netWork device that receives an application 
having instructions compatible With a CLI application pro 
gramming interface (CLI-API) con?gured to Work With a 
CLI of the netWork device, creates CLI commands capable 
of controlling the netWork device in response to processing 
one or more of the instructions compatible With the CLI 
API, transmits the CLI commands created by the CLI-API 
over a netWork to the netWork device, and processes the CLI 
commands on the netWork device. 
In the various aspects of the invention and Where appro 
priate, Java object-oriented applications and applets are 
executed that manage one or more netWork devices over the 
netWork. The instructions in these applications and applets 
generate command-line interface (CLI) commands through 
the CLI-API to manage the netWork devices. 
The details of one or more embodiments of the invention 
are set forth in the accompanying draWings and the descrip 
tion beloW. Other features of the invention Will be apparent 
from the description and draWings, and from the claims.
US 7,039,724 B1 
3 
DESCRIPTION OF DRAWINGS 
The accompanying drawings, which are incorporated in 
and constitute a part of this speci?cation, illustrate an 
embodiment of the invention and, together with the descrip 
tion, serve to explain principles of the invention. 
FIG. 1 is a block diagram of an example network. 
FIG. 2 is a block diagram example of a network device 
architecture. 
FIG. 3 illustrates the operations used in one embodiment 
to convert network parameters for a network device into an 
object-oriented compatible interface for accessing those 
network parameters. 
FIG. 4 depicts the relationship between a management 
information database (MIB) and the corresponding object 
oriented MIB classes in one embodiment. 
FIG. 5 illustrates the operations a network management 
server (NMS) performs to gather network parameters from 
a network device. 
FIG. 6 illustrates the operations used by a network device 
to gather network parameters. 
FIG. 7 is a block diagram of a network management 
server (NMS) securely communicating a network manage 
ment protocol commands to a network device. 
FIG. 8 is a ?owchart diagram for securely communicating 
network management commands to a network device over a 
network. 
FIG. 9 is a block-diagram illustrating a command-line 
interface application-programming interface (CLI-API) for 
a network device. 
FIG. 10 is a block diagram of a network having network 
devices capable of transmitting and receiving commands 
from an application through a CLI-API. 
FIG. 11 provides the operations an application performs 
to manage network devices using CLI-API alone and in 
conjunction with a remote serial command-line interface 
(RS-CLI) device. 
DETAILED DESCRIPTION 
Systems and methods described herein are used to dis 
tribute network management tasks to one or more network 
devices connected to a network. A network application 
distributed to each network device collects relevant network 
parameters from each network device and transmits the 
results back to a central NMS or to other network devices on 
the network for further analysis. Each network application 
can be programmed to perform a series of operations using 
an object-oriented programming language such as Java. The 
network application interfaces on each network device pro 
vides an application programming interface (API) compat 
ible with the particular programming language. This API is 
compatible with legacy network management protocols such 
as simple network management protocol (SNMP) and, 
therefore, can be adapted to work with a wide range of 
legacy compatible devices. 
Tools used to generate the API consistent with the present 
invention include a management information database 
(MIB) to object-oriented software compiler and a MIB map. 
The compiler uses existing MIB information to generate an 
object oriented MIB interface to the underlying MIB infor 
mation collected on each network device. The compiler also 
generates a MIB map to determine if access to the MIB 
information is made directly to the storage location of the 
MIB database or through a network address and network 
management protocol associated with the network device. 
20 
25 
30 
35 
40 
45 
50 
55 
60 
65 
4 
FIG. 1 illustrates an exemplary communication system 
100 including a network device 102, a network device 104, 
a network device 106, and a target network device 112. 
Network devices 102, 104, 106, and target network device 
112 includes switches, routers, hubs, and similar devices 
capable of processing ?xed-length or variable-length pack 
ets in a network. 
Network device 102 facilitates the transfer of applications 
from an application server 108 to the other network devices 
and nodes on the network. Server 108 provides applications 
that can execute directly on network devices 102*106 and 
target network device 112. The variety of network applica 
tions available for downloading from application server 108 
increases the network management capabilities of each 
network device. For example, application server 108 may 
provide an application to a network device that enables the 
device to ?lter network traf?c containing data packets gen 
erated from activities not critical to business, such as brows 
ing the Internet. The resulting increase in bandwidth can be 
used for more critical business needs. 
Network device 104 enables authentication server 110 to 
authenticate downloading of applications from application 
server 108 to other network devices within communication 
system 100. Authentication server 110 can identify a net 
work device on the network and determine if that device 
should or should not receive a particular application. For 
example, authentication server 110 may authenticate a par 
ticular application and determine if the application should be 
downloaded to a network device in communication system 
100. This feature could be used to prevent introduction of 
viruses or other unauthorized software onto the network. 
Additionally, authentication server 110 may also determine 
if a network device within communication system 100 has 
proper authoriZation to download an application. 
Network device 106 facilitates communication between a 
network monitor server (N MS) 116 and other network nodes 
and processes within communication system 100. Tradition 
ally, an NMS will send network commands to the network 
devices and, in return, receive input from the network 
devices, including network parameters. This traditional 
approach to network management requires NMS 116 to 
perform a majority of the processing for network manage 
ment. In contrast, system 100 distributes processing to the 
network devices that are in communication with the net 
work. This reduces the processing load and frees up NMS 
116 so that it can process more critical tasks. For example, 
network device 102 may monitor network tra?ic between it 
and network 111 to reduce the processing load on NMS 
server 116. In such a case, NMS 116 might receive a 
noti?cation from network device 102 when device 102 
detects that the network bandwidth has exceeded a prede 
termined threshold. 
Target network device 112 depicts an example network 
device monitored by either a user or central NMS 116. The 
client node user interface 114 allows the user to perform 
network management tasks that execute directly on target 
network device 112. NMS 116 is used to monitor larger and 
more frequent management tasks dealing with groups of 
network devices or the overall network. For example, NMS 
server 116 can execute software agents on different network 
devices and monitor overall traf?c being processed by a 
group of network devices connected to the network. 
FIG. 2 illustrates an architecture used, for example, on 
target network device 112 and compatible with the network 
management system. In this example, target network device 
112 includes a memory 202, a processor 204, a network 
communication port 206, a secondary storage 208, and
US 7,039,724 B1 
5 
input-output ports 210 in communication with each other 
over a bus 211. Although the example architecture depicted 
in FIG. 2 includes speci?c components, alternate embodi 
ments can be implemented using additional or fewer com 
ponents than used in this example while remaining compat 
ible with the network management system. The speci?c 
components used in the architecture for target network 
device 112 can vary depending on the speci?c functions to 
be performed and design decisions made for the particular 
implementation. 
Network communication port 206 is compatible with a 
variety of physical and logical network protocols including, 
for example, TCP/IP and Novell NetWare. A loop back 
address 207 enables network management applications 
executing on target device 112 to access local storage areas 
and resources using the local network protocol stack and 
local network parameters rather than accessing the storage 
area on the network device directly. By using the network 
protocol stack, network applications can access network 
parameters on a local device and a remote device in a 
uniform manner. For example, a network management appli 
cation executing on target network device 112 can access 
network parameters associated with a remote network 
device or a local network device through network commu 
nication port 206 by specifying either the network address of 
the remote network device or the local device respectively. 
Speci?cally, the network management application executing 
on the local device can access network parameters of the 
local network device by specifying loop back address 207. 
In effect, loop back address 207 provides indirect access to 
the network parameters of the local device through the 
network protocol stack. 
Secondary storage 208 may include a disk drive, CD 
ROM, or any other storage device used by target network 
device 112. Input-output ports 210 include physical connec 
tions for terminals, printers, pointing devices, keyboards, or 
any other device useful for con?guring, operating, or con 
trolling target network device 112. 
During execution of one embodiment, modules in 
memory 202 include a real time operating system (RTOS) 
212, an annotation layer 214, a native variable interface 216, 
a simple network management protocol (SNMP) stack 217, 
a virtual machine runtime environment 218, a management 
information database (MIB) map 220, a MIB compiler 221, 
an object-oriented MIB interface 222, a mobile agent mod 
ule 224, and a client application 226. Alternate embodiments 
of the invention can include additional or fewer modules 
depending on the speci?c functions required for operation 
and the design decisions made to implement the invention. 
For example, RTOS 212 provides improved performance on 
target network device 112 by executing instructions as they 
arrive without interruption or delay. However, if the design 
allows for a reasonable delay while processes are preempted 
and swapped out of memory, then a general-purpose oper 
ating system may be used in lieu of RTOS 212. The 
general-purpose operating system may also be used if it is 
less costly to implement than the real-time system and 
compatible with a wider variety of existing software pack 
ages. 
Annotation layer 214 provides an interface between appli 
cations accessing the MIB database associated with a net 
work device and the actual storage locations for the MIB 
database on the network device. This layer is necessary 
because different hardware devices tend to store the under 
lying MIB database information in different locations on the 
network device. For example, one network device may store 
port speed address in a central lookup table of RAM while 
20 
25 
30 
35 
40 
45 
50 
55 
60 
65 
6 
other network devices may store the port speed addresses for 
each port on separate ASIC chips associated with each port. 
Using annotation layer 214, an application can request MIB 
database information without specifying the actual location 
of data on the network device. 
SNMP stack 217 implements a network management 
protocol used by different networks to exchange network 
management information while monitoring network com 
munication. Typically, SNMP stack 217 exchanges network 
information with other nodes on the network through mes 
sages called protocol data units (PDUs). The PDUs contain 
variables with titles and values and are generally capable of 
“getting” network parameters, “setting” network param 
eters, or “testing” for network events occurring on network 
devices. For example, SNMP stack 217 may transmits a 
PDU to a remote network device to determine if the remote 
device has a terminal attached to it. If the terminal is 
attached to the remote network device, SNMP stack 217 will 
receive back a PDU containing information that may iden 
tify and describe the speci?c terminal. Each PDU typically 
includes a variable title and a value of the variable. 
Native variable interface 216 provides direct access to 
underlying SNMP data stored on a network device. Each 
device on the network requires a different native variable 
interface 216 customiZed to the speci?c features of the 
device hardware and software. As new network devices are 
produced or added to a network, a new interface 216 is 
customiZed to the speci?c hardware and software require 
ments. While this customiZation process increases the 
research and development costs, it also increases the effi 
ciency associated with retrieving network parameters from a 
network device because the information is accessed directly. 
Alternatively, network parameters may also be retrieved 
using SNMP stack 217 and loopback address 207. This 
eliminates the need for native variable interface 216 and 
reduces the corresponding costs associated with developing 
the native variable interface. In lieu of accessing the network 
parameters directly, a network management application sub 
mits requests to loopback address 207 of a network device. 
Within the requests are SNMP compatible commands for 
mulated to retrieve the desired network parameters. Local 
processes on the network device monitoring loopback 
address 207 pass the request to SNMP stack 217 which, in 
turn, accesses the network parameters as requested. The 
same local processes then return the resulting network 
parameters back through SNMP stack 217 and through 
loopback address 207 and back to the network management 
application requesting the information. 
Virtual machine runtime environment 218 processes 
object-oriented instructions for execution on processor 204, 
and may include a virtual machine (VM) and a correspond 
ing development kit (DK) having object-oriented class 
libraries. The VM simulates a processor and executes on 
many different hardware platforms. Instructions from a 
variety of applications are interpreted by the VM and 
executed on processor 204. One virtual machine run time 
environment 218 includes a Java virtual machine (JVM) and 
the Java foundation classes. The Java virtual machine is one 
type of virtual machine that promotes platform independent 
computing using the Java programming language. 
In operation, MIB map 220 facilitates converting object 
oriented requests for MIB information into requests for 
network parameters either through SNMP stack 217 or 
native variable interface 216. MIB map 220 determines how 
network parameters in a MIB should be accessed for dif 
ferent types of network devices. For example, MIB map 220 
can be implemented with a table that converts requests for
US 7,039,724 B1 
7 
network parameters through native variable interface 216 or 
SNMP stack 217 into a series of object-oriented method 
calls. The map includes a database listing the netWork 
parameters related to the management of a netWork device 
and a set of object-oriented methods for manipulating the 
netWork parameters. MIB map 220 maps requests for net 
Work parameters from a set of operations to access and 
manipulate the netWork parameters to a database having the 
actual netWork parameter information. Each request for a 
netWork parameter may invoke one or more obj ect-oriented 
methods depending on the complexity associated With 
retrieving and processing the data. 
If a neW type of netWork device is added to the network, 
MIB map 220 Will initially access the netWork parameters 
using SNMP stack 217 and loopback address 207 in the 
manner previously discussed. This alloWs a netWork man 
agement device to access netWork parameters on an SNMP 
compatible netWork device using existing SNMP features 
built into the netWork device. Once a native variable inter 
face 216 is developed for the netWork device, MIB map 220 
can be recon?gured to access netWork parameters through 
the faster and more efficient native variable interface 216. 
Object-oriented MIB interface 222 provides an interface 
for applications to access MIB information using object 
oriented classes and methods. Initially, a MIB compiler 221, 
discussed in further detail beloW, receives a list of MIB 
variables and generates the classes and method found in the 
object-oriented MIB interface 222. At least tWo types of 
variablesiscalar variables and table variablesiare acces 
sible through object-oriented MIB interface 222. A scalar 
variable is a single variable With an identi?er that identi?es 
the variable and a value associated With the variable. If an 
application requests a scalar variable, object oriented MIB 
interface 222 returns an object-oriented instance of that 
scalar variable. For example, a netWork management appli 
cation may request a scalar variable identifying the number 
of resent packets on the netWork device. Alternatively, 
object-oriented MIB interface 222 may request a table of 
information from the underlying SNMP layer. In response, 
the underlying SNMP layer Would provide an object table 
and corresponding methods for accessing each of the entries 
Within the table. As an example, one type of object table may 
include a list of netWork addresses associated With netWork 
devices in a subnet and methods for an application to 
manipulate the entries in such a table. 
Mobile agent module 224 provides a frameWork for 
executing a variety of mobile agents. Client application 226 
represents one such mobile agent application as illustrated in 
FIG. 2. Accordingly, mobile agent module 224 interfaces 
betWeen the mobile agent and the underlying execution 
environment, thus alloWing a mobile agent to operate on a 
variety of netWork devices and operating environments. 
For example, mobile agent module 224 implemented in 
accordance With the Java BeanTM application-programming 
interface de?nes a portable, platform-neutral set of APIs for 
softWare components to communicate With each other in 
accordance With the Java Beans conventions. In addition, 
mobile agents implemented using Java Bean components are 
able to plug into other component architectures, such as 
Microsoft’s COM/DCOM/Active X architecture. In this 
capacity, mobile agent module 224 acts as a bridge betWeen 
mobile agents developed using Java Beans and other com 
ponent object models or component architectures. For 
example, mobile agent module 224 may receive Java 
instructions from client application 226 and convert them 
into instructions compatible With the COM/DCOM/Active 
X environment or alternatively, may convert these same Java 
20 
25 
30 
35 
40 
45 
50 
55 
60 
65 
8 
instructions into byte codes to run on a virtual machine in 
virtual machine run time environment 218. It should be 
appreciated that client application 226 may be any type of 
netWork management application designed for execution on 
target netWork device 112. 
FIG. 3 illustrates the operations for generating an inter 
face to MIB information from an object-oriented applica 
tion. MIB compiler 221 generates object-oriented MIB 
interface 222. Initially, MIB compiler 221 receives MIB 
de?nitions for a netWork device (302). These de?nitions 
may be stored in a database as a series of identi?ers and 
corresponding values sufficient to describe the netWork 
parameters associated With a particular netWork device. 
Each netWork device may have a unique MIB de?nition 
depending on its capabilities and operating characteristics. 
Common MIB de?nitions, hoWever, are arranged in a pre 
determined hierarchical order as illustrated in FIG. 4 and 
described beloW. 
Next, MIB compiler 221 extracts netWork parameters for 
the speci?c netWork device from the MIB de?nitions (304). 
This involves lexically recogniZing and parsing each token 
in the MIB de?nitions for the netWork device. MIB compiler 
221 then generates an object-oriented MIB application 
programming interface or MIB interface and MIB map 220 
corresponding to the MIB de?nitions (306). The object 
oriented MIB interface creates classes corresponding to the 
MIB hierarchy and methods for accessing each of the 
variables in the MIB de?nition. MIB map 220 assists in 
mapping object-oriented class de?nitions and method calls 
into corresponding combinations of SNMP primitives (e.g., 
get, set, and test) used by SNMP stack 217 or native 
variables. 
FIG. 4 illustrates an exemplary mapping from MIB de? 
nitions 400 to corresponding MIB classes 403 and object 
oriented methods. For example, MIB de?nitions 400 may 
include a MIB data group 402A, a vendor speci?c group 
404A, an SNMP group 406A, a system group 408A, an IP 
group 410A, a TCP group 412A and an interface group 
414A, to name a feW. These MIB information groups de?ne 
hoW netWork information is organiZed and can be addressed 
on a netWork device. These speci?c groups contain netWork 
information organiZed according to industry standards. 
For example, vendor speci?c group 404A includes an area 
that vendors can de?ne their oWn netWork parameters and 
proprietary information. SNMP group 406A includes de? 
nitions for protocol data units (PDUs) used for netWork 
nodes to communicate. IP group 410A includes information 
corresponding to the netWork communication layer. For 
example, IP group 410A may include the IP address of a 
netWork device and nearby routers or sWitches. TCP group 
412A, Which includes information corresponding to the 
transport protocol layer, may include a list of all active 
connections communicating using a “socket” interface as 
Well as the ports and corresponding services. 
MIB compiler 221 in FIG. 2 receives the MIB de?nitions 
400 in FIG. 4 in a database that lists the netWork parameters 
related to the management of a netWork device. MIB com 
piler 221 converts these MIB de?nitions 400 into corre 
sponding MIB objects 403 including data class 402B, ven 
dor’s speci?c class 404B, SNMP class 406B, system class 
408B, IP class 410B, TCP class 412B, and interface class 
414B. Through this conversion, MIB compiler 221 then 
creates the methods an application can use to access netWork 
parameters in the MIB database corresponding to the 
classes.
US 7,039,724 B1 
In operation, an object-oriented network management 
application is downloaded into a network device accesses 
the MIB database through the object-oriented interface. 
FIG. 5 illustrates the operations used by a NMS to manage 
a network device. Initially, the NMS requests that a network 
device load a set of operations associated with a particular 
task (502). This o?loads a portion of the network manage 
ment processing to the target network devices and frees up 
the NMS to handle other requests. In addition, this reduces 
network traf?c caused by sending numerous PDUs with 
SNMP messages. 
In response to the request to load a set of operations, the 
network device accesses an application server having the 
application(s) capable of performing the set of operations 
associated with the task (504). For example, an application 
server 108 as shown in FIG. 1 stores hundreds of network 
applications ready for execution on target network device 
112. Application server 108 receives the request, locates the 
application, and then transfers it to the appropriate network 
device (506). In one implementation, application server 108 
transfers a network application from application server 108 
to the network device each time or session the network 
device executes the application. Alternatively, an application 
may remain resident in a network device permanently or for 
a given period of time once it is initially downloaded from 
the application server. 
The network device loads and executes the requested 
application (508). Using the application, the network device 
may perform a variety of network management functions. 
For example, the network device may be asked to monitor 
network traffic on a nearby network and notify the central 
NMS when a node on the network becomes inactive or the 
network traf?c increases beyond a particular threshold. 
Once the information or results are generated, the network 
device provides information back to the NMS for processing 
(510). If a central NMS is not present, the network device 
may broadcast results over the network to other network 
devices monitoring and processing the network information. 
FIG. 6 illustrates the operations used to access network 
parameters on a network device consistent with the present 
invention. Speci?cally, a network management application 
such as client application 226 in FIG. 2 executes these 
operations to access network parameters stored directly on a 
local network device or to access network parameters stored 
on a remote network device. By accessing network param 
eters on a remote device, one network device can act as a 
proxy for obtaining network parameters from another net 
work device. This is particularly useful if, for example, the 
remote network device is an older device or otherwise 
incompatible with features of the present invention. For 
example, a network management application executing on a 
local network device can be used to access parameters on a 
remote network device designed without a virtual machine 
or that is not capable of executing network management 
applications designed consistent with the present invention. 
The network management application can be an object 
oriented application written in Java that uses remote method 
invocation (RMI), JINI, COM/DCOM or other distributed 
computing mechanisms to process information on a remote 
computer system. Java, RMI, JINI and derivatives of Java 
are trademarks of Sun Microsystems, Inc. of Mountain 
View, Calif. COM/DCOM are products developed by 
Microsoft of Redmond, Wash. 
As shown in FIG. 6, a network management application 
initially begins execution on a local network device. The 
network management application executing on the local 
network device requests a network parameter typically 
20 
25 
30 
35 
40 
45 
50 
55 
60 
65 
10 
found in the MIB (602). For example, a network manage 
ment application may request MIB information correspond 
ing to the current count and the cumulative count of packets 
being transmitted to determine if the capacity of a network 
device has been met or exceeded. 
The network management application then determines if 
the requested network parameter is associated with the local 
network device or a remote network device (604). If the 
network parameter is associated with a remote network 
device, the network management application forms and 
sends a request for the network parameter to the remote 
network address of the network device (606). For example, 
the network management application may request that 
SNMP stack 217 (see FIG. 2) create a PDU to gather MIB 
information on the remote device. This request can be 
formed using an object-oriented programming language 
such as Java. SNMP stack 217 then transmits the request for 
a network parameter over the network to the remote network 
device for processing. A network protocol such as TCP/IP 
associated with that remote network device receives the 
request for the network parameter. The SNMP stack on the 
remote device processes the request and retrieves the 
requested network parameter, which includes MIB informa 
tion (608). Once the network parameter is received on a 
remote network device, the corresponding SNMP stack 
packages the result into a PDU and sends the results back to 
SNMP stack 217 for processing by the network application 
executing on a local network device (610). 
If the network management application requests network 
information associated with the local network device (604), 
the network management application can access the 
requested network parameters in at least two different ways. 
The network management application can access the net 
work parameters on the local network device directly (611) 
using a software interface customiZed for the network device 
(620). For example, the network management application 
can use a native variable interface to access network param 
eters on the local network device. 
Alternatively, the network management application may 
access local network parameters on a local network device 
using existing network protocol. Initially, the network man 
agement application sends a request for a network parameter 
through the network protocol of the local network device 
using the “loopback” address (612). This loopback address 
is a self-referential address which identi?es the local net 
work device on the network without sending packets of 
information over the actual network. For example, sending 
a request to the loop back address establishes a data route 
directly back to the network protocol stack on the local 
network device. The network management application 
essentially uses SNMP stack 217 on the local network 
device to create a PDU to request the corresponding network 
parameter (614). SNMP stack 217 then retrieves the requests 
for the particular network parameter (616). The results are 
then returned to network management application 226 
executing on local network device (618). 
FIG. 7 is a block diagram of a network management 
server (NMS) securely communicating network manage 
ment protocol commands to a network device. System 700 
in FIG. 7 includes a network device 702 equipped with 
object-oriented capabilities described above, a network 
management server (NMS) 704 executing a network man 
agement application 706. 
Network management application 706 can transmit net 
work management commands over an unsecured link 708 or 
over a secure link 710 to network device 702. Network 
management commands transmitted over unsecured link
US 7,039,724 B1 
11 
708 are in the clear and can be easily intercepted and used. 
This is the typical scenario on most SNMP-based networks 
because the most common versions of SNMP do not support 
encryption or other forms of data security. Secure commands 
transmitted directly to a network management protocol stack 
such as SNMP 217 can not be decrypted and utiliZed. As a 
result, conventional network management routines commu 
nicating directly with the network management protocol 
stack in the clear can result in a breech of the network and 
system security. 
An alternative approach is to communicate over secure 
communications link 710 to client application 226 running 
on network device 702. In this approach, network manage 
ment application 706 can encrypt all information before 
sending it over the network using an encryption protocol as 
secure socket layer (SSL) or allowing hardware in secure 
communications link 710 to encrypt the information. 
Numerous other methods of sending secure information over 
the network can also be used. 
Client application 702 receives the secured information 
and extracts the network management routines using an 
agreed upon decryption method. In addition, client applica 
tion 702 may even authenticate and authoriZe the network 
management application and user transmitting the secured 
information before applying any decryption methods. These 
decrypted network management commands are then trans 
mitted through obj ect-oriented MIB interface 222 and loop 
back address 207 to SNMP stack 217 for processing. Result 
ing information is returned to network management 
application over a similar secure channel by reversing the 
above operations. 
FIG. 8 is a ?owchart diagram for securely communicating 
network management commands to a network device over a 
network. Initially, a network management application 
encrypts network management commands and transmits 
them over a network (802). For example, the network 
management application can use SSL or a public-key 
encryption scheme to encrypt the data. The client application 
on a network device receiving the network management 
commands authenticates and authoriZes the network man 
agement application (804). This can be accomplished by 
reading a predetermined segment of the transmission for 
identi?cation information such as a login and password. 
Once this information is con?rmed, client application 
decrypts the network management commands transmitted 
by the network management application (806). Because the 
client application decrypts the commands, special secure 
network management protocols such as SNMP Version 3 are 
not required. This means that any compatible network 
management protocol can be used and not a specially 
enhanced version having built-in encryption and security. 
The decrypted network commands are then transmitted to 
the local network device through a loopback address (808). 
The data transmitted over the loopback address remains 
secure because the data is transmitted along the backplane of 
the network device and not over an external network port. In 
addition, the network management commands are immedi 
ately processed by the network management protocol such 
as the SNMP stack. Results are then returned to the client 
application on the network device where they are encrypted 
and returned to the network management application (810). 
FIG. 9 is a block-diagram illustrating a command-line 
interface (CLI) application programming interface (API) 
902 for network devices. Access to a conventional CLI on a 
network device typically occurs through a terminal con 
nected to the serial port of the network device. The user 
types in commands directly to the network device through 
20 
25 
30 
35 
40 
45 
50 
55 
60 
65 
12 
this terminal to con?gure and monitor network device 
information. This CLI-API instead provides an object-ori 
ented application prong interface for client application 226 
in FIG. 2 to develop programmatic interactions with the 
network device and develop more sophisticated operations. 
For example, client application 226 can create stateful 
applications that measure one or more variables on the 
network device and then make decisions based on the 
combination of variables. In contrast, the user interfacing 
with the CLI of a network device cannot easily make such 
determinations and decisions. 
In this implementation, CLI-API 902 includes a set of 
classes compatible with the Java programming language to 
perform a variety of functions necessary when communi 
cating over a network or serial link to a command-line 
interface. These classes include session management classes 
904, input-output classes 906, con?guration classes 908, 
macro-generation classes 910, and other classes 912 as 
needed to interface with the various network devices on a 
network. Of course, these classes are given only as an 
example to perform one set of functions and greater or fewer 
classes may be required depending on the applications 
speci?c requirements. 
Session management classes 904 control the resources 
associated with establishing a communication session with a 
network device through the command-line interface. This 
may include performing authentication and authoriZation of 
the user and application. For example, obtaining a login 
name, an application identi?cation, and/or a password. It 
also includes establishing network sessions, obtaining 
handles to references of the one or more sessions, and 
relinquishing the resources associated with the network 
device when the sessions are completed. 
Sending and receiving data through the command-line 
interface occurs through input-output classes 906. Data 
written to the network device and read from the network 
device may be bu?fered and converted into different char 
acter sets through the input-output classes 906. 
Con?guration classes 908 are used to change the operat 
ing characteristics of different network devices. Common 
con?guration processes associated with con?guring a net 
work device are included in methods de?ned in con?gura 
tion classes 908. For example, this can include getting and 
setting IP address information for the network device, taking 
a network device up or down, or other typical network 
device con?guration operations. 
Macro generation classes 910 allows an application to 
create and register customiZed macro routines. For example, 
an application can be run that sets up numerous macros and 
stores them in persistent storage on a central server or 
network device for other applications to use later. This 
would make it easier to enhance the available functions 
using the CLI-API with a network device. Other classes 912 
represent any other additional classes that client application 
226 may use to interact with a network device. 
FIG. 10 is a block diagram of a network 1000 having 
network devices that either transmit or receive commands 
from an application using the CLI-API described above. 
Network 1000 includes a Java Enabled Network (JEN) 
device 1002, a non-Java Enabled Network (NJEN) device 
1004, a non-Java enabled network device with serial inter 
face (SNJEN) 1006, a remote serial command-line interface 
(RS-CLI) device 1008, connected together over network 
1010. 
JEN device 1002 includes elements described in FIG. 2 
and associated with network device 112. Because JEN 
device 1002 includes a virtual machine, object-oriented
US 7,039,724 B1 
13 
applications and byte-codes can be processed. In particular, 
JEN device 1002 executes object-oriented applications, for 
example Java object-oriented applications or applets, and 
transmits commands to other netWork devices using the 
CLI-API described above. 
In contrast, NJEN device 1004 does not include a virtual 
machine and other features present in JEN device 1002 and 
therefore is not able to execute object-oriented applications 
Written in a programming language like Java. NJEN device 
1004 can receive commands through the CLI-API interface 
and send results back through the CLI-API interface to JEN 
device 1002. These commands can be sent from an appli 
cation on JEN device 1002 directly to NJEN device 1004 
over netWork 1010. 
SNJEN device 1006 is unique in that it cannot process 
object-oriented applications Written in Java or any other 
high-level programming language and cannot receive com 
mand-line instructions over the netWork. Instead, SNJEN 
device 1006 can only receive commands over a serial 
connection. For example, some netWork devices made by 
Cisco, Inc. cannot process object-oriented applications and 
further can only process certain commands received over a 
serial interface. To overcome this limitation, remote serial 
command line interface (RS-CLI) device 1008 has a serial 
interface to connect to a serial port on SNJEN device 1006 
and a netWork interface to connect to netWork 1010. 
In one implementation, RS-CLI device 1008 includes a 
serial interface, a netWork interface, operating system sup 
port for an object-oriented language like Java, a virtual 
machine, a set of object-oriented components and APIs to 
enable execution of object-oriented applications. A serial 
interface Writer Writes CLI commands to the serial interface 
and serial interface reader reads commands from the serial 
interface. A CLI generator Within RS-CLI device 1008 
creates CLI commands to send to the serial port and a 
corresponding CLI response parser analyZes the results of 
the CLI commands coming from the netWork device such as 
SNJEN device 1006. RS-CLI device 1008 can be fabricated 
using an inexpensive processor such as a x86 compatible 
chip, a serial port and driver, a Ethernet port and driver, a 
storage device having the softWare described above and a 
TCP/IP netWork protocol stack. 
In operation, JEN device 1002 sends commands to 
SNJEN device 1006 through RS-CLI device 1008. RS-CLI 
device 1008 processes object-oriented commands received 
over the netWork and transmits command-line instructions to 
SNJEN device 1006. This enables even non-Java enable 
netWork devices requiring a serial communications line to 
indirectly process object-oriented instructions. With this 
type of interface, a single netWork device like JEN device 
1002 can manage a heterogeneous collection of netWork 
devices from many different vendors. 
FIG. 11 illustrates a process 1100 that provides operations 
an application performs to manage netWork devices using 
CLI-API 902 alone and in conjunction With RS-CLI device 
1008. An application processes instructions designed to 
control a target netWork device (1102). In one implementa 
tion, this can be an object-oriented application Written in 
Java executing on a Java enabled netWork device such as 
JEN 1002. The target netWork device can be like NJEN 
device 1004 Which does not execute application instructions 
(Written in Java or any other language) or like SNJEN 1006, 
Which not only does not execute instructions in an applica 
tion but only receives CLI commands over a serial port and 
not the netWork. 
The application can include instructions for controlling 
the con?guration of the target netWork device, gathering 
20 
25 
30 
35 
40 
45 
50 
55 
60 
65 
14 
information on the netWork interfaces on the target the target 
netWork device, bringing a netWork device up or doWn on 
the netWork, doWnloading a neW image to the target netWork 
device using a netWork copy command like Trivial File 
Transfer Protocol (TFTP), or any other set of operations 
possible using a command-line interface (CLI). 
If the target netWork device accepts CLI commands only 
over a serial interface (1104), CLI-API 902 directly trans 
mits instructions from the application over the netWork to 
the netWork port on RS-CLI device 1008 attached to the 
target netWork device (1108). RS-CLI device 1008 creates 
corresponding CLI commands in response to application 
instructions (1110) and transmits them to the target netWork 
device over a serial port (1112). For example, RS-CLI 
device 1008 executes Java object-oriented applications or 
applets that generate CLI commands. While the application 
instructions in the Java object-oriented application are stan 
dard, the CLI commands generated by RS-CLI device 1008 
are speci?c to the CLI used by the particular netWork device. 
Alternatively, CLI-API 902 creates corresponding CLI 
commands in response to application instructions (1106). 
For example, an application executes application instruc 
tions on JEN device 1002 that calls CLI-API 902 and 
generates CLI commands for execution on another netWork 
device such as NJEN device 1004. CLI-API 902 then 
establishes a netWork session and transmits corresponding 
CLI commands directly to the target netWork device (1114). 
In most cases, CLI-API 902 establishes a session With a 
target netWork device using the telnet, rlogin, or other 
remote login type communication protocols. 
The target netWork device then executes the CLI com 
mands provided through the application (1116). Each CLI 
command may cause the target netWork device to operate 
differently and send back different information. As a result, 
the CLI commands being generated by the application can 
change dynamically as the conditions on the target netWork 
device change or are modi?ed. Once the target netWork 
device executes all the CLI commands, the results are 
returned to the application for further processing (1118). 
While speci?c implementations have been described 
herein for purposes of illustration, various modi?cations 
may be made Without departing from the spirit and scope of 
the invention. For example, encryption and other security 
measures can be implemented using softWare methods as 
Well as specially con?gured hardWare designed to process 
the data for secure transmission over a communication link. 
Implementations of the invention can be implemented using 
an object-oriented programming language such as Java, 
C++, C#, Eiffel, SmallTalk, or Objective C, a procedural 
programming language such as “C”, or assembly code and 
various combinations of these languages as used to execute 
on general purpose processors and processors used Within a 
netWork devices. With respect to session protocols, remote 
login protocols such as telnet and rlogin Were suggested 
hoWever many other types of client-server type protocols 
Which achieve the same or similar results could also be 
adapted to Work With implementations of the present inven 
tion. Further, although aspects of the present invention are 
described as being stored in memory and other storage 
mediums, they can also be stored on or read from other types 
of computer-readable media, such as secondary storage 
devices, like hard disks, ?oppy disks, or CD-ROM, a carrier 
Wave from the Internet, or other forms of RAM or ROM. 
Accordingly, the invention is not limited to the above 
described embodiments, but instead is de?ned by the 
appended claims and their full scope of equivalents.
US 7,039,724 B1 
15 
What is claimed is: 
1. A method of managing a ?rst network device, com 
prising: 
loading an obj ect-oriented network management applica 
tion on a second network device; 
generating at least one command line interface command 
by the object-oriented application translating at least 
one non-command line command to the at least one 
command line interface command; and 
communicating the at least one command line interface 
command from the second network device to the ?rst 
network device via a loopback address; 
wherein the application is implemented as one or more 
obj ect-oriented classes and the one or more routines are 
method calls in the one or more object-oriented classes; 
and 
wherein a command-line interface application program 
ming interface (“CLl-API”) provides an object-ori 
ented application programming interface for the appli 
cation to develop programmatic interactions with the 
network device. 
2. The method of claim 1, wherein the one or more object 
oriented classes and the method calls are compatible with 
the Java object-oriented programming language. 
3. The method of claim 1, wherein the one or more 
object-oriented classes are selected from a set of classes 
including a session management class, an input-output class, 
a con?guration class, a macro-generation class, and other 
classes. 
4. The method of claim 1, wherein the at least one 
command-line interface command is capable of performing 
one or more network management operations selected from 
a set of operations including con?guring a network device, 
gathering information on network interfaces on a network 
device, bringing a network device up or down on a network, 
and downloading a new image to a network device. 
5. The method of claim 1, wherein the programmatic 
interactions with the network device includes stateful appli 
cations operable to measure one or more variables on the 
network device and make decisions based on the one or 
more measured variables. 
6. A network system having network management capa 
bilities, comprising: 
a non-application enabled network device having a com 
mand line interface (CLI) capable of controlling one or 
more network management features of the non-appli 
cation enabled network device, a non-application 
enabled network device being a network device that is 
not able to process an application written in a high 
level programming language; and 
an application-enabled network device capable of execut 
ing applications that use a command-line interface 
application programming interface (CPl-API) to gen 
erate one or more commands compatible with the 
command line interface of the non-application enabled 
network device and transmit the one or more com 
mands to the non-application enabled network device 
and transmit the one or more commands to the non 
application enabled network device over a network for 
execution, an application-enabled network device 
being a network device that is able to process an 
application written in a high-level programming lan 
guage. 
7. The network system of claim 6, wherein the applica 
tion-enabled network device is capable of processing object 
oriented applications compatible with the Java programming 
language. 
20 
25 
30 
35 
40 
45 
50 
55 
60 
65 
16 
8. A network system having network management capa 
bilities, comprising: 
a non-application enabled network device having a com 
mand line interface (CLI) capable of controlling one or 
more network management features of the non-appli 
cation enabled network device; 
an application-enabled network device capable of execut 
ing applications that use a command-line interface 
application programming interface (CLl-API) to gen 
erate one or more commands compatible with the CLI 
of the non-application enabled network device and 
transmitting the one or more commands to the non 
application enabled network device over the network 
for execution; and 
a remote serial command line interface (RS-CLI) device 
connected between the application-enabled network 
device and the non-application enabled network device, 
the RS-CLI device capable of receiving an application 
over a network from the application-enabled network 
device, executing the application and producing com 
mands for transmission over a serial connection con 
nected to the non-application enabled network device, 
wherein the commands are compatible with the CLI on 
the non-application enabled network device. 
9. The network of claim 8, wherein the RS-CLI device 
comprises, 
a storage device capable of storing an instruction; 
a network port capable of processing a network protocol 
stack and connected to the network; 
a serial port capable of processing a serial protocol and 
connected to the non-application enabled network 
device; and 
a processor capable of processing the instruction stored in 
the storage area of the RS-CLI device that at least 
generates a command compatible with a CLI of a 
network device in response to processing the instruc 
tion stored in the storage area. 
10. The RS-CLI device of claim 8, wherein the instruction 
stored in the storage area is from a software component 
selected from a set of software components including an 
operating system an object-oriented component, a virtual 
machine, and a network protocol stack. 
11. A remote serial command-line interface (RS-CLI) 
device comprising: 
a storage device capable of storing an instruction, 
a network port capable of being connected to the network 
and capable of processing a network protocol stack in 
addition to receiving the instruction; 
a serial port capable of processing a serial protocol and 
capable of being connected to the non-application 
enabled network device; and 
a processor capable of processing the instruction stored in 
the storage area of the RS-CLI device that at least 
generates a command compatible with a CLI of the 
non-application enabled network device in response to 
processing the instruction stored in the storage area; 
wherein the instruction in the storage area is from a 
software component stored in the storage area and 
selected from a set of software components including 
an operating system, an object-oriented component, a 
virtual machine, a network protocol stack, and an 
object-oriented application. 
12. An apparatus for managing a non-application enabled 
network device, a non-application enabled network device
Programmable command-line interface API for managing operation of a network device

More Related Content

PDF
TEC28732105 (1).pdf
PDF
MTCTE PROCEDURE ver 2.1 Release May 2021.pdf
PPT
Switching 2
PPT
Dynamic Routing IGRP
PPT
Integrated Service Digital Network
PDF
Um basic config_l2p_rel71_en
PPT
Dynamic Routing RIP
PPT
Dynamic routing EIGRP
TEC28732105 (1).pdf
MTCTE PROCEDURE ver 2.1 Release May 2021.pdf
Switching 2
Dynamic Routing IGRP
Integrated Service Digital Network
Um basic config_l2p_rel71_en
Dynamic Routing RIP
Dynamic routing EIGRP

What's hot (18)

PPT
Password Recovery
PDF
Packet Tracer Simulation Lab Layer3 Routing
PDF
70 laura s. schultz - 6760427 - computer telephone (ct) network serviing mu...
DOC
KYL 300H wireless module user manual
PPTX
CCNA 200-301 IPv6 addressing and subnetting MCQs Collection
 
PPTX
Lync 2010 deep dive edge
PPT
ETRX2-PA ZigBee™ Mesh Networking Module
PDF
Ccnav5.org ccna 3-v50_final_exam_2014
PPT
Initial Configuration of Router
PPT
PDF
Cisco discovery drs ent module 8 - v.4 in english.
PPTX
We will charge you. How to [b]reach vendor’s network using EV charging station.
PDF
Tri aoi training-supplementary_2011.01
PDF
D05132630
PPTX
How to configure Default Routing
PPT
Multi Static Routng & Default Routing
PDF
iSNAP2110 Reference Board_Design Guide_w
PDF
Ccna 2 Final V4 1
Password Recovery
Packet Tracer Simulation Lab Layer3 Routing
70 laura s. schultz - 6760427 - computer telephone (ct) network serviing mu...
KYL 300H wireless module user manual
CCNA 200-301 IPv6 addressing and subnetting MCQs Collection
 
Lync 2010 deep dive edge
ETRX2-PA ZigBee™ Mesh Networking Module
Ccnav5.org ccna 3-v50_final_exam_2014
Initial Configuration of Router
Cisco discovery drs ent module 8 - v.4 in english.
We will charge you. How to [b]reach vendor’s network using EV charging station.
Tri aoi training-supplementary_2011.01
D05132630
How to configure Default Routing
Multi Static Routng & Default Routing
iSNAP2110 Reference Board_Design Guide_w
Ccna 2 Final V4 1
Ad

Similar to Programmable command-line interface API for managing operation of a network device (20)

PDF
Method and apparatus for intelligent management of a network element
PDF
Method and apparatus for intelligent management of a network element
PDF
Network apparatus with Java co-processor
PDF
Method and apparatus for using documents written in a markup language to acce...
PDF
Method and apparatus for dynamically loading and managing software services o...
PDF
Method and apparatus for automatically configuring a network switch
PDF
Method and apparatus for using a command design pattern to access and configu...
PDF
Method and apparatus for accessing network information on a network device
PDF
Method and apparatus for using a command design pattern to access and configu...
PDF
Distributed computation in network devices
PDF
Systems and methods for electronic communications
PDF
Method and apparatus for preconditioning data to be transferred on a switched...
PDF
Efficient communication in a network
PDF
Routing architecture including a compute plane configured for high-speed proc...
PDF
Method and apparatus for scheduling resources on a switched underlay network
PDF
Interface method and system for accessing inner layers of a network protocol
PDF
Method and apparatus for automated negotiation for resources on a switched un...
PDF
Sfa community of practice a natural way of building
PDF
Time-value curves to provide dynamic QoS for time sensitive file transfers
PDF
A step on developing network monitoring tools
Method and apparatus for intelligent management of a network element
Method and apparatus for intelligent management of a network element
Network apparatus with Java co-processor
Method and apparatus for using documents written in a markup language to acce...
Method and apparatus for dynamically loading and managing software services o...
Method and apparatus for automatically configuring a network switch
Method and apparatus for using a command design pattern to access and configu...
Method and apparatus for accessing network information on a network device
Method and apparatus for using a command design pattern to access and configu...
Distributed computation in network devices
Systems and methods for electronic communications
Method and apparatus for preconditioning data to be transferred on a switched...
Efficient communication in a network
Routing architecture including a compute plane configured for high-speed proc...
Method and apparatus for scheduling resources on a switched underlay network
Interface method and system for accessing inner layers of a network protocol
Method and apparatus for automated negotiation for resources on a switched un...
Sfa community of practice a natural way of building
Time-value curves to provide dynamic QoS for time sensitive file transfers
A step on developing network monitoring tools
Ad

More from Tal Lavian Ph.D. (20)

PDF
Ultra low phase noise frequency synthesizer
PDF
Ultra low phase noise frequency synthesizer
PDF
Photonic line sharing for high-speed routers
PDF
Systems and methods to support sharing and exchanging in a network
PDF
Systems and methods for visual presentation and selection of IVR menu
PDF
Grid proxy architecture for network resources
PDF
Ultra low phase noise frequency synthesizer
PDF
Systems and methods for electronic communications
PDF
Ultra low phase noise frequency synthesizer
PDF
Ultra low phase noise frequency synthesizer
PDF
Radar target detection system for autonomous vehicles with ultra-low phase no...
PDF
Grid proxy architecture for network resources
PDF
Method and apparatus for scheduling resources on a switched underlay network
PDF
Dynamic assignment of traffic classes to a priority queue in a packet forward...
PDF
Reliable rating system and method thereof
PDF
Time variant rating system and method thereof
PDF
Systems and methods for visual presentation and selection of ivr menu
PDF
Ultra low phase noise frequency synthesizer
PDF
Ultra low phase noise frequency synthesizer
PDF
Systens and Methods For Electronic Communication
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
Photonic line sharing for high-speed routers
Systems and methods to support sharing and exchanging in a network
Systems and methods for visual presentation and selection of IVR menu
Grid proxy architecture for network resources
Ultra low phase noise frequency synthesizer
Systems and methods for electronic communications
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
Radar target detection system for autonomous vehicles with ultra-low phase no...
Grid proxy architecture for network resources
Method and apparatus for scheduling resources on a switched underlay network
Dynamic assignment of traffic classes to a priority queue in a packet forward...
Reliable rating system and method thereof
Time variant rating system and method thereof
Systems and methods for visual presentation and selection of ivr menu
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
Systens and Methods For Electronic Communication

Recently uploaded (20)

PPT
Hypersensitivity Namisha1111111111-WPS.ppt
PPTX
A Clear View_ Interpreting Scope Numbers and Features
PPTX
Embedded for Artificial Intelligence 1.pptx
PPTX
unit1d-communitypharmacy-240815170017-d032dce8.pptx
PPTX
Lecture 3b C Library _ ESP32.pptxjfjfjffkkfkfk
PPTX
Sem-8 project ppt fortvfvmat uyyjhuj.pptx
PDF
Smarter Security: How Door Access Control Works with Alarms & CCTV
PDF
-DIGITAL-INDIA.pdf one of the most prominent
PPTX
Lecture-3-Computer-programming for BS InfoTech
PPTX
Entre CHtzyshshshshshshshzhhzzhhz 4MSt.pptx
PPT
Lines and angles cbse class 9 math chemistry
PPTX
quadraticequations-111211090004-phpapp02.pptx
DOCX
fsdffdghjjgfxfdghjvhjvgfdfcbchghgghgcbjghf
PPTX
material for studying about lift elevators escalation
PDF
Dozuki_Solution-hardware minimalization.
PPTX
DEATH AUDIT MAY 2025.pptxurjrjejektjtjyjjy
PPTX
Prograce_Present.....ggation_Simple.pptx
PPTX
code of ethics.pptxdvhwbssssSAssscasascc
PPTX
title _yeOPC_Poisoning_Presentation.pptx
PPTX
02fdgfhfhfhghghhhhhhhhhhhhhhhhhhhhh.pptx
Hypersensitivity Namisha1111111111-WPS.ppt
A Clear View_ Interpreting Scope Numbers and Features
Embedded for Artificial Intelligence 1.pptx
unit1d-communitypharmacy-240815170017-d032dce8.pptx
Lecture 3b C Library _ ESP32.pptxjfjfjffkkfkfk
Sem-8 project ppt fortvfvmat uyyjhuj.pptx
Smarter Security: How Door Access Control Works with Alarms & CCTV
-DIGITAL-INDIA.pdf one of the most prominent
Lecture-3-Computer-programming for BS InfoTech
Entre CHtzyshshshshshshshzhhzzhhz 4MSt.pptx
Lines and angles cbse class 9 math chemistry
quadraticequations-111211090004-phpapp02.pptx
fsdffdghjjgfxfdghjvhjvgfdfcbchghgghgcbjghf
material for studying about lift elevators escalation
Dozuki_Solution-hardware minimalization.
DEATH AUDIT MAY 2025.pptxurjrjejektjtjyjjy
Prograce_Present.....ggation_Simple.pptx
code of ethics.pptxdvhwbssssSAssscasascc
title _yeOPC_Poisoning_Presentation.pptx
02fdgfhfhfhghghhhhhhhhhhhhhhhhhhhhh.pptx

Programmable command-line interface API for managing operation of a network device

  • 1. United States Patent US007039724B1 (12) (10) Patent N0.: US 7,039,724 B1 Lavian et al. (45) Date of Patent: May 2, 2006 (54) PROGRAMMABLE COMMAND-LINE 5,892,950 A * 4/1999 Rigori et a1. ............. .. 717/146 INTERFACE API FOR MANAGING 6,199,133 B1* 3/2001 Schnell ........ .. 710/110 OPERATION OF A NETWORK DEVICE 6,625,590 B1 * 9/2003 Chen et a1. . . . . . . . . . . . .. 707/1 6,661,800 Bl * l2/2003 Hayama et a1. 370/403 75 _ . _ 6,662,221 Bl* 12/2003 Gonda et a1. 709/223 ( ) Inventors‘ lTlalblsialg ljavlan’ gl11nny‘éa1e? CAB/?gs’ 6,665,714 B1 * 12/2003 Blumenau et a1. 709/222 (68)“ ' aeger’ Iver Pnng’ 6,724,408 B1 * 4/2004 Chen et a1. ............... .. 715/853 * cited by examiner (73) Assignee: Nortel Networks Limited, (CA) _ Primary ExamineriKlm Huynh ( * ) Notice: Subject to any disclaimer, the term of this Assistant ExamineriAngel _L Caslano _ patent is extended or adjusted under 35 (74) Attorney, Agent, or FtrmiMcGumness & Manaras U.S.C. 154(b) by 810 days. LLP (21) Appl. No.2 09/753,017 (57) ABSTRACT (22) Filed: Dec. 29, 2000 Amethod of managing a network device, includes providing a command-line interface application programming inter Related U-s- Application Data face (CLl-API) compatible with a command-line interface (63) continuationdmpart of application NO 09/522,332, (CLI) of the network device, receiving instructions from an ?led on Mar‘ 9 2000' application that calls one or more routines in the CLI ’ application programming interface, and generating at least (51) Int CL one command in response to receiving instructions from the G06F 15/16 (200601) application wherein the at least one command is compatible G061? 15/177 (200601) with the CLI of the network device. An apparatus includes (52) us. Cl. .................... .. 709/250- 709/208- 709/220- a remote Sen'al Command-line interface (RS-CU) device 709/221. 709/2’22. 710/1’10. 707/1’ having a storage device capable of storing instructions, a (58) Field of Classi?cation seérch ’ 709/22’0i222 network port capable of being connected to the network and 7O9/Z6éIW7IO/HO 707/1’ capable ofprocessing a network protocol stack in addition to See a lication ?le for Com lete séarch histo’ receiving the instructions, a serial port capable of processing pp p ry' a serial protocol and capable of being connected to the (56) References Cited non-application enabled network device, and a processor U.S. PATENT DOCUMENTS capable of processing instructions stored in the storage area of the RS-CLI device. 5,617,527 A * 4/1997 Kressin et a1. ............ .. 715/840 5,701,488 A * 12/1997 Mulchandani et a1. .... .. 717/128 15 Claims, 11 Drawing Sheets 108 110 Application Authentication Sewer Sewer 1 1 ' 104 Network 102 Network Device Device 111 112 Target Network Device 11 17 Client Node 114 106 With User Interface Network Device 1 116 Network Monitor Server
  • 2. U.S. Patent May 2, 2006 Sheet 1 0f 11 US 7,039,724 B1 108 110 Application / Authentication / Sewer Server I I 104 Network /1O2 Network / Device Device 111 112 Target / Network Device Client Node /114 106 With User Interface Network Device I 116 Network / Monitor 100 / Server FIG. 1
  • 3. U.S. Patent May 2, 2006 Sheet 2 0f 11 US 7,039,724 B1 112 202 MEMORY / 226 Client Application / 224 Mobile Agent Module / 222 Object-Oriented MIB Interface 221 MIB Compiler / 220 MIB Map 21 6 Native SNMP Virtual Variable Stack Machine 218 Interface Runtime / 204 214 _ . Annota?on Environme 212 Processor Layer ?t / RTOS 217 211 Network 208 210 206 Communication Secondary Input-Output Port / 207 Storage Ports Loopback / Address FIG. 2
  • 4. U.S. Patent May 2, 2006 Sheet 3 0f 11 US 7,039,724 B1 C Start ) i 302 Receive Management Information Base Definitions For Network Device i 304 Parse And Process MIB Definitions For Network Device 306 1 l Generate Object Oriented MIB Interface And MIB Map Corresponding To MIB Definitions ( End 3 FIG. 3
  • 5. U.S. Patent May 2, 2006 Sheet 4 0f 11 US 7,039,724 B1 MIB Data Group 406A SNMP Group MIB Data Class Interface Class 4068 SNMP Class
  • 6. U.S. Patent May 2, 2006 Sheet 5 0f 11 US 7,039,724 B1 502 Network Management Server Requests That A Network Device Load Operations Associated With A Task l 504 Network Device Accesses Application Server For Application Corresponding To Requested Process l 506 Application Server Locates Application And Transfers To Network Device l 508 . . . Network Devlce Loads Appllcatlon And Executes Requested Process l 510 Network Device Results Are Provided To Network Management Services FIG. 5
  • 7. U.S. Patent May 2, 2006 Sheet 6 0f 11 US 7,039,724 B1 ( Start I 0 Receive Request For 602 Network Parameters From Application Executing On 606 Network Device Send SNMP Request For 604 Network |s Request Parameters T0 or MIB Information Network Address Targeted At Local Of Target Network Network Device Devlce? 612 608 ‘V S d SNMP Reqleirest Through SNMP Stack on Network Protocol 611 Target Network Device .. .. Retrieves Network ( loopback Access MIB Parameters Address) LOCa| Information Network Device Direc?y? 610 v 614 ‘V Results Returned To Network protocol on Application Executing Local Network Device _ on LOCal ‘Network Converts Request Access MIB Devlce Into SNMP Request Information For For A Network Requesting Local Parameter Network Device + t SNMP Stack pReslultstiRetéirned To Retrieves MIB — 2;’ ‘GL8 'orl' Nxecut'lz'g ; Request n oca . etwor Device 618 / " 616 End
  • 8. U.S. Patent May 2, 2006 Sheet 7 0f 11 US 7,039,724 B1 702 226 / MEMORY Client Application 224 Mobile Agent / Module / 222 Object-Oriented MIB Interface 221 MIB Com iler 207 . P . / 220 MIB Map Loop-back Native SNMP Virtual Address Variable Stack Machine / 218 interface Runtime Annotation Environme Layer nt 212 RTOS ' 217 708 Unseoure 710 Secure Communication Link Communication Link 704 NMS Network Management Application ‘ A / 706 FIG. 7
  • 9. U.S. Patent May 2, 2006 Sheet 8 0f 11 US 7,039,724 B1 802 Network Management Application Encrypts Network Management Commands And Transmits Over Network l 804 Client Application On Network Device Authenticates And Authorizes Network Management Application l 806 Client Application Decrypts Network Management Commands Received Over Network l 808 Network Commands Are Transmitted To Local Network Device Through Loopback Address l 810 Results Are Encrypted And Returned To Network Management Application FIG. 8
  • 10. U.S. Patent May 2, 2006 Sheet 9 0f 11 US 7,039,724 B1 902 Programmable Command Line Interface API (CLl/API) 904 Session Mgt Classes 906 Input-Output Classes Configuration Classes 908 910 Macro Generation Classes 912 Other Classes FIG. 9
  • 11. U.S. Patent May 2, 2006 Sheet 10 0f 11 US 7,039,724 B1 1012 1006 SNJEN - Device o i ii n‘—>ISeria|C0nnection Terminal 1008 RS_CL| Device Network connection 1010 1002 1004 JEN Device NJEN Device 1000 FIG. 10
  • 12. U.S. Patent 1104 1114 May 2, 2006 Sheet 11 0f 11 1102 Application Processes Instructions To Control Target Network . Does Target Network Device Receive Instructions Only Over CLl-API Creates Corresponding CLI Commands In Response To Application Instructions CLl-API Sends CLI Commands To Target Network Device Over Network Connection l l 1108 / CLl-API Sends Instructions To RS-CLI Device 1110 RS-CLI Device Creates CLI Commands In Response To Application Instructions RS-CLI Device Sends CLI Commands To Target Network Device Over Serial Port 1116 CLI Commands Are Executed On Target Network Device V Results Are Returned To Application End FIG. 11 US 7,039,724 B1
  • 13. US 7,039,724 B1 1 PROGRAMMABLE COMMAND-LINE INTERFACE API FOR MANAGING OPERATION OF A NETWORK DEVICE This application is a continuation-in-part and claims pri ority from US. application Ser. No. 09/522,332, entitled METHOD AND APPARATUS FOR ACCESSING NET WORK INFORMATION ONANETWORK DEVICE, ?led Mar. 9, 2000. TECHNICAL FIELD This invention generally relates to performing netWork management remotely on netWork devices connected to a netWork. BACKGROUND Computer netWorks are becoming increasingly complex and di?icult to manage. This is driven in part by the ever-increasing variety of netWork devices, computers, and softWare being combined together to integrate large enter prise-based intranets With the Internet. NetWork manage ment tools have been produced to monitor these combina tions of hardWare and software and help troubleshoot netWork failures When they occurred. Traditional netWork management tools use a protocol called simple netWork management protocol (SNMP) to monitor netWork devices such as routers, sWitches, hubs, remote access devices, or even computers in a netWork. The protocol used to interface With SNMP includes rudimentary commands to operate on data such as to “get” a variable, “set” a variable, or “test” a variable. Having just a feW simple commands can make it di?icult to perform netWork management tasks. Speci?cally, it can be di?icult using these basic commands to develop sophis ticated netWork management applications to monitor and troubleshoot a netWork. Each task may need to be custom iZed to the parameters and capabilities of each netWork device. Further, a netWork management task sending com binations of these commands to one or more netWork devices connected to the netWork may Wait a signi?cant period of time for all the necessary results to be returned. NetWork delays can be caused by netWork congestion and the unique processing bottlenecks associated With each netWork device. NetWork management tasks must also be performed securely to prevent accidental or even malicious interlopers from altering netWork con?gurations and operation. The most Widely used SNMP based netWorks do not provide the appropriate levels of security because commands are trans mitted in the “clear”. Con?dential information such as a community string and private string can be captured and used to gain access to netWorks. Further, sensitive business information transmitted in the course of an electronic busi ness transaction can also be captured and misused for monetary gain. Advanced versions of SNMP such as SNMP Version 3 provide a degree of security but have not been Widely adopted and therefore cannot be relied on. It is also di?icult to manage netWorks having netWork devices from different vendors and with different capabili ties. Each netWork device generally requires the netWork administrators managing the netWork to have special net Work management training. Additionally, the interface used to manage the netWork devices may also hinder e?fective netWork management practices. For example, some netWork devices can only be managed using a terminal connected to 20 25 30 35 40 45 50 55 60 65 2 a serial port on the netWork device While others can be managed by logging into the netWork device over a netWork connection using telnet, rlogin, or other remote login ser vices. Often the netWork devices receiving commands over the serial interface implement proprietary command-line interfaces (CLI) and commands only accessible by a user entering commands on the serially attached terminal. Unfor tunately, these command-line interfaces (CLI) are not stan dard and require the netWork administrators to learn and use different commands and netWork management methods. SUMMARY In one aspect of the present invention, a method of managing a netWork device, includes providing a command line interface application programming interface (CLI-API) compatible With a command-line interface (CLI) of the netWork device, receiving instructions from an application that calls one or more routines in the CLI application programming interface, and generating at least one com mand in response to receiving instructions from the appli cation Wherein the at least one command is compatible With the CLI of the netWork device. In another aspect of the invention, a netWork having netWork management capabilities, includes a non-applica tion enabled netWork device having a CLI capable of controlling one or more netWork management aspects of the non-application enabled netWork device, and an application enabled netWork device capable of executing applications that use a CLI-API to generate one or more commands compatible With the non-application enabled netWork device CLI and transmits the one or more commands to the non application enabled netWork device over the netWork for execution. Yet another aspect of the invention is a remote serial CLI (RS-CLI) device having a storage device capable of storing instructions, a netWork port capable of being connected to the netWork and capable of processing a netWork protocol stack in addition to receiving the instructions, a serial port capable of processing a serial protocol and capable of being connected to the non-application enabled netWork device, and a processor capable of processing instructions stored in the storage area of the RS-CLI device that at least generates commands compatible With a CLI of the non-application enabled netWork device in response to processing the instructions stored in the storage area. Another aspect of the invention includes a method of managing a netWork device that receives an application having instructions compatible With a CLI application pro gramming interface (CLI-API) con?gured to Work With a CLI of the netWork device, creates CLI commands capable of controlling the netWork device in response to processing one or more of the instructions compatible With the CLI API, transmits the CLI commands created by the CLI-API over a netWork to the netWork device, and processes the CLI commands on the netWork device. In the various aspects of the invention and Where appro priate, Java object-oriented applications and applets are executed that manage one or more netWork devices over the netWork. The instructions in these applications and applets generate command-line interface (CLI) commands through the CLI-API to manage the netWork devices. The details of one or more embodiments of the invention are set forth in the accompanying draWings and the descrip tion beloW. Other features of the invention Will be apparent from the description and draWings, and from the claims.
  • 14. US 7,039,724 B1 3 DESCRIPTION OF DRAWINGS The accompanying drawings, which are incorporated in and constitute a part of this speci?cation, illustrate an embodiment of the invention and, together with the descrip tion, serve to explain principles of the invention. FIG. 1 is a block diagram of an example network. FIG. 2 is a block diagram example of a network device architecture. FIG. 3 illustrates the operations used in one embodiment to convert network parameters for a network device into an object-oriented compatible interface for accessing those network parameters. FIG. 4 depicts the relationship between a management information database (MIB) and the corresponding object oriented MIB classes in one embodiment. FIG. 5 illustrates the operations a network management server (NMS) performs to gather network parameters from a network device. FIG. 6 illustrates the operations used by a network device to gather network parameters. FIG. 7 is a block diagram of a network management server (NMS) securely communicating a network manage ment protocol commands to a network device. FIG. 8 is a ?owchart diagram for securely communicating network management commands to a network device over a network. FIG. 9 is a block-diagram illustrating a command-line interface application-programming interface (CLI-API) for a network device. FIG. 10 is a block diagram of a network having network devices capable of transmitting and receiving commands from an application through a CLI-API. FIG. 11 provides the operations an application performs to manage network devices using CLI-API alone and in conjunction with a remote serial command-line interface (RS-CLI) device. DETAILED DESCRIPTION Systems and methods described herein are used to dis tribute network management tasks to one or more network devices connected to a network. A network application distributed to each network device collects relevant network parameters from each network device and transmits the results back to a central NMS or to other network devices on the network for further analysis. Each network application can be programmed to perform a series of operations using an object-oriented programming language such as Java. The network application interfaces on each network device pro vides an application programming interface (API) compat ible with the particular programming language. This API is compatible with legacy network management protocols such as simple network management protocol (SNMP) and, therefore, can be adapted to work with a wide range of legacy compatible devices. Tools used to generate the API consistent with the present invention include a management information database (MIB) to object-oriented software compiler and a MIB map. The compiler uses existing MIB information to generate an object oriented MIB interface to the underlying MIB infor mation collected on each network device. The compiler also generates a MIB map to determine if access to the MIB information is made directly to the storage location of the MIB database or through a network address and network management protocol associated with the network device. 20 25 30 35 40 45 50 55 60 65 4 FIG. 1 illustrates an exemplary communication system 100 including a network device 102, a network device 104, a network device 106, and a target network device 112. Network devices 102, 104, 106, and target network device 112 includes switches, routers, hubs, and similar devices capable of processing ?xed-length or variable-length pack ets in a network. Network device 102 facilitates the transfer of applications from an application server 108 to the other network devices and nodes on the network. Server 108 provides applications that can execute directly on network devices 102*106 and target network device 112. The variety of network applica tions available for downloading from application server 108 increases the network management capabilities of each network device. For example, application server 108 may provide an application to a network device that enables the device to ?lter network traf?c containing data packets gen erated from activities not critical to business, such as brows ing the Internet. The resulting increase in bandwidth can be used for more critical business needs. Network device 104 enables authentication server 110 to authenticate downloading of applications from application server 108 to other network devices within communication system 100. Authentication server 110 can identify a net work device on the network and determine if that device should or should not receive a particular application. For example, authentication server 110 may authenticate a par ticular application and determine if the application should be downloaded to a network device in communication system 100. This feature could be used to prevent introduction of viruses or other unauthorized software onto the network. Additionally, authentication server 110 may also determine if a network device within communication system 100 has proper authoriZation to download an application. Network device 106 facilitates communication between a network monitor server (N MS) 116 and other network nodes and processes within communication system 100. Tradition ally, an NMS will send network commands to the network devices and, in return, receive input from the network devices, including network parameters. This traditional approach to network management requires NMS 116 to perform a majority of the processing for network manage ment. In contrast, system 100 distributes processing to the network devices that are in communication with the net work. This reduces the processing load and frees up NMS 116 so that it can process more critical tasks. For example, network device 102 may monitor network tra?ic between it and network 111 to reduce the processing load on NMS server 116. In such a case, NMS 116 might receive a noti?cation from network device 102 when device 102 detects that the network bandwidth has exceeded a prede termined threshold. Target network device 112 depicts an example network device monitored by either a user or central NMS 116. The client node user interface 114 allows the user to perform network management tasks that execute directly on target network device 112. NMS 116 is used to monitor larger and more frequent management tasks dealing with groups of network devices or the overall network. For example, NMS server 116 can execute software agents on different network devices and monitor overall traf?c being processed by a group of network devices connected to the network. FIG. 2 illustrates an architecture used, for example, on target network device 112 and compatible with the network management system. In this example, target network device 112 includes a memory 202, a processor 204, a network communication port 206, a secondary storage 208, and
  • 15. US 7,039,724 B1 5 input-output ports 210 in communication with each other over a bus 211. Although the example architecture depicted in FIG. 2 includes speci?c components, alternate embodi ments can be implemented using additional or fewer com ponents than used in this example while remaining compat ible with the network management system. The speci?c components used in the architecture for target network device 112 can vary depending on the speci?c functions to be performed and design decisions made for the particular implementation. Network communication port 206 is compatible with a variety of physical and logical network protocols including, for example, TCP/IP and Novell NetWare. A loop back address 207 enables network management applications executing on target device 112 to access local storage areas and resources using the local network protocol stack and local network parameters rather than accessing the storage area on the network device directly. By using the network protocol stack, network applications can access network parameters on a local device and a remote device in a uniform manner. For example, a network management appli cation executing on target network device 112 can access network parameters associated with a remote network device or a local network device through network commu nication port 206 by specifying either the network address of the remote network device or the local device respectively. Speci?cally, the network management application executing on the local device can access network parameters of the local network device by specifying loop back address 207. In effect, loop back address 207 provides indirect access to the network parameters of the local device through the network protocol stack. Secondary storage 208 may include a disk drive, CD ROM, or any other storage device used by target network device 112. Input-output ports 210 include physical connec tions for terminals, printers, pointing devices, keyboards, or any other device useful for con?guring, operating, or con trolling target network device 112. During execution of one embodiment, modules in memory 202 include a real time operating system (RTOS) 212, an annotation layer 214, a native variable interface 216, a simple network management protocol (SNMP) stack 217, a virtual machine runtime environment 218, a management information database (MIB) map 220, a MIB compiler 221, an object-oriented MIB interface 222, a mobile agent mod ule 224, and a client application 226. Alternate embodiments of the invention can include additional or fewer modules depending on the speci?c functions required for operation and the design decisions made to implement the invention. For example, RTOS 212 provides improved performance on target network device 112 by executing instructions as they arrive without interruption or delay. However, if the design allows for a reasonable delay while processes are preempted and swapped out of memory, then a general-purpose oper ating system may be used in lieu of RTOS 212. The general-purpose operating system may also be used if it is less costly to implement than the real-time system and compatible with a wider variety of existing software pack ages. Annotation layer 214 provides an interface between appli cations accessing the MIB database associated with a net work device and the actual storage locations for the MIB database on the network device. This layer is necessary because different hardware devices tend to store the under lying MIB database information in different locations on the network device. For example, one network device may store port speed address in a central lookup table of RAM while 20 25 30 35 40 45 50 55 60 65 6 other network devices may store the port speed addresses for each port on separate ASIC chips associated with each port. Using annotation layer 214, an application can request MIB database information without specifying the actual location of data on the network device. SNMP stack 217 implements a network management protocol used by different networks to exchange network management information while monitoring network com munication. Typically, SNMP stack 217 exchanges network information with other nodes on the network through mes sages called protocol data units (PDUs). The PDUs contain variables with titles and values and are generally capable of “getting” network parameters, “setting” network param eters, or “testing” for network events occurring on network devices. For example, SNMP stack 217 may transmits a PDU to a remote network device to determine if the remote device has a terminal attached to it. If the terminal is attached to the remote network device, SNMP stack 217 will receive back a PDU containing information that may iden tify and describe the speci?c terminal. Each PDU typically includes a variable title and a value of the variable. Native variable interface 216 provides direct access to underlying SNMP data stored on a network device. Each device on the network requires a different native variable interface 216 customiZed to the speci?c features of the device hardware and software. As new network devices are produced or added to a network, a new interface 216 is customiZed to the speci?c hardware and software require ments. While this customiZation process increases the research and development costs, it also increases the effi ciency associated with retrieving network parameters from a network device because the information is accessed directly. Alternatively, network parameters may also be retrieved using SNMP stack 217 and loopback address 207. This eliminates the need for native variable interface 216 and reduces the corresponding costs associated with developing the native variable interface. In lieu of accessing the network parameters directly, a network management application sub mits requests to loopback address 207 of a network device. Within the requests are SNMP compatible commands for mulated to retrieve the desired network parameters. Local processes on the network device monitoring loopback address 207 pass the request to SNMP stack 217 which, in turn, accesses the network parameters as requested. The same local processes then return the resulting network parameters back through SNMP stack 217 and through loopback address 207 and back to the network management application requesting the information. Virtual machine runtime environment 218 processes object-oriented instructions for execution on processor 204, and may include a virtual machine (VM) and a correspond ing development kit (DK) having object-oriented class libraries. The VM simulates a processor and executes on many different hardware platforms. Instructions from a variety of applications are interpreted by the VM and executed on processor 204. One virtual machine run time environment 218 includes a Java virtual machine (JVM) and the Java foundation classes. The Java virtual machine is one type of virtual machine that promotes platform independent computing using the Java programming language. In operation, MIB map 220 facilitates converting object oriented requests for MIB information into requests for network parameters either through SNMP stack 217 or native variable interface 216. MIB map 220 determines how network parameters in a MIB should be accessed for dif ferent types of network devices. For example, MIB map 220 can be implemented with a table that converts requests for
  • 16. US 7,039,724 B1 7 network parameters through native variable interface 216 or SNMP stack 217 into a series of object-oriented method calls. The map includes a database listing the netWork parameters related to the management of a netWork device and a set of object-oriented methods for manipulating the netWork parameters. MIB map 220 maps requests for net Work parameters from a set of operations to access and manipulate the netWork parameters to a database having the actual netWork parameter information. Each request for a netWork parameter may invoke one or more obj ect-oriented methods depending on the complexity associated With retrieving and processing the data. If a neW type of netWork device is added to the network, MIB map 220 Will initially access the netWork parameters using SNMP stack 217 and loopback address 207 in the manner previously discussed. This alloWs a netWork man agement device to access netWork parameters on an SNMP compatible netWork device using existing SNMP features built into the netWork device. Once a native variable inter face 216 is developed for the netWork device, MIB map 220 can be recon?gured to access netWork parameters through the faster and more efficient native variable interface 216. Object-oriented MIB interface 222 provides an interface for applications to access MIB information using object oriented classes and methods. Initially, a MIB compiler 221, discussed in further detail beloW, receives a list of MIB variables and generates the classes and method found in the object-oriented MIB interface 222. At least tWo types of variablesiscalar variables and table variablesiare acces sible through object-oriented MIB interface 222. A scalar variable is a single variable With an identi?er that identi?es the variable and a value associated With the variable. If an application requests a scalar variable, object oriented MIB interface 222 returns an object-oriented instance of that scalar variable. For example, a netWork management appli cation may request a scalar variable identifying the number of resent packets on the netWork device. Alternatively, object-oriented MIB interface 222 may request a table of information from the underlying SNMP layer. In response, the underlying SNMP layer Would provide an object table and corresponding methods for accessing each of the entries Within the table. As an example, one type of object table may include a list of netWork addresses associated With netWork devices in a subnet and methods for an application to manipulate the entries in such a table. Mobile agent module 224 provides a frameWork for executing a variety of mobile agents. Client application 226 represents one such mobile agent application as illustrated in FIG. 2. Accordingly, mobile agent module 224 interfaces betWeen the mobile agent and the underlying execution environment, thus alloWing a mobile agent to operate on a variety of netWork devices and operating environments. For example, mobile agent module 224 implemented in accordance With the Java BeanTM application-programming interface de?nes a portable, platform-neutral set of APIs for softWare components to communicate With each other in accordance With the Java Beans conventions. In addition, mobile agents implemented using Java Bean components are able to plug into other component architectures, such as Microsoft’s COM/DCOM/Active X architecture. In this capacity, mobile agent module 224 acts as a bridge betWeen mobile agents developed using Java Beans and other com ponent object models or component architectures. For example, mobile agent module 224 may receive Java instructions from client application 226 and convert them into instructions compatible With the COM/DCOM/Active X environment or alternatively, may convert these same Java 20 25 30 35 40 45 50 55 60 65 8 instructions into byte codes to run on a virtual machine in virtual machine run time environment 218. It should be appreciated that client application 226 may be any type of netWork management application designed for execution on target netWork device 112. FIG. 3 illustrates the operations for generating an inter face to MIB information from an object-oriented applica tion. MIB compiler 221 generates object-oriented MIB interface 222. Initially, MIB compiler 221 receives MIB de?nitions for a netWork device (302). These de?nitions may be stored in a database as a series of identi?ers and corresponding values sufficient to describe the netWork parameters associated With a particular netWork device. Each netWork device may have a unique MIB de?nition depending on its capabilities and operating characteristics. Common MIB de?nitions, hoWever, are arranged in a pre determined hierarchical order as illustrated in FIG. 4 and described beloW. Next, MIB compiler 221 extracts netWork parameters for the speci?c netWork device from the MIB de?nitions (304). This involves lexically recogniZing and parsing each token in the MIB de?nitions for the netWork device. MIB compiler 221 then generates an object-oriented MIB application programming interface or MIB interface and MIB map 220 corresponding to the MIB de?nitions (306). The object oriented MIB interface creates classes corresponding to the MIB hierarchy and methods for accessing each of the variables in the MIB de?nition. MIB map 220 assists in mapping object-oriented class de?nitions and method calls into corresponding combinations of SNMP primitives (e.g., get, set, and test) used by SNMP stack 217 or native variables. FIG. 4 illustrates an exemplary mapping from MIB de? nitions 400 to corresponding MIB classes 403 and object oriented methods. For example, MIB de?nitions 400 may include a MIB data group 402A, a vendor speci?c group 404A, an SNMP group 406A, a system group 408A, an IP group 410A, a TCP group 412A and an interface group 414A, to name a feW. These MIB information groups de?ne hoW netWork information is organiZed and can be addressed on a netWork device. These speci?c groups contain netWork information organiZed according to industry standards. For example, vendor speci?c group 404A includes an area that vendors can de?ne their oWn netWork parameters and proprietary information. SNMP group 406A includes de? nitions for protocol data units (PDUs) used for netWork nodes to communicate. IP group 410A includes information corresponding to the netWork communication layer. For example, IP group 410A may include the IP address of a netWork device and nearby routers or sWitches. TCP group 412A, Which includes information corresponding to the transport protocol layer, may include a list of all active connections communicating using a “socket” interface as Well as the ports and corresponding services. MIB compiler 221 in FIG. 2 receives the MIB de?nitions 400 in FIG. 4 in a database that lists the netWork parameters related to the management of a netWork device. MIB com piler 221 converts these MIB de?nitions 400 into corre sponding MIB objects 403 including data class 402B, ven dor’s speci?c class 404B, SNMP class 406B, system class 408B, IP class 410B, TCP class 412B, and interface class 414B. Through this conversion, MIB compiler 221 then creates the methods an application can use to access netWork parameters in the MIB database corresponding to the classes.
  • 17. US 7,039,724 B1 In operation, an object-oriented network management application is downloaded into a network device accesses the MIB database through the object-oriented interface. FIG. 5 illustrates the operations used by a NMS to manage a network device. Initially, the NMS requests that a network device load a set of operations associated with a particular task (502). This o?loads a portion of the network manage ment processing to the target network devices and frees up the NMS to handle other requests. In addition, this reduces network traf?c caused by sending numerous PDUs with SNMP messages. In response to the request to load a set of operations, the network device accesses an application server having the application(s) capable of performing the set of operations associated with the task (504). For example, an application server 108 as shown in FIG. 1 stores hundreds of network applications ready for execution on target network device 112. Application server 108 receives the request, locates the application, and then transfers it to the appropriate network device (506). In one implementation, application server 108 transfers a network application from application server 108 to the network device each time or session the network device executes the application. Alternatively, an application may remain resident in a network device permanently or for a given period of time once it is initially downloaded from the application server. The network device loads and executes the requested application (508). Using the application, the network device may perform a variety of network management functions. For example, the network device may be asked to monitor network traffic on a nearby network and notify the central NMS when a node on the network becomes inactive or the network traf?c increases beyond a particular threshold. Once the information or results are generated, the network device provides information back to the NMS for processing (510). If a central NMS is not present, the network device may broadcast results over the network to other network devices monitoring and processing the network information. FIG. 6 illustrates the operations used to access network parameters on a network device consistent with the present invention. Speci?cally, a network management application such as client application 226 in FIG. 2 executes these operations to access network parameters stored directly on a local network device or to access network parameters stored on a remote network device. By accessing network param eters on a remote device, one network device can act as a proxy for obtaining network parameters from another net work device. This is particularly useful if, for example, the remote network device is an older device or otherwise incompatible with features of the present invention. For example, a network management application executing on a local network device can be used to access parameters on a remote network device designed without a virtual machine or that is not capable of executing network management applications designed consistent with the present invention. The network management application can be an object oriented application written in Java that uses remote method invocation (RMI), JINI, COM/DCOM or other distributed computing mechanisms to process information on a remote computer system. Java, RMI, JINI and derivatives of Java are trademarks of Sun Microsystems, Inc. of Mountain View, Calif. COM/DCOM are products developed by Microsoft of Redmond, Wash. As shown in FIG. 6, a network management application initially begins execution on a local network device. The network management application executing on the local network device requests a network parameter typically 20 25 30 35 40 45 50 55 60 65 10 found in the MIB (602). For example, a network manage ment application may request MIB information correspond ing to the current count and the cumulative count of packets being transmitted to determine if the capacity of a network device has been met or exceeded. The network management application then determines if the requested network parameter is associated with the local network device or a remote network device (604). If the network parameter is associated with a remote network device, the network management application forms and sends a request for the network parameter to the remote network address of the network device (606). For example, the network management application may request that SNMP stack 217 (see FIG. 2) create a PDU to gather MIB information on the remote device. This request can be formed using an object-oriented programming language such as Java. SNMP stack 217 then transmits the request for a network parameter over the network to the remote network device for processing. A network protocol such as TCP/IP associated with that remote network device receives the request for the network parameter. The SNMP stack on the remote device processes the request and retrieves the requested network parameter, which includes MIB informa tion (608). Once the network parameter is received on a remote network device, the corresponding SNMP stack packages the result into a PDU and sends the results back to SNMP stack 217 for processing by the network application executing on a local network device (610). If the network management application requests network information associated with the local network device (604), the network management application can access the requested network parameters in at least two different ways. The network management application can access the net work parameters on the local network device directly (611) using a software interface customiZed for the network device (620). For example, the network management application can use a native variable interface to access network param eters on the local network device. Alternatively, the network management application may access local network parameters on a local network device using existing network protocol. Initially, the network man agement application sends a request for a network parameter through the network protocol of the local network device using the “loopback” address (612). This loopback address is a self-referential address which identi?es the local net work device on the network without sending packets of information over the actual network. For example, sending a request to the loop back address establishes a data route directly back to the network protocol stack on the local network device. The network management application essentially uses SNMP stack 217 on the local network device to create a PDU to request the corresponding network parameter (614). SNMP stack 217 then retrieves the requests for the particular network parameter (616). The results are then returned to network management application 226 executing on local network device (618). FIG. 7 is a block diagram of a network management server (NMS) securely communicating network manage ment protocol commands to a network device. System 700 in FIG. 7 includes a network device 702 equipped with object-oriented capabilities described above, a network management server (NMS) 704 executing a network man agement application 706. Network management application 706 can transmit net work management commands over an unsecured link 708 or over a secure link 710 to network device 702. Network management commands transmitted over unsecured link
  • 18. US 7,039,724 B1 11 708 are in the clear and can be easily intercepted and used. This is the typical scenario on most SNMP-based networks because the most common versions of SNMP do not support encryption or other forms of data security. Secure commands transmitted directly to a network management protocol stack such as SNMP 217 can not be decrypted and utiliZed. As a result, conventional network management routines commu nicating directly with the network management protocol stack in the clear can result in a breech of the network and system security. An alternative approach is to communicate over secure communications link 710 to client application 226 running on network device 702. In this approach, network manage ment application 706 can encrypt all information before sending it over the network using an encryption protocol as secure socket layer (SSL) or allowing hardware in secure communications link 710 to encrypt the information. Numerous other methods of sending secure information over the network can also be used. Client application 702 receives the secured information and extracts the network management routines using an agreed upon decryption method. In addition, client applica tion 702 may even authenticate and authoriZe the network management application and user transmitting the secured information before applying any decryption methods. These decrypted network management commands are then trans mitted through obj ect-oriented MIB interface 222 and loop back address 207 to SNMP stack 217 for processing. Result ing information is returned to network management application over a similar secure channel by reversing the above operations. FIG. 8 is a ?owchart diagram for securely communicating network management commands to a network device over a network. Initially, a network management application encrypts network management commands and transmits them over a network (802). For example, the network management application can use SSL or a public-key encryption scheme to encrypt the data. The client application on a network device receiving the network management commands authenticates and authoriZes the network man agement application (804). This can be accomplished by reading a predetermined segment of the transmission for identi?cation information such as a login and password. Once this information is con?rmed, client application decrypts the network management commands transmitted by the network management application (806). Because the client application decrypts the commands, special secure network management protocols such as SNMP Version 3 are not required. This means that any compatible network management protocol can be used and not a specially enhanced version having built-in encryption and security. The decrypted network commands are then transmitted to the local network device through a loopback address (808). The data transmitted over the loopback address remains secure because the data is transmitted along the backplane of the network device and not over an external network port. In addition, the network management commands are immedi ately processed by the network management protocol such as the SNMP stack. Results are then returned to the client application on the network device where they are encrypted and returned to the network management application (810). FIG. 9 is a block-diagram illustrating a command-line interface (CLI) application programming interface (API) 902 for network devices. Access to a conventional CLI on a network device typically occurs through a terminal con nected to the serial port of the network device. The user types in commands directly to the network device through 20 25 30 35 40 45 50 55 60 65 12 this terminal to con?gure and monitor network device information. This CLI-API instead provides an object-ori ented application prong interface for client application 226 in FIG. 2 to develop programmatic interactions with the network device and develop more sophisticated operations. For example, client application 226 can create stateful applications that measure one or more variables on the network device and then make decisions based on the combination of variables. In contrast, the user interfacing with the CLI of a network device cannot easily make such determinations and decisions. In this implementation, CLI-API 902 includes a set of classes compatible with the Java programming language to perform a variety of functions necessary when communi cating over a network or serial link to a command-line interface. These classes include session management classes 904, input-output classes 906, con?guration classes 908, macro-generation classes 910, and other classes 912 as needed to interface with the various network devices on a network. Of course, these classes are given only as an example to perform one set of functions and greater or fewer classes may be required depending on the applications speci?c requirements. Session management classes 904 control the resources associated with establishing a communication session with a network device through the command-line interface. This may include performing authentication and authoriZation of the user and application. For example, obtaining a login name, an application identi?cation, and/or a password. It also includes establishing network sessions, obtaining handles to references of the one or more sessions, and relinquishing the resources associated with the network device when the sessions are completed. Sending and receiving data through the command-line interface occurs through input-output classes 906. Data written to the network device and read from the network device may be bu?fered and converted into different char acter sets through the input-output classes 906. Con?guration classes 908 are used to change the operat ing characteristics of different network devices. Common con?guration processes associated with con?guring a net work device are included in methods de?ned in con?gura tion classes 908. For example, this can include getting and setting IP address information for the network device, taking a network device up or down, or other typical network device con?guration operations. Macro generation classes 910 allows an application to create and register customiZed macro routines. For example, an application can be run that sets up numerous macros and stores them in persistent storage on a central server or network device for other applications to use later. This would make it easier to enhance the available functions using the CLI-API with a network device. Other classes 912 represent any other additional classes that client application 226 may use to interact with a network device. FIG. 10 is a block diagram of a network 1000 having network devices that either transmit or receive commands from an application using the CLI-API described above. Network 1000 includes a Java Enabled Network (JEN) device 1002, a non-Java Enabled Network (NJEN) device 1004, a non-Java enabled network device with serial inter face (SNJEN) 1006, a remote serial command-line interface (RS-CLI) device 1008, connected together over network 1010. JEN device 1002 includes elements described in FIG. 2 and associated with network device 112. Because JEN device 1002 includes a virtual machine, object-oriented
  • 19. US 7,039,724 B1 13 applications and byte-codes can be processed. In particular, JEN device 1002 executes object-oriented applications, for example Java object-oriented applications or applets, and transmits commands to other netWork devices using the CLI-API described above. In contrast, NJEN device 1004 does not include a virtual machine and other features present in JEN device 1002 and therefore is not able to execute object-oriented applications Written in a programming language like Java. NJEN device 1004 can receive commands through the CLI-API interface and send results back through the CLI-API interface to JEN device 1002. These commands can be sent from an appli cation on JEN device 1002 directly to NJEN device 1004 over netWork 1010. SNJEN device 1006 is unique in that it cannot process object-oriented applications Written in Java or any other high-level programming language and cannot receive com mand-line instructions over the netWork. Instead, SNJEN device 1006 can only receive commands over a serial connection. For example, some netWork devices made by Cisco, Inc. cannot process object-oriented applications and further can only process certain commands received over a serial interface. To overcome this limitation, remote serial command line interface (RS-CLI) device 1008 has a serial interface to connect to a serial port on SNJEN device 1006 and a netWork interface to connect to netWork 1010. In one implementation, RS-CLI device 1008 includes a serial interface, a netWork interface, operating system sup port for an object-oriented language like Java, a virtual machine, a set of object-oriented components and APIs to enable execution of object-oriented applications. A serial interface Writer Writes CLI commands to the serial interface and serial interface reader reads commands from the serial interface. A CLI generator Within RS-CLI device 1008 creates CLI commands to send to the serial port and a corresponding CLI response parser analyZes the results of the CLI commands coming from the netWork device such as SNJEN device 1006. RS-CLI device 1008 can be fabricated using an inexpensive processor such as a x86 compatible chip, a serial port and driver, a Ethernet port and driver, a storage device having the softWare described above and a TCP/IP netWork protocol stack. In operation, JEN device 1002 sends commands to SNJEN device 1006 through RS-CLI device 1008. RS-CLI device 1008 processes object-oriented commands received over the netWork and transmits command-line instructions to SNJEN device 1006. This enables even non-Java enable netWork devices requiring a serial communications line to indirectly process object-oriented instructions. With this type of interface, a single netWork device like JEN device 1002 can manage a heterogeneous collection of netWork devices from many different vendors. FIG. 11 illustrates a process 1100 that provides operations an application performs to manage netWork devices using CLI-API 902 alone and in conjunction With RS-CLI device 1008. An application processes instructions designed to control a target netWork device (1102). In one implementa tion, this can be an object-oriented application Written in Java executing on a Java enabled netWork device such as JEN 1002. The target netWork device can be like NJEN device 1004 Which does not execute application instructions (Written in Java or any other language) or like SNJEN 1006, Which not only does not execute instructions in an applica tion but only receives CLI commands over a serial port and not the netWork. The application can include instructions for controlling the con?guration of the target netWork device, gathering 20 25 30 35 40 45 50 55 60 65 14 information on the netWork interfaces on the target the target netWork device, bringing a netWork device up or doWn on the netWork, doWnloading a neW image to the target netWork device using a netWork copy command like Trivial File Transfer Protocol (TFTP), or any other set of operations possible using a command-line interface (CLI). If the target netWork device accepts CLI commands only over a serial interface (1104), CLI-API 902 directly trans mits instructions from the application over the netWork to the netWork port on RS-CLI device 1008 attached to the target netWork device (1108). RS-CLI device 1008 creates corresponding CLI commands in response to application instructions (1110) and transmits them to the target netWork device over a serial port (1112). For example, RS-CLI device 1008 executes Java object-oriented applications or applets that generate CLI commands. While the application instructions in the Java object-oriented application are stan dard, the CLI commands generated by RS-CLI device 1008 are speci?c to the CLI used by the particular netWork device. Alternatively, CLI-API 902 creates corresponding CLI commands in response to application instructions (1106). For example, an application executes application instruc tions on JEN device 1002 that calls CLI-API 902 and generates CLI commands for execution on another netWork device such as NJEN device 1004. CLI-API 902 then establishes a netWork session and transmits corresponding CLI commands directly to the target netWork device (1114). In most cases, CLI-API 902 establishes a session With a target netWork device using the telnet, rlogin, or other remote login type communication protocols. The target netWork device then executes the CLI com mands provided through the application (1116). Each CLI command may cause the target netWork device to operate differently and send back different information. As a result, the CLI commands being generated by the application can change dynamically as the conditions on the target netWork device change or are modi?ed. Once the target netWork device executes all the CLI commands, the results are returned to the application for further processing (1118). While speci?c implementations have been described herein for purposes of illustration, various modi?cations may be made Without departing from the spirit and scope of the invention. For example, encryption and other security measures can be implemented using softWare methods as Well as specially con?gured hardWare designed to process the data for secure transmission over a communication link. Implementations of the invention can be implemented using an object-oriented programming language such as Java, C++, C#, Eiffel, SmallTalk, or Objective C, a procedural programming language such as “C”, or assembly code and various combinations of these languages as used to execute on general purpose processors and processors used Within a netWork devices. With respect to session protocols, remote login protocols such as telnet and rlogin Were suggested hoWever many other types of client-server type protocols Which achieve the same or similar results could also be adapted to Work With implementations of the present inven tion. Further, although aspects of the present invention are described as being stored in memory and other storage mediums, they can also be stored on or read from other types of computer-readable media, such as secondary storage devices, like hard disks, ?oppy disks, or CD-ROM, a carrier Wave from the Internet, or other forms of RAM or ROM. Accordingly, the invention is not limited to the above described embodiments, but instead is de?ned by the appended claims and their full scope of equivalents.
  • 20. US 7,039,724 B1 15 What is claimed is: 1. A method of managing a ?rst network device, com prising: loading an obj ect-oriented network management applica tion on a second network device; generating at least one command line interface command by the object-oriented application translating at least one non-command line command to the at least one command line interface command; and communicating the at least one command line interface command from the second network device to the ?rst network device via a loopback address; wherein the application is implemented as one or more obj ect-oriented classes and the one or more routines are method calls in the one or more object-oriented classes; and wherein a command-line interface application program ming interface (“CLl-API”) provides an object-ori ented application programming interface for the appli cation to develop programmatic interactions with the network device. 2. The method of claim 1, wherein the one or more object oriented classes and the method calls are compatible with the Java object-oriented programming language. 3. The method of claim 1, wherein the one or more object-oriented classes are selected from a set of classes including a session management class, an input-output class, a con?guration class, a macro-generation class, and other classes. 4. The method of claim 1, wherein the at least one command-line interface command is capable of performing one or more network management operations selected from a set of operations including con?guring a network device, gathering information on network interfaces on a network device, bringing a network device up or down on a network, and downloading a new image to a network device. 5. The method of claim 1, wherein the programmatic interactions with the network device includes stateful appli cations operable to measure one or more variables on the network device and make decisions based on the one or more measured variables. 6. A network system having network management capa bilities, comprising: a non-application enabled network device having a com mand line interface (CLI) capable of controlling one or more network management features of the non-appli cation enabled network device, a non-application enabled network device being a network device that is not able to process an application written in a high level programming language; and an application-enabled network device capable of execut ing applications that use a command-line interface application programming interface (CPl-API) to gen erate one or more commands compatible with the command line interface of the non-application enabled network device and transmit the one or more com mands to the non-application enabled network device and transmit the one or more commands to the non application enabled network device over a network for execution, an application-enabled network device being a network device that is able to process an application written in a high-level programming lan guage. 7. The network system of claim 6, wherein the applica tion-enabled network device is capable of processing object oriented applications compatible with the Java programming language. 20 25 30 35 40 45 50 55 60 65 16 8. A network system having network management capa bilities, comprising: a non-application enabled network device having a com mand line interface (CLI) capable of controlling one or more network management features of the non-appli cation enabled network device; an application-enabled network device capable of execut ing applications that use a command-line interface application programming interface (CLl-API) to gen erate one or more commands compatible with the CLI of the non-application enabled network device and transmitting the one or more commands to the non application enabled network device over the network for execution; and a remote serial command line interface (RS-CLI) device connected between the application-enabled network device and the non-application enabled network device, the RS-CLI device capable of receiving an application over a network from the application-enabled network device, executing the application and producing com mands for transmission over a serial connection con nected to the non-application enabled network device, wherein the commands are compatible with the CLI on the non-application enabled network device. 9. The network of claim 8, wherein the RS-CLI device comprises, a storage device capable of storing an instruction; a network port capable of processing a network protocol stack and connected to the network; a serial port capable of processing a serial protocol and connected to the non-application enabled network device; and a processor capable of processing the instruction stored in the storage area of the RS-CLI device that at least generates a command compatible with a CLI of a network device in response to processing the instruc tion stored in the storage area. 10. The RS-CLI device of claim 8, wherein the instruction stored in the storage area is from a software component selected from a set of software components including an operating system an object-oriented component, a virtual machine, and a network protocol stack. 11. A remote serial command-line interface (RS-CLI) device comprising: a storage device capable of storing an instruction, a network port capable of being connected to the network and capable of processing a network protocol stack in addition to receiving the instruction; a serial port capable of processing a serial protocol and capable of being connected to the non-application enabled network device; and a processor capable of processing the instruction stored in the storage area of the RS-CLI device that at least generates a command compatible with a CLI of the non-application enabled network device in response to processing the instruction stored in the storage area; wherein the instruction in the storage area is from a software component stored in the storage area and selected from a set of software components including an operating system, an object-oriented component, a virtual machine, a network protocol stack, and an object-oriented application. 12. An apparatus for managing a non-application enabled network device, a non-application enabled network device