Message processing method and MMU

By dividing the MMU into multiple MMU areas, the head MMU area moves multicast packets to the buffer in the destination MMU area, which solves the resource occupation problem of multicast packets in traditional switching chips, and achieves memory resource saving and multicast performance improvement.

CN120614329BActive Publication Date: 2026-07-21NEW H3C SEMICON TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
NEW H3C SEMICON TECH CO LTD
Filing Date
2025-06-24
Publication Date
2026-07-21

AI Technical Summary

Technical Problem

In traditional switching chips, multicast messages consume a large amount of shared memory pool storage resources and memory bandwidth during transmission, and unicast and multicast messages compete for the shared memory pool's exit resources, affecting multicast performance.

Method used

The MMU is divided into multiple MMU areas, and a role-based approach is adopted. The head MMU area moves multicast messages to the buffer of the destination MMU area, and the destination MMU area is responsible for sending them. This avoids multiple accesses to the shared memory pool and the generation of independent message copies, and prioritizes the sending of unicast messages.

Benefits of technology

It saves memory bandwidth and storage resources, improves multicast performance, and solves the problem of resource contention between unicast and multicast packets.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120614329B_ABST
    Figure CN120614329B_ABST
Patent Text Reader

Abstract

The embodiment of the application provides a packet processing method and MMU, relates to the field of communication technology, and the MMU comprises at least one main MMU area and a plurality of MMU areas managed by each main MMU area;Each main MMU area selects a head MMU area from the plurality of MMU areas managed by the main MMU area, the memory pool included in the head MMU area stores the multicast packet to be processed;A scheduling descriptor is sent to the head MMU area, the scheduling descriptor indicates the destination MMU area allocated by the main MMU area for the multicast packet;The head MMU area moves the multicast packet to the buffer included in the destination MMU area according to the scheduling descriptor;A copy descriptor is sent to the destination MMU area, the copy descriptor indicates the first target port for sending the multicast packet;The destination MMU area sends the multicast packet to the first target port according to the copy descriptor.The scheme can save memory bandwidth resources and storage resources, solve the problem of mutual occupation of the outlet resources of the shared memory pool between the unicast packet and the multicast packet, and improve multicast performance.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of communication technology, and in particular to a message processing method and an MMU. Background Technology

[0002] Switching chips are core components of network devices, responsible for efficiently forwarding data packets between ports and implementing functions such as traffic scheduling and priority management. With the widespread adoption of applications such as cloud computing and video conferencing, the importance of multicast technology is increasingly prominent. Multicast can significantly reduce network bandwidth consumption by simultaneously distributing the same data packet to multiple target nodes, making it a key supporting technology for scenarios such as live video streaming, online education, and securities trading.

[0003] In traditional switching chips, the Memory Management Unit (MMU) allocates contiguous blocks of memory in a shared memory pool for multicast packets, which are then cached within these allocated blocks. When sending multicast packets through multiple destination ports, the multicast manager needs to access the shared memory pool multiple times, moving the multicast packets to different locations within the pool to generate a packet copy for each destination port, and then forwarding the multicast packets across these ports. This process consumes significant amounts of shared memory pool storage resources, and the repeated movement of multicast packets wastes memory bandwidth and storage resources.

[0004] Furthermore, in mixed service scenarios, unicast and multicast packets are stored together in a shared memory pool. Unicast and multicast packets compete for the shared memory pool's egress resources, and since unicast packets have higher priority than multicast packets, the multicast manager prioritizes scheduling and forwarding unicast packets. This results in multicast resources being squeezed out, impacting multicast performance. Summary of the Invention

[0005] The purpose of this application is to provide a message processing method and an MMU to save memory bandwidth and storage resources, solve the problem of unicast and multicast messages competing for shared memory pool egress resources, and improve multicast performance. The specific technical solution is as follows:

[0006] In a first aspect, embodiments of this application provide a message processing method applied to an MMU, wherein the MMU includes at least one main MMU area and multiple MMU areas managed by each main MMU area; the method includes:

[0007] Each primary MMU region selects a head MMU region from among the multiple MMU regions managed by that primary MMU region. The head MMU region includes a memory pool that stores multicast messages to be processed. A scheduling descriptor is sent to the head MMU region, which instructs the primary MMU region to allocate a destination MMU region for the multicast message.

[0008] The head MMU area moves the multicast message to the buffer included in the destination MMU area according to the scheduling descriptor; and sends a replication descriptor to the destination MMU area, the replication descriptor indicating the first destination port for sending the multicast message;

[0009] The destination MMU area sends the multicast message to the first target port according to the replication descriptor.

[0010] In some embodiments, the target MMU region includes multiple MMU regions;

[0011] The step of moving the multicast message to the buffer included in the destination MMU area according to the scheduling descriptor includes:

[0012] The head MMU area sends a corresponding frame descriptor to each MMU area included in the destination MMU area according to the scheduling descriptor. The frame descriptor indicates the storage location of the multicast message in the buffer included in the corresponding MMU area. The head MMU area reads the data of the multicast message corresponding to each MMU area included in the destination MMU area from the memory pool. The head MMU area sends the read data to each MMU area included in the destination MMU area.

[0013] Each MMU area included in the destination MMU area stores the received data to the storage location indicated by the received frame descriptor.

[0014] In some embodiments, the destination MMU region includes a plurality of consecutively linked MMU regions; the frame descriptor further indicates the number of the plurality of consecutive MMU regions;

[0015] Each MMU area included in the destination MMU area stores the received data to the storage location indicated by the received frame descriptor, including:

[0016] The start MMU and intermediate MMUs in the plurality of consecutive MMUs store the received data to the storage location indicated by the frame descriptor received in the MMU; and send a write completion message to the end MMU in the plurality of consecutive MMUs.

[0017] The MMU area, being the end MMU area among the plurality of consecutive MMU areas, receives write-complete messages sent by the start MMU area and the intermediate MMU areas, stores the received data in the storage location indicated by the frame descriptor in the MMU area, and generates a write-complete message; counts the total number of obtained write-complete messages; when the total number is the same as the number of the plurality of consecutive MMU areas, sends a move-complete message to the head MMU, the move-complete message indicating that the multicast message move is complete;

[0018] The header MMU region sends a replication descriptor to the destination MMU region, including:

[0019] After receiving the relocation completion message, the head MMU area sends a copy descriptor to the plurality of consecutive MMU areas.

[0020] In some embodiments, the destination MMU area includes a plurality of consecutive MMUs linked together; the replication descriptor also indicates the total number of copies of the multicast message;

[0021] The step of sending a replication descriptor from the header MMU region to the destination MMU region includes:

[0022] The head MMU region sends a replication descriptor to the first MMU region among the plurality of consecutive MMU regions;

[0023] The step of the destination MMU area sending the multicast message to the first target port according to the replication descriptor includes:

[0024] The starting MMU area receives the replication descriptor sent by the head MMU, sends the data at the storage location indicated by the received frame descriptor to the first target port, and sends the replication descriptor to the next MMU area in the chain.

[0025] The intermediate MMU area in the plurality of consecutive MMU areas receives the replication descriptor sent by the MMU area preceding the intermediate MMU area on the chain, sends the data at the storage location indicated by the received frame descriptor to the first target port, and sends the replication descriptor to the next MMU area of ​​the intermediate MMU area on the chain.

[0026] The last MMU area in the plurality of consecutive MMU areas receives the replication descriptor sent by the previous MMU area on the chain, and sends the data at the storage location indicated by the received frame descriptor to the first target port; increments the number of times the multicast message is sent by 1; when the number of times it is sent is the same as the total number of copies, it sends a replication completion message to the master MMU area.

[0027] In some embodiments, the first target port includes a first output port and a second output port; the step of sending the replication descriptor to the destination MMU area includes:

[0028] The header MMU area sends a first replication descriptor to the destination MMU area, the first replication descriptor indicating the first output port for sending the multicast message;

[0029] The header MMU area instructs other MMU areas in the MMU to send a second copy descriptor to the destination MMU area, and the second copy descriptor indicates the second output port for sending the multicast message.

[0030] In some embodiments, the memory pool further stores unicast messages to be processed; the method further includes:

[0031] The header MMU area reads the unicast message from the memory pool and sends the unicast message to the second target port.

[0032] In some embodiments, each primary MMU region manages the virtual cache of each MMU region included in the MMU, and the method further includes:

[0033] After each primary MMU sends a scheduling descriptor to the head MMU area, it sets the virtual buffer corresponding to the destination MMU area to be occupied; after the destination MMU area sends the multicast message to the first target port, it sets the virtual buffer corresponding to the destination MMU area to be unoccupied.

[0034] Secondly, embodiments of this application provide an MMU, which includes multiple MMU areas, each MMU area including a memory pool, a buffer, a multicast management module, and a data processing module; the multiple MMU areas include at least one main MMU area and multiple MMU areas managed by each main MMU area;

[0035] Each primary MMU area includes a multicast management module that selects a head MMU area from among the multiple MMU areas managed by that primary MMU area. The head MMU area includes a memory pool that stores multicast packets to be processed. A scheduling descriptor is sent to the multicast management module included in the head MMU area. The scheduling descriptor instructs the primary MMU area to allocate a destination MMU area for the multicast packet.

[0036] The multicast management module included in the head MMU area moves the multicast packet to the buffer included in the destination MMU area according to the scheduling descriptor; and sends a replication descriptor to the data processing module included in the destination MMU area, the replication descriptor indicating the first destination port for sending the multicast packet;

[0037] The data processing module included in the destination MMU area sends the multicast message contained in the buffer of the destination MMU area to the first target port according to the replication descriptor.

[0038] In some embodiments, the target MMU region includes multiple MMU regions;

[0039] The multicast management module included in the header MMU area moves the multicast packet to the buffer included in the destination MMU area according to the scheduling descriptor, including:

[0040] The multicast management module included in the head MMU area sends a corresponding frame descriptor to the data processing module included in each MMU area in the destination MMU area according to the scheduling descriptor. The frame descriptor indicates the storage location of the multicast message in the buffer included in the corresponding MMU area.

