Flow table unloading system, method, equipment and cluster

By setting up multiple repositories to store different tunnel encapsulation tables in the uninstall hardware, the host selects the appropriate repository to read encapsulation tables for encapsulation, which solves the problem of low reading efficiency of flow table entries and improves data packet processing efficiency. Reduces network pressure and improves network performance.

CN119135601AActive Publication Date: 2024-12-13ZHUHAI XINGYUN ZHILIAN TECH CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
CN202411608447.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-11-12
Publication Date
2024-12-13
Estimated Expiration
2044-11-12

AI Technical Summary

Technical Problem

In cloud computing networks, the inefficient reading efficiency of flow table entries leads to problems such as data packet processing delays and packet loss, affecting the real-time, throughput and overall performance of the network, and may cause network congestion and performance bottlenecks.

Method used

By setting up multiple repositories in the unloading hardware, each repository stores a different tunnel encapsulation table. When the host receives the original message, it selects the appropriate repository to read the corresponding tunnel encapsulation table for encapsulation, improving data packet processing efficiency.

Benefits of technology

It improves the efficiency of data packet processing, reduces the host resource burden, reduces network pressure, avoids delay and packet loss problems, and improves network performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119135601A_ABST
    Figure CN119135601A_ABST
Patent Text Reader

Abstract

The invention provides a flow table unloading system, method and device and a cluster. The system comprises a host used for unloading a tunnel encapsulation table to unloading hardware; the unloading hardware comprises a plurality of storage libraries, each storage library comprises one or more storage units, the storage units are used for storing tunnel packaging tables, the first storage library is used for storing first tunnel packaging tables, the second storage library is used for storing second tunnel packaging tables, and the second tunnel packaging tables are obtained by copying according to the first tunnel packaging tables; and the processing module is used for selecting to read the first tunnel encapsulation table from the first storage library and encapsulating the first original message according to the first tunnel encapsulation table to obtain a first tunnel message under the condition that the first original message is received, or selecting to read the second tunnel encapsulation table from the second storage library and encapsulating the second tunnel encapsulation table to obtain a second tunnel message according to the second tunnel encapsulation table. And packaging the first original message according to the second tunnel packaging table to obtain a second tunnel message. According to the scheme, the processing efficiency of the original message can be effectively improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of data communications, and in particular to a flow table unloading system, method, device and cluster. Background Art

[0002] With the development of cloud computing networks, the amount of data that needs to be forwarded is increasing. In order to reduce the burden on the host, data forwarding can be offloaded to the offload hardware. After data forwarding is offloaded to the offload hardware, the data packets are directly forwarded according to the flow table items stored in the offload hardware without the participation of the host, thereby effectively saving the host's resources. When a large number of data packets need to be processed quickly in the network, being able to quickly and accurately read the flow table items to determine how the data packets are processed is the key to reducing network pressure. If the reading efficiency of the flow table items is inefficient, it will cause delays and packet loss during the processing of data packets, affecting the real-time, throughput and overall performance of the network, and may even cause network congestion and performance bottlenecks. Summary of the invention

[0003] The present application provides a flow table unloading system, method, device and cluster, which can effectively improve the processing efficiency of original messages.

[0004] In a first aspect, a flow table unloading system is provided, including: A host, which offloads the tunnel encapsulation table to offload hardware; The unloading hardware includes multiple storage libraries, each storage library includes one or more storage units, and the storage units are used to store tunnel encapsulation tables, wherein the first storage library is used to store the first tunnel encapsulation table, and the second storage library is used to store the second tunnel encapsulation table, and the second tunnel encapsulation table is copied according to the first tunnel encapsulation table. When receiving a first original message, the first tunnel encapsulation table is selected to be read from the first storage library, and the first original message is encapsulated according to the first tunnel encapsulation table to obtain a first tunnel message, or the second tunnel encapsulation table is selected to be read from the second storage library, and the first original message is encapsulated according to the second tunnel encapsulation table to obtain a second tunnel message.

[0005] In some possible designs, the offloading hardware is used to select to read the first tunnel encapsulation table from the first storage repository, encapsulate the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, and at the same time select to read the second tunnel encapsulation table from the second storage repository, and encapsulate the second original message according to the second tunnel encapsulation table to obtain the second tunnel message.

[0006] In the above scheme, the same tunnel encapsulation table can be set in different storage repositories, and the tunnel encapsulation tables in different storage repositories can be read simultaneously. If different original messages use the same tunnel encapsulation table, the tunnel encapsulation tables in different storage repositories can be used respectively, thereby improving processing efficiency.

