Buffer Profile Assignment Management Based on Peer-to-Peer Network Device Data

By maintaining the buffer profile table and peer network device table, and dynamically assigning buffer profiles and configuration parameters, the problem of time-consuming and automation challenges in the existing technology is solved, and dynamic buffer configuration in high-speed communication networks is realized, and the degree of automation of the system is improved.

CN116506382BActive Publication Date: 2025-06-13NVIDIA CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202211573851.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2022-01-26
Filing Date
2022-12-08
Publication Date
2025-06-13
Estimated Expiration
2042-12-08

AI Technical Summary

Technical Problem

In the prior art, network devices statically assign buffer profiles in high-speed communication networks, resulting in network administrators needing manual and time-consuming configurations. Each device requires static startup time configuration, and automation challenges are greater when the port has no function or deployment expansion.

Method used

By maintaining the buffer profile table and the peer network device table, the appropriate buffer profile and configuration parameters are assigned to the interface components dynamically based on the information with the peer network device, and dynamically implementing the buffer level dynamic allocation.

Benefits of technology

The dynamic buffer configuration of network devices in high-speed communication networks is realized, which reduces the manual configuration time of network administrators, improves the degree of system automation, and eliminates the need to re-provision buffer profiles when deploying expansions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116506382B_ABST
    Figure CN116506382B_ABST
Patent Text Reader

Abstract

The present disclosure relates to buffer profile assignment management based on peer network device data. A network device includes a first data structure storing a set of buffer profile types. Each buffer profile type is associated with one or more configuration parameters. The network device further includes a second data structure storing a set of peer device identifiers, wherein each peer device identifier in the set of peer device identifiers is associated with a buffer profile type. The network device includes a buffer management application for receiving first data associated with a first peer network device coupled to an interface component of the network device via a first link, determining that the first data matches a first peer device identifier stored in the second data structure, and assigning a first buffer profile type to the interface component of the network device, wherein the first buffer profile type is associated with the first peer device identifier in the second data structure.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] At least one embodiment relates to processing resources for implementing a high-speed communication network. For example, at least one embodiment relates to techniques for dynamically assigning buffer profiles and corresponding configuration parameters to allocate buffer levels to communication links associated with peer network devices. Background Art

[0002] A communication system may include multiple network devices configured to establish communication links via respective interface components (e.g., ports, queues in ports, priority groups, etc.). Conventional network devices can discover and connect to peer or neighboring network devices through the interface components. In a conventional network, a network device statically assigns a buffer profile (e.g., a buffer configuration applied to an interface component of the network device), which corresponds to each communication link between the interface component of the network device and the corresponding peer network device. The buffer profile defines the buffer configuration of the interface component (i.e., the communication endpoint) of the network device. For example, a buffer profile and a buffer configuration are assigned to allocate a buffer size or a buffer level to the communication link between the interface component of the network device and the discovered network device. The buffer profile may contain information about one or more configuration parameters, such as a minimum guaranteed threshold level, a sharing mode setting (e.g., static or dynamic), etc.

[0003] In a typical deployment, different interface components (e.g., different ports) require different levels of buffer allocation (i.e., different buffer sizes). The buffer level allocated on a port depends on the role of the port. For example, an uplink port in a network may require a larger buffer size to be allocated than a downlink port connected to a server, even in some cases where the speed of the uplink port matches the speed of the downlink port. In this regard, a group of ports with the same speed and similar roles (e.g., uplink ports) are configured with the same buffer profile.

[0004] However, the limitation of the current buffer assignment mode is that network administrators are forced to prepare static startup-time configurations for each device based on connection information, which is a time-consuming and manual-intensive activity. In addition, since the conventional buffer assignment is associated with a specific interface component (such as a specific port number), using different ports on a single device poses automation challenges even if there are available ports with the same capabilities in the system. Moreover, expanding the deployment to include additional downstream devices (such as servers) or adding additional uplinks requires re-provisioning buffer profiles for the newly added links. Brief Description of the Drawings

[0005] Various embodiments in accordance with the present disclosure will be described with reference to the accompanying drawings, wherein:

[0006] Figure 1 An example communication system in accordance with at least some embodiments is shown.

[0007] Figure 2 A block diagram of an exemplary communication system in accordance with at least some embodiments is shown, which includes a network device configured to discover and couple to one or more peer network devices according to a dynamically assigned buffer profile.

[0008] Figure 3 A block diagram of an example network device communicatively coupled to a peer network device via an interface component having a dynamically assigned buffer profile in accordance with at least some embodiments is shown.

[0009] Figure 4 An example peer network device table in accordance with embodiments of the present application in accordance with at least some embodiments is shown.

[0010] Figure 5 An example buffer profile table in accordance with at least some embodiments is shown.

[0011] Figure 6 A flowchart of a method for dynamically assigning a set of configuration parameters of an identified buffer profile to an interface component associated with a communication link to a peer network device based on data associated with the peer network device in accordance with at least some embodiments.

[0012] Figure 7 An example computer system including a wireless transceiver that includes a buffer management component in accordance with at least some embodiments is shown. Detailed Description

[0013] A typical communication system can statically assign a specific buffer profile based on the type of device to which the communication link is connected (e.g., spine device, host device, etc.). For example, all spine-connected links are assigned a first specific buffer profile. In another example, all host-connected links are statically assigned a second specific buffer profile. Thus, the buffer profile is statically assigned based on the nature of the corresponding link. Additionally, in traditional systems, the desired dynamic assignment of buffer profiles by network devices cannot be achieved through typical deployments that statically assign buffer profiles to specific interface components. Advantageously, aspects of the present disclosure are directed to a dynamic buffer profile assignment model. The dynamic buffer assignment causes buffer configurations to be assigned to interface components (e.g., ports, queues, priority groups, etc.) of a network device associated with a communication link to a discovered peer network device. Further advantages are achieved by determining a specific buffer profile from a set of different buffer profiles to be dynamically assigned to the interface component in view of information or data about the specific peer network device associated with the communication link.

