Method, system, and computer program for end-point notification of storage area network congestion

The system allows network devices in SANs to notify endpoint devices of congestion, enabling proactive adjustments to data transmission and enhancing network performance by addressing the lack of communication in existing SAN technologies.

JP7740830B2Active Publication Date: 2025-09-17INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
JP2021179951
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-12-01
Filing Date
2021-11-04
Publication Date
2025-09-17
Estimated Expiration
2041-11-04

AI Technical Summary

Technical Problem

Current storage area network (SAN) technologies lack the ability for network devices to communicate network congestion events to servers or endpoint devices, leading to inefficiencies in managing network traffic and potential service degradation.

Method used

Implementing a system where network devices in a SAN can register endpoint devices to receive congestion notifications, detect congestion events, and send notifications to registered endpoint devices using control unit ports, SNMP, or CIMOM, allowing endpoint devices to adjust their data transmission accordingly.

Benefits of technology

Enables endpoint devices to respond to network congestion by adjusting data transmission, thereby improving network performance and preventing service degradation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007740830000001
    Figure 0007740830000001
  • Figure 0007740830000002
    Figure 0007740830000002
  • Figure 0007740830000003
    Figure 0007740830000003
Patent Text Reader

Abstract

To provide a method for a network device which has detected network congestion in a storage area network to communicate with one or more endpoint devices.SOLUTION: A computer-implemented method includes registering one or more endpoint devices for receiving notifications, and detecting a congestion event related to a storage area network. The storage area network includes one or more endpoint devices. Notifications about congestion events are transmitted to the one or more endpoint devices registered for notification.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates generally to computer systems, and more particularly to computer-implemented methods, computer systems, and computer program products configured and arranged to provide endpoint notification of storage area network congestion. [Background technology]

[0002] A storage area network (SAN), or storage network, is a computer network that provides access to consolidated block-level data storage. In its simplest form, a SAN is a dedicated network for data storage. It is a combination of hardware and software. SANs are primarily used to provide server access to storage devices such as disk arrays and tape libraries, so that the devices appear to the operating system as direct-attached storage. SANs are dedicated networks for storage devices that are typically not accessible via a local area network (LAN). While SANs only provide block-level access, file systems built on SANs provide file-level access and are known as shared disk file systems. SANs are sometimes referred to as networks behind servers. Historically, SANs evolved from a centralized data storage model but have their own data networks. In addition to storing data, SANs also enable automated data backup and storage monitoring, as well as backup processes. Summary of the Invention [Problem to be solved by the invention]

[0003] A method is provided for a network device that detects network congestion in a storage area network to communicate with an endpoint device. [Means for solving the problem]

[0004] Embodiments of the present invention relate to endpoint notification of storage area network congestion. A non-limiting example of a computer-implemented method includes registering one or more endpoint devices to receive congestion notifications and detecting a congestion event associated with the storage area network. The storage area network includes one or more endpoint devices. The computer-implemented method includes sending a notification about the congestion event to the one or more endpoint devices registered for notification.

[0005] Other embodiments of the present invention implement features of the above methods in computer systems and computer program products.

[0006] Additional technical features and advantages are realized through the techniques of the present invention. Embodiments and aspects of the present invention are described in detail herein and are considered a part of the claimed subject matter. For a fuller understanding, reference is made to the detailed description and drawings.

[0007] The details of the exclusive rights set forth herein are particularly pointed out and distinctly claimed in the claims at the end of the specification. These and other features and advantages of embodiments of the present invention will become apparent from the following detailed description read in conjunction with the accompanying drawings. [Brief explanation of the drawings]

[0008] [Figure 1] FIG. 1 is a block diagram of an exemplary computer system for use in conjunction with one or more embodiments of the present invention. [Figure 2] 1 is a block diagram of a system for endpoint notification of storage area network congestion in accordance with one or more embodiments of the present invention. [Figure 3]1 is a flowchart of a computer-implemented process for endpoint notification of storage area network congestion in accordance with one or more embodiments of the present invention. [Figure 4] FIG. 1 is a block diagram of a simplified storage area network showing further details of an exemplary network device and an exemplary endpoint device, in accordance with one or more embodiments of the present invention. [Figure 5] FIG. 2 is a block diagram of an exemplary message structure for congestion event notification, in accordance with one or more embodiments of the present invention. [Figure 6] 1 is a flowchart of a computer-implemented method for providing endpoint notification of storage area network congestion in accordance with one or more embodiments of the present invention. [Figure 7] FIG. 2 illustrates exemplary entries in a table in an endpoint device registration database in accordance with one or more embodiments of the present invention. [Figure 8] FIG. 1 illustrates a cloud computing environment in accordance with one or more embodiments of the present invention. [Figure 9] FIG. 1 illustrates abstraction model layers in accordance with one or more embodiments of the present invention. DETAILED DESCRIPTION OF THE INVENTION

[0009] One or more embodiments of the present invention provide a computer-implemented method, computer system, and computer program product for endpoint notification of storage area network (SAN) congestion. SAN vendors have implemented many different mechanisms and tools for detecting network congestion, such as bottleneck detection and SAN analysis. In the current state of the art, network congestion is only detected by a server when a port begins to experience a sustained increase, such as when transmit (TX) buffer credits reach zero. Currently, there is no way for a network device in a SAN that detects network congestion to communicate this to the server, control unit (CU), or any connected endpoint devices.