[0007] In some possible designs, the first storage repository is used to store a hash table, the hash table includes a first matching item and a first tunnel encapsulation table, and the second storage repository is used to store a result table, the result table includes a second tunnel table; The unloading hardware is used to select to read the first tunnel encapsulation table from the first storage repository when the received first original message matches the first matching item, and encapsulate the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, or select to read the second tunnel encapsulation table from the second storage repository, and encapsulate the first original message according to the second tunnel encapsulation table to obtain the second tunnel message.

[0008] In some possible designs, the host is also used to copy the first tunnel encapsulation table to obtain a second tunnel encapsulation table, and send the first tunnel encapsulation table and the second tunnel encapsulation table to the offloading hardware.

[0009] In some possible designs, the host is further configured to send the first tunnel encapsulation table to the offloading hardware; The offloading hardware is further used to copy the first tunnel encapsulation table to obtain a second tunnel encapsulation table.

[0010] In a second aspect, a flow table unloading method is provided, including: Offload the tunnel encapsulation table to the offload hardware via the host; A plurality of storage repositories are provided through the offloading hardware, each storage repositories includes one or more storage units, and the storage units are used to store tunnel encapsulation tables, wherein a first storage repositories is used to store a first tunnel encapsulation table, and a second storage repositories is used to store a second tunnel encapsulation table, wherein the second tunnel encapsulation table is copied according to the first tunnel encapsulation table, and when a first original message is received, the first tunnel encapsulation table is selected to be read from the first storage repositories, and the first original message is encapsulated according to the first tunnel encapsulation table to obtain a first tunnel message, or the second tunnel encapsulation table is selected to be read from the second storage repositories, and the first original message is encapsulated according to the second tunnel encapsulation table to obtain a second tunnel message.

[0011] In some possible designs, the offloading hardware selects to read the first tunnel encapsulation table from the first storage repository, encapsulates the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, and at the same time selects to read the second tunnel encapsulation table from the second storage repository, encapsulates the second original message according to the second tunnel encapsulation table to obtain the second tunnel message.

[0012] In some possible designs, the first storage repository is used to store a hash table, the hash table includes a first matching item and a first tunnel encapsulation table, and the second storage repository is used to store a result table, the result table includes a second tunnel table; When the unloading hardware receives a first original message that matches the first matching item, it chooses to read the first tunnel encapsulation table from the first storage repository, encapsulates the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, or chooses to read the second tunnel encapsulation table from the second storage repository, encapsulates the first original message according to the second tunnel encapsulation table to obtain the second tunnel message.

[0013] In a third aspect, a computing device is provided, comprising a flow table unloading system and a storage unit, wherein the flow table unloading system and the storage unit are capable of communicating with each other, and the flow table unloading system is a system as described in any one of the first aspects.

[0014] In a fourth aspect, a computing device cluster is provided, including a flow table offloading system and a storage unit, wherein the flow table offloading system and the storage unit can communicate with each other, and the flow table offloading system is a system as described in any one of the first aspects. BRIEF DESCRIPTION OF THE DRAWINGS

[0015] In order to more clearly illustrate the technical solutions in the embodiments of the present invention or the background technology, the drawings required for use in the embodiments of the present invention or the background technology will be described below.

[0016] Figure 1 It is a structural schematic diagram of a flow table unloading system provided by this application; Figure 2 It is a schematic diagram of the structure of a memory provided by this application; Figure 3 It is a schematic diagram of the structure of a random access memory provided by the present application; Figure 4 It is a structural schematic diagram of a host provided by this application; Figure 5 It is a structural schematic diagram of a computing device provided by this application. DETAILED DESCRIPTION

[0017] The following describes the embodiments of the present invention in conjunction with the accompanying drawings in the embodiments of the present invention. The terms used in the implementation mode of the present invention are only used to explain the specific embodiments of the present invention, and are not intended to limit the present invention.

[0018] See also Figure 1 , Figure 1 Schematic diagram of a flow table unloading system provided by this application. Figure 1 As shown, the flow table offloading system includes offloading hardware 110 and a host 120 .

[0019] The offload hardware 110 may be a memory. The memory performs data transmission via double data rate (DDR). DDR is a synchronous dynamic random access memory (SDRAM) technology, and mainly includes DDR1, DDR2, DDR3, DDR4 and DDR5. The main feature of DDR is its high data transmission rate, which is achieved by performing data transmission at the rising edge and falling edge of each clock cycle, thereby achieving a double data transmission rate.

