Re: GIST Q/D-mode issue

"Hancock, Robert" <[email protected]>
Newsgroups gmane.ietf.nsis
Message-ID <A632AD91CF90F24A87C42F6B96ADE5C50157AEFA@rsys005a.comm.ad.roke.co.uk>
hi all,

first, a couple of general points:

- at the conceptual level, i think we should distinguish 
between (a) whether a message is sent in Q- or D-mode, and
(b) whether a message has to be interpreted when received 
in the absence of routing state. in the current spec, either
of these classify messages the same way, but the concepts 
are distinct: (a) is about sender behaviour [mainly, formatting
the message to follow a data path] and (b) is about
receiver behaviour [knowing how to decode what you get].

The overall issue comes up in the NAT traversal case, and
the point (I think) is that the NAT has to do special 
special processing for messages received without prior
routing state.

- this actually exposes a flaw in the previous spec: it was
never supposed to matter to a receiver whether a message
was received in Q- or D-mode, it only mattered to the
sender. (The receiver only cared about the message type.)
The fact that it was possible to tell the difference from
the presence of the RAO was a design artifact (the RAO was
supposed to assist message interception, not change the
semantics of the message.)
Taking into account the conceptual distinctions above, it
is still the case that it shouldn't matter to the 
receiver whether a message was in Q- or D-mode, but it does
matter whether routing state is supposed to be used in
interpreting it.

after that rather long digression, some more detailed points
below:

> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On 
> Behalf Of Roland Bless
> Sent: 10 September 2008 12:15
> To: Lauri J T Liuhto
> Cc: [email protected]
> Subject: Re: [NSIS] GIST Q/D-mode issue
> 
> Hi Lauri,
> 
> good that you are coming back on this issue, since I was also
> a little bit confused by the proposal to use a new port for the
> issue.
> 
> Lauri J T Liuhto wrote:
> >  First a very short summary of the Q/D-mode issue of NTLPv16 Nuutti
> >  Varis found in July:
> > 
> >         It seems that it is impossible to differentiate Q-mode and
> >         D-mode Data messages in a middlebox if Data message is sent
> >         with GIST Common Header S-flag set.
> >  
> >  A more detailed example of this issue is attached to the 
> end of this
> >  message.
> > 
> >  The issue was briefly discussed at Dublin, and it seems 
> that we have
> >  at least two different solutions to the issue:
> > 
> >  1) Add a "Q" flag to the GIST Common Header, that would be set
> >     whenever the message is a Q-mode message.
> >     + Closely resembles RAO in UDP payload
yep
> >     + Should be easy to fit in the spec
yep
>       + does not use another different well-known port number
yes-ish (see below)
> >     - Existing implementations need changes
yep
> >     - If done, only four free bits remain in GCH
true (not a huge problem, but see anyway below).

> 
> >  2) Use different port for D-mode messages.
> >     + Scarce GCH flag reserve not used
true
> >     - Bigger changes to spec
yes - in particular, is it a fixed or negotiated port
> >     - Possible NAT/Firewall issues
yes in either case (bigger issues if negotiated)
> >     - Existing implementations need more complex changes
yes
>       - requires using a different well-known port number
it doesn't necessary need to be well-known, just registered
with IANA. (it could even be dynamic if the port is
advertised by the receiver, but that is also more complicated.)
> 
> As an implementer I'm much in favor of solution 1):
> requires only a few code changes and produces less error
> cases, since in the using a different port case other
> messages may arrive on the new port as well etc.
> Listening on two different ports simultaneously for messages
> also requires more system resources and probably major code changes
> compared to 1).
> 
> I'd like to propose a different option 3): why not use a new message
> type for stateless DATA messages? From the internal protocol logic
> this would also be easy to implement as a Q-flag, since this type
> of DATA message needs a special handling, but it avoids
> wasting the flag bit.

this is half attractive for saving the flag bit. however, there is
an issue about extensibility: what if later on another message type
turns up which also needs to be processed by the NAT in the same
way - the NAT implementations need to have a list of message
types to care about, and that list might extend. 

but there's another way of saying the same thing: divide the message
types into two classes, those to be intercepted by NATs and those
which are not. distinguish them by the high-bit in the message 
type field. (it reduces the number of distinct message types from
256 to 128, but that seems not impossible.) obviously, this is the
same as just putting the hypothetical Q-flag in a different place
in the header (and calling it something else.)

in another mail:

> Max Laier proposed option 4):
> use a different magic number for Q-Mode and D-Mode messages.
> Any opinions?

i don't really like this. i have generated the appropriate
random number (4d62 8fa0), but it still seems like a hack.
and the same issues about extensibility apply.

when i first analysed this problem, i couldn't find a better
solution than the Q-flag or something like it: in other words,
you have to change the message formats. within the design
space of format changes, my favourite is still option (1), or
modified option (3) if flag bit space exhaustion seems like
a problem.

robert h.

> 
> Regards,
>  Roland
> _______________________________________________
> nsis mailing list
> [email protected]
> https://www.ietf.org/mailman/listinfo/nsis
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.