[0010] According to one or more embodiments of the present invention, a network device in a SAN is configured to send a notification about detected network congestion to a server, a control unit (CU), or a connected endpoint device, or a combination thereof. This allows the connected endpoint device to receive notification of detected network congestion so that appropriate changes can be automatically triggered by the endpoint device. According to one or more embodiments of the present invention, the endpoint device is configured to register with the network (i.e., the network device) to receive notifications about a specific network identifier and / or port identifier. The network device detects a congestion event. The network device can collect data from relevant segments of the network affected by the network event. The network device transmits the data to connected endpoint devices that have registered to receive relevant data about the characteristics of the network event. In data networking and queuing, network congestion refers to a degradation in quality of service that occurs when a network node and / or link is transmitting more data than it can handle. Typical effects include queuing delays, packet loss, and / or blocking of new connections.

[0011] Referring to FIG. 1, a computer system 100 according to one or more embodiments of the present invention is generally illustrated. Computer system 100 may be an electronic computer framework that includes and / or uses any number of computing devices and networks, and combinations thereof, utilizing various communication technologies, as described herein. Computer system 100 may be readily scalable, extensible, and modular, allowing modifications to different services or reconfiguration of some functions independently of other functions. Computer system 100 may be, for example, a server, desktop computer, laptop computer, tablet computer, or smartphone. In some examples, computer system 100 may be a cloud computing node. Computer system 100 may be described in the general context of computer system-executable instructions, such as program modules, executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. Computer system 100 may be practiced in a distributed cloud computing environment where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media, including memory storage devices.

[0012] As shown in FIG. 1, computer system 100 includes one or more central processing units (CPUs) 101a, 101b, 101c, etc. (collectively referred to as processors 101). Processor 101 may be a single-core processor, a multi-core processor, a computing cluster, or any number of other configurations. Processor 101, also referred to as a processing circuit, is coupled to system memory 103 and various other components via system bus 102. System memory 103 may include read-only memory (ROM) 104 and random access memory (RAM) 105. ROM 104 is coupled to system bus 102 and may include a basic input / output system (BIOS) or its successor, such as a unified extensible firmware interface (UEFI), which controls certain basic functions of computer system 100. RAM is read-write memory coupled to system bus 102 for use by processor 101. System memory 103 provides temporary memory space for the execution of instructions during operation. System memory 103 may include random access memory (RAM), read-only memory, flash memory, or any other suitable memory system.

[0013] Computer system 100 includes an input / output (I / O) adapter 106 and a communications adapter 107 coupled to system bus 102. I / O adapter 106 may be a small computer system interface (SCSI) adapter that communicates with a hard disk 108 and / or any other similar components. I / O adapter 106 and hard disk 108 are collectively referred to herein as mass storage 110.

[0014] Software 111 for execution on computer system 100 can be stored on mass storage 110. Mass storage 110 is an example of a tangible storage medium readable by processor 101, and software 111 is stored on mass storage 110 as instructions executed by processor 101 to operate computer system 100, as described below with respect to the various figures. Examples of computer program products and the execution of such instructions are described in more detail herein. Communications adapter 107 interconnects system bus 102 to network 112, which may be an external network, enabling computer system 100 to communicate with other such systems. In one embodiment, a portion of system memory 103 and mass storage 110 collectively store an operating system, which may be any suitable operating system for coordinating the functions of the various components shown in FIG. 1 .

[0015] Additional input / output devices are shown connected to system bus 102 via display adapter 115 and interface adapter 116. In one embodiment, adapters 106, 107, 115, and 116 may be connected to one or more I / O buses connected to system bus 102 through an intermediate bus bridge (not shown). A display 119 (e.g., a screen or display monitor) is connected to system bus 102 by display adapter 115, which may include a graphics controller for improving performance of graphics-intensive applications and a video controller. A keyboard 121, mouse 122, speaker 123, etc. may be interconnected to system bus 102 via interface adapter 116, which may include, for example, a super I / O chip that integrates multiple device adapters into a single integrated circuit. Suitable I / O buses for connecting peripherals such as hard disk controllers, network adapters, and graphics adapters typically include common protocols such as Peripheral Component Interconnect (PCI) and Peripheral Component Interconnect Express (PCIe). Thus, as configured in Figure 1, computer system 100 includes processing functionality in the form of processor 101, storage functionality including system memory 103 and mass storage 110, input means such as keyboard 121 and mouse 122, and output functionality including speakers 123 and display 119.

[0016] In some embodiments, communications adapter 107 can transmit data using any suitable interface or protocol, such as an Internet Small Computer System Interface, among others. Network 112 can be a cellular network, a wireless network, a wide area network (WAN), a local area network (LAN), or the Internet, among others. External computing devices can connect to computer system 100 via network 112. In some examples, the external computing device can be an external web server or a cloud computing node.