[0020] Memory is usually used to store various running software in the operating system, input and output data, and information exchanged with external memory. In order to improve the access speed of the processor, the memory needs to have the advantage of fast access speed. In the traditional computer system architecture, dynamic random access memory (DRAM) is usually used as memory. The processor can access the memory at high speed through the memory controller and perform read and write operations on any storage unit in the memory.

[0021] like Figure 2 As shown, the memory may include one or more Dual-Inline-Memory-Modules (DIMMs) 10 . Figure 2 In the figure, the memory includes two DIMM10 as an example. Usually, a DIMM can be regarded as a memory bar entity. A memory bar has two sides. The high-end memory bar has memory chips on both sides. We call each side a Rank, which means that a memory bar has Rank0 and Rank1. Figure 2 As shown, a DIMM 10 may include one or more Ranks 111 . Each Rank 111 may include a plurality of Random Access Memory (RAM) 112 .

[0022] Data is stored in the memory, and data is stored in the storage unit in the random access memory 112. A storage unit refers to the smallest storage unit (cell) for storing data. Usually, a storage unit can store 1 bit of data. Of course, some storage units can also implement multi-value storage. When the random access memory is DRAM, the storage units in the DRAM (also referred to as DRAM cells) are arranged and distributed into a matrix, which we call a memory bank or a DRAM memory bank. In this way, the storage units in a memory chip can be logically divided into multiple banks, and each bank can be regarded as a storage array composed of multiple storage units. Each memory cell (memory cell) in the memory bank is identified by its row address and column address, and the memory controller can locate any storage unit in the memory bank through the corresponding row and column decoders. The memory bank can also be referred to as a bank.

[0023] like Figure 3 As shown, a random access memory including 8 memory banks is used as an example for illustration. The random access memory may include a control and refresh circuit, a plurality of memory banks (memory banks) 1121, a row address buffer, a column address buffer, a row decoder, and a column decoder. Among them, the control and refresh circuit is used to control the refresh operation of the memory cell. Random access memory (for example, DRAM) uses the amount of electricity stored in a capacitor to represent data 0 and 1, and is a volatile memory. Due to the leakage of the capacitor, the charge can only be maintained for a very short time. The leakage of the capacitor causes charge drift, which will cause errors in the stored data. Therefore, in order to store data, the control and refresh circuit needs to automatically perform a refresh operation to refresh and charge the memory cell storing the data to prevent the memory from losing data.

[0024] During the memory access process, after receiving a memory access request, the memory controller generates an address signal and a control signal according to the received memory access request, and sends the generated address signal and control signal to the DIMM to perform memory access. Among them, the address signal may include a row address signal and a column address signal, and the control signal may include a chip select signal (CS), a write enable signal (WE), a column access select signal (CAS), and a row access select signal (RAS). These signals can be received by the control and refresh circuit, the row address signal is cached in the row address buffer, the column address signal is cached in the column address buffer, and the control signal is passed to the storage bank corresponding to the row address specified by the address signal.

[0025] The row address buffer is used to cache the row address signal sent by the memory controller. The column address buffer is used to cache the column address signal sent by the memory controller. The row decoder is connected to the row address buffer and the plurality of memory banks 1121, respectively, and the column decoder is connected to the column address buffer and the plurality of memory banks, respectively. The row decoder is used to decode the row address signal, and the column decoder is used to decode the column address signal, so that the corresponding storage unit in the memory bank 1121 can be located according to the decoded row address signal and column address signal.

[0026] When the memory controller accesses DRAM, the memory controller needs to first identify the storage row corresponding to the data to be accessed and determine the memory bank to which the storage row to be accessed belongs. Then the memory controller will "open" the corresponding memory bank and storage row. In some implementations, the storage row may also be referred to as a "page". A "page" is a logical concept. In this case, a page includes the memory cells of a storage row in DRAM. Typically, the size of a memory page can include 512, 1024 (1K), 2048 (2K), 4098 (4K), 8196 (8K), 16392 (16K), or 32,768 (32K) bits of data.