[0014] Embodiments of the present application allow a buffer management component of a network device to generate and manage multiple different buffer profiles. Compared to typical systems in which a specific buffer profile is statically bound to each specific interface component of a network device, embodiments of the present application allow for the dynamic assignment of buffer profiles based on data associated with a peer network device.

[0015] In one embodiment, a network device maintains a first data structure (also referred to as a "buffer profile table") that stores a set of buffer profile types. In the first data structure, each buffer profile type is associated with one or more configuration parameters that can be used to configure an interface component associated with a communication link between the network device and a peer network device. In an embodiment, the network device maintains a second data structure (also referred to as a "peer network device identifier table") that stores a set of peer device identifiers. In the second data structure, each peer device identifier is associated with a buffer profile type from the set of buffer profile types stored in the first data structure.

[0016] According to an embodiment, a network device may discover a peer network device coupled to an interface component of the network device via a communication link. To determine a buffer profile for the interface component of the communication link, the network device determines information identifying the peer network device. The identified peer network device data is compared with at least a portion of a first data structure to determine a match. In an embodiment, the identified peer network device data is used to search a peer network device identifier field of the first data structure. Once a peer network device identifier in the first data structure is identified as matching the identified peer network device data, a buffer profile type associated with the peer device identifier is determined (e.g., buffer profile 1, buffer profile 2, buffer profile 3... buffer profile X).

[0017] In an embodiment, a second data structure is used to determine one or more configuration parameters associated with the identified buffer profile type. The buffer profile type and corresponding buffer configuration parameters are assigned to an interface component corresponding to the communication link with the identified peer network device. Advantageously, the network device may use the discovered peer network data to determine the type of the peer network device (e.g., spine device, host device, switch, router, storage device, etc.), and dynamically assign a buffer profile based on the type of the identified peer network device. In an embodiment, the network device may employ a first data structure, and the second data structure may be used to dynamically identify and assign a buffer profile to an interface component associated with a connection to the discovered peer network device.

[0018] Figure 1 An example communication system 100 is shown in accordance with at least one example embodiment. The system 100 includes a network device 110, a communication network 108 including a communication channel 109, and a discoverable peer network device 130. In at least one exemplary embodiment, the network device 110 and 130 correspond to one or more of any type of network device, such as a spine-connected device, a host-connected device, a router, a switch, a storage device, a personal computer (PC), a laptop, a tablet, a smartphone, a server, a collection of servers, or the like. In some embodiments, the network device 110 and 130 may correspond to any suitable type of device that communicates with other devices also connected to a common type of communication network 108. According to an embodiment, a receiver 104 of the network device 110 or 130 may correspond to a graphics processing unit (GPU), a switch (e.g., a high-speed network switch), a network adapter, a central processing unit (CPU), etc. As another specific but non-limiting example, the network device 110 and 130 may correspond to a server that provides information resources, services, and / or applications to user devices, client devices, or other hosts in the system 100.

[0019] Examples of communication networks 108 that can be used to connect devices 104 and 130 include Internet Protocol (IP) networks, Ethernet networks, InfiniBand (IB) networks, Fibre Channel networks, the Internet, cellular communication networks, wireless communication networks, combinations thereof (e.g., Fibre Channel over Ethernet), variations and / or analogs thereof. In a specific but non-limiting example, communication network 108 is a network capable of transmitting data between devices 104 and 130 using data signals (e.g., digital, optical, wireless signals). Communication network 108 may employ a communication protocol, such as the Link Layer Discovery Protocol (LLDP) or other suitable protocols.

[0020] Device 104 includes a transceiver 116 for transmitting and receiving signals, e.g., data signals. The data signal can be a digital signal or an optical signal modulated with data or other signals suitable for carrying data.

[0021] Transceiver 116 may include a digital data source 120, a transmitter 102, a receiver 104, and processing circuitry 132 for controlling transceiver 116. Digital data generator 120 may include suitable hardware and / or software for outputting data in digital format (e.g., binary code and / or thermometer code). The digital data output by digital data source 120 may be retrieved from a memory (not shown) or generated based on an input (e.g., user input).

[0022] Transmitter 124 includes suitable software and / or hardware for receiving digital data from digital data source 120 and outputting a data signal based on the digital data for transmission to receiver 104 of peer network device 130 via communication network 108. Network devices 110, 130 may include suitable hardware and / or software for receiving signals (e.g., data signals from communication network 108). For example, network device 110 may include components (e.g., buffer management component 112) that identify data associated with a discovered peer network device coupled to the network device via an interface component (e.g., port, queue, priority group, etc.) and assign a buffer profile to the interface component based on the peer network device data, where the buffer profile includes configuration parameters for buffer levels for establishing a communication link with the peer network device, as described in detail below with respect to Figures 2 - 7 as described in detail.

[0023] Processing circuitry 132 may include software, hardware, or a combination thereof. For example, processing circuitry 132 may include a memory (which includes executable instructions) and a processor (e.g., a microprocessor) that executes the instructions on the memory. The memory may correspond to any suitable type of storage device or a collection of storage devices configured to store instructions. Non-limiting examples of suitable storage devices that may be used include flash memory, random access memory (RAM), read-only memory (ROM), variations thereof, combinations thereof, or the like. In some embodiments, the memory and the processor may be integrated into a common device (e.g., a microprocessor may include integrated memory). Additionally or alternatively, processing circuitry 132 may include hardware such as an application specific integrated circuit (ASIC). Other non-limiting examples of processing circuitry 132 include an integrated circuit (IC) chip, a central processing unit (CPU), a general processing unit (GPU), a microprocessor, a field programmable gate array (FPGA), a collection of logic gates or transistors, resistors, capacitors, inductors, diodes, etc. Part or all of processing circuitry 132 may be provided on a printed circuit board (PCB) or a collection of PCBs. It should be understood that any suitable type of electrical component or collection of electrical components may be suitable for incorporation into processing circuitry 132. Processing circuitry 132 may send and / or receive signals to other elements of transceiver 116 to control the overall operation of transceiver 116.

