From: Phil Oester <kernel@linuxace.com>
To: Patrick McHardy <kaber@trash.net>
Cc: Harald Welte <laforge@netfilter.org>,
Rusty Russell <rusty@rustcorp.com.au>,
netfilter-devel@lists.netfilter.org
Subject: Re: [PATCH] Fix NAT TCP sequence adjustment
Date: Wed, 20 Apr 2005 08:53:08 -0700 [thread overview]
Message-ID: <20050420155308.GA7057@linuxace.com> (raw)
In-Reply-To: <42666F4C.5080706@trash.net>
On Wed, Apr 20, 2005 at 05:03:40PM +0200, Patrick McHardy wrote:
> offset_before: 1000
> offset_after: -1000
> correction_pos: 1000000
>
> Sequence number (pre-adjustment): 999500 (retransmit)
> Sequence number (post-adjustment): 1000500
>
> if (seq - this_way->offset_before != this_way->correction_pos)
>
> adjusted seq - offset_before = 999500 => passes the test
> adjusted seq - offset_after = 1001500 => not detected as retransmit.
>
> You assume only identical retransmits of the packet that caused
> the last adjustment. It could also be an older packet or have
> different boundaries.
Yes, and I believe this is a safe assumption. Take FTP for example. Packets
containing the PORT command traverse this function, but not packets containing
the file itself. If a PORT packet is lost, you will not receive a PORT
packet for a different file before the first is retransmitted. So it is safe
to assume that the adjustments are occurring sequentially -- not out of order.
So with this assumption, the above example becomes impossible - the 999500
retransmit would have been dealt with prior to a new correction_pos being
set.
This is a very FTP-centric view, but can you think of other protocols helpers
which would not follow this sequential pattern?
> This brings us to a different problem,
> the sequence number at which the correction occured should be
> stored, not the first sequence number contained in the packet.
> But this can be done in a seperate fix.
Given the above assumption, I don't think this is a concern.
Phil
next prev parent reply other threads:[~2005-04-20 15:53 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-02 20:24 [PATCH] Fix NAT TCP sequence adjustment Phil Oester
2005-04-03 12:26 ` Milos Wimmer
2005-04-03 19:26 ` Patrick McHardy
2005-04-03 23:53 ` Phil Oester
2005-04-04 4:40 ` Phil Oester
2005-04-04 8:27 ` Patrick McHardy
2005-04-04 20:47 ` Phil Oester
2005-04-05 7:32 ` Patrick McHardy
2005-04-05 13:33 ` Patch lifetime " Amin Azez
2005-04-10 20:49 ` Harald Welte
2005-04-06 4:48 ` Phil Oester
2005-04-18 1:42 ` Patrick McHardy
2005-04-19 0:58 ` Phil Oester
2005-04-20 15:03 ` Patrick McHardy
2005-04-20 15:53 ` Phil Oester [this message]
2005-04-20 16:07 ` Patrick McHardy
2005-04-20 17:24 ` Phil Oester
2005-04-20 17:50 ` Patrick McHardy
2005-04-20 18:25 ` Phil Oester
2005-04-20 21:39 ` Martijn Lievaart
2005-04-21 1:41 ` Patrick McHardy
2005-04-21 1:38 ` Patrick McHardy
2005-04-21 12:31 ` Milos Wimmer
2005-04-21 12:32 ` Patrick McHardy
2005-04-21 13:31 ` Jonas Berlin
2005-04-21 23:01 ` Patrick McHardy
2005-04-27 0:44 ` Rusty Russell
2005-04-27 10:27 ` Patrick McHardy
2005-05-31 9:17 ` Rusty Russell
2005-05-31 13:02 ` Patrick McHardy
2005-05-31 13:48 ` Rusty Russell
2005-05-31 14:35 ` Patrick McHardy
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=20050420155308.GA7057@linuxace.com \
--to=kernel@linuxace.com \
--cc=kaber@trash.net \
--cc=laforge@netfilter.org \
--cc=netfilter-devel@lists.netfilter.org \
--cc=rusty@rustcorp.com.au \
/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.