[0027] Generally, when performing memory access, the storage row to be accessed may be in one of the following three states: row hit, row idle, or row conflict. Row hit means that the storage row to be accessed has been opened, that is, the data of the storage row to be accessed has been loaded into the row buffer corresponding to the storage bank storing the data of the row, and data can be read from the storage unit of the row or written to the storage unit of the row by directly sending a column access command. Among them, the column access command may include a read command or a write command. Row idle is used to indicate that the storage bank corresponding to the storage row to be accessed is in an idle state, no storage row is opened, and the storage row to be accessed needs to be opened by an "activate" command before access. That is, the data of the storage row to be accessed needs to be loaded into the row buffer corresponding to the storage bank by an "activate" command before a column access command can be sent for access. Row conflict is used to indicate that the currently opened storage row is different from the storage row to be accessed. In the case of rowconflict, the currently opened storage row needs to be "closed" first, specifically including using the "precharge" command to write the data of the opened storage row back to the memory array, and then using the activate command to load the data of the row to be accessed into the corresponding row cache, and then send the column access command to access it. In an embodiment of the present invention, the above three states of the storage row to be accessed can be referred to as the row hit state of the storage row. The "storage row" can also be referred to as a "row", and the storage row to be accessed can also be referred to as a target row.

[0028] From the above description, it can be seen that in the process of memory access, different states of the row to be accessed will cause different delays in access. In the state of row hit, since the row to be accessed is already in the open state, the memory controller can directly send a column access command. After sending the column access command, data can be read from the memory or written to the memory. In the case where the column access command is a read command, the read data can be obtained after a delay. In the case of row idle, since no row is opened in the memory bank, the row to be accessed needs to be opened by the "activate" command before access. Therefore, the memory controller needs to send a row activation command first, wait for the delay, and then send a column access command to access the open row. In the case where the column access command is a read command, it is necessary to wait for a delay before obtaining the read data. In the case of row conflict, since the currently open row is not the row to be accessed, you need to first send a pre-charge command to close the currently open row, wait for a delay, then send a row activation command to open the row to be accessed, and then wait for a delay before sending a column access command to access the row to be accessed. If the column access command is a read command, after sending the column access command, you need to wait for a delay to obtain the read data.

[0029] Each storage repository of the offload hardware 110 includes one or more storage units, each of which can be used to store a flow table entry.

[0030] The host 120 may be a central processing unit (CPU) or a processing core of a CPU. Figure 4 As shown, the host includes a memory address register 201, a memory data register 202, a program counter 203, an instruction register 204, an instruction decoder 205, an operation controller 207, a calculation unit 208, a general register group 209, an accumulator 210, a program status word register 211, a timing circuit 212 and a processor bus 220. The processor bus 220 can also be a data bus, a power bus, a control bus or a status signal bus, etc. In addition, the host is connected to the memory 240 via a DDR bus 230.

[0031] The host is used to process instructions and data stored in the memory 240. In some embodiments, the instructions may include one or more instruction formats. The instruction format may indicate various fields (number of bits, position of bits, etc.) to specify the data processing operation to be performed and the operand on which the operation is to be performed. Some instruction formats may be further defined by instruction templates (or sub-formats).

[0032] In the host, the memory address register 201 is used to store the address of the memory 240 currently to be accessed by the host 120. The memory data register 202 is used to store the data and read or write instructions read or written from the address by the host 120 to make up for the difference in operating speed between the processor and the memory.

[0033] The timing circuit 212 provides a time reference for each component through a fixed clock. The time for the host 120 to execute an instruction is an instruction cycle. The program counter 203 is used to store the address of the next instruction. When the instructions are executed sequentially, the program counter 203 automatically adds the number of bytes of an instruction after each instruction is taken. When a transfer instruction is encountered, the program counter 203 specifies the address of the next instruction through the address code field in the transfer instruction. The instruction register 204 is used to save the instruction currently being executed. The instruction includes two fields, an operation code and an address code. The operation code part is decoded by the instruction decoder 205 to generate the control potential of the operation required by the instruction. The operation controller 207 can generate various operation control signals based on the control potential signal output by the instruction decoder and the timing signal generated by the timing circuit 212, and control the remaining components of the host to complete the operation of fetching and executing instructions.

[0034] A microinstruction is the smallest unit of instructions executed by a processor. An instruction can be a single microinstruction or composed of several microinstructions. An instruction composed of multiple microinstructions is called a complex instruction. Various mechanisms can be used to implement the decoding of complex instructions by the instruction decoder 205. Specific decoding mechanisms include, but are not limited to, lookup tables, hardware implementations, programmable logic arrays (PLA), microcode read-only memories (ROMs), and the like. In one embodiment, the steps of the microinstructions corresponding to the complex instructions can be stored in the microcode read-only memory 206. During the decoding process, the instruction decoder 205 can query and obtain the operation code and address code of the microinstructions constituting the complex instructions from the microcode read-only memory 206, and decode the operation code part of the microinstructions in turn to generate the control potential required by the microinstructions.

