[P2PSIP] Broken Stop and Wait Algorithm?

Roland Bless <roland.bless@kit.edu> Fri, 18 October 2013 19:46 UTC

Return-Path: <roland.bless@kit.edu>
X-Original-To: p2psip@ietfa.amsl.com
Delivered-To: p2psip@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 30C2111E82A8 for <p2psip@ietfa.amsl.com>; Fri, 18 Oct 2013 12:46:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.349
X-Spam-Level:
X-Spam-Status: No, score=-6.349 tagged_above=-999 required=5 tests=[AWL=-0.100, BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9rOrdQOmrU9k for <p2psip@ietfa.amsl.com>; Fri, 18 Oct 2013 12:46:21 -0700 (PDT)
Received: from iramx2.ira.uni-karlsruhe.de (iramx2.ira.uni-karlsruhe.de [141.3.10.81]) by ietfa.amsl.com (Postfix) with ESMTP id CC43D21F9C38 for <p2psip@ietf.org>; Fri, 18 Oct 2013 12:46:19 -0700 (PDT)
Received: from irams1.ira.uni-karlsruhe.de ([141.3.10.5]) by iramx2.ira.uni-karlsruhe.de with esmtps port 25 id 1VXFzz-0005l1-Nr for <p2psip@ietf.org>; Fri, 18 Oct 2013 21:46:18 +0200
Received: from i72vorta.tm.uni-karlsruhe.de ([141.3.71.26] helo=vorta.tm.kit.edu) by irams1.ira.uni-karlsruhe.de with esmtp port 25 for <p2psip@ietf.org> id 1VXFzz-00081D-Pb; Fri, 18 Oct 2013 21:46:15 +0200
Received: from [IPv6:::1] (localhost [127.0.0.1]) by vorta.tm.kit.edu (Postfix) with ESMTPS id 90B74A80119 for <p2psip@ietf.org>; Fri, 18 Oct 2013 21:46:15 +0200 (CEST)
Message-ID: <52619007.1060202@kit.edu>
Date: Fri, 18 Oct 2013 21:46:15 +0200
From: Roland Bless <roland.bless@kit.edu>
Organization: Institute of Telematics, Karlsruhe Institute of Technology (KIT)
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060111 Thunderbird/1.5 Mnenhy/0.7.3.0
MIME-Version: 1.0
To: P2PSIP WG <p2psip@ietf.org>
X-Enigmail-Version: 1.5.2
Content-Type: text/plain; charset="ISO-8859-15"
Content-Transfer-Encoding: 7bit
X-ATIS-AV: ClamAV (irams1.ira.uni-karlsruhe.de)
X-ATIS-AV: ClamAV (iramx2.ira.uni-karlsruhe.de)
X-ATIS-Timestamp: iramx2.ira.uni-karlsruhe.de 1382125578.
Subject: [P2PSIP] Broken Stop and Wait Algorithm?
X-BeenThere: p2psip@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Peer-to-Peer SIP working group discussion list <p2psip.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/p2psip>, <mailto:p2psip-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/p2psip>
List-Post: <mailto:p2psip@ietf.org>
List-Help: <mailto:p2psip-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/p2psip>, <mailto:p2psip-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 18 Oct 2013 19:46:28 -0000

Hi all,

while implementing more of the RELOAD protocol we came across
the following issue:

In sec. 6.6.3.1. Stop and Wait Sender Algorithm
http://tools.ietf.org/html/draft-ietf-p2psip-base-26#section-6.6.3.1

the spec says:
   For each retransmission, the sequence number MUST be incremented.

   Retransmissions continue until a response is received, or until a
   total of 5 requests have been sent or there has been a hard ICMP
   error [RFC1122] or a TLS alert.  The sender knows a response was
   received when it receives an ACK with a sequence number that
   indicates it is a response to one of the transmissions of this
   messages.


This would cause potential duplicates at the receiving side:

A                                B
   ---------> FramedMsg #1 ------->      ---> deliver FramedMsg #1

     |*drop* <-- Ack #1 <----------

(A: timeout
 + retransmit)

   ---------> FramedMsg #2 ------->      ---> deliver FramedMsg #2
                                              (same as above, i.e.
                                               *duplicate*).
   <----------- Ack #2 <-----------

(A: ack received,
transmit next frame)

   ---------> FramedMsg #3 ------->     ---> deliver FramedMsg #3

Given the current scheme, the receiver cannot
distinguish between the retransmitted frame (#2) and
a new one (#3). What was the reason to use _new_ sequence numbers
for retransmissions? Unless you increment the
sequence number by more than 5 for each _new_
frame, the receiving side could not filter out
duplicates.

Did I miss something?

Regards,
 Roland