[0041] The data processing module included in the header MMU area reads the data of the multicast message corresponding to each MMU area in the destination MMU area from the memory pool, and sends the read corresponding data to the data processing module included in each MMU area in the destination MMU area;

[0042] Each MMU area in the destination MMU area includes a data processing module that stores the received data to the storage location indicated by the received frame descriptor.

[0043] In some embodiments, the destination MMU region includes a plurality of consecutively linked MMU regions; the frame descriptor further indicates the number of the plurality of consecutive MMU regions;

[0044] Each MMU area in the destination MMU area includes a data processing module that stores the received data to the storage location indicated by the received frame descriptor, including:

[0045] The data processing modules in the start MMU area and the middle MMU area of ​​the plurality of consecutive MMU areas store the received data to the storage location indicated by the frame descriptor received in the MMU area; and send a write completion message to the data processing module in the end MMU area of ​​the plurality of consecutive MMU areas.

[0046] The data processing module in the end MMU area of ​​the plurality of consecutive MMU areas receives write-complete messages sent by the data processing modules in the start MMU area and the intermediate MMU area; stores the received data in the storage location indicated by the frame descriptor received in the MMU area, and generates a write-complete message; counts the total number of write-complete messages obtained; when the total number is the same as the number of the plurality of consecutive MMU areas, sends a move-complete message to the multicast management module in the head MMU, the move-complete message indicating that the multicast message move is complete;

[0047] The multicast management module included in the head MMU sends a replication descriptor to the data processing module included in the destination MMU area, including:

[0048] After receiving the relocation completion message, the multicast management module included in the head MMU sends a replication descriptor to the data processing module included in the multiple consecutive MMU areas.

[0049] In some embodiments, the destination MMU area includes a plurality of consecutive MMU areas linked together; the replication descriptor also indicates the total number of copies of the multicast message;

[0050] The multicast management module included in the head MMU sends a replication descriptor to the data processing module included in the destination MMU area, including: the multicast management module included in the head MMU sends a replication descriptor to the data processing module included in the starting MMU area among the plurality of consecutive MMU areas;

[0051] The data processing module included in the destination MMU area sends the multicast message contained in the buffer of the destination MMU area to the first target port according to the replication descriptor, including:

[0052] The data processing module included in the starting MMU area receives the replication descriptor sent by the multicast management module included in the head MMU, sends the data at the storage location indicated by the received frame descriptor to the first target port, and sends the replication descriptor to the data processing module included in the next MMU area of ​​the starting MMU area on the chain.

[0053] The data processing module of the intermediate MMU area in the plurality of consecutive MMU areas receives the replication descriptor sent by the data processing module of the previous MMU area of ​​the intermediate MMU area on the chain, and sends the data at the storage location indicated by the received frame descriptor to the first target port; and sends the replication descriptor to the data processing module of the next MMU area of ​​the intermediate MMU area on the chain.

[0054] The data processing module of the end MMU area in the plurality of consecutive MMU areas receives the replication descriptor sent by the data processing module of the previous MMU area on the chain, and sends the data at the storage location indicated by the received frame descriptor to the first target port; increments the cumulative number of transmissions of the multicast message by 1; when the number of transmissions is the same as the total number of replications, sends a replication completion message to the multicast management processing module of the main MMU area.

[0055] In some embodiments, the first target port includes a first output port and a second output port;

[0056] The multicast management module included in the head MMU sends a replication descriptor to the data processing module included in the destination MMU area, including:

[0057] The multicast management module included in the header MMU sends a first replication descriptor to the data processing module included in the destination MMU area, and the first replication descriptor indicates the first output port for sending the multicast message;

[0058] The multicast management module included in the head MMU instructs the multicast management modules included in other MMU areas to send a second replication descriptor to the data processing module included in the destination MMU area, and the second replication descriptor indicates the second output port for sending the multicast message.

[0059] In some embodiments, the memory pool included in the header MMU also stores unicast messages to be processed;

[0060] The data processing module included in the header MMU reads the unicast message from the memory pool and sends the unicast message to the second target port.

[0061] In some embodiments, each primary MMU region manages the virtual cache of each MMU region included in the MMU;

[0062] After sending a scheduling descriptor to the head MMU area, the multicast management module in each main MMU area sets the virtual buffer corresponding to the destination MMU area to be occupied; after the destination MMU area sends the multicast message to the first target port, the virtual buffer corresponding to the destination MMU area is set to be unoccupied.

[0063] In some embodiments, the MMU includes two or more MMU regions, which are arranged in a square array. Among the multiple MMU regions, adjacent MMU regions in the horizontal or vertical direction are linked together.

[0064] In some embodiments, each MMU region includes buffers corresponding to four channels; in the square array, the MMU regions located at the four vertices are the main MMU regions; each main MMU region corresponds to one channel; the distance between the MMU region managed by each main MMU region and the main MMU region is less than the distance between the MMU region and other main MMU regions.

[0065] Beneficial effects of the embodiments in this application:

[0066] In the technical solution provided in this application embodiment, the MMU is divided into multiple MMU areas, which are divided according to their roles, including the main MMU area. The head MMU area stores multicast packets to be processed in its memory pool. The main MMU area determines the destination MMU area for caching the multicast packets to be processed, and the head MMU area moves the multicast packets in its own memory pool to the buffer included in the destination MMU area. Subsequently, the destination MMU area is responsible for sending multicast packets to the target port without needing to access the memory pool included in the head MMU area again. Here, the MMU area does not need to access the shared memory pool multiple times, nor does it need to generate an independent packet copy for each target port in the shared memory pool, thus saving memory bandwidth resources and storage resources.

[0067] In addition, multicast packets in the memory pool included in the header MMU area are moved to the buffer included in the destination MMU area. Subsequently, the destination MMU area is responsible for copying and sending multicast packets to the target port. For the header MMU area, it only needs to send unicast packets to the target port. This solves the problem of unicast packets and multicast packets competing for the exit resources of the shared memory pool in the memory pool included in the header MMU area, and improves multicast performance.

[0068] Of course, implementing any product or method of this application does not necessarily require achieving all of the advantages described above at the same time. Attached Figure Description

[0069] To more clearly illustrate the technical solutions in the embodiments of this application or the prior art, the drawings used in the description of the embodiments or the prior art will be briefly introduced below. Obviously, the drawings described below are only some embodiments of this application. For those skilled in the art, other embodiments can be obtained based on these drawings.

[0070] Figure 1a A schematic diagram of an MMU provided in an embodiment of this application;

[0071] Figure 1b A schematic diagram of the MMU area provided in an embodiment of this application;

[0072] Figure 2 This is a schematic diagram of the layout of the MMU area provided in an embodiment of this application;

[0073] Figure 3a for Figure 2 The diagram shows the first type of MMU region chain;

[0074] Figure 3b for Figure 2 The diagram shows the second type of MMU region chain;

[0075] Figure 4This is a first schematic diagram of a message processing method provided in an embodiment of this application;

[0076] Figure 5 for Figure 4 A schematic diagram of one implementation of step S403;

[0077] Figure 6 A schematic diagram of the data transfer stage process provided in the embodiments of this application;

[0078] Figure 7 A schematic diagram of the copying and sending phase process provided in an embodiment of this application;

[0079] Figure 8 A schematic diagram of the payload of a multicast message provided in an embodiment of this application;

[0080] Figure 9 This is a second schematic diagram of the message processing method provided in the embodiments of this application. Detailed Implementation

[0081] The technical solutions of the embodiments of this application will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this application, and not all embodiments. Based on the embodiments of this application, all other embodiments obtained by those skilled in the art based on this application are within the scope of protection of this application.

[0082] To conserve memory bandwidth and storage resources, resolve the issue of unicast and multicast packets competing for shared memory pool egress resources, and improve multicast performance, this application provides an MMU, such as... Figure 1a As shown, MMU10 includes multiple MMU regions 101, such as Figure 1a The MMU areas 101 are 0 to N-1, where N is a positive integer. Each MMU area 101 includes a memory pool 1011, a buffer 1012, a multicast management module 1013, and a data processing module 1014, as shown below. Figure 1b As shown. Multiple MMU regions 101 include at least one main MMU region and multiple MMU regions managed by each main MMU region.

[0083] In this embodiment, the N MMU areas 101 can be connected by a Network on Chip (NOC). The NOC can include a Frame Descriptor (FD) NOC, a Data NOC, and a Multicast NOC. The FD NOC is used to transmit FDs; the Data NOC is used to transmit data such as message data in the memory pool; and the Multicast NOC is used to transmit management information during multicast message transfer and copying.

[0084] To improve multicast performance, the MMU10 includes at least two MMU areas 101, meaning N is greater than or equal to 2. This distributed design of the MMU10 allows for parallel processing of multiple MMU areas 101, improving the processing efficiency of multicast packets. To ensure load balancing among the multiple MMU areas 101, they can be arranged in a square array, meaning the number N of the multiple MMU areas 101 included in the MMU10 is M. 2 M is a positive integer. To facilitate logical operations between MMUs 101, M is an even number greater than or equal to 2.

[0085] like Figure 2 The MMU area arrangement shown has M = 4 and N = 4*4 = 16. The MMU includes 16 MMU areas, namely MMU area 0 to MMU area 15. MMU areas 0 to MMU area 15 are arranged in a 4*4 square array.

[0086] Furthermore, all buffers 1012 have the same capacity, and each buffer 1012 constitutes a storage block. The capacity of a single buffer 1012 (Multicast Buffer size) can be set according to actual needs. To meet the storage requirements of multicast messages, adjacent MMU areas 101 in the horizontal or vertical direction are chained together to form logically contiguous storage blocks among the buffers 1012 included in adjacent MMU areas. The specific chaining method is not limited. For example, it can be adopted... Figure 3a or Figure 3b The arrows shown indicate that... Figure 2 The MMU regions 0 to 15 shown are linked together.