[0024] Transceiver 116 or selected elements of transceiver 116 may take the form of a pluggable card or a controller of device 110. For example, transceiver 116 or selected elements of transceiver 116 may be implemented on a network interface card (NIC).

[0025] Device 130 may include a transceiver 136 for sending and receiving signals (e.g., data signals over channel 109 of communication network 108). The same or similar structure of transceiver 116 may apply to transceiver 136, and thus, the structure of transceiver 136 is not described separately.

[0026] Although not explicitly shown, it should be understood that devices 110 and 130 and transceivers 116 and 120 may include other processing devices, storage devices, and / or communication interfaces typically associated with computing tasks, such as sending and receiving data.

[0027] Figure 2 A block diagram of an exemplary communication system 200 is shown, which includes a network device 210 configured to discover and couple with one or more peer network devices (e.g., peer network device 1, peer network device 2, peer network device 3... peer network device N) via a communication network 208. In an embodiment, the communication link between network device 210 and the corresponding peer network device may be established via an interface component in a set of interface components 216.

[0028] In an embodiment, network device 210 may include a buffer management component 212 and a peer discovery component 214 operatively coupled to interface component 216. In an embodiment, the peer discovery component 214 is an application executable by the network device 210 to discover new peer network devices, collect data associated with the new peer network devices, and provide peer network device data to the buffer management component 212. In an embodiment, the peer discovery component 214 may be configured according to an applicable communication protocol (e.g., the LLDP protocol) to identify peer network device data. For example, the peer discovery component 214 identifies and collects LLDP data describing other discovered peer network devices, such as type-length-value (TLV) information elements (e.g., variable length strings in a standardized format). In an embodiment, the LLDP protocol includes transmitting advertisements as data packets (e.g., LLDP data units) and includes TLV elements that contain specific types of information about the peer network device or interface component transmitting the data, neighbor or peer name field data, port identification, and the like.

[0029] In Figure 2 the example shown, the peer discovery component 214 discovers a new communication link between interface component 1 of network device 210 and peer network device 1. The peer discovery component 214 identifies data associated with peer network device 1 and provides that data (i.e., peer network device 1 data) to the buffer management component 312. In an embodiment, the data of peer network device 1 may be identified according to a suitable communication protocol (e.g., the LLDP protocol). In an embodiment, the buffer management component receives a new peer or neighbor communication from the peer discovery component 314 that includes peer network device data. In Figure 2 the example shown, a new peer network discovery process is performed by the peer discovery component 214 to identify peer network device data associated with peer network device 2, peer network device 3... peer network device.

[0030] In an embodiment, the buffer management component 212 uses the corresponding peer network device data to identify a corresponding buffer profile (e.g., buffer profile 1, buffer profile 2, buffer profile 3... buffer profile X) of a set of buffer profiles for assignment to respective interface components (e.g., ports, queues, priority groups, etc.) associated with the communication link to the corresponding peer network device. In Figure 2In the example shown, the buffer management component 212 assigns buffer profile 3 to interface component 1 based on the data of peer network device 1. Additionally, the buffer management component 212 assigns buffer profile 1 to interface component 2 based on peer network device 2 data, the buffer management component 212 assigns buffer profile X to interface component 3 based on peer network device 3 data, and the buffer management component 212 assigns buffer profile 1 to interface component Y based on peer network device N data. The buffer management component 212 maintains a set of different buffer profiles (e.g., buffer profile 1, buffer profile 2, buffer profile 3... buffer profile X), and dynamically assigns a specific buffer profile and its corresponding set of configuration parameters to each interface component associated with the communication link to a peer network device. Advantageously, the buffer management component 212 determines which buffer profile to assign to the corresponding interface component coupled to the peer network device based on the data associated with that specific peer network device. Thus, the buffer management component 212 assigns a selected buffer profile to the interface component based on peer network device data, providing flexibility for the management of the network and eliminating the need for a user to statically assign buffer profiles when the deployment of network devices is scaled up.

[0031] Figure 3 FIG. shows a block diagram of an example network device 310 communicatively coupled to a peer network device 330 in accordance with an embodiment of the present application. As shown, network device 310 includes a buffer management component 312, a peer discovery component 314, and a set of one or more interface components 316.

[0032] In an embodiment, the buffer management component 312 maintains a first data structure (buffer profile table 313-A) and a second data structure (peer network device table 313-B) for determining the buffer profile for the interface component 316 associated with the communication link to the peer network device 330. In an embodiment, the buffer profile table 313-A stores a set of buffer profile types. Each buffer profile type is associated with one or more configuration parameters that can be used to configure the buffer associated with the interface component corresponding to the communication link between the network device and the peer network device (e.g., peer network device 330). In an embodiment, each buffer profile (e.g., profile 1, profile 2, profile 3... profile X) includes a set of one or more buffer configuration parameters.

[0033] In an embodiment, the peer network device table 313-B includes peer network device data, which includes corresponding peer network device identifiers associated with corresponding buffer profile types. In an embodiment, the peer discovery component 314 identifies and collects peer network device data 320 from the interface component 316. The peer discovery component 314 provides at least a portion of the peer network device data 320 to the buffer management component 312. In an embodiment, the peer discovery component 314 is an application that employs a communication protocol (e.g., the LLDP protocol) to discover new peer network devices (e.g., peer network device 320) and provide a notification to the buffer management component 312, which includes at least a portion of the peer network device data.

[0034] In an embodiment, in response to receiving a notification including at least a portion of the peer network device data, the buffer management component 312 compares the peer network device data with the data stored in the peer network device table 413-B. In an embodiment, the buffer management component 312 performs the comparison to determine whether an entry in the peer network device table 413-B matches the peer network device data. If a match is determined, the buffer management component 312 determines the buffer profile corresponding to the matching peer network device data.

