Dynamic hardware forwarding pipeline compression

By dynamically configuring the pipeline of the programmable switch, independent flow tables are placed in parallel, solving the problem that data packets in traditional network systems need to physically pass through the unmatched pipeline stage, achieving more efficient network processing.

CN114868368BActive Publication Date: 2025-05-06CISCO TECHNOLOGY INC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202180007529.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-01-14
Filing Date
2021-01-08
Publication Date
2025-05-06
Estimated Expiration
2041-01-08

AI Technical Summary

Technical Problem

In traditional network systems, when data packets logically skip tables in the next pipeline stage, they still need to pass through this stage physically, resulting in unnecessary processing capacity, time and power consumption.

Method used

By dynamically configuring the pipeline of the programmable switch, independent flow tables are placed in parallel in the same physical pipeline rather than in serial in a separate pipeline stage.

Benefits of technology

It realizes that data packets do not need to pass through the unmatched pipeline stage, thereby reducing the consumption of processing capacity, time and power and improving the efficiency of the network system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114868368B_ABST
    Figure CN114868368B_ABST
Patent Text Reader

Abstract

A controller device for a network provides data associated with a pipeline capability of a programmable switch. The programmable switch receives data associated with the pipeline capability of the programmable switch. The pipeline capability includes multiple flow tables and allowed table migration for each of the multiple flow tables. The programmable switch determines that a first flow table and a second flow table are independent of each other based on the allowed table migration for each of the multiple flow tables; the programmable switch configures a pipeline of a data flow in the computing device, the pipeline includes multiple pipeline stages, and a specific pipeline stage includes the first flow table and the second flow table.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to a dynamic hardware forwarding pipelining process, and more particularly, to dynamically configuring a pipeline of a programmable switch to access mutually independent tables arranged in parallel in a single pipeline stage. Background Art

[0002] In a traditional network system, a programmable switch processes data packets and / or transmits data packets along a network. Data packets are received by a programmable switch via an input port and forwarded from the programmable switch via an output port. The programmable switch includes a virtual pipeline of linked flow tables that are executed between receiving data packets (via an input port) and forwarding data packets (via an output port). The virtual pipeline includes multiple pipeline stages, and each pipeline stage includes a single flow table. The pipeline configuration of the programmable switch manages the way data packets flow through the flow tables in each pipeline stage. Data packets advance through the pipeline by moving from one stage to another in the order of the tables in the pipeline.

[0003] The flow tables may be numbered sequentially and start with the first table (e.g., table 0). Data packets can only pass through a flow table to a higher numbered flow table in order. Each flow table includes one or more flow entries. When a data packet is received by a particular flow table, if the data packet matches an entry of the particular flow table, the data packet executes the instructions provided by the entry of the particular flow table before proceeding to the next table.

[0004] In a conventional network system, a data packet may be directed to a table's GoToTable instruction to logically skip the table in the next pipeline stage. Although it is possible to logically skip subsequent tables and stages, the packet still must physically pass through the next pipeline stage to reach the subsequent stage or to the output port.

[0005] Examples of these conventional systems include OpenFlow or Protocol Independent Switch Architecture ("PISA") (e.g., P4). Each table in these systems expresses a logical function (e.g., a match on a key or set of keys). The instructions in the flow table include actions (e.g., packet modification, forwarding action, or instructions for the next table to process). One capability of a pipeline stage is a set of next tables that may be actions. The set of next tables can be explicitly stated (e.g., via an OpenFlow table feature message) or implied by the program flow (e.g., via P4). BRIEF DESCRIPTION OF THE DRAWINGS

[0006] Figure 1 is a block diagram depicting the communication and processing architecture of a compression and forwarding pipeline according to certain examples;

[0007] Figure 2 is a block diagram depicting a method of a compression and forwarding pipeline according to certain examples;

[0008] Figure 3 is a block diagram depicting a method of configuring a flow table in a programmable switch according to certain examples;

[0009] Figure 4 is a set of example flow tables for a programmable switch according to certain examples;

[0010] FIG. 5 is a diagram illustrating an example conventional programmable switch operation Figure 4 Graph of instructions;

[0011] Figure 6 is a diagram of a programmable switch operating according to certain examples Figure 4 instructions and compresses the two tables into a graph of a single pipeline stage;

[0012] Figure 7 is a diagram depicting a programmable switch compressing four tables and three tables into different pipeline stages according to certain examples;

[0013] Figure 8 Computing machines and modules are depicted according to certain examples. DETAILED DESCRIPTION

[0014] Overview

[0015] Various aspects of the invention are set out in the independent claims and preferred features are set out in the dependent claims.Features of one aspect may be applied to any aspect alone or in combination with other aspects.

[0016] The pipeline configuration of a programmable switch includes the properties of the flow table of the programmable switch. These properties may include "max_entries" (maximum entries), "next_tables" (next table) (i.e., a set of tables to which the flow in the table can direct the packet to be further processed) and other properties. In a typical flow table, other entries (e.g., matching and action entries) are included. Matching entries include input ports, packet header fields, metadata from previous flow tables, or other entries. Action entries include actions taken by the programmable switch (e.g., forwarding data packets to a specific port).

[0017] Certain tables are allowed to forward data packets only to a fixed set of other tables. In one example, Table 2 has a GoToTable option that goes to Table 4 or Table 5 (but not Table 3); or Table 3 has a GoToTable option that goes to Table 4 or Table 5 (but not Table 2). Because there is no direct or indirect path from Table 2 to Table 3, Table 2 and Table 3 are mutually exclusive and independent of each other. When a conventional programmable switch operates these instructions, when a data packet is logically forwarded from the first table to the third table, the data packet still has to physically pass through the second pipeline stage to reach the third table in the third pipeline stage.

[0018] In a network system using programmable switches using the technology proposed in this article, a network controller communicates with one or more programmable switches and manages the operation of the switches. The controller can add, modify or delete flow entries in each flow table of the programmable switch.

[0019] The programmable switch creates a dependency graph for the set of tables based on the GoToTable operation. The graph indicates whether any two tables are independent of each other (because there is no GoToTable operation from one table to the next sequential table). Therefore, when the earlier flow table in the sequence of consecutive flow tables cannot transmit data packets to the subsequent flow table in the sequence, these consecutive flow tables are independent of each other. If the graph shows that the two flow tables are independent, the programmable switch can modify the flow table configuration of each stage of the pipeline. The programmable switch arranges the pipeline so that the independent flow tables are placed in parallel in the same physical pipeline, rather than being arranged serially in separate pipeline stages.

