multiple TCP sockets with same (srcip,dstip,sport,dport)

From: Rajeev Bector (rajeev@akamai.com)
Date: Fri Jul 07 2000 - 21:11:54 EDT

  • Next message: Linus Torvalds: "Re: [linux-audio-dev] Re: [PATCH really] latency improvements, one reschedule moved"

    Hi,
       Would the TCP gurus look at the following case and comment on it ?
    (this is 2.2.13)

    Its possible to create multiple sockets in the SYN_RECV state
    all of which have the same 4-tuple.

    Here is the scenario :
        If a client machine sends out a SYN and the server sends a SYN-ACK
    back and puts the new socket in SYN_RECV state. If the client machine
    dies before it receives the SYN-ACK... the local port on the client can
    be reused. If I start my client application again, it will reuse that port
    and send another SYN with a different sequence number..

    The problem is in the function tcp_check_req()... If you get a SYN
    that hashes to the listening socket, we do check for retransmission
    but we do not check for the fact that if it is not a retransmission, it
    might still be from the same remote port as the remote port of
    the half-open structure.

    I am not sure what the spec has to say in this case (probably nothing)
     But we could easily toss away the old half-open req (since we
    are sure that the remote end doesnt have any state about it anyway)
    and accept the new SYN..(there is still the problem that the old
    SYN-ACK might be hanging out somewhere and could cause
    this new connection to be RESET)

    I am not sure how other UNIX variants deal with this problem.

    Thanks
    Rajeev

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



    This archive was generated by hypermail 2b29 : Fri Jul 07 2000 - 21:15:19 EDT