lkml.org 
[lkml]   [2006]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Question about tcp hash function tcp_hashfn()
    David,

    On Wed, 31 May 2006, David Miller wrote:
    >
    > For sure and there are plans afoot to move over to
    > dynamic table sizing and the Jenkins hash function.

    Just a suggestion, but I have an approach that stands to be
    faster than Jenkins deriving from the verification tag approach
    that I took for SCTP (OpenSS7 SCTP not lksctp).

    TCP uses a cryptographic hash function to select its initial
    sequence number (SCTP does the same for vtag). Last I checked
    it was taken from an MD4 swirled entropy pool and further
    combined with the local and remote IP addresses and port
    numbers.

    Each received segment contains a sequence number that is offset
    from the initial sequence number but is expected to appear
    within the current window. Most of the high order bits of an
    in-window sequence number are predicatable at any point in time
    and, due to cryptographic strength, are more efficient than
    Jenkins, ... and they are right there in the received packet.

    The approach would take the high order bits of the received
    sequence number and use them to index a separate sequence number
    keyed established hash (which could be dynamic). As the window
    changes, the socket would have to be removed and reinserted into
    this hash, but the repositioning would be infrequent. Out of
    window segments would fail to find a socket, but could fall back
    to the current established hash, or even the bind hash. A layer
    of caching could increase the hash lookup speed further for
    noisy senders.

    This would be faster than a Jenkins hash approach because it
    would not be necessary to calculate the hash function at all for
    in-window segments. Per packet overheads would decrease and
    better small packet performance would be experienced (i.e. your
    http server). It has better hash coverage because MD4 and other
    cryptographic algorithms used for initial sequence number
    selection have far better properties than Jenkins.

    What do you think?

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-05-31 10:52    [W:0.025 / U:32.268 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site