SYSTEM AND METHOD FOR GENERATING INTERNAL TRAFFIC IN A SWITCH

A hardware-based packet replication unit in multi-node switches generates internal traffic to monitor queue congestion and connectivity efficiently, addressing CPU resource inefficiencies and enabling real-time queue-level monitoring and management.

DE102021127539B4Active Publication Date: 2026-03-12HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 1 Cites 0 Cited by

Patent Information

Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Filing Date
2021-10-22
Publication Date
2026-03-12

AI Technical Summary

Technical Problem

Existing multi-node switch systems face inefficiencies in monitoring queue congestion and connectivity due to the large number of queues that require CPU resources for software-based packet generation, which is slow and inefficient for real-time hardware requirements.

Method used

A hardware-based packet replication unit generates internal traffic within the switch, using a replication list to replicate seed packets to specific queues, with each packet having a defined destination, allowing for efficient monitoring of latency and congestion at the individual queue level.

Benefits of technology

The solution enables real-time monitoring of queue congestion and connectivity with reduced CPU load, using hardware replication units to generate internal traffic that does not interfere with normal traffic, providing granular queue-level insights and enabling proactive management of switch operations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A computer-executed method for generating internal traffic for a switch, wherein the method comprises the following: Configure a replication list (120, 214, 302) that includes a multitude of replication entries, where each replication entry corresponds to a destination port on the switch; Generating a seed packet to be replicated for each replication entry in the replication list, wherein a destination address of each replicated packet corresponds to a replication entry, and wherein all replicated packets are associated with a virtual local area network (VLAN) reserved for internal traffic; Forwarding the replicated packets together with external packets received by the switch to corresponding destination ports on the switch, wherein the forwarding of the replicated packets includes configuring an internal recirculation port (218, 306) to insert the replicated packets into a packet processing pipeline so that the replicated packets can be processed similarly to the external packets; and Configuring a tunnel table (304) containing a multitude of tunnel entries, where each tunnel entry corresponds to a replication entry, and where all tunnel entries point to the internal recirculation port, thereby facilitating the tunneling of replicated packets to the internal recirculation port.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND field

[0001] This disclosure relates generally to the determination of the congestion state and connectivity in a multi-node switch system. More specifically, this disclosure relates to a system and a method for generating internal traffic in a switch to determine the queue state and the connectivity between the nodes in the switch.

[0002] US 2013 / 0058337A1 concerns computer networks and, in particular, the performance of replication in network devices.

[0003] The present invention is defined by independent claims 1 and 9. Embodiments are the subject of the respective dependent claims. BRIEF DESCRIPTION OF THE NUMBERS Fig. Figure 1 shows an exemplary multi-node switch system according to one aspect of the present application. Fig. Figure 2 shows a block diagram of an exemplary node in the multi-node switch system according to one aspect of the application. Fig. Figure 3 shows exemplary configurations of a node in a multi-node switch system according to one aspect of the present application. Fig. Figure 4 shows a flowchart illustrating an exemplary process for configuring a switch system to facilitate the generation of internal traffic according to one aspect of registration. Fig. Figure 5 shows a flowchart illustrating an exemplary process for monitoring queue states according to one aspect of registration. Fig. Figure 6 shows an exemplary computer system that, according to one aspect of registration, facilitates overload monitoring at the queue level.

[0004] In the figures, identical reference numbers refer to the same elements of the figure. DETAILED DESCRIPTION

[0005] The following description is intended to enable the person skilled in the art to manufacture and use the examples and is given in connection with a specific application and its requirements. Various modifications of the examples shown are readily apparent to the person skilled in the art, and the general principles defined herein can be applied to other examples and applications without departing from the spirit and scope of this disclosure. Therefore, the scope of this disclosure is not limited to the examples shown but is intended to be as broad as possible, consistent with the principles and features disclosed herein.

[0006] In a multi-node switch implementing Virtual Output Queuing (VOQ), the physical buffer of each input port maintains a separate virtual queue for each output port, so that an overload of one output port only blocks the virtual queue for that specific output port. The queuing algorithm, or packet scheduling, requires that the destination's queue status be propagated to the source nodes. On a large switch, the number of queues a line card must monitor can be enormous. In a switch chassis with ten line cards, where each line card manages up to 48 ports and up to eight queues per port, a single line card might have to monitor 3840 queues simultaneously. Each of these queues can experience fabric connectivity issues, latency problems, or congestion.To ensure good operating condition of the chassis, a monitoring mechanism is required that can take into account the granularity of the queues.

