A computing network can include any number of devices connected by data links. Some computing networks may be specialized to perform specific types of tasks. For example, a Storage Area Network (SAN) is generally configured to enable access to data storage devices such as disk arrays, tape libraries, jukeboxes, etc.
Some implementations are described with respect to the following figures.
Storage Area Networks (SANs) can include a variety of devices, and can utilize a variety of applications including. virtualization applications. In some examples, managing a SAN is a complex activity that is performed using specialized management applications and out-of-band data networks. Such example approaches may involve manual configurations at multiple places, and may thus be error-prone and time-consuming.
In accordance with some implementations, techniques or mechanisms are provided for network management using announcements (e.g., messages) generated by the ports of the network devices. Such announcements can be used to map ports and network devices, as well as their associated capabilities, services, etc. Further, such announcements can be used to enforce management policies in devices of the network.
The network 100 can be configured for a particular task or purpose. For example, in some implementations, the network 100 may be a Storage Area Network (SAN) including storage devices. In such implementations, the hosts 110(A,B) and/or the targets 120(A,B) may include, for example, disk arrays, tape libraries, optical jukeboxes, servers, etc.
In accordance with some implementations, some or all of the devices of the network 100 may be configured to transmit announcements, and to receive announcements from other devices. Such announcements can be used to map devices and associated services of the network 100. Further, such announcements may be used to automatically enforce policies in the network. These features will be described further below with reference to
Referring now to
As shown, the network device 210 can include processor(s) 220, memory 230, machine-readable storage 250, and a network interface 245. The processor(s) 220 can include a microprocessor, microcontroller, processor module or subsystem, programmable integrated circuit, programmable gate array, multiple processors, a microprocessor including multiple processing cores, or another control or computing device. The memory 230 can be any type of computer memory e.g., dynamic random access memory (DRAM), static random-access memory (SRAM), etc.). The machine-readable storage 250 can include non-transitory storage media such as hard drives, flash storage, optical disks, etc.
In some implementations, the network interface 245 can include any number of ports 240(A-N). The ports 240(A-N) can provide “in-band” data transmission using the primary data interconnections between the network devices 210). In some implementations, the ports 240(A-N) can provide “out-of-band” data transmission (i.e., using a channel reserved for system management data). The network interface 245 can use any network standard or protocol (e.g., Ethernet, Fibre Channel, Fibre Channel over Ethernet (FCoE), Internet Small Computer System Interface (iSCSI), a wireless network standard or protocol, etc.).
As shown, the machine-readable storage 250 can include a management module 260, a network mapping 270, management policies 280, and application(s) 290. In some implementations, the management module 260 can send a request for the network device 210 to join an announcement group (i.e., a specified group of devices that are to send and receive announcements). For example, in sonic implementations, the management module 260 may send an Internet Group Management Protocol (IGMP) message to join a multicast group in which members are to receive announcements.
An example listing of a multicast announcement message is provided below:
After joining an announcement group, the management module 260 can automatically send announcements to members of the announcement group. Further, the announcements may be transmitted periodically, or according to a defined schedule, or in response to an event, etc. The announcements may be, for example, multicast packets, broadcast packets, and so forth. In addition, the announcements may be transmitted via in hand data connections (e.g., using primary data interconnections that are not dedicated to management data).
In some implementations, the management module 260 can receive other announcements from members of the announcement group. For example, in some implementations, the management module 260 can use IGMP snooping at layer 2 to optimize the flow of announcements only to ports that have joined a multicast group. In this manner, other ports that do not use the announcements will not be flooded by the announcements.
In some implementations, each announcement may be transmitted by a single port of the network device 210. Further, each announcement can include “port metadata,” which can refer to data describing the network device 210 and/or the transmitting port In some implementations, the port metadata can include attributes and/or capabilities of the network device 210 and/or the transmitting port. For example, an announcement transmitted by port 240B may include metadata describing attributes of network device 210 and/or port 240B (e.g., device identifier, port name, physical port address, Internet Protocol (IP) address, software version, manufacturer identifier, network zoning or partitioning, etc.). In another example, an announcement transmitted by port 240A may include metadata describing capabilities of network device 210 and/or port 240A (e.g., storage capacity, disk speed, redundancy, data transfer rates, error correction capabilities, Quality of Service capabilities, security/encryption capabilities, legal compliance, application services, protocol or API services, etc.).
In some implementations, the port metadata can describe services and/or applications associated with the transmitting port. For example, an announcement transmitted by port 240B may include metadata describing a service or application that is provisioned on (or assigned to) port 240B. Further, the port metadata can include logical address information (e.g., a Virtual Port, a Virtual Machine (VM), a Virtual Local Area Network (VLAN) identifier, a Logical Unit Number (LUN) identifier, etc.) associated with the transmitting port. For example, an announcement transmitted by port 240B may include metadata describing a VLAN and/or a LUN associated with a service or application provisioned on port 240B.
In some implementations, the management module 260 can build and update the network mapping 270 based on received announcements. The network mapping 270 may include a topology map of the connections between the ports 240(A-N) and/or network devices 210. Further, the network mapping 270 may include information about the attributes and/or capabilities associated with the ports 240(A-N) and/or network devices 210. In addition, the network mapping 270 may include information about “flows,” which can be the particular data paths between applications and/or services and their target devices.
In some implementations, the management module 260 can evaluate and execute the management policies 280 using announcements and/or the network mapping 270. By executing the management policies 280, each network device 210 can manage its own network configuration. Further, the management policies 280 may specify actions to enable an application or service to configure the network devices 210 which provide the flow of the application or service. For example, the management policies 280 may specify that an application is to be assigned to a storage device based on disk speed, encryption level, redundancy, etc. In another example, the management policies 280 may group devices into a zone. Further, in some implementations, the network device 210 may be a specialized management device, and may execute the management policies 280 to manage a group of other devices included in a network.
The network device 210 shown in
In some implementations, the announcements may be formatted as standard multicast or broadcast messages that are automatically forwarded by non-enabled devices. For example, referring again to
In some implementations, the management module 260 can update the network mapping 270 using information from non-enabled devices. For example, the management module 260 can use join requests from new members (e.g., an IGMP message) to notify a layer 3 protocol (e.g., Distance Vector Multicast Routing Protocol (DVMRP), Protocol-Independent Multicast (PIM), etc.). The layer 3 protocol can then build a short path tree between all receivers and senders of the group, including both enabled and non-enabled devices. This path tree information can be used to update the network mapping 270,
In some implementations, the management module 260 can include Application Programming Interfaces (API) for external management frameworks (e.g., Software Defined Networking (SDN) frameworks, OpenStack frameworks, etc.). Such APIs can enable external management systems to access the network mapping 270, and to manage network devices using the management policies 280.
Various tasks of the management module 260 are discussed further below with reference to
Referring now to
After joining the announcement group, port 314 sends an announcement 361 to port 334. As shown, the announcement 361 is then forwarded to other members of the announcement group (e.g., ports 345 and 357). The announcement 361 may include metadata describing port 314, host 310, and/or application 313, in some implementations, switch 330, target 340, and target 350 can use the received announcements 361 to update their network mappings (e.g., network mapping 270 shown in
In some implementations, host 310 can also receive announcements from other members of the announcement group. For example, as shown in
Referring now to
After joining the announcement group, port 316 sends an announcement 371 to port 336. The announcement 371 may be forwarded to other members of the announcement group (e.g., ports 345 and 357). The announcement 371 may include metadata describing port 316, host 310, virtual machine 320, and/or application 315. In sonic implementations, switch 330, target 340, and target 350 can use the received announcements 371 to update their network mappings to include information about port 316, host 310, virtual machine 320, and/or application 315. Further, as shown in
Referring now to
In some implementations, the determination of flows 380 and 385 may be performed by any device including the network mapping features described herein (e.g., host 310, switch 330, target 340, and/or target 350). Further, each device can store information describing the flows 380 and 385 in its network mapping (e.g., network mapping 270 shown in
Referring now to
At 410, announcements from multiple ports included in an announcement group may be received. Each announcement may include port metadata describing a particular port. For example, referring to
At 420, a network mapping of the multiple ports and their associated services may be determined based on the received announcements. For example, referring to
Referring now to
At 510, a request to join a multicast group may be sent from a port. For example, referring to
At 520, after joining the multicast group, announcements may be sent to other members of multicast group. For example, referring to
At 530, announcements from other members of the multicast group may be received at the port. For example, referring to
At 540, requests to join the multicast group may be received at the port from other devices. For example, referring to
At 550, a network mapping of the multiple ports and their capabilities may be determined based on the received announcements and join requests. For example, referring to
Referring now to
At 610, in-band announcements from multiple ports included in an announce e group may be received. For example, referring to
At 620, a network mapping of the multi pie ports and their capabilities may be determined based on the received announcements. For example, referring to
At 630, management policies may be evaluated using the announcements. In some implementations, the management policies can be evaluated using the network mapping. For example, referring to
At 640, a determination is made about whether a management policy is triggered by the announcements and/or the network mapping. For example, referring to
If it is determined at 640 that a management policy is not triggered by the announcements and/or the network mapping, then the process 600 can repeat at 610. However, if it is determined at 640 that a management policy is triggered by the announcements and/or the network mapping, then at 650, the triggered management policy may be executed. For example, referring to the network device 210 shown in
In accordance with some implementations, the announcements described herein may enable individual devices to build and maintain network mapping information automatically using “push” communication, and without employing out-of-band “pull” communication. Further, the announcements can be used to enable “target orchestration,” which can refer to individual network devices automatically controlling and managing the configuration of the network and application flows. Furthermore, the announcements may be used to combine information from logical and physical domains in a single mapping. In addition, the announcements may enable network management while maintaining compatibility with non-enabled devices.
Data and instructions are stored in respective storage devices, which are implemented as one or multiple computer-readable or machine-readable storage media. The storage media include different forms of non-transitory memory including semiconductor memory devices such as dynamic or static random access memories (DRAMs or SRAMs), erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks other magnetic media including tape optical media such as compact disks (CDs) or digital video disks (DVDs); or other types of storage devices.
Note that the instructions discussed above can be provided on one computer-readable or machine-readable storage medium, or alternatively, can be provided on multiple computer-readable or machine-readable storage media distributed in a large system having possibly plural nodes. Such computer-readable or machine-readable storage medium or media is (are) considered to be part of an article (or article of manufacture). An article or article of manufacture can refer to any manufactured single component or multiple components, The storage medium or media can be located either in the machine running the machine-readable instructions, or located at a remote site from which machine-readable instructions can be downloaded over a network for execution.
In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2014/035805 | 4/29/2014 | WO | 00 |