[0087] In some embodiments, each MMU region may include a buffer (MulticastBuffer) corresponding to four channels; in the square array described above, the MMU regions located at the four vertices are the main MMU regions; each main MMU region corresponds to one channel; the distance between the MMU region managed by each main MMU region and the main MMU region is less than the distance between the MMU region and other main MMU regions.

[0088] In the embodiments of the present application, for one channel, among the N MMU regions included in the MMU, a buffer can only store part or all of the data of one multicast packet at a time. Therefore, the MMU supports processing at least one multicast packet of Multicast Buffer size, and at most N (i.e., M 2 个) multicast packets of Multicast Buffer size.

[0089] The main MMU regions correspond to the channels one by one. The multicast management module of a main MMU region is used to schedule the multicast linked list data of the corresponding channel, that is, to schedule 4 string-linked data as shown in Figure 3a 或 Figure 3b For example, it is responsible for scheduling the multicast packet data in the memory pool of the MMU regions under its management to one or more buffers of the corresponding channel. Different main MMU regions correspond to different channels, and the multicast packet data of different channels does not conflict. Therefore, the multicast packet data can be processed in parallel between different main MMU regions, improving the processing efficiency of the multicast packet data and the multicast performance.

[0090] In addition, for an MMU region, its first distance from a main MMU region and its second distance from other main MMU regions. If the first distance is less than the second distance, then the above-mentioned main MMU region manages this MMU region, such as the multicast management module of the above-mentioned main MMU region manages the multicast packet data in the memory pool of this MMU region, etc. A main MMU region manages the MMU regions close to it, reducing the communication time and improving the data management efficiency.

[0091] For example Figure 2 In the MMU region arrangement shown, the MMU regions 0, 3, 12, and 15 at the upper right, upper left, lower left, and lower right corners are the main MMU regions. The distances between MMU regions 0, 1, 4, 5 and MMU region 0 are d1, and the distances between MMU regions 0, 1, 4, 5 and MMU region 3 (or MMU region 12, or MMU region 15) are d2, and d1 < d2. Therefore, MMU region 0 manages MMU regions 0, 1, 4, 5. Similarly, MMU region 3 manages MMU regions 2, 3, 6, 7, MMU region 12 manages MMU regions 8, 9, 12, 13, and MMU region 15 manages MMU regions 10, 11, 14, 15.

[0092] Based on the above MMU, the embodiments of the present application provide a packet processing method, such as Figure 4As shown. For ease of understanding, the multicast management module included in the main MMU area will be referred to as the Multicast Management Master module, the multicast management module included in the header MMU area will be referred to as the Multicast Management Header module, the data processing module included in the header MMU area will be referred to as the Data Processing Header module, the memory pool included in the header MMU area will be referred to as the Header Memory Pool, the data processing module included in the destination MMU area will be referred to as the Data Processing Destination module, and the buffer included in the destination MMU area will be referred to as the Destination Buffer.

[0093] The above message processing method includes the following steps:

[0094] Step S401: The multicast management master module selects the head MMU area from the multiple MMU areas managed by the master MMU area. The head MMU area includes a memory pool that stores multicast messages to be processed.

[0095] In step S402, the multicast management master module sends a scheduling descriptor to the multicast management head module. The scheduling descriptor indicates the destination MMU area allocated by the master MMU area for the multicast message.

[0096] In step S403, the multicast management header module moves the multicast message to the destination buffer according to the scheduling descriptor;

[0097] In step S404, the multicast management header module sends a replication descriptor to the data processing destination module, and the replication descriptor indicates the first destination port for sending the multicast message;

[0098] In step S405, the data processing destination module sends the multicast message in the destination buffer to the first destination port according to the replication descriptor.

[0099] In the technical solution provided in this application embodiment, the MMU is divided into multiple MMU areas, which are divided according to their roles, including the main MMU area. The head MMU area stores multicast packets to be processed in its memory pool. The main MMU area determines the destination MMU area for caching multicast packets to be processed, and the head MMU area moves the multicast packets in its own memory pool to the buffer included in the destination MMU area. Subsequently, the destination MMU area is responsible for sending multicast packets to the target port without accessing the memory pool included in the head MMU area again. Here, the MMU area does not need to access the shared memory pool multiple times, nor does it need to generate an independent packet copy for each target port in the shared memory pool. The original multicast packet only needs to be stored once in the memory pool, and the original multicast packet data is subsequently transmitted through the NOC, realizing zero-copy distribution, eliminating redundant data copying operations, and significantly saving memory bandwidth and storage resources.

[0100] In addition, multicast packets in the memory pool included in the header MMU area are moved to the buffer included in the destination MMU area. Subsequently, the destination MMU area is responsible for copying and sending multicast packets to the target port. For the header MMU area, it only needs to send unicast packets to the target port. This solves the problem of unicast packets and multicast packets competing for the exit resources of the shared memory pool in the memory pool included in the header MMU area, and improves multicast performance.

[0101] In this embodiment of the application, each main MMU area in the MMU can independently execute the above steps S401 to S402. The following description only takes the main MMU area corresponding to any channel (such as the first channel) in the MMU as an example, and does not serve as a limitation.

[0102] In step S401 above, the primary MMU area manages one or more MMU areas (including the primary MMU area). The multicast management master module selects one MMU area from the MMU areas managed by the primary MMU area as the head MMU area, which can be the primary MMU area.

[0103] In this embodiment, the multicast management master module can select the head MMU area according to the instructions of the preceding module. For example, if the Direct Memory Access (DMA) engine of the ingress port instructs the multicast packet to be written to the memory pool included in an MMU area managed by the master MMU area, then the multicast management master module selects that MMU area as the head MMU area according to the instructions of the DMA engine.

[0104] The multicast management main module can also poll the MMU areas managed by the main MMU area and use the polled MMU area as the head MMU area.

[0105] The multicast management main module can also select the header MMU area in other ways, without limitation.

[0106] In step S402 above, the destination MMU area is the MMU area to which the multicast message needs to be moved. The destination MMU area may include one or more MMU areas, specifically determined by the length of the multicast message. The total capacity of the destination buffer is greater than or equal to the length of the multicast message, and the sum of the length of the multicast message and the capacity of a buffer is greater than the total capacity of the destination buffer.

[0107] Each MMU area includes a multicast management module that allocates storage blocks in its own memory pool for the received messages (including multicast messages and unicast messages, etc.), writes the received messages into the allocated storage blocks, and generates a frame descriptor corresponding to the received messages. The frame descriptor indicates the storage location and control information of the message. The storage location may include memory address, storage block length, etc., and the control information may include channel, priority, etc.

[0108] The multicast management main module can obtain the length of the multicast packets in the header memory pool. Based on the length of the multicast packets in the header memory pool and the occupancy status of the buffer corresponding to the first channel, it determines one or more unoccupied MMU areas as destination MMU areas, thereby allocating destination MMU areas for multicast packets.

[0109] The length of the multicast packets in the head memory pool can be determined based on the frame descriptor generated by the multicast management header module, or it can be determined based on the instructions of the preceding module, such as the length of the multicast packets indicated by the DMA engine of the ingress port.

[0110] The scheduling descriptor indicates the destination MMU area allocated for the multicast message; that is, the scheduling descriptor is used to indicate the data in the buffer included in the destination MMU area. In this embodiment, the scheduling descriptor may include an identifier of the destination MMU area, and may also include the storage location of the multicast message in the header memory pool, the identifier of the destination MMU area, the identifier of the channel to which the multicast message is stored in the buffer, and the storage location of the multicast message in the buffer (including storage address, length, etc.).

[0111] After determining the head MMU area and the destination MMU area, the multicast management master module generates a scheduling descriptor and sends the scheduling descriptor to the multicast management head module through the Multicast NOC.

[0112] In step S403 above, the multicast management header module receives the scheduling descriptor sent by the multicast management master module, and then, based on the scheduling descriptor, stores the multicast packets in the header memory pool into the destination buffer, that is, moves the multicast packets into the destination buffer. The multicast packet moving operation is described in detail below, but will not be elaborated here.

[0113] In step S404 above, the copy descriptor is used to instruct the destination MMU area to copy the multicast message to the sending port (such as the first destination port). The copy descriptor may include the first destination port, the storage location of the multicast message in the buffer (including storage address, length, etc.), and the control information of the multicast message (including the channel of the buffer where the multicast message is located, etc.).

[0114] After the multicast message is moved into the destination buffer, the multicast management header module generates a replication descriptor and sends the replication descriptor to the data processing destination module. The data processing destination module then receives the replication descriptor and executes step S405, which, based on the replication descriptor, sends the multicast message from the destination buffer to the first destination port.

[0115] In this embodiment of the application, the first target port may include multiple output ports (such as a first output port and a second output port), and one first target port may send multiple multicast messages. When sending one multicast message through each first target port (i.e., one output port), the multicast management header module executes steps S404 to S405 once to complete the copying and sending of the multicast message.

[0116] In some embodiments, if the first destination port includes multiple outgoing ports (such as a first outgoing port and a second outgoing port), the multicast management header module can generate a replication descriptor corresponding to each outgoing port, such as generating a first replication descriptor corresponding to the first outgoing port and a second replication descriptor corresponding to the second outgoing port. The first replication descriptor indicates the first outgoing port from which the multicast message is sent, and the second replication descriptor indicates the second outgoing port from which the multicast message is sent. The multicast management header module sends the first replication descriptor and the second replication descriptor to the data processing destination module. Thus, the data processing destination module can send the multicast message in the destination buffer to the first outgoing port according to the first replication descriptor, and send the multicast message in the destination buffer to the second outgoing port according to the second replication descriptor.

[0117] In this way, when the data processing destination module processes the replication descriptor from a multicast management module and sends the packet data to the target port, it can receive replication descriptors from other multicast management modules. When sending the packet data to the target port, it can immediately process the replication descriptors from other multicast management modules, thereby improving the forwarding efficiency of multicast packets and enhancing multicast performance.