[0017] It should be understood that the block diagram of Figure 1 is not intended to indicate that computer system 100 includes all of the components shown in Figure 1. Rather, computer system 100 may include any suitable, fewer, or additional components (e.g., additional memory components, embedded controllers, modules, additional network interfaces, etc.) not shown in Figure 1. Furthermore, the embodiments described herein with respect to computer system 100 may be implemented with any suitable logic, which, as referred to herein, in various embodiments, may include any suitable hardware (e.g., a processor, embedded controller, or application specific integrated circuit, among others), software (e.g., an application, among others), firmware, or any suitable combination of hardware, software, and firmware.

[0018] FIG. 2 is a schematic diagram of a storage area network (SAN) 200 including endpoint notification of storage area network congestion in accordance with one or more embodiments of the present invention. The SAN 200 includes multiple endpoint devices 210 and 220, each connected to one or more network devices 230, such as a switch. The network devices 230 include memory and processing circuits (e.g., monitoring and regulating circuits). The network topology of the SAN 200 may be a switched fabric in which the network devices 230 are switches. In one or more embodiments, a particular network device 230 that is a switch may be configured in switch mode or N-Port ID Virtualization (NPIV) mode. In one or more embodiments, at least one of the endpoint devices 210, 220 in the SAN 200 is configured as a host device. For example, the endpoint device 210 may be the host device. In one or more embodiments, the host device as the endpoint device 210 is embodied in a computer system such as the computer system 100 shown in FIG. 1. Additionally, any of the endpoint devices 210 , 220 and the network device 230 may be implemented using any of the functionality and hardware and software components described in the computer system 100 .

[0019] In one or more embodiments, each of the network devices 230 includes multiple ports that connect the network device 230 to various endpoint devices 210, 220 via links 225. Additionally, each endpoint device 210, 220 includes one or more ports that connect the endpoint device to one or more network devices 230 or other endpoint devices 220, or both. In one or more embodiments, each link 225 is defined by two ports connected to the link 225. The ports of the endpoint devices 220, 210 are referred to as channel ports, and the ports of the network device 230 are referred to as switch ports.

[0020] In one or more embodiments, network device 230 supports the Fibre Channel (FC) protocol, the Fibre Channel over Ethernet (FCoE) protocol, or both. For example, a particular fixed-port network device may support the FC protocol, the FCoE protocol, or both. As another example, if a particular network device 230 includes multiple line cards, at least some of which may support the FC protocol, at least some of which may support the FCoE protocol, or both. It is noted that a particular port on a particular network device 230 may support the FC protocol or the FCoE protocol by default or as configured (e.g., if the particular port is a universal port). Optionally, network device 230 supports one or more other protocols, such as Simple Network Management Protocol (SNMP), for collecting information, e.g., for output to a management device implemented as endpoint device 210.

[0021] FIG. 3 is a flowchart of a computer-implemented process 300 for endpoint notification of storage area network congestion in accordance with one or more embodiments of the present invention. FIG. 4 is a block diagram of a simplified SAN 200 showing further details of an exemplary network device 230, an exemplary endpoint device 210, and an endpoint device 220 in accordance with one or more embodiments of the present invention. While the schematic representation of SAN 200 in FIG. 4 merely shows a single endpoint device 210 and a single endpoint device 220 each connected to a single network device 230, this schematic representation of FIG. 4 is for illustrative purposes only and is not intended to be limiting. Rather, SAN 200 in FIG. 4 may have multiple endpoint devices 210, 220 variously connected to multiple network devices 230 similar to SAN 200 shown in FIG. 2. The SAN 200 shown in FIGS. 2 and 4 may be used with computer system 100 and / or elements of computer system 100 shown in FIG. 1 to implement the computer-implemented process 300 of FIG. 3. Accordingly, the computer-implemented process 300 will now be described with reference to FIGS.

[0022] In block 302, the software application 404 of the network device 230 is configured to receive a registration request 402 from the endpoint devices 210, 220 to register the endpoint devices 210, 220 with the SAN 200. The network device 230 receives the registration requests 402 from the endpoint devices 210, 220, each connected to the network device 230. The registration requests 402 indicate that the endpoint devices 210, 220 are registering to receive notifications about a particular network identifier and / or port identifier, and a particular server blade, zone, and switch (network device 230) within the SAN 200. In one or more embodiments, the endpoint devices 210, 220 may each have a client application 422 configured to register with the software application 404 of the desired network device 230, or may use another method for registration, or both.

[0023] As described in FIG. 1 , the software application 404 may be implemented as software 111 executing on one or more processors 101. Similarly, the client application 422 may be implemented using software 111 configured to execute on one or more processors 101. The client application 422 may include a cookie, a plug-in, a thin client, etc., and may function as a single piece of computer software that accesses the network device 230. The registration request 402 may include authentication information, or the authentication information may be pre-sent to each endpoint device 210, 220, or both. According to the identified network identifier and / or port identifier requested in the registration request 402 for each endpoint device 210, 220, the software application 404 of the network device 230 is configured to register the network identifier and / or port identifier requested by the endpoint device 210, 220 with the requested specific server blade, zone, and switch (network device 230), respectively. The software application 404 of each network device 230 is configured to store a respective list of registered endpoint devices 210, 220 and their registered network identifiers and / or port identifiers in an endpoint device registration database 408 in memory 406. The endpoint device registration database 408 may include a table containing an entry for each registered endpoint device 210, 220. An exemplary entry in a table in the endpoint device registration database 408 for an exemplary endpoint device is shown in FIG. 7. In FIG. 7, the exemplary endpoint device 210, 220 is depicted as "ABC."The table shows that endpoint device "ABC" (e.g., endpoint devices 210, 220) has registered for notifications regarding network ID "DEF," port ID "GHI," and other identities such as blade server "J," zone "K," and switch "L" (e.g., a particular network device 230). While FIG. 7 is an illustration of a single entry in the table for a single endpoint device registered with network device 230, the table in endpoint device registration database 408 may contain multiple entries for various registered endpoint devices. Additionally, exemplary endpoint device "ABC" may register to receive congestion notifications from multiple network devices 230 to which it is connected, e.g., from a first network device 230, a second network device 230, a third network device 230, etc.

