GIST Q/D-mode issue

Lauri J T Liuhto <[email protected]>
Newsgroups gmane.ietf.nsis
Message-ID <[email protected]>
 Hi all,

 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
    + Should be easy to fit in the spec
    - Existing implementations need changes
    - If done, only four free bits remain in GCH
    
 2) Use different port for D-mode messages.
    + Scarce GCH flag reserve not used
    - Bigger changes to spec
    - Possible NAT/Firewall issues
    - Existing implementations need more complex changes

 
 Best Regards,
 Lauri

    
  Flow                                Flow
Source                           Destination
  A --------- B --------- C --------- D
  ^===========^=======================^    (Peering relationships)

  ==============[Downstream]==========>

Scenario:
* A, B, C, D GIST nodes with NSLP1
* NSLP1 in A, B and D form peering relationships (A <-> B, B <-> D)
* NSLP1 in C refuses to peer with B

Case #1, Q-mode Data message from B towards D, w/o source signaling:
--------------------------------------------------------------------
B: Send GIST Message #1: 
	Q-mode Data, GCH S=0, MagicNumber, NSLPID
	UDPDst: 4
	 IPSrc: A  IPDst: D
	MRISrc: A MRIDst: D

C: Intercepts GIST Message #1
	UDPDst 4 -> MagicNumber, NSLPID
	    => D- or Q-mode
	S=0 && IPSrc A == MRISrc A && IPDst D == MRIDst D
	    => Q-mode

Case #2, Q-mode Data message from B towards D, w/  source signaling:
--------------------------------------------------------------------
B: Send GIST Message #2:
	Q-mode Data, GCH S=1, MagicNumber, NSLPID
	UDPDst: 4
	 IPSrc: B  IPDst: D
	MRISrc: A MRIDst: D

C: Intercepts GIST Message #2:
	UDPDst 4 -> MagicNumber, NSLPID
	    => D- or Q-mode
	S=1 (&& IPSrc B != MRISrc A && IPDst D == MRIDst D)
	    => Cannot derive D- or Q-mode from IP/MRI info
	    => ?-mode (discard NSLPData or deliver to NSLP?)

Case #3, D-mode Data message from B towards D, w/  source signaling:
--------------------------------------------------------------------
B: Send GIST Message #3
	D-mode Data, GCH S=1, MagicNumber, NSLPID
	UDPDst: 4
	 IPSrc: B  IPDst: D
	MRISrc: A MRIDst: D

C: Intercepts GIST Message #3
	UDPDst 4 -> MagicNumber, NSLPID
	    => D- or Q-mode
	S=1
	    => Cannot derive D- or Q- mode from IP/MRI info
	    => ?-mode (discard NSLPData or deliver to NSLP?)

-- 
Lauri Liuhto
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.