[0118] In some embodiments, if the first destination port includes multiple output ports (such as a first output port and a second output port), the multicast management header module can generate a replication descriptor (such as a first replication descriptor) corresponding to an output port (such as the first output port). The first replication descriptor indicates the first output port that sends the multicast message and sends the first replication descriptor to the data processing destination module. In this way, the data processing destination module can send the multicast message in the destination buffer to the first output port according to the first replication descriptor.

[0119] Additionally, the multicast management header module instructs the multicast management modules included in other MMU areas (i.e., other multicast management modules) to send a second replication descriptor to the data processing module included in the destination MMU area. The second replication descriptor indicates the second output port for sending multicast messages. Specifically, the multicast management header module sends the destination MMU area's linked list information to the multicast management modules included in other MMU areas (i.e., other multicast management modules). The linked list information includes the identifier of the second output port, the storage location of the multicast message in the buffer, and the control information of the multicast message. The other multicast management module generates a second replication descriptor corresponding to the second output port, which indicates the second output port for sending multicast messages, and sends the second replication descriptor to the data processing destination module. In this way, the data processing destination module can send the multicast message in the destination buffer to the second output port according to the second replication descriptor.

[0120] In this embodiment, the number of second output ports can be one or more. When the first target port includes multiple second output ports, the number of other MMU areas is also multiple. Each second output port corresponds one-to-one with another MMU area; that is, one multicast management module generates a second replication descriptor corresponding to a second output port. In this way, multiple multicast management modules can generate replication descriptors in parallel, guiding the data processing destination module to send packet data to different output ports. Thus, when the data processing destination module processes a replication descriptor from one multicast management module and sends packet data to the target port, it can receive replication descriptors from other multicast management modules. After sending the packet data to the target port, it can immediately process the replication descriptors from other multicast management modules, improving the forwarding efficiency of multicast packets and enhancing multicast performance.

[0121] The multicast management modules of different MMU areas generate replication descriptors in parallel, eliminating the need to poll each port in a fixed order or to serially schedule queue data on different ports. This solves the problems of idle ports occupying scheduling resources and high-load ports being forced to wait, thereby improving the overall throughput of the switching chip and overcoming the performance limitations imposed by serial scheduling.

[0122] In some embodiments, the target MMU region includes multiple MMU regions; in this case, step S403 above may include, for example... Figure 5 The steps shown are as follows:

[0123] In step S4031, the multicast management head module sends a corresponding frame descriptor to each data processing destination module according to the scheduling descriptor. The frame descriptor indicates the storage location of the multicast message in the corresponding destination buffer.

[0124] In this embodiment of the application, taking one MMU area included in the destination MMU area as an example, for the data processing destination module and destination buffer included in the MMU area, the multicast management head module generates a frame descriptor corresponding to the MMU area according to the received scheduling descriptor. The frame descriptor indicates the storage location of multicast packets in the destination buffer. The multicast management head module can send the frame descriptor to the data processing destination module through FD NOC, and the data processing destination module receives the frame descriptor sent by the multicast management head module.

[0125] When the destination MMU area comprises multiple MMU areas, the data processing modules within each MMU area are designated as data processing destination modules, and the buffers within each MMU area are designated as destination buffers. That is, there are multiple data processing destination modules and multiple destination buffers, and data processing destination modules and destination buffers within the same MMU area correspond to each other. For each data processing destination module, the multicast management header module sends a frame descriptor to that module. The frame descriptor indicates the storage location of the multicast message within the corresponding destination buffer for that data processing destination module.

[0126] In step S4032, the data processing head module reads the data of the multicast message corresponding to each MMU area in the destination MMU area from the head memory pool, and sends the read data to each data processing destination module.

[0127] In step S4033, each data processing destination module stores the received data to the storage location indicated by the received frame descriptor.

[0128] After sending a frame descriptor to the data processing destination module, taking one MMU area included in the destination MMU area as an example, for the data processing destination module and destination buffer included in that MMU area, the data processing head module reads the data of the multicast message corresponding to that MMU area from the head memory pool, and can send the read corresponding data to the data processing destination module through the Data NOC. The data processing destination module receives the data sent by the data processing head module and stores the received data in the storage location indicated by the received frame descriptor.

[0129] In this embodiment, frame descriptors are used to move multicast packets to the buffer within the destination MMU area, ensuring that multicast and unicast packets occupy independent storage resources. Specifically, multicast packets use storage resources within the buffer, while unicast packets use storage resources within the memory pool. Thus, when processing mixed unicast and multicast services, the technical solution provided in this embodiment eliminates the resource contention between multicast and unicast packets by having multicast packets replicate and send them based on the buffer, while unicast packets are sent based on the memory pool. This effectively improves the multicast rate.

[0130] In some embodiments, the destination MMU area includes multiple consecutive MMU areas linked together to meet the requirements of existing communication standards, i.e., a multicast packet is cached in a contiguous block of memory. Among the multiple consecutive MMU areas, the first MMU area is the start MMU area (i.e., the start of packet (SOP) flag), the last MMU area is the end MMU area (i.e., the end of packet (SOP) flag), and the other MMU areas are intermediate MMU areas. In embodiments of this application, the frame descriptor may also indicate the number of consecutive MMU areas.

[0131] For ease of understanding, the data processing modules included in the starting MMU area will be referred to as the starting data processing module, the data processing modules included in the intermediate MMU area will be referred to as the intermediate data processing module, and the data processing modules included in the ending MMU area will be referred to as the ending data processing module.

[0132] In this case, step S4033 above, that is, each data processing destination module stores the received data to the storage location indicated by the received frame descriptor, can be:

[0133] The data processing start module and the data processing intermediate module store the received data into the storage location indicated by the received frame descriptor; and send a write completion message to the data processing end module.

[0134] The data processing end module receives write completion messages from the data processing start module and the data processing intermediate module; stores the received data in the storage location indicated by the received frame descriptor and generates a write completion message; counts the total number of write completion messages obtained; when the total number of write completion messages obtained is the same as the number of multiple consecutive MMU areas, it sends a move completion message to the multicast management header module, indicating that the multicast message move is complete.

[0135] In this embodiment of the application, the data processing head module can send data in parallel to the data processing start module, the data processing middle module, and the data processing end module through the Data NOC. Correspondingly, the data processing start module, the data processing middle module, and the data processing end module process the data in parallel, that is, they respectively store the received data to the storage location indicated by their respective received frame descriptors.

[0136] The data processing initiation module, intermediate data processing module, and termination data processing module process data at different speeds and complete data storage at different speeds. After each data processing module completes data storage, it can send a write-done message to the termination module via MulticastNOC. Specifically, the initiation module stores the received data at the storage location indicated by the received frame descriptor, generates a write-done message, and sends it to the termination module. The intermediate data processing module stores the received data at the storage location indicated by the received frame descriptor, generates a write-done message, and sends it to the termination module. The termination module stores the received data at the storage location indicated by the received frame descriptor and generates a write-done message.

[0137] The data processing completion module receives write-complete messages from the data processing initiation module and the data processing intermediate module, as well as write-complete messages it generates itself. The data processing completion module counts the total number of write-complete messages received. It then compares this total number with the number of consecutive MMU regions (indicated by the frame descriptor). When the total number of write-complete messages matches the number of consecutive MMU regions, it indicates that the entire multicast packet has been moved to the destination buffer. The data processing completion module then sends a move-complete message to the multicast management header module, indicating that the multicast packet move is complete.

[0138] After receiving the migration completion message, the multicast management header module determines that the multicast message migration is complete, and then sends replication descriptors to multiple data processing destination modules to execute the replication and transmission of multicast messages.

[0139] In this embodiment, the data transfer of multicast messages conforms to existing communication standards, which simplifies the implementation and ease of implementation of the technical solutions provided in this embodiment.

[0140] In this embodiment, other methods can also be used to move multicast packets. For example, the multicast management header module can send frame descriptors to each data processing destination module via the FD NOC. The frame descriptor indicates the storage location of the packet in the header memory pool, the storage location in the destination buffer, and control information, etc. The storage location may include memory address, storage block length, etc., and the control information may include channel, priority, etc. Then, each data processing destination module reads data from the header memory pool according to the received frame descriptor and writes it to the corresponding destination buffer. Another example is that the destination MMU area includes multiple non-contiguous MMU areas. Other operations are the same as when the destination MMU area includes multiple contiguous MMU areas.

[0141] In some embodiments, the destination MMU area comprises multiple consecutive MMU areas linked together to meet the requirements of existing communication standards, where a multicast message is cached in a contiguous block of memory. The replication descriptor may also indicate the total number of copies of the multicast message.

[0142] In this case, step S404 above, that is, the multicast management head module sends the replication descriptor to the data processing destination module, can be: the multicast management head module sends the replication descriptor to the data processing start module.

[0143] Step S405 above, whereby the data processing destination module sends the multicast message in the destination buffer to the first destination port according to the replication descriptor, can be:

[0144] The data processing start module receives the replication descriptor sent by the multicast management header module, sends the data at the storage location indicated by the received frame descriptor to the first target port, and sends the replication descriptor to the data processing module included in the next MMU area of ​​the start MMU area on the chain;

[0145] The data processing intermediate module receives the copy descriptor sent by the data processing module in the previous MMU area of ​​the intermediate MMU area on the serial link, and sends the data at the storage location indicated by the received frame descriptor to the first target port; it also sends the copy descriptor to the data processing module in the next MMU area of ​​the intermediate MMU area on the serial link.

[0146] The data processing end module receives the replication descriptor sent by the data processing module of the previous MMU area in the chain that is the end MMU area, and sends the data at the storage location indicated by the received frame descriptor to the first target port; increments the cumulative number of multicast message transmissions by 1; when the number of transmissions is the same as the total number of replications, sends a replication completion message to the multicast management processing module in the main MMU area.

[0147] In this embodiment, the data processing head module can obtain information about the first target port from the multicast management master module. The multicast management head module constructs a replication descriptor and sends the replication descriptor to the data processing start module via Multicast NOC.