[0024] Within the SAN 200, each port has a unique port identifier (or port address) that serves as the port's Fibre Channel (FC) address. This port identifier (or port address) allows data to be routed through the SAN 200 to that port on the network device 230. The network device 230 (e.g., an FC switch) assigns a port identifier to an endpoint device when it logs into the fabric (i.e., the SAN 200). The port identifier includes a physical identifier and a logical identifier. The port address is a port-level address that is a physical address on the network device 230 and the endpoint devices 210 and 220. The logical identifier, also known as the link address, is a logical identifier associated with the network device 230 and the endpoint devices 210 and 220. The network identifier includes a domain identifier (DID) and a fabric identifier (FID). The domain identifier is the physical identification of a physical switch, such as the network device 230. The fabric identifier is a logical identifier of one or more switches, such as one or more network devices 230 and / or one or more optical fibers (ie, cables) (or, in some cases, copper wires).

[0025] Referring to FIG. 3 , in block 304, each of the network devices 230 is configured to monitor a connecting link 225 in the SAN 200. For simplicity, the link 225 is shown as a single line, but the link 225 may include multiple cables, such as fiber optic cables, Ethernet cables, coaxial cables, etc. The software application 404 may include, integrate with, communicate with, or a combination of one or more monitoring software applications and / or tools. Any suitable monitoring application and / or tool may be used to monitor the network as described herein. Exemplary monitoring software applications / tools include bottleneck detection, SAN analysis, etc.

[0026] In block 306, the software application 404 of the network device 230 is configured to detect a congestion event within the SAN 200. A congestion event is an observed slowdown that can be caused by many things. There could be an endpoint that is slow to receive frames (commonly referred to as a slow drain device), or the congestion event could be due to a component or link failure (e.g., one of two redundant components fails, causing the remaining one to do double the work), or both. Congestion can also be due to "oversubscription" of an inter-switch link (ISL) or the network device's internal switching infrastructure. Oversubscription occurs when the total bandwidth of the ports connected to the device is greater than the overall internal switching infrastructure. In one or more embodiments, this detection of a congestion event uses known techniques based on vendor-specific implementations. A congestion event is congestion in data networking and queuing, causing a degradation in quality of service that occurs when a network node (e.g., network device 230) and / or link (e.g., one or more cables shown in link 225) is transmitting more data than it can handle. A congestion event can occur when thresholds are reached for queuing delay, packet loss, or blocking of new connections, or a combination thereof.

[0027] In block 308, the software application 404 of the network device 230 is configured to determine which segment / portion of the network (i.e., the SAN 200) has detected congestion and / or which segment / portion is affected by the congestion event. There are various methods of data collection for detecting the affected segment / portion of the SAN 200, and congestion can be based on and / or identified by network identifiers such as a domain ID (DID) and / or a fabric ID (FID), a physical link address such as a port ID, a logical link address such as a channel ID, etc. Congested segments can also be identified by a particular server blade, zone, switch (e.g., the network device 230), etc. In one or more embodiments, the determination of congested segments can use any known technique.

[0028] In block 310, the software application 404 of the network device 230 is configured to determine whether any endpoint devices 210, 220 are registered to receive notifications regarding the identified associated network identifiers and / or port identifiers affected by the congestion event, including a particular server blade, zone, or switch (e.g., network device 230). For example, the software application 404 of the network device 230 is configured to check / compare the identified network identifiers and / or port identifiers (and particular server blades, zones, or switches (e.g., network device 230)) in the congestion event against registered network identifiers and / or port identifiers (and particular registered server blades, zones, or switches (e.g., network device 230)) registered by the respective endpoint devices 210, 220. If there is no match, the flow ends. If there is a match, there is an endpoint device 210, 220 registered to receive notifications for the associated network identifier and / or port identifier (a particular server blade, zone, switch (e.g., network device 230)), and in block 312, the software application 404 of the network device 230 is configured to package the data and send the congestion event notification 450 to the endpoint device 210, 220 that has (previously) registered to receive the congestion event notification 450.

