Many engineering processes may be consumed by manually, repetitious processes which may utilize a team of highly skilled IT or network engineers to work (e.g., onsite and/or offsite) for many hours in coordination with other engineers (e.g., at the same site, at other sites). Systems and methods described herein may be used for automated orchestration of complex, context-dependent tasks and processes previously performed by network engineers.
In some embodiments, a network orchestration engine may decouple virtual and/or physical networking device commands and control functions from complex provisioning, configuring, re-provisioning, re-configuring, de-provisioning, rolling-forward, rolling-backward and controlling closed-loop processing. Object oriented modeling can be performed for network constructs, command and control, rules, procedures, dependencies, or order of operations or any combination thereof. The orchestration may enable highly rapid provisioning, configuration of command and control of complex single and/or complex federated network, in part or in whole, with nested layers of specific ordered dependencies, rules, and special cases, including multivendor environments. Thus, new networking devices, virtual networking devices, policies, configurations, access controls, and other IT networking constructs and configurations, may be easily instantiated, orchestrated and rapidly deployed, provisioned, repeated, and rolled-back in case of failure or policy changes.
In some embodiments, the orchestration engine may be interposed between, for example: visual object oriented programming, object oriented network modeling, rules processing, packaging tools, object interfaced and/or encapsulated network devices (e.g., physical and/or virtual), or federations of IT networks, or any combination thereof.
In some embodiments, tiered-level, multi-vendor rules and dependency-based needs of entities may be served. For example, engineering teams complex tasks (e.g., for today or the future), may be orchestrated in an intelligent system that may be programmable, reusable, measurable, and indicative of actions that may be taken for optimal utilization, agility, and performance. In some embodiments, method and systems are provided that free up significant engineering and operating expenses.
In some embodiments, network orchestration may be provided by computers and/or processors executing computer program instructions. A computer may be any programmable machine or machines capable of performing arithmetic and/or logical operations. In some embodiments, computers may comprise processors, memories, data storage devices, and/or other commonly known or novel elements. These elements may be connected physically or through network or wireless links. Computers may also comprise software which may direct the operations of the aforementioned elements. Computers may be referred to with terms that are commonly used by those of ordinary skill in the relevant arts, such as servers, PCs, mobile devices, routers, switches, data centers, distributed computers, and other terms. Computers may facilitate communications between users and/or other computers, may provide databases, may perform analysis and/or transformation of data, and/or perform other functions. It will be understood by those of ordinary skill that those terms used herein may be interchangeable for some embodiments.
Computers may be linked to one another via a network or networks. A network may be any plurality of completely or partially interconnected computers wherein some or all of the computers are able to communicate with one another. It will be understood by those of ordinary skill that connections between computers may be wired in some cases (e.g., via Ethernet, coaxial, optical, or other wired connection) or may be wireless (e.g., via Wi-Fi, WiMax, 4G, or other wireless connections). Connections between computers may use any protocols, including connection-oriented protocols such as TCP or connectionless protocols such as UDP. Any connection through which at least two computers may exchange data can be the basis of a network.
Throughout the description, the following terms may be used:
In some embodiments, the instances of workflow-processing for the orchestration may launch multiple instantiations and/or threads of orchestration engine processes that may execute their own workflow/orchestration. In addition to the orchestration engine processes, the (workflow-processing portion) of the orchestration engine may assign work to orchestration threaded processes and the Gluware Lab generated packages of devices models, rules, and configurations, may be accepted by the connection managers of the orchestration engine; whereas device specific protocol connectors (DSPC) may be loaded to run with the device specific protocol engine (DSPE) (e.g., similar to adapters, drivers, etc.) running in optimized locations, whereby the output, and two way conversations within the network devices may match the target device, be it, for example, character based, command line interface (CLI), document object model, RESTful API, programmatic object model and/or any other programmatic command and control interface that control the network's virtual or real devices within the federations of IT networks. The distributed and scalable architecture of the orchestration engine may be built on scalable, elastic cloud services that may enable any number of components (e.g., device specific protocol engines/device specific protocol connectors) to be running and executing orchestrations at any given time.
Monitoring and controlling network devices (e.g., nodes) may be done while the devices are running and connected to their specific instances of the DSPCs which may in turn be connected back to the orchestration engine via corresponding DSPCs, with the human command and control interface heretofore surfaced in a visual tool modeling, deployment, management and orchestration monitoring tools such as Gluware Lab.
The DSPE may be purpose built to utilize best practice object-modeling methodologies today and to utilize new models in the future. The DSPE may ingest device specific protocol connectors (DSPCs), which may be objects that represent the model of any specific device, physical and/or virtual. The device's command and control, and monitoring language, syntax, context, and parameters may be modeled utilizing industry standard languages and techniques such as current versions ECMA-262 (e.g., JavaScript, and ECMA-404 (JSON), specific annotations found in FLAW, and procedural script extensions to ECMA-404). The Gluware DSPE may utilize new languages, data types, communications and access techniques over time as they become available. Specific device DSPC's may be built by hand coding models based on available documentation on a specific device's interface for command and control, and monitoring language, syntax, context and parameters. DSPCs may also be built by an automated, self-learning process.
1. Global Network Parameterization:
2. Tiered Configuration Standards
3. Global and Local Policies
4. Device Feature Implementation Standards
In some embodiments, the platform may go beyond syntactical command line interface (CLI) models of specific networking devices to create models for command and control of networking devices. Following similar constructs, and rules and practices of object oriented programming, the modeling may define networking devices, structures, constructs and related concepts as objects. This modeling may consider how the objects are defined to relate to each other utilizing high level programming languages and data annotations to describe, for example: devices (e.g., physical and/or virtual network devices), policies, interdependencies, constraints, hierarchical structures of networks, network device interfaces, access control lists, route-maps, class-maps, or any command, control, and monitoring of objectified nodes, or any combination thereof. In some embodiments, network devices may be defined similar to object models in object oriented programming languages, such as, for example, following rules of class, inheritance subclass, and so on.
In some embodiments, objects may be communicated with well-defined interfaces. As with object oriented programming, classes of data and objects may enable definitions of subclasses via inheritance. Standard rules of object-oriented programming may be applied from new data type definitions to instantiation and reuse.
In some embodiments, the orchestration engine may include a synchronization engine to help ensure that the configurations, data, and state of target network devices match the information stored in the system database. If manual changes were performed on a network node and/or device that has been provisioned in the orchestration engine, the synchronization engine may examine and compare the information on the device and/or node with its represented information stored in the versioned repository. If the information does not match, a notification may be logged and messaged to a human operator. Either the human operator has defined a default behavior for the synchronization engine to act as soon as the information changes or the human operator will have to manually trigger the synchronization (in order to follow a particular maintenance window where changes are allowed). In both cases, the synchronization engine may use syntax and semantic checking while comparing the represented information in the model. The represented information that enforced one or several policies in place for that device may specify any additional action to take, such as, for example:
The system may not be required to provision all nodes on a network. Rather, it may be up to the IT staff to determine which devices and/or portions of their network they wish to provision and manage. For example, the provisioning may be migrated in or out of any network at any time, and at any rate.
Some embodiments may provide an integrated, network model builder, and orchestrating tool, enabling network engineers and IT staff to rapidly model, provision, configure, deploy, modify, monitor and perform complex network engineering and management functions—all from a visual user interface. The tool may utilize the objects, constructs, and data defined by IT staff.
The dynamic NDK may create dynamic methods on the NDK class that extends it from the FLOW model called synthetic methods. These synthetic methods may only exist at runtime. They may be created from type methods defined to the dynamic NDK class. The synthetic methods may be created from the information in the FLOW model. There may be methods on the dynamic NDK that give the user visibility to the synthetic methods at runtime. The NDK class that extends the dynamic NDK base class may also add new methods that override or extend the synthetic methods as well as the methods of the dynamic NDK class.
FLOW may be used for, for instance, defining data models, network models, data validation, UI forms, user interaction, etc.
In some embodiments, the networking development kit (NDK) may be a purpose built software development kit (SDK) for modeling and interacting with networking environments, along with a purpose built integrated development environment (IDE). Network equipment providers, network engineers, programmers, and IT staff may use this kit to rapidly and easily model their devices and networks. The kit may include built-in intelligence that may guide users on valid methods, properties, syntax, usage, and/or valid data ranges for the interaction of network model constructs. For example,
Utilizing the NDK, explained below, in conjunction with popular object oriented IDEs, such as Eclipse™, IntelliJ™, Komodo™, XCode™ and others, IT staff and developers may build object-oriented objects and intelligence for execution and orchestration.
The NDK may include a library of classes (in the sense of object-oriented programming) modeling objects that are known to those skilled in networking such as an access-list, a route-map, an interface, a border gateway protocol (BGP) neighbor, etc. Each of these objects may include constructs such as, but not limited to, a constructor with or without arguments, methods, and system methods. A portion of these constructs may be dynamically created. This will be described below. The constructor construct may include all the properties required to model the object such as, but not limited to, the name or the version. For instance, if the object is a network switch, properties can be the number of ports, the capacity of the backplane, the operating type (is it a layer-2 switch or layer-3/routing switch?). These properties can be of the following types, but are not limited to, primitives (such as, but not limited to, strings, booleans, numbers, arrays of numbers, array of strings . . . ), objects (such as, objects created with classes within the NDK or not), arrays of objects (within the NDK or not), or objects of objects (within the NDK or not). In the interest of consistency throughout the NDK library, each type of property may have a set of synthetic methods. Some synthetic methods are, but not limited to:
Primitives
Objects
Array of Objects or Object/Collection of Objects
For instance, if access-list and interface objects are respectively modeled in an NDK classes called IpAcl and Intf and can be a property within the Intf class called “filterOut”, this property “filterOut” may contain a reference to an IpAcl object. So the three synthetic methods available are linkFilterOut( ), unlinkFilterOut( ), getFilterOut( ). As this might be difficult to understand the purpose of a given synthetic method, a renaming mechanism may be included to assign an alias name to a given method. For instance, linkFilterOut( ) may be renamed as linkFilteringOutbound( ).
There may also be other methods called system methods that can be found in any each class. The system methods may include, but are not limited to:
That consistency across the NDK, by having synthetic and system methods, may allow for the utilization of programming macros. Those skilled in the art may use macros to avoid repeating the same code over and over and automatically generate all the required code in a library efficiently without errors. This technique is known as programming scaffolding, where pre-defined code templates are used to generate the final code of an application or a library that would end up in a persistent storage (such as a computer hard drive). If some or not all the NDK class libraries may be generated using that kind of scaffolding technique, one embodiment of this invention may take this automation to the next level where there is no need of generating code, as the NDK may contain a module (called dynamic NDK or dyNDK) that intercepts all the calls to the synthetic or system methods and dynamically executes the template code accordingly. This may speed up the elaboration of new classes, the altering of existing classes, and the execution time while removing the need for maintaining the NDK library to keep it up to date (by running the scaffolding automation each time an update/upgrade is required).
Each class in the NDK may be described using FLAW. This may make the generation of NDK classes extremely fast.
Each vendor may have their specific way of implementing their solution. Each solution may comprise a standard or vendor specific concept or element. Those skilled in the art see an access-list as a standard concept among many vendors for filtering where a performance routing domain (PfR) is a Cisco Systems specific path control concept. So the dynamic NDK may make modeling of these concepts very quick and easy. Only a class definition may be required for the NDK class modeling an access-list where a vendor specific NDK class may be required to model Cisco Systems PfR, for example.
Networks may be modeled using constructs that reflect complex details and relationships between network constructs and each other. For example, a construct may be a network node, which may be a representation of a physical or virtual device in a network, such as a router or a switch.
Domains may offer a basis to describe common related configuration settings across a group of Nodes. For example, in order to portray a geographical relationship between nodes, a “region” domain may be created with configuration settings that describe a particular geographical relationship (e.g., a DNS server). Instances of this region domain can then be created for specific geographical locations (e.g. Europe, Asia, Americas). When nodes are deployed into the system they can be attached to the region instances, effectively inferring, “this node is part of the Europe Region”. When using a region domain, the relationships may be defined in a sentence with the transitive phrases such as “belongs to” or “is part of”.
A domain construct may also describe the hierarchical relationship between domains. For example, a region domain may have a parent relationship to a customer domain and a child relationship to a network domain. This portion of the model may convey that customers have regions, and these regions have networks. With the dependency order established in this relationship, the model may yield the knowledge that when a node is attached to a specific network domain, it is then implied to be part of that network's region domains, and that region's customer domains. The hierarchical nature of domains may be complex as a result of the parent/child relationships, so their definition may also include a cardinality which may be one to one, one to many, or even many to many. Using the example above, if we only designed a region to be part of one customer, we could define many regions to one customer parent relationship; therefore, implying the customer's child relationship (e.g., one customer may have many regions). In some embodiment, multiple networks may be part of multiple regions, and many networks to many regions parent relationship may be defined.
A network feature may use the modeled concepts or elements in the NDK. A feature may be divided into four sections: a main section (851), an expert or manager section (852), a discovery section (853), and a rendering section (854). The manager may be a collection of objects that are created and assembled together in order to model the network functionality. Any object created within a manager may be stored in a dynamic in-memory repository in order for the rendering section to know what needs to be rendered. Rendering may include converting the objects into a language that the target device understands (CLI commands, REST calls, etc.). The rendering may be relevant if there is discovery section that allows the engine to engage with the target device and to know what has already been configured and/or what is badly configured or missing. In one embodiment, there may be no specific treatment whether this is the first time the engine engages with a device or not. If it is the first time, it means there is nothing in the device configuration and it may need to be fully rendered. If these are subsequent accesses to the device, the configuration may be checked and updated accordingly. The engine may have the full understanding of the syntax and semantic for each object modeled of the target language, as this may be stored in the NDK as part of the modeling of the vendor specific concepts or elements. The main section of the feature may “glue” the other sections together, allowing the engine to know in which order to process the feature, as some elements may need to be processed in a specific order.
When several features need to be processed in order to send the full configuration to a device, a module within the engine may find and manage the dependencies between the features and domains used in the configuration. This module is called the feature runtime engine (FRE). Each feature may be registered with the FRE using the FLOW language to model the specifics of the feature such as, but not limited to, dependencies with other features and domains. The feature models may be resolved and understood at runtime by the FRE that will execute the features in the correct order. The FRE may manage the addition, the maintenance, the update, and the removal of features on the target device.
While various embodiments have been described above, it should be understood that they have been presented by way of example and not limitation. It will be apparent to persons skilled in the relevant arts that various changes in form and detail can be made therein without departing from the spirit and scope. In fact, after reading the above description, it will be apparent to one skilled in the relevant arts how to implement alternative embodiments. For example, various applications of the systems and methods described herein may include exchange of financial information; managing rewards points; storing and exchanging transaction-specific payment tokens; facilitating remittance services; reconciling accounts across disparate entities (e.g., subsidiaries and/or partners); consolidating discrete business unit or private ledgers; replacing legacy core settlement systems; transferring health care information; and/or other applications.
In addition, it should be understood that any figures that highlight the functionality and advantages are presented for example purposes only. The disclosed methodology and system are each sufficiently flexible and configurable such that they may be utilized in ways other than that shown.
Although the term “at least one” may often be used in the specification, claims and drawings, the terms “a”, “an”, “the”, “said”, etc. also signify “at least one” or “the at least one” in the specification, claims, and drawings.
Finally, it is the applicant's intent that only claims that include the express language “means for” or “step for” be interpreted under 35 U.S.C. 112(f). Claims that do not expressly include the phrase “means for” or “step for” are not to be interpreted under 35 U.S.C. 112(f).
This application claims priority from U.S. Provisional Application No. 62/126,245, entitled “Methods and Systems for Object-Oriented Modeling Using an Orchestration Engine,” filed Feb. 27, 2015, and U.S. Provisional Application No. 62/137,064, entitled “Methods and Systems for Object-Oriented Modeling of Networks,” filed Mar. 23, 2015, the entireties of which are incorporated by reference herein. This application also incorporates the following applications, publications, and patents by reference in their entirety: U.S. Pat. No. 8,837,491; U.S. Patent Application Publication No. 2009/0304003; U.S. Patent Application Publication No. 2010/0142410; U.S. Patent Application Publication No. 2015/0010008; U.S. patent application Ser. No. 13/830,737; U.S. patent application Ser. No. 13/830,801; U.S. patent application Ser. No. 14/017,696; U.S. patent application Ser. No. 14/219,654; U.S. patent application Ser. No. 14/219,685; U.S. patent application Ser. No. 14/490,424; and U.S. patent application Ser. No. 14/997,119.
Number | Name | Date | Kind |
---|---|---|---|
5594792 | Chouraki et al. | Jan 1997 | A |
6061721 | Ismael | May 2000 | A |
6105131 | Carroll | Aug 2000 | A |
6175917 | Arrow | Jan 2001 | B1 |
6286038 | Reichmeyer et al. | Sep 2001 | B1 |
6335926 | Silton | Jan 2002 | B1 |
6363421 | Barker | Mar 2002 | B2 |
6438690 | Patel et al. | Aug 2002 | B1 |
6513159 | Dodson | Jan 2003 | B1 |
6571285 | Groath | May 2003 | B1 |
6640251 | Wiget et al. | Oct 2003 | B1 |
6715073 | An et al. | Mar 2004 | B1 |
6826611 | Arndt | Nov 2004 | B1 |
6879679 | Ong | Apr 2005 | B1 |
6892300 | Carroll et al. | May 2005 | B2 |
6907572 | Little | Jun 2005 | B2 |
6931526 | Bacha et al. | Aug 2005 | B1 |
6966060 | Young et al. | Nov 2005 | B1 |
7054924 | Harvey et al. | May 2006 | B1 |
7075933 | Aysan | Jul 2006 | B2 |
7305479 | Morris et al. | Dec 2007 | B1 |
7352853 | Shen et al. | Apr 2008 | B1 |
7373661 | Smith et al. | May 2008 | B2 |
7376653 | Hart | May 2008 | B2 |
7397911 | Shen et al. | Jul 2008 | B2 |
7409709 | Smith et al. | Aug 2008 | B2 |
7411955 | Li et al. | Aug 2008 | B2 |
7420933 | Booth, III et al. | Sep 2008 | B2 |
7447901 | Sullenberger | Nov 2008 | B1 |
7535856 | Booth, III et al. | May 2009 | B2 |
7558847 | Strassner | Jul 2009 | B2 |
7593352 | Verma | Sep 2009 | B2 |
7600011 | Urbanek | Oct 2009 | B1 |
7602737 | Asati et al. | Oct 2009 | B2 |
7636771 | Torii | Dec 2009 | B2 |
7643434 | Mandavilli et al. | Jan 2010 | B2 |
7660265 | Kreuk | Feb 2010 | B2 |
7801030 | Aggarwal et al. | Sep 2010 | B1 |
7869436 | Adler et al. | Jan 2011 | B1 |
7940916 | Baker et al. | May 2011 | B2 |
8010650 | Strassner | Aug 2011 | B2 |
8041786 | Tindal et al. | Oct 2011 | B2 |
8055891 | Haustein et al. | Nov 2011 | B2 |
8140642 | Kadam et al. | Mar 2012 | B1 |
8195827 | Strassner | Jun 2012 | B2 |
8370933 | Buckler | Feb 2013 | B1 |
8693371 | Duggan | Apr 2014 | B2 |
8701078 | Holler | Apr 2014 | B1 |
8782182 | Chaturvedi et al. | Jul 2014 | B2 |
8819202 | Carolan et al. | Aug 2014 | B1 |
8849973 | Leib et al. | Sep 2014 | B2 |
8869236 | Tonogai et al. | Oct 2014 | B1 |
9037969 | Wolff-Petersen et al. | May 2015 | B2 |
9038151 | Chua | May 2015 | B1 |
9178807 | Chua | Nov 2015 | B1 |
9264301 | Chua | Feb 2016 | B1 |
9276877 | Chua | Mar 2016 | B1 |
9407541 | Barabash | Aug 2016 | B2 |
9450817 | Bahadur | Sep 2016 | B1 |
20010053991 | Bonabeau | Dec 2001 | A1 |
20020112048 | Gruyer et al. | Aug 2002 | A1 |
20020184388 | Yaseen et al. | Dec 2002 | A1 |
20020186664 | Gibson | Dec 2002 | A1 |
20020188643 | Kennedy | Dec 2002 | A1 |
20020191548 | Ylonen | Dec 2002 | A1 |
20030076837 | Whitehill et al. | Apr 2003 | A1 |
20030135508 | Chorafakis | Jul 2003 | A1 |
20030169730 | Narasimhan et al. | Sep 2003 | A1 |
20040028212 | Lok et al. | Feb 2004 | A1 |
20040059831 | Chu et al. | Mar 2004 | A1 |
20040078373 | Ghoneimy et al. | Apr 2004 | A1 |
20040083379 | Neuman et al. | Apr 2004 | A1 |
20040136394 | Onno et al. | Jul 2004 | A1 |
20040187127 | Gondi et al. | Sep 2004 | A1 |
20040261116 | Mckeown et al. | Dec 2004 | A1 |
20050022208 | Bolar | Jan 2005 | A1 |
20050050186 | Chen | Mar 2005 | A1 |
20050138634 | Luty et al. | Jun 2005 | A1 |
20050198221 | Manchester et al. | Sep 2005 | A1 |
20050256732 | Bauer et al. | Nov 2005 | A1 |
20060050862 | Shen et al. | Mar 2006 | A1 |
20060074732 | Shukla et al. | Apr 2006 | A1 |
20060080425 | Wood et al. | Apr 2006 | A1 |
20060112182 | Chen et al. | May 2006 | A1 |
20060180709 | Breton et al. | Aug 2006 | A1 |
20060184998 | Smith | Aug 2006 | A1 |
20060187854 | Booth, III et al. | Aug 2006 | A1 |
20060187855 | Booth, III et al. | Aug 2006 | A1 |
20060187856 | Booth, III et al. | Aug 2006 | A1 |
20060187937 | Townsley et al. | Aug 2006 | A1 |
20060190570 | Booth, III et al. | Aug 2006 | A1 |
20060206702 | Fausak | Sep 2006 | A1 |
20060248139 | Sundar | Nov 2006 | A1 |
20060259963 | Maxwell | Nov 2006 | A1 |
20060268829 | Nedeltchev | Nov 2006 | A1 |
20070011126 | Conner et al. | Jan 2007 | A1 |
20070115990 | Asati et al. | May 2007 | A1 |
20070130192 | Bolder et al. | Jun 2007 | A1 |
20070136788 | Monahan | Jun 2007 | A1 |
20070165540 | Elias et al. | Jul 2007 | A1 |
20070206597 | Asati et al. | Sep 2007 | A1 |
20070253384 | Kanagala | Nov 2007 | A1 |
20070260575 | Robinson et al. | Nov 2007 | A1 |
20070271451 | Fluhrer | Nov 2007 | A1 |
20080037656 | Hannuksela | Feb 2008 | A1 |
20080052758 | Byrnes | Feb 2008 | A1 |
20080062997 | Nix | Mar 2008 | A1 |
20080075090 | Farricker | Mar 2008 | A1 |
20080117902 | Vinneras | May 2008 | A1 |
20080172440 | Jagannathan | Jul 2008 | A1 |
20080177868 | Zibershtein et al. | Jul 2008 | A1 |
20080189757 | Schackow et al. | Aug 2008 | A1 |
20080232379 | Mohamed | Sep 2008 | A1 |
20080281953 | Blaisdell | Nov 2008 | A1 |
20080298367 | Furukawa | Dec 2008 | A1 |
20090044253 | Interlandi et al. | Feb 2009 | A1 |
20090046729 | Nagata | Feb 2009 | A1 |
20090059814 | Nixon et al. | Mar 2009 | A1 |
20090067440 | Chadda et al. | Mar 2009 | A1 |
20090073995 | Pandey et al. | Mar 2009 | A1 |
20090097417 | Asati et al. | Apr 2009 | A1 |
20090161679 | Yang | Jun 2009 | A1 |
20090249293 | Davies | Oct 2009 | A1 |
20090254639 | Manchester | Oct 2009 | A1 |
20090282129 | Tindal | Nov 2009 | A9 |
20090304003 | Huynh Van | Dec 2009 | A1 |
20090304004 | Huynh Van et al. | Dec 2009 | A1 |
20090327869 | Fan et al. | Dec 2009 | A1 |
20100042725 | Jeon et al. | Feb 2010 | A1 |
20100054245 | Asati | Mar 2010 | A1 |
20100142410 | Huynh Van et al. | Jun 2010 | A1 |
20100180016 | Bugwadia | Jul 2010 | A1 |
20100226280 | Burns et al. | Sep 2010 | A1 |
20100226372 | Watanabe | Sep 2010 | A1 |
20100241698 | Hillerbrand | Sep 2010 | A1 |
20110013641 | Kolhi et al. | Jan 2011 | A1 |
20110176531 | Rune et al. | Jul 2011 | A1 |
20110276636 | Cheng | Nov 2011 | A1 |
20110286384 | Sugimoto et al. | Nov 2011 | A1 |
20110289261 | Candelaria | Nov 2011 | A1 |
20120046058 | Vesterinen et al. | Feb 2012 | A1 |
20120057463 | Hurtta | Mar 2012 | A1 |
20120084423 | McGleenon | Apr 2012 | A1 |
20120089700 | Safruti et al. | Apr 2012 | A1 |
20120218993 | Masaki | Aug 2012 | A1 |
20120250516 | Aggarwal et al. | Oct 2012 | A1 |
20120265324 | Colombo | Oct 2012 | A1 |
20130060929 | Koponen et al. | Mar 2013 | A1 |
20130085914 | McPherson | Apr 2013 | A1 |
20130117427 | Amano et al. | May 2013 | A1 |
20130223442 | Narayanan | Aug 2013 | A1 |
20130279336 | Woelker | Oct 2013 | A1 |
20140052877 | Mao | Feb 2014 | A1 |
20140143419 | Vyatkin | May 2014 | A1 |
20140169158 | Mishra | Jun 2014 | A1 |
20140223530 | Nedeltchev et al. | Aug 2014 | A1 |
20140282628 | Pruss | Sep 2014 | A1 |
20140371941 | Keller | Dec 2014 | A1 |
20140372617 | Houyou | Dec 2014 | A1 |
20150023210 | Kis | Jan 2015 | A1 |
20150058412 | Hillerbrand | Feb 2015 | A1 |
20150169345 | DeCusatis | Jun 2015 | A1 |
20150172195 | DeCusatis | Jun 2015 | A1 |
20150188772 | Gasparakis | Jul 2015 | A1 |
20150229709 | Pruss | Aug 2015 | A1 |
20150347175 | DeCusatis | Dec 2015 | A1 |
20150381410 | Strassner | Dec 2015 | A1 |
20160036636 | Erickson | Feb 2016 | A1 |
20160057207 | Li | Feb 2016 | A1 |
20160112246 | Singh | Apr 2016 | A1 |
20160112269 | Singh | Apr 2016 | A1 |
20160127181 | Li | May 2016 | A1 |
20160142243 | Karam et al. | May 2016 | A1 |
20160255051 | Williams | Sep 2016 | A1 |
20160381124 | Hwang | Dec 2016 | A1 |
Number | Date | Country |
---|---|---|
102315971 | Jan 2012 | CN |
2000-209239 | Jul 2000 | JP |
2011-199623 | Oct 2011 | JP |
WO-2004090672 | Oct 2004 | WO |
WO-2013093702 | Jun 2013 | WO |
WO-2013177311 | Nov 2013 | WO |
Entry |
---|
OpenDaylight: Towards a Model-Driven SDN Controller Architecture—Jan Medved,Anton Tkacik,Robert Varga,Ken Gray—Cisco Systems San Jose, CA, USA—World of Wireless, Mobile and Multimedia Networks (WoWMoM), 2014 IEEE 15th International Symposium—Date of Conference: Jun. 19-19, 2014—Date Added to IEEE Xplore: Oct. 9, 2014. |
Glue Networks Deployment Guide for the Cisco Next-Generation WAN—© 2013 Cisco Systems, Inc—Last Updated: May 1, 2013. http://www.cisco.com/c/en/us/td/docs/solutions/Enterprise/WAN—and—MAN/GlueNtwksDepGuide.html. |
View from the Cloud; Cloud-Based Software Crowdsourcing: Wei-Tek Tsai • Arizona State University; Wenjun Wu • Beihang University; Michael N. Huhns • University of South Carolina—2014 IEEE; IEEE Internet Computing. |
Design patterns for open tool integration; Gabor Karsai, Andras Lang, Sandeep Neema; Institute for Software-Integrated Systems, Vanderbilt University—Softw Syst Model (2005) 4: 157-170 / Digital Object Identifier (DOI) 10.1007/s10270-004-0073-y. |
The Waterfall Model in Large-Scale Development—Kai Petersen, Claes Wohlin and Dejan Baca—F. Bomarius et al. (Eds.): PROFES 2009, LNBIP 32, pp. 386-400, Springer-Verlag Berlin Heidelberg 2009. |
International Search Report issued in International Application No. PCT/US2009/045155, dated Jul. 6, 2009. |
Written Opinion issued in International Application No. PCT/US2009/045155, dated Jul. 6, 2009. |
International Search Report issued in International Application No. PCT/US2009/045159, dated Aug. 24, 2009. |
Written Opinion issued in International Application No. PCT/US2009/045159, dated Aug. 24, 2009. |
International Search Report issued in International Application No. PCT/US2009/045159, dated Sep. 24, 2009. |
Written Opinion issued in International Application No. PCT/US2009/045159, dated Sep. 24, 2009. |
B. Weis, “Group Domain of Interpretation (GDOI) Support for RSVP”, MSEC Working Group, Internet-Draft, Jun. 21, 2007 [retrieved Aug. 15, 2009], http://www.watersprings.com/pub/id/draft-weis-gdoi-for-rsvp-00.txt. |
International Search Report issued in International Application No. PCT/US2009/067384, dated Jul. 20, 2010. |
Written Opinion issued in International Application No. PCT/US2009/067384, dated Jul. 20, 2010. |
“OSGI Alliance”, printed from http://www.osgi.org, on Sep. 26, 2014 (2 pages). |
“Equinox Framework QuickStart Guide” printed from http://www.eclipse.org/equinox/documents/quickstart-framework.php, on Sep. 26, 2014 (5 pages). |
“Human Machine Interface (HMI)” http.//en.wikipedia.org/wiki/Human-machine—interface, on Sep. 26, 2014, Last updated Sep. 20, 2014 (2 pages). |
Cisco, “Cisco IOS IP Routing: BFD Configuration Guide”, Release 15.1, 2010, Cisco System, Inc. retrieved from http://www.cisco.com/c/en/us/td/docs/ios/iproute—bfd/configuration/guide/15—1/irb—15—1—book.pdf, 110 pages. |
Oscar Mejia, “How to Create a Command Line Program with NodeJS”, Aug. 5, 2012, retrieved from https://web.archive.org/web/20130314232203/http://oscar-mejia.com/blog.how-to-create-a-command-line-program-with-nodejs/ (8 pages). |
George Ornbo, “Command Line Utilities with Node.js”, Jan. 2, 2014, retrieved from http://shapeshed.com/commandlineutilitieswithnodejs/ (4 pages. |
“Command Line JavaScript”, Oct. 15, 2012, retrieved from http://web.archive.org/web/20121015021129/ http://javascript.cs.lmu.edu.notes.commandlinejs (8 pages). |
File History of U.S. Appl. No. 12/634,536. |
File History of U.S. Appl. No. 12/471,179. |
File History of U.S. Appl. No. 12/471,199. |
File History of U.S. Appl. No. 13/830,801. |
English language abstract of CN-102315971 published Jan. 11, 2012. |
English language abstract of JP-2000-209239 published Jul. 28, 2000. |
English language abstract of JP-2011-199623 published Oct. 6, 2011. |
File History of U.S. Appl. No. 14/017,696. |
File History of U.S. Appl. No. 14/997,119. |
File History of U.S. Appl. No. 15/078,267. |
File History of U.S. Appl. No. 14/219,685. |
File History of U.S. Appl. No. 14/219,654. |
File History of U.S. Appl. No. 14/325,757. |
File History of U.S. Appl. No. 14/490,424. |
File History of U.S. Appl. No. 15/666,033. |
File History of U.S. Appl. No. 13/830,737. |
File History of U.S. Appl. No. 15/667,253. |
Number | Date | Country | |
---|---|---|---|
62126245 | Feb 2015 | US | |
62137064 | Mar 2015 | US |