[0035] Figure 4 An example of a peer network device table 413-B according to an embodiment of the present application is shown. As Figure 4 shown, the peer network device table 413-B includes a set of entries corresponding to different peer network device types defined by peer network device identifiers. In the example shown, each of the set of entries in the peer network device table 413-B includes a set of values corresponding to a peer network device data field (e.g., a neighbor field, a Regex pattern that should match on the field), a corresponding buffer profile type (e.g., profile 1, profile 2, profile 3... profile X), and a specific object (queue / port, priority group, port-level buffer configuration) in the port with which the buffer profile needs to be associated. For example, the first entry in the peer network device table 413-B includes a first value (i.e., "SysName") for the neighbor field, a second value (i.e., "^Spine*") for the regex pattern field that matches in the SysName field, a third value (i.e., "3") for the queue / port field, a fourth value (i.e., "-" or empty) for the priority group field, a fifth value (i.e., "false") for the port-level buffer configuration field, and a sixth value (i.e., "profile 1") for the buffer profile field. In an embodiment, the peer network device table 413-B may have one or more additional fields and values for each entry. Note that the peer network device table 413-B may have more than Figure 4has one or more fields missing from the example data structure shown.

[0036] In an embodiment, one or more fields of the peer network device table 413-B represent peer network device identifiers. In an embodiment, the discovered peer network device data is used to search or query the peer network device identifier field to determine if an entry stored in the peer network device table 413-B matches.

[0037] Referring to Figure 4 the example shown, the buffer management component (e.g., Figure 3 the buffer management component 312) searches or queries one or more fields of the peer network device table 413-B to determine a match. In the example, the buffer management component searches for a regex pattern on the neighboring fields specified in the first value, and if the neighboring matches the specific pattern on the specified neighboring fields, the buffer profile associated with the matching entry is used to configure the corresponding interface component associated with the queue or priority group or port-level buffer configuration. For example, the discovered peer network device data SysName (e.g., neighboring field value) can be compared with the regex pattern field to determine the role or type of the peer network device. In an embodiment, one or more other fields of the peer network device table can be used to identify the role of the peer network device and the corresponding buffer profile type to be assigned to the interface component.

[0038] For example, the regex pattern field can include a value that is a character sequence. Similar peer network devices have a common character sequence in the regex pattern. For example, all spine devices can have a common naming convention, such that the first spine device can have a coinciding pattern value of "Spine00100X", the second spine device can have a coinciding pattern value of "Spine00200X", and so on.

[0039] Referring to Figure 3 , in an embodiment, the peer network device table 313-B can include one or more customized or user-defined TLV fields (also referred to as "vendor-specific fields") that can be compared with the peer network device data 320 to identify a match. For example, the user-defined field can be customized as a "device type" field that includes values corresponding to the peer network device type. In an embodiment, the device type field can replace Figure 4One or more of the "Proximity Field" and "regex Pattern Field" in the Peer Network Device Table 413-B. In an embodiment, the LLDP protocol allows setting vendor-specific TLV fields and entries. In an embodiment, since the standard LLDP protocol does not include a "Device Type" field or value, a user-defined "Device Type" field can be generated and used in the Peer Network Device Table 313-B such that the user-defined field is searched for matching purposes.

[0040] Referring to Figure 3 , in an embodiment, after determining the buffer profile type corresponding to the matching entry in the Peer Network Device Table 313-B, the buffer management component 312 uses the Buffer Profile Table 313-A to identify one or more configuration parameters corresponding to the identified buffer profile. As described above, the Buffer Profile Table 313-A includes a set of entries, where each entry includes a buffer profile type (e.g., Profile 1, Profile 2, Profile 3... Profile X) and a corresponding set of one or more buffer configuration parameters.

[0041] Figure 5 Shows an example of the Buffer Profile Table 513-A according to an embodiment of the present application. As Figure 5 shown, the Buffer Profile Table 513-A includes a set of entries corresponding to different buffer profile types. In the illustrated embodiment, each entry of the set of entries of the Buffer Profile Table 513-A includes a set of buffer configuration parameter values corresponding to different buffer configuration parameter fields (e.g., minimum buffer percentage, sharing mode, sharing threshold, Xon limit, Xoff limit).

[0042] In an embodiment, a set of buffer configuration parameters may include a minimum buffer percentage, which represents the minimum percentage of the overall buffer amount to be allocated to the interface component associated with the peer network device. In an embodiment, a set of buffer configuration parameters may include a sharing mode type representing one of a static buffer configuration mode or a dynamic buffer configuration mode. The static configuration mode includes statically allocating a buffer size (e.g., X kbs). The dynamic configuration mode includes allocating a minimum threshold buffer size and sharing the allocated buffer with other peer network devices in the system. For example, in the dynamic sharing mode, alpha network devices are identified and responsible for determining how much of the available buffer can be used by a specific interface component (e.g., port, queue in a port, etc.). It should be noted that the dynamic sharing mode does not include the dynamic allocation of buffer profiles as performed by the buffer management component in the embodiments of the present application. Instead, the dynamic sharing mode relates to the way in which interface components share the available buffer with other peer network devices.

[0043] In an embodiment, referring to Figure 5, the configuration parameter set may include a shared threshold amount or a level representing the threshold level of the allocated buffer that can be shared by the corresponding interface component. In an embodiment, a set of configuration parameters may include a Xon limit and a Xoff limit. In an embodiment, when the ingress queue of the interface component is below the Xon limit (e.g., a minimum or lower threshold level), a pause frame may be generated. In an embodiment, when the buffer limit at the ingress interface component reaches or exceeds the Xoff limit associated with the interface component (e.g., a maximum or upper threshold level), a pause frame may be generated. Note that any combination of buffer configuration parameters may be stored in association with the buffer profile types in the buffer profile table 513-A.

[0044] In an embodiment, the buffer profile table 513-A includes corresponding entries for assignable buffer profiles, where each entry includes a set of one or more buffer configuration parameters to be assigned to the corresponding interface component associated with the peer network device. For example, the first entry in the buffer profile table 513A includes a first value for the buffer profile field (i.e., "Profile 1"), a second value for the minimum buffer percentage field (i.e., "8"), a third value for the sharing mode (i.e., "Dynamic"), a fourth value for the shared threshold field (i.e., "8%"), a fifth value for the Xon limit field (i.e., "20"), and a sixth value for the Xoff limit field (i.e., "10"). In an embodiment, a set of values corresponding to the buffer configuration parameter fields may be used to configure the interface component associated with the peer network device. In an embodiment, the buffer profile table 513-A may have one or more additional fields and values for each entry. Note that the buffer profile table 513-A may have one or more fewer fields than Figure 5 the fields shown in the example data structure of.