[0029] In one or more embodiments, the congestion event notification 450 and unsolicited messages can be sent through a control device of a FICON (fiber interconnect) director, more commonly known as a control unit port (CUP). The network device 230 includes a control unit port through which each of the endpoint devices 210 and 220 can communicate. The endpoint devices 210 and 220 can be configured to use the control unit port (e.g., in band communication). The control unit provides the logical functions necessary to operate and control input / output devices and adapts the characteristics of each device to accommodate the standard control forms provided by the channel subsystem. Communication between the control unit and the channel subsystem occurs via a channel path. The control unit accepts control signals from the channel subsystem, controls the timing of data transfers over the channel path, and provides indications regarding the status of devices. The control unit port is a logical control unit included in the network device 230. The control unit port (CUP) function allows z / OS® systems to communicate with a FICON® director through channel programs. This includes control functions such as port blocking and unblocking, performance monitoring, and error reporting. A CUP device is simulated as a special firmware load on the switch that allows the z / OS® system to issue channel programs to the switch. A CUP device is defined as a switch device in the I / O configuration and brought online to z / OS®. The control unit definition of a CUP device consists of one or more channel paths connected to the switch with a reserved port address destination of 0xFE, defined by the FICON architecture as the address of the Control Unit Port (CUP). Therefore, I / O requests routed to this destination port are directed to the CUP.

[0030] Similar unsolicited messages can include Read Diagnostic Parameter (RDP) information. Unsolicited messages can be for communicating status or alerts that are not generated by a request. In typical operation, the IBM® z / OS® server sends commands for data to the CUP, and the CUP responds to the commands. These are solicited messages. Unsolicited messages are when the CUP sends a message / data to the IBM® z / OS® server without a command. In one or more embodiments, the congestion event notification 450 can be sent out of band to the endpoint device 210, 220 via a simple network management port (SNMP). In one or more embodiments, the congestion event notification 450 can be sent to the endpoint device 210, 220 via a Common Information Model Object Manager (CIMOM). In one or more embodiments, the congestion event notification 450 can be sent to the endpoint device 210, 220 as an Extended Link Service (ELS).

[0031] 5 is a block diagram of an example message structure for an example congestion event notification 450 in accordance with one or more embodiments of the present invention. In FIG. 5, the congestion event notification 450 includes a notification type 510, a network identifier 520, and a physical / logical identifier 530. The notification type 510 can be one of two types: congestion detected and network healthy. If the network device 230 does not detect congestion (i.e., a congestion event) for a predetermined period of time, or after a resolved congestion event, or both, the software application 404 of the network device 230 is configured to send a congestion event notification 450 to registered endpoint devices 210, 220 indicating that the network is healthy.

[0032] In the congestion event notification 450, the network identifier 520 identifies where the congestion is occurring. The network identifier 520 can include a domain identifier (DID) as a physical identification of a physical switch, such as one or more network devices 230, that is causing and / or experiencing the congestion. Because the DID is an identifier of a physical switch within a SAN, the DID is unique to a single network device 230. The network identifier 520 can also include a fabric identifier (FID) as a logical identifier of one or more switches, such as one or more network devices 230, that are causing and / or experiencing the congestion. The FID is a logical assignment to each fabric present in the SAN and can span multiple network devices 230. In one or more embodiments, the network identifier 520 can also list the zone, blade server, and / or switch experiencing the congestion. SAN zoning is a method of arranging Fibre Channel devices (such as one or more network devices 230 and one or more endpoint devices 210, 220) into logical groups on the physical fabric. SAN zoning can be used to enforce data partitioning for security purposes.

[0033] In the congestion event notification 450, the physical / logical identifier 530 includes a unique port identifier (i.e., port address) of the network device 230 experiencing the congestion, where the port identifier includes a physical identifier and a logical identifier. The port address is a port-level address that is a physical address on the network device 230, and the logical identifier is a logical identifier associated with the network device 230.

[0034] In response to receiving the congestion event notification 450 from the network device 230, the congestion event notification 450 can trigger the client application 422 on the endpoint device 210, 220 to decrease the data on the associated link 225 identified for the network ID 520 and / or physical / logical ID 530. In response to receiving the congestion event notification 450 from the network device 230, the congestion event notification 450 can also trigger the client application 422 to search for and connect to another network device 230 that did not send the congestion event notification 450, to send more data (traffic) to the previously connected network device 230 that did not send the congestion event notification 450, and to decrease the data on the network device 230 that sent the congestion event notification 450, etc. In response to receiving the congestion event notification 450 from the network device 230, the congestion event notification 450 can act as a trigger to cause the client application 422 on the endpoint device 210, 220 to pause / stop all data related to the affected network ID 520 and / or physical ID / logical ID 530 until a successful network congestion event notification 450 is sent by the network device 230.

[0035] FIG. 6 illustrates a flowchart of a computer-implemented method 600 for providing endpoint notification of storage area network (SAN) congestion in accordance with one or more embodiments of the present invention. The computer-implemented method 600 of FIG. 6 may be implemented by a SAN 200 using one or more network devices 230 shown in FIG. 2 in conjunction with the computer system 100 of FIG. 1 and / or elements of the computer system 100. In block 602, a software application 404 of the network device 230 is configured to register one or more endpoint devices (e.g., one or more endpoint devices 210 and / or one or more endpoint devices 220) to receive congestion event notifications 450. In block 604, the software application 404 of the network device 230 is configured to detect a congestion event associated with the storage area network 200, including one or more endpoint devices 210, 220. In block 606, the software application 404 of the network device 230 is configured to send a notification 450 about the congestion event to one or more endpoint devices 210, 220 that are registered to receive the notification 450.

