All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eddie Kohler <kohler@cs.ucla.edu>
To: dccp@vger.kernel.org
Subject: Re: [SUMMARY]: Problems with loss interval recalculation / audit
Date: Mon, 08 Jan 2007 16:55:21 +0000	[thread overview]
Message-ID: <45A27779.7000405@cs.ucla.edu> (raw)
In-Reply-To: <200701051829.20415@strip-the-willow>

Gerrit,

First I would like to send a NEWBIE REQUEST.

How can I get a complete copy of the DCCP source checked out, including 
your/Ian's patches?  Where is there something on line that explains the git 
process?  Thanks for your/anyone's help.

Now:

> |  RFC 3448 says that I_0 "represents the number of packets received since the 
> |  last loss event".  (Section 5.5)  In the Linux implementation, this number is 
> |  NOT stored in the li_entry list.  It must be calculated.  This is what Ian's 
> |  nonloss manipulations do.
> |  
> |  There are a number of errors in your discussion.  You claim that I_0 is the 
> |  "most recent loss interval", and that it is stored in the li_entry structures. 
> |    But what RFC 3448 means by I_0 is not stored in the Linux DCCP 
> |  implementation's li_entry structures.  Your comments under "This is the 
> |  crucial point" do not seem to realize this.
> There is truth in this, but I need to put it in relation to how the list is handled. 
> What I stated below in "This is the crucial point" is that the highest received seqno
> and CCVal are always stored at the head of the list. 
> 
> ( I just found out that there is another
>   PROBLEM#1: For the first loss interval (as per [RFC 3448, 6.3.1]), the timestamp
>             and sequence number are not stored, only the interval is. )
> 
> For all other loss events, timestamp and sequence number are stored. This also holds
> for I_0; it could be that the interval is 0 here due to (seq_temp becomes `interval')
>    seq_temp = dccp_delta_seqno(head->dccplih_seqno, seq_nonloss);
> but I am not entirely sure about that. And it is probably safer to encode this
> case more explicitly.
> 
> In any way, this clarification leads to 
> PROBLEM#2: Since I_0 always sits at the head of the list, there are at most n=7 
>            completed loss interval entries (not 8 as the RFC recommends).

I find this difficult to follow, but is there still confusion?  According to 
my reading of the patches, and Ian confirmed this, what RFC3448 means by I_0 
**is not stored on the list at all**.  The list stores I_1...I_8.  Remember 
that I_0 is the incomplete loss interval.

> |  Your comments about Ian's patch are also wrong, for the same reason.  I 
> |  believe Ian's patch calculates I_tot0 and I_tot1 correctly, although with 
> |  swapped names.  Certainly if there is a problem it is not the one you have 
> |  identified.
> If the above assumption that the interval of I_0 is 0 holds then in Ian's patch
> (where I_0' is the interval called `non_loss' in Ian's patch) we have that
>  -  I_tot0 is the sum  I_1 * w_1 + ... I_7 * w_7  
>  -  I_tot1 is the sum  I_0' * w_0 + I_1 * w_2 +  I_2 * w3 + ... + I_6 * w_7
> This can't be right.

Your analysis is wrong, I think.  Ian's patch sent 12/27 calculates

   I_tot0 = I_1 * w_0 + ... + I_8 * w_7
   I_tot1 = I_0 * w_0 + I_1 * w_1 + ... + I_7 * w_7.

Because "i" starts at 0.  The relevant part of the patch.

  			i_tot0 += li_entry->dccplih_interval * dccp_li_hist_w[i];
  			w_tot  += dccp_li_hist_w[i];
+			if (i != 7)
+				i_tot1 += li_entry->dccplih_interval
+				   * dccp_li_hist_w[i + 1];
+			if (i = 0) {
+				non_loss = dccp_hdr_seq(skb);
+				sub48(&non_loss, li_entry->dccplih_seqno);
+			}

When "i = 0", the loop is examining I_1.  Then i_tot0 += I_1*w[0], and i_tot1 
+= I_1*w[1], exactly as one would like.  The case "i=7" (that is, I_8) 
affects i_tot0 but not i_tot1, exactly as one would like.

Eddie

  parent reply	other threads:[~2007-01-08 16:55 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-05 18:29 [SUMMARY]: Problems with loss interval recalculation / audit against [RFC 3448, 5.4] Gerrit Renker
2007-01-05 21:26 ` [SUMMARY]: Problems with loss interval recalculation / audit Eddie Kohler
2007-01-08 16:32 ` [SUMMARY]: Problems with loss interval recalculation / audit against [RFC 3448, 5.4] Gerrit Renker
2007-01-08 16:55 ` Eddie Kohler [this message]
2007-01-08 17:48 ` Arnaldo Carvalho de Melo
2007-01-08 20:36 ` Ian McDonald
2007-01-09  8:38 ` Gerrit Renker
2007-01-10  3:14 ` Ian McDonald
2007-01-10  4:27 ` Ian McDonald
2007-01-10 11:32 ` Gerrit Renker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=45A27779.7000405@cs.ucla.edu \
    --to=kohler@cs.ucla.edu \
    --cc=dccp@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.