[0020] When the flow table identifies the flow entry of the data packet, the flow table can direct the data packet to the flow table in the subsequent pipeline stage, which will match the data packet, but will not match the second table in the same pipeline stage in addition. The data packet will only match the flow in one of the multiple tables in the single pipeline stage, and will not match any one of the other tables in the same pipeline stage. The data packet does not need to try to match other flow tables in this pipeline stage, and these other flow tables have flow entries that will not produce matching due to mutual exclusion with the matching table. The data packet is directed to the subsequent flow table (the subsequent flow table is after each of the multiple parallel flow tables) in the subsequent pipeline stage from the matching flow table, or to the output port of the programmable switch. Therefore, the data packet will not flow through the parallel table without matching in the single pipeline stage. Avoiding multiple tables can save time and processing capacity.

[0021] In conventional systems, even if the tables are logically ignored, the data packet needs to physically pass through each sequential pipeline stage until a match is identified. Because the number of pipeline stages may be limited by the type of programmable switch, in some cases, if the number of tables is greater than the number of pipeline stages, the data packet must be passed through the conventional pipeline multiple times. For example, the switch may be programmed to process tables 0-7 in pipeline stages 1-8 on the first pass of the data packet through the switch, and the switch may be programmed to process tables 8-15 in pipeline stages 1-8 on the second pass of the data packet through the switch. Attempting to match each flow table and passing through the conventional pipeline multiple times requires additional processing capacity, time, and power.

[0022] The present technology allows for compression of pipelines. Compression can reduce the number of passes through the pipeline, freeing the programmable switch from unnecessary attempts to match flow tables, and saving processing capacity, time, and power. In one example, if a programmable switch has 8 pipeline stages and 10 tables (only two of which are parallel), then by compressing the two tables into a single stage, the tables will require 9 pipeline stages. Therefore, two passes are required to service the 9 pipeline stages because the switch is limited to 8 pipeline stages. In contrast, if the programmable switch includes parallel tables in two pipeline stages, then the 10 tables will only require 8 compressed pipeline stages. Therefore, in this example, the programmable switch will only require a single pass.

[0023] These and other aspects, objects, features and advantages of the examples will become apparent to those of ordinary skill in the art upon consideration of the following detailed description of the illustrated examples.

[0024] Example system architecture

[0025] In the example architecture of the technology, although each server, system, and device shown in the architecture is represented by one instance of the server, system, or device, multiple instances of each server, system, and device may be used. In addition, certain aspects of the operation of the technology are presented in the examples associated with the drawings to facilitate the implementation of the claimed invention, and additional features of the technology are disclosed elsewhere herein (also facilitating the implementation of the claimed invention).

[0026] Figure 1 is a block diagram depicting a communication and processing architecture 100 for network management. Figure 1As depicted, architecture 100 includes a computer network management system 105, one or more programmable switches 120, and one or more other computing devices 130, which are connected by a communication network 99. Computer network management system 105 uses a distributed database. In general, computer network management system 105 can employ a variety of tools, applications, and devices to help human network administrators monitor and maintain the network.

[0027] The computer network management system 105 employs the controller 110 to configure the flow tables and other functions of the programmable switch 120. The controller 110 communicates with the programmable switch 120 to analyze the capacity, configuration and structure of the programmable switch 120 and configure the operation of the programmable switch 120 to perform the desired method, process or function.

[0028] Most computer network management architectures use the same basic structure and set of relationships. The programmable switch 120 can run software that processes data packets and / or passes data packets along the network. In one example, the programmable switch 120 is an application specific integrated circuit or any other suitable programmable hardware or software circuit switch. Data packets are received by the programmable switch 120 via an input port and forwarded from the programmable switch 120 via an output port. The programmable switch 120 includes a pipeline of linked flow tables that provide matching, forwarding, and data packet modification.

[0029] Other computing devices 130 may be any other suitable network devices (eg, other programmable switches or other network components).

[0030] Each of the computer network management system 105, the programmable switch 120, and the other computing devices 130 includes one or more wired or wireless telecommunication systems through which the network devices can exchange data. For example, the computer network management system 105, the programmable switch 120, and the other computing devices 130 may include one or more of the following: a local area network (LAN), a wide area network (WAN), an intranet, the Internet, a storage area network (SAN), a personal area network (PAN), a metropolitan area network (MAN), a wireless local area network (WLAN), a virtual private network (VPN), a cellular or other mobile communication network, Wireless technology connection, near field communication (NFC) connection, any combination thereof, and any other suitable architecture or system that facilitates communication of signals, data and / or messages.

[0031] Throughout the discussion of various illustrative examples, it should be understood that the terms "data" and "information" may be used interchangeably herein to refer to text, images, audio, video, or any other form of information that may exist in a computer-based environment.

[0032] Each network device (e.g., computer network management system 105, programmable switch 120, and other computing devices 130) may include a communication subsystem capable of sending and receiving data over (one or more) networks. For example, each network device may include: a server, or a partition of a server, a router virtual machine (VM) or container, a portion of a router, a desktop computer, a laptop computer, a tablet computer, a television embedded with and coupled to one or more processors, a smart phone, a handheld computer, a personal digital assistant (PDA), or any other wired or wireless processor-driven device. In some examples, a user associated with a device must install an application and / or perform feature selection to obtain the benefits of the technology described herein.

[0033] The network connections shown are examples, and other methods for establishing a communication link between computers and devices may be used. In addition, those having ordinary skill in the art and having benefited therefrom will appreciate that Figure 1 The illustrated network device may have any of a number of other suitable computer system configurations and may not include all of the components described above.