[0045] As Figure 5 shown in the exemplary buffer profile table 513-A of, after identifying the buffer profile to be dynamically assigned, the buffer management component may perform a lookup operation using the buffer profile table 513-B to identify one or more buffer configuration parameters and values to be assigned to the interface component of the discovered peer network device.

[0046] In an embodiment, with reference to Figure 3 , the buffer profile table 313-A and the peer network device table 313-B and the corresponding data fields and values may be combined into a single data structure. For example, the buffer management component 312 may maintain a data structure that includes the fields of the peer network device table and the buffer profile table.

[0047] Figure 6is a flowchart of a method 600 for dynamically assigning a set of configuration parameters of an identified buffer profile to an interface component associated with a communication link of a peer network device based on data associated with the peer network device. The method 600 may be executed by processing logic including hardware, software, firmware, or any combination thereof. In at least one embodiment, the method 600 is performed by Figure 1 the buffer management component 112 of Figure 2 the buffer management component 212 of or Figure 3 the buffer management component 312 of. In at least one embodiment, the method 600 is performed by the buffer management component in accordance with the instructions of control logic, which is processing logic in some embodiments. According to an embodiment, the method 600 may be performed by a network device within a network communication system including one or more discoverable peer network devices according to an embodiment of the present application. Although shown in a particular order or sequence, the order of the processes may be modified unless otherwise specified. Accordingly, the illustrated embodiments should be understood only as examples, and the illustrated processes may be performed in a different order, and some processes may be performed in parallel. Additionally, one or more processes may be omitted in different embodiments. Accordingly, not all processes are required in every embodiment. Other process flows are possible.

[0048] In operation 610, the processing logic stores a first data structure including a set of buffer profile types, where each buffer profile type is associated with one or more configuration parameters. In an embodiment, the processing logic of the buffer management component stores and maintains the first data structure (e.g., Figure 3 the buffer profile table 313-A of Figure 5 the buffer profile table 515-A of), which includes a series of fields and corresponding values associated with buffer configuration parameters related to each respective buffer profile.

[0049] In operation 620, the processing logic stores a second data structure including a set of peer device identifiers, where each peer device identifier of the set of peer device identifiers is associated with a buffer profile type of the set of buffer profile types. In one embodiment, the processing logic of the buffer management component stores and maintains the second data structure (e.g., Figure 3 the peer network device table 313-B of Figure 4 the peer network device table 415-B of), which includes a series of fields and corresponding values associated with one or more peer network devices and peer network device types. In an embodiment, the second data structure includes one or more searchable fields and values that can be used to identify peer network device types (e.g., peer device identifiers) and corresponding buffer profile types.

[0050] At operation 630, the processing logic discovers a first peer network device coupled to a first interface component of the network device via a first link. In an embodiment, the processing logic may include a peer discovery component that is coupled to the network device via an interface component (e.g., the first interface component) of the network device over a communication link (e.g., the first link). For example, referring to Figure 2 , the first peer network device discovered is peer network device 3, which is discovered via interface component 3 of network device 210.

[0051] At operation 640, the processing logic identifies first data associated with the first peer network device. In an embodiment, the first data associated with the first peer network device may be collected and identified during discovery of the first peer network device. The first data may be any data associated with the first peer network device that can be used for comparison with data stored in a second data structure. For example, if the network device uses the LLDP communication protocol, the first data may be LLDP-based descriptive information associated with the discovered peer network device. In an embodiment, the first data may include one or more user-defined data values for comparison with a second data structure that includes one or more user-defined data fields (e.g., a device type field).

[0052] At operation 650, the processing logic determines that the first data matches a first peer device identifier in a set of peer device identifiers in the second data structure. In an embodiment, as described above, the processing logic of the buffer management component may perform a lookup operation or a search on one or more data fields of the second data structure to determine whether the first data associated with the first peer network device matches an entry in the second data structure. For example, the processing logic may search a regex pattern field of the second data structure to determine whether a match is found for a Neighbor field specified in the second data structure on the first data. In another example, the processing logic may search user-defined fields of the second data structure to determine whether a match with the first data is found. In an embodiment, if it is determined in operation 650 that no match is found between the first data and an entry in the second data structure, the processing logic may assign a default buffer profile to the first peer network device.

[0053] At operation 660, the processing logic determines a first set of configuration parameters corresponding to a first buffer profile type associated with the first peer device identifier using a first data structure. In an embodiment, the processing logic performs a lookup operation on the first data structure to identify a set of configuration parameters for a buffer profile type (e.g., the first buffer profile type) associated with a matching entry (e.g., a matching peer network device type) in the second data structure.

[0054] At operation 670, the processing logic assigns a first set of configuration parameters of the first buffer profile type to a first interface component (i.e., interface component information) of a network device specified in a queue or priority group or port level of a second data structure. In an embodiment, the set of configuration parameters is assigned dynamically to define a buffer for the interface component corresponding to a communication link with a peer network device. For example, the configuration parameters are assigned and applied to establish a buffer size for the interface component associated with a communication link with a peer network device.

[0055] Figure 7 FIG. 700 shows a computer system in accordance with at least one embodiment. In at least one embodiment, computer system 700 may be a system, SOC, or some combination of interconnected devices and components. In at least one embodiment, computer system 700 is formed by a processor 702, which may include execution units to execute instructions. In at least one embodiment, computer system 700 may include, but is not limited to, components such as processor 702 to employ execution units including logic to execute algorithms for processing data. In at least one embodiment, computer system 700 may include a processor, such as a processor family, XeonTM, XScaleTM, and / or StrongARMTM, or a microprocessor, available from Intel Corporation of Santa Clara, Calif., although other systems (including PCs, engineering workstations, set-top boxes, etc. having other microprocessors) may also be used. In at least one embodiment, computer system 700 may execute a version of the WINDOWS operating system provided by Microsoft Corporation of Redmond, Wash., although other operating systems (such as UNIX and Linux), embedded software, and / or graphical user interfaces may also be used.