[0148] The data processing initiation module receives the replication descriptor, determines the first target port based on the replication descriptor, and sends a copy of the data at the storage location indicated by the received frame descriptor to the first target port. After the data transmission is completed, the data processing initiation module can construct a new replication descriptor based on the received replication descriptor and send the new replication descriptor to the data processing module included in the next MMU area of ​​the MMU area on the serial link through Multicast NOC.

[0149] The subsequent data processing module receives a replication descriptor sent by the data processing module of the previous MMU area in the MMU area on the chain; determines the first target port based on the replication descriptor, and sends a copy of the data at the storage location indicated by the received frame descriptor to the first target port; after the data transmission is completed, the data processing module can construct a new replication descriptor based on the received replication descriptor, and send the new replication descriptor to the data processing module of the next MMU area in the chain via Multicast NOC.

[0150] When the data processing completion module receives the replication descriptor, it determines the first target port based on the replication descriptor and sends a copy of the data at the storage location indicated by the received frame descriptor to the first target port. After the data is sent, the data processing completion module increments the multicast message transmission count by 1, with the initial value of the transmission count being 0.

[0151] In this embodiment, the first target port may include multiple output ports (such as a first output port and a second output port), and one first target port may send multiple multicast messages, that is, one multicast message needs to be copied and sent multiple times. The data processing completion module sends one copy of data to the first target port to indicate that the multicast message has completed one copy and transmission.

[0152] When the number of transmissions is the same as the total number of copies, the multicast message replication is complete. The data processing end module can send a replication completion message to the multicast management and processing master module through the Multicast NOC. After receiving the replication completion message, the multicast management and processing master module can determine that the multicast message replication has been completed.

[0153] In this embodiment, the multicast packet data is stored sequentially in the corresponding buffers according to the arrangement order of the MMU areas on the serial link. When copying and sending multicast packets, the data stored in the corresponding buffers is also sent to the first target port sequentially according to the arrangement order of the MMU areas on the serial link, ensuring the correct transmission of multicast packets and avoiding out-of-order multicast packet data that could lead to packet transmission failure.

[0154] In some embodiments, if the first target port includes multiple output ports (such as a first output port and a second output port), the multicast management header module can generate a first replication descriptor corresponding to the first output port. The first replication descriptor indicates the first output port for sending multicast messages and sends the first replication descriptor to the data processing start module.

[0155] In this way, the data processing initiation module can send the data at the storage location indicated by the received frame descriptor to the first output port according to the first replication descriptor. After the data transmission is completed, a new first replication descriptor is constructed and sent to the data processing module included in the next MMU area of ​​the MMU area on the serial link through Multicast NOC.

[0156] The subsequent data processing module sends a copy of the data at the storage location indicated by the received frame descriptor to the first output port according to the first replication descriptor; after the data transmission is completed, the data processing module constructs a new first replication descriptor and sends the new first replication descriptor to the data processing module included in the next MMU area of ​​the MMU area on the serial link through Multicast NOC.

[0157] The data processing completion module sends a copy of the data at the storage location indicated by the received frame descriptor to the first output port according to the first replication descriptor. After the data transmission is completed, the data processing completion module increments the multicast message transmission count by 1. When the transmission count is the same as the total number of replications, the data processing completion module can send a replication completion message to the multicast management and processing master module through the Multicast NOC.

[0158] In addition, the multicast management head module sends the destination MMU area's linked list information to other MMU areas, including the multicast management modules (i.e., other multicast management modules). The linked list information includes the identifier of the second output port, the storage location of the multicast message in the buffer, and the control information of the multicast message. Based on the linked list information, the other multicast management modules generate a second replication descriptor corresponding to the second output port. The second replication descriptor indicates the second output port for sending the multicast message and sends the second replication descriptor to the data processing start module.

[0159] In this way, the data processing initiation module can send the data at the storage location indicated by the received frame descriptor to the second output port according to the second replication descriptor. After the data transmission is completed, a new second replication descriptor is constructed and sent to the data processing module included in the next MMU area of ​​the MMU area on the serial link through Multicast NOC.

[0160] The subsequent data processing module sends a copy of the data at the storage location indicated by the received frame descriptor to the second output port according to the second replication descriptor; after the data transmission is completed, the data processing module constructs a new second replication descriptor and sends the new second replication descriptor to the data processing module included in the next MMU area of ​​the MMU area on the serial link through Multicast NOC.

[0161] The data processing completion module sends a copy of the data at the storage location indicated by the received frame descriptor to the second output port according to the second replication descriptor. After the data transmission is completed, the data processing completion module increments the multicast message transmission count by 1. When the transmission count is the same as the total number of replications, the data processing completion module can send a replication completion message to the multicast management processing master module through the Multicast NOC.

[0162] In this embodiment, the number of second output ports can be one or more. When the first target port includes multiple second output ports, the number of other MMU areas is also multiple. Each second output port corresponds one-to-one with another MMU area; that is, one multicast management module generates a second replication descriptor corresponding to a second output port. In this way, multiple multicast management modules can generate replication descriptors in parallel, guiding the data processing destination module to send data to different output ports. Thus, when the data processing destination module processes a replication descriptor from one multicast management module and sends the packet data to the target port, it can receive replication descriptors from other multicast management modules. After sending the packet data to the target port, it can immediately process the replication descriptors from other multicast management modules, improving the forwarding efficiency of multicast packets and enhancing multicast performance.

[0163] The multicast management modules of different MMU areas generate replication descriptors in parallel, eliminating the need to poll each port in a fixed order or to serially schedule queue data on different ports. This solves the problems of idle ports occupying scheduling resources and high-load ports being forced to wait, thereby improving the overall throughput of the switching chip and overcoming the performance limitations imposed by serial scheduling.

[0164] In this embodiment, if the destination MMU area includes multiple MMU areas, the multicast management header module can also send a replication descriptor to each data processing destination module separately. This eliminates the need to construct replication descriptors for the initial MMU area and intermediate MMU areas, reducing the load on the MMU areas.

[0165] In some embodiments, each primary MMU area manages the virtual buffer of each MMU area included in the MMU. After sending a scheduling descriptor to the head MMU area, each multicast management master module sets the virtual buffer corresponding to the destination MMU area to be occupied; after the data processing destination module sends a multicast message to the first destination port, it sets the virtual buffer corresponding to the destination MMU area to be unoccupied.

[0166] In this embodiment of the application, the multicast management master module maintains a virtual cache, which corresponds to the occupancy status of each buffer in the corresponding channel of the multicast management master module.

[0167] The multicast management master module can determine the unoccupied MMU areas in the buffers based on the virtual buffer, and then execute step S402 to allocate a destination MMU area for the multicast message. For example, multiple consecutive MMU areas may be allocated as destination MMU areas. The buffers included in these multiple consecutive MMU areas must be unoccupied, and the capacity of the buffers included in these multiple consecutive MMU areas must be greater than or equal to the length of the multicast message. A scheduling descriptor is then sent to the multicast management header module. After allocating the destination MMU areas for the multicast message, the multicast management master module sets the virtual buffers corresponding to these multiple consecutive MMU areas to be occupied. Subsequently, the multicast management master module will not allocate these multiple consecutive MMU areas to other multicast messages to avoid multicast message transmission failures due to data being overwritten in the buffers included in these multiple consecutive MMU areas.

[0168] In this embodiment, the completion of the data processing destination module sending multicast packets to the first target port can be determined by a replication completion message. The sending of the replication completion message is described above and will not be repeated here. Upon receiving the replication completion message, the multicast management master module indicates that the replication and sending of the multicast packets is complete and sets the virtual buffers corresponding to these multiple consecutive MMU areas to unoccupied. In this way, the multicast management master module can continue to allocate these multiple consecutive MMU areas to other multicast packets, assisting in the replication and sending of other multicast packets and improving multicast performance.

[0169] In some embodiments, the header memory pool may also store unicast messages to be processed; the data processing header module reads the unicast messages from the memory pool; and sends the unicast messages to the second destination port. The second destination port then sends the unicast messages to other devices.

[0170] In this embodiment of the application, the first target port and the second target port may be the same or different.

[0171] In mixed unicast and multicast service scenarios, unicast packets often have higher priority than multicast packets, leading to unicast packets consuming multicast packet resources. In this embodiment, a distributed MMU design supports parallel transmission across multiple ports. Multicast packets are stored in a buffer, while unicast packets are stored in a memory pool. The buffer and memory pool are independent of each other, eliminating the mutual resource consumption between multicast and unicast packets and improving the multicast rate.

[0172] In the technical solution provided in this application embodiment, message processing can be divided into two stages: stage one is data transfer, and stage two is copying and sending. The following is in conjunction with... Figure 2 The distributed MMU shown Figure 3a The chaining method shown and Figure 6 The data migration process shown is as follows: Figure 7The replication and transmission phase process is described in detail below. Each MMU area includes a multicast management module, a memory pool, and four buffers (responsible for channels 0 through 3), each with a capacity of 5KB. Taking MMU area 0, corresponding to channel 0, as the master MMU area as an example, MMU area 0 includes multicast management module 0.

[0173] Phase 1, data migration (as described in step S403 above).

[0174] The virtual cache managed by the multicast management module 0 is shown in Table 1.

[0175] Table 1

[0176]

[0177]

[0178] In Table 1, buffer 0X represents the buffer corresponding to channel 0 included in MMU area X, where X = 0, 1, ..., 15. In Table 1, buffers 00, 08, and 09 are occupied, while the other buffers are not occupied. That is, buffers 5, except for buffers 00, 08, and 09, can be used to buffer multicast message data.