[0036] The network device 230 is configured to store a list in a database (e.g., endpoint device registration database 408) of one or more endpoint devices 210, 220 that have registered for notification 450. The network device 230 is configured to receive a request for notification (e.g., a registration request 402) from one or more endpoint devices 210, 220, the request including one or more network identifiers of devices (e.g., network device 230, endpoint device 210, endpoint device 220) within the storage area network 200. In response to receiving the request, the network device 230 is configured to store the one or more network identifiers in the database (e.g., endpoint device registration database 408).

[0037] The network device 230 is configured to receive a notification request (e.g., a registration request 402) from one or more endpoint devices 210, 220, the request including one or more port identifiers of devices (e.g., the network device 230, the endpoint device 210, and the endpoint device 220) within the storage area network 200. In response to receiving the request, the network device 230 is configured to store the one or more port identifiers in a database (e.g., an endpoint device registration database 408). The one or more endpoint devices 210, 220 are registered with the network device 230 to utilize a control unit port (CUP). The network device 230 is configured to allow the one or more endpoint devices 210, 220 to utilize the control unit port and operate as a control unit to communicate directly with the network device 230. The notification 450 is configured to be sent using a Common Information Model Object Manager (CIMOM).

[0038] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings described herein is not limited to cloud computing environments. Rather, embodiments of the present invention may be implemented in conjunction with any other type of computing environment now known or later developed.

[0039] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with the service provider. This cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0040] The features are as follows:

[0041] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without the need for human interaction with the provider of the service.

[0042] Broadband Network Access: Functionality is available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., cell phones, laptops, and PDAs).

[0043] Resource Pooling: To accommodate multiple consumers using a multi-tenant model, a provider's computing resources are pooled, with different physical and virtual resources dynamically allocated and reallocated according to demand. Consumers generally have no control or knowledge of the exact location of the resources provided, but there is a sense of location independence in that it may be possible to specify a higher level of abstraction (e.g., country, state, or data center).

[0044] Rapid Elasticity: Capabilities are quickly and elastically provisioned, sometimes automatically, so they can be quickly scaled out, and quickly released so they can be quickly scaled in. To the consumer, the capabilities available for provisioning often appear unlimited, and any amount can be purchased at any time.

[0045] Metered Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported to provide transparency to both providers and consumers of utilized services.

[0046] The service model is as follows:

[0047] Software as a Service (SaaS): The functionality offered to the consumer is the use of the provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or individual application functions, with the possible exception of limited user-specific application configuration settings.

[0048] Platform as a Service (PaaS): The capability offered to consumers is the deployment of consumer-created or consumer-acquired applications, written using programming languages ​​and tools supported by the provider, on a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but has control over the deployed applications and, in some cases, the application hosting environment configuration.

[0049] Infrastructure as a Service (IaaS): The functionality offered to consumers is the provisioning of processing, storage, networking, and other basic computing resources, upon which the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but does have control over the operating system, storage, deployed applications, and possibly limited control over selected networking components (e.g., host firewalls).

[0050] The deployment models are as follows:

[0051] Private Cloud: This cloud infrastructure is operated solely for the organization. It may be managed by the organization or a third party and may reside on-premise or off-premise.

[0052] Community Cloud: This cloud infrastructure is shared by several organizations to support a specific community with common concerns (e.g., mission, security requirements, policies, and compliance issues). It may be managed by the organization or a third party and may reside on-premises or off-premises.

[0053] Public Cloud: This cloud infrastructure is available to the general public or large industry organizations and is owned by an organization that sells cloud services.

[0054] Hybrid Cloud: This cloud infrastructure is a composite of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technologies that allow for data and application portability (e.g., cloud bursting for load balancing between clouds).

[0055] Cloud computing environments are service-oriented, focusing on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0056] Referring now to FIG. 8, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 that can communicate with local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automotive computer system 54N, or combinations thereof. The nodes 10 can communicate with each other. The nodes 10 can be physically or virtually grouped (not shown) in one or more networks, such as the aforementioned private cloud, community cloud, public cloud, or hybrid cloud, or combinations thereof. This enables the cloud computing environment 50 to provide infrastructure, platform, and / or software as a service for which the cloud consumer does not need to maintain resources on their local computing device. The types of computing devices 54A-54N shown in FIG. 8 are intended to be exemplary only, and it is understood that computing node 10 and cloud computing environment 50 can communicate with any type of computerized device over any type of network and / or network-addressable connection (e.g., using a web browser).

[0057] Referring now to Figure 9, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 8) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 9 are intended to be illustrative only, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0058] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframes 61, RISC (reduced instruction set computer) architecture-based servers 62, servers 63, blade servers 64, storage devices 65, and networks and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0059] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.

[0060] In one example, the management layer 80 can provide the following functions: Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources can include application software licenses. Security provides identity verification for cloud consumers and tasks and protection of data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management to ensure required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides proactive provisioning and procurement of cloud computing resources in anticipation of future demands per SLAs.

[0061] Workload tier 90 provides examples of functionality for which a cloud computing environment can be utilized. Examples of workloads and functionality that can be provided from this tier include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instruction delivery 93, data analytics processing 94, transaction processing 95, and software applications (e.g., software application 404, client application 422, etc.) implemented in workloads and functionality 96. Additionally, software applications can work in conjunction with and / or be incorporated into resource provisioning 81.