[0007] One approach is for the CPU on each line card to generate packets for transmission within the switch and monitor the delivery of these internal packets. However, given the size of the queues in large switches, this approach is inefficient. In the previous example of the ten-line card switch, each line card CPU would have to generate and transmit packets for 3840 destinations, which would consume large amounts of CPU resources, leaving fewer CPU cycles available for other tasks. Furthermore, the software-based solution is often too slow to meet the near-real-time hardware requirements for efficiently detecting congestion issues. A hardware solution is necessary for efficient monitoring of latency and congestion within the switch.

[0008] In one example, existing hardware replication units in a switch can be used to generate packets that are transmitted internally within the switch. In conventional switches, a replication unit is typically used for IP multicasting and Layer 2 (L2) replication. In both cases, the replication unit replicates packets that the switch receives from external devices, and the replicated packets are then forwarded to external destinations. Here, the replication unit can be modified and configured to operate in a traffic generation mode. More specifically, the replication unit can maintain a replication list containing a multitude of replication entries, with each replication entry corresponding to a destination (i.e., a specific port on a specific node) on the switch.For each replication entry, the replication unit can continuously replicate a single seed packet to each queue associated with that entry. For example, if a replication entry (such as a specific port on a particular node) has multiple active queues (such as eight priority queues), the replication unit can receive multiple seed packets (one per queue) and replicate each seed packet for that entry. If the replication list has 100 entries, each seed packet will be replicated 100 times; and if each replication entry has eight queues, a total of 800 packets will be generated. The destination of each packet can be controlled and defined. One aspect of the authentication process allows the destinations of the generated packets to be of the form {node, port, queue}, thus addressing all possible destinations of a given source node.

[0009] Fig. Figure 1 shows an exemplary multi-node switch system according to one aspect of the present application. A multi-node switch system 100 can comprise a number of nodes (e.g., nodes 102-108) interconnected via a switch node 110. In an example, the multi-node switch system 100 can contain a switch enclosure; nodes 102-108 can contain line cards, each line card having a plurality of network ports; and the switch node 110 can contain a switch card. The network ports of each line card can be connected to external devices (e.g., computers, wireless access points, other switches, etc.). For example, node 102 is connected to external devices 112, 114, and 116.