[0179] Multicast management module 0 (i.e., the main multicast management module) allocates four consecutive unused MMU areas—MMU area 1 (starting MMU area), MMU area 2 (intermediate MMU area), MMU area 3 (intermediate MMU area), and MMU area 7 (ending MMU area)—to multicast message 1 as the destination MMU area, according to the instructions of the preceding module. This means that buffers 01 to 03 and 07 are selected to buffer the multicast message data. The length of multicast message 1 is 17K bits. Figure 8 The payload of multicast message 1 is shown. Then, the multicast management module 0 sets the virtual buffers corresponding to MMU area 1, MMU area 2, MMU area 3, and MMU area 7 to be occupied, that is, sets the occupancy status of buffers 01 to 03 and buffer 07 to be occupied, as shown in Table 2.

[0180] Table 2

[0181]

[0182] In addition, the multicast management module 0 selects MMU area 4 as the header MMU area, and the memory pool 4 (i.e. the header memory pool) included in MMU area 4 stores multicast message 1.

[0183] Multicast management module 0 sends scheduling descriptor 1 to multicast management module 4 (i.e., multicast management header module) included in MMU area 4 via Multicast NOC. Scheduling descriptor 1 may include the identifier of the destination MMU area (i.e., MMU area 1, MMU area 2, MMU area 3, MMU area 7), the identifier of channel 0, the starting storage address of the buffer corresponding to channel 0 (i.e., buffer 01 to buffer 03, buffer 07), and the length of data to be stored, etc.

[0184] Multicast management module 4, based on scheduling descriptor 1, sends frame descriptors to the data processing modules included in the destination MMU area via FD NOC. Specifically, the starting storage address bit d01 of buffer 01 needs to store 5K bits of data; the starting storage address bit d02 of buffer 02 needs to store 5K bits of data; the starting storage address bit d03 of buffer 03 needs to store 5K bits of data; and the starting storage address bit d07 of buffer 07 needs to store 2K bits of data. Multicast management module 4 sends frame descriptor 1 to data processing module 1 included in MMU area 1, frame descriptor 2 to data processing module 2 included in MMU area 2, frame descriptor 3 to data processing module 3 included in MMU area 3, and frame descriptor 4 to data processing module 7 included in MMU area 7. Frame descriptor 1 includes the identifier of channel 0, the starting storage address d01 of buffer 01 and the length of data to be stored (i.e., 5K bits), the identifier of the end MMU area and the number of consecutive MMU areas (i.e., 4), etc. Frame descriptor 2 includes the identifier of channel 0, the starting storage address d02 of buffer 02 and the length of data to be stored (i.e., 5K bits), the identifier of the end MMU area and the number of consecutive MMU areas (i.e., 4), etc. Frame descriptor 3 includes the identifier of channel 0, the starting storage address d03 of buffer 03 and the length of data to be stored (i.e., 5K bits), the identifier of the end MMU area and the number of consecutive MMU areas (i.e., 4), etc. Frame descriptor 4 includes the identifier of channel 0, the starting storage address d07 of buffer 07 and the length of data to be stored (i.e., 2K bits), the identifier of the end MMU area and the number of consecutive MMU areas (i.e., 4), etc.

[0185] The data processing module 4 included in MMU area 4 reads data from memory pool 4, such as... Figure 8The data shown, consisting of 5K bit length data 1, 5K bit length data 2, 5K bit length data 3, and 2K bit length data 4, is sent in parallel to data processing module 7 via the Data NOC. Data 1 is sent to data processing module 1, data 2 to data processing module 2, data 3 to data processing module 3, and data 4 to data processing module 7. Here, data processing module 4 can also read the unicast packet payload from memory pool 4 in parallel and send the unicast packet payload to the corresponding output port (e.g., output port 3), so that output port 3 encapsulates the unicast packet payload into a unicast packet and sends it to other devices. Here, the unicast packet payload and the multicast packet payload are stored in different memories, and can be considered to have the same priority and will not block each other.

[0186] Data processing module 1 stores data 1 into the storage location corresponding to frame descriptor 1 within buffer 01. After storage, it sends a Write Done message to data processing module 7. Data processing module 2 stores data 2 into the storage location corresponding to frame descriptor 2 within buffer 02. After storage, it sends a Write Done message to data processing module 7. Data processing module 3 stores data 3 into the storage location corresponding to frame descriptor 3 within buffer 03. After storage, it sends a Write Done message to data processing module 7. Data processing module 7 stores data 4 into the storage location corresponding to frame descriptor 7 within buffer 07 and counts the number of Write Done messages obtained. After data processing module 7 finishes storing data 4, if the number of Write Done messages obtained is equal to 4, then data processing module 7 sends a move completion message to multicast management module 4 via Multicast NOC.

[0187] After receiving the relocation completion message, the multicast management module 4 executes... Figure 7 The copy and send phase process is shown below.

[0188] Phase 2, copying and sending (as described in steps S404 to S405 above). Taking multicast message 1 corresponding to two outgoing ports (e.g., outgoing port 1 and outgoing port 2) as an example.

[0189] Multicast management module 4 sends the destination MMU area's linked list information 1 to any of the MMU areas 1 to 15, including the multicast management module (such as multicast management module 8). Linked list information 1 may include a linked list composed of MMU areas 1 to 3 and MMU area 7, as well as the identifier of the output port (such as output port 2), the identifier of channel 0, the storage location of the multicast message in the buffer, and the total number of copies. Multicast management module 4 and multicast management module 8 perform the following operations in parallel.

[0190] (1) The multicast management module 4 constructs a replication descriptor 1 corresponding to port 1 and sends the replication descriptor 1 to the data processing module 1 through the Multicast NOC. The replication descriptor 1 includes the identifier of the output port (such as output port 1), the identifier of channel 0, the storage location of the multicast message in the buffer, the total number of replications, etc.

[0191] Data processing module 1 reads data 1 from buffer 01 according to replication descriptor 1 and sends data 1 to output port 1. After sending, data processing module 1 constructs a new replication descriptor 1 corresponding to output port 1 and sends the new replication descriptor 1 to data processing module 2.

[0192] Data processing module 2 reads data 2 from buffer 02 according to replication descriptor 1 and sends data 2 to output port 1. After sending, data processing module 2 constructs a new replication descriptor 1 corresponding to output port 1 and sends the new replication descriptor 1 to data processing module 3.

[0193] Data processing module 3 reads data 3 from buffer 03 according to replication descriptor 1 and sends data 3 to output port 1. After sending, data processing module 3 constructs a new replication descriptor 1 corresponding to output port 1 and sends the new replication descriptor 1 to data processing module 7.

[0194] Data processing module 7 reads data 4 from buffer 07 according to replication descriptor 1 and sends data 4 to output port 1. After sending, data processing module 7 increments the transmission count of multicast message 1 by 1. If the transmission count is less than the total number of replicas included in replication descriptor 1, it continues to wait for the next transmission of data 4.

[0195] After receiving data 1 to data 4, port 1 can combine data 1 to data 4 into a complete multicast message 1 payload, encapsulate the payload into multicast message 1, and send multicast message 1 to other devices.

[0196] In this embodiment, one outgoing port can send multiple multicast messages. When outgoing port 1 needs to send multiple multicast messages 1, the multicast management module 4 can reconstruct the replication descriptor 1 corresponding to outgoing port 1 and send the replication descriptor 1 to the data processing module 1 through MulticastNOC. After the data 4 is sent, the data processing module 7 increments the number of times multicast messages 1 have been sent by 1.

[0197] (2) The multicast management module 8 constructs a replication descriptor 2 corresponding to port 2 and sends it to the data processing module 1 via the Multicast NOC. Replication descriptor 2 includes the identifier of the output port (e.g., output port 2), the identifier of channel 0, the storage location of the multicast message in the buffer, the total number of copies, etc. Replication descriptor 2 includes the same total number of copies as replication descriptor 1.

[0198] Data processing module 1 reads data 1 from buffer 01 according to replication descriptor 2 and sends data 1 to output port 2. After sending, data processing module 1 constructs a new replication descriptor 2 corresponding to output port 2 and sends the new replication descriptor 2 to data processing module 2.

[0199] Data processing module 2 reads data 2 from buffer 02 according to replication descriptor 2 and sends data 2 to output port 2. After sending, data processing module 2 constructs a new replication descriptor 2 corresponding to output port 2 and sends the new replication descriptor 2 to data processing module 3.

[0200] Data processing module 3 reads data 3 from buffer 03 according to replication descriptor 2 and sends data 3 to output port 2. After sending, data processing module 3 constructs a new replication descriptor 2 corresponding to output port 2 and sends the new replication descriptor 2 to data processing module 7.

[0201] Data processing module 7 reads data 4 from buffer 07 according to replication descriptor 2 and sends data 4 to output port 2. After sending, data processing module 7 increments the transmission count of multicast message 1 by 1. If the transmission count is less than the total number of replicas included in replication descriptor 2, it continues to wait for the next transmission of data 4.

[0202] In this embodiment, one outgoing port can send multiple multicast messages. When outgoing port 2 needs to send multiple multicast messages 1, the multicast management module 8 can reconstruct the replication descriptor 2 corresponding to outgoing port 2 and send the replication descriptor 2 to the data processing module 1 through MulticastNOC. After the data 4 is sent, the data processing module 7 increments the number of times multicast messages 1 have been sent by 1.

[0203] When the total number of multicast messages 1 sent through output ports 1 to 2 reaches the total number of copies included in replication descriptor 1 (or replication descriptor 2), the data processing module 7 sends a replication completion message to the multicast management module 0 through the Multicast NOC.

[0204] Based on the replication completion message, the multicast management module 0 releases the virtual buffers corresponding to MMU areas 1 to 3 and MMU area 7, that is, sets the occupancy status of buffers 01 to 03 and 07 to unoccupied, as shown in Table 3.

[0205] Table 3

[0206]

[0207] In this embodiment, after the multicast management module 0 allocates MMU areas 1 to 3 and MMU area 7 to multicast message 1, before completing the copying and sending of multicast message 1, the multicast management module 0 can continue to process other multicast messages. For example, it can allocate unoccupied MMU areas 10, 11, 15, and 14 to multicast message 2. Then, the multicast management module 0 sets the virtual buffers corresponding to MMU areas 10, 11, 15, and 14 to be occupied, that is, sets the occupancy status of buffers 010, 011, 015, and 014 to be occupied, as shown in Table 4.

