US20030135508A1 - Translating configuration files among network devices - Google Patents

Translating configuration files among network devices Download PDF

Info

Publication number
US20030135508A1
US20030135508A1 US10/295,562 US29556202A US2003135508A1 US 20030135508 A1 US20030135508 A1 US 20030135508A1 US 29556202 A US29556202 A US 29556202A US 2003135508 A1 US2003135508 A1 US 2003135508A1
Authority
US
United States
Prior art keywords
source
destination
commands
command
dictionary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US10/295,562
Other versions
US7401086B2 (en
Inventor
Dominic Chorafakis
Vivian Lee
Behrouz Sultanizadeh
Gabriel Lau
Kelly Kanellakis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Extreme Networks Inc
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US10/295,562 priority Critical patent/US7401086B2/en
Assigned to ENTERASYS NETWORKS reassignment ENTERASYS NETWORKS ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LAU, GABRIEL, CHORAFAKIS, DOMINIC, KANELLAKIS, KELLY, LEE, VIVIAN, SUITANIZADEH, BEHROUZ
Application filed by Individual filed Critical Individual
Publication of US20030135508A1 publication Critical patent/US20030135508A1/en
Application granted granted Critical
Publication of US7401086B2 publication Critical patent/US7401086B2/en
Assigned to WELLS FARGO TRUST CORPORATION LIMITED, AS SECURITY AGENT reassignment WELLS FARGO TRUST CORPORATION LIMITED, AS SECURITY AGENT GRANT OF SECURITY INTEREST IN U.S. PATENTS Assignors: ENTERASYS NETWORKS INC.
Assigned to ENTERASYS NETWORKS INC. reassignment ENTERASYS NETWORKS INC. TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 25339/0875 Assignors: WELLS FARGO TRUST CORPORATION LIMITED
Assigned to SILICON VALLEY BANK reassignment SILICON VALLEY BANK SECURITY AGREEMENT Assignors: ENTERASYS NETWORKS, INC.
Assigned to EXTREME NETWORKS, INC. reassignment EXTREME NETWORKS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ENTERASYS NETWORKS, INC.
Assigned to EXTREME NETWORKS, INC. reassignment EXTREME NETWORKS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ENTERASYS NETWORKS, INC.
Assigned to SILICON VALLEY BANK reassignment SILICON VALLEY BANK AMENDED AND RESTATED PATENT AND TRADEMARK SECURITY AGREEMENT Assignors: EXTREME NETWORKS, INC.
Assigned to SILICON VALLEY BANK reassignment SILICON VALLEY BANK SECOND AMENDED AND RESTATED PATENT AND TRADEMARK SECURITY AGREEMENT Assignors: EXTREME NETWORKS, INC.
Assigned to SILICON VALLEY BANK reassignment SILICON VALLEY BANK THIRD AMENDED AND RESTATED PATENT AND TRADEMARK SECURITY AGREEMENT Assignors: EXTREME NETWORKS, INC.
Assigned to ENTERASYS NETWORKS, INC. reassignment ENTERASYS NETWORKS, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: SILICON VALLEY BANK
Assigned to BANK OF MONTREAL reassignment BANK OF MONTREAL SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: EXTREME NETWORKS, INC.
Assigned to EXTREME NETWORKS, INC. reassignment EXTREME NETWORKS, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: SILICON VALLEY BANK
Assigned to BANK OF MONTREAL reassignment BANK OF MONTREAL AMENDED SECURITY AGREEMENT Assignors: Aerohive Networks, Inc., EXTREME NETWORKS, INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Definitions

  • the present invention relates to devices and systems to enable computer networking. More particularly, the present invention relates to the management or more specifically, the configuration, of such devices and systems. Specifically, the present invention relates to systems and methods to translate automatically the configuration commands of one type of device or system into the configuration commands of a different type of device or system.
  • Computing systems are useful tools for the exchange of information among individuals.
  • the information may include, but is not limited to, data, voice, graphics, and video.
  • the exchange is established through interconnections linking the computing systems together in a way that permits the transfer of electronic signals that represent the information.
  • the interconnections may be either wired or wireless.
  • Wired connections include metal and optical fiber elements.
  • Wireless connections include infrared and radio wave transmissions.
  • a plurality of interconnected computing systems having some sort of commonality represents a network.
  • individuals associated with a college campus may each have a computing device.
  • individuals and their computing arrangements in other environments including, for example, healthcare facilities, manufacturing sites and Internet access users.
  • the interconnection of those computing systems, as well as the devices that regulate and facilitate the exchange among the systems represent a network.
  • networks may be interconnected together to establish internetworks.
  • the devices that are designed to effect computer system interconnection include, but are not limited to, routers, gateways, switches, bridges, hubs, and repeaters.
  • the means of signal exchange has been substantially well defined through accepted standards and protocols, there remain variations in certain important aspects of individual supplier devices, such as the Command Line Interface (CLI).
  • CLI is the means by which a network administrator configures the particular operating attributes of one or more of the signal exchange devices associated with a network.
  • the basic functioning of particular devices offered by different suppliers may be the same, the configuration commands or scripts associated with equivalent functionality often vary. For that reason, it can be difficult for a network administrator to acquire and implement network equipment from different suppliers without undertaking significant effort to ensure that the commands suitable for one device equate to the commands for a similar device from a different vendor.
  • the network administrator must manually translate the CLI commands associated with one supplier's device(s) to those associated with a different supplier's device(s), if configuration compatibility is desired.
  • the administrator is left with the choice of using network devices from a sole source with common CLI configuration scripts. Such a choice may be undesirable if that sole source is not the most cost effective one.
  • a configuration file translation system translates at least one source configuration script for a source device to at least one destination configuration script for a destination device.
  • the system comprises at least one data dictionary comprising a plurality of dictionary entries. Each of the dictionary entries comprising at least one source command and at least one destination command corresponding to each source command.
  • the system also comprises a translator for reading source commands in the source configuration script, finding corresponding destination commands in the data dictionary, and translating the source commands in the source configuration script to the corresponding destination commands to create the destination configuration script.
  • a method for translating at least one source configuration script for a source device to at least one destination configuration script for a destination device.
  • the method comprises providing a user interface for prompting a user for input and for displaying information to the user and selecting a data dictionary based on the source device and the destination device.
  • the data dictionary describes source commands for the source device and corresponding destination commands for the destination device.
  • a data dictionary internal representation of the data dictionary selected is created.
  • a source configuration script including source commands for the source device is processed and the data dictionary internal representation for destination commands corresponding to the source commands in the source configuration script is accessed.
  • a destination configuration script including the destination commands corresponding to the source commands in the source configuration script is generated.
  • a method for creating a configuration file translation data dictionary for a source device and destination device.
  • the method comprises identifying source commands used to configure the source device and identifying corresponding destination commands used to configure the destination device.
  • Data dictionary entries are created including a text description of each of the source commands and the corresponding destination commands, wherein the data dictionary entries follow predefined syntax rules.
  • a data structure provides an internal representation of a data dictionary used in translating configuration files.
  • the data structure comprises dictionary entry objects containing source commands and destination commands in a data dictionary and source command objects containing source commands in a source configuration script.
  • Destination command objects include pointers to the dictionary entry objects containing the destination commands, wherein each of the destination command objects corresponds to a dictionary entry object containing a source command.
  • Dictionary entry container objects contain the dictionary entry objects containing the source commands and the corresponding destination command objects.
  • a dictionary object contains a sorted list of dictionary entry container objects.
  • FIG. 1 is a simplified representation of the primary components of the translator system of the present invention.
  • FIG. 2 is a simplified representation of the primary components of the translator used in the translator system, according to one embodiment of the present invention.
  • FIG. 3 is a simplified representation of an exemplar data dictionary module of the translator system of the present invention.
  • FIG. 4 is a simplified representation of the functional arrangement of an exemplar data dictionary internal representation created using the translator system of the present invention.
  • FIG. 5 is a flow chart illustrating one method of translating a source configuration script into a destination configuration script, according to the present invention.
  • FIG. 1 The main components of a configuration file translation system 10 , according to the present invention, are shown in FIG. 1.
  • the system 10 generally includes one or more data dictionaries 12 and a translator 14 , as will be described in greater detail below.
  • the system 10 interfaces between a source device having one or more existing source configuration scripts 20 and a destination device requiring the translation of the source configuration script(s) 20 .
  • the system 10 translates source commands in the source configuration script(s) 20 into destination commands in one or more output or destination configuration scripts 22 .
  • the system 10 can include any number of the data dictionaries 12 .
  • Each of the data dictionaries 12 preferably contains the information needed by the translator 14 to convert the source script 20 for one specific source device to the destination script 22 for one specific destination device. For example, if there is a product X that has 2 versions, and there is a desire to translate scripts from both X.1 and X.2 to be usable for a product Y, there would be 2 data dictionaries: X.1—>Y and X.2—>Y. There is no limit on the number of data dictionaries (and therefore devices) the translator 14 can support, provided there is a meaningful way for a user to select the correct dictionary to use for a particular script translation. In the describing the translation of a script from a device X for use on a device Y, the device X is referred to herein as the “source device” and device Y is referred to herein as the “destination device.”
  • the data dictionaries 12 are preferably used in combination with the translator 14 but may also be used independently to facilitate manual translation, if desired. Moreover, the data dictionaries 12 may be plain text or encrypted text. In addition, the data dictionaries 12 may be supplied by the supplier of the translator 14 or they may alternatively be generated by the user and then compiled with the translator 14 .
  • the translator 14 can be a standalone application or a sub-module of a broader network management application.
  • the data dictionaries 12 preferably describe source commands and corresponding destination commands according to predefined assumptions and syntax rules. Each command preferably includes a series of keywords and parameters, and some command definitions include optional keywords and/or parameters. In some cases, one source command for the source device may translate into two or more destination commands for the destination device to implement the same functionality. In some cases, one or more source commands for the source device may not have any corresponding destination command(s) for the destination device (e.g. if a feature is not supported on the destination device). Based on these assumptions, a data dictionary syntax can be defined and used to describe the translation of any source script to any destination script.
  • the configuration scripts are command line interface (CLI) configuration scripts having CLI commands, although other types or forms of commands are within the scope of the present invention.
  • CLI command basically includes a number of keywords and some parameters, where sections of the command may be recursive.
  • a CLI command to configure a T1/E1 channel group is described as follows:
  • channel-group number timeslots range [speed ⁇ 56
  • channel-group 2 timeslots 1-3, 5-7, 9-11, 13, 16, 18 speed 64
  • Each of the data dictionaries 12 includes dictionary entries describing source commands (i.e., a source command block) used by the source device and the corresponding destination commands (i.e., a destination command block) used by the destination device.
  • Information in the data dictionary is case insensitive.
  • the keywords are listed as is in the dictionary. Any parameters are indicated using a “%” symbol, followed by a character indicating the parameter type.
  • the defined types include %s for strings, %a for IP addresses & masks; %x for a hexadecimal number; %d for a decimal number; and %m for mapping parameters (See Example 10). To uniquely identify a parameter within a command, a number is appended to the type character described above.
  • a command containing two hexadecimal numbers would use %x1 to describe the first parameter and %x2 to describe the second parameter. If a parameter can take a specific set or range of values, this is indicated by providing the range enclosed in “ ⁇ ” and “>” after the parameter name (see Example 2).
  • a parameter name that is used both in the source command and in one or more of the destination commands means that the parameter value is to be copied into the destination command (See Example 1).
  • a parameter name in a destination command e.g. %s2 that has no counterpart in the source command results in a failure to translate.
  • the type description of a parameter is used to resolve possible ambiguous commands. For example, if there is a command that has a different meaning depending on the parameter, the indicated type can be used to determine the correct command at translation time. There is preferably no further processing of the type field beyond resolving ambiguous commands. This implies that if the dictionary maps command-x %d1 to command-y %d1 and the script contains command-x somenumber, the translator output will be command-y somenumber.
  • a recursive block of a CLI command can be separated by either a comma or a space (See Examples 4 and 5). This is indicated by adding a comma in the block specification. For example, ⁇ circumflex over ( ) ⁇ port %d1 ⁇ circumflex over ( ) ⁇ indicates that the specified block can occur many times as port 1 port 2 port3 etc. If the entry was specified as ⁇ circumflex over ( ) ⁇ port %d1,”, the final comma indicates that the command syntax is port 1, port 2, port 3 etc. Recursive command blocks cannot be nested.
  • a command contains optional parameters, they are enclosed in square brackets. CLI commands with optional parameters are internally expanded into all the possible combinations of optional parameters (See Example 7). If an argument is optional in the source command, it is also optional in the destination command. Only those combinations in which all required destination command arguments are found in the source command are taken into account. In one example, commands can only contain up to 32 optional parameters, and nested optional blocks are allowed (See Examples 8 and 9).
  • a parameter in the source command needs to be manipulated before being put in a destination command. For example, if one command takes a port number as an argument (port %d1), and the port numbering scheme is different for the destination device in that all port numbers are offset by 1000, this can be specified by including a mathematical expression in the destination command (See Example 3). All such expressions are enclosed in “&” symbols (dest port &%d1+1000&). Mathematical expressions enclosed in “&” are preferably only found in destination commands and contain parameters of type %d or %x only. Such expression blocks cannot contain optional or recursive arguments. If at least one of the arguments in the expression are of type hex (%x1), the result will also be in hexadecimal.
  • a destination command block contains a sentence that starts with the word “$prompt”, this indicates that the user will be prompted to enter the necessary CLI command (See Example 11). If a destination command block contains a sentence that starts with the word “$password”, the user will be prompted to enter a username/password (see Example 12). Any destination commands that start with the word “$ignore” will be ignored. This can be useful for commands with optional parameters as will be illustrated later. Any comments that are found in the original script are preferably copied to the translated version as is. Any commands that could not be translated are preferably copied into the destination script as a comment, with an additional line above it indicating the error, or reason the translation was not done.
  • channel-group %d1 timeslots ⁇ circumflex over ( ) ⁇ %s1 ⁇ circumflex over ( ) ⁇ [speed %d2 ⁇ 56,64>] begin; define channel-group %d1 assign timeslots ⁇ circumflex over ( ) ⁇ %s1 ⁇ circumflex over ( ) ⁇ to channel-group %d1 [with speed %d2] end;
  • the above block shows how a source command is translated into the corresponding destination command.
  • the values of the arguments %dl and %d2 are copied from the original command into the destination command. If the line being translated is set interface 2 speed 5, the resulting output will be interface 2 has speed 5.
  • the argument %d1 is enclosed in a recursive block in the source command, but not in the destination command. This indicates that the destination command must be repeated several times, once for each instance of the argument.
  • the command set interface 1 2 3 4 5 6 7 speed 5000 would result in the following output:
  • interface 1 has speed 5000
  • interface 2 has speed 5000
  • interface 3 has speed 5000
  • interface 4 has speed 5000
  • interface 5 has speed 5000
  • interface 6 has speed 5000
  • interface 7 has speed 5000
  • the parameter encapsulation %s1 is indicated to be optional.
  • the translator expands this to contain both forms of the command, so the above entry is equivalent to having the following: Set interface ⁇ circumflex over ( ) ⁇ %d1 ⁇ circumflex over ( ) ⁇ speed %d2 Begin; Interface %d1 has speed %d2 End, Set interface ⁇ circumflex over ( ) ⁇ %d1 ⁇ circumflex over ( ) ⁇ speed %d2 encapsulation %s1 Begin; Interface %d1 has speed %d2 with encapsulation %s1 End,
  • the command set interface 1 speed 5000 is translated into interface 1 has speed 5000 based on the first rule.
  • the command set interface 1 speed 5000 encapsulation ppp will be translated into interface 1 has speed 5000 with encapsulation ppp based on the second rule.
  • the above source command has nested optional parameters.
  • the command is again expanded into all its possible forms as illustrated below: Set interface ⁇ circumflex over ( ) ⁇ %d1 ⁇ circumflex over ( ) ⁇ speed %d2 Begin; Interface %d1 has speed %d2 End, Set interface ⁇ circumflex over ( ) ⁇ %d1 ⁇ circumflex over ( ) ⁇ speed %d2 encapsulation %s1 Begin; Interface %d1 has speed %d2 with encapsulation %s1 End; Set interface ⁇ circumflex over ( ) ⁇ %d1 ⁇ circumflex over ( ) ⁇ speed %d2 encapsulation %s1 state %s3 Begin; Interface %d1 has speed %d2 with encapsulation %s1 state %s3 End,
  • Interface %d1 has speed %d2 [with encapsulation %s1 state %s3]
  • interface %m1 set encapsulation %s1 begin; begmap, %m1 FastEthernet0
  • This command uses the concept of mapping.
  • mapping In the source command, there is a portion of the command that needs to be mapped to something different for the destination command. This is accomplished by using the mapped type (%m1), and then specifying the mapping within the command block.
  • a map description block has the following syntax: begmap; mapname (e.g. %m1 or %m2 etc) source string
  • the translator will then expand the command into as many versions as there are mappings, in this case: Interface FastEthernet0 set encapsulation %s1 Begin; Interface FastEthernet0/0/0 encapsulate %s1 End, Interface FastEthernet1 set encapsulation %s1 Begin; Interface FastEthernet0/0/1 encapsulate %s1 End, Interface serial 1 set encapsulation %s1 Begin; Interface serial 0/0/0 encapsulate %s1 End, Interface other %d1 set encapsulation %s1 Begin, Interface myOther &%d1 + 100& encapsulate %s1 End;
  • one embodiment of the translator 14 of the present invention includes three major components: a user interface module 30 , a current data dictionary module 32 , and a translator logic module 34 .
  • the user interface module 30 contains code that is related to the translator user interface such as functions for prompting the user for input and providing feedback relating to the translation process.
  • the current data dictionary module 32 creates the internal representation of the information contained in the data dictionary that was selected by the user based on the source device from which the script was obtained, and the destination device for which it is being translated.
  • the translator logic module 34 contains code that processes the source configuration script and accesses the information stored in the current data dictionary to produce the translated version or destination configuration script.
  • the user interface module 30 is preferably a simple module provided so that all user-interface-related functionality can be found in one central location, allowing the translator to be easily ported to different platforms.
  • One embodiment of the user interface module 30 includes a single user interface class (TranslatorUI). This class provides methods required to prompt the user for any input required during the translation process. In addition, it provides the necessary functions that can be used by the translator logic module 34 to display information regarding the status of the translation process.
  • FIG. 3 a class diagram of the current data dictionary module 32 is shown. According to one embodiment of the current data dictionary module 32 , the functionality is implemented using the classes described in greater detail below.
  • each CLI command is considered to be composed of a set of keywords, arguments, regular expressions, and other elements.
  • a class is used to represent each of the elements comprising a CLI command such that each command is converted into command tokens (i.e., tokenized) in the internal representation of the current data dictionary.
  • the base class for all of the elements or command tokens is the command token class (CmdToken) 40 . It contains some virtual functions to determine the token type and contents.
  • a token container class (TokenContainer) 50 is used as a base class to any other classes that can contain lists of command tokens or any of its derived classes.
  • a command keyword class (CmdKeyword) 42 is used to represent any keywords that are found in a CLI command. It inherits from CmdToken and provides the same basic functionality.
  • a command mapped class (CmdMapped) 44 is used to represent a mapped type as described in Example 10 above. It inherits from CmdToken and additionally contains a table describing the mappings described in the dictionary.
  • a command argument class (CmdArgument) 46 is used to represent arguments found in CLI commands. It inherits from CmdToken and additionally contains parameter range information.
  • a command regular expression class (CmdRegExp) 48 is used to represent regular (mathematical) expressions found in the data dictionary. It inherits from CmdToken and provides additional functions to evaluate a regular expression.
  • a command recursive class (CmdRecursive) 50 is used to represent a recursive portion of a CLI command description. It inherits from CmdToken. Since a recursive block can contain a number of tokens, this class also inherits from TokenContainer. In addition to inherited functionality, it contains a list of tokens that can be found in the recursive block and the recursive block delimiter (comma or space).
  • a command optional class (CmdOptional) 52 is used to represent a part of a CLI command description that is enclosed in square brackets, meaning that it is an optional parameter. It inherits from CmdToken. Since an optional block in a CLI command description can contain a number of tokens, this class also inherits from TokenContainer. In addition to inherited functionality, this class contains a list of tokens found in the optional command block.
  • a dictionary entry class (DictionaryEntry) 56 is used to represent a single CLI command description found in the current data dictionary. Note that this class is used to describe both source and destination CLI commands. It contains a method through which a CLI command description can be passed.
  • the DictionaryEntryclass converts the provided command into a series of tokens as described above, and stores the information hierarchically in a list.
  • a destination command class (DstCommand) 58 is used to represent a series of CLI commands.
  • a single source CLI command may map to a number of destination CLI commands.
  • This “group” of destination commands is contained in a single DstCommand instance.
  • This object contains methods to allow a new CLI command description to be added to the group. It also provides a function to test whether a given source command can be mapped to the contained group of destination commands by verifying that all required parameters exist. It further provides a translate method which produces the result given an existing CLI source command.
  • a source command class (SrcCommand) 60 is used to represent a CLI command that is read from the source CLI script. It can take a CLI command string and convert it into a series of tokens for internal representation. It also provides some methods to check for necessary arguments and to check whether it maps to a given source script command line.
  • a dictionary entry container class (DictEntryContainer) 62 is used to represent a complete entry described in the data dictionary. It links an instance of DictionaryEntry containing a source command description, with an instance of DstCommand containing the corresponding set of destination command descriptions.
  • a dictionary class (Dictionary) 64 is used to contain the internal representation of all the information contained in the data dictionary script file. It contains a list of DictEntryContainer objects. It provides functions to add entries, to sort the dictionary alphabetically by source command string, to load a data dictionary from a file descriptor, and to locate an entry (using binary search) that maps to a specific source command string. When loading a data dictionary, all entries that contain mapped arguments or optional components are automatically expanded into a number of entries.
  • the above classes are used to represent the information contained in the current data dictionary.
  • the data structures forming the internal representation 68 of the data dictionary are shown in FIG. 4.
  • a dictionary object 70 is created for the current data dictionary.
  • Each command described in the current data dictionary is expanded into one or more DictEntryContainer objects 72 .
  • Each such DictEntryContainer object 72 contains a pointer to a DictionaryEntry object 74 representing the source command and a pointer to a DstCommand object 76 , which contains a list of DictionaryEntry objects 78 representing the group of corresponding destination commands.
  • the Dictionary object 70 is a singleton and only one data dictionary can be loaded into memory at any given moment. After all the commands described in the data dictionary have been represented in memory using the above objects, the Dictionary is ordered alphabetically by source command string. This allows a binary search algorithm to be used when searching through the dictionary for entries matching a given command.
  • the translator logic module 34 (FIG. 2) contains the functionality needed to implement the translation logic. Based on user input, it loads the appropriate data dictionary files and makes the necessary calls to build the internal data structures. When a CLI script is selected for translation, it makes the necessary calls to load each command, search through the dictionary to find the matching entry, and generate the appropriate output based on the source CLI command and the destination dictionary entries.
  • One embodiment of the translator logic module 34 includes a single class (Translator) that provides the functions described in detail below.
  • the translator software is created using an object oriented programming language, such as C++.
  • object oriented programming language such as C++.
  • Other software implementations of the translator modules and other forms of data structures for representing the current data dictionary are also within the scope of the present invention.
  • the translator software is run offline on a host PC, although other implementations are contemplated.
  • the first step in a translation is to select the dictionary that must be used, step 110 .
  • the specific dictionary selected is based on the type of device for which the existing CLI script was created and the type of device for which it is being translated.
  • the Translator class reads the text file and builds the internal representation 68 of the current data dictionary (FIG. 4), step 112 .
  • the source CLI command is first converted into a sequence of tokens which are put into a DictionaryEntry object 74 .
  • any ranges that are encountered in the source command string are encapsulated in a CmdArgument object that is created to represent the given argument.
  • the Translator class then proceeds to load the destination CLI commands that are found between the “begin;” and “end;” block delimiters of the dictionary entry.
  • Each destination CLI command is tokenized in the same way as described above, and the tokens are used to construct the corresponding DictionaryEntry object 78 .
  • Each of the destination CLI commands is represented by a single DictionaryEntry object 78 .
  • the DictionaryEntry objects 78 that correspond to the destination CLI commands are grouped together by inserting them into a DstCommand object 76 .
  • This DstCommand object 76 is then inserted into the DictEntryContainer object 72 created in the first step, thus establishing the link between the source CLI command and the group of destination CLI commands in a dictionary entry.
  • Each such DictEntryContainer object 72 is inserted into the global Dictionary object 70 , so that after all the entries in the dictionary text file have been processed, the data dictionary internal representation data structure is populated.
  • the source configuration script is processed, step 114 .
  • the Translator class reads the CLI script file to be translated line by line and translates each of the CLI commands found.
  • the first step is to convert the source CLI command into a series of tokens using the SrcCommand class. Once that is done, the data dictionary internal representation is accessed to find corresponding destination commands, step 116 .
  • the first token is extracted from the series of source command tokens, and the dictionary data structure is searched to find an entry that begins with the same token. Since the dictionary data structure is alphabetically ordered, a binary search algorithm is applied. It is possible that there are several forms of a command that begin with the same keyword. For this reason, when the binary search algorithm terminates, a sequential search is performed to find the first and last dictionary entries that begin with the desired token.
  • This search results in a group of dictionary entries that may potentially be used to translate the original CLI command.
  • the Translator class attempts to match the tokenized source CLI command to the tokens in the dictionary entry, step 118 . If the tokens match, a reference to the dictionary entry is kept, otherwise it is ignored. At the end of this process, if there are no dictionary entries left, the Translator class calls the appropriate TranslatorUI method that either prompts the user asking for manual translation or inserts a comment into the output script indicating that the command could not be translated (depending on application options), step 120 .
  • step 122 the commands contained in that entry's DstCommand object 76 are used to generate the appropriate output, step 124 . If more than one dictionary entry matches the CLI command, the TranslatorUI class is called which presents the available options and prompts the user to select the dictionary entry to use for the translation, step 126 . The commands contained in the DstCommand object 76 of the selected entry are then used to produce the output, step 124 . This process is repeated for each command in the source CLI script until all commands have been translated, step 130 .
  • the CLI translation system 10 of the present invention provides users with the ability to translate CLI configuration scripts intended for one specific type of device, into scripts that provide the same functionality (where possible) but use the CLI syntax of a different type of device. This makes the process of upgrading network infrastructure much simpler, since it automates what was before a tedious and time consuming task.
  • the translation system 10 allows a user to take an existing CLI configuration script, specify the device for which it was created, select the device on which it is to be loaded, and the translator will generate a new script for the specified destination device.

Abstract

A system and method to facilitate the translation of Command Line Interface (CLI) configuration scripts associated with a device into the corresponding equivalent CLI configuration scripts of another device. The system includes a translator and one or more data dictionaries. The translator includes a user interface module, a translator logic module to enable the translation, and a current data dictionary module for retaining a selected data dictionary. Each of the data dictionaries includes common syntax generated for a variety of CLI script types. A particular data dictionary is referenced based upon initial input from a network administrator. The translator then generates the automated translation of corresponding scripts from those scripts associated with an original device into a device having differing script requirements.

Description

    RELATED APPLICATIONS
  • This application claims the benefit of U.S. provisional application Serial No. 60/332,100 filed on Nov. 21, 2001, which is fully incorporated herein by reference. [0001]
  • TECHNICAL FIELD
  • The present invention relates to devices and systems to enable computer networking. More particularly, the present invention relates to the management or more specifically, the configuration, of such devices and systems. Specifically, the present invention relates to systems and methods to translate automatically the configuration commands of one type of device or system into the configuration commands of a different type of device or system. [0002]
  • BACKGROUND INFORMATION
  • Computing systems are useful tools for the exchange of information among individuals. The information may include, but is not limited to, data, voice, graphics, and video. The exchange is established through interconnections linking the computing systems together in a way that permits the transfer of electronic signals that represent the information. The interconnections may be either wired or wireless. Wired connections include metal and optical fiber elements. Wireless connections include infrared and radio wave transmissions. [0003]
  • A plurality of interconnected computing systems having some sort of commonality represents a network. For example, individuals associated with a college campus may each have a computing device. In addition, there may be shared printers and remotely located application servers sprinkled throughout the campus. There is commonality among the individuals in that they all are associated with the college in some way. The same can be said for individuals and their computing arrangements in other environments including, for example, healthcare facilities, manufacturing sites and Internet access users. In most cases, it is desirable to permit communication or signal exchange among the various computing systems of the common group in some selectable way. The interconnection of those computing systems, as well as the devices that regulate and facilitate the exchange among the systems, represent a network. Further, networks may be interconnected together to establish internetworks. [0004]
  • The devices that are designed to effect computer system interconnection include, but are not limited to, routers, gateways, switches, bridges, hubs, and repeaters. There are a variety of suppliers of such devices. While the means of signal exchange has been substantially well defined through accepted standards and protocols, there remain variations in certain important aspects of individual supplier devices, such as the Command Line Interface (CLI). The CLI is the means by which a network administrator configures the particular operating attributes of one or more of the signal exchange devices associated with a network. Although the basic functioning of particular devices offered by different suppliers may be the same, the configuration commands or scripts associated with equivalent functionality often vary. For that reason, it can be difficult for a network administrator to acquire and implement network equipment from different suppliers without undertaking significant effort to ensure that the commands suitable for one device equate to the commands for a similar device from a different vendor. [0005]
  • Presently, the network administrator must manually translate the CLI commands associated with one supplier's device(s) to those associated with a different supplier's device(s), if configuration compatibility is desired. Alternatively, the administrator is left with the choice of using network devices from a sole source with common CLI configuration scripts. Such a choice may be undesirable if that sole source is not the most cost effective one. [0006]
  • Accordingly, there is a need for an improved system and related method to translate easily, and preferably substantially automatically, the configuration function of one system type to the configuration function of a different system type. [0007]
  • SUMMARY
  • It is an object of the present invention to provide a system and related method to translate configuration scripts from one format to another format in a substantially automated way. This and other objects are achieved in the present invention through the introduction and use of a script translator that is associated with one or more data dictionaries as described herein. [0008]
  • In accordance with one aspect of the present invention, a configuration file translation system translates at least one source configuration script for a source device to at least one destination configuration script for a destination device. The system comprises at least one data dictionary comprising a plurality of dictionary entries. Each of the dictionary entries comprising at least one source command and at least one destination command corresponding to each source command. The system also comprises a translator for reading source commands in the source configuration script, finding corresponding destination commands in the data dictionary, and translating the source commands in the source configuration script to the corresponding destination commands to create the destination configuration script. [0009]
  • In accordance with another aspect of the present invention, a method is provided for translating at least one source configuration script for a source device to at least one destination configuration script for a destination device. The method comprises providing a user interface for prompting a user for input and for displaying information to the user and selecting a data dictionary based on the source device and the destination device. The data dictionary describes source commands for the source device and corresponding destination commands for the destination device. A data dictionary internal representation of the data dictionary selected is created. A source configuration script including source commands for the source device is processed and the data dictionary internal representation for destination commands corresponding to the source commands in the source configuration script is accessed. A destination configuration script including the destination commands corresponding to the source commands in the source configuration script is generated. [0010]
  • In accordance with another aspect of the present invention, a configuration file translator comprises a user interface module for prompting a user for input during a translation process and for displaying information to the user during the translation process. A current data dictionary module creates an internal representation of information in a current data dictionary selected by the user based on a source device and a destination device. A translator logic module processes a source configuration script corresponding to the source device and accesses the current data dictionary to produce a corresponding destination configuration script for the destination device. [0011]
  • According to a further aspect of the present invention, a method is provided for creating a configuration file translation data dictionary for a source device and destination device. The method comprises identifying source commands used to configure the source device and identifying corresponding destination commands used to configure the destination device. Data dictionary entries are created including a text description of each of the source commands and the corresponding destination commands, wherein the data dictionary entries follow predefined syntax rules. [0012]
  • According to yet another aspect of the present invention, a data structure provides an internal representation of a data dictionary used in translating configuration files. The data structure comprises dictionary entry objects containing source commands and destination commands in a data dictionary and source command objects containing source commands in a source configuration script. Destination command objects include pointers to the dictionary entry objects containing the destination commands, wherein each of the destination command objects corresponds to a dictionary entry object containing a source command. Dictionary entry container objects contain the dictionary entry objects containing the source commands and the corresponding destination command objects. A dictionary object contains a sorted list of dictionary entry container objects.[0013]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • These and other features and advantages of the present invention will be better understood by reading the following detailed description, taken together with the drawings wherein: [0014]
  • FIG. 1 is a simplified representation of the primary components of the translator system of the present invention. [0015]
  • FIG. 2 is a simplified representation of the primary components of the translator used in the translator system, according to one embodiment of the present invention. [0016]
  • FIG. 3 is a simplified representation of an exemplar data dictionary module of the translator system of the present invention. [0017]
  • FIG. 4 is a simplified representation of the functional arrangement of an exemplar data dictionary internal representation created using the translator system of the present invention. [0018]
  • FIG. 5 is a flow chart illustrating one method of translating a source configuration script into a destination configuration script, according to the present invention.[0019]
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • The main components of a configuration [0020] file translation system 10, according to the present invention, are shown in FIG. 1. The system 10 generally includes one or more data dictionaries 12 and a translator 14, as will be described in greater detail below. The system 10 interfaces between a source device having one or more existing source configuration scripts 20 and a destination device requiring the translation of the source configuration script(s) 20. The system 10 translates source commands in the source configuration script(s) 20 into destination commands in one or more output or destination configuration scripts 22.
  • The [0021] system 10 can include any number of the data dictionaries 12. Each of the data dictionaries 12 preferably contains the information needed by the translator 14 to convert the source script 20 for one specific source device to the destination script 22 for one specific destination device. For example, if there is a product X that has 2 versions, and there is a desire to translate scripts from both X.1 and X.2 to be usable for a product Y, there would be 2 data dictionaries: X.1—>Y and X.2—>Y. There is no limit on the number of data dictionaries (and therefore devices) the translator 14 can support, provided there is a meaningful way for a user to select the correct dictionary to use for a particular script translation. In the describing the translation of a script from a device X for use on a device Y, the device X is referred to herein as the “source device” and device Y is referred to herein as the “destination device.”
  • The [0022] data dictionaries 12 are preferably used in combination with the translator 14 but may also be used independently to facilitate manual translation, if desired. Moreover, the data dictionaries 12 may be plain text or encrypted text. In addition, the data dictionaries 12 may be supplied by the supplier of the translator 14 or they may alternatively be generated by the user and then compiled with the translator 14. The translator 14 can be a standalone application or a sub-module of a broader network management application.
  • The [0023] data dictionaries 12 preferably describe source commands and corresponding destination commands according to predefined assumptions and syntax rules. Each command preferably includes a series of keywords and parameters, and some command definitions include optional keywords and/or parameters. In some cases, one source command for the source device may translate into two or more destination commands for the destination device to implement the same functionality. In some cases, one or more source commands for the source device may not have any corresponding destination command(s) for the destination device (e.g. if a feature is not supported on the destination device). Based on these assumptions, a data dictionary syntax can be defined and used to describe the translation of any source script to any destination script.
  • In the exemplary embodiment, the configuration scripts are command line interface (CLI) configuration scripts having CLI commands, although other types or forms of commands are within the scope of the present invention. A CLI command basically includes a number of keywords and some parameters, where sections of the command may be recursive. For example, a CLI command to configure a T1/E1 channel group is described as follows: [0024]
  • channel-group number timeslots range [speed {56|64}][0025]
  • The keywords in this command are shown in bold, while the parameters are shown in italics. The description of this command specifies that the range parameter can recur several times. For example, a valid command would be: [0026]
  • channel-group 2 timeslots 1-3, 5-7, 9-11, 13, 16, 18 [0027] speed 64
  • The exemplary data dictionary syntax rules and the manner in which the [0028] translator 14 interprets the data dictionary script language will now be described in greater detail followed by illustrative examples. Hypothetical CLI commands are used in the examples but should not be construed as actual CLI commands or as a limitation on the present invention.
  • Each of the [0029] data dictionaries 12 includes dictionary entries describing source commands (i.e., a source command block) used by the source device and the corresponding destination commands (i.e., a destination command block) used by the destination device. Information in the data dictionary is case insensitive. For any CLI command being described, the keywords are listed as is in the dictionary. Any parameters are indicated using a “%” symbol, followed by a character indicating the parameter type. The defined types include %s for strings, %a for IP addresses & masks; %x for a hexadecimal number; %d for a decimal number; and %m for mapping parameters (See Example 10). To uniquely identify a parameter within a command, a number is appended to the type character described above. For example, a command containing two hexadecimal numbers would use %x1 to describe the first parameter and %x2 to describe the second parameter. If a parameter can take a specific set or range of values, this is indicated by providing the range enclosed in “<” and “>” after the parameter name (see Example 2).
  • A parameter name that is used both in the source command and in one or more of the destination commands means that the parameter value is to be copied into the destination command (See Example 1). A parameter name in a destination command (e.g. %s2) that has no counterpart in the source command results in a failure to translate. The type description of a parameter is used to resolve possible ambiguous commands. For example, if there is a command that has a different meaning depending on the parameter, the indicated type can be used to determine the correct command at translation time. There is preferably no further processing of the type field beyond resolving ambiguous commands. This implies that if the dictionary maps command-x %d1 to command-y %d1 and the script contains command-x somenumber, the translator output will be command-y somenumber. [0030]
  • Any portion of a CLI command that can occur more than once (such as the range parameter in the channel-group command example above) is enclosed within a “{circumflex over ( )}” symbol to define a recursive block. A recursive block of a CLI command can be separated by either a comma or a space (See Examples 4 and 5). This is indicated by adding a comma in the block specification. For example, {circumflex over ( )}port %d1{circumflex over ( )} indicates that the specified block can occur many times as [0031] port 1 port 2 port3 etc. If the entry was specified as {circumflex over ( )}port %d1,”, the final comma indicates that the command syntax is port 1, port 2, port 3 etc. Recursive command blocks cannot be nested.
  • If a command contains optional parameters, they are enclosed in square brackets. CLI commands with optional parameters are internally expanded into all the possible combinations of optional parameters (See Example 7). If an argument is optional in the source command, it is also optional in the destination command. Only those combinations in which all required destination command arguments are found in the source command are taken into account. In one example, commands can only contain up to 32 optional parameters, and nested optional blocks are allowed (See Examples 8 and 9). [0032]
  • It is possible that a parameter in the source command needs to be manipulated before being put in a destination command. For example, if one command takes a port number as an argument (port %d1), and the port numbering scheme is different for the destination device in that all port numbers are offset by 1000, this can be specified by including a mathematical expression in the destination command (See Example 3). All such expressions are enclosed in “&” symbols (dest port &%d1+1000&). Mathematical expressions enclosed in “&” are preferably only found in destination commands and contain parameters of type %d or %x only. Such expression blocks cannot contain optional or recursive arguments. If at least one of the arguments in the expression are of type hex (%x1), the result will also be in hexadecimal. [0033]
  • If a destination command block contains a sentence that starts with the word “$prompt”, this indicates that the user will be prompted to enter the necessary CLI command (See Example 11). If a destination command block contains a sentence that starts with the word “$password”, the user will be prompted to enter a username/password (see Example 12). Any destination commands that start with the word “$ignore” will be ignored. This can be useful for commands with optional parameters as will be illustrated later. Any comments that are found in the original script are preferably copied to the translated version as is. Any commands that could not be translated are preferably copied into the destination script as a comment, with an additional line above it indicating the error, or reason the translation was not done. [0034]
  • The above syntax rules can be used to describe essentially any CLI command and provide a mapping to the corresponding destination command using the same syntax. However, it is possible that there will not always be a one-to-one mapping between commands. It may happen that a single CLI command for device X could translate into a series of corresponding CLI commands for device Y. In order to accommodate this possibility, a destination command block containing a sequence of destination commands can be defined using block delimiters. After the description of a CLI source command in the dictionary, for example, the symbols “begin;” and “end;” can be used to denote the beginning and end of a destination command block, containing the sequence of destination CLI commands. These block delimiter symbols are preferably on a line by themselves. [0035]
  • Based on these syntax rules, below is an example of a dictionary entry for a fictional channel group command. [0036]
    channel-group %d1 timeslots {circumflex over ( )}%s1{circumflex over ( )} [speed %d2<56,64>]
    begin;
    define channel-group %d1
    assign timeslots {circumflex over ( )}%s1{circumflex over ( )} to channel-group %d1 [with speed %d2]
    end;
  • It is possible that a command that contains a recursive argument may need to be translated into a series of CLI commands each taking a single instance of that parameter. The example below describes this case, again using fictional CLI commands for illustration purposes. [0037]
  • Original command: [0038]
  • create-users tom tomspasswd, bob bobspasswd, marie mariespasswd [0039]
  • Desired translation: [0040]
  • Create user tom [0041]
  • Create user bob [0042]
  • Create user marie [0043]
  • Assign password tomspasswd to user tom [0044]
  • Assign password bobspasswd to user bob [0045]
  • Assign password mariespasswd to user marie [0046]
  • Such a rule is described in the dictionary by leaving out the recursive symbol ({circumflex over ( )}) from the destination command as follows: [0047]
    Create-users {circumflex over ( )}%s1 %s2{circumflex over ( )}
    Begin;
    create user %s1
    assign password %s2 to user %s1
    end;
  • By leaving out the “{circumflex over ( )}” symbol in the destination command(s), the translator will repeat the destination command once for each occurrence of the block enclosed in the “{circumflex over ( )}” symbols. [0048]
  • This section contains examples of dictionary entries and explains how the translator treats them internally. All of the CLI commands illustrated in these examples are for illustration purposes only and are not intended to limit the invention in any way. [0049]
  • EXAMPLE 1 Parameter Matching
  • [0050]
    Set interface %d1 speed %d2
    Begin;
    Interface %d1 has speed %d2
    End,
  • The above block shows how a source command is translated into the corresponding destination command. The values of the arguments %dl and %d2 are copied from the original command into the destination command. If the line being translated is set interface 2 speed 5, the resulting output will be interface 2 has speed 5. [0051]
  • EXAMPLE 2 Parameter Ranges
  • [0052]
    Set interface %d1<1..5,10..15,17,19,21>speed %d2
    Begin,
    Interface %d1 has speed %d2
    End,
  • The above example is identical to the first one, with the exception that the argument %d1 can only take on the values indicated in the range indicated. As shown, values can include ranges, or single values separated by a comma. In this case, if the line being translated is set interface 2 speed 5, the resulting output will be interface 2 has speed 5. If the command being translated is set interface 6 speed 5, the translation will result in an error since interface number 6 is not in the range of valid values. [0053]
  • EXAMPLE 3 Mathematical Expressions
  • [0054]
    Set interface %d1 speed %d2
    Begin;
    Interface &%d1+1000& has speed %d2
    End,
  • The above example has the same results as the previous cases, except that in the destination command, the value of argument %d1 is offset by 1000. Any valid mathematical expression could be used including addition, subtraction, multiplication and division. [0055]
  • EXAMPLE 4 Recursive Arguments
  • [0056]
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2
    Begin,
    Interface {circumflex over ( )}%d1{circumflex over ( )} has speed %d2
    End;
  • The above example uses the recursive block syntax ({circumflex over ( )}) to specify that an argument can be found more that once in the command. For example, a valid command could be set [0057] interface 1 2 3 4 5 6 7 speed 5000. In this case the destination command would be interface 1 2 3 4 5 6 7 has speed 5000.
  • EXAMPLE 5 Comma Delimited Recursive Arguments
  • [0058]
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2
    Begin;
    Interface {circumflex over ( )}%d1,{circumflex over ( )}has speed %d2
    End,
  • Notice that the recursive argument specification in the destination command contains an extra comma at the end. This is an indication to the translator that when copying the argument values to the destination command, they must be comma separated. In this case, the command set [0059] interface 1 2 3 4 5 6 7 speed 5000 would translate into interface 1, 2, 3, 4, 5, 6, 7 has speed 5000.
  • EXAMPLE 6 Expanding Recursive Arguments
  • [0060]
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2
    Begin,
    Interface %d1 has speed %d2
    End;
  • In the above example, the argument %d1 is enclosed in a recursive block in the source command, but not in the destination command. This indicates that the destination command must be repeated several times, once for each instance of the argument. For example, the command set [0061] interface 1 2 3 4 5 6 7 speed 5000, would result in the following output:
  • [0062] interface 1 has speed 5000
  • interface 2 has speed 5000 [0063]
  • interface 3 has speed 5000 [0064]
  • interface 4 has speed 5000 [0065]
  • interface 5 has speed 5000 [0066]
  • interface 6 has speed 5000 [0067]
  • interface 7 has speed 5000 [0068]
  • EXAMPLE 7 Optional Arguments
  • [0069]
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2 [encapsulation %s1]
    Begin;
    Interface %d1 has speed %d2 [with encapsulation %s1]
    End,
  • In the above command, the parameter encapsulation %s1 is indicated to be optional. In this case, the translator expands this to contain both forms of the command, so the above entry is equivalent to having the following: [0070]
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2
    Begin;
    Interface %d1 has speed %d2
    End,
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2 encapsulation %s1
    Begin;
    Interface %d1 has speed %d2 with encapsulation %s1
    End,
  • In this case, the command set [0071] interface 1 speed 5000 is translated into interface 1 has speed 5000 based on the first rule. The command set interface 1 speed 5000 encapsulation ppp will be translated into interface 1 has speed 5000 with encapsulation ppp based on the second rule.
  • EXAMPLE 8 Nested Optional Arguments
  • [0072]
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2 [encapsulation %s1 [state %s3]]
    Begin;
    Interface %d1 has speed %d2 [with encapsulation %s1 [state %s3]]
    End;
  • The above source command has nested optional parameters. In this case the command is again expanded into all its possible forms as illustrated below: [0073]
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2
    Begin;
    Interface %d1 has speed %d2
    End,
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2 encapsulation %s1
    Begin;
    Interface %d1 has speed %d2 with encapsulation %s1
    End;
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2 encapsulation %s1 state %s3
    Begin;
    Interface %d1 has speed %d2 with encapsulation %s1 state %s3
    End,
  • EXAMPLE 9 Nested Optional Arguments Expansion
  • Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2 [encapsulation %s1[state %s3]][0074]
  • Begin; [0075]
  • Interface %d1 has speed %d2 [with encapsulation %s1 state %s3][0076]
  • End; [0077]
  • The above example is identical to the previous one, except that in this case the argument start %s3 is optional in the source command but not in the destination command. In this case, the possible combinations are: [0078]
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2
    Begin;
    Interface %d1 has speed %d2
    End,
    Set interface {circumflex over ( )}%d1{circumflex over ( )} speed %d2 encapsulation %s1 state %s3
    Begin;
    Interface %d1 has speed %d2 with encapsulation %s1 state %s3
    End,
  • All other combinations are ignored by the translator since the arguments found in the source command must always match the arguments in the destination command(s). [0079]
  • EXAMPLE 10 Mapping
  • [0080]
    interface %m1 set encapsulation %s1
    begin;
    begmap,
    %m1
    FastEthernet0 | FastEthernet0/0/0
    FastEthernet1 | FastEthernet0/0/1
    serial 1 | Serial0/0/0
    other %d1 | myOther &%d1 + 100&
    endmap,
    interface %m1 encapsulate %s1
    end,
  • This command uses the concept of mapping. In the source command, there is a portion of the command that needs to be mapped to something different for the destination command. This is accomplished by using the mapped type (%m1), and then specifying the mapping within the command block. For each of the mapped parameters found in the source command, there is preferably a map description block located within the command description. A map description block has the following syntax: [0081]
    begmap;
    mapname (e.g. %m1 or %m2 etc)
    source string | destination string
    endmap,
  • The translator will then expand the command into as many versions as there are mappings, in this case: [0082]
    Interface FastEthernet0 set encapsulation %s1
    Begin;
    Interface FastEthernet0/0/0 encapsulate %s1
    End,
    Interface FastEthernet1 set encapsulation %s1
    Begin;
    Interface FastEthernet0/0/1 encapsulate %s1
    End,
    Interface serial 1 set encapsulation %s1
    Begin;
    Interface serial 0/0/0 encapsulate %s1
    End,
    Interface other %d1 set encapsulation %s1
    Begin,
    Interface myOther &%d1 + 100& encapsulate %s1
    End;
  • Once the command has been expanded, the usual translation rules are then applied. [0083]
  • EXAMPLE 11 Prompting for User Input
  • [0084]
    Command xyz
    Begin,
    $prompt !Please enter the commands to implement Command xyz
    End,
  • In the above example, when the translator encounters the given command in the CLI source file, the user will be prompted with whatever string follows the “$prompt” keyword, and given the option to enter one or more CLI commands. [0085]
  • EXAMPLE 12 Passwords
  • [0086]
    Create user %s1 with password %s2
    Begin;
    $password
    $ignore %s1 %s2
    End,
  • User/password commands are an example of a command that cannot automatically be translated, since the passwords stored in CLI configuration files are typically encrypted. Using the “$password” keyword, the translator is informed that it must provide the user with a way to enter a username/password. Note that the $ignore keyword is used here to ensure that the translator does not mind that the parameters %s1 and %s2 that are a part of the source command are not used anywhere in the destination command(s). [0087]
  • With reference to FIG. 2, one embodiment of the [0088] translator 14 of the present invention includes three major components: a user interface module 30, a current data dictionary module 32, and a translator logic module 34. The user interface module 30 contains code that is related to the translator user interface such as functions for prompting the user for input and providing feedback relating to the translation process. The current data dictionary module 32 creates the internal representation of the information contained in the data dictionary that was selected by the user based on the source device from which the script was obtained, and the destination device for which it is being translated. The translator logic module 34 contains code that processes the source configuration script and accesses the information stored in the current data dictionary to produce the translated version or destination configuration script.
  • The [0089] user interface module 30 is preferably a simple module provided so that all user-interface-related functionality can be found in one central location, allowing the translator to be easily ported to different platforms. One embodiment of the user interface module 30 includes a single user interface class (TranslatorUI). This class provides methods required to prompt the user for any input required during the translation process. In addition, it provides the necessary functions that can be used by the translator logic module 34 to display information regarding the status of the translation process.
  • With reference to FIG. 3, a class diagram of the current [0090] data dictionary module 32 is shown. According to one embodiment of the current data dictionary module 32, the functionality is implemented using the classes described in greater detail below.
  • As described above, each CLI command is considered to be composed of a set of keywords, arguments, regular expressions, and other elements. A class is used to represent each of the elements comprising a CLI command such that each command is converted into command tokens (i.e., tokenized) in the internal representation of the current data dictionary. The base class for all of the elements or command tokens is the command token class (CmdToken) [0091] 40. It contains some virtual functions to determine the token type and contents.
  • A token container class (TokenContainer) [0092] 50 is used as a base class to any other classes that can contain lists of command tokens or any of its derived classes.
  • A command keyword class (CmdKeyword) [0093] 42 is used to represent any keywords that are found in a CLI command. It inherits from CmdToken and provides the same basic functionality.
  • A command mapped class (CmdMapped) [0094] 44 is used to represent a mapped type as described in Example 10 above. It inherits from CmdToken and additionally contains a table describing the mappings described in the dictionary.
  • A command argument class (CmdArgument) [0095] 46 is used to represent arguments found in CLI commands. It inherits from CmdToken and additionally contains parameter range information.
  • A command regular expression class (CmdRegExp) [0096] 48 is used to represent regular (mathematical) expressions found in the data dictionary. It inherits from CmdToken and provides additional functions to evaluate a regular expression.
  • A command recursive class (CmdRecursive) [0097] 50 is used to represent a recursive portion of a CLI command description. It inherits from CmdToken. Since a recursive block can contain a number of tokens, this class also inherits from TokenContainer. In addition to inherited functionality, it contains a list of tokens that can be found in the recursive block and the recursive block delimiter (comma or space).
  • A command optional class (CmdOptional) [0098] 52 is used to represent a part of a CLI command description that is enclosed in square brackets, meaning that it is an optional parameter. It inherits from CmdToken. Since an optional block in a CLI command description can contain a number of tokens, this class also inherits from TokenContainer. In addition to inherited functionality, this class contains a list of tokens found in the optional command block.
  • A dictionary entry class (DictionaryEntry) [0099] 56 is used to represent a single CLI command description found in the current data dictionary. Note that this class is used to describe both source and destination CLI commands. It contains a method through which a CLI command description can be passed. The DictionaryEntryclass converts the provided command into a series of tokens as described above, and stores the information hierarchically in a list.
  • A destination command class (DstCommand) [0100] 58 is used to represent a series of CLI commands. A single source CLI command may map to a number of destination CLI commands. This “group” of destination commands is contained in a single DstCommand instance. This object contains methods to allow a new CLI command description to be added to the group. It also provides a function to test whether a given source command can be mapped to the contained group of destination commands by verifying that all required parameters exist. It further provides a translate method which produces the result given an existing CLI source command.
  • A source command class (SrcCommand) [0101] 60 is used to represent a CLI command that is read from the source CLI script. It can take a CLI command string and convert it into a series of tokens for internal representation. It also provides some methods to check for necessary arguments and to check whether it maps to a given source script command line.
  • A dictionary entry container class (DictEntryContainer) [0102] 62 is used to represent a complete entry described in the data dictionary. It links an instance of DictionaryEntry containing a source command description, with an instance of DstCommand containing the corresponding set of destination command descriptions.
  • A dictionary class (Dictionary) [0103] 64 is used to contain the internal representation of all the information contained in the data dictionary script file. It contains a list of DictEntryContainer objects. It provides functions to add entries, to sort the dictionary alphabetically by source command string, to load a data dictionary from a file descriptor, and to locate an entry (using binary search) that maps to a specific source command string. When loading a data dictionary, all entries that contain mapped arguments or optional components are automatically expanded into a number of entries.
  • The above classes are used to represent the information contained in the current data dictionary. The data structures forming the [0104] internal representation 68 of the data dictionary are shown in FIG. 4. A dictionary object 70 is created for the current data dictionary. Each command described in the current data dictionary is expanded into one or more DictEntryContainer objects 72. Each such DictEntryContainer object 72 contains a pointer to a DictionaryEntry object 74 representing the source command and a pointer to a DstCommand object 76, which contains a list of DictionaryEntry objects 78 representing the group of corresponding destination commands. In the exemplary embodiment, the Dictionary object 70 is a singleton and only one data dictionary can be loaded into memory at any given moment. After all the commands described in the data dictionary have been represented in memory using the above objects, the Dictionary is ordered alphabetically by source command string. This allows a binary search algorithm to be used when searching through the dictionary for entries matching a given command.
  • The translator logic module [0105] 34 (FIG. 2) contains the functionality needed to implement the translation logic. Based on user input, it loads the appropriate data dictionary files and makes the necessary calls to build the internal data structures. When a CLI script is selected for translation, it makes the necessary calls to load each command, search through the dictionary to find the matching entry, and generate the appropriate output based on the source CLI command and the destination dictionary entries. One embodiment of the translator logic module 34 includes a single class (Translator) that provides the functions described in detail below.
  • In one example, the translator software is created using an object oriented programming language, such as C++. Other software implementations of the translator modules and other forms of data structures for representing the current data dictionary are also within the scope of the present invention. In one example, the translator software is run offline on a host PC, although other implementations are contemplated. [0106]
  • Referring to FIG. 5, one method of translating a configuration script into a destination script is described in greater detail below. The first step in a translation is to select the dictionary that must be used, [0107] step 110. The specific dictionary selected is based on the type of device for which the existing CLI script was created and the type of device for which it is being translated. Once the appropriate dictionary is selected by the user, the Translator class reads the text file and builds the internal representation 68 of the current data dictionary (FIG. 4), step 112. When a dictionary entry is read from the data dictionary file, the source CLI command is first converted into a sequence of tokens which are put into a DictionaryEntry object 74. Any ranges that are encountered in the source command string are encapsulated in a CmdArgument object that is created to represent the given argument. Once the DictionaryEntry object describing the source CLI command has been created, it is inserted into a DictEntryContainer object 72.
  • The Translator class then proceeds to load the destination CLI commands that are found between the “begin;” and “end;” block delimiters of the dictionary entry. Each destination CLI command is tokenized in the same way as described above, and the tokens are used to construct the [0108] corresponding DictionaryEntry object 78. Each of the destination CLI commands is represented by a single DictionaryEntry object 78. The DictionaryEntry objects 78 that correspond to the destination CLI commands are grouped together by inserting them into a DstCommand object 76. This DstCommand object 76 is then inserted into the DictEntryContainer object 72 created in the first step, thus establishing the link between the source CLI command and the group of destination CLI commands in a dictionary entry. Each such DictEntryContainer object 72 is inserted into the global Dictionary object 70, so that after all the entries in the dictionary text file have been processed, the data dictionary internal representation data structure is populated.
  • Once the complete dictionary has been loaded into memory as described above, the source configuration script is processed, [0109] step 114. The Translator class reads the CLI script file to be translated line by line and translates each of the CLI commands found. The first step is to convert the source CLI command into a series of tokens using the SrcCommand class. Once that is done, the data dictionary internal representation is accessed to find corresponding destination commands, step 116. The first token is extracted from the series of source command tokens, and the dictionary data structure is searched to find an entry that begins with the same token. Since the dictionary data structure is alphabetically ordered, a binary search algorithm is applied. It is possible that there are several forms of a command that begin with the same keyword. For this reason, when the binary search algorithm terminates, a sequential search is performed to find the first and last dictionary entries that begin with the desired token.
  • This search results in a group of dictionary entries that may potentially be used to translate the original CLI command. For each of these potential dictionary entries, the Translator class attempts to match the tokenized source CLI command to the tokens in the dictionary entry, [0110] step 118. If the tokens match, a reference to the dictionary entry is kept, otherwise it is ignored. At the end of this process, if there are no dictionary entries left, the Translator class calls the appropriate TranslatorUI method that either prompts the user asking for manual translation or inserts a comment into the output script indicating that the command could not be translated (depending on application options), step 120. If the search process yields exactly one dictionary entry, step 122, the commands contained in that entry's DstCommand object 76 are used to generate the appropriate output, step 124. If more than one dictionary entry matches the CLI command, the TranslatorUI class is called which presents the available options and prompts the user to select the dictionary entry to use for the translation, step 126. The commands contained in the DstCommand object 76 of the selected entry are then used to produce the output, step 124. This process is repeated for each command in the source CLI script until all commands have been translated, step 130.
  • In summary, the [0111] CLI translation system 10 of the present invention provides users with the ability to translate CLI configuration scripts intended for one specific type of device, into scripts that provide the same functionality (where possible) but use the CLI syntax of a different type of device. This makes the process of upgrading network infrastructure much simpler, since it automates what was before a tedious and time consuming task. The translation system 10 allows a user to take an existing CLI configuration script, specify the device for which it was created, select the device on which it is to be loaded, and the translator will generate a new script for the specified destination device.
  • Modifications and substitutions by one of ordinary skill in the art are considered to be within the scope of the present invention, which is not to be limited except by the following claims. [0112]

Claims (28)

The invention claimed is:
1. A configuration file translation system for translating at least one source configuration script for a source device to at least one destination configuration script for a destination device, said system comprising:
at least one data dictionary comprising a plurality of dictionary entries, each of said dictionary entries comprising at least one source command and at least one destination command corresponding to each said source command; and
a translator for reading source commands in said source configuration script, finding corresponding destination commands in said data dictionary, and translating said source commands in said source configuration script to said corresponding destination commands to create said destination configuration script.
2. The configuration file translation system of claim 1 wherein said source command includes at least one source command keyword and at least one parameter, and wherein said destination command corresponding to said source command includes at least one destination command keyword and said at least one parameter.
3. The configuration file translation system of claim 1 wherein at least one of said dictionary entries includes a plurality of destination commands corresponding to one source command, wherein said destination commands are arranged in a destination command block in said at least one of said dictionary entries.
4. The configuration file translation system of claim 3 wherein said destination command block includes block delimiters.
5. The configuration file translation system of claim 1 wherein said translator comprises:
a user interface module for prompting a user for input during a translation process and for displaying information to said user during said translation process;
a current data dictionary module for creating an internal representation of information in a current data dictionary selected from said at least one dictionary based on a source device and a destination device; and
a translator logic module for processing a source configuration script corresponding to said source device and for accessing said internal representation of said current data dictionary to produce a corresponding destination configuration script for said destination device.
6. The configuration file translation system of claim 5 wherein said current data dictionary module comprise command classes for representing elements of commands in said current data dictionary and in said source configuration script being translated.
7. The configuration file translation system of claim 5 wherein said current data dictionary module comprises a dictionary entry class for representing commands in said current data dictionary, and a source command class for representing a source command in said configuration script being translated.
8. The configuration file translation system of claim 1 wherein said source configuration script and said destination configuration script are command line interface (CLI) scripts.
9. A configuration file translation system comprising:
means for representing source commands and corresponding destination commands; and
means for translating a source configuration script to a destination configuration script based on said source commands and said corresponding destination commands.
10. A method for translating at least one source configuration script for a source device to at least one destination configuration script for a destination device, said method comprising:
providing a user interface for prompting a user for input and for displaying information to said user;
selecting a data dictionary based on said source device and said destination device, said data dictionary describing source commands for said source device and corresponding destination commands for said destination device;
creating a data dictionary internal representation of said data dictionary selected;
processing a source configuration script including source commands for said source device;
accessing said data dictionary internal representation for destination commands corresponding to said source commands in said source configuration script; and
generating a destination configuration script including said destination commands corresponding to said source commands in said source configuration script.
11. The method of claim 10 wherein creating said data dictionary internal representation comprises reading said data dictionary and creating objects containing said source commands, objects containing said destination commands, and objects containing elements of said source commands and said destination commands in said data dictionary.
12. The method of claim 11 wherein processing said source configuration script comprises reading said source commands in said source configuration script and creating objects containing said source commands in said source configuration script.
13. The method of claim 12 wherein accessing said data dictionary internal representation comprises searching for said objects containing said source commands in said data dictionary internal representation that match said objects containing said source commands in said source configuration script.
14. The method of claim 13 wherein said destination script is generated using said destination commands in said data dictionary internal representation associated with said source commands in said data dictionary internal representation matching said source commands in said source configuration script.
15. The method of claim 13 further comprising prompting a user for a manual translation when no matching commands are found.
16. The method of claim 13 further comprising inserting a comment into said destination configuration script when no match commands are found.
17. The method of claim 13 further comprising prompting a user to select one of a plurality of matching commands.
18. A configuration file translator comprising:
a user interface module for prompting a user for input during a translation process and for displaying information to said user during said translation process;
a current data dictionary module for creating an internal representation of information in a current data dictionary selected by said user based on a source device and a destination device; and
a translator logic module for processing a source configuration script corresponding to said source device and for accessing said current data dictionary to produce a corresponding destination configuration script for said destination device.
19. The configuration file translator of claim 18 wherein said current data dictionary module comprise command classes for representing elements of commands in said current data dictionary and said source configuration script.
20. The configuration file translator of claim 18 wherein said current data dictionary module comprises a dictionary entry class for representing commands in said current data dictionary and a source command class for representing a source command in said configuration script being translate.
21. The configuration file translator of claim 20 wherein said current data dictionary module comprises a dictionary entry container class for representing all of said commands in a dictionary entry.
22. The configuration file translator of claim 21 wherein said current data dictionary module comprises a dictionary class for representing all of said dictionary entries in a dictionary.
23. A configuration file translator comprising:
means for interfacing with a user to prompt said user for input during a translation process and for displaying information to said user during said translation process;
means for internally representing data from a current data dictionary selected by said user based on a source device and a destination device; and
means for translating a source configuration script into a destination configuration script based upon said data from said current data dictionary.
24. A method of creating a configuration file translation data dictionary for a source device and destination device, said method comprising:
identifying source commands used to configure said source device;
identifying corresponding destination commands used to configure said destination device; and
creating data dictionary entries including a text description of each of said source commands and said corresponding destination commands wherein said data dictionary entries follow predefined syntax rules.
25. The method of claim 24 wherein each of said source commands includes at least one source command keyword and at least one parameter, and wherein each of said destination commands corresponding to one of said source commands includes at least one destination command keyword and said at least one parameter.
26. The method of claim 25 wherein at least one of said dictionary entries includes a plurality of destination commands corresponding to one source command, wherein said destination commands are arranged in a destination command block in said at least one of said dictionary entries.
27. The method of claim 26 wherein said destination command block includes block delimiters.
28. A data structure for providing an internal representation of a data dictionary used in translating configuration files, said data structure comprising:
dictionary entry objects containing source commands and destination commands in a data dictionary;
source command objects containing source commands in a source configuration script;
destination command objects including pointers to said dictionary entry objects containing said destination commands, wherein each of said destination command objects corresponds to a dictionary entry object containing a source command;
dictionary entry container objects containing said dictionary entry objects containing said source commands and corresponding said destination command objects; and
a dictionary object containing a sorted list of dictionary entry container objects.
US10/295,562 2001-11-21 2002-11-15 Translating configuration files among network devices Active 2024-06-26 US7401086B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/295,562 US7401086B2 (en) 2001-11-21 2002-11-15 Translating configuration files among network devices

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US33210001P 2001-11-21 2001-11-21
US10/295,562 US7401086B2 (en) 2001-11-21 2002-11-15 Translating configuration files among network devices

Publications (2)

Publication Number Publication Date
US20030135508A1 true US20030135508A1 (en) 2003-07-17
US7401086B2 US7401086B2 (en) 2008-07-15

Family

ID=23296724

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/295,562 Active 2024-06-26 US7401086B2 (en) 2001-11-21 2002-11-15 Translating configuration files among network devices

Country Status (6)

Country Link
US (1) US7401086B2 (en)
EP (1) EP1454270A4 (en)
CN (1) CN1615480A (en)
AU (1) AU2002366158A1 (en)
CA (1) CA2467727A1 (en)
WO (1) WO2003044699A1 (en)

Cited By (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020069340A1 (en) * 2000-12-06 2002-06-06 Glen Tindal System and method for redirecting data generated by network devices
US20020069274A1 (en) * 2000-12-06 2002-06-06 Tindal Glen D. System and method for configuration, management and monitoring of network resources
US20020069291A1 (en) * 2000-12-06 2002-06-06 Glen Tindal Dynamic configuration of network devices to enable data transfers
US20020069275A1 (en) * 2000-12-06 2002-06-06 Tindal Glen D. Global GUI interface for network OS
US20020178380A1 (en) * 2001-03-21 2002-11-28 Gold Wire Technology Inc. Network configuration manager
US20030046370A1 (en) * 2001-08-29 2003-03-06 Mike Courtney System and method for modeling a network device's configuration
US20030079053A1 (en) * 2001-10-23 2003-04-24 Kevin Burns System and method for evaluating effectiveness of network configuration management tools
US20030101240A1 (en) * 2001-11-26 2003-05-29 Mike Courtney System and method for generating a representation of a configuration schema
US20030115304A1 (en) * 2001-12-19 2003-06-19 Christopher Murray Command line interface processor
US20030115308A1 (en) * 2001-12-19 2003-06-19 Michael Best Network management system architecture
US20030220986A1 (en) * 2002-05-15 2003-11-27 Sanjiv Thakor System and method for transforming configuration commands
US20040003067A1 (en) * 2002-06-27 2004-01-01 Daniel Ferrin System and method for enabling a user interface with GUI meta data
US20040030923A1 (en) * 2002-08-07 2004-02-12 Tindal Glen D. Method and apparatus for protecting a network from attack
US20040078457A1 (en) * 2002-10-21 2004-04-22 Tindal Glen D. System and method for managing network-device configurations
US20040117437A1 (en) * 2002-12-16 2004-06-17 Exanet, Co. Method for efficient storing of sparse files in a distributed cache
US20040153536A1 (en) * 2002-09-13 2004-08-05 John Strassner System and method for mapping between and controlling different device abstractions
US20060005079A1 (en) * 2004-06-30 2006-01-05 International Business Machines Corporation Methods and apparatus for translating application tests for execution with simulation software tools
US20060053418A1 (en) * 2004-09-02 2006-03-09 Packetfront Sweden Ab Network management system configuring
US20060173999A1 (en) * 2002-08-07 2006-08-03 Rider Kenneth D System and method for securing network resources
US20060190579A1 (en) * 2005-02-23 2006-08-24 Alcatel Assisted command script template creation
US20060235968A1 (en) * 2001-12-19 2006-10-19 Alcatel Canada Inc. Command line interface processor
US20060293875A1 (en) * 2005-06-27 2006-12-28 Stanfill Craig W Translating expressions in a computing environment
DE102009006411A1 (en) * 2009-01-28 2010-05-12 Siemens Aktiengesellschaft Configuration files generating method for e.g. router for Ethernet, involves compiling description of device using complier, and generating configuration files for device and configuration tool from compiled description of device
US7739330B1 (en) * 2001-05-31 2010-06-15 Juniper Networks, Inc. Network router management interface with selective rendering of output
US7761746B1 (en) 2001-09-19 2010-07-20 Juniper Networks, Inc. Diagnosis of network fault conditions
US20100211197A1 (en) * 2009-02-19 2010-08-19 James Randall Balentine Methods and apparatus to configure a process control system using an electronic description language script
CN101882065A (en) * 2009-05-07 2010-11-10 张金滔 Method for directly sending instructions by users in computer software
US20110016200A1 (en) * 2009-07-17 2011-01-20 Honeywell International Inc. System for providing demand response services
US20110072352A1 (en) * 2006-03-23 2011-03-24 Cisco Technology, Inc. Method and application tool for dynamically navigating a user customizable representation of a network device configuration
US20110125295A1 (en) * 2009-11-18 2011-05-26 Codewrights Gmbh Method for providing device-specific information of a field device of automation technology
US20120079453A1 (en) * 2010-09-28 2012-03-29 International Business Machines Corporation Task-based evaluation of user interfaces
US8296400B2 (en) 2001-08-29 2012-10-23 International Business Machines Corporation System and method for generating a configuration schema
US20130211821A1 (en) * 2012-02-14 2013-08-15 Erick Tseng User Experience with Customized User Dictionary
AU2013203830B2 (en) * 2005-06-27 2014-05-01 Ab Initio Technology Llc Translating expressions in a computing environment
US8717374B2 (en) 2010-09-13 2014-05-06 Fisher-Rosemount Systems, Inc. Methods and apparatus to display process control information
US20150019199A1 (en) * 2013-07-09 2015-01-15 Allied Telesis Holdings Kabushiki Kaisha Command line interface
US20160055433A1 (en) * 2009-07-17 2016-02-25 Honeywell International Inc. Demand response management system
US9319300B2 (en) 2008-12-09 2016-04-19 Glue Networks, Inc. Systems and methods for determining endpoint configurations for endpoints of a virtual private network (VPN) and deploying the configurations to the endpoints
US9405518B2 (en) * 2014-11-12 2016-08-02 Bank Of America Corporation Leveraging legacy applications for use with modern applications
US9760528B1 (en) 2013-03-14 2017-09-12 Glue Networks, Inc. Methods and systems for creating a network
US9780965B2 (en) 2008-05-27 2017-10-03 Glue Networks Methods and systems for communicating using a virtual private network
US9785412B1 (en) 2015-02-27 2017-10-10 Glue Networks, Inc. Methods and systems for object-oriented modeling of networks
US9928082B1 (en) 2013-03-19 2018-03-27 Gluware, Inc. Methods and systems for remote device configuration
US20180357051A1 (en) * 2017-06-13 2018-12-13 Microsoft Technology Licensing, Llc Model binding for command line parsers
US20190036767A1 (en) * 2017-07-27 2019-01-31 Hewlett Packard Enterprise Development Lp Network switch configuration
US10671038B2 (en) 2016-07-15 2020-06-02 Fisher-Rosemount Systems, Inc. Architecture-independent process control

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100453824B1 (en) * 2002-12-11 2004-10-20 한국전자통신연구원 XML based network management system and method for configuration management of heterogeneous network devices
CN100346606C (en) * 2003-09-24 2007-10-31 华为技术有限公司 Information analytical method for facility configuration
WO2008075361A2 (en) * 2006-12-20 2008-06-26 Sandisk Il Ltd. Apparatus, method and computer readable medium for disambiguating commands with respect to logical protocols
US8073558B2 (en) 2007-10-05 2011-12-06 Honeywell International Inc Critical resource notification system and interface device
US20100088690A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Replacing the identity of an activex control
US20100088689A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Branding binary modules using resource patching
US8782190B2 (en) 2009-07-17 2014-07-15 Honeywell International, Inc. Demand response management system
US8676953B2 (en) 2009-07-17 2014-03-18 Honeywell International Inc. Use of aggregated groups for managing demand response resources
US9137050B2 (en) 2009-07-17 2015-09-15 Honeywell International Inc. Demand response system incorporating a graphical processing unit
US8671191B2 (en) 2009-07-17 2014-03-11 Honeywell International Inc. Installation system for demand response resources
US8572230B2 (en) 2009-07-17 2013-10-29 Honeywell International Inc. System for using attributes to deploy demand response resources
US8667132B2 (en) 2009-07-17 2014-03-04 Honeywell International Inc. Arrangement for communication about and management of a resource using a mobile device
US9124535B2 (en) 2009-07-17 2015-09-01 Honeywell International Inc. System for using attributes to deploy demand response resources
US9170807B2 (en) 2011-01-04 2015-10-27 International Business Machines Corporation Determining logical configuration commands to create a logical object
US8630744B2 (en) 2011-01-28 2014-01-14 Honeywell International Inc. Management and monitoring of automated demand response in a multi-site enterprise
US8626354B2 (en) 2011-01-28 2014-01-07 Honeywell International Inc. Approach for normalizing automated demand response events in energy management control systems
US9153001B2 (en) 2011-01-28 2015-10-06 Honeywell International Inc. Approach for managing distribution of automated demand response events in a multi-site enterprise
US20140081704A1 (en) 2012-09-15 2014-03-20 Honeywell International Inc. Decision support system based on energy markets
US9389850B2 (en) 2012-11-29 2016-07-12 Honeywell International Inc. System and approach to manage versioning of field devices in a multi-site enterprise
WO2014209253A1 (en) * 2013-06-24 2014-12-31 Hewlett-Packard Development Company, L.P. Generating a logical representation from a physical flow
US9989937B2 (en) 2013-07-11 2018-06-05 Honeywell International Inc. Predicting responses of resources to demand response signals and having comfortable demand responses
US9691076B2 (en) 2013-07-11 2017-06-27 Honeywell International Inc. Demand response system having a participation predictor
US10346931B2 (en) 2013-07-11 2019-07-09 Honeywell International Inc. Arrangement for communicating demand response resource incentives
CN103425497B (en) * 2013-08-15 2017-03-01 北京华胜天成科技股份有限公司 The method and apparatus that a kind of network engineering script is changed across producer
US9665078B2 (en) 2014-03-25 2017-05-30 Honeywell International Inc. System for propagating messages for purposes of demand response
US10541556B2 (en) 2017-04-27 2020-01-21 Honeywell International Inc. System and approach to integrate and manage diverse demand response specifications for multi-site enterprises
CN109522153A (en) * 2018-10-15 2019-03-26 广东宝莱特医用科技股份有限公司 A kind of configuration file self-repairing method and system for patient monitor
CN112311607B (en) * 2020-11-18 2022-10-18 迈普通信技术股份有限公司 CLI configuration verification method, device, controller and readable storage medium
US11349714B1 (en) 2021-01-07 2022-05-31 Kyndryl, Inc. Cognitive command line interface for configuring devices

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995753A (en) * 1996-11-14 1999-11-30 Alcatel Usa Sourcing, L.P. System and method of constructing dynamic objects for an application program
US5995975A (en) * 1997-11-25 1999-11-30 International Business Machines Corporation Dictionary based process for object containment
US6199068B1 (en) * 1997-09-11 2001-03-06 Abb Power T&D Company Inc. Mapping interface for a distributed server to translate between dissimilar file formats
US6256635B1 (en) * 1998-05-08 2001-07-03 Apple Computer, Inc. Method and apparatus for configuring a computer using scripting
US6308205B1 (en) * 1998-10-22 2001-10-23 Canon Kabushiki Kaisha Browser-based network management allowing administrators to use web browser on user's workstation to view and update configuration of network devices
US20020152219A1 (en) * 2001-04-16 2002-10-17 Singh Monmohan L. Data interexchange protocol
US20030046381A1 (en) * 2001-07-19 2003-03-06 Seiko Epson Corporation Network device management method, network device management system, and process program for managing network device
US20030048287A1 (en) * 2001-08-10 2003-03-13 Little Mike J. Command line interface abstraction engine
US20040002880A1 (en) * 2000-09-21 2004-01-01 Jones William B. Method and system for states of beings configuration management
US6760761B1 (en) * 2000-03-27 2004-07-06 Genuity Inc. Systems and methods for standardizing network devices
US6760719B1 (en) * 1999-09-24 2004-07-06 Unisys Corp. Method and apparatus for high speed parallel accessing and execution of methods across multiple heterogeneous data sources
US6772204B1 (en) * 1996-02-20 2004-08-03 Hewlett-Packard Development Company, L.P. Method and apparatus of providing a configuration script that uses connection rules to produce a configuration file or map for configuring a network device
US6826581B2 (en) * 2000-12-06 2004-11-30 Intel Corporation Upgrading a device over a network by downloading results of command execution from script file

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778742B2 (en) * 1992-08-12 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション Computer program language conversion device and method thereof
EP1150206A1 (en) * 2000-04-28 2001-10-31 ABB Research Ltd. A method for converting information related to the hardware/software configuration of a distributed control system

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772204B1 (en) * 1996-02-20 2004-08-03 Hewlett-Packard Development Company, L.P. Method and apparatus of providing a configuration script that uses connection rules to produce a configuration file or map for configuring a network device
US5995753A (en) * 1996-11-14 1999-11-30 Alcatel Usa Sourcing, L.P. System and method of constructing dynamic objects for an application program
US6138171A (en) * 1996-11-14 2000-10-24 Alcatel Usa Sourcing, L.P. Generic software state machine
US6199068B1 (en) * 1997-09-11 2001-03-06 Abb Power T&D Company Inc. Mapping interface for a distributed server to translate between dissimilar file formats
US5995975A (en) * 1997-11-25 1999-11-30 International Business Machines Corporation Dictionary based process for object containment
US6256635B1 (en) * 1998-05-08 2001-07-03 Apple Computer, Inc. Method and apparatus for configuring a computer using scripting
US6308205B1 (en) * 1998-10-22 2001-10-23 Canon Kabushiki Kaisha Browser-based network management allowing administrators to use web browser on user's workstation to view and update configuration of network devices
US6760719B1 (en) * 1999-09-24 2004-07-06 Unisys Corp. Method and apparatus for high speed parallel accessing and execution of methods across multiple heterogeneous data sources
US6760761B1 (en) * 2000-03-27 2004-07-06 Genuity Inc. Systems and methods for standardizing network devices
US20040002880A1 (en) * 2000-09-21 2004-01-01 Jones William B. Method and system for states of beings configuration management
US6826581B2 (en) * 2000-12-06 2004-11-30 Intel Corporation Upgrading a device over a network by downloading results of command execution from script file
US20020152219A1 (en) * 2001-04-16 2002-10-17 Singh Monmohan L. Data interexchange protocol
US20030046381A1 (en) * 2001-07-19 2003-03-06 Seiko Epson Corporation Network device management method, network device management system, and process program for managing network device
US20030048287A1 (en) * 2001-08-10 2003-03-13 Little Mike J. Command line interface abstraction engine

Cited By (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8219662B2 (en) 2000-12-06 2012-07-10 International Business Machines Corporation Redirecting data generated by network devices
US20020069274A1 (en) * 2000-12-06 2002-06-06 Tindal Glen D. System and method for configuration, management and monitoring of network resources
US20020069291A1 (en) * 2000-12-06 2002-06-06 Glen Tindal Dynamic configuration of network devices to enable data transfers
US20020069275A1 (en) * 2000-12-06 2002-06-06 Tindal Glen D. Global GUI interface for network OS
US6978301B2 (en) 2000-12-06 2005-12-20 Intelliden System and method for configuring a network device
US7650396B2 (en) 2000-12-06 2010-01-19 Intelliden, Inc. System and method for defining a policy enabled network
US20020069340A1 (en) * 2000-12-06 2002-06-06 Glen Tindal System and method for redirecting data generated by network devices
US20020178380A1 (en) * 2001-03-21 2002-11-28 Gold Wire Technology Inc. Network configuration manager
US7150037B2 (en) 2001-03-21 2006-12-12 Intelliden, Inc. Network configuration manager
US7739330B1 (en) * 2001-05-31 2010-06-15 Juniper Networks, Inc. Network router management interface with selective rendering of output
US20030046370A1 (en) * 2001-08-29 2003-03-06 Mike Courtney System and method for modeling a network device's configuration
US8296400B2 (en) 2001-08-29 2012-10-23 International Business Machines Corporation System and method for generating a configuration schema
US7200548B2 (en) 2001-08-29 2007-04-03 Intelliden System and method for modeling a network device's configuration
US7761746B1 (en) 2001-09-19 2010-07-20 Juniper Networks, Inc. Diagnosis of network fault conditions
US20030079053A1 (en) * 2001-10-23 2003-04-24 Kevin Burns System and method for evaluating effectiveness of network configuration management tools
US20030101240A1 (en) * 2001-11-26 2003-05-29 Mike Courtney System and method for generating a representation of a configuration schema
US7065562B2 (en) * 2001-11-26 2006-06-20 Intelliden, Inc. System and method for generating a representation of a configuration schema
US20030115308A1 (en) * 2001-12-19 2003-06-19 Michael Best Network management system architecture
US20030115304A1 (en) * 2001-12-19 2003-06-19 Christopher Murray Command line interface processor
US7113989B2 (en) * 2001-12-19 2006-09-26 Alcatel Canada Inc. Command line interface processor
US20060235968A1 (en) * 2001-12-19 2006-10-19 Alcatel Canada Inc. Command line interface processor
US20030220986A1 (en) * 2002-05-15 2003-11-27 Sanjiv Thakor System and method for transforming configuration commands
US20040003067A1 (en) * 2002-06-27 2004-01-01 Daniel Ferrin System and method for enabling a user interface with GUI meta data
US20060173999A1 (en) * 2002-08-07 2006-08-03 Rider Kenneth D System and method for securing network resources
US20040030923A1 (en) * 2002-08-07 2004-02-12 Tindal Glen D. Method and apparatus for protecting a network from attack
US20040153536A1 (en) * 2002-09-13 2004-08-05 John Strassner System and method for mapping between and controlling different device abstractions
US20040078457A1 (en) * 2002-10-21 2004-04-22 Tindal Glen D. System and method for managing network-device configurations
US20040117437A1 (en) * 2002-12-16 2004-06-17 Exanet, Co. Method for efficient storing of sparse files in a distributed cache
US7272753B2 (en) * 2004-06-30 2007-09-18 International Business Machines Corporation Methods and apparatus for translating application tests for execution with simulation software tools
US20060005079A1 (en) * 2004-06-30 2006-01-05 International Business Machines Corporation Methods and apparatus for translating application tests for execution with simulation software tools
US20060053418A1 (en) * 2004-09-02 2006-03-09 Packetfront Sweden Ab Network management system configuring
US20060190579A1 (en) * 2005-02-23 2006-08-24 Alcatel Assisted command script template creation
US20060293875A1 (en) * 2005-06-27 2006-12-28 Stanfill Craig W Translating expressions in a computing environment
KR101356676B1 (en) * 2005-06-27 2014-01-28 아브 이니티오 테크놀로지 엘엘시 Translating expressions in a computing environment
US7822615B2 (en) * 2005-06-27 2010-10-26 Ab Initio Technology Llc Translating expressions in a computing environment
AU2013203830B2 (en) * 2005-06-27 2014-05-01 Ab Initio Technology Llc Translating expressions in a computing environment
US20110072352A1 (en) * 2006-03-23 2011-03-24 Cisco Technology, Inc. Method and application tool for dynamically navigating a user customizable representation of a network device configuration
US9780965B2 (en) 2008-05-27 2017-10-03 Glue Networks Methods and systems for communicating using a virtual private network
US9319300B2 (en) 2008-12-09 2016-04-19 Glue Networks, Inc. Systems and methods for determining endpoint configurations for endpoints of a virtual private network (VPN) and deploying the configurations to the endpoints
DE102009006411A1 (en) * 2009-01-28 2010-05-12 Siemens Aktiengesellschaft Configuration files generating method for e.g. router for Ethernet, involves compiling description of device using complier, and generating configuration files for device and configuration tool from compiled description of device
US9354629B2 (en) * 2009-02-19 2016-05-31 Fisher-Rosemount Systems, Inc. Methods and apparatus to configure a process control system using an electronic description language script
US20100211197A1 (en) * 2009-02-19 2010-08-19 James Randall Balentine Methods and apparatus to configure a process control system using an electronic description language script
CN101882065A (en) * 2009-05-07 2010-11-10 张金滔 Method for directly sending instructions by users in computer software
US20100287499A1 (en) * 2009-05-07 2010-11-11 Xuezhi Zhang Method for Users to Give Commands Directly in Computer Software
US9201664B2 (en) * 2009-05-07 2015-12-01 Xuezhi Zhang Method for users to give commands directly in computer software
US20160055433A1 (en) * 2009-07-17 2016-02-25 Honeywell International Inc. Demand response management system
US9818073B2 (en) * 2009-07-17 2017-11-14 Honeywell International Inc. Demand response management system
US8671167B2 (en) * 2009-07-17 2014-03-11 Honeywell International Inc. System for providing demand response services
US20110016200A1 (en) * 2009-07-17 2011-01-20 Honeywell International Inc. System for providing demand response services
DE102009046806A1 (en) * 2009-11-18 2011-06-01 Codewrights Gmbh Method for providing device-specific information of a field device of automation technology
US20110125295A1 (en) * 2009-11-18 2011-05-26 Codewrights Gmbh Method for providing device-specific information of a field device of automation technology
US8717374B2 (en) 2010-09-13 2014-05-06 Fisher-Rosemount Systems, Inc. Methods and apparatus to display process control information
US8856750B2 (en) * 2010-09-28 2014-10-07 International Business Machines Corporation Task-based evaluation of user interfaces
US20120079453A1 (en) * 2010-09-28 2012-03-29 International Business Machines Corporation Task-based evaluation of user interfaces
US9330082B2 (en) * 2012-02-14 2016-05-03 Facebook, Inc. User experience with customized user dictionary
US20130211821A1 (en) * 2012-02-14 2013-08-15 Erick Tseng User Experience with Customized User Dictionary
US9760528B1 (en) 2013-03-14 2017-09-12 Glue Networks, Inc. Methods and systems for creating a network
US9928082B1 (en) 2013-03-19 2018-03-27 Gluware, Inc. Methods and systems for remote device configuration
US20150019199A1 (en) * 2013-07-09 2015-01-15 Allied Telesis Holdings Kabushiki Kaisha Command line interface
US11216293B2 (en) * 2013-07-09 2022-01-04 Allied Telesis Holdings Kabushiki Kaisha Command line interface
US9405518B2 (en) * 2014-11-12 2016-08-02 Bank Of America Corporation Leveraging legacy applications for use with modern applications
US9785412B1 (en) 2015-02-27 2017-10-10 Glue Networks, Inc. Methods and systems for object-oriented modeling of networks
US10671038B2 (en) 2016-07-15 2020-06-02 Fisher-Rosemount Systems, Inc. Architecture-independent process control
US11609542B2 (en) 2016-07-15 2023-03-21 Fisher-Rosemount Systems, Inc. Architecture-independent process control
US20180357051A1 (en) * 2017-06-13 2018-12-13 Microsoft Technology Licensing, Llc Model binding for command line parsers
US10545737B2 (en) * 2017-06-13 2020-01-28 Microsoft Technology Licensing, Llc Model binding for command line parsers
US20190036767A1 (en) * 2017-07-27 2019-01-31 Hewlett Packard Enterprise Development Lp Network switch configuration
US10764123B2 (en) * 2017-07-27 2020-09-01 Hewlett Packard Enterprise Development Lp Network switch configuration

Also Published As

Publication number Publication date
EP1454270A4 (en) 2007-07-04
WO2003044699A1 (en) 2003-05-30
AU2002366158A1 (en) 2003-06-10
WO2003044699A9 (en) 2004-10-14
US7401086B2 (en) 2008-07-15
EP1454270A1 (en) 2004-09-08
CA2467727A1 (en) 2003-05-30
CN1615480A (en) 2005-05-11

Similar Documents

Publication Publication Date Title
US7401086B2 (en) Translating configuration files among network devices
US7676478B2 (en) Data warehousing systems and methods having reusable user transforms
CN111209004B (en) Code conversion method and device
US5819044A (en) Name service apparatus using resource management, name resolution and virtual resource realization for realizing a virtual resource by applying the procedure to the actual resource
US5960200A (en) System to transition an enterprise to a distributed infrastructure
CN101253476A (en) Syntactic program language translation
US20090037446A1 (en) Lightweight Directory Access Protocol (LDAP) Schema Definition Using Extensible Markup Language (XML)
WO2003032188A9 (en) System and method for vocabulary-based data transformation
CN110109681B (en) Method and system for converting codes between different platforms
US20100070460A1 (en) System and method for rule-based data object matching
EP1477913A2 (en) Database report generation
US20090150855A1 (en) Computer Method and Apparatus for Model Transformation Reapply
CN102597985B (en) Internet domain name super variants
WO2002027486A1 (en) Methods and apparatus for generating unique identifiers for software components
JP7131119B2 (en) Systems and methods for merging source data from a source application with target data in a target application
EP1602018B1 (en) Message translation using adaptive agents
JPH08110869A (en) File system
CN114546220A (en) Page configuration method and device, storage medium and computer equipment
US7437714B1 (en) Category partitioning markup language and tools
CN111880805A (en) Method, device and equipment for generating package file of software project and storage medium
CN113254419B (en) Internet of things cloud platform management system and method based on big data micro-service
US20220365774A1 (en) System and method for managing software services
US11805001B2 (en) Managing data schema differences by path deterministic finite automata
KR20200036070A (en) Big data operation method for data acquisition conversion and connection and recording medium storing program for executing the same, and computer prograom stored in recording medium for executing the same
JP2007072965A (en) Data processor and data processing method

Legal Events

Date Code Title Description
AS Assignment

Owner name: ENTERASYS NETWORKS, MASSACHUSETTS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHORAFAKIS, DOMINIC;LEE, VIVIAN;SUITANIZADEH, BEHROUZ;AND OTHERS;REEL/FRAME:013511/0951;SIGNING DATES FROM 20021030 TO 20021101

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: WELLS FARGO TRUST CORPORATION LIMITED, AS SECURITY

Free format text: GRANT OF SECURITY INTEREST IN U.S. PATENTS;ASSIGNOR:ENTERASYS NETWORKS INC.;REEL/FRAME:025339/0875

Effective date: 20101109

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: ENTERASYS NETWORKS INC., MASSACHUSETTS

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 25339/0875;ASSIGNOR:WELLS FARGO TRUST CORPORATION LIMITED;REEL/FRAME:031558/0677

Effective date: 20131031

AS Assignment

Owner name: SILICON VALLEY BANK, CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:ENTERASYS NETWORKS, INC.;REEL/FRAME:036189/0509

Effective date: 20150724

AS Assignment

Owner name: EXTREME NETWORKS, INC., NEW HAMPSHIRE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ENTERASYS NETWORKS, INC.;REEL/FRAME:036467/0566

Effective date: 20150820

AS Assignment

Owner name: EXTREME NETWORKS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ENTERASYS NETWORKS, INC.;REEL/FRAME:036538/0011

Effective date: 20150820

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: SILICON VALLEY BANK, CALIFORNIA

Free format text: AMENDED AND RESTATED PATENT AND TRADEMARK SECURITY AGREEMENT;ASSIGNOR:EXTREME NETWORKS, INC.;REEL/FRAME:040521/0762

Effective date: 20161028

AS Assignment

Owner name: SILICON VALLEY BANK, CALIFORNIA

Free format text: SECOND AMENDED AND RESTATED PATENT AND TRADEMARK SECURITY AGREEMENT;ASSIGNOR:EXTREME NETWORKS, INC.;REEL/FRAME:043200/0614

Effective date: 20170714

AS Assignment

Owner name: SILICON VALLEY BANK, CALIFORNIA

Free format text: THIRD AMENDED AND RESTATED PATENT AND TRADEMARK SECURITY AGREEMENT;ASSIGNOR:EXTREME NETWORKS, INC.;REEL/FRAME:044639/0300

Effective date: 20171027

AS Assignment

Owner name: ENTERASYS NETWORKS, INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:SILICON VALLEY BANK;REEL/FRAME:046047/0223

Effective date: 20180501

Owner name: BANK OF MONTREAL, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:EXTREME NETWORKS, INC.;REEL/FRAME:046050/0546

Effective date: 20180501

Owner name: EXTREME NETWORKS, INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:SILICON VALLEY BANK;REEL/FRAME:046051/0775

Effective date: 20180501

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12

AS Assignment

Owner name: BANK OF MONTREAL, NEW YORK

Free format text: AMENDED SECURITY AGREEMENT;ASSIGNORS:EXTREME NETWORKS, INC.;AEROHIVE NETWORKS, INC.;REEL/FRAME:064782/0971

Effective date: 20230818