[0062] Various embodiments of the present invention are described herein with reference to the associated drawings. Alternative embodiments of the present invention are contemplated without departing from the scope of the present invention. In the following description and in the drawings, various connections and positional relationships (e.g., above, below, adjacent, etc.) between elements are shown. These connections and / or positional relationships may be direct or indirect unless otherwise specified, and the present invention is not intended to be limited in this respect. Thus, coupling of entities may refer to either direct or indirect coupling, and positional relationships between entities may be direct or indirect. Furthermore, various tasks and process steps described herein may be combined into a more comprehensive procedure or process having additional steps or functions not specifically described herein.

[0063] One or more of the methods described herein may be implemented with any one or combination of the following technologies, each of which is well known in the art: discrete logic circuits having logic gates for performing logical functions on data signals, application specific integrated circuits (ASICs) having appropriate combinatorial logic gates, programmable gate arrays (PGAs), field programmable gate arrays (FPGAs), etc.

[0064] For the sake of brevity, prior art related to making and using aspects of the present invention may or may not be described in detail herein. In particular, various aspects of computing systems and specific computer programs for implementing various technical features described herein are well known. Thus, for the sake of brevity, many conventional implementation details are only briefly discussed or omitted entirely herein, without providing details of known systems and / or processes.

[0065] In some embodiments, various functions or operations may be performed at a given location and / or in conjunction with the operation of one or more devices or systems. In some embodiments, a portion of a given function or operation may be performed at a first device or location, and the remainder of the function or operation may be performed at one or more additional devices or locations.

[0066] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms unless the context clearly indicates otherwise. It will be further understood that the terms "comprises" and / or "comprising," when used herein, specify the presence of stated features, integers, steps, operations, elements, or components, or combinations thereof, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups thereof, or combinations thereof.

[0067] The corresponding structure, material, acts, and equivalents of all means or step-plus-function elements within the scope of the following claims are intended to include any structure, material, or acts for performing a function in combination with other claimed elements as specifically claimed. This disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosed form. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the disclosure. The embodiments were chosen and described to best explain the principles and practical applications of the disclosure and to enable others skilled in the art to appreciate the disclosure of various embodiments, including various modifications, as suitable for the particular use contemplated.

[0068] The diagrams shown herein are exemplary. There may be many variations of the diagrams or steps (or operations) described herein without departing from the spirit of the present disclosure. For example, operations may be performed in a different order, or operations may be added, deleted, or modified. Also, the term "coupled" refers to having a signal path between two elements, and does not imply a direct connection between elements with no intervening elements / connections between them. All of these variations are considered to be part of the present disclosure.

[0069] The following definitions and abbreviations are used in interpreting the claims and this specification. As used herein, the terms "comprises," "comprising," "includes," "including," "has," "having," "containing," "containing," or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a composition, mixture, process, method, article of manufacture, or device that includes a list of elements is not necessarily limited to only those elements and can include other elements not expressly listed or inherent in such composition, mixture, process, method, article of manufacture, or device.

[0070] Additionally, the term "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs. The terms "at least one" and "one or more" are understood to include any integer number greater than or equal to one (i.e., 1, 2, 3, 4, etc.). The term "plurality" is understood to include any integer number greater than or equal to two (i.e., 2, 3, 4, 5, etc.). The term "connected" can include both an indirect "connected" and a direct "connected."

[0071] The terms "about," "approximately," "approximately," and variations thereof are intended to include the degree of error associated with measurement of a particular quantity based on the equipment available at the time of filing this application. For example, "about" can include a range of ±8%, or 5%, or 2% of a given value.

[0072] The present invention may be a system, method, or computer program product, or a combination thereof, at any possible level of technical detail of integration. The computer program product may include one or more computer-readable storage media having computer-readable program instructions for causing a processor to perform aspects of the present invention.

[0073] A computer-readable storage medium may be a tangible device capable of retaining and storing instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves on which instructions are recorded, and any suitable combination thereof. As used herein, computer-readable storage media should not be construed as being ephemeral signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through fiber optic cable), or electrical signals transmitted over electrical wires.

[0074] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device, or can be downloaded to an external computer or external storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network can include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage on a computer-readable storage medium within the respective computing / processing device.

[0075] Computer-readable program instructions for carrying out the operations of the present invention may be source or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, integrated circuit configuration data, or procedural programming languages, such as object-oriented programming languages ​​like Smalltalk®, C++, and the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuitry to carry out aspects of the present invention.

[0076] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0077] These computer-readable program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus to create a machine, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for performing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may be stored on a computer-readable storage medium, capable of directing a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, such that the computer-readable storage medium on which the instructions are stored comprises an article of manufacture containing instructions implementing aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0078] The computer-readable program instructions may be loaded into a computer, other programmable data processing apparatus, or other device to cause the computer, other programmable apparatus, or other device to perform a series of operational steps to create a computer-implemented process, such that the instructions, which execute on the computer, other programmable apparatus, or other device, perform the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams.

