Embodiments of the invention generally relate to techniques for managing computer network infrastructure. More, techniques are disclosed to support programmability for arbitrary events in a software defined networking environment.
Networking hardware, Switches and routers, have not traditionally been programmable entities. Instead, network hardware is configured using command line interfaces or external applications and a console connection. Some programming frameworks running on connected hosts or appliances are can also be used to manage network hardware. These approaches put applications managing the network on systems external to the network itself.
While most network management occurs via command line interfaces or configuration tools, some network devices may be configured to respond to specific events that occur on a given network device. For example, embedded event manager (EEM) is a feature included by Cisco's IOS operating system (and some other Cisco operating systems such as IOS-XR, IOS-XE, and NX-OS). EEM allows the behavior of a Cisco network device (e.g., a switch or router) to adapt to some user requirements by supporting a limited set of events and actions performed in response to such events within the network device itself. Using EEM, some problems can be identified and resolved automatically in advance by setting event triggers (called event detectors) to watch for specific types of situations or thresholds, or run a set of actions periodically.
At the same time EEM, and other network management frameworks, does not support the handling of custom or arbitrary events. That is, while EEM can be used to configure a switch or router to respond to a limited set of events, the range of such events is limited to whatever is pre-configured for a given switch. Thus, EEM does not allow network elements to respond to arbitrary user-specified events, custom protocols, or other compound or complex events. Further, the event processing provided by EEM (and other similar technologies) is limited to processing events local to the switch itself.
So that the manner in which the above recited aspects are attained and can be understood in detail, a more particular description of embodiments of the invention, briefly summarized above, may be had by reference to the appended drawings.
It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
Overview
Embodiments presented herein include a method for processing network events on a network device in a common network infrastructure. This method may generally include launching, in a container independent from a traffic management component of the network device, an application. This method may also include registering the application to receive notifications of at least a first network even and receiving, by the application, a notification that an instance of the first network event has occurred. The notification indicates an event type and includes metadata associated with the instance of the network event. In response, the application executes one or more functions on the network device from within the container.
Other embodiments include, without limitation, a computer-readable medium that includes instructions that enable a processing unit to implement one or more aspects of the disclosed methods as well as a system having a processor, memory, and application programs configured to implement one or more aspects of the disclosed methods.
Embodiments presented herein provide techniques for supporting programmability for arbitrary events in a software defined networking environment. More specifically, embodiments presented herein allow developers to define custom events monitored for within a network infrastructure. Once defined, an event-matching application may monitor for occurrences of the custom event. The event matching application can run as a process on a switch or router, on a blade in the same chassis as the switch, or in a separate network-connected computing system. The event matching application has programmatic access to read and modify any events already generated by a network device (e.g., embedded event manager (EEM) events on a Cisco switch or router). The event matching application can also access policies, flows, packets, and other information associated with any traffic coming into the network element. More generally, any capability that the switch possesses may be exposed as a possible information source for the event matching application, including functionality such as deep packet inspection, quality of service (QoS), system logs, interface states, forwarding rules, etc.
When a custom event occurs, the event matching application publishes the event to registered subscribers. In turn, any network device or element (including the network element observing the event) which has registered to receive notification that the custom event has occurred can respond by executing custom applications. For example, in response to an interface going down on a switch, a custom event indicating that this has occurred could be published to neighboring switches. In response, an application running on the neighboring switches could update routing information regarding the link state of the interface. Further, in response to the custom event, the switch with the failed interface may invoke applications configured to evaluate whether the link state can be repaired programmatically, and if not send a message to an administrator, all from within the switch itself.
As another example, assume an enterprise wishes to monitor all off-site email communication to identify whether email traffic is being sent out in an unauthorized manner. To do this, the network administrator could create a custom “insecure email” event as 1) an SMTP connection 2) with a receiver outside the organization 3) including an attachment 4) where a portion of the attachment includes the string “confidential” or “secret” in it. When an “insecure email” event occurs, the switch could forward the suspect email to the appropriate administrator.
In one embodiment, applications on the network elements execute in a container. The container may provide an execution space on each network element independent from the routing and switching functions running on that network element. As the above examples illustrate, such applications can modify traffic, settings, or other aspects of the network element itself, but can also generate events processed by other network elements. Doing so allows the collection of networking elements (switches, routers, etc.) to perform a variety of distributed functions from within the network itself in response to custom events, referred to as software defined networking. Further, because custom events are published across the network, multiple network elements can communicate and respond to the same event. Thus, unlike currently available event management systems, custom events (and responding applications) can be used to create and coordinate software defined networking within a network infrastructure.
In the following, reference is made to embodiments of the invention. However, the invention is not limited to any specifically described embodiment. Instead, any combination of the following features and elements, whether related to different embodiments or not, is contemplated to implement and practice the invention. Furthermore, although embodiments of the invention may achieve advantages over other possible solutions and/or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not limiting of the invention. Thus, the following aspects, features, embodiments and advantages are merely illustrative and are not considered elements or limitations of the appended claims except where explicitly recited in a claim(s). Likewise, reference to “the invention” shall not be construed as a generalization of any inventive subject matter disclosed herein and shall not be considered to be an element or limitation of the appended claims except where explicitly recited in a claim(s).
Aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples a computer readable storage medium include: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the current context, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus or device.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. Each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations can be implemented by special-purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
Embodiments of the invention may be provided to end users through a cloud computing infrastructure. Cloud computing generally refers to the provision of scalable computing resources as a service over a network. More formally, cloud computing may be defined as a computing capability that provides an abstraction between the computing resource and its underlying technical architecture (e.g., servers, storage, networks), enabling convenient, on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction. Thus, cloud computing allows a user to access virtual computing resources (e.g., storage, data, applications, and even complete virtualized computing systems) in “the cloud,” without regard for the underlying physical systems (or locations of those systems) used to provide the computing resources. A user can access any of the resources that reside in the cloud at any time, and from anywhere across the Internet.
As an example, in context of the present invention, a cloud hosting company (hosting a data center with a hosts connected to a network infrastructure) may monitor and charge for certain types of bandwidth. Each tenant of the provider may share the underlying network infrastructure and the provider may use Multi-Protocol Label Switching (MPLS) tags to separate different virtual network flows. In such a case, the event manager could identify tenant flows based on the MPLS tags. The application running on the network elements could then calculate aggregate bandwidth used by each tenant and report it to a logging application running outside of the networking infrastructure.
Illustratively, the computing systems of data center 102 are each attached to a network switch. Switch 1151 (for hosts 105) and network switch 1152 (for hosts 110). Continuing with the example of a blade server (or other converged infrastructure), switch 115 could be a “top-of-rack switch” connecting the computing devices within the blade server to an aggregation switch 120. Switch 1151-2 provides a network device with interface ports, a processor, a memory, and forwarding logic used to process network traffic.
Like switch 1151 the aggregation switch 120 provides a network device with a memory, processor, and set of network interfaces. In this example, aggregation switch 120 is generally configured to forward data traffic from hosts (via switches 1151-2) towards a destination (e.g., from one of hosts 105, 110 to another or from one of hosts 105, 110 towards network 150). Aggregation switch 120 is connected to an edge router 130. In turn, edge router 130 connects the systems (switches hosts, etc.) of data center 102 to an external network 150. Like switches 115 and aggregation switch 120, edge router 130 provides a network device configured to process network data flows from other switches, other hosts and other networks. Accordingly, edge router 130 can include a memory, processor, and network interfaces to connect other system within the networking infrastructure 100 to the edge router 130.
In one embodiment, switches 115, 120, or router 130, may include an execution environment (container) used to execute custom applications which respond to events published by the network elements (switches, routers) in the networking infrastructure 100 or published by another network element of network infrastructure 100. Additionally, the switches 115, 120 or router 130 may include an event matching application configured to monitor for, and publish, the occurrence of custom events to the network infrastructure 100. The events, execution container, and event matching component, are each discussed in further detail below.
Note, the computer networking infrastructure 100 is simplified as needed to present an infrastructure which supports programmability for arbitrary events in a software defined networking environment. One of ordinary in the art will recognize that networking infrastructure 100 is representative of a broad variety of network hardware, e.g., switches, routers, bridges, etc., and the computing hosts servers, blades, appliances, virtual machine instances, etc.) as well as converged infrastructure elements (e.g., a blade server chassis with integrated networking elements).
Illustratively, network element includes a CPU/ASIC (application specific integrated circuit) 205, forwarding/routing data 210, an application container 215, event monitor 235, and custom event definitions 230. The CPU/ASIC 205 provides a processor generally configured to execute instructions to process network packets, frames, flows, etc., received and forwarded over ports/interfaces 240. In general, connected hosts (or other connected devices) forward network frames/packets to network element 200. In turn, the CPU 205 executes forwarding logic to determine how to process any network traffic. Typically, e.g., to make a forwarding decision based on forwarding/routing data 210. Once a decision is made, a network packet/frame received on one interface 240 is forwarded out on another interface 240.
The custom events 230 correspond to any user specified event approaite, as needed for a particular case. For example, events may be related to OIR (Online Insertion and Removal), CLI (Command Line Interface), Syslog, XML-RPC, IP SLAs, NetFlow, application specific events, configuration changes, interface counters, redundancy framework, SNMP notification (i.e. when the device receives a trap), resource usage, Timers, operating system process, counters, diagnostics, environmental (e.g. temperature), routing, object tracking, etc. Note, some events may be provided by the operating system of a network element. For example, a number of these events may be generated by an embedded event manager (EEM) on a network element running a version of Cisco's 10S. In addition to the event itself, a custom event may include data related to an event. For example, an application specific event could be one in which bulk/filtered metric data is sent on a periodic basis containing summary information of other events that have occurred within the related time period. Similarly, a custom event 230 could be composed as a compound of multiple events such, as the interface statistics changing over a certain time period correlated with related interface configuration changes. Further, the custom events 230 could be defined based on an evaluation of network flows, including events corresponding to switch functionality, events triggered using deep packet inspection, events related to quality of service (QoS) or service level agreements (SLA), events triggered by entries in a system log, events triggered by interface states, or the application of a forwarding rule.
However defined, in one embodiment, the event monitor 235 is configured to detect the occurrence of a custom event 230. For example, the event monitor 235 may monitor network activity (e.g., frames received and forwarded over ports/interfaces 240), monitor system state of the network element, counters, or timers, etc., to determine when a custom event 235 has occurred. When the event monitor 235 detects the occurrence of a custom event 235, the event monitor 235 publishes an event received by any network element registered to receive that event. For example, in one embodiment, the network element is broadcast over the control plane of the network infrastructure, allowing each network element to receive the event and raise it to any registered applications. Further, the event monitor 235 may publish the event to other connected devices (e.g., other switches, routers, servers, etc.). In one embodiment, the event may be specified using a two integer identification mechanism, an application identifier and a type. These values are arbitrarily chosen and agreed upon by both the event publisher and subscriber.
Additionally, software defined networking (SDN) applications 225 executing on the network element 200 can register to receive an event, shown in
As another example, a custom event could identify traffic flow of a particular protocol (e.g., SMTP traffic) using deep packet inspection. An event could pass the contents of such traffic to an SDN application for analysis. Similarly, events could be related to MPLS tags and used to monitor data use for traffic flows for multi-tenant data center. As still another example, a custom event could be triggered by a service running on the network element. The network element could have a service configured to monitor response times (e.g., ICMP responses) from certain hosts and generate custom events when the latency falls below (or exceeds) a given threshold. When an event is published (indicating the threshold has been crossed), the latency data can be passed to an application running in a container on the network element—or to an application running on other network elements.
The latter example is further shown in
The CPU 605 retrieves and executes programming instructions stored in the memory 620 as well as stores and retrieves application data residing in the memory 630. The interconnect 617 is used to transmit programming instructions and application data between the CPU 605, I/O devices interface 610, storage 630, network interface 615, and memory 620. Note, CPU 605 is included to be representative of a single CPU, multiple CPUs, a single CPU having multiple processing cores, and the like. And the memory 620 is generally included to be representative of a random access memory. The storage 630 may be a disk drive storage device. Although shown as a single unit, the storage 630 may be a combination of fixed and/or removable storage devices, such as fixed disc drives, solid state storage, or optical storage, network attached storage (NAS), or a storage area-network (SAN).
Illustratively, the memory 620 includes an SDN development tool 622, SDN application 624, and registered events 624. And the storage 630 includes SDN configuration data 632 and network element data 634. The SDN development tool 622 provides one or more applications configured to allow developers to compose SDN applications, e.g., SDN application 624. For example, the SDN development tool 622 can include a variety of code editors, compilers, code generators, etc. SDN development tool 622 may also allow a user to configure SDN applications on network elements, define custom events, configure an event detector with the custom events, register SDN applications to receive events, etc. SDN configuration data 632 specifies what SDN applications are configured on what network elements, what custom events they should receive, and the custom event definitions. Similarly network element data 634 can store any information related to a software defined network, e.g., the current configuration of SDN applications within a network infrastructure. Further, as noted the SDN application 624 can execute on a host system connected to a network element (e.g., a server blade attached to a switch in a data center). Once running, the SDN application 624 can register to receive events (shown as registered events 626) published from within the network infrastructure as well as publish events raised to the applications within an SDN network.
As described, embodiments presented herein provide techniques for using arbitrary criteria to define events occurring within a common network infrastructure, as well and techniques for detecting and responding to the occurrence of such custom events. That is, embodiments described above provide techniques that support programmability for arbitrary events in a software defined networking environment. Doing so allows the collection of networking elements (switches, routers, etc.) to perform a variety of distributed functions from within the network itself, referred to as software defined networking. Further, because custom events are published across the network, multiple network elements can communicate and respond to the same event. Thus, unlike currently available event management systems, custom events (and responding applications) can be used to create and coordinate software defined networking within a network infrastructure.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
This application is a continuation of co-pending U.S. patent application Ser. No. 13/838,719, filed Mar. 15, 2013, which is herein incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
5481603 | Gutierrez et al. | Jan 1996 | A |
5991389 | Ram et al. | Nov 1999 | A |
6014379 | White et al. | Jan 2000 | A |
6324547 | Lennert et al. | Nov 2001 | B1 |
6601233 | Underwood | Jul 2003 | B1 |
6640239 | Gidwani | Oct 2003 | B1 |
6785843 | McRae et al. | Aug 2004 | B1 |
6785873 | Tseng | Aug 2004 | B1 |
6983321 | Trinon et al. | Jan 2006 | B2 |
7130807 | Mikurak | Oct 2006 | B1 |
7467198 | Goodman et al. | Dec 2008 | B2 |
7539744 | Matthews et al. | May 2009 | B2 |
7559065 | Sosnovsky et al. | Jul 2009 | B1 |
7656818 | Baroudi et al. | Feb 2010 | B1 |
7792773 | McCord et al. | Sep 2010 | B2 |
7796511 | Wood | Sep 2010 | B2 |
7924838 | Bergenwall et al. | Apr 2011 | B1 |
7929516 | Darland et al. | Apr 2011 | B2 |
8010668 | Rothstein et al. | Aug 2011 | B1 |
8069047 | Cross, Jr. et al. | Nov 2011 | B2 |
8150960 | Kumbalimutt | Apr 2012 | B2 |
8180883 | Clemm et al. | May 2012 | B1 |
8185488 | Chakravarty et al. | May 2012 | B2 |
8352769 | Ghose et al. | Jan 2013 | B1 |
8374986 | Indeck et al. | Feb 2013 | B2 |
8543665 | Ansari et al. | Sep 2013 | B2 |
8612932 | Chen et al. | Dec 2013 | B2 |
8745185 | Salo | Jun 2014 | B1 |
9178767 | Kean et al. | Nov 2015 | B2 |
9231904 | Johnson et al. | Jan 2016 | B2 |
9300593 | Thakkar et al. | Mar 2016 | B2 |
9325569 | Mogul et al. | Apr 2016 | B2 |
9335750 | Lu et al. | May 2016 | B2 |
20020174082 | Miloushev et al. | Nov 2002 | A1 |
20030028399 | Davis et al. | Feb 2003 | A1 |
20040216135 | Heimbeck | Oct 2004 | A1 |
20050210457 | Guilford | Sep 2005 | A1 |
20050273787 | Kovachka-Dimitrova et al. | Dec 2005 | A1 |
20060018253 | Windisch et al. | Jan 2006 | A1 |
20060143439 | Arumugam et al. | Jun 2006 | A1 |
20070088974 | Chandwani et al. | Apr 2007 | A1 |
20070297414 | Gupta et al. | Dec 2007 | A1 |
20080086564 | Putman et al. | Apr 2008 | A1 |
20100281169 | Charles | Nov 2010 | A1 |
20120173715 | Selitser et al. | Jul 2012 | A1 |
20120317254 | Chekhanovskiy et al. | Dec 2012 | A1 |
20130151690 | Shah et al. | Jun 2013 | A1 |
20130191185 | Galvin | Jul 2013 | A1 |
20130305357 | Ayyagari et al. | Nov 2013 | A1 |
20130322443 | Dunbar et al. | Dec 2013 | A1 |
20140280893 | Pfeifer et al. | Sep 2014 | A1 |
20160285872 | Polar et al. | Sep 2016 | A1 |
20170161609 | Wood et al. | Jun 2017 | A1 |
Number | Date | Country |
---|---|---|
1663217 | Aug 2005 | CN |
105284135 | Jan 2016 | CN |
14150059 | Sep 2014 | WO |
Entry |
---|
International Search Report for PCT/US2014/022055, dated Jun. 6, 2014. |
Chinese Office Action for Application No. 201480015220.X dated Feb. 11, 2018. |
Chinese Office Action for Application No. 20140015220.X dated Jul. 31, 2018. |
Number | Date | Country | |
---|---|---|---|
20190342192 A1 | Nov 2019 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13838719 | Mar 2013 | US |
Child | 16508158 | US |