[ovs-dev] [PATCH 2/2] miniflow: Use 64-bit data.

Jarno Rajahalme jrajahalme at nicira.com
Tue Jan 6 19:03:15 UTC 2015


On Jan 5, 2015, at 2:39 PM, Ben Pfaff <blp at nicira.com> wrote:

> On Mon, Jan 05, 2015 at 02:15:13PM -0800, Ben Pfaff wrote:
>> On Mon, Jan 05, 2015 at 02:08:41PM -0800, Jarno Rajahalme wrote:
>>> 
>>> On Dec 29, 2014, at 2:27 PM, Ben Pfaff <blp at nicira.com> wrote:
>>> 
>>>> On Wed, Dec 17, 2014 at 10:30:42AM -0800, Jarno Rajahalme wrote:
>>>>> So far the compressed flow data in struct miniflow has been in 32-bit
>>>>> words with a 63-bit map, allowing for a maximum size of struct flow of
>>>>> 252 bytes.  With the forthcoming Geneve options this is not sufficient
>>>>> any more.
>>>>> 
>>>>> This patch solves the problem by changing the miniflow data to 64-bit
>>>>> words, doubling the flow max size to 504 bytes.  Since the word size
>>>>> is doubled, there is some loss in compression efficiency.  To counter
>>>>> this some of the flow fields have been reordered to keep related
>>>>> fields together (e.g., the source and destination IP addresses share
>>>>> the same 64-bit word).
>>>>> 
>>>>> This change should speed up flow data processing on 64-bit CPUs, which
>>>>> may help counterbalance the impact of making the struct flow bigger in
>>>>> the future.
>>>>> 
>>>>> Classifier lookup stage boundaries are also changed to 64-bit
>>>>> alignment, as the current algorithm depends on each miniflow word to
>>>>> not be split between ranges.  This has resulted in new padding (part
>>>>> of the 'mpls_lse' field).
>>>>> 
>>>>> The 'dp_hash' field is also moved to packet metadata to eliminate
>>>>> otherwise needed padding there.  This allows the L4 to fit into one
>>>>> 64-bit word, and also makes matches on 'dp_hash' more efficient as
>>>>> misses can be found already on stage 1.
>>>>> 
>>>>> Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>
>>> 
>>>> This seems mostly straightforward.  Are there particular parts you'd
>>>> like me to look over carefully?
>>>> 
>>> 
>>> Maybe the changes to the miniflow push macros, which get a bit more
>>> complicated...
>> 
>> OK, I'll do that in a bit.
> 
> I read them through them.  I didn't spot any bugs, although they're
> somewhat tricky.

Is this an Acked-by then?

  Jarno





More information about the dev mailing list