[0056] In at least one embodiment, the computer system 700 can be used in other devices such as handheld devices and embedded applications. Some examples of handheld devices include cellular telephones, Internet Protocol devices, digital cameras, personal digital assistants ("PDAs"), and handheld PCs. In at least one embodiment, embedded applications can include microcontrollers, digital signal processors (DSPs), system-on-chips (SoCs), network computers ("NetPCs"), set-top boxes, network hubs, wide area network ("WAN") switches, or any other system that can execute one or more instructions. In an embodiment, the computer system 700 can be used in devices such as graphics processing units (GPUs), network adapters, central processing units, and devices such as switches (e.g., high-speed direct GPU-to-GPU interconnects such as NVIDIA GH100 NVLINK or NVIDIA Quantum 2 64-port InfiniBand NDR switches).

[0057] In at least one embodiment, the computer system 700 can include, but is not limited to, a processor 702, which can include, but is not limited to, one or more execution units 707, which can be configured to execute Compute Unified Device Architecture ("CUDA")( developed by NVIDIA Corporation of Santa Clara, California) programs. In at least one embodiment, a CUDA program is at least a portion of a software application written in the CUDA programming language. In at least one embodiment, the computer system 700 is a single-processor desktop or server system. In at least one embodiment, the computer system 700 can be a multi-processor system. In at least one embodiment, the processor 702 can include, but is not limited to, a CISC microprocessor, a RISC microprocessor, a VLIW microprocessor, a processor implementing an instruction set combination, or any other processor device such as a digital signal processor, etc. In at least one embodiment, the processor 702 can be coupled to a processor bus 710, which can transfer data signals between the processor 702 and other components of the computer system 700.

[0058] In at least one embodiment, the processor 702 can include, but is not limited to, a level 1 ("L1") internal cache memory ("cache") 704. In at least one embodiment, the processor 702 can have a single internal cache or multiple levels of internal caches. In at least one embodiment, the cache memory can reside external to the processor 702. In at least one embodiment, the processor 702 can also include a combination of internal and external caches. In at least one embodiment, the register file 706 can store different types of data in various registers, including but not limited to integer registers, floating-point registers, status registers, and instruction pointer registers.

[0059] In at least one embodiment, an execution unit 708, including but not limited to logic for performing integer and floating point operations, is also located in the processor 702. The processor 702 may also include a microcode (“ucode”) read only memory (“ROM”) for storing microcode for certain macroinstructions. In at least one embodiment, the execution unit 708 may include logic for processing a packet instruction set 709. In at least one embodiment, by including the packet instruction set 709 in the instruction set of a general purpose processor and the associated circuitry for executing the instructions, operations used by many multimedia applications can be performed using packet data in the general purpose processor 702. In at least one embodiment, operations on packet data can be performed by using the full width of the processor's data bus to accelerate and more efficiently execute many multimedia applications, which may not require transferring smaller data units on the processor's data bus to perform one or more operations on one data element at a time.

[0060] In at least one embodiment, the execution unit 708 may also be used in microcontrollers, embedded processors, graphics devices, DSPs, and other types of logic circuits. In at least one embodiment, the computer system 700 may include but not be limited to a memory 720. In at least one embodiment, the memory 720 may be implemented as a DRAM device, an SRAM device, a flash memory device, or other storage devices. The memory 720 may store instructions 719 and / or data 721 represented by data signals that may be executed by the processor 702.

[0061] In at least one embodiment, a system logic chip may be coupled to the processor bus 710 and the memory 720. In at least one embodiment, the system logic chip may include but not be limited to a memory controller hub (“MCH”) 716, and the processor 702 may communicate with the MCH 716 via the processor bus 710. In at least one embodiment, the MCH 716 may provide a high bandwidth memory path 718 to the memory 720 for instruction and data storage and for storage of graphics commands, data, and textures. In at least one embodiment, the MCH 716 may initiate data signals among the processor 702, the memory 720, and other components in the computer system 700, and bridge data signals among the processor bus 710, the memory 720, and the system I / O 722. In at least one embodiment, the system logic chip may provide a graphics port for coupling to a graphics controller. In at least one embodiment, the MCH 716 may be coupled to the memory 720 via the high bandwidth memory path 718, and a graphics / video card 812 may be coupled to the MCH 716 via an Accelerated Graphics Port (“AGP”) interconnect 714.