[0034] In a number of illustrative examples, the network computing device (and any other computing machine associated with the techniques presented herein) may be any type of computing machine (such as, but not limited to, Figure 8 ). In addition, any functionality, application, or component associated with any of these computers (e.g., those described herein or any other (e.g., scripts, web page content, software, firmware, hardware, or modules) associated with the techniques presented herein) may be based on Figure 8 The computing machines discussed herein may communicate with each other and with other computing machines or communication systems via one or more networks (e.g., network 99). Each network may include various types of data or communication networks (including Figure 8 any of the network technologies discussed in .

[0035] Example Process

[0036] The following describes Figure 2-Figure 3 The example method of the components of the example communication and processing architecture 100 illustrated in FIG. The components of the example communication and processing architecture 100 may include, but are not limited to, routers, switches, network hubs, wireless access points, network cables, network servers, and network interface cards. It may also be performed in other systems and other environments. Figure 2-Figure 3 Example method for Figure 2-Figure 3The operations described in any of the figures may be implemented as executable codes stored on a computer or machine-readable non-transitory tangible storage medium (e.g., a hard disk, ROM, EEPROM, non-volatile RAM, CD-ROM, flash memory, random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM), etc.), which are performed based on the execution code by a processor circuit implemented using one or more integrated circuits; the operations described herein may also be implemented as executable logic, which is encoded in one or more non-transitory tangible media (e.g., programmable logic arrays or devices, field programmable gate arrays, programmable array logic, application-specific integrated circuits, etc.) for execution.

[0037] Figure 2 is a block diagram depicting a method 200 of a compression-forwarding pipeline, according to certain examples.

[0038] In block 210, the controller 110 establishes logical flow tables for the programmable switch 120 and specifies the table size and a set of possible next tables for each table. For each flow table, the controller 110 creates the flow table and assigns a number to the flow table. The controller 110 establishes each flow entry on the flow table (e.g., the size of the flow table or the action that the flow table can take). The controller 110 establishes a GoToTable table configuration indicating other flow tables (if any) to which the flow table can forward data packets.

[0039] In a programmable network, software functions separate the programming of network devices from the underlying hardware and provide a centralized programmable network that can quickly adapt to changing network requirements. The controller 110 communicates with the programmable switch 120 and other network devices (e.g., other computing devices 130) to configure the communication paths, device configurations, and other functions of the network. The controller 110 configures the flow entries of each flow table for communication with the programmable switch 120.

[0040] In block 220, the controller 110 sends a flow table and an instruction to install the flow table to the programmable switch 120. After receiving data about the programmable switch 120 and establishing flow entries of the table, the controller 110 transmits the flow table to the programmable switch 120 to allow the flow table to be assigned to the pipeline stage in the programmable switch 120.

[0041] The controller 110 communicates with the programmable switch 120 via any type of digital communication protocol on a wired or wireless network (e.g., the communication network 99). The controller 110 can poll the programmable switch 120 to determine: the capabilities of the hardware and software, and the capabilities of the programmable switch 120. Based on the data captured or extracted from the programmable switch 120, the communication can determine the characteristics of each of the multiple flow tables of the programmable switch 120. In one example, the controller 110 configures the characteristics and other pipeline capabilities of each of the multiple flow tables of the programmable switch 120 by transmitting instructions and data related to pipeline capabilities to the programmable switch 120. The instructions cause the programmable switch 120 to change or implement the flow table entries required for each flow table.

[0042] In an alternative example, the flow table is configured directly by the programmable switch 120. That is, the programmable switch 120 evaluates the capacity and configuration of the physical and logical characteristics of the programmable switch 120 and configures the flow table accordingly.

[0043] Figure 4 is a set of example flow tables for programmable switch 120. The proposed pipeline includes flow tables from Table 0 to Table 5. Each flow table includes the attributes "max_entries" (maximum entries) and "next_tables" (next table). The next table attribute establishes a set of tables to which a specific table can direct data packets for further processing. The maximum entry data describes the size of the flow table, which indicates the maximum number of flow entries that can be configured on the flow table. In a typical flow table, other entries (e.g., matching and action entries) are also included. Match entries can include input ports, data packet header fields, metadata from previous flow tables, or other entries. Action entries include actions taken by the programmable switch (e.g., forwarding data packets to a specific port).

[0044] exist Figure 4 In the example of , certain tables are allowed to forward data packets only to a fixed set of other tables. For example, Table 2 has a GoToTable option to Table 4 or Table 5 (but not Table 3). Table 3 has a GoToTable option to Table 4 or Table 5 (but not Table 2). Because there is no direct or indirect path from Table 2 to Table 3, Table 2 and Table 3 are mutually exclusive and independent of each other. In contrast, there is a path from Table 1 to Table 2 and Table 3. Therefore, Table 2 and Table 3 depend on Table 1. Similarly, Table 4 depends on Table 2 and Table 3, and Table 5 depends on Table 2, Table 3, and Table 4.

[0045] return Figure 2 In block 230, the programmable switch 120 configures the physical flow table pipeline. Figure 3 Block 230 is described in more detail.

[0046] Figure 3 is a block diagram illustrating a method 230 of configuring a physical flow table pipeline in a programmable switch 120 according to certain examples.

[0047] In block 310, the programmable switch 120 creates a graph having tables (as sequentially numbered nodes) and next tables (as links between nodes). Subsequent tables have higher numbers than previous tables. For example, the previous table may be designated as table 0, and the subsequent tables may be sequentially numbered as table 1, table 2, ... table N. The graph may indicate the allowed table migrations from each table to the subsequent table. Because a table may only forward data packets to a higher order table, and a flow entry may limit the subsequent tables to which a data packet may be forwarded, the graph will indicate possible flow options.

[0048] In an alternative example, instead of creating a diagram, other methods are used to describe the next table options in a programmable switch. For example, a logic table, a flow chart, Figure 4 or other suitable representation of the options in the next table.

[0049] In block 320, the programmable switch 120 determines whether a table is dependent on a previous table. If there is a sequence of next table migrations from the first table to the second table, the programmable switch 120 determines that the second table is dependent on the first table. That is, if there is a migration from Table 1 to Table 2, Table 2 is dependent on Table 1. If there is no migration from Table 1 to Table 2, Table 2 is not dependent on Table 1. The next table migration or GoToTable entry provides one or more tables to which data packets are forwarded from a particular table. For example, Table 0 may have GoToTable entries to Table 1, Table 2, and Table 4. These available migrations starting from Table 0 are represented in a diagram. The method of block 320 is performed for each table in the programmable switch 120 to determine the table dependencies of each table.

