WO2023134934A1 - Support de calculs sur nombres reels au niveau des commutateurs physiques - Google Patents
Support de calculs sur nombres reels au niveau des commutateurs physiques Download PDFInfo
- Publication number
- WO2023134934A1 WO2023134934A1 PCT/EP2022/085309 EP2022085309W WO2023134934A1 WO 2023134934 A1 WO2023134934 A1 WO 2023134934A1 EP 2022085309 W EP2022085309 W EP 2022085309W WO 2023134934 A1 WO2023134934 A1 WO 2023134934A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- bits
- operations
- subset
- value
- packet
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/355—Application aware switches, e.g. for HTTP
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/60—Software-defined switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9015—Buffering arrangements for supporting a linked list
Definitions
- the present invention relates to the field of electronic communication networks and in particular the physical switches implemented in these networks.
- Physical switches or switches in English are very limited in their computing capacities, memory and have very strong constraints in terms of latency.
- a switch processes each packet it receives with a very limited number of steps or clock cycles (i.e. the minimum time unit during which the processor can process an elementary action or instruction) .
- steps or clock cycles i.e. the minimum time unit during which the processor can process an elementary action or instruction
- the number of steps or cycles does not exceed 12 cycles.
- the processor can process several instructions in parallel.
- the number of instructions that the processor can process in parallel depends a lot on the size of the processor register, which again is very limiting on the processors used in physical switches.
- the physical switches can be programmed to transfer the packets on which a more complex processing is to be applied to a server which will carry out the complex calculation and will then transmit the packet.
- Such an implementation makes it possible to perform more complex calculations, and in particular to be much less limited on the functions that can be used.
- such an implementation causes high latency and therefore cannot be used for all types of processing. It will therefore be used mainly for the processing of packets a posteriori.
- the present invention improves the situation.
- a first aspect of the invention relates to a method of packet processing by a physical switch of an electronic communications network, the method comprising:
- the switch determining a result of an application of one or a plurality of operations on at least one input value obtained by the switch from the packet, at least one of the operations matches to a correspondence table, said correspondence table representing correspondences between input values of the table and output values of the table, the input values of the table are represented in a first real value representation encoded on a first set of bits comprising a first subset of bits representing an integer part and a second subset of bits representing a decimal part and/or the table output values are represented in a second real value representation encoded on a second set of bits comprising a first subset of bits representing an integer part and a second subset of bits representing a decimal part; And
- the application by the switch of an action on the packet.
- step we mean a clock cycle during which the processor can only process one instruction in a row or several instructions if they are all processed in parallel.
- a network switch also called switch in English which connects several physical segments in an electronic communications network (for example telecommunications network or computer network) or several physical segments between several electronic communications networks.
- a packet it is understood the structure allowing the transmission of data at the level of the network layer.
- a packet notably comprises a header and the data to be transmitted.
- value obtained from the packet it is understood a value obtained by the switch on the basis of the packet and which is therefore dependent on the packet, in other words the value depends either on the characteristics of the packet (for example, the length of the packet), or data contained in the packet both in the header part and in the body of the packet (thus the value can be the source port entered in the header of the packet).
- any operation performed by the switch either natively (for example, addition, permutation, shift of bits to the left, shift of bits to the right), that is to say that the tasks to be carried out to execute the operation are already defined in the memory of the switch either on the basis of the correspondence table, that is to say for the operations which correspond to a correspondence table.
- An operation when it is performed natively, may require several clock cycles (or several steps to be processed), i.e. such an operation is broken down into a succession of instructions applied one after the other.
- the operations performed on the look-up table basis can each be processed by the processor in a single clock cycle.
- This plurality of operations is processed by the switch (for example by means of the processor core, the processor register and possibly RAM elements present in the switch).
- the operation or plurality of operations performed by the switch corresponds to an algorithm which represents a function whose input(s) are values obtained from the packet.
- correspondence table it is understood a table of correspondences, or even a Lookup Table (LUT) in English, making the correspondence between input values and output values.
- Correspondence tables represent correspondences between inputs and outputs of the table.
- the correspondence table is generated (or encoded for example in bits) on the basis of the correspondences between its inputs and its outputs.
- These inputs and outputs are coded for example in bits.
- These inputs and outputs can in particular be integers or real numbers. They can also include any type of information commonly encoded in the lookup tables implemented in network switches.
- value (input or output) of a table represented in a real value representation it is understood here that the input value before being encoded on a set of bits in the table is a real and that the coding on this set of bits makes it possible to keep information on this value in addition to the information relating to the integer part of this value.
- the specific real value representation implemented by the invention is a division of the bits making it possible to encode the value in the table, between bits representing the integer part and bits representing the decimal part.
- the action is a function of the result of the application of a succession of operations, that is to say that the action is dependent on the result, it is thus understood that the application of the action is either subordinate to the result of the application of the succession of operations (for example the action is only applied for a certain result) or that the action itself varies according to the result of the succession of operations (for example example, the action consisting in modifying the destination port of the packet by taking as new destination port the value resulting from the application of the succession of operations).
- the determination of the action to be applied to the packet and/or the at least one input value obtained from the packet and/or the operation or the plurality of operations depend on at least one trigger value obtained by the switch from the packet.
- the trigger value is entered into a match-action table which outputs a function (representing the operation or plurality of operations), input values on which to apply this function and an action.
- each correspondence table LUT i corresponding to one of the operations among the plurality of operations represents correspondences between input values of table LUT i and output values of table LUT i
- the values d entry of table LUT i are represented in a first real value representation RVR 1,i coded on a first set of bits EB 1,1,i comprising a first subset of bits SEB 1,1,i representing a part integer and a second subset of bits SEB 1,2,i representing a decimal part
- the table output values are represented in a second real value representation RVR 2,i encoded on a second set of bits EB 2,i comprising a first subset of bits SEB 2,1,i representing an integer part and a second subset of bits SEB 2,2,i representing a decimal part.
- lookup tables have at least their inputs or outputs that are represented as a real, or both. This makes it possible to perform several operations with reals as input or output or both.
- the operations which have as input the at least one input value correspond to LUT i correspondence tables whose output values are represented in second real value representations RVR 2,i .
- the input values are integers
- the output values are equal or close respectively to the input values.
- close means that the distance between respectively the output values coded on the second set of bits EB 2,i and the input values coded on the first set of bits EB 1,i is less than a threshold, for example, strictly less than 0.5.
- the distance used can for example be the Cartesian distance.
- a value represented in a real value representation encoded on a set of bits is encoded in this real value representation.
- At least one output value of a correspondence table is adapted by adding or subtracting a value in order to minimize the difference between the result of applying the operation or the plurality of operations on the at least one input value and the result of the function that the operation or the plurality of represents operations when the function is applied to the at least one input value and calculated with a precision greater than the precisions of the real value representations RVR 1 , i , RVR 2 , i .
- the output value and the adapted output value may be close. This optimization can be performed in the same way as the optimization performed in neural networks, namely by minimizing a distance between the desired result and the obtained result.
- real-value transformation operations can transform an integer into a value represented in a real-value representation whose integer part differs from the integer of the value .
- the distribution of bits between the first subset of bits and the second subset of bits of the first set of bits is modified in order to minimize the difference between the result of the application of the operation or the plurality of operations on the at least one input value and the result of the function represented by the operation or the plurality of operations when the function is applied on the at least one input value and calculated with a precision greater than the precisions of the RVR true value representations 1 , I ,RVR 2 , I ; and or
- the distribution of bits between the first subset of bits and the second subset of bits of the second set of bits is modified in order to minimize the difference between the result of the application of the operation or the plurality of operations on the at least one input value and the result of the function represented by the operation or the plurality of operations when the function is applied on the at least one input value and calculated with a precision greater than the precisions actual value representations RVR 1 , i ,RVR 2 , i .
- the operations not corresponding to a correspondence table are operations among addition, multiplication, permutation, shifting of bits.
- Addition, multiplication and permutation are operations which are particularly suited to be applied to values expressed in a real value representation of which the integer part is coded on one set of bits and the decimal part is coded on another set of bits.
- the execution of the operation can be carried out independently of the distribution of bits between integer part and decimal part. In other words, the distribution of bits between integer part and decimal part does not affect the calculation of the operation.
- Other real value representations e.g.
- the IEEE 754 standard representation of floating point numbers do not allow the use of the operations shown previously without applying additional transformations to the values to enable the application of the operation, which increases the number of steps required to perform the operation.
- the switch processor would require four steps, whereas to add two numbers represented in the value representation real as described herein requires only one step (or two if the two numbers have a different representation).
- the second set of bits on which the second real value representation is coded comprises a third subset of bits representing information depending on the first subset of bits and/or on the second subset of bits , and wherein the result of applying one or a plurality of operations is based on the information.
- the result of a following operation among the plurality of operations is based on the information, said following operation being executed after the at least one operation corresponding to a correspondence table.
- the first set of bits on which the first real value representation is coded can also comprise a third subset of bits representing information depending on the first subset of bits and/or on the second subset of bits.
- the information coded in the third subset of bits is advantageously a digital value, for example a real value.
- information depending on a subset of bits it is understood that the information is obtained by applying an operation or an instruction to the value encoded by the subset of bits when determining the table of correspondence.
- a computer program comprising instructions for the implementation of all or part of a method as defined herein when these instructions are executed by a processor.
- a non-transitory, computer-readable recording medium on which such a program is recorded.
- Another aspect of the invention relates to a physical switch of an electronic communications network, the switch comprises:
- FIG. 1 illustrates a flowchart representing the method in a particular embodiment.
- an electronic communication network 1 comprising switches 2, 3, 4
- each of the switches connecting several physical segments 5 (for example cables or optical fibres) of the network together.
- signals representing packets 8, 9 are communicated from switch to switch.
- switches 3, 4 connect only internal 5 segments to the network, others of these switches 2 connect internal 5 segments to the network with segments from other electronic communication networks 7.
- Switch 3 includes a communications unit (COM) 3.1 comprising input ports and output ports.
- the switch 3 also comprises a processor (PROC) 3.2, a memory (MEMO) 3.3 and a control plane communication unit (CONT_COM) 3.4 to configure the switch 3.
- PROC processor
- MEMO memory
- CONT_COM control plane communication unit
- the memory 3.3 includes a non-volatile memory on which the computer program is stored and a volatile memory on which is stored the compiled script to be executed by the processor, correspondence tables, instructions relating to native operations.
- the communication unit of the control plane 3.4 makes it possible to receive the compiled scripts as well as the correspondence tables sent through a control plane by a computer 10.
- the processor 3.2 is notably configured to control the communication unit 3.1 to receive packets 8 and to send packets 9 in a data transfer plane.
- Processor 3.2 is also configured to process packet 8: this processing is defined by a script and implements a succession of operations executed on the basis of correspondence tables or sequences of instructions stored on the volatile memory.
- Switch 3's processing of packet 8 ends when the packet is transmitted (as in the case of packet 9) to another network entity, such as another switch, or when the packet is dropped.
- the 3.2 processors implemented in the physical switches 2, 3, 4 are switch-specific processors allowing processing with very low latency, for example they are RISC-type processors.
- the computer 10 makes it possible to supervise the activity of the various switches 2, 3, 4 of the network 1 and to configure them, namely to transmit to them the compiled scripts to be executed and the correspondence tables making it possible to execute these scripts.
- the communication between the control computer 10 and the switches 2, 3, 4 is done at the level of the control plane via the same packets 8, 9 or via packets specific to the control plane 11.
- the computer 10 can allow the network manager to write the scripts, compile them and generate the correspondence tables. However, these different tasks can be distributed over different entities.
- step S1 the user enters into the computer 10 a script relating to a processing to be applied at the level of the switch.
- This script specifies the packets to be processed, a rule to execute, and an action to be taken by the switch based on the rule.
- the rule comprises a function and a domain of definition of this function.
- This rule also includes a definition of the inputs used to calculate the result of this function.
- the rule determines a function f and inputs of this function.
- the action is defined as dependent on the result of the rule application.
- the function may be f(x,y), with x and y representing respectively a first and a second characteristic or value of a packet.
- x can represent the size of the packet and y can represent the source port number of the packet.
- the packets considered are TCP (for “Transmission Control Protocol”) packets, the size of the packets can be between 0 and 32 bits.
- the range of x can be defined as the interval [0; 32].
- y can represent the source port of the received packet.
- the source physical port being the physical ingress port of the switch through which the packet entered the network.
- the packets concerned can for example be the packets whose source port is one among the physical ports numbers [1, 2, 3, 6, 5] of the network, and the destination port is the physical port number 4.
- the physical destination port being the physical output port of the switch by which the packet will leave the network.
- the source physical port is the physical ingress port of the switch through which the packet will enter the network.
- a correspondence table is generated. This associates input values representing a characteristic of the packet or corresponding to values of the packet with the first operation(s) to be executed to apply the rule.
- the action is defined according to the rule results, i.e. the result of the calculation of f(x,y).
- a threshold ⁇ is defined and the action can be defined for example as dropping the packet when the result is equal to or lower than this threshold.
- f can be defined by the equation:
- f can have a single entry x (e.g. log(x)) or a set of entries (x, y, z).
- the computer 10 determines for each input, x, y, of the function f a correspondence table matching the possible values taken by the inputs x (respectively y) of the function f which are integers with values (respectively ) expressed in a real value representation RVR x (respectively RVR y ).
- the real value representation is a real representation of numbers over a certain number of bits, in which a part of the bits, for example, the first bits of this representation represent the integer part of the real number and a second part, for example, the subsequent bits of this representation represent the fractional part of the real number.
- Each of the x,y inputs can be represented in a real value representation RVR x , RVR y of its own.
- two correspondence tables are determined LUT x and LUT y .
- the first n x bits of the real value representation used in LUT x can be the integer part of the representation and the following bits to the decimal part of the real value representation RVR x used in LUT x .
- the first n y bits of the real-valued representation used in LUT y may correspond to the integer part of the representation and the following bits to the decimal part of the real value representation RVR y used in LUT y .
- n x and n y can be distinct.
- n x and n y are identical when the sum function x + y is not implemented in the form of a correspondence table, but directly in the form of a native operation of the switch.
- n x and n y can also be distinct when the function sum x + y is implemented in the form of a correspondence table.
- the correspondence table corresponding to x+y or to a set of operations comprising x+y (for example, ) takes into account the RVR x and RVR y representations used and therefore can accommodate differences in the representations.
- a value (the actual representation of an integer value x i obtained by means of the LUT x look-up table) and a value (the actual representation of an integer value y j obtained by means of the LUT correspondence table y ) can also differ even though the values of x i and of y i are identical.
- the difference between the two values And will be weak, but can be more consequent when the function sum x + y is implemented in the form of a correspondence table, that is to say that the first operation practiced on x and y is done by means of a correspondence table and not a native operation.
- the correspondence table corresponding to the operation x+y takes into account the differences induced by the correspondence tables LUT x and LUT y in the transformation of identical integers.
- Distinctions between the mappings LUT x , LUT y of the same integer values with their representations in real value can be made to obtain more precise results once the function f is applied to these values represented in real value. This makes it possible to optimize the precision of the calculated values and to reduce the errors in the calculation of the result of the function f. This optimization is performed in a later step.
- each real value representation can be adapted separately. This makes it possible to adapt the input values to which the function will be applied and thus make it possible to obtain more precise results of the function f or with fewer errors, in particular when the result of the function f (or of a sub-function of f) expressed in the real value representation does not correspond to the rounding to the same number of decimal digits of the result which would have been obtained with a real value representation with more bits and in particular more bits allocated to the decimal part.
- the optimization of the LUT x , LUT y look-up tables (that is, the optimization of the values in the real-value representation assigned to each integer) and the real-value representations RVR x , RVR y (that is, the real-value representation assigned to each integer) that is to say the optimization of the distribution of the bits between the integer part and the decimal part) used will be described in the optimization step.
- LUT x maps the possible values that x can take (namely the values 0 to 32) to as many values expressed in the real value representation RVR x on n bits.
- n x can be 16 and can be 16.
- the first 16 bits of the real value representation represent the integer part of the real number and the following 16 the decimal part.
- the distance between the integer part of the real value representation and of the integer x i is small, i.e. the distance between the value and the value x i is lower than a threshold, for example, strictly lower than 0.5.
- LUT y maps the possible values of the source ports (namely the values 0 to 18) to as many values expressed in the real value representation RVR y on n bits.
- n y equal to n x , that is to say, that n y and are equal to 16.
- the distance between the integer part of the real value representation and of the integer y i is small, that is, the distance between the value and the value y i is less than a threshold, for example, strictly less than 0.5.
- the function f is broken down into elementary operations by the computer 10.
- a representation in the form of a directed acyclic graph type graph can be used to represent the function.
- Each node of the graph representing an elementary operation for example, an addition, a multiplication, a sine, a logarithm, etc and each edge of the graph represents the relation between the two elementary operations of the two nodes connected by the edge (for example , the composition of these two elementary operations).
- f can be broken down into operations such as addition 31, multiplication by a constant 32, exponential 33, addition with a constant 34, and inversion 35.
- Addition 31, multiplication by a constant 32, and addition with a constant 34 can be natively implemented operations.
- Exponential 33 and inversion 35 are implemented using lookup tables.
- the nodes 30.1 and 30.2 correspond to the correspondence tables respectively transforming the integers x into and there .
- Nodes 32.1, 34.1 and 35.1 are nodes corresponding to constants.
- step S4 the correspondence tables corresponding to the exponential and inverse operations are generated by the computer 10.
- the correspondence table corresponding to the exponential operation associates with each of the possible values of (resulting from the sum of with multiplied by log(2) obtained by applying the operations natively implemented on the switch) a value represented in a real-valued RVR representation u close to the value of the calculation of the exponential function on .
- close we mean that the distance between the result of the exponential function on and the value is less than a threshold, for example 0.5.
- the correspondence table corresponding to the inverse operation associates with each of the possible values of (resulting from the sum of with 1 obtained by applying an operation natively implemented on the switch) a value represented in a real value representation RVR w close to the value of the calculation of the inverse function on .
- a threshold for example 0.5.
- the output value of the correspondence table corresponding to the node 30.1 for the input value x i can be replaced by the value
- the output value of the correspondence table corresponding to the node 30.2 for the input value y j can be replaced by the value
- the output value of the correspondence table corresponding to node 33 for the pair of input values (x i ,y j ) can be replaced by the value
- the output value of the correspondence table corresponding to node 35 for the pair of input values (x i ,y j ) can be replaced by the value .
- optimization consists in determining the set which minimizes the distance between the values and the values obtained resulting from the calculation of the function f on the input pairs (x,y) when this calculation is carried out with a precision greater than the precisions of the real value representations RVR x , RVR y , RVR u , RVR w used for the calculations of the operations as described in FIG. 3 and with a processor suitable for digital calculation.
- the optimized correspondence tables are obtained by respectively replacing the values by the values for all pairs (i,j) ⁇ [0; 32]x[0; 18].
- the output values are represented on three real-value representations with different bit distributions RVR 1 w , RVR 2 w , RVR 3 w .
- the correspondence tables can also be adapted to integrate, for each input or output value, information relating to this value, called additional information.
- additional information information relating to this value
- the real value representations RVR x , RVR y , RVR u , RVR w can provide additional bits to encode this additional information.
- these representations can be coded on 40 bits, 8 of which are reserved for additional information.
- This additional information depends on the operations to be applied to the value relating to this information. For example, since the output values of operation 33 are very large compared to 1 when is large we can approximate by . It is then possible to indicate in the RVR representations u coding for the values corresponding to the values greater than a threshold, for example 5, the value of as additional information. So the value of added in the RVR representation u can directly replace the result of the processing of operation 35, i.e. for the values of large, calculation will not need to be done.
- the values resulting from operation 32 can also be represented in an RVR z representation, part of which encodes additional information. These values are the inputs to operation 33.
- the additional information added to the output value s of the correspondence table T pre op representing the operation (for example, the operation which transforms a coded value into a representation from integer value to encoded value in a real value representation) preceding the logarithm can indicate an approximation of the logarithm for this value s.
- the integer value n such that . Since , the operation representing the logarithm can thus be reduced to the calculation of , being between 1 and 2, can be approximated by which reduces the complexity of the calculation.
- step S5 the script is compiled by computer 10.
- step S6 the compiled script and the correspondence tables generated at steps S1 (correspondence table relating to the packets concerned), S2 (correspondence tables relating to the transformation of the inputs into a representation in real value) and S4 (tables of correspondence relating to operations which are not implemented natively on the switch) are transmitted to the physical switches, and in particular to the physical switch 3 to be stored on its memory 3.3 and to be executed by its processor 3.2.
- Steps S1 to S6 can all be performed by computer 10.
- switch 3 receives an 8 packet on one of its input ports.
- switch 3 executes the compiled script received at step S6.
- the execution of the compiled script leads to the application of the first correspondence table LUT init determined in step S1 (correspondence table relating to the packets concerned) to determine whether the packet 8 is concerned by the processing.
- LUT init determined in step S1 (correspondence table relating to the packets concerned)
- a value corresponding to a characteristic of the packet or directly to one or more values of the packet are entered in LUT init .
- the LUT init correspondence table then indicates the action to be applied and the rule (that is to say the sequence of operations) to be executed.
- the pair of values corresponding respectively to the source port and the destination port of packet 8 is entered in the LUT init correspondence table, if the pair of values belongs to the set ⁇ 1, 2, 3, 6, 5 ⁇ x ⁇ 4 ⁇ then the rule to be executed and the action to be applied are indicated at the output of the LUT init correspondence table.
- Executing the compiled script causes the operations as described in Figure 2 to be applied to the x and y values extracted from packet 8.
- packet 8 having a size of 32 bits and the source port of packet 8 being 6, the integers x, y of packet 8 are equal to 32 and 6 respectively.
- step S2 transformation of x and y are applied respectively to the values 32 and 6.
- LUT x corresponds to the value 31.98561 and to the value 6
- LUT y matches the value 6.00153.
- the execution of the compiled script indicates the native operation 31 to apply, i.e. the addition of And whose instructions are stored natively on switch 3.
- the instructions for carrying out the addition are the same as for an addition between two integers, that is to say, to add the bits of the same weight together .
- the script can provide an intermediate operation, for example, to delete the last bit or bits of the decimal part and add as many bits zero in front of the other bits of the integer part.
- Switch 3 obtains at the output of operation 31 the value 37.98714.
- the execution of the script then indicates the native operation 32 to apply, i.e. the multiplication of the result obtained by log(2) whose instructions are stored natively on switch 3.
- Switch 3 obtains at the output of operation 32 is 11.435268.
- the execution of the script then indicates the operation 33 to be applied, that is to say the application of the exponential function on .
- the script refers to the LUT table u corresponding to operation 33 (generated and optimized at step S4 and stored on switch 3) to apply this exponential function.
- the LUT table u is applied to the value 11.435268.
- the exit of the LUT table u is expressed as the real value representation RVR t '' u having an integer part represented on a much larger number of bits than the decimal part to adapt to the exponential function. For example, the decimal part of is coded on 0 bits while the integer part of is coded on all available bits, namely 32 bits.
- the LUT table u maps the value 11.435268 to the value 92,528 encoded in the RVR representation t '' u .
- the execution of the compiled script indicates the native operation 34 to apply, i.e. the addition of and 1 whose instructions are stored natively on switch 3.
- Switch 3 obtains at the output of operation 34 the value 92529.
- the execution of the script then indicates the operation 35 to be applied, i.e. the application of the inverse operation on .
- the script refers to the LUT table w corresponding to this operation 35 (generated and optimized in step S4 and stored on the switch 3) to apply this operation.
- the LUT table w is applied to the value 92527.
- the output of the LUT table w is expressed as the real-valued representation RVR t ''' w having a decimal part represented over a much larger number of bits than the integer part to accommodate the inverse function whose values output are all between 0 and 1.
- the integer part of is coded on 1 bit while the decimal part of is coded on all the remaining bits, namely 31 bits.
- the LUT table w maps to the value 92529, the value 0.000010807 encoded in the RVR representation t ''' w .
- the execution of the compiled script then indicates a comparison of the value obtained by applying the various operations with the threshold ⁇ (for example a threshold of 0.0005) defined in step S1.
- the comparison can be a native operation with instructions stored on Switch 3 or a final LUT end lookup table that has the value associate 1 if is greater than the threshold and 0 otherwise.
- the switch applies the action indicated by the script according to the result of the comparison.
- the value of is less than the threshold ⁇ and therefore packet 8 is dropped, if the value of had been greater than the threshold ⁇ packet 8 would have been transmitted to the segment leading to the destination port indicated in packet 8, as was the case for packet 9.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
L'invention concerne une méthode de traitement d'un paquet par un commutateur physique de réseau de communications électroniques, la méthode comprenant : La réception par le commutateur d'un paquet; La détermination par le commutateur d'un résultat d'une application d'une opération ou d'une pluralité d'opérations sur au moins une valeur d'entrée obtenue par le commutateur à partir du paquet; et En fonction du résultat de l'application de l'opération ou de la pluralité d'opérations, l'application par le commutateur d'une action sur le paquet.
Description
La présente invention concerne le domaine des réseaux de communication électronique et en particulier les commutateurs physiques implémentés dans ces réseaux.
Elle trouve notamment des applications dans la configuration des commutateurs physiques pour le traitement des paquets.
Les commutateurs physiques ou switchs en anglais sont très limités dans leurs capacités de calcul, de mémoire et ont des contraintes très fortes en matière de latence. Ainsi, un commutateur traite chaque paquet qu’il reçoit avec un nombre très limité d’étape ou cycle d’horloge (c’est-à-dire l’unité temporelle minimum pendant laquelle le processeur peut traiter une action élémentaire ou encore instruction). Dans les commutateurs actuels le nombre d’étape ou de cycle ne dépasse pas les 12 cycles. Pendant un cycle d’horloge le processeur peut traiter plusieurs instructions en parallèle. Toutefois, le nombre d’instructions que le processeur peut traiter en parallèle dépend beaucoup de la taille du registre du processeur qui là aussi est très limitative sur les processeurs employés dans les commutateurs physiques.
Ces limitations des processeurs des commutateurs et la nécessité de latence très faible pour ne pas affecter la performance des services qui transitent sur le réseau, contraignent les commutateurs à exécuter uniquement des scripts impliquant des calculs très simples et donc à réduire les possibilités de programmation des commutateurs. Ainsi, les processeurs des commutateurs ne peuvent calculer que des fonctions très simples car :
- les fonctions plus complexes requièrent plus de ressources, car elle implique souvent plus d’opérations mathématiques (par exemple, l’addition, la division, le sinus, etc.) requérant plus de cycles pour effectuer le calcul de celles-ci ; et/ou
- les fonctions plus complexes nécessitent souvent l’utilisation de valeurs réelles au cours de leur calcul au risque sinon d’entraîner des erreurs.
Ainsi, pour pouvoir exécuter des scripts impliquant des calculs plus complexes, les commutateurs physiques peuvent être programmés pour transférer les paquets sur lesquels un traitement plus complexe est à appliquer à un serveur qui réalisera le calcul complexe et transmettra ensuite le paquet. Une telle implémentation permet de réaliser des calculs plus complexes, et notamment d’être beaucoup moins limité sur les fonctions qui peuvent être utilisées. Toutefois, une telle implémentation entraîne une latence forte et ne peut donc être employée pour tous les types de traitement. On l’emploiera donc principalement pour le traitement des paquets a postériori.
L’article « InREC: In-network REal Number Computation » de M. Jose et al, publié dans les actes de la conférence 2021 IFIP/IEEE International Symposium on Integrated Network Management (IM) propose d’utiliser des tables de correspondance pour effectuer des opérations sur des valeurs exprimées dans des représentations de valeur réelle comme les nombres à virgule flottante décrits dans le standard IEEE 754. Cela permet de mettre en œuvre des opérations de type logarithme ou exponentielle. Toutefois ces représentations en valeur réelle nécessitent plus de cycles d’horloge pour traiter des opérations même basiques comme l’addition, réduisant ainsi fortement le nombre d’opérations que peut comprendre la fonction complexe.
La présente invention vient améliorer la situation.
Un premier aspect de l’invention concerne une méthode de traitement de paquet par un commutateur physique de réseau de communications électroniques, la méthode comprenant :
La réception par le commutateur d’un paquet ;
La détermination par le commutateur d’un résultat d’une application d’une opération ou d’une pluralité d’opérations sur au moins une valeur d’entrée obtenue par le commutateur à partir du paquet, au moins l’une des opérations correspond à une table de correspondance, ladite table de correspondance représentant des correspondances entre des valeurs d’entrée de la table et des valeurs de sortie de la table, les valeurs d’entrée de la table sont représentées dans une première représentation de valeur réelle codée sur un premier ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une seconde représentation de valeur réelle codée sur un deuxième ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale ; et
En fonction du résultat de l’application de l’opération ou de la pluralité d’opérations, l’application par le commutateur d’une action sur le paquet.
Lorsqu’un script (par exemple un script écrit dans un langage de programmation P4 également appelé Programming Protocol-Independant Packet Processors en anglais) se basant sur une fonction est exécuté (ou plus précisément lorsque la version compilée du script est exécutée) au niveau d’un commutateur, le commutateur va appliquer une série d’opérations correspondante au script ou déduite du script. Dans un commutateur standard, ces opérations ont pour entrées et pour sorties des valeurs entières. Le fait d’implémenter ces opérations sur des valeurs réelles codées de manière spécifique (c’est-à-dire que l’ensemble de bits codant chacune de ces entrées/sorties se décompose en deux sous-ensembles de bits, l’un représentant une partie entière et l’autre représentant une partie décimale), permet au commutateur d’exécuter des ensembles d’opérations formant des fonctions plus complexes que celles implémentées sur un commutateur physique classique. En effet, la représentation en valeur réelle permet d’exécuter des opérations de type exponentiel, logarithmique, division ou encore sinus. De plus, le codage spécifique de ces valeurs réelles permet de réduire le nombre d’étapes (autrement appelées cycles) nécessaires pour chaque opération, permettant d’appliquer plus d’opérations donc des fonctions plus complexes ou éventuellement de réduire la latence. En effet, le nombre d’étapes allouées pour effectuer le calcul exécutant le script se basant sur la fonction est très réduit sur les commutateurs physiques : il est en principe limité à 12 étapes. Ainsi, si une opération ne requiert plus que 2 étapes avec la représentation spécifique de valeur réelle (dénommée simplement représentation de valeur réelle dans la suite des présentes) au lieu de 4 étapes (comme c’est le cas pour l’addition avec la représentation des nombres à virgule flottante de la norme IEEE 754) :
- soit il reste 10 étapes disponibles pour exécuter les autres opérations au lieu de 8 étapes, permettant d’implémenter des fonctions plus complexes et plus généralement de permettre l’emploi d’un plus grand choix de fonction ;
- soit le nombre d’étapes totales pour implémenter la fonction sera réduit, et puisque chaque étape prend le même temps, la latence sera réduite.
Par étape, il est entendu un cycle d’horloge pendant lequel le processeur ne peut traiter qu’une instruction à la suite ou plusieurs instructions si celles-ci sont toutes traitées en parallèle.
Par commutateur physique, il est entendu un commutateur réseau également appelé switch en anglais qui relie plusieurs segments physiques dans un réseau de communications électroniques (par exemple réseau de télécommunication ou encore réseau informatique) ou plusieurs segments physiques entre plusieurs réseaux de communications électroniques.
Par réception par le commutateur d’un paquet, il est entendu que le commutateur sur l’un de ses ports d’entrée reçoit le paquet.
Par paquet, il est entendu la structure permettant la transmission de données au niveau de la couche réseau. Un paquet comprend notamment un entête (ou header en anglais) et les données à transmettre.
Par valeur obtenue à partir du paquet, il est entendu une valeur obtenue par le commutateur sur la base du paquet et qui est donc dépendante du paquet, autrement dit la valeur dépend soit des caractéristiques du paquet (par exemple, la longueur du paquet), soit des données contenues dans le paquet aussi bien dans la partie entête que dans le corps du paquet (ainsi la valeur peut être le port source inscrit dans le header du paquet).
Par opération, il est entendu toute opération réalisée par le commutateur soit de manière native (par exemple, l’addition, la permutation, décalage de bits à gauche, décalage de bits à droite), c’est-à-dire que les tâches à réaliser pour exécuter l’opération sont déjà définies dans la mémoire du commutateur soit sur la base de table de correspondance, c’est-à-dire pour les opérations qui correspondent à une table de correspondance. Une opération, lorsque celle-ci est réalisée de manière native, peut requérir plusieurs cycles d’horloge (ou plusieurs étapes pour être traitée), c’est-à-dire qu’une telle opération se décompose en une succession d’instructions appliquées les unes à la suite des autres. Les opérations réalisées sur la base de table de correspondance peuvent chacune être traitées par le processeur en un seul cycle d’horloge.
Par application d’une pluralité d’opérations sur au moins une valeur, c’est-à-dire un ensemble d’une ou plusieurs valeurs, il est entendu que les opérations composées qui forment une fonction, sont appliquées dans un ordre prescrit par la composition (plusieurs ordres d’application des opérations peuvent correspondre avec la fonction, par exemple, l’addition de a+b puis la multiplication par c ou la multiplication de a et b par c puis l’addition de ac et bc). On applique ainsi une première opération (ou un ensemble de premières opérations si celles-ci peuvent être appliquées en parallèle) puis on applique une deuxième opération (ou un ensemble de deuxièmes opérations) sur le ou les résultats de la ou des premières opérations et ainsi de suite jusqu’à ce que toutes les opérations de la composition soient traitées. Cette pluralité d’opérations est traitée par le commutateur (par exemple au moyen du cœur du processeur, du registre du processeur et éventuellement d’éléments de mémoire vive présents dans le commutateur). L’opération ou la pluralité d’opérations réalisée par le commutateur correspond à un algorithme qui représente une fonction dont la ou les entrées sont des valeurs obtenues à partir du paquet.
Par table de correspondance, il est entendu un tableau de correspondances, ou encore une Lookup Table (LUT) en anglais, faisant la correspondance entre des valeurs d’entrées et des valeurs de sorties. Les tables de correspondance représentent des correspondances entre des entrées et des sorties de la table. Autrement dit, la table de correspondance est générée (ou encodée par exemple en bits) sur la base des correspondances entre ses entrées et ses sorties. Ces entrées et sorties sont codées par exemple en bits. Ces entrées et sorties peuvent notamment être des nombres entiers ou des nombres réels. Elles peuvent aussi comprendre tout type d’information codée communément dans les tables de correspondances implémentées dans les commutateurs réseau.
Par opération correspondant à une table de correspondance, il est entendu que le résultat de l’opération appliquée sur une ou plusieurs valeurs d’entrées correspond à la valeur (ou encore valeur de sortie indiquée) indiquée par la table de correspondance pour la ou lesdites valeurs d’entrée.
Par valeur (d’entrée ou de sortie) d’une table représentée dans une représentation de valeur réelle, il est ici entendu que la valeur d’entrée avant d’être codée sur un ensemble de bits dans la table est un réel et que le codage sur cet ensemble de bits permet de conserver de l’information sur cette valeur en plus de l’information relative à la partie entière de cette valeur. La représentation de valeur réelle spécifique mise en œuvre par l’invention est un découpage des bits permettant de coder la valeur dans la table, entre des bits représentant la partie entière et des bits représentant la partie décimale.
Par application d’une action sur le paquet, il est entendu toute action communément appliquée dans un commutateur physique ou virtuel, par exemple :
- abandonner le paquet reçu, c’est-à-dire ne pas la transmettre ;
- modifier le paquet avant de le transmettre, par exemple en modifiant le port de destination ;
- transmettre le paquet sans modification.
L’action est fonction du résultat de l’application d’une succession d’opérations, c’est-à-dire que l’action est dépendante du résultat, il est ainsi entendu que l’application de l’action est soit subordonnée au résultat de l’application de la succession d’opérations (par exemple l’action n’est appliquée que pour un certain résultat) ou encore que l’action elle-même varie en fonction du résultat de la succession d’opérations (par exemple, l’action consistant à modifier le port de destination du paquet en prenant comme nouveau port de destination la valeur résultant de l’application de la succession d’opérations).
Selon un mode de réalisation, la détermination de l’action à appliquer sur le paquet et/ou l’au moins une valeur d’entrée obtenue à partir du paquet et/ou l’opération ou la pluralité d’opérations sont fonction d’au moins une valeur de déclenchement obtenue par le commutateur à partir du paquet.
Par exemple, la valeur de déclenchement est entrée dans une table de correspondance (appelée match-action table en anglais) qui a pour sortie une fonction (représentant l’opération ou la pluralité d’opérations), des valeurs d’entrée sur lesquels appliquer cette fonction et une action.
Selon un mode de réalisation chaque table de correspondance LUTi correspondant à une des opérations parmi la pluralité d’opérations représente des correspondances entre des valeurs d’entrée de la table LUTi et des valeur de sortie de la table LUTi, les valeurs d’entrée de la table LUTi sont représentées dans une première représentation de valeur réelle RVR1,i codée sur un premier ensemble de bits EB1,1,i comprenant un premier sous-ensemble de bits SEB1,1,i représentant une partie entière et un deuxième sous-ensemble de bits SEB1,2,i représentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une deuxième représentation de valeur réelle RVR2,i codée sur un deuxième ensemble de bits EB2,i comprenant un premier sous-ensemble de bits SEB2,1,i représentant une partie entière et un deuxième sous-ensemble de bits SEB2,2,i représentant une partie décimale.
Ainsi, toutes les tables de correspondance ont au moins leurs entrées ou leurs sorties qui sont représentées sous forme de réel, voire les deux. Cela permet de réaliser plusieurs opérations avec des réels en entrée ou en sortie ou les deux.
Eventuellement, les opérations qui ont comme entrée l’au moins une valeur d’entrée (c’est-à-dire le ou les valeurs d’entrée de la fonction appliquée par le commutateur) correspondent à des tables de correspondance LUTi dont les valeurs de sortie sont représentées dans des secondes représentations de valeur réelle RVR2,i. Dans ce cas, les valeurs d’entrée sont des entiers, et les valeurs de sortie sont égales ou proches respectivement des valeurs d’entrée. Ces opérations sont appelées par la suite opération de transformation en valeur réelle. Ainsi, il est possible de transformer les valeurs d’entrée de la fonction afin que toutes les opérations soient réalisées sur des valeurs exprimées dans des représentations en valeur réelle.
Par proche on entend que la distance entre respectivement les valeurs de sortie codée sur le deuxième ensemble de bits EB2,i et les valeurs d’entrée codée sur le premier ensemble de bits EB1,i est inférieur à un seuil, par exemple, strictement inférieur à 0,5. La distance employée peut par exemple être la distance cartésienne.
Une valeur représentée dans une représentation de valeur réelle codée sur un ensemble de bits est codée dans cette représentation de valeur réelle.
Selon un mode de réalisation, au moins une valeur de sortie d’une table de correspondance, correspondant à l’une des opérations parmi l’opération ou la pluralité d’opérations, est adaptée en ajoutant ou en retranchant une valeur afin de minimiser l’écart entre le résultat de l’application de l’opération ou de la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i.
Ainsi, il est possible d’adapter les tables pour réduire les erreurs ou écarts entre le résultat souhaité et le résultat de l’application de l’opération ou de la pluralité d’opérations calculée par le commutateur. La valeur de sortie et la valeur de sortie adaptée peuvent être proches. Cette optimisation peut être réalisée de la même manière que l’optimisation réalisée dans les réseaux de neurones, à savoir en minimisant une distance entre le résultat souhaité et le résultat obtenu.
Ainsi, les opérations de transformation en valeur réelle peuvent transformer un entier en une valeur représentée dans une représentation de valeur réelle dont la partie entière diffère de l’entier de la valeur .
Ceci est particulièrement avantageux, car il est souvent possible d’adapter la valeur de sortie d’une des tables de correspondance, notamment à la hausse pour les nombres positifs et à la baisse pour les nombres négatifs, afin que les troncatures éventuelles du fait de la limite du nombre de bits des parties décimales des représentations de valeur réelle dans lesquelles sont représentées les valeurs de sortie des différentes opérations (et surtout la valeur de sortie de la dernière opération exécutée c’est-à-dire le résultat de l’application de l’opération ou de la pluralité d’opérations) qui succède à l’opération représentée par la table de correspondance adaptée, correspondent à des arrondis de ces parties décimales. Le résultat est donc plus précis et cela permet de réduire ou de supprimer le besoin de procédure d’arrondi lorsque de telles procédures sont indispensables pour éviter que le résultat ne soit complètement erroné ; or ces procédures consomment beaucoup d’étapes dans le processus de calcul du commutateur.
Par résultat de la fonction appliquée sur une valeur et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i, il est entendu que la fonction que représente l’opération ou la pluralité d’opérations est calculée avec des représentations de valeur réelle ayant des parties décimales plus importantes et/ou en pratiquant des procédures d’arrondis lors du calcul. Le calcul de la fonction peut notamment être effectué au moyen de processeurs adaptés au calcul numérique. Il est ainsi possible de déterminer le résultat souhaité auquel on compare le résultat obtenu lorsque le commutateur (ou un système équivalent) exécute l’opération ou la pluralité d’opérations.
Selon un mode de réalisation, la répartition des bits entre le premier sous-ensemble de bits et le deuxième sous-ensemble de bits du premier ensemble de bits est modifiée afin de minimiser l’écart entre le résultat de l’application de l’opération ou de la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i; et/ou
la répartition des bits entre le premier sous-ensemble de bits et le deuxième sous-ensemble de bits du deuxième ensemble de bits est modifiée afin de minimiser l’écart entre le résultat de l’application de l’opération ou la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i.
Ainsi, il est possible d’adapter, pour chaque représentation de valeur réelle, la répartition des bits entre l’ensemble représentant les parties entières et l’ensemble représentant les parties décimales pour réduire les erreurs ou écarts entre le résultat souhaité et le résultat de l’application de l’opération ou de la pluralité d’opérations calculé par le commutateur. En effet, lors de l’exécution de certaines opérations (par exemple, une opération représentant l’exponentielle sur le domaine [-10 ; 0]) une partie décimale trop petite des valeurs de sorties ne discriminera pas suffisamment ces valeurs, à l’inverse lors de l’exécution de certaines opérations (par exemple, une opération représentant l’exponentielle sur le domaine [0 ; 10]) une partie entière trop petite des valeurs de sorties ne permettra d’exprimer toutes ces valeurs. Ainsi, au cours de la chaîne d’opérations il est avantageux d’adapter la répartition entre bits représentant les parties entières et bits représentant les parties décimales de chaque table de manière indépendante (c’est-à-dire que les représentations de valeur réelle soient adaptées distinctement si nécessaire). Cette optimisation peut être réalisée en minimisant une distance entre le résultat souhaité et le résultat obtenu lorsque chaque répartition est modifiée.
Par modification de la répartition de bits entre la partie décimale et la partie entière, il est entendu que le nombre de bits affecté à la partie entière est réduite au bénéfice du nombre de bits affecté à la partie décimale ou que le nombre de bits affecté à la partie entière est augmenté au bénéfice du nombre de bits affecté à la partie décimale, le nombre de bits représentant la valeur étant constant lors de cette modification.
Selon un mode de réalisation, les opérations ne correspondant pas à une table de correspondance sont des opérations parmi l’addition, la multiplication, la permutation, le décalage de bits.
L’addition, la multiplication et la permutation sont des opérations qui sont particulièrement adaptées pour être appliquées sur des valeurs exprimées dans une représentation de valeur réelle dont la partie entière est codée sur un ensemble de bits et la partie décimale est codée dans un autre ensemble de bits. En effet lorsque la répartition des bits entre partie entière et partie décimale est la même pour toutes les valeurs en entrée d’une même opération de ce type l’exécution de l’opération peut être réalisée indépendamment de la répartition des bits entre partie entière et partie décimale. Autrement dit, la répartition des bits entre partie entière et partie décimale n’affecte pas le calcul de l’opération. D’autres représentations de valeur réelle, par exemple la représentation des nombres à virgule flottante de la norme IEEE 754, ne permettent pas l’utilisation des opérations indiquées précédemment sans appliquer des transformations supplémentaires aux valeurs pour permettre l’application de l’opération, ce qui augmente le nombre d’étapes nécessaires pour la réalisation de l’opération. Ainsi, selon la méthode proposée dans l’article référencé précédemment, pour additionner deux nombres représentés dans la représentation des nombres à virgule flottante de la norme IEEE 754 le processeur du commutateur requerrait quatre étapes alors que pour additionner deux nombres représentés dans la représentation de valeur réelle telle que décrite dans les présentes ne requiert qu’une étape (ou deux si les deux nombres ont une représentation différente).
Selon un mode de réalisation, le deuxième ensemble de bits sur lequel est codée la seconde représentation de valeur réelle comprend un troisième sous-ensemble de bits représentant une information dépendant du premier sous-ensemble de bits et/ou du deuxième sous-ensemble de bits, et dans laquelle le résultat de l’application d’une opération ou d’une pluralité d’opérations se base sur l’information. Par exemple, le résultat d’une opération suivante parmi la pluralité d’opérations se base sur l’information, ladite opération suivante étant exécutée après l’au moins une opération correspondant à une table de correspondance.
Ainsi il est possible d’ajouter de l’information supplémentaire dans l’ensemble de bits codant les valeurs d’entrée ou de sortie d’une opération dans une représentation en valeur réelle. Cette information permet de réduire le nombre d’instructions à implémenter par une opération qui a pour entrée ces valeurs. Ainsi, par exemple si cette opération requiert l’exécution de plusieurs instructions, le résultat de l’une de ces instructions dépendant des données codées sur les premier et deuxième sous-ensembles peut être pré-calculé et indiqué dans le troisième sous-ensemble. Il n’est alors pas nécessaire d’exécuter cette instruction pour obtenir le résultat de l’opération, réduisant ainsi les étapes de traitement de l’opération. Le premier ensemble de bits sur lequel est codée la première représentation de valeur réelle peut également comprendre un troisième sous-ensemble de bits représentant une information dépendant du premier sous-ensemble de bits et/ou du deuxième sous-ensemble de bits. L’information codée dans le troisième sous-ensemble de bits est avantageusement une valeur numérique, par exemple une valeur réelle. Par information dépendant d’un sous-ensemble de bits il est entendu que l’information est obtenue par application d’une opération ou d’une instruction sur la valeur encodée par le sous-ensemble de bits lors de la détermination de la table de correspondance.
Selon un autre aspect, il est proposé un programme informatique comportant des instructions pour la mise en œuvre de tout ou partie d’un procédé tel que défini dans les présentes lorsque ces instructions sont exécutées par un processeur. Selon un autre aspect de l’invention, il est proposé un support d’enregistrement non transitoire, lisible par un ordinateur, sur lequel est enregistré un tel programme.
Un autre aspect de l’invention concerne un commutateur physique de réseau de communications électroniques, le commutateur comprend :
- un port d’entrée relié à un réseau de communications électroniques;
- un processeur ; et
- une mémoire stockant des instructions, de sorte que lorsque ces instructions sont exécutées par le processeur, elles configurent le commutateur pour:
réceptionner via le port d’entrée un paquet ;
déterminer un résultat d’une application d’une opération ou d’une pluralité d’opérations sur au moins une valeur d’entrée obtenue par le commutateur à partir du paquet, au moins l’une des opérations correspond à une table de correspondance, ladite table de correspondance représentant des correspondances entre des valeurs d’entrée de la table et des valeurs de sortie de la table, les valeurs d’entrée de la table sont représentées dans une première représentation de valeur réelle codée sur un premier ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une seconde représentation de valeur réelle codée sur un deuxième ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale ; et
en fonction du résultat de l’application de l’opération ou de la pluralité d’opérations, appliquer une action sur le paquet.
D’autres caractéristiques et avantages de l’invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels :
Dans l’exemple de la est décrit un réseau de communication électronique 1 comprenant des commutateurs 2, 3, 4, chacun des commutateurs reliant plusieurs segments physiques 5 (par exemple des câbles ou des fibres optiques) du réseau ensemble. Sur ces segments physiques des signaux représentant des paquets 8, 9 sont communiqués de commutateur en commutateur.
Certains de ces commutateurs 3, 4 relient uniquement des segments 5 internes au réseau, d’autres de ces commutateurs 2 relient des segments 5 internes au réseau avec des segments provenant d’autres réseaux de communication électronique 7.
On se place par la suite dans le domaine des réseaux de communication définis par logiciel de type SDN (pour « Software-Defined Networks »), dans lequel un commutateur applique un traitement à un flux de paquets à l’aide d’une table RMT (pour « Reconfigurable Match-Action Tables »).
Nous allons décrire plus précisément le fonctionnement d’un commutateur 3. Cette description peut être transposée aisément aux autres commutateurs. Le commutateur 3 comprend une unité de communication (COM) 3.1 comprenant des ports d’entrée et des ports de sortie. Le commutateur 3 comprend également un processeur (PROC) 3.2, une mémoire (MEMO) 3.3 et une unité de communication du plan contrôle (CONT_COM) 3.4 pour paramétrer le commutateur 3.
La mémoire 3.3 comprend une mémoire non volatile sur laquelle est stocké le programme informatique et une mémoire volatile sur laquelle est stocké le script compilé à exécuter par le processeur, des tables de correspondance, des instructions relatives aux opérations natives.
L’unité de communication du plan contrôle 3.4 permet de recevoir les scripts compilés ainsi que les tables de correspondance envoyées à travers un plan de contrôle par un ordinateur 10.
Le processeur 3.2 est notamment configuré pour contrôler l’unité de communication 3.1 pour recevoir des paquets 8 et pour émettre des paquets 9 dans un plan de transfert de données. Le processeur 3.2 est également configuré pour traiter le paquet 8 : ce traitement est défini par un script et met en œuvre une succession d’opérations exécutée sur la base de tables de correspondance ou de suites d’instructions stockées sur la mémoire volatile. Le traitement par le commutateur 3 du paquet 8 s’achève lorsque le paquet est émis (comme dans le cas du paquet 9) vers une autre entité du réseau, par exemple un autre commutateur, ou lorsque le paquet est abandonné.
Les processeurs 3.2 implémentés dans les commutateurs physiques 2, 3, 4 sont des processeurs spécifiques aux commutateurs permettant un traitement avec très peu de latence, il s’agit par exemple des processeurs de type RISC.
L’ordinateur 10 permet de superviser l’activité des différents commutateurs 2, 3, 4 du réseau 1 et de les paramétrer, à savoir leur transmettre les scripts compilés à exécuter et les tables de correspondances permettant d’exécuter ces scripts. La communication entre l’ordinateur de contrôle 10 et les commutateurs 2, 3, 4 se fait au niveau du plan de contrôle via les mêmes paquets 8, 9 ou via des paquets spécifiques au plan de contrôle 11. L’ordinateur 10 peut permettre au gestionnaire de réseau d’écrire les scripts, de les compiler et de générer les tables de correspondance. Toutefois ces différentes tâches peuvent être réparties sur différentes entités.
La représente un organigramme d’un procédé selon un mode de réalisation particulier.
A l'étape S1, l'utilisateur entre dans l’ordinateur 10 un script relatif à un traitement à appliquer au niveau du commutateur. Ce script indique les paquets concernés par le traitement, une règle à exécuter et une action à entreprendre par le commutateur en fonction de la règle. La règle comporte une fonction et un domaine de définition de cette fonction. Cette règle comprend aussi une définition des entrées utilisées pour calculer le résultat de cette fonction. Ainsi, la règle détermine une fonction f et des entrées de cette fonction. L'action est définie comme dépendante du résultat de l’application de la règle.
Par exemple, la fonction peut être f(x,y), avec x et y représentant respectivement une première et une seconde caractéristique ou valeur d'un paquet. Par exemple, x peut représenter la taille du paquet et y peut représenter le numéro de port source du paquet. Si les paquets considérés sont des paquets TCP (pour « Transmission Control Protocol »), la taille des paquets peut être comprise entre 0 et 32 bits. Ainsi, la plage de x peut être définie comme l'intervalle [0 ; 32]. Par exemple, y peut représenter le port source du paquet reçu. Le port physique source étant le port physique d’entrée du commutateur par lequel le paquet est entré sur le réseau.
Les paquets concernés, c’est-à-dire celles pour lesquelles la règle sera appliquée, peuvent par exemple, être les paquets dont le port source est l’un parmi les ports physiques numéros [1, 2, 3, 6, 5] du réseau, et le port de destination est le port physique numéro 4. Le port physique de destination étant le port physique de sortie du commutateur par lequel le paquet sortira du réseau. Le port physique source est le port physique d’entrée du commutateur par lequel le paquet entrera dans le réseau.
Sur la base du script indiquant les paquets concernés par le traitement, une table de correspondance est générée. Celle-ci associe des valeurs d’entrée représentant une caractéristique du paquet ou correspondant à des valeurs du paquet avec la ou les premières opérations à exécuter pour appliquer la règle.
Dans le cas de l'exemple, l'action est définie en fonction des résultats de règle, c’est-à-dire le résultat du calcul de f(x,y). Par exemple, un seuil δ est défini et l'action peut être définie par exemple comme l'abandon du paquet lorsque le résultat est égal ou inférieur à ce seuil.
Dans le cas de cet exemple, f peut être défini par l’équation :
La fonction f définie ci-dessus est un exemple. La présente description n’est pas limitée à ce type de fonction. Par exemple, f peut avoir une seule entrée x (par exemple log(x)) ou un ensemble d’entrée (x, y, z…).
A l'étape S2, l’ordinateur 10 détermine pour chaque entrée, x, y, de la fonction f une table de correspondance mettant en correspondance les valeurs possibles prises par les entrées x (respectivement y) de la fonction f qui sont des entiers avec des valeurs (respectivement ) exprimées dans une représentation en valeur réelle RVRx (respectivement RVRy). La représentation en valeur réelle est une représentation réelle des nombres sur un certain nombre de bits, dans laquelle une partie des bits, par exemple, les premiers bits de cette représentation représentent la partie entière du nombre réel et une seconde partie, par exemple, les bits suivants de cette représentation représentent la partie décimale du nombre réel.
Chacune des entrées x, y peut être représentée dans une représentation en valeur réelle RVRx, RVRy qui lui est propre. Ainsi, dans le cas de l'exemple, deux tables de correspondance sont déterminées LUTx et LUTy. Les nx premiers bits de la représentation en valeur réelle utilisée dans LUTx peuvent correspondre à la partie entière de la représentation et les bits suivants à la partie décimale de la représentation en valeur réelle RVRx utilisée dans LUTx. De même, les ny premiers bits de la représentation en valeur réelle utilisée dans LUTy peuvent correspondre à la partie entière de la représentation et les bits suivants à la partie décimale de la représentation en valeur réelle RVRy utilisée dans LUTy.
En fonction de la fonction f implémentée, nx et ny peuvent être distincts. Dans l’exemple de la figure 2, nx et ny sont identiques lorsque la fonction somme x + y n’est pas implémentée sous forme d’une table de correspondance, mais directement sous la forme d’une opération native du commutateur. Dans cet exemple, nx et ny peuvent aussi être distincts lorsque la fonction somme x + y est implémentée sous forme d’une table de correspondance. Dans ce cas la table de correspondance correspondant à x+y ou à un ensemble d’opérations comprenant x+y (par exemple, ) prend en compte les représentations RVRx et RVRy utilisées et donc peut s’adapter à des différences dans les représentations.
Toutes les distributions des bits entre la partie entière et la partie décimale peuvent être implémentées. Toutefois, il est possible de choisir des distributions optimisées en fonction de la fonction implémentée et des entrées possibles. Cela permet d’optimiser la précision des valeurs calculées et de réduire les erreurs dans le calcul du résultat de la fonction f. Cette optimisation est réalisée dans une étape ultérieure.
De plus, une valeur (la représentation réelle d’une valeur entière xi obtenue au moyen de la table de correspondance LUTx) et une valeur (la représentation réelle d’une valeur entière yj obtenue au moyen de la table de correspondance LUTy) peuvent également différer alors que les valeurs de xi et de yi sont identiques. En principe, la différence entre les deux valeurs et sera faible, mais peut être plus conséquente lorsque la fonction somme x + y est implémentée sous forme d’une table de correspondance, c’est-à-dire que la première opération pratiquée sur x et y l’est au moyen d’une table de correspondance et non d’une opération native. Dans ce cas la table de correspondance correspondant à l’opération x + y prend en compte les différences induites par les tables de correspondance LUTx et LUTy dans la transformation d’entiers identiques.
Des distinctions entre les mises en correspondance LUTx, LUTy de mêmes valeurs entières avec leurs représentations en valeur réelle peuvent être réalisées pour obtenir des résultats plus précis une fois la fonction f appliquée sur ces valeurs représentées en valeur réelle. Cela permet d’optimiser la précision des valeurs calculées et de réduire les erreurs dans le calcul du résultat de la fonction f. Cette optimisation est réalisée dans une étape ultérieure.
Plus généralement, pour une même représentation en valeur réelle, par exemple RVRx, chaque représentation en valeur réelle , peut être adaptée distinctement. Cela permet d’adapter les valeurs d’entrées sur lesquelles va être appliquée la fonction et ainsi permettre d’obtenir des résultats de la fonction f plus précis ou avec moins d’erreurs, notamment lorsque le résultat de la fonction f (ou d’une sous fonction de f) exprimé dans la représentation en valeur réelle ne correspond pas à l’arrondi au même nombre de chiffres décimaux du résultat qui aurait été obtenu avec une représentation en valeur réelle avec plus de bits et notamment plus de bits alloués à la partie décimale.
L’optimisation des tables de correspondance LUTx, LUTy (c’est-à-dire l’optimisation des valeurs dans la représentation en valeur réelle attribuée à chaque entier) et des représentations en valeur réelle RVRx, RVRy (c’est-à-dire l’optimisation de la distribution des bits entre la partie entière et la partie décimale) utilisées sera décrite à l’étape d’optimisation.
Dans l’exemple, de la figure 2, LUTx met en correspondance les valeurs possibles que peut prendre x (à savoir les valeurs 0 à 32) à autant de valeurs exprimées dans la représentation en valeur réelle RVRx sur n bits. Par exemple, si la représentation en valeur réelle est codée sur 32 bits, nx peut être de 16 et peut être de 16. Ainsi, les 16 premiers bits de la représentation en valeur réelle représentent la partie entière du nombre réel et les 16 suivant la partie décimale. La distance entre la partie entière de la représentation en valeur réelle et de l’entier x i est faible, c’est-à-dire que la distance entre la valeur et la valeur x i est inférieure à un seuil, par exemple, strictement inférieur à 0,5.
Dans l’exemple de la figure 2, LUTy met en correspondance les valeurs possibles des ports sources (à savoir les valeurs 0 à 18) à autant de valeurs exprimées dans la représentation en valeur réelle RVRy sur n bits. Ici nous prendrons, par souci de simplification de l’exposé, ny égale à nx, c’est-à-dire, que ny et sont égaux à 16. La distance entre la partie entière de la représentation en valeur réelle et de l’entier y i est faible, c’est-à-dire que la distance entre la valeur et la valeur y i est inférieure à un seuil, par exemple, strictement inférieur à 0,5.
Par détermination des tables de correspondance LUTx and LUTy il est entendu la génération de ces tables.
Les valeurs et correspondent à une écriture binaire, avec une partie représentant la partie entière et une partie représentant la partie décimale. Toutefois, il n’est pas nécessaire d’avoir dans la représentation en valeur réelle d’information indiquant la position de la virgule. En effet, les opérations natives ne sont pas affectées par l’emplacement des virgules. Ainsi, le résultat d’une opération, par exemple, x + y sera la même quel que soit l’emplacement de la virgule dans les représentations en valeur réelle RVRx, RVRy, sauf lorsque x et y ont des parties entières et décimales codées sur un nombre de bits différents.
A l’étape S3, la fonction f est décomposée en opérations élémentaires par l’ordinateur 10. Comme représenté à la , une représentation sous forme de graphe de type Graphe acyclique dirigé peut être employée pour représenter la fonction. Chaque nœud du graphe représentant une opération élémentaire (par exemple, une addition, une multiplication, un sinus, un logarithme,…) et chaque arête du graphe représente la relation entre les deux opérations élémentaires des deux nœuds reliés par l’arête (par exemple, la composition de ces deux opérations élémentaires).
Dans l’exemple de la fonction f(x,y) définie par l’équation précédente, f peut être décomposée en opération que sont l’addition 31, la multiplication par une constante 32, l’exponentielle 33, l’addition avec une constante 34, et l’inversion 35.
L’addition 31, la multiplication par une constante 32 et l’addition avec une constante 34 peuvent être des opérations implémentées de manière native. L’exponentielle 33 et l’inversion 35 sont implémentées au moyen de tables de correspondance.
Les nœuds 30.1 et 30.2 correspondent aux tables de correspondance transformant respectivement les entiers x en et y en . Les nœuds 32.1, 34.1 et 35.1 sont des nœuds correspondant à des constantes.
A l’étape S4, les tables de correspondance correspondant aux opérations exponentielle et inverse sont générées par l’ordinateur 10.
Ainsi, la table de correspondance correspondant à l’opération exponentielle associe à chacune des valeurs possibles de (résultant de la somme de avec multipliée par log(2) obtenues par l’application des opérations implémentées de manière native sur le commutateur) une valeur représentée dans une représentation en valeur réelle RVRu proche de la valeur du calcul de la fonction exponentielle sur . Par proche on entend que la distance entre le résultat de la fonction exponentielle sur et la valeur est inférieure à un seuil, par exemple 0,5.
De plus, la table de correspondance correspondant à l’opération inverse associe à chacune des valeurs possibles de (résultant de la somme de avec 1 obtenue par l’application d’une opération implémentée de manière native sur le commutateur) une valeur représentée dans une représentation en valeur réelle RVRw proche de la valeur du calcul de la fonction inverse sur . Par proche on entend que la distance entre le résultat de la fonction inverse sur et la valeur est inférieure à un seuil, par exemple 0,5.
Ces tables peuvent être optimisées par toute technique d’optimisation connue. Par exemple, pour chaque couple de valeurs en entrée (xi,yj) il est possible d’associer un ensemble de valeurs permettant d’adapter les valeurs de sortie des tables de correspondances concernées par le couple de valeurs d’entrée (xi,yj). Ainsi, la valeur de sortie de la table de correspondance correspondant au nœud 30.1 pour la valeur d’entrée xi peut être remplacée par la valeur , la valeur de sortie de la table de correspondance correspondant au nœud 30.2 pour la valeur d’entrée yj peut être remplacée par la valeur , la valeur de sortie de la table de correspondance correspondant au nœud 33 pour le couple de valeurs d’entrées (xi,yj) peut être remplacée par la valeur , la valeur de sortie de la table de correspondance correspondant au nœud 35 pour le couple de valeurs d’entrées (xi,yj) peut être remplacée par la valeur . Ainsi, pour chaque n-uplet de valeur d’entrée, ici le couple de valeurs en entrée (xi,yj), il est possible d’associer un ensemble , ici ,
,
et
, servant de paramètre pour effectuer l’optimisation des tables de correspondance employées. Chaque valeur est petite, c’est-à-dire proche de 0. L’optimisation consiste à déterminer l’ensemble qui minimise la distance entre les valeurs et les valeurs obtenues résultant du calcul de la fonction f sur les couples d’entrée (x,y) lorsque ce calcul est réalisé avec une précision supérieure aux précisions des représentations de valeur réelle RVRx, RVRy, RVRu, RVRw utilisées pour les calculs des opérations telles que décrites à la figure 3 et avec un processeur adapté au calcul numérique. Une fois l’ensemble déterminé, les tables de correspondance optimisées sont obtenues en remplaçant respectivement les valeurs par les valeurs pour toutes les couples (i,j) ∈ [0 ; 32]x[0 ; 18].
De plus, il est possible également d’optimiser la répartition des bits entre partie entière et partie décimale de chaque représentation en valeur réelle RVRx, RVRy, RVRu, RVRw des valeurs de sorties des tables de correspondance. Par exemple, pour chaque table de correspondance plusieurs répartitions de bits sont déterminées. Par exemple, les valeurs de sortie sont représentées sur trois représentations en valeur réelle avec des répartitions de bits différentes RVR1
x, RVR2
x, RVR3
x. De même, les valeurs de sortie sont représentées sur trois représentations en valeur réelle avec des répartitions de bits différentes RVR1
y, RVR2
y, RVR3
y, les valeurs de sortie sont représentées sur trois représentations en valeur réelle avec des répartitions de bits différentes RVR1
u, RVR2
u, RVR3
u. Enfin, les valeurs de sortie sont représentées sur trois représentations en valeur réelle avec des répartitions de bits différentes RVR1
w, RVR2
w, RVR3
w. La combinaison de représentations en valeur réelle RVRt
x, RVRt’
y, RVRt ’’
u, RVRt ’’
w avec le quadruplé (t, t’, t’’, t’’’) ∈ {1,2,3}4 qui minimise la distance entre les valeurs et les valeurs obtenues résultant du calcul de la fonction f sur les couples d’entrée (x,y) lorsque ce calcul est réalisé avec une précision supérieure aux précisions de toutes les représentations de valeur réelle utilisées pour les calculs des opérations est la combinaison de représentations mise en œuvre respectivement dans les tables de correspondance représentant les nœuds 30.1, 30.2, 33, 35.
L’optimisation permettant d’adapter les valeurs de sortie des tables de correspondance et l’optimisation permettant de déterminer les répartitions de bits les plus adéquates peuvent être implémentées successivement, voire de manière récursive.
Les tables de correspondance peuvent également être adaptées pour intégrer pour chaque valeur d’entrée ou de sortie une information relative à cette valeur, dite information supplémentaire. Ainsi, par exemple les représentations en valeur réelle RVRx, RVRy, RVRu, RVRw peuvent prévoir des bits supplémentaires pour coder cette information supplémentaire. Par exemple, ces représentations peuvent être codées sur 40 bits dont 8 sont réservées à l’information supplémentaire. Cette information supplémentaire dépend des opérations à appliquer sur la valeur relative à cette information. Par exemple, étant donné que les valeurs de sortie de l’opération 33 sont très importantes en comparaison de 1 lorsque est grand on peut approximer par . Il est alors possible d’indiquer dans les représentations RVRu codant pour les valeurs correspondant aux valeurs supérieures à un seuil, par exemple 5, la valeur de en tant qu’information supplémentaire. Ainsi, la valeur de ajoutée dans la représentation RVRu pourra remplacer directement le résultat du traitement de l’opération 35, c’est-à-dire que pour les valeurs de grande, le calcul n’aura pas besoin d’être effectué.
Les valeurs résultant de l’opération 32 peuvent également être représentées dans une représentation RVRz dont une partie code une information supplémentaire. Ces valeurs sont les entrées de l’opération 33.
Lorsque l’une des opérations à appliquer est le logarithme, l’information supplémentaire ajoutée à la valeur s de sortie de la table de correspondance Tpré op représentant l’opération (par exemple, l’opération qui transforme une valeur codée dans une représentation de valeur entière en valeur codée dans une représentation de valeur réelle) précédent le logarithme peut indiquer une approximation du logarithme pour cette valeur s. Ainsi, il est possible d’indiquer en tant qu’information supplémentaire codée sur les 8 bits la valeur entière n telle que . Puisque , l’opération représentant le logarithme peut ainsi être réduite au calcul de , étant compris entre 1 et 2, peut s’approximer par ce qui réduit la complexité du calcul.
A l’étape S5, le script est compilé par l’ordinateur 10.
A l’étape S6, le script compilé et les tables de correspondance générées aux étapes S1 (table de correspondance relative aux paquets concernés), S2 (tables de correspondance relatives à la transformation des entrées en représentation en valeur réelle) et S4 (tables de correspondance relatives aux opérations qui ne sont pas implémentées de manière native sur le commutateur) sont transmis aux commutateurs physiques, et en particulier au commutateur physique 3 pour être stockés sur sa mémoire 3.3 et être exécutés par son processeur 3.2.
Le paramétrage du commutateur physique 3 réalisé par les étapes S1 à S6 est alors terminé. Les étapes S1 à S6 peuvent toutes être réalisées par l’ordinateur 10.
A l’étape S7, le commutateur 3 reçoit un paquet 8 sur l’un de ses ports d’entrée.
A l’étape S8, le commutateur 3 exécute le script compilé reçu à l’étape S6.
L’exécution du script compilé entraîne l’application de la première table de correspondance LUTinit déterminée à l’étape S1 (table de correspondance relative aux paquets concernés) pour déterminer si le paquet 8 est concerné par le traitement. Ainsi, une valeur correspondant à une caractéristique du paquet ou directement à une ou plusieurs valeurs du paquet sont entrées dans LUTinit. En sortie, la table de correspondance LUTinit indique alors l’action à appliquer et la règle (c’est-à-dire la succession d’opérations) à exécuter. Par exemple, le couple de valeurs correspondant respectivement au port source et au port de destination du paquet 8 est entré dans la table de correspondance LUTinit, si le couple de valeurs appartient à l’ensemble {1, 2, 3, 6, 5}x{4} alors la règle à exécuter et l’action à appliquer sont indiquées en sortie de la table de correspondance LUTinit.
L’exécution du script compilé entraîne l’application des opérations telles que décrites à la figure 2 sur les valeurs x et y extraites du paquet 8. Par exemple, le paquet 8 ayant une taille de 32 bits et le port source du paquet 8 étant 6, les entiers x, y du paquet 8 sont respectivement égaux à 32 et 6. Les tables LUTx et LUTy (c’est-à-dire, les tables de correspondance relatives à la transformation des entrées de f en représentation en valeur réelle déterminées à l’étape S2) de transformation de x et de y sont appliquées respectivement sur les valeurs 32 et 6. Par exemple, à la valeur 32, LUTx fait correspondre la valeur 31,98561 et à la valeur 6, LUTy fait correspondre la valeur 6,00153. Ces deux valeurs et sont respectivement exprimées sous la forme des représentations en valeur réelle RVRt
x et RVRt’
y dont les répartitions entre parties entières et parties décimales sont les mêmes.
Ensuite l’exécution du script compilé indique l’opération native 31 à appliquer, c’est-à-dire l’addition de et dont les instructions sont stockées de manière native sur le commutateur 3. Les instructions permettant de réaliser l’addition, sont les mêmes que pour une addition entre deux entiers, c’est-à-dire, d’additionner les bits de même poids ensemble. Toutefois, lorsque les représentations en valeur réelle dans lesquelles sont codées les valeurs à additionner ont des répartitions en bits différentes alors le script peut prévoir une opération intermédiaire, par exemple, pour supprimer le ou les derniers bits de la partie décimale et ajouter autant de bits nul devant les autres bits de la partie entière. Le commutateur 3 obtient à la sortie de l’opération 31 la valeur 37,98714.
L’exécution du script indique ensuite l’opération native 32 à appliquer, c’est-à-dire la multiplication du résultat obtenu par log(2) dont les instructions sont stockées de manière native sur le commutateur 3. Le commutateur 3 obtient à la sortie de l’opération 32 la valeur 11,435268.
L’exécution du script indique ensuite l’opération 33 à appliquer, c’est-à-dire l’application de la fonction exponentielle sur . Le script renvoie à la table LUTu correspondant à l’opération 33 (générée et optimisée à l’étape S4 et stockée sur le commutateur 3) pour appliquer cette fonction exponentielle. La table LUTu est appliquée sur la valeur 11,435268. La sortie de la table LUTu est exprimée sous la forme de la représentation en valeur réelle RVRt ’’
u ayant une partie entière représentée sur un nombre de bits beaucoup plus important que la partie décimale pour s’adapter à la fonction exponentielle. Par exemple, la partie décimale de est codée sur 0 bit alors que la partie entière de est codée sur l’ensemble des bits disponibles, à savoir 32 bits. Ainsi, la table LUTu fait correspondre à la valeur 11,435268, la valeur 92 528 codée dans la représentation RVRt ’’
u.
Ensuite, l’exécution du script compilé indique l’opération native 34 à appliquer, c’est-à-dire l’addition de et 1 dont les instructions sont stockées de manière native sur le commutateur 3. Le commutateur 3 obtient à la sortie de l’opération 34 la valeur 92 529.
L’exécution du script indique ensuite l’opération 35 à appliquer, c’est-à-dire l’application de la l’opération inverse sur . Le script renvoie à la table LUTw correspondant à cette opération 35 (générée et optimisée à l’étape S4 et stockée sur le commutateur 3) pour appliquer cette opération. La table LUTw est appliquée sur la valeur 92 527. La sortie de la table LUTw est exprimée sous la forme de la représentation en valeur réelle RVRt ’’’
w ayant une partie décimale représentée sur un nombre de bits beaucoup plus important que la partie entière pour s’adapter à la fonction inverse dont les valeurs de sortie sont toutes comprises entre 0 et 1. Par exemple, la partie entière de est codée sur 1 bit alors que la partie décimale de est codée sur l’ensemble des bits restant, à savoir 31 bits. Ainsi, la table LUTw fait correspondre à la valeur 92 529, la valeur 0.000010807 codée dans la représentation RVRt ’’’
w.
A l’étape S9, l’exécution du script compilé indique ensuite une comparaison de la valeur obtenue par application des différentes opérations avec le seuil δ (par exemple un seuil de 0,0005) défini à l’étape S1. La comparaison peut être une opération native avec des instructions stockées sur le commutateur 3 ou une table de correspondance finale LUTfin qui à la valeur associe 1 si est supérieur au seuil et 0 sinon. Ensuite le commutateur applique l’action indiquée par le script en fonction du résultat de la comparaison. Dans l’exemple du paquet 8, la valeur de est inférieure au seuil δ et donc le paquet 8 est abandonné, si la valeur de avait été supérieure au seuil δ le paquet 8 aurait été transmis au segment menant au port de destination indiqué dans le paquet 8, comme cela a été le cas pour le paquet 9.
Claims (12)
- Méthode de traitement d’un paquet par un commutateur physique de réseau de communications électroniques, la méthode comprenant :
La réception par le commutateur d’un paquet ;
La détermination par le commutateur d’un résultat d’une application d’une opération ou d’une pluralité d’opérations sur au moins une valeur d’entrée obtenue par le commutateur à partir du paquet, au moins l’une des opérations correspond à une table de correspondance, ladite table de correspondance représentant des correspondances entre des valeurs d’entrée de la table et des valeurs de sortie de la table, les valeurs d’entrée de la table sont représentées dans une première représentation de valeur réelle codée sur un premier ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une seconde représentation de valeur réelle codée sur un deuxième ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale ; et
En fonction du résultat de l’application de l’opération ou de la pluralité d’opérations, l’application par le commutateur d’une action sur le paquet. - Méthode selon la revendication 1, dans laquelle la détermination de l’action à appliquer sur le paquet et/ou l’au moins une valeur d’entrée obtenue à partir du paquet et/ou l’opération ou la pluralité d’opérations sont fonction d’au moins une valeur de déclenchement obtenue par le commutateur à partir du paquet.
- Méthode selon l’une des revendications précédentes dans laquelle la répartition des bits entre le premier sous-ensemble de bits et le deuxième sous-ensemble de bits du premier ensemble de bits est modifiée afin de minimiser l’écart entre le résultat de l’application de l’opération ou de la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i; et/ou
la répartition des bits entre le premier sous-ensemble de bits et le deuxième sous-ensemble de bits du deuxième ensemble de bits est modifiée afin de minimiser l’écart entre le résultat de l’application de l’opération ou de la pluralité d’opérations sur l’au moins une valeur d’entrée et le résultat de la fonction que représente l’opération ou la pluralité d’opérations lorsque la fonction est appliquée sur l’au moins une valeur d’entrée et calculée avec une précision supérieure aux précisions des représentations de valeur réelle RVR1,i,RVR2,i. - Méthode selon l’une des revendications précédentes dans laquelle chaque table de correspondance LUTi correspondant à une des opérations parmi la pluralité d’opérations représente des correspondances entre des valeurs d’entrée de la table LUTi et des valeurs de sortie de la table LUTi, les valeurs d’entrée de la table LUTi sont représentées dans une première représentation de valeur réelle RVR1,i codée sur un premier ensemble de bits EB1,1,i comprenant un premier sous-ensemble de bits SEB1,1,i représentant une partie entière et un deuxième sous-ensemble de bits SEB1,2,i représentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une seconde représentation de valeur réelle RVR2,i codée sur un deuxième ensemble de bits EB2,i comprenant un premier sous-ensemble de bits SEB2,1,i représentant une partie entière et un deuxième sous-ensemble de bits SEB2,2,i représentant une partie décimale.
- Méthode selon la revendication 4 dans laquelle le ou les opérations parmi la pluralité d’opérations qui ont comme entrées l’au moins une valeur d’entrée correspondent à des tables de correspondance LUTi dont les valeurs de sortie sont représentées dans des secondes représentations de valeur réelle RVR2,i.
- Méthode selon l’une des revendications précédentes dans laquelle au moins une valeur de sortie d’une table de correspondance correspondant à l’une des opérations parmi l’opération ou la pluralité d’opérations est adaptée en ajoutant ou en retranchant une valeur
- Méthode selon l’une des revendications précédentes dans laquelle les opérations ne correspondant pas à une table de correspondance sont des opérations parmi l’addition, la multiplication, la permutation, décalage de bits à gauche, décalage de bits à droite.
- Méthode selon l’une des revendications précédentes dans laquelle le deuxième ensemble de bits sur lequel est codée la seconde représentation de valeur réelle comprend un troisième sous-ensemble de bits représentant une information dépendant du premier sous-ensemble de bits et/ou du deuxième sous-ensemble de bits, et dans laquelle le résultat de l’application d’une opération ou d’une pluralité d’opérations se base sur l’information.
- Méthode selon la revendication 8 dans laquelle le résultat d’une opération suivante parmi la pluralité d’opérations se base sur l’information, ladite opération suivante étant exécutée après l’au moins une opération correspondant à une table de correspondance.
- 10. Méthode selon l’une des revendications précédentes dans laquelle le premier ensemble de bits sur lequel est codée la première représentation de valeur réelle comprend un troisième sous-ensemble de bits représentant une information dépendant du premier sous-ensemble de bits et/ou du deuxième sous-ensemble de bits.
- 11. Programme informatique comportant des instructions pour la mise en œuvre du procédé selon l’une des revendications précédentes, lorsque ces instructions sont exécutées par un processeur.
- 12. Commutateur physique de réseau de communications électroniques, le commutateur comprend :
- un port d’entrée relié à un réseau de communications électroniques;
- un processeur ; et
- une mémoire stockant des instructions, de sorte que lorsque ces instructions sont exécutées par le processeur, elles configurent le commutateur pour:
réceptionner via le port d’entrée un paquet ;
déterminer un résultat d’une application d’une opération ou d’une pluralité d’opérations sur au moins une valeur d’entrée obtenue par le commutateur à partir du paquet, au moins l’une des opérations correspond à une table de correspondance, ladite table de correspondance représentant des correspondances entre des valeurs d’entrée de la table et des valeurs de sortie de la table, les valeurs d’entrée de la table sont représentées dans une première représentation de valeur réelle codée sur un premier ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale et/ou les valeurs de sortie de la table sont représentées dans une seconde représentation de valeur réelle codée sur un deuxième ensemble de bits comprenant un premier sous-ensemble de bits représentant une partie entière et un deuxième sous-ensemble de bits représentant une partie décimale ; et
en fonction du résultat de l’application de l’opération ou de la pluralité d’opérations, appliquer d’une action sur le paquet.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FRFR2200326 | 2022-01-14 | ||
FR2200326A FR3131995A1 (fr) | 2022-01-14 | 2022-01-14 | Support de calculs sur nombres reels au niveau des commutateurs physiques |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2023134934A1 true WO2023134934A1 (fr) | 2023-07-20 |
Family
ID=81927710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2022/085309 WO2023134934A1 (fr) | 2022-01-14 | 2022-12-12 | Support de calculs sur nombres reels au niveau des commutateurs physiques |
Country Status (2)
Country | Link |
---|---|
FR (1) | FR3131995A1 (fr) |
WO (1) | WO2023134934A1 (fr) |
-
2022
- 2022-01-14 FR FR2200326A patent/FR3131995A1/fr active Pending
- 2022-12-12 WO PCT/EP2022/085309 patent/WO2023134934A1/fr unknown
Non-Patent Citations (5)
Title |
---|
DE M. JOSE ET AL.: "InREC: In-network REal Number Computation", IEEE INTERNATIONAL SYMPOSIUM ON INTEGRATED NETWORK MANAGEMENT (IM |
JOÃO M P CARDOSO ET AL: "Compiling for reconfigurable computing", ACM COMPUTING SURVEYS, ACM, NEW YORK, NY, US, US, vol. 42, no. 4, 23 June 2010 (2010-06-23), pages 1 - 65, XP058090587, ISSN: 0360-0300, DOI: 10.1145/1749603.1749604 * |
JOSE MATTHEWS ET AL: "InREC: In-network REal Number Computation", 2021 IFIP/IEEE INTERNATIONAL SYMPOSIUM ON INTEGRATED NETWORK MANAGEMENT (IM), IFIP, 17 May 2021 (2021-05-17), pages 358 - 366, XP033935394 * |
KUNZE IKE ET AL: "Investigating the Applicability of In-Network Computing to Industrial Scenarios", 2021 4TH IEEE INTERNATIONAL CONFERENCE ON INDUSTRIAL CYBER-PHYSICAL SYSTEMS (ICPS), IEEE, 10 May 2021 (2021-05-10), pages 334 - 340, XP033937388, DOI: 10.1109/ICPS49255.2021.9468247 * |
SARVAN CAGLA ET AL: "Implementation of ANN Training Module on Field Programmable Gate Arrays", 2019 INNOVATIONS IN INTELLIGENT SYSTEMS AND APPLICATIONS CONFERENCE (ASYU), IEEE, 31 October 2019 (2019-10-31), pages 1 - 6, XP033682537, DOI: 10.1109/ASYU48272.2019.8946350 * |
Also Published As
Publication number | Publication date |
---|---|
FR3131995A1 (fr) | 2023-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0546624B1 (fr) | Système de traitement de données opérant avec une fonction non linéaire formée de morceaux | |
WO2017137689A1 (fr) | Procédé et dispositif d'anonymisation de données stockées dans une base de données | |
EP0712072A1 (fr) | Procédé de mise en oeuvre de réduction modulaire selon la méthode de Montgomery | |
EP0885504A1 (fr) | Procede et systeme de facturation pour reseaux de transmission de donnees | |
EP0372613A1 (fr) | Procédé de rétropropagation d'erreurs et structure de réseau de neurones | |
CA2656125C (fr) | Dispositif et procede d'encodage de type cabac | |
FR2690551A1 (fr) | Procédé de quantification d'un filtre prédicteur pour vocodeur à très faible débit. | |
FR3095042A1 (fr) | Procede de definition d’un chemin | |
EP2391052A1 (fr) | Procédé d'évaluation d'une fonction et dispositif associé | |
WO2023134934A1 (fr) | Support de calculs sur nombres reels au niveau des commutateurs physiques | |
WO2012004321A1 (fr) | Procédé de détermination d'au moins un paramètre d'un code correcteur d'erreurs mis en œuvre en émission, dispositif et programme d'ordinateur correspondants | |
EP0401927A1 (fr) | Méthode d'apprentissage, réseau de neurones et ordinateur pour simuler ledit réseau de neurones | |
EP2013705B1 (fr) | Additionneur n bits et procédé d'addition correspondant | |
EP3200384B1 (fr) | Procédé d'execution de calcul cryptographique et application a la classification par machines a vecteurs de support | |
FR3094104A1 (fr) | Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones compte tenu de sa topologie | |
AU2021399066B2 (en) | Readout-error mitigation for quantum expectation | |
EP4002223A1 (fr) | Procédé de mise à jour d'un réseau de neurones artificiel | |
EP3857810B1 (fr) | Procédé cryptographique de comparaison sécurisée de deux données secrètes x et y | |
FR2811169A1 (fr) | Procede et dispositif de decodage et systemes les mettant en oeuvre | |
EP3482524B1 (fr) | Procédé de génération des paramètres caractérisant un protocole cryptographique | |
EP1355449B1 (fr) | Procédé et système de détermination des paramètres de fonctionnement d'un réseau de transmission d'informations pour créer, dans ce réseau, un réseau virtuel | |
EP0341097A1 (fr) | Additionneur de type récursif pour calculer la somme de deux opérandes | |
FR2655444A1 (fr) | Reseau neuronal a circuits neuronaux electroniques a apprentissage de coefficients, et procede d'apprentissage. | |
FR3122759A1 (fr) | Implementations et procedes de traitement de reseau neuronal dans un materiel semi-conducteur | |
FR3109651A1 (fr) | Procédé d’implémentation d’un réseau de neurones artificiels dans un circuit intégré |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 22834619 Country of ref document: EP Kind code of ref document: A1 |