[0079] The flowcharts 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 flowcharts or block diagrams may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing a specified logical function(s). In some alternative implementations, the functions shown in the blocks may be performed out of the order shown. 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 on the functionality involved. It should also be noted that each block in the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified function(s) or operation(s) or executes a combination of dedicated hardware instructions and computer instructions.

[0080] The description of various aspects of the present invention has been presented for purposes of illustration, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein has been selected to best explain the principles of the embodiments, practical applications or technical improvements to technology found in the market, or to enable others skilled in the art to understand the embodiments described herein. [Explanation of symbols]

[0081] 100 Computer Systems 101 processors 101a Central Processing Unit (CPU) 101b Central Processing Unit (CPU) 101c Central Processing Unit (CPU) 102 System Bus 103 System Memory 104 Read-Only Memory (ROM) 105 Random Access Memory (RAM) 106 Input / Output (I / O) Adapter 107 Communication Adapter 108 Hard Disk 110 Mass Storage 111 Software 112 Network 115 Display Adapter 116 Interface Adapter 119 Display 121 keyboard 122 Mouse 123 Speaker 200 Storage Area Networks (SAN) 210 Endpoint Devices 220 Endpoint Devices 225 links, connecting links, related links 230 Network Devices 402 Registration Request 404 Software Applications 406 memory 408 Endpoint Device Registration Database 422 Client Application 450 Congestion Event Notification, Notification about a congestion event 510 Notification Types 520 Network Identifier, Network ID 530 Physical / Logical Identifier, Physical ID / Logical ID

Claims

1. 1. A computer-implemented method for providing endpoint notification of storage area network congestion, comprising: registering one or more endpoint devices to receive notifications; storing entries in a database for the one or more registered endpoint devices, the entries including information indicating that the one or more endpoint devices are registered for notifications regarding hardware components within the storage area network, and the entries for at least one of the one or more endpoint devices having information about a particular blade server, zone, and switch as hardware components for identifying a congested segment; detecting a congestion event associated with a storage area network including the one or more endpoint devices; comparing information in the congestion event with information in the entry for the particular blade server, zone, and switch; sending a notification about the congestion event to the one or more endpoint devices registered for the notification if the information in the congestion event matches the information for the particular blade server, zone, and switch; A method comprising:

2. receiving, by a network device, a request for notification from the one or more endpoint devices, the request including one or more network identifiers of devices within the storage area network; storing, by the network device in response to receiving the request, the one or more network identifiers in a database; The method of claim 1 further comprising:

3. receiving, by a network device, a request for notification from the one or more endpoint devices, the request including one or more port identifiers of devices within the storage area network; storing, by the network device in response to receiving the request, the one or more port identifiers in a database; The method of claim 1 further comprising:

4. 4. The method of claim 1, wherein a network device is configured to register the one or more endpoint devices for use with a control unit port.

5. The method of claim 4 , wherein the network device is configured to allow the one or more endpoint devices to utilize the control unit port.

6. The method of any one of claims 1 to 5, wherein the notification is configured to be sent using a Common Information Model Object Manager (CIMOM).

7. a memory having computer readable program instructions; one or more processors for executing the computer-readable program instructions; Equipped with The computer readable program instructions include: registering one or more endpoint devices to receive notifications; storing entries in a database for the one or more registered endpoint devices, the entries including information indicating that the one or more endpoint devices are registered for notifications regarding hardware components within the storage area network, and the entries for at least one of the one or more endpoint devices having information about a particular blade server, zone, and switch as hardware components for identifying a congested segment; detecting a congestion event associated with a storage area network including the one or more endpoint devices; comparing information in the congestion event with information in the entry for the particular blade server, zone, and switch; sending a notification about the congestion event to the one or more endpoint devices registered for the notification if the information in the congestion event matches the information for the particular blade server, zone, and switch; and controlling the one or more processors to perform operations including:

8. receiving, by a network device, a request for notification from the one or more endpoint devices, the request including one or more network identifiers of devices within the storage area network; storing, by the network device in response to receiving the request, the one or more network identifiers in a database; The system of claim 7 further comprising:

9. receiving, by a network device, a request for notification from the one or more endpoint devices, the request including one or more port identifiers of devices within the storage area network; storing, by the network device in response to receiving the request, the one or more port identifiers in a database; The system of claim 7 further comprising:

10. 10. The system of claim 7, wherein a network device is configured to register the one or more endpoint devices for use with a control unit port.

11. The system of claim 10 , wherein the network device is configured to allow the one or more endpoint devices to utilize the control unit port.

12. The system of any one of claims 7 to 11, wherein the notification is configured to be sent using a Common Information Model Object Manager (CIMOM).

13. A computer program comprising computer readable program instructions that cause a computer to carry out the method of any one of claims 1 to 6.

14. A computer readable storage medium having stored thereon computer readable program instructions for causing a computer to carry out the method of any one of claims 1 to 6.

Citation Information

Patent Citations

  • Communication system, communication control method

    JP2006340182A

  • Device, its control method, and program

    JP2007293503A

  • Relay device, control method of relay device, and relay system

    JP2013197868A

  • Methods, systems, and apparatus for interconnecting Fibre Channel over Ethernet devices

    JP2014502126A

  • Limiting access to control units channel-connected to host computers through a FICON switch

    US20040249929A1