[0035] The operation controller 207 has multiple buffers, and can send the decoded instructions to their respective reservation stations for storage according to the types of instructions. After analyzing the status of the hardware circuit of the computing unit and the specific situation of whether each instruction can be executed in advance, the instructions that can be executed in advance are scheduled to the corresponding computing unit 208 for execution. During this period, the instruction stream is reordered so that the instruction pipeline can proceed and be smoothly scheduled. Exemplarily, for instructions of integer calculation, the operation controller 207 can use the integer reservation station to save instructions and assign them to the integer computing unit for calculation; for instructions of floating-point calculation, the operation controller 207 can use the floating-point reservation station to save instructions and assign them to the floating-point computing unit for calculation.

[0036] The general register group 209 is used to store the data corresponding to the address code according to the address code of the instruction. The calculation unit 208 is used to receive the operation control signal of the operation controller 207 and perform calculations on the data stored in the general register group 209, including arithmetic operations (including basic operations such as addition, subtraction, multiplication and additional operations) and logical operations (including shifting, logical testing or comparison of two values). The temporary variables generated in the calculation are stored in the accumulator 210, and the information of the generated status is stored in the program status word register 211, such as the operation result carry / borrow flag (C), the operation result overflow flag (O), the operation result zero flag (Z), the operation result negative flag (N), the operation result sign flag (S), etc. The program status word register is also used to save information such as interrupts and the working status of the computing device, so that the host 120 can timely understand the machine operation status and program operation status.

[0037] The calculation unit 208 includes a variety of different circuit modules, which can be used to execute different instructions. For example, the integer calculation unit 2081 and the floating point calculation unit 2082 are used to perform arithmetic operations and logical operations on integers and floating point numbers, respectively.

[0038] The host 120 is used to unload the tunnel encapsulation table to the unloading hardware 110. The tunnel encapsulation table may include one or more of a tunnel identifier (Tunnel ID), a source address (Source Address), a destination address (Destination Address), a tunnel source address (Tunnel Source Address), a tunnel destination address (Tunnel Destination Address), an encapsulation protocol type (Encapsulation Protocol Type), encapsulation header information, a time to live (Time To Live, TTL), a quality of service (Quality of Service, QoS) parameter, traffic classification or policy information, a tunnel status (TunnelStatus), a creation time (Creation Time) and an update time (Update Time), etc. The tunnel identifier is used to uniquely identify a specific tunnel. The source address is the source IP address of the original message. The destination address is the destination IP address of the original message. The tunnel source address is the source IP address after tunnel encapsulation. The tunnel destination address is the destination IP address after tunnel encapsulation. The encapsulation protocol type may be, for example, Generic Routing Encapsulation (GRE), Internet Protocol Security (IPSec), Virtual Extensible Local Area Network (VXLAN), etc. The encapsulation header information may include one or more of a protocol version, flags, and a checksum, etc. In a possible embodiment, the host copies the first tunnel encapsulation table to obtain a second tunnel encapsulation table, and sends the first tunnel encapsulation table and the second tunnel encapsulation table to the offload hardware.

[0039] The unloading hardware includes multiple storage libraries, each storage library includes one or more storage units, and the storage unit is used to store the tunnel encapsulation table, wherein the first storage library is used to store the first tunnel encapsulation table, and the second storage library is used to store the second tunnel encapsulation table. The first storage library and the second storage library are different storage libraries. It can be understood that in the above example, only the first tunnel encapsulation table is copied into two copies and stored in the first storage library and the second storage library respectively. In actual applications, the first tunnel encapsulation table can be copied into multiple copies and stored in multiple storage libraries, which is not specifically limited this time. In a specific embodiment, the first storage library is used to store a hash table, the hash table includes a first matching item and a first tunnel encapsulation table, and the second storage library is used to store a result table, and the result table includes a second tunnel encapsulation table. In another specific embodiment, the first storage library is used to store a first result table, the first result table includes a first tunnel encapsulation table, the second storage library is used to store a second result table, the second result table includes a second tunnel encapsulation table, and the third storage library is used to store a hash table, and the hash table includes a first matching item.