[0050] In block 330, the programmable switch 120 determines whether the table is independent of the previous table. The programmable switch 120 determines whether there is no next table migration sequence from the first table to the second table. If the sequence does not exist, the programmable switch 120 determines that the second table is independent of the first table. That is, if there is no migration from Table 1 to Table 2, Table 2 is independent of Table 1. In this example, data packets may not be forwarded from Table 1 to Table 2. Table 1 (but not Table 2) has a GoToTable entry that lists other tables. Therefore, Table 1 and Table 2 are independent of each other. The method of block 330 is performed for each table in the programmable switch 120 to determine the table dependencies of each table.

[0051] In block 340, the programmable switch 120 sequentially configures the pipeline stages. The programmable switch 120 identifies each pipeline stage and determines the sequential flow of these pipeline stages. For example, pipeline stage 0 is followed by pipeline stage 1, and then pipeline stage 2. Each pipeline stage will host one or more flow tables. In traditional systems, each pipeline stage will only host a single flow table (for each pass through the pipeline). In the present technology, more than one flow table can be hosted by a single pipeline stage as described herein.

[0052] In block 350, the programmable switch 120 sequentially assigns dependent flow tables to each pipeline stage until the next table is independent of the previous table. Starting from the first flow table, the programmable switch 120 proceeds sequentially and places each flow table in the next sequential pipeline stage. For example, the first flow table (e.g., table 0) is placed in the first pipeline stage (e.g., pipeline stage 0). After placing table 0, the programmable switch 120 places the next flow table in the next pipeline stage (e.g., table 1 in pipeline stage 1). This process continues until the next flow table for placement in the pipeline stage is identified as independent of the previously placed flow table.

[0053] In block 360, the programmable switch 120 assigns the independent tables to a single pipeline stage, assigning a table size that is the sum of the sizes of the independent tables. The programmable switch 120 determines whether the two flow tables are independent of each other in block 330. When the programmable switch 120 attempts to place the next flow table in the next pipeline stage, the programmable switch 120 recognizes that the next flow table is independent of the other flow table and places the independent flow tables in the same pipeline stage.

[0054] In one example, Table 1 and Table 2 are determined to be independent of each other in block 330. After the programmable switch 120 in the example places Table 0 in pipeline stage 0, the programmable switch 120 places Table 1 in pipeline stage 1. When the programmable switch 120 next looks at Table 2 for placement, the programmable switch 120 recognizes that Table 1 and Table 2 are independent. The programmable switch 120 determines that Table 1 and Table 2 can be placed together in pipeline stage 1. Two independent flow tables can be hosted by a single pipeline stage because data packets will only be forwarded to one of the multiple tables in the pipeline stage. That is, if there is no migration from Table 1 to Table 2, and therefore Table 2 is independent of Table 1, then Table 1 and Table 2 can be placed in the same pipeline stage.

[0055] The programmable switch 120 assigns a size to the pipeline stage that is equal to the sum of the sizes of Table 1 and Table 2. The programmable switch 120 determines the size of Table 1 and the size of Table 2, adds the sizes together, and assigns the size to the pipeline stage.

[0056] In block 370 , the method 230 determines whether more flow tables need to be allocated.

[0057] If more flow tables are to be allocated, the method 230 then follows the "yes" branch to block 350. The programmable switch again allocates dependent flow tables to the pipeline stages in sequence until the next table is independent of the previous table. For example, as described above in block 360, after placing table 1 and table 2 in the same pipeline stage 1, the programmable switch 120 determines that an additional flow table (e.g., table 3) needs to be allocated. The programmable switch 120 will therefore repeat the function of block 350.

[0058] If a subsequent set of independent tables is identified, the method 230 proceeds to block 360 again.

[0059] If the method 230 proceeds to block 370 and the programmable switch 120 has no additional flow tables to allocate, the method 230 then follows the “no” branch to return to block 240 or Figure 2 .

[0060] An example algorithm for determining table placement may be as follows:

[0061] 1.for each table i / *from 0to n* / ( / *from 0 to n* / )

[0062] 2. get the set of GoToTable targets

[0063] 3. for each target table j

[0064] 4. set table[j].predecessor=i

[0065] 5. if(i==0)

[0066] 6. table[0].pipeline_stage=0

[0067] 7. else

[0068] 8. table[i].pipeline_stage=table[table[i]predecessor]pipeline stage+1

[0069] 9. / *set the pipeline stage to the one after its largest predecessor* / ( / *Set the pipeline stage to the stage after its largest predecessor* / )

[0070] In this example algorithm, the programmable switch 120 assigns a table to a pipeline stage that has one more than the pipeline stage of the last table that has a GoToTable to that table. In line 4 of the algorithm, two tables (Table 5 and Table 6) are located in pipeline stage 2 and pipeline stage 3, respectively. If both Table 5 and Table 6 have a GoToTable to Table 7, then Table 7 must be after both Table 5 and Table 6. That is, Table 7 must be at least in pipeline stage 4. Since the predecessors are updated in the order of the tables, the last predecessor table is known (ignoring any earlier predecessor tables). For example, if Table 0 has GoToTable[1,2], then Table 1 and Table 2 have predecessor Table 0. If Table 1 can forward the data packet to Table 3, then Table 2 still has predecessor Table 0. Therefore, both Table 1 and Table 2 will forward the data packet to the pipeline stage (e.g., pipeline stage 2) that must be after Table 0.

[0071] return Figure 2 In block 240, the programmable switch 120 receives the data packet for processing. After configuring the programmable switch 120 as described herein, the data packet is transmitted to the programmable switch 120. The data packet may be provided by the controller 100, another programmable switch 120, or any other suitable device or module that communicates the data packet in the network.

[0072] The data packet is processed sequentially through the pipeline stages in block 250. As described herein, when a pipeline stage has two flow tables in the pipeline stage, only the table with a flow entry that matches the flow entry on the data packet can receive the data packet.

[0073] When the new table receives a data packet, the programmable switch 120 again executes the process of block 250 to determine where the data packet can be forwarded from the new table. This process repeats until the data packet is forwarded to the output port or the instruction in the table blocks the flow of the data packet.

[0074] The processing of data packets in a conventional programmable switch 120 will be described with reference to FIG. 5. Thereafter, the processing of data packets in a programmable switch 120 using the technology disclosed herein will be described. In both cases, the processing of data packets in a conventional programmable switch 120 using the technology disclosed herein will be described based on FIG. Figure 4 Describes the table configuration to handle data grouping.

