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