[0208] Table 4

[0209]

[0210] For the subsequent processing of multicast message 2, please refer to the relevant processing of multicast message 1 mentioned above, which will not be repeated here.

[0211] Different multicast message data are stored in buffers within different MMU areas. Conflicts can occur between different MMU areas, but the data processing modules within each MMU area can process the data in their respective buffers in parallel, improving multicast message processing speed and multicast performance.

[0212] In this embodiment, the original multicast message only needs to be stored once in the memory pool. The original multicast message data is then transmitted through the NOC, achieving zero-copy distribution, eliminating redundant data copying operations, significantly saving memory bandwidth and storage resources, and reducing resource waste.

[0213] In addition, in this embodiment, the multicast management modules of different MMU areas generate replication descriptors in parallel, eliminating the need to poll each port in a fixed order and to serially schedule queue data of different ports. This solves the problem of idle ports occupying scheduling resources and high-load ports being forced to wait, thereby improving the overall throughput of the switching chip and overcoming the performance limitations imposed by serial scheduling.

[0214] Furthermore, in this embodiment, the MMU is divided into multiple MMU areas. This distributed MMU design supports parallel transmission across multiple ports and splits the transmission of multicast messages into two stages. The buffer storing multicast messages in the second stage is independent of the memory pool storing unicast messages, eliminating the impact of mutual resource occupation between multicast messages and unicast messages and effectively improving the multicast rate.

[0215] Corresponding to the aforementioned MMU, embodiments of this application provide a message processing method, such as... Figure 9 As shown, this method is applied to an MMU, which includes at least one main MMU region and multiple MMU regions managed by each main MMU region; the method includes the following steps:

[0216] Step S901: Each main MMU area selects a head MMU area from the multiple MMU areas managed by that main MMU area. The head MMU area includes a memory pool that stores multicast messages to be processed.

[0217] In step S902, each primary MMU area sends a scheduling descriptor to the head MMU area, the scheduling descriptor indicating the destination MMU area allocated by the primary MMU area for the multicast message;

[0218] In step S903, the head MMU area moves the multicast message to the buffer included in the destination MMU area according to the scheduling descriptor;

[0219] In step S904, the header MMU area sends a replication descriptor to the destination MMU area, and the replication descriptor indicates the first destination port for sending the multicast message;

[0220] In step S905, the destination MMU area sends a multicast message to the first destination port based on the replication descriptor.

[0221] In the technical solution provided in this application embodiment, the MMU is divided into multiple MMU areas, which are divided according to their roles, including the main MMU area. The head MMU area stores multicast packets to be processed in its memory pool. The main MMU area determines the destination MMU area for caching the multicast packets to be processed, and the head MMU area moves the multicast packets in its own memory pool to the buffer included in the destination MMU area. Subsequently, the destination MMU area is responsible for sending multicast packets to the target port without needing to access the memory pool included in the head MMU area again. Here, the MMU area does not need to access the shared memory pool multiple times, nor does it need to generate an independent packet copy for each target port in the shared memory pool, thus saving memory bandwidth resources and storage resources.

[0222] In addition, multicast packets in the memory pool included in the header MMU area are moved to the buffer included in the destination MMU area. Subsequently, the destination MMU area is responsible for copying and sending multicast packets to the target port. For the header MMU area, it only needs to send unicast packets to the target port. This solves the problem of unicast packets and multicast packets competing for the exit resources of the shared memory pool in the memory pool included in the header MMU area, and improves multicast performance.

[0223] In some embodiments, the target MMU region includes multiple MMU regions; in this case, step S903 above may include:

[0224] The head MMU area sends the corresponding frame descriptor to each MMU area included in the destination MMU area according to the scheduling descriptor. The frame descriptor indicates the storage location of the multicast message in the buffer included in the corresponding MMU area; reads the data of the multicast message corresponding to each MMU area included in the destination MMU area from the memory pool; and sends the read corresponding data to each MMU area included in the destination MMU area.

[0225] Each MMU area included in the destination MMU area stores the received data to the storage location indicated by the received frame descriptor.

[0226] In some embodiments, the target MMU area includes a plurality of consecutive MMU areas linked together; the frame descriptor also indicates the number of the plurality of consecutive MMU areas;

[0227] Each MMU area included in the aforementioned target MMU area stores the received data to the storage location indicated by the received frame descriptor, which can be:

[0228] The start MMU and intermediate MMUs in a series of consecutive MMUs store the received data to the storage location indicated by the frame descriptor received in the MMU; and send a write completion message to the end MMU in a series of consecutive MMUs.

[0229] The MMU area receives write-complete messages from the start MMU area and intermediate MMU areas as the end MMU area among multiple consecutive MMU areas. It stores the received data in the storage location indicated by the frame descriptor in the MMU area and generates a write-complete message. It counts the total number of write-complete messages obtained. When the total number is the same as the number of multiple consecutive MMU areas, it sends a move-complete message to the head MMU. The move-complete message indicates that the multicast message move is complete.

[0230] After receiving the migration completion message, the head MMU area sends replication descriptors to multiple consecutive MMU areas.

[0231] In this embodiment, after the head MMU receives the transfer completion message, it can determine that the payload of the multicast message has been completely transferred to the buffer included in the destination MMU, and then perform the subsequent copy and send operation, thereby improving the accuracy of multicast message transmission.

[0232] In this embodiment, the head MMU area can also directly execute step S904, i.e., perform the copying and sending operation, after a preset time period of sending the corresponding data to each MMU area included in the destination MMU area. In this embodiment, the destination MMU area does not need to send a move completion message, reducing the load on the destination MMU area.

[0233] In some embodiments, the destination MMU area includes a chained sequence of consecutive MMUs; the replication descriptor also indicates the total number of copies of the multicast message;

[0234] Step S904 above may include: the head MMU area sending a replication descriptor to the start MMU area among multiple consecutive MMU areas;

[0235] Step S905 above may include:

[0236] The starting MMU area receives the copy descriptor sent by the header MMU, sends the data at the storage location indicated by the received frame descriptor to the first target port, and sends the copy descriptor to the next MMU area in the chain.

[0237] The intermediate MMU area in a series of consecutive MMU areas receives the copy descriptor sent by the MMU area preceding the intermediate MMU area in the chain, sends the data at the storage location indicated by the received frame descriptor to the first target port, and sends the copy descriptor to the next MMU area in the chain.

[0238] The last MMU in a series of consecutive MMUs receives the replication descriptor sent by the MMU preceding the last MMU in the chain, and sends the data at the storage location indicated by the received frame descriptor to the first target port; it increments the number of multicast message transmissions by 1; when the number of transmissions is the same as the total number of replications, it sends a replication completion message to the master MMU.

[0239] In some embodiments, the first target port includes a first output port and a second output port; step S904 above may include:

[0240] The head MMU area sends a first replication descriptor to the destination MMU area, the first replication descriptor indicating the first output port for sending multicast messages;

[0241] The head MMU area instructs other MMU areas in the MMU to send a second copy descriptor to the destination MMU area. The second copy descriptor indicates the second output port for sending multicast messages.

[0242] In some embodiments, the memory pool also stores unicast messages to be processed; the above message processing method may further include:

[0243] The head MMU reads unicast messages from the memory pool and sends unicast messages to the second destination port.

[0244] In some embodiments, each primary MMU area manages the virtual cache of each MMU area included in the MMU, and the above-described message processing method may further include:

[0245] After each primary MMU sends a scheduling descriptor to the head MMU area, it sets the virtual buffer corresponding to the destination MMU area to be occupied; after the destination MMU area sends a multicast message to the first target port, it sets the virtual buffer corresponding to the destination MMU area to be unoccupied.

[0246] In the above embodiments, implementation can be achieved entirely or partially through software, hardware, firmware, or any combination thereof. When implemented using software, it can be implemented entirely or partially in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, all or part of the processes or functions described in the embodiments of this application are generated. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, the computer instructions can be transmitted from one website, computer, server, or data center to another website, computer, server, or data center via wired (e.g., coaxial cable, fiber optic, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) means. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server or data center that integrates one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid state disk (SSD)).

[0247] It should be noted that, in this document, relational terms such as "first" and "second" are used only to distinguish one entity or operation from another, and do not necessarily require or imply any such actual relationship or order between these entities or operations. Furthermore, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Without further limitations, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes said element.

[0248] The various embodiments in this specification are described in a related manner. Similar or identical parts between embodiments can be referred to mutually. Each embodiment focuses on describing the differences from other embodiments. In particular, the method embodiments are basically similar to the MMU embodiments, so the description is relatively simple; relevant parts can be referred to the description of the MMU embodiments.

[0249] The above description is merely a preferred embodiment of this application and is not intended to limit the scope of protection of this application. Any modifications, equivalent substitutions, improvements, etc., made within the spirit and principles of this application are included within the scope of protection of this application.

Claims

1. A message processing method, characterized in that, The method is applied to a memory management unit (MMU), wherein the MMU includes at least one main MMU region and multiple MMU regions managed by each main MMU region; the method includes: Each primary MMU region selects a head MMU region from among the multiple MMU regions managed by that primary MMU region. The head MMU region includes a memory pool that stores multicast messages to be processed. A scheduling descriptor is sent to the head MMU region, which instructs the primary MMU region to allocate a destination MMU region for the multicast message. The head MMU area moves the multicast message to the buffer included in the destination MMU area according to the scheduling descriptor; and sends a replication descriptor to the destination MMU area, the replication descriptor indicating the first destination port for sending the multicast message; The destination MMU area sends the multicast message to the first target port according to the replication descriptor.