[0075] FIG. 5 is a diagram illustrating a conventional programmable switch 120 executing Figure 4The network 100 includes a controller 110 that is capable of configuring a flow table of a programmable switch 120. The diagram depicts receiving a data packet at an input port of the programmable switch 120. The data packet may be received from another programmable switch 120 or any other computing device 130.

[0076] Each table in FIG. 5 (e.g., table 0, 1, 2, 3, 4, or 5) is in a single pipeline stage 0 to 5, respectively. Each physical pipeline stage includes a single table. Data packets are initially transmitted to the first table (table 0), which is in pipeline stage 0. Reference Figure 2 In the flow table of Table 0 in Table 0, Table 0 may provide a GoToTable instruction to transfer the data packet to Table 1, Table 2, or Table 3, or provide an output instruction to transfer the data packet to an output port. The logical transfer (but not physical transfer) of the data packet to one of Table 1, Table 2, or Table 3 is represented by an arrow from Table 0 to each of Table 1, Table 2, or Table 3.

[0077] In one example, if a data packet is logically forwarded from table 0 to table 2, the data packet must still physically pass through pipeline stage 1 to reach table 2 in pipeline stage 2. If a data packet is transmitted to table 2 (refer to Figure 4 ), then table 2 can forward the data packet to table 4 or table 5, or to the output port, but not to table 3. Even if the data packet is logically forwarded from table 2 to one of table 4 or table 5, the data packet must still physically pass through pipeline stage 3 to table 4 in pipeline stage 4 (or through both pipeline stage 3 and pipeline stage 4 to table 5 in pipeline stage 5). If the data packet is forwarded to table 3 (refer to Figure 4 If the flow table of Table 3 in FIG. 1 is used, Table 3 can forward the data packet to Table 4 or Table 5, or to the output port instead of forwarding it to Table 2.

[0078] Therefore, in this traditional network system, a data packet can be directed in a GoToTable instruction of a table to logically skip a unique table in the next pipeline stage. Although it is possible to logically skip subsequent tables and stages, the data packet still must physically pass through the next pipeline stage to reach the destination. Traditional systems do not allow programmable switches to compress multiple exclusive tables into a single pipeline stage.

[0079] Figure 6 According to some examples, the programmable switch 120 performs Figure 4Controller 110 communicates with programmable switch 120 to configure the pipeline. Programmable switch 120 receives flow table data and configures the pipeline so that independent tables with mutually exclusive flow entries are configured in a single pipeline stage. Table 2 and Table 3 are located in the same pipeline stage 2 because Table 2 and Table 3 may only access Table 4 or Table 5 but not each other (e.g. Figure 4 Therefore, these two independent tables are placed in the same pipeline stage.

[0080] The programmable switch 120 receives data packets from any suitable source, such as another programmable switch 120 or any suitable other computing device 130. The data packets are first provided to table 0. Table 0 can forward the data packets to table 1, table 2, or table 3, or to an output port.

[0081] If the data packet is transmitted to Table 2 (such as Figure 4 ), then table 2 can forward the data packet to table 4 or table 5, or to the output port, but not to table 3. Because table 2 and table 3 are in the same pipeline stage 2, the data packet received by table 2 is logically forwarded to one of table 4 or table 5. Because table 3 is in the same pipeline stage as table 2, the data packet received by table 2 does not need to physically pass through additional pipeline stages (including table 3).

[0082] If a data packet is sent from table 0 to table 3 (ref. Figure 4 If the flow table of Table 3 in Table 3 is used, Table 3 can forward the data packet to Table 4 or Table 5, or to the output port, but not to Table 2. Similarly, for the data packet transmitted from Table 0 to Table 3, Table 2 does not need an additional pipeline stage.

[0083] In an example test case that illustrates a possible table combination, Table 2 and Table 3 are independent and are arranged in parallel in a single pipeline stage. The configuration described in this example is as follows Figure 6 As shown (as previously indicated).

[0084] Table 1 has GoToTable entries to Table 2 and Table 3, and Table 2 and Table 3 have GoToTable entries to Table 4 and / or larger tables. The flow entries of Table 2 and Table 3 may include:

[0085] Table 1:match srcMac=X,action goto_table:2

[0086] (Table 1: Matching source MAC (Media Access Control) address = X, action proceeds to Table 2)

[0087] Table 1:match srcMac=Y,action goto_table:3

[0088] (Table 1: Matching source Mac address = Y, action proceeds to Table 3)

[0089] Table 2:match destMac=A,action:output:5

[0090] (Table 2: Match Destination Mac Address = A, Action: Output Port: 5)

[0091] Table 3:match destMac=A,action:output:10

[0092] (Table 3: Match Destination Mac Address = A, Action: Output Port: 10) In this example, the controller is communicating that data packets from X will go to destination A via port 5, and data packets from Y will go to destination A via port 10. Table 2 and Table 3 do not have GoToTables to each other. Therefore, the system's table diagram will show that Table 2 and Table 3 are independent of each other.

[0093] If the programmable switch 120 in this example combines Table 2 and Table 3 in a single pipeline stage, the programmable switch 120 can ensure that the correct entry is matched by including the logical table ID in the key. Thus, the entry may include:

[0094] Pipeline stage 1: match table=l,srcMac=X,action goto_table:2,setnext_table=2

[0095] (Pipeline stage 1: match table = 1, source Mac address = X, action proceeds to table 2, set next table = 2)

[0096] Pipeline stage 1: match srcMac=Y, action goto_table:3, set next_table=3

[0097] (Pipeline stage 1: match source Mac address = Y, proceed to table 3, set next table = 3)

[0098] Pipeline stage 2:match table=2,destMac=A,action:output:5

[0099] (Pipeline stage 2: Match table = 2, Destination Mac address = A, Action: Output port: 5)

[0100] Pipeline stage 2:match table=3,destMac=A,action:output:10

[0101] (Pipeline Stage 2: Match Table = 3, Destination Mac Address = A, Action: Output Port: 10)

[0102] Figure 7 is a diagram depicting a programmable switch 120 compressing four tables and three tables into different pipeline stages according to certain examples. This example is similar to Figure 6 , but the other tables are compressed.

[0103] As shown, the controller 110 communicates with the programmable switch 120. As shown, the programmable switch 120 receives a data packet. The data packet is first provided to table 0. Table 0 evaluates the data packet and identifies that the data packet has one of four mutually exclusive combinations of flow entries (e.g., IPv4 or IPv6 Internet Protocol keys and TCP and UDP layer 4 source and destination ports). Tables 1 to 4 are shown in parallel in a single pipeline stage 2, so that table 0 can forward the data packet to any one of table 1, table 2, table 3, or table 4 in pipeline stage 1, but cannot forward to any two or any more of table 1, table 2, table 3, or table 4.

[0104] In this example, table 0 executes instructions to forward the data packet to one of table 1, table 2, table 3, or table 4 (based on which of the four tables has the same Internet Protocol key and layer 4 source port and destination port combination as the data packet). Tables 1 to 4 can only forward the data packet to pipeline stage 2 or a subsequent sequential pipeline stage, and not to a parallel table among those parallel tables in pipeline stage 1.

[0105] In pipeline stage 2 of this example, table 5 identifies that the other flow entries of the data packet are mutually exclusive and match one of the tables in pipeline stage 3. Table 5 provides a GoToTable instruction to forward the data packet to one of table 6, table 7, or table 8 in pipeline stage 3, based on which table will match the flow entry in the data packet. Table 6, table 7, or table 8 can only forward the data packet to table 9 in pipeline stage 4, or to an egress port, but not to a parallel table in which parallel tables in pipeline stage 3.

[0106] In the examples herein, two, three, and four tables are shown as being placed in a single pipeline stage. Any other suitable number of flow tables (where the flow tables are independent of one another) may be placed in a single stage. For example, five, ten, fifty, one hundred, or any desired number of independent tables may be placed in a single pipeline stage, as appropriate.

[0107] Example System

[0108] Figure 8 Depicted are a computing machine 2000 and a module 2050 according to certain examples. The computing machine 2000 may correspond to any of the various computers, servers, mobile devices, embedded systems, or computing systems presented herein. The module 2050 may include one or more hardware or software elements configured to facilitate the computing machine 2000 to perform the various methods and processing functions presented herein. The computing machine 2000 may include various internal components or attached components, such as a processor 2010, a system bus 2020, a system memory 2030, a storage medium 2040, an input / output interface 2060, and a network interface 2070 for communicating with a network 2080.

[0109] The computing machine 2000 may be implemented as a conventional computer system, an embedded controller, a laptop computer, a server, a mobile device, a smart phone, a set-top box, a kiosk, a vehicle information system, one or more processors associated with a television, a custom machine, any other hardware platform, or any combination or complex thereof. The computing machine 2000 may be a distributed system configured to function using multiple computing machines interconnected via a data network or bus system.

[0110] The processor 2010 may be configured to execute code or instructions to perform the operations and functions described herein, manage request flows and address mappings, and perform calculations and generate commands. The processor 2010 may be configured to monitor and control the operation of components in the computing machine 2000. The processor 2010 may be: a general purpose processor, a processor core, a multiprocessor, a reconfigurable processor, a microcontroller, a digital signal processor ("DSP"), an application specific integrated circuit ("ASIC"), a graphics processing unit ("GPU"), a field programmable gate array ("FPGA"), a programmable logic device ("PLD"), a controller, a state machine, a gated logic, a discrete hardware component, any other processing unit, or any combination or complex thereof. The processor 2010 may be a single processing unit, multiple processing units, a single processing core, multiple processing cores, a dedicated processing core, a coprocessor, or any combination thereof. According to certain embodiments, the processor 2010 and other components of the computing machine 2000 may be virtualized computing machines executed in one or more other computing machines.

[0111] The system memory 2030 may include non-volatile memory, such as read-only memory ("ROM"), programmable read-only memory ("PROM"), erasable programmable read-only memory ("EPROM"), flash memory, or any other device capable of storing program instructions or data with or without applied power. The system memory 2030 may also include volatile memory, such as random access memory ("RAM"), static random access memory ("SRAM"), dynamic random access memory ("DRAM"), and synchronous dynamic random access memory ("SDRAM"). Other types of RAM may also be used to implement the system memory 2030. The system memory 2030 may be implemented using a single memory module or multiple memory modules. Although the system memory 2030 is depicted as part of the computing machine 2000, those skilled in the art will recognize that the system memory 2030 may be separate from the computing machine 2000 without departing from the scope of the subject technology. It should also be recognized that the system memory 2030 may include or may operate in conjunction with a non-volatile storage device such as a storage medium 2040.

[0112] Storage medium 2040 may include: a hard disk, a floppy disk, a compact disk read only memory ("CD-ROM"), a digital versatile disk ("DVD"), a Blu-ray disk, a magnetic tape, a flash memory, other non-volatile memory devices, a solid state drive ("SSD"), any magnetic storage device, any optical storage device, any electrical storage device, any semiconductor storage device, any physical based storage device, any other data storage device, or any combination or complex thereof. Storage medium 2040 may store one or more operating systems, application programs and program modules (e.g., module 2050), data, or any other information. Storage medium 2040 may be part of computing machine 2000 or may be connected to computing machine 2000. Storage medium 2040 may also be part of one or more other computing machines that communicate with computing machine 2000, such as a server, a database server, cloud storage, network attached storage, etc.

[0113] Module 2050 may include one or more hardware or software elements configured to facilitate the computing machine 2000 to perform various methods and processing functions proposed herein. Module 2050 may include one or more instruction sequences stored as software or firmware in association with system memory 2030, storage medium 2040, or both. Storage medium 2040 may therefore represent an example of a machine or computer readable medium on which instructions or codes may be stored for execution by processor 2010. A machine or computer readable medium may generally refer to any one or more media used to provide instructions to processor 2010. Such a machine or computer readable medium associated with module 2050 may include a computer software product. It should be appreciated that a computer software product including module 2050 may also be associated with one or more processes or methods for delivering module 2050 to computing machine 2000 via network 2080, any signal bearing medium, or any other communication or delivery technology. Module 2050 may also include hardware circuits or information for configuring hardware circuits (e.g., microcode or configuration information for FPGA or other PLDs).

[0114] Input / output ("I / O") interface 2060 may be configured to couple to one or more external devices to receive data from the one or more external devices and to send data to the one or more external devices. Such external devices and various internal devices may also be referred to as peripheral devices. I / O interface 2060 may include both electrical and physical connections for operably coupling various peripheral devices to computing machine 2000 or processor 2010. I / O interface 2060 may be configured to transmit data, addresses, and control signals between peripheral devices, computing machine 2000, or processor 2010. I / O interface 2060 may be configured to implement any standard interface, for example, small computer system interface ("SCSI"), serially attached SCSI ("SAS"), fiber channel, peripheral component interconnect ("PCI"), PCI Express (PCIe), serial bus, parallel bus, advanced technology attachment ("ATA"), serial ATA ("SATA"), universal serial bus ("USB"), Thunderbolt, FireWire, various video buses, and the like. I / O interface 2060 may be configured to implement only one interface or bus technology. Alternatively, I / O interface 2060 may be configured to implement multiple interfaces or bus technologies. I / O interface 2060 may be configured as a part of system bus 2020, all of system bus 2020, or operate in conjunction with system bus 2020. I / O interface 2060 may include one or more buffers for buffering transmission between one or more external devices, internal devices, computing machines 2000, or processors 2010.

[0115] The I / O interface 2060 may couple the computing machine 2000 to various input devices, including a mouse, a touch screen, a scanner, an electronic digitizer, a sensor, a receiver, a touch pad, a trackball, a camera, a microphone, a keyboard, any other pointing device, or any combination thereof. The I / O interface 2060 may couple the computing machine 2000 to various output devices, including a video display, a speaker, a printer, a projector, a tactile feedback device, an automatic control, a robotic assembly, an actuator, a motor, a fan, a solenoid, a valve, a pump, a transmitter, a signal transmitter, a lamp, and the like.

[0116] The computing machine 2000 can operate in a networked environment using logical connections to one or more other systems or computing machines across a network 2080 through a network interface 2070. The network 2080 may include a wide area network (WAN), a local area network (LAN), an intranet, the Internet, a wireless access network, a wired network, a mobile network, a telephone network, an optical network, or a combination thereof. The network 2080 may be packet-switched, circuit-switched, have any topology, and may use any communication protocol. The communication links within the network 2080 may involve various digital or analog communication media, such as fiber optic cables, free space optics, waveguides, electrical conductors, wireless links, antennas, radio frequency communications, and the like.

[0117] The processor 2010 may be connected to other elements of the computing machine 2000 or various peripherals discussed herein via a system bus 2020. It should be appreciated that the system bus 2020 may be internal to the processor 2010, external to the processor 2010, or both. According to some examples, the processor 2010, other elements of the computing machine 2000, or any of the various peripherals discussed herein may be integrated into a single device such as a system on a chip (“SOC”), a system on a package (“SOP”), or an ASIC device.

[0118] In summary, a controller device for a network provides data associated with a pipeline capability of a programmable switch. The programmable switch receives data related to the pipeline capability of the programmable switch. The pipeline capability includes multiple flow tables and an allowed table migration for each of the multiple flow tables. The programmable switch determines that a first flow table and a second flow table are independent of each other based on the allowed table migration for each of the multiple flow tables. The programmable switch configures a pipeline for a data flow in a computing device, the pipeline including multiple pipeline stages, and a specific pipeline stage including a first flow table and a second flow table.

[0119] Examples may include computer programs that embody the functions described and shown herein, wherein the computer programs are implemented in a computer system including instructions stored in a machine-readable medium and a processor that executes these instructions. However, it should be apparent that there may be many different ways to implement examples in computer programming, and these examples should not be interpreted as being limited to any one set of computer program instructions. In addition, a skilled programmer will be able to write such a computer program based on the associated descriptions in the attached flow charts and the application text to implement the examples in the disclosed examples. Therefore, for a full understanding of how to make and use examples, it is not considered necessary to disclose a specific set of program code instructions. In addition, those skilled in the art will recognize that one or more aspects of the examples described herein may be performed by hardware, software, or a combination thereof, as may be embodied in one or more computing systems. In addition, any reference to an action performed by a computer should not be interpreted as being performed by a single computer, because more than one computer may perform the action.

[0120] The examples described herein can be used with computer hardware and software that perform the methods and processing functions described herein. The systems, methods, and processes described herein can be embodied in a programmable computer, computer executable software, or digital circuits. The software can be stored on a computer readable medium. For example, a computer readable medium can include: a floppy disk, a RAM, a ROM, a hard disk, a removable medium, a flash memory, a memory stick, an optical medium, a magneto-optical medium, a CD-ROM, and the like. A digital circuit can include an integrated circuit, a gate array, a building block logic, a field programmable gate array (FPGA), and the like.

[0121] The example systems, methods, and actions described in the previously presented examples are illustrative, and in alternative examples, certain actions may be performed in a different order, performed in parallel with each other, omitted entirely, and / or combined between different exemplary examples, and / or certain additional actions may be performed without departing from the scope and spirit of the various examples. Therefore, such alternative examples are included within the scope of the appended claims, the scope of which will be given the broadest interpretation to encompass such alternative examples.

[0122] Although specific examples have been described in detail above, this description is for illustrative purposes only. Therefore, it should be appreciated that many of the aspects described above are not intended to be required or essential elements unless expressly stated otherwise.

[0123] Modifications to the disclosed aspects of the examples, and equivalent components or acts corresponding thereto, in addition to those described above, may be made by one of ordinary skill in the art having the benefit of this disclosure without departing from the spirit and scope of the examples defined in the appended claims, the scope of which is to be given the broadest interpretation to encompass such modifications and equivalent structures.

Claims

1. A method for compressing a forwarding pipeline, comprising: The following operations are performed by computing devices in the network system: receiving data associated with pipeline capabilities of the computing device, the pipeline capabilities comprising a plurality of flow tables and allowed table migrations for each of the plurality of flow tables; configuring a pipeline, the pipeline comprising the plurality of flow tables arranged in a serial configuration; After configuring the pipeline, determining that a first flow table and a second flow table are independent of each other based on an allowed table migration of each of the plurality of flow tables, wherein the first flow table and the second flow table are independent of each other such that the first flow table in the pipeline cannot transmit data packets to the second flow table; After determining that the first flow table and the second flow table are independent of each other, the pipeline for data flow is reconfigured in the computing device according to the pipeline capability, the pipeline comprising multiple pipeline stages, a specific pipeline stage comprising the first flow table and the second flow table arranged in a parallel configuration, and a data packet only matches a flow entry in one of the first flow table and the second flow table in the specific pipeline stage.

2. The method according to claim 1, further comprising: Receiving a first data packet by a preceding pipeline stage; transmitting the first data packet to the first flow table in the particular pipeline stage through a preceding flow table in a preceding pipeline stage; receiving, by the preceding pipeline stage, a second data packet; The second data packet is transmitted to the second flow table in the specific pipeline stage through the previous flow table in the previous pipeline stage.

3. The method according to claim 2, further comprising: executing, on the first data packet, instructions provided in a set of flow entries of the first flow table, via the first flow table; and The first data packet is transmitted through the first flow table to a subsequent table in a subsequent pipeline stage in the pipeline.

4. The method according to claim 3, wherein: The instructions are executed based on a set of flow entries for the first data packet matching a set of flow entries of the first flow table.

5. The method according to claim 3 or 4, wherein: Execution of the instructions modifies one or more data entries of the first data group.

6. The method according to claim 3 or 4, wherein: Executing the instruction modifies the metadata value of the first data group.

7. The method according to claim 3 or 4, wherein: Executing the instruction modifies a next table, and the first flow table is to direct the first data packet to the next table.

8. The method according to any one of claims 2 to 7, wherein: Based on the flow entry of the first data packet and the flow entry of the previous flow table, the first data packet can only be forwarded to the first flow table in the specific pipeline stage but cannot be forwarded to the second flow table in the specific pipeline stage.

9. The method according to any one of claims 2 to 8, wherein: The data in the first data packet includes one or more communication protocols.

10. The method according to any one of claims 1 to 9, further comprising: The controller of the network system performs the following operations: configuring said data associated with said pipeline capabilities of said computing device; and The data is transmitted to the computing device to configure the computing device.

11. The method according to any one of claims 1 to 10, wherein: The received data is received from a network controller, and the computing device configures a flow table in the pipeline based on the data.

12. The method according to any one of claims 1 to 11, wherein: The computing device is a programmable switch.

13. The method according to claim 12, wherein: The programmable switch is a dedicated integrated circuit.

14. The method according to any one of claims 1 to 13, wherein: The pipeline capability also includes a size of each of the plurality of flow tables.

15. The method according to any one of claims 1 to 14, further comprising, by the computing device: creating a graph of table migrations based on the received allowed table migrations; and It is determined based on the graph that the first flow table and the second flow table are independent of each other.

16. The method according to claim 15, wherein: The graph is created such that the plurality of flow tables are depicted as sequentially numbered nodes and table migrations are allowed to be depicted as links between the nodes.

17. A computer program product comprising: A non-transitory computer readable medium having computer readable program instructions embodied thereon, which when executed by a computer cause the computer to: receiving data associated with pipeline capabilities of the computer, the pipeline capabilities comprising a plurality of flow tables and allowed table migrations for each of the plurality of flow tables; configuring a pipeline, the pipeline comprising the plurality of flow tables arranged in a serial configuration; After configuring the pipeline, determining that a first flow table and a second flow table are independent of each other, wherein the first flow table and the second flow table are independent of each other so that the first flow table in the pipeline cannot transmit data packets to the second flow table; and After determining that the first flow table and the second flow table are independent of each other, the pipeline for data flow is reconfigured in the computer according to the pipeline capability, the pipeline comprising multiple pipeline stages, a specific pipeline stage comprising the first flow table and the second flow table arranged in a parallel configuration, and a data packet only matches a flow entry in one of the first flow table and the second flow table in the specific pipeline stage.

18. The computer program product of claim 17, further comprising computer readable program instructions for: receiving a first data packet in a preceding pipeline stage; transmitting the first data packet to a first flow table in the specific pipeline stage through a previous flow table; receiving a second data packet; The second data packet is transmitted to a second flow table in the specific pipeline stage through the previous flow table.

19. A system for a compression and forwarding pipeline, comprising: Storage devices; as well as a processor in a network system, the processor being communicatively coupled to the storage device, wherein the processor executes application code instructions stored in the storage device to cause the system to: receiving data associated with a pipeline capability of the processor, the pipeline capability comprising a plurality of flow tables and an allowed table migration for each of the plurality of flow tables; configuring a pipeline, the pipeline comprising the plurality of flow tables arranged in a serial configuration; After configuring the pipeline, determining that a first flow table and a second flow table in the flow table are independent of each other, wherein the first flow table and the second flow table are independent of each other so that the first flow table in the pipeline cannot transmit data packets to the second flow table; After determining that the first flow table and the second flow table are independent of each other, a pipeline for data flow is reconfigured in the processor according to the pipeline capability, the pipeline comprising multiple pipeline stages, a specific pipeline stage comprising the first flow table and the second flow table arranged in a parallel configuration, and a data packet only matches a flow entry in one of the first flow table and the second flow table in the specific pipeline stage.

20. An apparatus for a compression forwarding pipeline, comprising a computing device in a network system, the apparatus comprising: means for receiving data associated with pipeline capabilities of the computing device, the pipeline capabilities comprising a plurality of flow tables and allowed table migrations for each of the plurality of flow tables; means for configuring a pipeline, the pipeline comprising the plurality of flow tables arranged in a serial configuration; means for determining, after configuring the pipeline, that a first flow table and a second flow table are independent of each other based on an allowed table migration for each of the plurality of flow tables, wherein the first flow table and the second flow table are independent of each other such that the first flow table in the pipeline cannot transmit data packets to the second flow table; A device for reconfiguring the pipeline for data flow in the computing device according to the pipeline capability after determining that the first flow table and the second flow table are independent of each other, the pipeline comprising multiple pipeline stages, a specific pipeline stage comprising the first flow table and the second flow table arranged in a parallel configuration, and a data packet only matches the flow entry in one of the first flow table and the second flow table in the specific pipeline stage.

21. The apparatus of claim 20, further comprising means for carrying out the method of any one of claims 2 to 16.

22. A computer readable medium comprising instructions which, when executed by a computer, cause the computer to perform the steps of the method of any one of claims 1 to 16.

Citation Information

Patent Citations

  • Method and system for flow table lookup parallelization in a software defined networking (SDN) system

    US20140241356A1