[0040] The unloading hardware is used to, upon receiving the first original message, select to read the first tunnel encapsulation table from the first storage repository, encapsulate the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, or select to read the second tunnel encapsulation table from the second storage repository, encapsulate the first original message according to the second tunnel encapsulation table to obtain the first tunnel message. In a specific embodiment, upon receiving the first original message, and the first original message matches the first matching item in the hash table in the first storage repository, select to read the first tunnel encapsulation table from the hash table in the first storage repository, encapsulate the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, or select to read the second tunnel encapsulation table from the result table in the second storage repository, encapsulate the first original message according to the second tunnel encapsulation table to obtain the second tunnel message. In a specific embodiment, the unloading hardware is used to select to read the first tunnel encapsulation table from the first result table in the first repository and encapsulate the first original message according to the first tunnel encapsulation table to obtain the first tunnel message when the first original message is received and the first original message matches the first matching item in the hash table in the third repository, or to select to read the second tunnel encapsulation table from the second result table in the second repository and encapsulate the first original message according to the second tunnel encapsulation table to obtain the second tunnel message.

[0041] Since the first tunnel encapsulation table and the second tunnel encapsulation table are exactly the same, it is possible to freely choose which tunnel encapsulation table to use to encapsulate the original message. Therefore, when there are multiple original messages, the unloading hardware can choose to read the first tunnel encapsulation table from the first storage repository, encapsulate the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, and at the same time, choose to read the second tunnel encapsulation table from the second storage repository, encapsulate the second original message according to the second tunnel encapsulation table to obtain the second tunnel message. It is not difficult to understand that when multiple identical tunnel encapsulation tables are stored in multiple storage repositories of the unloading hardware, multiple original messages can be processed synchronously, thereby improving processing efficiency. Specifically, when there are multiple original messages, the unloading hardware can, when the first original message matches the first matching item in the hash table in the first storage repository, select to read the first tunnel encapsulation table from the hash table in the first storage repository, encapsulate the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, and at the same time, when the second original message matches the first matching item in the hash table in the first storage repository, read the second tunnel encapsulation table from the result table in the second storage repository, encapsulate the second original message according to the second tunnel encapsulation table to obtain the second tunnel message. Alternatively, when there are multiple original messages, the unloading hardware can, when the first original message matches the first matching item in the hash table in the third storage repository, select to read the first tunnel encapsulation table from the first result table in the first storage repository, encapsulate the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, and at the same time, when the second original message matches the first matching item in the hash table in the third storage repository, read the second tunnel encapsulation table from the second result table in the second storage repository, encapsulate the second original message according to the second tunnel encapsulation table to obtain the second tunnel message.

[0042] It can be understood that the above example is explained by taking the example that the host copies the first tunnel encapsulation table to obtain the second tunnel encapsulation table, and sends the first tunnel encapsulation table and the second tunnel encapsulation table to the unloading hardware. In actual applications, the host can also send the first tunnel encapsulation table to the unloading hardware, and the unloading hardware can copy the first tunnel encapsulation table to obtain the second tunnel encapsulation table.

[0043] See also Figure 5 , Figure 5 4 is a schematic diagram of a computing device provided by the present application. The computing device 400 includes: one or more processing units 410 , a communication interface 420 and a storage unit 430 .

[0044] The processing unit 410, the communication interface 420 and the storage unit 430 are interconnected via a bus 440. Optionally, the computing device 400 may also include an input / output interface 450, which is connected to an input / output device for receiving parameters set by a user, etc. The computing device 400 can be used to implement some or all of the functions of the device embodiment or system embodiment in the above-mentioned embodiment of the present application; the processing unit 410 can also be used to implement some or all of the operation steps of the method embodiment in the above-mentioned embodiment of the present application. For example, the specific implementation of the various operations performed by the computing device 400 can refer to the specific details in the above-mentioned embodiment, such as the processing unit 410 is used to perform some or all of the steps in the above-mentioned method embodiment or some or all of the operations in the above-mentioned method embodiment. For another example, in the embodiment of the present application, the computing device 400 can be used to implement some or all of the functions of one or more components in the above-mentioned device embodiment, and the communication interface 420 can be specifically used for the communication functions necessary to implement the functions of these devices and components, and the processing unit 410 can be specifically used for the processing functions necessary to implement the functions of these devices and components, etc.