2. The method according to claim 1, characterized in that, The target MMU region includes multiple MMU regions; The step of moving the multicast message to the buffer included in the destination MMU area according to the scheduling descriptor includes: The head MMU area sends a corresponding frame descriptor to each MMU area included in the destination MMU area according to the scheduling descriptor. The frame descriptor indicates the storage location of the multicast message in the buffer included in the corresponding MMU area. The head MMU area reads the data of the multicast message corresponding to each MMU area included in the destination MMU area from the memory pool. The head MMU area sends the read data to each MMU area included in the destination MMU area. Each MMU area included in the destination MMU area stores the received data to the storage location indicated by the received frame descriptor.

3. The method according to claim 2, characterized in that, The destination MMU region includes multiple consecutive MMU regions linked together in a chain; the frame descriptor also indicates the number of the multiple consecutive MMU regions. Each MMU area included in the destination MMU area stores the received data to the storage location indicated by the received frame descriptor, including: The start MMU and intermediate MMUs in the plurality of consecutive MMUs store the received data to the storage location indicated by the frame descriptor received in the MMU; and send a write completion message to the end MMU in the plurality of consecutive MMUs. The MMU area, being the end MMU area among the plurality of consecutive MMU areas, receives write-complete messages sent by the start MMU area and the intermediate MMU areas, stores the received data in the storage location indicated by the frame descriptor in the MMU area, and generates a write-complete message; counts the total number of obtained write-complete messages; when the total number is the same as the number of the plurality of consecutive MMU areas, sends a move-complete message to the head MMU, the move-complete message indicating that the multicast message move is complete; The header MMU region sends a replication descriptor to the destination MMU region, including: After receiving the relocation completion message, the head MMU area sends a copy descriptor to the plurality of consecutive MMU areas.

4. The method according to claim 2, characterized in that, The destination MMU area includes multiple consecutive MMUs linked together; the replication descriptor also indicates the total number of copies of the multicast message; The step of sending a replication descriptor from the header MMU region to the destination MMU region includes: The head MMU region sends a replication descriptor to the first MMU region among the plurality of consecutive MMU regions; The step of the destination MMU area sending the multicast message to the first target port according to the replication descriptor includes: The starting MMU area receives the replication descriptor sent by the head MMU, sends the data at the storage location indicated by the received frame descriptor to the first target port, and sends the replication descriptor to the next MMU area in the chain. The intermediate MMU area in the plurality of consecutive MMU areas receives the replication descriptor sent by the MMU area preceding the intermediate MMU area on the chain, sends the data at the storage location indicated by the received frame descriptor to the first target port, and sends the replication descriptor to the next MMU area of ​​the intermediate MMU area on the chain. The last MMU area in the plurality of consecutive MMU areas receives the replication descriptor sent by the previous MMU area on the chain, and sends the data at the storage location indicated by the received frame descriptor to the first target port; increments the number of times the multicast message is sent by 1; when the number of times it is sent is the same as the total number of copies, it sends a replication completion message to the master MMU area.

5. The method according to claim 1, characterized in that, The first target port includes a first output port and a second output port; the step of sending a replication descriptor from the header MMU area to the destination MMU area includes: The header MMU area sends a first replication descriptor to the destination MMU area, the first replication descriptor indicating the first output port for sending the multicast message; The header MMU area instructs other MMU areas in the MMU to send a second copy descriptor to the destination MMU area, and the second copy descriptor indicates the second output port for sending the multicast message.

6. The method according to claim 1, characterized in that, The memory pool also stores unicast messages to be processed; the method further includes: The header MMU area reads the unicast message from the memory pool and sends the unicast message to the second target port.

7. The method according to claim 1, characterized in that, Each primary MMU region manages the virtual cache of each MMU region included in the MMU, and the method further includes: After each primary MMU sends a scheduling descriptor to the head MMU area, it sets the virtual buffer corresponding to the destination MMU area to be occupied; after the destination MMU area sends the multicast message to the first target port, it sets the virtual buffer corresponding to the destination MMU area to be unoccupied.

8. An MMU, characterized in that, The MMU includes multiple MMU areas, each MMU area including a memory pool, a buffer, a multicast management module and a data processing module; the multiple MMU areas include at least one main MMU area and multiple MMU areas managed by each main MMU area. Each primary MMU area includes a multicast management module that selects a head MMU area from among the multiple MMU areas managed by that primary MMU area. The head MMU area includes a memory pool that stores multicast packets to be processed. A scheduling descriptor is sent to the multicast management module included in the head MMU area. The scheduling descriptor instructs the primary MMU area to allocate a destination MMU area for the multicast packet. The multicast management module included in the head MMU area moves the multicast packet to the buffer included in the destination MMU area according to the scheduling descriptor; and sends a replication descriptor to the data processing module included in the destination MMU area, the replication descriptor indicating the first destination port for sending the multicast packet; The data processing module included in the destination MMU area sends the multicast message contained in the buffer of the destination MMU area to the first target port according to the replication descriptor.

9. The MMU according to claim 8, characterized in that, The target MMU region includes multiple MMU regions; The multicast management module included in the header MMU area moves the multicast packet to the buffer included in the destination MMU area according to the scheduling descriptor, including: The multicast management module included in the head MMU area sends a corresponding frame descriptor to the data processing module included in each MMU area in the destination MMU area according to the scheduling descriptor. The frame descriptor indicates the storage location of the multicast message in the buffer included in the corresponding MMU area. The data processing module included in the header MMU area reads the data of the multicast message corresponding to each MMU area in the destination MMU area from the memory pool, and sends the read corresponding data to the data processing module included in each MMU area in the destination MMU area; Each MMU area in the destination MMU area includes a data processing module that stores the received data to the storage location indicated by the received frame descriptor.

10. The MMU according to claim 9, characterized in that, The destination MMU region includes multiple consecutive MMU regions linked together in a chain; the frame descriptor also indicates the number of the multiple consecutive MMU regions. Each MMU area in the destination MMU area includes a data processing module that stores the received data to the storage location indicated by the received frame descriptor, including: The data processing modules in the start MMU area and the middle MMU area of ​​the plurality of consecutive MMU areas store the received data to the storage location indicated by the frame descriptor received in the MMU area; and send a write completion message to the data processing module in the end MMU area of ​​the plurality of consecutive MMU areas. The data processing module in the end MMU area of ​​the plurality of consecutive MMU areas receives write-complete messages sent by the data processing modules in the start MMU area and the intermediate MMU area; stores the received data in the storage location indicated by the frame descriptor received in the MMU area, and generates a write-complete message; counts the total number of write-complete messages obtained; when the total number is the same as the number of the plurality of consecutive MMU areas, sends a move-complete message to the multicast management module in the head MMU, the move-complete message indicating that the multicast message move is complete; The multicast management module included in the head MMU sends a replication descriptor to the data processing module included in the destination MMU area, including: After receiving the relocation completion message, the multicast management module included in the head MMU sends a replication descriptor to the data processing module included in the multiple consecutive MMU areas.

11. The MMU according to claim 9, characterized in that, The destination MMU area includes multiple consecutive MMU areas linked together in a chain; the replication descriptor also indicates the total number of copies of the multicast message; The multicast management module included in the head MMU sends a replication descriptor to the data processing module included in the destination MMU area, including: the multicast management module included in the head MMU sends a replication descriptor to the data processing module included in the starting MMU area among the plurality of consecutive MMU areas; The data processing module included in the destination MMU area sends the multicast message contained in the buffer of the destination MMU area to the first target port according to the replication descriptor, including: The data processing module included in the starting MMU area receives the replication descriptor sent by the multicast management module included in the head MMU, sends the data at the storage location indicated by the received frame descriptor to the first target port, and sends the replication descriptor to the data processing module included in the next MMU area of ​​the starting MMU area on the chain. The data processing module of the intermediate MMU area in the plurality of consecutive MMU areas receives the replication descriptor sent by the data processing module of the previous MMU area of ​​the intermediate MMU area on the chain, and sends the data at the storage location indicated by the received frame descriptor to the first target port; and sends the replication descriptor to the data processing module of the next MMU area of ​​the intermediate MMU area on the chain. The data processing module of the end MMU area in the plurality of consecutive MMU areas receives the replication descriptor sent by the data processing module of the previous MMU area on the chain, and sends the data at the storage location indicated by the received frame descriptor to the first target port; increments the cumulative number of transmissions of the multicast message by 1; when the number of transmissions is the same as the total number of replications, sends a replication completion message to the multicast management processing module of the main MMU area.

12. The MMU according to claim 8, characterized in that, The first target port includes a first output port and a second output port; The multicast management module included in the head MMU sends a replication descriptor to the data processing module included in the destination MMU area, including: The multicast management module included in the header MMU sends a first replication descriptor to the data processing module included in the destination MMU area, and the first replication descriptor indicates the first output port for sending the multicast message; The multicast management module included in the head MMU instructs the multicast management modules included in other MMU areas to send a second replication descriptor to the data processing module included in the destination MMU area, and the second replication descriptor indicates the second output port for sending the multicast message.

13. The MMU according to claim 8, characterized in that, The memory pool included in the header MMU also stores unicast messages to be processed; The data processing module included in the header MMU reads the unicast message from the memory pool and sends the unicast message to the second target port.

14. The MMU according to claim 8, characterized in that, Each primary MMU area manages the virtual cache of each MMU area included in the MMU; After sending a scheduling descriptor to the head MMU area, the multicast management module in each main MMU area sets the virtual buffer corresponding to the destination MMU area to be occupied; after the data processing module in the destination MMU area sends the multicast message to the first target port, it sets the virtual buffer corresponding to the destination MMU area to be unoccupied.

15. The MMU according to any one of claims 8-14, characterized in that, The MMU includes at least two MMU regions, which are arranged in a square array. Among the multiple MMU regions, adjacent MMU regions in the horizontal or vertical direction are linked together.

16. The MMU according to claim 15, characterized in that, Each MMU region includes buffers corresponding to four channels; in the square array, the MMU regions located at the four vertices are the main MMU regions; each main MMU region corresponds to one channel; the distance between the MMU region managed by each main MMU region and the main MMU region is less than the distance between the MMU region and other main MMU regions.