[0010] Fig. Figure 1 also shows that each node maintains a replication list, which can be used to replicate packets. For example, node 102 maintains a replication list 120, which contains a large number of entries. More precisely, a replication unit on each node maintains the replication list. Each replication entry in the replication list corresponds to a specific packet destination for the node, where the packet destination is a specific port on a specific node. If the replication unit is configured to operate in traffic generation mode, it can continuously replicate a seed packet (which can be generated by the node's CPU) for each replication entry in the replication list.In one example, the replication unit can be configured to iterate through the replication list and replicate the seed packet for each entry in the list individually at a predetermined rate, continuously repeating the process until it is interrupted, for example, by a user command.

[0011] It should be noted that the internal traffic generated by the replication unit in traffic generation mode does not interfere with normal traffic, although it does consume some bandwidth. The internally generated packets (also called internal packets) can be inserted into the packet processing pipeline and are processed in the same way as normal packets received from external devices, except that these internally replicated packets do not leave the switch system. In other words, these internal packets are forwarded to their respective destinations (e.g., a specific queue on a particular port at a particular node) on the switch, just like normal traffic, as indicated by the double arrows in the diagram. Fig. Figure 1 illustrates this process. After the delivery states (e.g., the number of packets actually arriving at their respective destinations) of these internal packets have been determined (e.g., by using a series of counters), these internal packets are discarded at the destination port. It should be noted that the generation rate of internal packets can be configurable. For example, the generation rate of internal packets can be adjusted based on the current load of the switch system to prevent excessive bandwidth consumption by internal traffic. For instance, the generation rate of internal packets can be faster when the switch system is under lower load (e.g., one packet is generated per millisecond); conversely, the generation rate of internal packets can be slower when the switch system is under higher load (e.g., one packet is generated every ten milliseconds).In one example, the bandwidth consumed by internal traffic can be a predetermined proportion (e.g., between 0.1% and 1%) of the available bandwidth.

[0012] The congestion state of the switch system can be determined based on the delivery states of internal packets (e.g., which packets arrived at their destination and which were dropped because the destination queue was full). Since the internal packets target each active queue, the congestion state of the switch system can be determined with granularity down to the individual queue level. Furthermore, the delivery states of internal packets can also be used to determine the connectivity between all nodes in the switch system. For example, consistently dropped packets can indicate a loss of connection.

[0013] Fig. Figure 2 shows a block diagram of an example node in a multi-node switch system according to one aspect of the application. Fig. 2. Node 200 can be part of a multi-node switch system. For example, Node 200 can be a line card inserted into a switch chassis containing multiple line cards. Node 200 can have a variety of switch ports (e.g., 12V ...

[0014] B. Ports 202-208), a CPU 210, a packet replication unit 212, a replication list 214, a tunnel logic block 216, an internal recirculation port 218, a packet processing logic 220 and a number of counters 222 per queue.

[0015] The Node 200 can receive and send packets to and from external devices (e.g., computers, wireless access points, other switches, etc.) via its switch ports. The Node 200's switch ports can be interconnected and linked to the switch ports of other nodes.

[0016] The CPU 210 is sometimes referred to as the line card CPU and is often responsible for handling data traffic at the control plane. According to one aspect of this application, the CPU 210 can be responsible for generating seed packets that are replicated and forwarded to different switch ports in the multi-node switch system. In one example, the multi-node switch system can implement the VOQ architecture, and the CPU 210 can generate different seed packets for different types of output queues. For example, the queues of a switch port can be organized based on priority, and the CPU 210 can generate a different seed packet for each priority queue. In another example, each port can support up to eight priority queues, and the CPU 210 can accordingly generate eight different seed packets, one for each priority queue.

[0017] According to one aspect of this registration, the size of each seed packet can be kept small to reduce the bandwidth consumed by internal traffic. For example, the minimum packet payload size can be one byte. When generating a seed packet, the CPU 210 can add an internal header to the packet, defining a set of properties associated with the packets. For example, the internal header can define a replication group, a priority, and a special virtual local area network (VLAN). The replication group refers to the packet replication list 214, which can contain a variety of replication entries. The priority refers to the type of queue associated with the seed packet. The special VLAN is a VLAN reserved for internal traffic. All internal packets are associated with this special VLAN.

[0018] The packet replication unit 212 can be responsible for duplicating the seed packets generated by the CPU 210. The packet replication unit 212 can maintain a replication list 214, which can be implemented with hardware logic. The replication list 214 can be used in Fig. Replication list 120, as shown in example 1, will be similar and contain a number of replication entries, where each entry specifies a {node, port} combination. The number of replication entries in replication list 214 can be the product of the number of nodes and the number of ports on each node. For example, if the switch system consists of 10 line cards and each line card has 48 ports, replication list 214 can contain up to 10 × 48 = 480 entries. Because not all ports in the switch system are configured or enabled, not all replication entries in replication list 214 are enabled. In one example, only the entries corresponding to the configured ports are enabled. In another example, a system administrator can manually enable or disable entries in replication list 214.As mentioned previously, the packet replication unit 212 can replicate one seed packet for each enabled replication entry in the replication list 214.

[0019] After receiving a seed packet from CPU 210, packet replication unit 212 can remove the seed packet's internal header, but the priority and VLAN information specified in the internal header is retained and used for packet replication. For example, the priority tag can be used to associate replicated packets with the respective priority queue type. The VLAN is a special VLAN reserved for internal traffic and can be referred to as VLAN_R in this disclosure. The priority tag, in combination with the destination MAC address, can assign a replicated packet to a specific queue on a specific port at a specific node. In this way, internal packets can be generated for all possible active destinations on the switch.It should be noted that the destination ports are not members of the specific VLAN, which means that internal packets at the destination ports will be dropped without leaving the switch system.

[0020] Tunnel logic block 216 can be responsible for creating a number of tunnel entries, one for each replication entry. The number of tunnel entries can be the same as the number of entries in replication list 214. All tunnels can use the same special VLAN (i.e., VLAN_R) for their encapsulation, with the destination MAC (Media Access Control) address for each tunnel entry corresponding to a {node, port} combination. More precisely, the destination MAC address of a tunnel instance corresponds to a specific replication entry in replication list 214. In one example, the destination MAC address might have the following pattern: X:X:X:X:NODE:PORT, where NODE and PORT correspond to the node identifier and the port identifier, respectively. In another example, the destination MAC address might be 08:00:09:00:NODE:PORT. Other formats are also possible, as long as the {node, port} combination can be uniquely identified.The scope of this disclosure is not limited by the format of the destination MAC address of the replicated packets. According to one aspect, all tunnels point to the same destination, which may be the internal recirculation port 218.

[0021] Internal recirculation port 218 is an internal port on node 200. In other words, this port is invisible to external devices. Internal recirculation port 218 can be responsible for inserting internal packets into the packet processing pipeline (i.e., the packet processing logic 220). This allows internal packets to be processed similarly to external packets, i.e., packets received by node 200.

[0022] The counters 222 for each queue can be responsible for counting the number of internal packets received for each queue at node 200. For example, if there are 48 ports at node 200 and each port supports eight queues, then there are 384 counters, one for each queue. Since all internal packets are assigned to the specific VLAN (VLAN_R), the counters 222 per queue can be configured to count only packets assigned to that specific VLAN. From one perspective, the counters 222 per queue can be monitored by a control application running on CPU 210, which can use this information to check the connectivity of the switch cards and any potential congestion between nodes. In particular, the counters 222 per queue can provide congestion information. This information can be used to determine if a queue (e.g.,A VOQ (Value-Output Queue) drops packets because it is full or saturated. Congestion information can also be used to determine whether a queue's utilization rate has reached a desired level. If the utilization rates of one or more queues do not reach the desired values, the control and management logic in the switch system can take action, such as adjusting the transmission rates of specific ports, redistributing traffic, or reconfiguring the replication list to reach certain ports.

[0023] Fig. Figure 3 shows exemplary configurations of a node in a multi-node switch system according to one aspect of the present application. In this example, it is assumed that there are a maximum of 10 nodes and that each node can have up to 52 ports. Fig. Figure 3 shows the configurations of node 0.

[0024] In Fig. A replication list (302), maintained by the replication unit on a node (e.g., a line card), can contain a large number of entries (e.g., 52 × 9 = 468 entries). When replication entries are enabled, they allow the replication unit to replicate seed packets. For example, a replication entry can be enabled when the corresponding destination port is configured. If, for instance, node 1, port 0 is configured, replication entry 1 will be enabled. If, at any time, a specific flow needs to be stopped (e.g., if a particular port no longer needs to be monitored), the corresponding replication entry in replication list 302 can be disabled, thus stopping packet replication for that specific port.

[0025] Each replication entry references a tunnel entry in a tunnel table 304, which can be maintained by the tunnel logic. The number of tunnel entries in tunnel table 304 is the same as the number of replication entries in replication list 302. Each tunnel entry can specify the MAC address for any {node, port} combination. For example, replication entry 1 references tunnel 1, which specifies the MAC address for node 1, port 0. All tunnels use the special VLAN (VLAN_R) for encapsulation and all point to a recirculation port 306. As shown in Fig. As shown in Figure 3, the difference between the various tunnel entries lies in the destination MAC address, which is used to identify each destination (i.e., each unique {node, port} combination). In the Fig. In the example shown, the target MAC address can have the following format: X:X:X:X:NODE:PORT.

[0026] Recirculation port 306 identifies all recirculated packets with the VLAN ID of the specific VLAN, allowing the recirculated packets to remain within that specific VLAN. According to one aspect, when configuring recirculation port 306, the control software running in the line card's CPU can create a set of L2 entries for an L2 table 308. The number of L2 entries created can be identical to the number of replication entries in the replication list 302. Fig. Replication list 302 has 468 entries, and L2 table 308 also has 468 entries. Each L2 entry corresponds to the specific VLAN (i.e., VLAN_R) and destination MAC address (e.g., following the pattern 08:00:09:00:NODE:PORT) of the respective packet destination specified by the {node, port} combination. Since each packet also has a priority based on which seed packet is used for replication, the packets are indeed destined for different queues (i.e., for each unique {node, port, queue} combination). The packets are sent to the corresponding fabric ports 310 based on the {node, port} combination, e.g., {node 1, port 0} or {node 9, port 51}.

[0027] Fig. Figure 4 shows a flowchart illustrating an example process for configuring a switch system to facilitate the generation of internal traffic according to one aspect of the login. The switch system may include multiple line cards, each with multiple ports. During operation, the system reserves a special VLAN for internal traffic (Operation 402). All internal packets are transmitted in this special VLAN, referred to in this disclosure as VLAN_R. The system then configures a replication list for each line card (Operation 404). The entries in the replication list correspond to the destination ports in the switch system, with each entry being a unique combination of {node, port} or {line card, port}. In one example, the number of entries in the replication list is equal to the total number of ports with which the line card communicates.For example, if a particular line card communicates with nine other line cards in the switch, each with 52 ports, the number of entries in the replication list is 52 × 9 = 468. Configuring the replication list can involve enabling and / or disabling specific entries. For instance, an entry can be enabled when the corresponding port is configured and ready to send and receive packets. Similarly, the corresponding entry in the replication list can be disabled when monitoring a particular port is no longer required. Once the replication list is configured, a replication unit on the line card can replicate a received seed packet for each enabled entry in the list.

[0028] In addition to configuring the replication list, the system can also configure a tunnel table containing a number of tunnel entries (Operation 406). The number of entries in the tunnel table can correspond to the number of entries in the replication list. More precisely, each entry in the replication list can be responsible for sending packets (i.e., packets generated for that entry) to a specific tunnel. All tunnels use the dedicated VLAN (i.e., VLAN_R) for their encapsulation, and all tunnels point to an internal recirculation port on the line card.

[0029] The system can also configure the recirculation port (Procedure 408). In one embodiment, the recirculation port can be configured to tag internal packets with the special VLAN, so that the recirculated packets retain the VLAN information. Note that the destination ports of the recirculated packets are not members of the special VLAN, so the recirculated packets are dropped from their destination ports without leaving the switch. The correctly configured recirculation port can insert the internal packets into the packet processing pipeline so that the internal packets can be processed in a similar way to packets received from external devices.

[0030] The system also configures an L2 forwarding table (operation 410). The number of entries in the L2 forwarding table can also correspond to the number of entries in the replication list. Each entry in the L2 forwarding table can map packets belonging to the specific VLAN (meaning they are internal packets) with a destination MAC address following the pattern X:X:X:X:NODE:PORT to a destination specified by the unique combination {node, port}. In other words, a packet with a VLAN ID matching VLAN_R and a destination MAC address matching X:X:X:X:NODE:PORT will be sent to the specified port. Depending on the priority flag, the packet may also be sent to that port's specific priority queue. Every single node in the switch system must be configured correctly to enable the successful generation and forwarding of internal traffic.

[0031] Fig. Figure 5 shows a flowchart illustrating an example process for monitoring queue states according to one aspect of the login process. During operation, the system detects that a trigger condition has been met (Operation 502). The trigger condition might be the system administrator issuing a command to monitor congestion or connectivity. In one example, internal traffic generation might be part of the switch's initialization process (for example, as part of the built-in self-test (BIST)), and the trigger condition might be the completion of certain other initialization operations. In another example, the trigger condition might consist of a set of predefined rules. An example rule might be that the trigger condition is met when the overall network congestion level reaches a predefined threshold.For example, if packet loss occurs in the network, this mechanism can be triggered to monitor congestion per queue.

[0032] Once the trigger condition is met, the interface card's CPU can generate a number of seed packets and send them to the interface card's replication unit (Operation 504). The number of seed packets depends on the number of queues supported by each port. For example, if each port supports eight priority queues, the interface card's CPU can generate eight seed packets, one for each queue. When generating the seed packets, the CPU can add an internal header to each packet containing information such as VLAN, priority, and replication group. Note that the VLAN is the specific VLAN reserved for internal traffic, and the replication group specifies the replication list used to replicate the seed packet. The payload of each seed packet can be limited to a minimum (e.g., one byte).

[0033] After receiving the seed packets, the replication unit can iterate through the entire replication list and replicate each seed packet for each entry in the list (Operation 506). When replicating a seed packet, the replication unit can remove and process the internal header to retrieve information (such as VLAN and priority) contained within it. For a packet replicated according to a specific replication entry, the destination MAC address (which may be part of the packet header) can be determined based on that particular replication entry. For example, each replication entry defines a unique {node, port} combination, and the destination MAC address for the corresponding replicated packet might have a pattern similar to: X:X:X:X:NODE:PORT, where the first four octets are undefined and the last two octets specify the node and port.In another example, the destination MAC address could be 08:00:09:00:NODE:PORT. Besides setting the destination MAC address, the replication unit can also add a priority tag to the replicated packet, based on the internal header of the seed packet.

[0034] In one example, the replication unit can iterate through the replication list entry by entry to replicate each seed packet for every entry. The replication rate (i.e., the rate at which internal packets are generated) can be configured either by a control algorithm running in the line card's CPU or by a system administrator. To prevent internal traffic from consuming too much bandwidth, the replication rate can be adjusted according to one aspect based on the traffic load on the switch. In one example, the bandwidth used by internal traffic can be a predetermined percentage (e.g., between 0.1% and 1%) of the available bandwidth. In another example, the replication rate is decreased or increased if the bandwidth used by internal traffic is greater than a first threshold (e.g., 1%) or less than a second threshold (e.g., 0.1%).

[0035] The replication unit sends the replicated packets to a recirculation port on the line card (Operation 508). In one example, the replication unit can send the replicated packets to the recirculation port through a series of tunnels, with each tunnel corresponding to each destination MAC address. All tunnels use the special VLAN for encapsulation. The recirculation port then inserts the replicated packets into the packet processing pipeline (Operation 510). When inserting the packets, the recirculation port can also tag the packets with the special VLAN ID to obtain the VLAN information. Inserting or redirecting the packets into the packet processing pipeline ensures that these internal packets are routed in the same way as normal external packets. This also ensures that the generation and routing of the internal traffic does not interfere with normal traffic.Unlike other systems where the application-specific integrated circuit (ASIC) for packet processing must interrupt normal forwarding operations to operate in a traffic generation mode, in this solution the ASIC for packet processing can operate normally by treating internal and external packets equally.

[0036] The packet-processing ASIC then forwards the packets to their respective destinations (Operation 512). To do this, the packet-processing ASIC processes the information contained in the packet header, such as the VLAN ID, priority, and destination MAC address. Based on the information in the packet header, a packet can be routed to a specific priority queue on a particular port on a particular line card. When a packet arrives at its destination (e.g., a specific port on a particular line card), the value of the corresponding queue counter is incremented, and the packet is discarded (Operation 514).

[0037] The packet is dropped because the destination port is not a member of the specific VLAN. This prevents internal packets from leaving the switch. In one example, each line card maintains a set of counters per queue, one for each queue. The counter values ​​are sent to the line card's CPU (Operation 516) so that the CPU can monitor and analyze the status of each queue. For example, based on the packet replication rate and the counter value for each queue, the CPU can determine the packet loss rate for each queue. The CPU can further determine whether the packet loss is due to the queue being full or saturated. Additionally, the packet loss rate of a particular queue or port can also indicate connectivity issues between ports to the CPU.

[0038] Internal traffic can be continuously generated and forwarded (e.g., since the switch initialization) to allow continuous monitoring of congestion and / or connectivity. However, according to one aspect, the system can also determine whether a break condition is met (Operation 518). If so, the process terminates and no further seed packet replication occurs. If not, the replication units continue replicating the seed packets (Operation 506). The break condition can be a command issued by the system administrator to terminate internal traffic or the expiration of a predefined timer.

[0039] Fig.Figure 6 shows an exemplary computer system that, according to one aspect of the application, facilitates queue-level congestion monitoring. The computer system 600 comprises a processor 602, a memory 604, and a storage device 606. Furthermore, the computer system 600 can be coupled with peripheral input / output user devices 610, such as a display device 612, a keyboard 614, and a pointing device 616. The storage device 606 can store an operating system 618, a congestion monitoring system 620, and data 650.

[0040] The overload monitoring system 620 may contain instructions which, when executed by the computer system 600, may cause the computer system 600 or the processor 602 to perform the procedures and / or processes described in this disclosure. In particular, the overload monitoring system 620 may contain instructions for determining whether a trigger condition is met (trigger condition determination instructions 622), instructions for generating seed packets (seed packet generation instructions 624), instructions for configuring a replication list (replication list configuration instructions 626), instructions for configuring the packet replication rate (replication rate configuration instructions 628), instructions for reserving a VLAN (VLAN reservation instructions 630), and instructions for configuring a tunnel table (tunnel table configuration instructions 632).Instructions for configuring a recirculation port (Recirculation Port Configuration Instructions 634), instructions for configuring an L2 forwarding table (Forwarding Table Configuration Instructions 636), instructions for monitoring counters per queue (Counter Monitoring Instructions 638), and instructions for analyzing the states of individual queues (Queue State Analysis Instructions 640).

[0041] In general, this disclosure provides a solution to the problem of generating internal traffic in a switch, which can be used to monitor the switch's congestion state at the individual queue level and to determine connectivity between ports. Instead of using software to generate all internal packets, the described solution uses software to generate seed packets that can be replicated by hardware logic (e.g., a packet replication unit) in each line card. Such a packet replication unit is typically used for multicasting or Layer 2 replication. To achieve queue-level granularity, multiple seed packets can be generated (one packet for each type of queue). The replication unit maintains a replication list whose entries correspond to the destination ports on the switch.For each entry in the replication list, the replication unit can further replicate the seed packets, which can then be forwarded to the destination port. Different replications of different seed packets target different queues on the destination port. Each line card can also implement multiple counters per queue to count the number of internal packets received by each queue. These per-queue counters can be monitored by control algorithms in the line card's CPU, which can collect and use this information to check the connectivity of the fabric card and any potential queue congestion. In addition to monitoring for congestion during normal switch operation, internal traffic can also be generated and monitored as an internal BIST during switch initialization to verify connectivity between nodes in the switch.This solution can also be used to measure the utilization of the VOQs of individual destination ports. The internal packets can be used to determine if a VOQ is dropping traffic because it is full or saturated. Determining VOQ utilization allows the system administrator to take corrective action (e.g., rate adjustment or traffic redistribution) in cases where the utilization of one or more VOQs is undesirable. It is also possible to generate switch-internal traffic for purposes other than monitoring congestion and connectivity in the multi-node switch system.

[0042] One aspect of the present application provides a system and method for generating internal traffic for a switch. During operation, the system configures a replication list containing a multitude of replication entries, where each replication entry corresponds to a destination port on the switch. The system generates a seed packet to be replicated for each replication entry in the replication list, with each replicated packet having a destination address corresponding to a replication entry. All replicated packets are assigned to a virtual local area network (VLAN) reserved for internal traffic. The system then forwards the replicated packets, along with the external packets received by the switch, to the corresponding destination ports of the switch.

[0043] In one variation of this aspect, a destination port supports multiple queues, and the system generates multiple seed packets, one for each queue.

[0044] In another variant, the multiple queues are priority queues; the seed packet includes an internal header indicating a type of priority queue to which packets replicated on the basis of the seed packet are targeted; and replicating the seed packet involves removing the internal header and marking the priority of the replicated packet.

[0045] In another variant, the system also receives a count value from a counter per queue, which counts the number of packets received at a specific port for a specific queue, and determines a state of the specific queue based on the count value.

[0046] In one variation of this aspect, the switch comprises several interconnected nodes, and the respective replication entry specifies a unique {node, port} combination.

[0047] In one variation of this aspect, forwarding the replicated packets involves configuring an internal recirculation port to insert the replicated packets into a packet processing pipeline so that the replicated packets can be processed similarly to the external packets.

[0048] In another variant, the system configures a tunnel table containing numerous tunnel entries, where each tunnel entry corresponds to a replication entry. All tunnel entries point to the recirculation port, thus facilitating the tunneling of replicated packets to the internal recirculation port.

[0049] In one variation of this aspect, configuring the replication list involves adjusting the replication rate of the seed packet based on the traffic load on the switch.

[0050] In one variation of this aspect, configuring the replication list involves disabling a replication entry in the replication list to stop the replication of the seed packet for the disabled replication entry.

[0051] In one variation of this aspect, the system continuously replicates the seed packet until a break condition is met.

[0052] The procedures and processes described in the "Detailed Description" section can be embodied as code and / or data, which can be stored on a computer-readable storage medium as described above. When a computer system reads and executes the code and / or data stored on the computer-readable storage medium, the computer system executes the procedures and processes that are embodied as data structures and code and stored on the computer-readable storage medium.

[0053] Furthermore, the procedures and processes described above can be integrated into hardware modules or devices. These hardware modules or devices may include, but are not limited to, application-specific integrated circuits (ASIC chips), field-programmable gate arrays (FPGAs), dedicated or shared processors that execute a specific software module or piece of code at a specific time, and other known or subsequently developed programmable logic devices. When the hardware modules or devices are activated, they execute the procedures and processes they contain.

[0054] The foregoing descriptions serve only for illustration and description. They do not claim to be exhaustive and do not limit the scope of this disclosure to the disclosed forms. Accordingly, many modifications and variations will be obvious to those skilled in the art.

Claims

[1] A computer-executed method for generating internal traffic for a switch, the method comprising: Configure a replication list (120, 214, 302) that includes a multitude of replication entries, where each replication entry corresponds to a destination port on the switch; Generating a seed packet to be replicated for each replication entry in the replication list, wherein a destination address of each replicated packet corresponds to a replication entry, and wherein all replicated packets are associated with a virtual local area network (VLAN) reserved for internal traffic; Forwarding the replicated packets together with external packets received by the switch to corresponding destination ports on the switch, wherein the forwarding of the replicated packets includes configuring an internal recirculation port (218, 306) to insert the replicated packets into a packet processing pipeline so that the replicated packets can be processed similarly to the external packets; and Configuring a tunnel table (304) containing a multitude of tunnel entries, where each tunnel entry corresponds to a replication entry, and where all tunnel entries point to the internal recirculation port, thereby facilitating the tunneling of replicated packets to the internal recirculation port. [2] Method according to claim 1, wherein each destination port supports multiple queues and wherein the method further comprises generating multiple seed packets, one for each queue. [3] Method according to claim 2, wherein the multiple queues are priority queues, wherein the seed packet includes an internal header specifying a type of priority queue to which packets replicated on the basis of the seed packet are targeted, and wherein replicating the seed packet includes removing the internal header and marking the priority of the replicated packet. [4] The method of claim 2, further comprising: Receiving a count value from a counter per queue (222) that counts a number of packets received at a given port for a given queue; and Determining the state of a specific queue based on the count value. [5] Method according to claim 1, wherein the switch comprises several interconnected nodes (102, 104, 106, 108) and wherein the respective replication entry specifies a unique {node, port} combination. [6] Method according to claim 1, wherein configuring the replication list comprises adjusting a rate at which the seed packet is replicated based on the traffic load on the switch. [7] Method according to claim 1, wherein configuring the replication list comprises disabling a replication entry in the replication list to stop the replication of the seed packet for the disabled replication entry. [8] The method of claim 1, further comprising the continuous replication of the seed packet until a break condition is met. [9] A computer system (600), comprising: a processor (602) and a memory (604, 606) connected to the processor and storing instructions which, when executed by the processor, cause the processor to perform a method for generating internal traffic, the method comprising: Configure a replication list (120, 214, 302) that includes a multitude of replication entries, where each replication entry corresponds to a destination port on a switch; Generating a seed packet to be replicated for each replication entry in the replication list, wherein a destination address of each replicated packet corresponds to a replication entry, and wherein all replicated packets are associated with a virtual local area network (VLAN) reserved for internal traffic; Forwarding the replicated packets together with external packets received by the switch to corresponding destination ports on the switch, wherein the forwarding of the replicated packets includes configuring an internal recirculation port (218, 306) to insert the replicated packets into a packet processing pipeline so that the replicated packets can be processed similarly to the external packets; and Configuring a tunnel table (304) containing a multitude of tunnel entries, where each tunnel entry corresponds to a replication entry, and where all tunnel entries point to the internal recirculation port, thereby facilitating the tunneling of replicated packets to the internal recirculation port. [10] Computer system according to claim 9, wherein each destination port supports multiple queues and wherein the method further comprises generating multiple seed packets, one for each queue. [11] Computer system according to claim 10, wherein the multiple queues are priority queues, wherein the seed packet includes an internal header specifying a type of priority queue to which packets replicated on the basis of the seed packet are targeted, and wherein replicating the seed packet includes removing the internal header and marking the priority of the replicated packet. [12] Computer system according to claim 10, wherein the method further comprises: Receiving a count value from a counter per queue (222) that counts a number of packets received at a given port for a given queue; and Determining the state of a specific queue based on the count value. [13] Computer system according to claim 9, wherein the switch comprises several interconnected nodes (102, 104, 106, 108) and wherein the respective replication entry specifies a unique {node, port} combination. [14] Computer system according to claim 9, wherein configuring the replication list comprises adjusting a rate at which the seed packet is replicated based on the traffic load on the switch. [15] Computer system according to claim 9, wherein configuring the replication list includes disabling a replication entry in the replication list to stop the replication of the seed packet for the disabled replication entry. [16] Computer system according to claim 9, wherein the method further comprises the continuous replication of the seed packet until a break condition is met.

Citation Information

Patent Citations

  • Inline packet replication in network devices

    US20130058337A1