[0045] Figure 5 The computing device 400 may include one or more processing units 410, and the multiple processing units 410 may provide processing capabilities in a coordinated manner in a parallel connection manner, a serial connection manner, a serial-parallel connection manner, or any connection manner, or the multiple processing units 410 may constitute a processor sequence or a processor array, or the multiple processing units 410 may be divided into a main processor and an auxiliary processor, or the multiple processing units 410 may have different architectures such as a heterogeneous computing architecture. In addition, Figure 5 The computing device 400 shown in the figure, and the related structural description and functional description are exemplary and non-limiting. In some exemplary embodiments, the computing device 400 may include Figure 5 More or fewer components may be shown, or some components may be combined or separated, or may have a different arrangement of components.

[0046] The processing unit 410 may have a variety of specific implementation forms. For example, the processing unit 410 may include a processor (central processing unit, CPU), a graphic processing unit (graphic processing unit, GPU), a neural-network processing unit (neural-network processing unit, NPU), a tensor processing unit (tensor processing unit, TPU) or a data processing unit (data processing unit, DPU) and other combinations thereof, which are not specifically limited in the embodiments of the present application. The processing unit 410 may also be a single-core processor or a multi-core processor. The processing unit 410 may be a combination of a CPU and a hardware chip. The above-mentioned hardware chip may be an application-specific integrated circuit (application-specific integrated circuit, ASIC), a programmable logic device (programmable logic device, PLD) or a combination thereof. The above-mentioned PLD may be a complex programmable logic device (complex programmable logic device, CPLD), a field-programmable gate array (field-programmable gate array, FPGA), a generic array logic (generic array logic, GAL) or any combination thereof. The processing unit 410 may also be implemented using a logic device with built-in processing logic alone, such as an FPGA or a digital signal processor (digital signal processor, DSP), etc. The communication interface 420 may be a wired interface or a wireless interface for communicating with other modules or devices. The wired interface may be an Ethernet interface, a local interconnect network (LIN), etc., and the wireless interface may be a cellular network interface or a wireless local area network interface, etc.

[0047] The storage unit 430 may be a non-volatile memory, such as a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The storage unit 430 may also be a volatile memory, which may be a random access memory (RAM) used as an external cache. By way of example but not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDRSDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous connection dynamic random access memory (SLDRAM), and direct rambus RAM (DR RAM). The storage unit 430 may also be used to store program codes and data, so that the processing unit 410 can call the program codes stored in the storage unit 430 to execute some or all of the operation steps in the above method embodiment, or to execute the corresponding functions in the above device embodiment. Figure 5 Show more or fewer components, or have different component configurations.

[0048] The bus 440 may be a peripheral component interconnect express (PCIe) bus, an extended industry standard architecture (EISA) bus, a unified bus (Ubus or UB), a compute express link (CXL), a cache coherent interconnect for accelerators (CCIX), etc. The bus 440 may be divided into an address bus, a data bus, a control bus, etc. In addition to the data bus, the bus 440 may also include a power bus, a control bus, and a status signal bus, etc. However, for the sake of clarity, Figure 5 Only one thick line is used in the diagram, but this does not mean that there is only one bus or only one type of bus.

[0049] The present application also provides a system, which includes multiple computing devices, and the structure of each computing device can refer to the structure of the computing device described above. The functions or operations that can be implemented by the system can refer to the specific implementation steps in the above method embodiment and / or the specific functions described in the above device embodiment, which will not be repeated here.

[0050] In the above embodiments, all or part of the embodiments can be implemented by software, hardware, firmware or any combination thereof. When implemented by software, all or part of the embodiments can be implemented 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 the present invention 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 computer-readable storage medium. For example, the computer instructions can be transmitted from one network site, computer, server or data center to another network site, computer, server or data center by wired (e.g., coaxial cable, optical fiber, digital subscriber line) or wireless (e.g., infrared, microwave, etc.) means. The computer-readable storage medium can be any available medium that can be accessed by a computer, or it can be a data storage device such as a server or data center that includes one or more available media integrated. The available medium can be a magnetic medium (e.g., a floppy disk, a hard disk, a tape, etc.), an optical medium (e.g., a DVD, etc.), or a semiconductor medium (e.g., a solid-state hard disk), etc. In the above embodiments, the description of each embodiment has different emphases. For parts that are not described in detail in a certain embodiment, reference can be made to the relevant descriptions of other embodiments.

Claims