[0062] In at least one embodiment, computer system 700 may use system I / O 722, which is a proprietary hub interface bus, to couple MCH 716 to an I / O controller hub (“ICH”) 730. In at least one embodiment, ICH 730 may provide a direct connection to certain I / O devices via a local I / O bus. In at least one embodiment, the local I / O bus may include, but is not limited to, a high-speed I / O bus for connecting peripheral devices to memory 720, the chipset, and processor 702. Examples may include, but are not limited to, audio controller 729, firmware hub (“Flash BIOS”) 728, wireless transceiver 726, data storage 724, legacy I / O controller 723 including user input and keyboard interface 725, serial expansion port 727 (e.g., USB and network controller 734. Data storage 724 may include a hard disk drive, floppy disk drive, CD-ROM device, flash device, or other mass storage device. In an embodiment, wireless transceiver 726 includes buffer management component 712 (e.g., Figure 1 , Figure 2 and Figure 3 the buffer management components 112, 212, and 312 respectively shown in

[0063] In at least one embodiment, Figure 7 a system including interconnected hardware devices or “chips” is shown. In at least one embodiment, Figure 7 a SoC may be shown. In at least one embodiment, Figure 7 the devices shown in

[0064] may be interconnected using a proprietary interconnect, a standardized interconnect (e.g., PCIe), or some combination thereof. In at least one embodiment, one or more components of system 700 are interconnected using a Compute Express Link (CXL) interconnect.

[0065] Unless otherwise specified or clearly inconsistent with the context, in the context of describing the disclosed embodiments (especially in the context of the appended claims), the use of the terms "a", "an", "the", and similar referents should be construed to cover both the singular and the plural, rather than as a definition of the terms. Unless otherwise specified, the terms "comprising", "having", "including", and "containing" should be construed as open-ended terms (meaning "including but not limited to"). The term "connected" (when not modified refers to a physical connection) should be construed to mean included in whole or in part, attached to, or joined together, even if there are some intervening elements. Unless otherwise indicated herein, references to numerical ranges in this document are only intended to be used as a shorthand method for separately referring to each individual value falling within the range, and each individual value is incorporated into the specification as if it were recited individually herein. In at least one embodiment, unless otherwise indicated or inconsistent with the context, the use of the term "set" (e.g., "set of items") or "subset" should be construed to mean a non-empty set including one or more members. Further, unless otherwise indicated or inconsistent with the context, a "subset" of a corresponding set does not necessarily mean a proper subset of the corresponding set, but rather the subset and the corresponding set can be equal.

[0066] Unless otherwise explicitly indicated or clearly inconsistent with the context, conjunctive phrases such as "at least one of A, B, and C" or "at least one of A, B, and C" are understood in the context to generally be used to denote items, clauses, etc., which can be A or B or C, or any non-empty subset of the set of A and B and C. For example, in an illustrative example of a set with three members, the conjunctive phrases "at least one of A, B, and C" and "at least one of A, B, and C" refer to any of the following sets: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Thus, such conjunctive language is generally not intended to imply that certain embodiments require the presence of at least one of A, at least one of B, and at least one of C. Additionally, unless otherwise specified or inconsistent with the context, the term "plurality" denotes a plural state (e.g., "a plurality of items" means multiple items). In at least one embodiment, the number of items in a plurality of items is at least two, but can be more if explicitly indicated or indicated by the context. Further, unless otherwise specified or clear from the context, the phrase "based on" means "at least partially based on" rather than "only based on".

[0067] Unless otherwise indicated herein or clearly contradicted by context, the operations of the processes described herein may be performed in any suitable order. In at least one embodiment, processes such as those described herein (or variations and / or combinations thereof) are performed under the control of one or more computer systems configured with executable instructions and are implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) that execute jointly on one or more processors by hardware or a combination thereof. In at least one embodiment, the code is stored, for example, in the form of a computer program on a computer-readable storage medium that includes multiple instructions executable by one or more processors. In at least one embodiment, the computer-readable storage medium is a non-transitory computer-readable storage medium that excludes transitory signals (e.g., propagated transient electrical or electromagnetic transmissions), but includes non-transitory data storage circuits (e.g., buffers, caches, and queues). In at least one embodiment, the code (e.g., executable code or source code) is stored on a set of one or more non-transitory computer-readable storage media (or other memory for storing executable instructions) on which executable instructions are stored, which when executed by one or more processors of a computer system (i.e., as a result of being executed) cause the computer system to perform the operations described herein. In at least one embodiment, a set of non-transitory computer-readable storage media includes multiple non-transitory computer-readable storage media, and one or more of the individual non-transitory storage media in the multiple non-transitory computer-readable storage media lack all of the code, but the multiple non-transitory computer-readable storage media together store all of the code. In at least one embodiment, the executable instructions are executed such that different instructions are executed by different processors.

[0068] Thus, in at least one embodiment, a computer system is configured to implement one or more services that perform, individually or jointly, the operations of the processes described herein, and such a computer system is configured with suitable hardware and / or software enabling the implementation of the operations. Additionally, a computer system implementing at least one embodiment of the present disclosure is a single device, and in another embodiment is a distributed computer system that includes multiple devices operating in different ways such that the distributed computer system performs the operations described herein and such that a single device does not perform all of the operations.

[0069] Any and all uses of examples or exemplary language (e.g., "such as") provided herein are merely intended to better illustrate embodiments of the present disclosure and do not impose a limitation on the scope of the disclosure unless otherwise claimed. No language in the specification should be construed as indicating that any non-claimed element is essential for the practice of the disclosure.

[0070] All references cited herein, including publications, patent applications, and patents, are incorporated herein by reference to the extent as if each reference were individually and specifically indicated to be incorporated by reference and its entire content were set forth herein.

[0071] In the specification and claims, the terms "coupled" and "connected" and their derivatives may be used. It should be understood that these terms are not necessarily intended as synonyms for each other. Instead, in a particular example, "connected" or "coupled" may be used to indicate that two or more elements are in direct or indirect physical or electrical contact with each other. "Coupled" may also mean that two or more elements are not in direct contact with each other, but still cooperate or interact with each other.

[0072] Unless otherwise explicitly stated, it is understood that throughout the specification, terms such as "processing", "computing", "calculating", "determining", etc., refer to actions and / or processes of a computer or computing system or similar electronic computing device that processes and / or transforms data represented as a physical quantity (such as an electron) in the registers and / or memory of the computing system into other data represented as a physical quantity in the memory, registers, or other such information storage, transmission, or display devices of the computing system.

[0073] In a similar manner, the term "processor" may refer to any device or portion of a memory that processes electronic data from registers and / or memory and transforms that electronic data into other electronic data that may be stored in the registers and / or memory. As a non-limiting example, a "processor" may be a network device or a MACsee device. A "computing platform" may include one or more processors. As used herein, a "software" process may include, for example, software and / or hardware entities that perform work over time, such as tasks, threads, and intelligent agents. Similarly, each process may refer to multiple processes that execute instructions sequentially or in parallel, continuously or intermittently. In at least one embodiment, the terms "system" and "method" may be used interchangeably herein, provided that a system can embody one or more methods and a method can be considered a system.

[0074] In this document, reference may be made to obtaining, acquiring, receiving, or inputting analog or digital data into a subsystem, computer system, or computer-implemented machine. In at least one embodiment, the process of obtaining, acquiring, receiving, or inputting analog and digital data may be accomplished in a variety of ways, such as by receiving data as an argument to a function call or a call to an application programming interface. In at least one embodiment, the process of obtaining, acquiring, receiving, or inputting analog or digital data may be accomplished by transmitting data via a serial or parallel interface. In at least one embodiment, the process of obtaining, acquiring, receiving, or inputting analog or digital data may be accomplished by transmitting data from a providing entity to an acquiring entity via a computer network. In at least one embodiment, reference may also be made to providing, outputting, conveying, sending, or presenting analog or digital data. In various examples, the process of providing, outputting, conveying, sending, or presenting analog or digital data may be implemented by transmitting the data as an input or output argument to a function call, an application programming interface, or an interprocess communication mechanism.

[0075] Although the description provided herein sets forth example embodiments of the described technology, other architectures may be used to implement the described functionality and are intended to fall within the scope of the present disclosure. Additionally, although specific assignments of responsibilities are defined above for purposes of description, the various functions and responsibilities may be assigned and divided in different ways depending on the circumstances.

[0076] Furthermore, although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter claimed in the appended claims need not be limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claims.

Claims

1. A network device, comprising: A first data structure that stores a set of buffer profile types, where each buffer profile type is associated with one or more configuration parameters; A second data structure that stores a set of peer device identifiers, where each peer device identifier in the set of peer device identifiers is associated with a buffer profile type in the set of buffer profile types; and A processing device for executing a buffer management application for: Receiving first data associated with a first peer network device coupled to an interface component of the network device via a first link; Determining that the first data matches a first peer device identifier stored in the second data structure; and Assigning a first buffer profile type to the interface component of the network device, where the first buffer profile type is associated with the first peer device identifier in the second data structure.

2. The network device according to claim 1, wherein the one or more configuration parameters include at least one of a minimum guaranteed threshold level, a sharing mode type, an endpoint buffer upper limit, or an endpoint buffer lower limit.

3. The network device according to claim 1, wherein the interface component includes at least one of a port, a queue, or a priority group.

4. The network device according to claim 1, the buffer management application is further configured to: Use the first data structure to identify a first set of configuration parameters associated with the first buffer profile type; and Configure the interface component according to the first set of configuration parameters associated with the first buffer profile type.

5. The network device according to claim 1, wherein the set of peer device identifiers includes identifiers associated with the Link Layer Discovery Protocol (LLDP), and the Link Layer Discovery Protocol (LLDP) corresponds to the first link between the network device and the first peer network device.

6. The network device according to claim 1, wherein the processing device executes a link management application for: Discovering the first peer network device coupled to the network device via the first link; Identifying the first data associated with the first peer network device; and Providing the first data to the buffer management application.

7. The network device according to claim 1, wherein the set of peer device identifiers includes one or more user-defined identifiers.

8. The network device according to claim 7, wherein the one or more user-defined identifiers include a network device type.

9. The network device according to claim 1, the buffer management application uses the second data structure to perform a first lookup operation for searching the set of peer device identifiers to identify a match between the first data and the first peer device identifier.

10. The network device according to claim 9, the buffer management application is configured to perform a second lookup operation, where the second lookup operation uses the first data structure to identify a first set of configuration parameters associated with the first buffer profile type.

11. The network device according to claim 1, wherein the second data structure includes a first set of fields associated with a second set of fields, the first set of fields including the set of peer device identifiers, and the second set of fields including the set of buffer profile types.

12. The network device according to claim 1, wherein the buffer management application is configured to: Receive second data associated with a second peer network device coupled to the network device via a second link; Determine that the second data matches a second peer device identifier stored in the second data structure; and Assign a second buffer profile type to a second interface component of the network device, wherein the second buffer profile type corresponds to the second peer device identifier in the second data structure.

13. A method, comprising: Storing a first data structure including a set of buffer profile types, wherein each buffer profile type is associated with one or more configuration parameters; Storing a second data structure including a set of peer device identifiers, wherein each peer device identifier in the set of peer device identifiers is associated with a buffer profile type in the set of buffer profile types; Discovering, by a processing device of the network device, a first peer network device coupled to a first interface component of the network device via a first link; Identifying first data associated with the first peer network device; Determining that the first data matches a first peer device identifier in the set of peer device identifiers in the second data structure; Using the first data structure, determining a first set of configuration parameters corresponding to a first buffer profile type, the first buffer profile type being associated with the first peer device identifier; and Assigning the first set of configuration parameters of the first buffer profile type to the first interface component of the network device.

14. The method according to claim 13, further comprising: Configuring the first interface component of the network device according to the first set of configuration parameters.

15. The method according to claim 13, further comprising: Discovering the first peer network device coupled to the network device via the first link.

16. The method according to claim 13, further comprising: Searching at least a portion of the set of peer device identifiers of the second data structure to identify a match between the first data and the first peer device identifier.

17. The method according to claim 13, further comprising: Searching at least a portion of the set of buffer profile types of the first data structure to identify a first set of configuration parameters associated with the first buffer profile type.

18. The method according to claim 13, further comprising: Discovering a second peer network device coupled to a second interface component of the network device via a second link; Identifying second data associated with the second peer network device; Determining that the second data matches a second peer device identifier in the set of peer device identifiers in the second data structure; Using the first data structure, determine a second set of configuration parameters corresponding to a second buffer profile type, the second buffer profile type being associated with the second peer device identifier; and Assign the second set of configuration parameters of the second buffer profile type to the second interface component of the network device.

19. The method according to claim 18, further comprising: Configure the second interface component of the network device according to the second set of configuration parameters.

20. A network device, comprising: A plurality of interface components; A data structure that associates each peer device identifier in a set of peer device identifiers with a buffer profile type in a set of buffer profile types; and A processing device coupled to the plurality of interface components, the processing device for executing a buffer management application for: Receiving first data associated with a first peer network device coupled to an interface component of the network device via a first link; Determining that the first data matches a first peer device identifier stored in the data structure; and Assigning a first buffer profile type to the interface component of the network device, wherein the first buffer profile type is associated with the first peer device identifier.

Citation Information

Patent Citations

  • Flexible buffer allocation in a network switch

    CN107171980A

  • Scalable Secure Wireless Interaction enabling Methods, System and Framework

    US20120084364A1