1. A flow table unloading system, It is characterized in that include: A host, which offloads the tunnel encapsulation table to offload hardware; The unloading hardware includes multiple storage libraries, each storage library includes one or more storage units, and the storage units are used to store tunnel encapsulation tables, wherein the first storage library is used to store the first tunnel encapsulation table, and the second storage library is used to store the second tunnel encapsulation table, and the second tunnel encapsulation table is copied according to the first tunnel encapsulation table. When receiving a first original message, the first tunnel encapsulation table is selected to be read from the first storage library, and the first original message is encapsulated according to the first tunnel encapsulation table to obtain a first tunnel message, or the second tunnel encapsulation table is selected to be read from the second storage library, and the first original message is encapsulated according to the second tunnel encapsulation table to obtain a first tunnel message.

2. The system according to claim 1, It is characterized in that The unloading hardware is used to select to read the first tunnel encapsulation table from the first storage repository, encapsulate the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, and at the same time select to read the second tunnel encapsulation table from the second storage repository, and encapsulate the second original message according to the second tunnel encapsulation table to obtain the second tunnel message.

3. The system according to claim 1, It is characterized in that The first storage repository is used to store a hash table, the hash table includes a first matching item and a first tunnel encapsulation table, and the second storage repository is used to store a result table, the result table includes a second tunnel table; The unloading hardware is used to select to read the first tunnel encapsulation table from the first storage repository when the received first original message matches the first matching item, and encapsulate the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, or select to read the second tunnel encapsulation table from the second storage repository, and encapsulate the first original message according to the second tunnel encapsulation table to obtain the second tunnel message.

4. The system according to claim 1, It is characterized in that The host is further configured to copy the first tunnel encapsulation table to obtain a second tunnel encapsulation table, and send the first tunnel encapsulation table and the second tunnel encapsulation table to the offloading hardware.

5. The system according to claim 1, It is characterized in that The host is further configured to send the first tunnel encapsulation table to the offloading hardware; The offloading hardware is further used to copy the first tunnel encapsulation table to obtain a second tunnel encapsulation table.

6. A flow table unloading method, It is characterized in that include: Offload the tunnel encapsulation table to the offload hardware via the host; A plurality of storage repositories are provided through the offloading hardware, each storage repositories includes one or more storage units, and the storage units are used to store tunnel encapsulation tables, wherein a first storage repositories is used to store a first tunnel encapsulation table, and a second storage repositories is used to store a second tunnel encapsulation table, wherein the second tunnel encapsulation table is copied according to the first tunnel encapsulation table, and when a first original message is received, the first tunnel encapsulation table is selected to be read from the first storage repositories, and the first original message is encapsulated according to the first tunnel encapsulation table to obtain a first tunnel message, or the second tunnel encapsulation table is selected to be read from the second storage repositories, and the first original message is encapsulated according to the second tunnel encapsulation table to obtain a second tunnel message.

7. The method according to claim 6, It is characterized in that The unloading hardware selects to read the first tunnel encapsulation table from the first storage repository, encapsulates the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, and at the same time selects to read the second tunnel encapsulation table from the second storage repository, encapsulates the second original message according to the second tunnel encapsulation table to obtain the second tunnel message.

8. The method according to claim 6, It is characterized in that The first storage repository is used to store a hash table, the hash table includes a first matching item and a first tunnel encapsulation table, and the second storage repository is used to store a result table, the result table includes a second tunnel table; When the unloading hardware receives a first original message that matches the first matching item, it chooses to read the first tunnel encapsulation table from the first storage repository, encapsulates the first original message according to the first tunnel encapsulation table to obtain the first tunnel message, or chooses to read the second tunnel encapsulation table from the second storage repository, encapsulates the first original message according to the second tunnel encapsulation table to obtain the second tunnel message.

9. A computing device, It is characterized in that It comprises a flow table unloading system and a storage unit, the flow table unloading system and the storage unit can communicate with each other, and the flow table unloading system is a system as described in any one of claims 1-5.

10. A computing device cluster, It is characterized in that It comprises a flow table unloading system and a storage unit, the flow table unloading system and the storage unit can communicate with each other, and the flow table unloading system is a system as described in any one of claims 1-5.

Citation Information

Patent Citations

  • Message forwarding method and related device

    CN115134315A

  • Tunnel encapsulation table resource management method, DPU and related equipment

    CN116996478A

  • Flow table unloading method, system, equipment, cluster and medium

    CN117527689A

  • Tunnel message encapsulation and de-encapsulation method, equipment and system

    CN118573516A

  • Flow table item storage system, equipment and cluster

    CN118860296A