Discussion:
[manet] RtgDir review: draft-ietf-manet-dlep-14
Lou Berger
2015-06-08 19:10:31 UTC
Permalink
[Note this is a WG LC related review, not IETF LC.]

Hello,

I have been selected as the Routing Directorate reviewer for this
draft. The Routing Directorate seeks to review all routing or
routing-related drafts as they pass through IETF last call and IESG
review, and sometimes on special request -- or WG Last call as was the
case here . The purpose of the review is to provide assistance to the
Routing ADs. For more information about the Routing Directorate, please
see ​http://trac.tools.ietf.org/area/rtg/trac/wiki/RtgDir

Although these comments are primarily for the use of the (chairs and)
Routing ADs, it would be helpful if you could consider them along with
any other Last Call comments that you receive, and strive to resolve
them through discussion or by updating the draft.

Document: draft-ietf-manet-dlep-14
Reviewer: Lou Berger
Review Date: June 8 (later than requested due to scope of comments -- sorry)
WG LC End Date: unknown
Intended Status: Standards track

Summary:

While I think the document is pretty decent for the scope of the
work, I do have concerns about this document and recommend that the
WG Chairs/Routing ADs discuss these issues further with the authors.
I'm also available as/if needed to discuss.

Comments:

I think the document shows significant good work and looks to be a
useful protocol, although I'm not overly familiar in this space.
That said, I have a number of serious concerns about the document,
and its contents from a few of perspectives. These include basic
protocol issues, underspecified details (which could lead to
interoperability issues), and specification/editorial issues. I
think the document / protocol can be modified to address the issues
I raise below. Of course, it is up to the WG, chairs, and ADs to
decide which comments to address and which to ignore.
I don't expect that all comments will result in changes.

Major Issues:

- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.

- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).

- The document references, but does not define, 'in-session' and
'discovery' states. These either need to be formally defined or
removed. BTW we had exactly the same issue with LMP (RFC4204) and
ended up adding section 11 (FSMs) at a pretty late stage of the
process.

- TCP session management is not defined, nor is the relationship
with TCP and DLEP sessions fully defined. For example:

o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).

o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?

- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.

- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.

- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?

- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.

- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.

- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?

- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.

- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.

- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.

- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.

- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.

- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.

- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.

- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.

Minor Issues:

- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".

- 2^32 versions are currently allowed (section 8.1). This seems a
bit excessive. I'd opt for max of 8 bits here myself.

- It's probably too late, but it probably would be cleaner to have a
generic ack signal rather than a per signal type ack. I mention
this here as this may come up again when clarifying the
transaction model (as mentioned above.)

- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.

- There are no specific rules related to UDP header formation.

- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?

- The IANA Considerations sections must follow​ RFC2360.

- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)

- New registries need an allocation policy, e.g.:
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
“Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.

Nits:

- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive.

- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.

- Internal socket operation is mentioned a couple of times. It
really shouldn't be, the spec should define behavior on the wire.

- The Length fields are missing unit of measure (presumably octets)

- The Mnemonics are used basically once and don't really add value,
suggest dropping them.

- How/when is the "Unknown Signal" Status Code sent?

- Section 8.7: Extension List should be shown as a variable length
field.

- Section 8.8: Experiment List should be shown as a variable length
field.

That's it -- for now -- hopefully I didn't miss anything. Look forward
to hearing response to the above (and how I got things hopelessly wrong ;-)

Lou
Dearlove, Christopher (UK)
2015-06-15 11:15:45 UTC
Permalink
I haven't seen any discussion of this. It looks to me like requiring another draft for the WG to see. It does (by my rapid count) have 17 major issues.

--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________

T:  +44 (0)1245 242194  |  E: ***@baesystems.com

BAE Systems Applied Intelligence, Chelmsford Technology Park, Great Baddow, Chelmsford, Essex CM2 8HN.
www.baesystems.com/ai
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP


-----Original Message-----
From: manet [mailto:manet-***@ietf.org] On Behalf Of Lou Berger
Sent: 08 June 2015 20:11
To: manet-***@ietf.org
Cc: manet-***@ietf.org; rtg-***@ietf.org; ***@ietf.org; draft-ietf-manet-***@ietf.org
Subject: [manet] RtgDir review: draft-ietf-manet-dlep-14

----------------------! WARNING ! ---------------------- This message originates from outside our organisation, either from an external partner or from the internet.
Consider carefully whether you should click on any links, open any attachments or reply.
Follow the 'Report Suspicious Emails' link on IT matters for instructions on reporting suspicious email messages.
--------------------------------------------------------

[Note this is a WG LC related review, not IETF LC.]

Hello,

I have been selected as the Routing Directorate reviewer for this draft. The Routing Directorate seeks to review all routing or routing-related drafts as they pass through IETF last call and IESG review, and sometimes on special request -- or WG Last call as was the case here . The purpose of the review is to provide assistance to the Routing ADs. For more information about the Routing Directorate, please see ​http://trac.tools.ietf.org/area/rtg/trac/wiki/RtgDir

Although these comments are primarily for the use of the (chairs and) Routing ADs, it would be helpful if you could consider them along with any other Last Call comments that you receive, and strive to resolve them through discussion or by updating the draft.

Document: draft-ietf-manet-dlep-14
Reviewer: Lou Berger
Review Date: June 8 (later than requested due to scope of comments -- sorry) WG LC End Date: unknown Intended Status: Standards track

Summary:

While I think the document is pretty decent for the scope of the
work, I do have concerns about this document and recommend that the
WG Chairs/Routing ADs discuss these issues further with the authors.
I'm also available as/if needed to discuss.

Comments:

I think the document shows significant good work and looks to be a
useful protocol, although I'm not overly familiar in this space.
That said, I have a number of serious concerns about the document,
and its contents from a few of perspectives. These include basic
protocol issues, underspecified details (which could lead to
interoperability issues), and specification/editorial issues. I
think the document / protocol can be modified to address the issues
I raise below. Of course, it is up to the WG, chairs, and ADs to
decide which comments to address and which to ignore.
I don't expect that all comments will result in changes.

Major Issues:

- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.

- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).

- The document references, but does not define, 'in-session' and
'discovery' states. These either need to be formally defined or
removed. BTW we had exactly the same issue with LMP (RFC4204) and
ended up adding section 11 (FSMs) at a pretty late stage of the
process.

- TCP session management is not defined, nor is the relationship
with TCP and DLEP sessions fully defined. For example:

o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).

o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?

- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.

- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.

- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?

- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.

- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.

- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?

- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.

- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.

- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.

- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.

- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.

- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.

- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.

- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.

Minor Issues:

- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".

- 2^32 versions are currently allowed (section 8.1). This seems a
bit excessive. I'd opt for max of 8 bits here myself.

- It's probably too late, but it probably would be cleaner to have a
generic ack signal rather than a per signal type ack. I mention
this here as this may come up again when clarifying the
transaction model (as mentioned above.)

- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.

- There are no specific rules related to UDP header formation.

- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?

- The IANA Considerations sections must follow​ RFC2360.

- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)

- New registries need an allocation policy, e.g.:
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
“Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.

Nits:

- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive.

- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.

- Internal socket operation is mentioned a couple of times. It
really shouldn't be, the spec should define behavior on the wire.

- The Length fields are missing unit of measure (presumably octets)

- The Mnemonics are used basically once and don't really add value,
suggest dropping them.

- How/when is the "Unknown Signal" Status Code sent?

- Section 8.7: Extension List should be shown as a variable length
field.

- Section 8.8: Experiment List should be shown as a variable length
field.

That's it -- for now -- hopefully I didn't miss anything. Look forward to hearing response to the above (and how I got things hopelessly wrong ;-)

Lou



_______________________________________________
manet mailing list
***@ietf.org
https://www.ietf.org/mailman/listinfo/manet
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
Rick Taylor
2015-06-16 09:00:35 UTC
Permalink
All,

Stan and I are currently discussing the review. We will come back to
the list with a proposed set of actions when we have a plan.

Sorry for the delay,

Rick
Post by Dearlove, Christopher (UK)
I haven't seen any discussion of this. It looks to me like requiring another draft for the WG to see. It does (by my rapid count) have 17 major issues.
--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________
BAE Systems Applied Intelligence, Chelmsford Technology Park, Great Baddow, Chelmsford, Essex CM2 8HN.
www.baesystems.com/ai
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP
-----Original Message-----
Sent: 08 June 2015 20:11
Subject: [manet] RtgDir review: draft-ietf-manet-dlep-14
----------------------! WARNING ! ---------------------- This message originates from outside our organisation, either from an external partner or from the internet.
Consider carefully whether you should click on any links, open any attachments or reply.
Follow the 'Report Suspicious Emails' link on IT matters for instructions on reporting suspicious email messages.
--------------------------------------------------------
[Note this is a WG LC related review, not IETF LC.]
Hello,
I have been selected as the Routing Directorate reviewer for this draft. The Routing Directorate seeks to review all routing or routing-related drafts as they pass through IETF last call and IESG review, and sometimes on special request -- or WG Last call as was the case here . The purpose of the review is to provide assistance to the Routing ADs. For more information about the Routing Directorate, please see ​http://trac.tools.ietf.org/area/rtg/trac/wiki/RtgDir
Although these comments are primarily for the use of the (chairs and) Routing ADs, it would be helpful if you could consider them along with any other Last Call comments that you receive, and strive to resolve them through discussion or by updating the draft.
Document: draft-ietf-manet-dlep-14
Reviewer: Lou Berger
Review Date: June 8 (later than requested due to scope of comments -- sorry) WG LC End Date: unknown Intended Status: Standards track
While I think the document is pretty decent for the scope of the
work, I do have concerns about this document and recommend that the
WG Chairs/Routing ADs discuss these issues further with the authors.
I'm also available as/if needed to discuss.
I think the document shows significant good work and looks to be a
useful protocol, although I'm not overly familiar in this space.
That said, I have a number of serious concerns about the document,
and its contents from a few of perspectives. These include basic
protocol issues, underspecified details (which could lead to
interoperability issues), and specification/editorial issues. I
think the document / protocol can be modified to address the issues
I raise below. Of course, it is up to the WG, chairs, and ADs to
decide which comments to address and which to ignore.
I don't expect that all comments will result in changes.
- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.
- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).
- The document references, but does not define, 'in-session' and
'discovery' states. These either need to be formally defined or
removed. BTW we had exactly the same issue with LMP (RFC4204) and
ended up adding section 11 (FSMs) at a pretty late stage of the
process.
- TCP session management is not defined, nor is the relationship
o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).
o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?
- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.
- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.
- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?
- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.
- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.
- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.
- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.
- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.
- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.
- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.
- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.
- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".
- 2^32 versions are currently allowed (section 8.1). This seems a
bit excessive. I'd opt for max of 8 bits here myself.
- It's probably too late, but it probably would be cleaner to have a
generic ack signal rather than a per signal type ack. I mention
this here as this may come up again when clarifying the
transaction model (as mentioned above.)
- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.
- There are no specific rules related to UDP header formation.
- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?
- The IANA Considerations sections must follow​ RFC2360.
- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
“Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.
- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive.
- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.
- Internal socket operation is mentioned a couple of times. It
really shouldn't be, the spec should define behavior on the wire.
- The Length fields are missing unit of measure (presumably octets)
- The Mnemonics are used basically once and don't really add value,
suggest dropping them.
- How/when is the "Unknown Signal" Status Code sent?
- Section 8.7: Extension List should be shown as a variable length
field.
- Section 8.8: Experiment List should be shown as a variable length
field.
That's it -- for now -- hopefully I didn't miss anything. Look forward to hearing response to the above (and how I got things hopelessly wrong ;-)
Lou
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
bebemaster
2015-06-16 11:25:10 UTC
Permalink
It would be appropriate to have some of that discussion on the list. There is quite a lot of interest in this draft within the wg and getting input on best ways forward on the various fixes before they are written up should end up saving time.

Justin

<div>-------- Original message --------</div><div>From: Rick Taylor <***@tropicalstormsoftware.com> </div><div>Date:06/16/2015 5:00 AM (GMT-05:00) </div><div>To: "Dearlove, Christopher (UK)" <***@baesystems.com>, Lou Berger <***@labn.net>, manet-***@ietf.org </div><div>Cc: manet-***@ietf.org, rtg-***@ietf.org, ***@ietf.org, draft-ietf-manet-***@ietf.org </div><div>Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14 </div><div>
</div>All,

Stan and I are currently discussing the review. We will come back to
the list with a proposed set of actions when we have a plan.

Sorry for the delay,

Rick
Post by Dearlove, Christopher (UK)
I haven't seen any discussion of this. It looks to me like requiring another draft for the WG to see. It does (by my rapid count) have 17 major issues.
--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________
BAE Systems Applied Intelligence, Chelmsford Technology Park, Great Baddow, Chelmsford, Essex CM2 8HN.
www.baesystems.com/ai
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP
-----Original Message-----
Sent: 08 June 2015 20:11
Subject: [manet] RtgDir review: draft-ietf-manet-dlep-14
----------------------! WARNING ! ---------------------- This message originates from outside our organisation, either from an external partner or from the internet.
Consider carefully whether you should click on any links, open any attachments or reply.
Follow the 'Report Suspicious Emails' link on IT matters for instructions on reporting suspicious email messages.
--------------------------------------------------------
[Note this is a WG LC related review, not IETF LC.]
Hello,
I have been selected as the Routing Directorate reviewer for this draft. The Routing Directorate seeks to review all routing or routing-related drafts as they pass through IETF last call and IESG review, and sometimes on special request -- or WG Last call as was the case here . The purpose of the review is to provide assistance to the Routing ADs. For more information about the Routing Directorate, please see ​http://trac.tools.ietf.org/area/rtg/trac/wiki/RtgDir
Although these comments are primarily for the use of the (chairs and) Routing ADs, it would be helpful if you could consider them along with any other Last Call comments that you receive, and strive to resolve them through discussion or by updating the draft.
Document: draft-ietf-manet-dlep-14
Reviewer: Lou Berger
Review Date: June 8 (later than requested due to scope of comments -- sorry) WG LC End Date: unknown Intended Status: Standards track
While I think the document is pretty decent for the scope of the
work, I do have concerns about this document and recommend that the
WG Chairs/Routing ADs discuss these issues further with the authors.
I'm also available as/if needed to discuss.
I think the document shows significant good work and looks to be a
useful protocol, although I'm not overly familiar in this space.
That said, I have a number of serious concerns about the document,
and its contents from a few of perspectives. These include basic
protocol issues, underspecified details (which could lead to
interoperability issues), and specification/editorial issues. I
think the document / protocol can be modified to address the issues
I raise below. Of course, it is up to the WG, chairs, and ADs to
decide which comments to address and which to ignore.
I don't expect that all comments will result in changes.
- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.
- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).
- The document references, but does not define, 'in-session' and
'discovery' states. These either need to be formally defined or
removed. BTW we had exactly the same issue with LMP (RFC4204) and
ended up adding section 11 (FSMs) at a pretty late stage of the
process.
- TCP session management is not defined, nor is the relationship
o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).
o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?
- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.
- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.
- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?
- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.
- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.
- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.
- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.
- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.
- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.
- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.
- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.
- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".
- 2^32 versions are currently allowed (section 8.1). This seems a
bit excessive. I'd opt for max of 8 bits here myself.
- It's probably too late, but it probably would be cleaner to have a
generic ack signal rather than a per signal type ack. I mention
this here as this may come up again when clarifying the
transaction model (as mentioned above.)
- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.
- There are no specific rules related to UDP header formation.
- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?
- The IANA Considerations sections must follow​ RFC2360.
- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
“Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.
- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive.
- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.
- Internal socket operation is mentioned a couple of times. It
really shouldn't be, the spec should define behavior on the wire.
- The Length fields are missing unit of measure (presumably octets)
- The Mnemonics are used basically once and don't really add value,
suggest dropping them.
- How/when is the "Unknown Signal" Status Code sent?
- Section 8.7: Extension List should be shown as a variable length
field.
- Section 8.8: Experiment List should be shown as a variable length
field.
That's it -- for now -- hopefully I didn't miss anything. Look forward to hearing response to the above (and how I got things hopelessly wrong ;-)
Lou
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Rick Taylor
2015-06-16 11:58:07 UTC
Permalink
That's is entirely understood Justin, I just believe that it would be
better if the two of us had a consistent set of suggestions for the changes.

Rick
Post by bebemaster
It would be appropriate to have some of that discussion on the list.
There is quite a lot of interest in this draft within the wg and getting
input on best ways forward on the various fixes before they are written
up should end up saving time.
Justin
-------- Original message --------
From: Rick Taylor
Date:06/16/2015 5:00 AM (GMT-05:00)
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
All,
Stan and I are currently discussing the review. We will come back to
the list with a proposed set of actions when we have a plan.
Sorry for the delay,
Rick
Post by Dearlove, Christopher (UK)
I haven't seen any discussion of this. It looks to me like requiring
another draft for the WG to see. It does (by my rapid count) have 17
major issues.
Post by Dearlove, Christopher (UK)
--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________
Post by Dearlove, Christopher (UK)
BAE Systems Applied Intelligence, Chelmsford Technology Park, Great
Baddow, Chelmsford, Essex CM2 8HN.
Post by Dearlove, Christopher (UK)
www.baesystems.com/ai
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP
-----Original Message-----
Sent: 08 June 2015 20:11
Subject: [manet] RtgDir review: draft-ietf-manet-dlep-14
----------------------! WARNING ! ---------------------- This message
originates from outside our organisation, either from an external
partner or from the internet.
Post by Dearlove, Christopher (UK)
Consider carefully whether you should click on any links, open any
attachments or reply.
Post by Dearlove, Christopher (UK)
Follow the 'Report Suspicious Emails' link on IT matters for
instructions on reporting suspicious email messages.
Post by Dearlove, Christopher (UK)
--------------------------------------------------------
[Note this is a WG LC related review, not IETF LC.]
Hello,
I have been selected as the Routing Directorate reviewer for this
draft. The Routing Directorate seeks to review all routing or
routing-related drafts as they pass through IETF last call and IESG
review, and sometimes on special request -- or WG Last call as was the
case here . The purpose of the review is to provide assistance to the
Routing ADs. For more information about the Routing Directorate, please
see ​http://trac.tools.ietf.org/area/rtg/trac/wiki/RtgDir
Post by Dearlove, Christopher (UK)
Although these comments are primarily for the use of the (chairs and)
Routing ADs, it would be helpful if you could consider them along with
any other Last Call comments that you receive, and strive to resolve
them through discussion or by updating the draft.
Post by Dearlove, Christopher (UK)
Document: draft-ietf-manet-dlep-14
Reviewer: Lou Berger
Review Date: June 8 (later than requested due to scope of comments --
sorry) WG LC End Date: unknown Intended Status: Standards track
Post by Dearlove, Christopher (UK)
While I think the document is pretty decent for the scope of the
work, I do have concerns about this document and recommend that the
WG Chairs/Routing ADs discuss these issues further with the authors.
I'm also available as/if needed to discuss.
I think the document shows significant good work and looks to be a
useful protocol, although I'm not overly familiar in this space.
That said, I have a number of serious concerns about the document,
and its contents from a few of perspectives. These include basic
protocol issues, underspecified details (which could lead to
interoperability issues), and specification/editorial issues. I
think the document / protocol can be modified to address the issues
I raise below. Of course, it is up to the WG, chairs, and ADs to
decide which comments to address and which to ignore.
I don't expect that all comments will result in changes.
- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.
- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).
- The document references, but does not define, 'in-session' and
'discovery' states. These either need to be formally defined or
removed. BTW we had exactly the same issue with LMP (RFC4204) and
ended up adding section 11 (FSMs) at a pretty late stage of the
process.
- TCP session management is not defined, nor is the relationship
o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).
o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?
- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.
- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.
- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?
- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.
- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.
- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.
- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.
- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.
- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.
- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.
- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.
- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".
- 2^32 versions are currently allowed (section 8.1). This seems a
bit excessive. I'd opt for max of 8 bits here myself.
- It's probably too late, but it probably would be cleaner to have a
generic ack signal rather than a per signal type ack. I mention
this here as this may come up again when clarifying the
transaction model (as mentioned above.)
- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.
- There are no specific rules related to UDP header formation.
- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?
- The IANA Considerations sections must follow​ RFC2360.
- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
“Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.
- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive.
- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.
- Internal socket operation is mentioned a couple of times. It
really shouldn't be, the spec should define behavior on the wire.
- The Length fields are missing unit of measure (presumably octets)
- The Mnemonics are used basically once and don't really add value,
suggest dropping them.
- How/when is the "Unknown Signal" Status Code sent?
- Section 8.7: Extension List should be shown as a variable length
field.
- Section 8.8: Experiment List should be shown as a variable length
field.
That's it -- for now -- hopefully I didn't miss anything. Look
forward to hearing response to the above (and how I got things
hopelessly wrong ;-)
Post by Dearlove, Christopher (UK)
Lou
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Ratliff, Stanley
2015-06-16 12:53:43 UTC
Permalink
As Rick said – we will when we have a plan.

Stan



From: bebemaster [mailto:***@gmail.com]
Sent: Tuesday, June 16, 2015 7:25 AM
To: Rick Taylor; Dearlove, Christopher (UK); Lou Berger; manet-***@ietf.org
Cc: manet-***@ietf.org; rtg-***@ietf.org; ***@ietf.org; draft-ietf-manet-***@ietf.org
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14

It would be appropriate to have some of that discussion on the list. There is quite a lot of interest in this draft within the wg and getting input on best ways forward on the various fixes before they are written up should end up saving time.

Justin

-------- Original message --------
From: Rick Taylor
Date:06/16/2015 5:00 AM (GMT-05:00)
To: "Dearlove, Christopher (UK)" , Lou Berger , manet-***@ietf.org<mailto:manet-***@ietf.org>
Cc: manet-***@ietf.org<mailto:manet-***@ietf.org>, rtg-***@ietf.org<mailto:rtg-***@ietf.org>, ***@ietf.org<mailto:***@ietf.org>, draft-ietf-manet-***@ietf.org<mailto:draft-ietf-manet-***@ietf.org>
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14

All,

Stan and I are currently discussing the review. We will come back to
the list with a proposed set of actions when we have a plan.

Sorry for the delay,

Rick
Post by Dearlove, Christopher (UK)
I haven't seen any discussion of this. It looks to me like requiring another draft for the WG to see. It does (by my rapid count) have 17 major issues.
--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________
BAE Systems Applied Intelligence, Chelmsford Technology Park, Great Baddow, Chelmsford, Essex CM2 8HN.
www.baesystems.com/ai<http://www.baesystems.com/ai>
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP
-----Original Message-----
Sent: 08 June 2015 20:11
Subject: [manet] RtgDir review: draft-ietf-manet-dlep-14
----------------------! WARNING ! ---------------------- This message originates from outside our organisation, either from an external partner or from the internet.
Consider carefully whether you should click on any links, open any attachments or reply.
Follow the 'Report Suspicious Emails' link on IT matters for instructions on reporting suspicious email messages.
--------------------------------------------------------
[Note this is a WG LC related review, not IETF LC.]
Hello,
I have been selected as the Routing Directorate reviewer for this draft. The Routing Directorate seeks to review all routing or routing-related drafts as they pass through IETF last call and IESG review, and sometimes on special request -- or WG Last call as was the case here . The purpose of the review is to provide assistance to the Routing ADs. For more information about the Routing Directorate, please see ​http://trac.tools.ietf.org/area/rtg/trac/wiki/RtgDir
Although these comments are primarily for the use of the (chairs and) Routing ADs, it would be helpful if you could consider them along with any other Last Call comments that you receive, and strive to resolve them through discussion or by updating the draft.
Document: draft-ietf-manet-dlep-14
Reviewer: Lou Berger
Review Date: June 8 (later than requested due to scope of comments -- sorry) WG LC End Date: unknown Intended Status: Standards track
While I think the document is pretty decent for the scope of the
work, I do have concerns about this document and recommend that the
WG Chairs/Routing ADs discuss these issues further with the authors.
I'm also available as/if needed to discuss.
I think the document shows significant good work and looks to be a
useful protocol, although I'm not overly familiar in this space.
That said, I have a number of serious concerns about the document,
and its contents from a few of perspectives. These include basic
protocol issues, underspecified details (which could lead to
interoperability issues), and specification/editorial issues. I
think the document / protocol can be modified to address the issues
I raise below. Of course, it is up to the WG, chairs, and ADs to
decide which comments to address and which to ignore.
I don't expect that all comments will result in changes.
- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.
- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).
- The document references, but does not define, 'in-session' and
'discovery' states. These either need to be formally defined or
removed. BTW we had exactly the same issue with LMP (RFC4204) and
ended up adding section 11 (FSMs) at a pretty late stage of the
process.
- TCP session management is not defined, nor is the relationship
o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).
o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?
- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.
- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.
- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?
- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.
- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.
- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.
- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.
- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.
- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.
- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.
- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.
- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".
- 2^32 versions are currently allowed (section 8.1). This seems a
bit excessive. I'd opt for max of 8 bits here myself.
- It's probably too late, but it probably would be cleaner to have a
generic ack signal rather than a per signal type ack. I mention
this here as this may come up again when clarifying the
transaction model (as mentioned above.)
- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.
- There are no specific rules related to UDP header formation.
- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?
- The IANA Considerations sections must follow​ RFC2360.
- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
“Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.
- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive.
- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.
- Internal socket operation is mentioned a couple of times. It
really shouldn't be, the spec should define behavior on the wire.
- The Length fields are missing unit of measure (presumably octets)
- The Mnemonics are used basically once and don't really add value,
suggest dropping them.
- How/when is the "Unknown Signal" Status Code sent?
- Section 8.7: Extension List should be shown as a variable length
field.
- Section 8.8: Experiment List should be shown as a variable length
field.
That's it -- for now -- hopefully I didn't miss anything. Look forward to hearing response to the above (and how I got things hopelessly wrong ;-)
Lou
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Lou Berger
2015-06-16 13:51:43 UTC
Permalink
I'm available to discuss my comments at any point & with anyone
(including non-authors) who may wish.

I also think there's a meta question implicit in my comments for the WG
and AD to discuss, i.e., how much protocol change does the WG/AD want to
do at this point vs just improving / fully documenting the protocol as
it now stands? As just a reviewer, I don't expect to contribute to the
discussion on this question.

Lou
As Rick said – we will when we have a plan.
Stan
*Sent:* Tuesday, June 16, 2015 7:25 AM
*To:* Rick Taylor; Dearlove, Christopher (UK); Lou Berger;
*Subject:* Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
It would be appropriate to have some of that discussion on the list.
There is quite a lot of interest in this draft within the wg and getting
input on best ways forward on the various fixes before they are written
up should end up saving time.
Justin
-------- Original message --------
From: Rick Taylor
Date:06/16/2015 5:00 AM (GMT-05:00)
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
All,
Stan and I are currently discussing the review. We will come back to
the list with a proposed set of actions when we have a plan.
Sorry for the delay,
Rick
Post by Dearlove, Christopher (UK)
I haven't seen any discussion of this. It looks to me like requiring
another draft for the WG to see. It does (by my rapid count) have 17
major issues.
Post by Dearlove, Christopher (UK)
--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________
BAE Systems Applied Intelligence, Chelmsford Technology Park, Great
Baddow, Chelmsford, Essex CM2 8HN.
Post by Dearlove, Christopher (UK)
www.baesystems.com/ai <http://www.baesystems.com/ai>
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP
-----Original Message-----
Sent: 08 June 2015 20:11
Subject: [manet] RtgDir review: draft-ietf-manet-dlep-14
----------------------! WARNING ! ---------------------- This message
originates from outside our organisation, either from an external
partner or from the internet.
Post by Dearlove, Christopher (UK)
Consider carefully whether you should click on any links, open any
attachments or reply.
Post by Dearlove, Christopher (UK)
Follow the 'Report Suspicious Emails' link on IT matters for
instructions on reporting suspicious email messages.
Post by Dearlove, Christopher (UK)
--------------------------------------------------------
[Note this is a WG LC related review, not IETF LC.]
Hello,
I have been selected as the Routing Directorate reviewer for this
draft. The Routing Directorate seeks to review all routing or
routing-related drafts as they pass through IETF last call and IESG
review, and sometimes on special request -- or WG Last call as was the
case here . The purpose of the review is to provide assistance to the
Routing ADs. For more information about the Routing Directorate, please
see ​http://trac.tools.ietf.org/area/rtg/trac/wiki/RtgDir
Post by Dearlove, Christopher (UK)
Although these comments are primarily for the use of the (chairs and)
Routing ADs, it would be helpful if you could consider them along with
any other Last Call comments that you receive, and strive to resolve
them through discussion or by updating the draft.
Post by Dearlove, Christopher (UK)
Document: draft-ietf-manet-dlep-14
Reviewer: Lou Berger
Review Date: June 8 (later than requested due to scope of comments --
sorry) WG LC End Date: unknown Intended Status: Standards track
Post by Dearlove, Christopher (UK)
While I think the document is pretty decent for the scope of the
work, I do have concerns about this document and recommend that the
WG Chairs/Routing ADs discuss these issues further with the authors.
I'm also available as/if needed to discuss.
I think the document shows significant good work and looks to be a
useful protocol, although I'm not overly familiar in this space.
That said, I have a number of serious concerns about the document,
and its contents from a few of perspectives. These include basic
protocol issues, underspecified details (which could lead to
interoperability issues), and specification/editorial issues. I
think the document / protocol can be modified to address the issues
I raise below. Of course, it is up to the WG, chairs, and ADs to
decide which comments to address and which to ignore.
I don't expect that all comments will result in changes.
- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.
- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).
- The document references, but does not define, 'in-session' and
'discovery' states. These either need to be formally defined or
removed. BTW we had exactly the same issue with LMP (RFC4204) and
ended up adding section 11 (FSMs) at a pretty late stage of the
process.
- TCP session management is not defined, nor is the relationship
o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).
o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?
- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.
- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.
- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?
- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.
- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.
- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.
- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.
- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.
- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.
- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.
- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.
- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".
- 2^32 versions are currently allowed (section 8.1). This seems a
bit excessive. I'd opt for max of 8 bits here myself.
- It's probably too late, but it probably would be cleaner to have a
generic ack signal rather than a per signal type ack. I mention
this here as this may come up again when clarifying the
transaction model (as mentioned above.)
- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.
- There are no specific rules related to UDP header formation.
- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?
- The IANA Considerations sections must follow​ RFC2360.
- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
“Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.
- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive.
- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.
- Internal socket operation is mentioned a couple of times. It
really shouldn't be, the spec should define behavior on the wire.
- The Length fields are missing unit of measure (presumably octets)
- The Mnemonics are used basically once and don't really add value,
suggest dropping them.
- How/when is the "Unknown Signal" Status Code sent?
- Section 8.7: Extension List should be shown as a variable length
field.
- Section 8.8: Experiment List should be shown as a variable length
field.
That's it -- for now -- hopefully I didn't miss anything. Look
forward to hearing response to the above (and how I got things
hopelessly wrong ;-)
Post by Dearlove, Christopher (UK)
Lou
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Alvaro Retana (aretana)
2015-06-16 14:14:04 UTC
Permalink
On 6/16/15, 10:51 AM, "Lou Berger" <***@labn.net> wrote:

Lou: thanks for the review!
Post by Lou Berger
I also think there's a meta question implicit in my comments for the WG
and AD to discuss, i.e., how much protocol change does the WG/AD want to
do at this point vs just improving / fully documenting the protocol as
it now stands?
WG: Lou is absolutely right! He points out good improvement
recommendations based on his experience, but we clearly need to balance
the changes against the existing implementations and their impact on them.
As a point of reference to adopt (or not) some of Lou¹s comments, I
suggest that the authors add an ³Implementation Status² section (rfc6982).

Thanks!

Alvaro.
Rick Taylor
2015-06-16 16:36:39 UTC
Permalink
I think from Stan and my perspective:

1) Suggested text changes and improvements will be addressed.

2) Minor protocol changes, such as changing bit lengths of version
numbers may be addressed.

3) Major protocol changes, such as a single ACK signal for all signals,
will not be addressed, (that particular example had already been
discussed at length and the current way of working is preferred)

Some comments are based on a misreading of the text, which we take as an
indication that the missed point was not described clearly enough.

For the IANA topics, I call on Stan's superior knowledge for guidance.

Rick

(Bit rushed off my feet at the moment, but I will reply to the list with
a full breakdown ASAP)
Post by Alvaro Retana (aretana)
Lou: thanks for the review!
Post by Lou Berger
I also think there's a meta question implicit in my comments for the WG
and AD to discuss, i.e., how much protocol change does the WG/AD want to
do at this point vs just improving / fully documenting the protocol as
it now stands?
WG: Lou is absolutely right! He points out good improvement
recommendations based on his experience, but we clearly need to balance
the changes against the existing implementations and their impact on them.
As a point of reference to adopt (or not) some of Lou¹s comments, I
suggest that the authors add an ³Implementation Status² section (rfc6982).
Thanks!
Alvaro.
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Henning Rogge
2015-06-18 12:38:26 UTC
Permalink
Post by Lou Berger
[Note this is a WG LC related review, not IETF LC.]
Hello,
Hi...

I am NOT one of the DLEP authors, but I have been active during the
design process (some people might say "annoyingly active"), so here
are my opinions on this review. Hopefully it will be helpful for the
authors.
Post by Lou Berger
While I think the document is pretty decent for the scope of the
work, I do have concerns about this document and recommend that the
WG Chairs/Routing ADs discuss these issues further with the authors.
I'm also available as/if needed to discuss.
I think the document shows significant good work and looks to be a
useful protocol, although I'm not overly familiar in this space.
That said, I have a number of serious concerns about the document,
and its contents from a few of perspectives. These include basic
protocol issues, underspecified details (which could lead to
interoperability issues), and specification/editorial issues. I
think the document / protocol can be modified to address the issues
I raise below. Of course, it is up to the WG, chairs, and ADs to
decide which comments to address and which to ignore.
I don't expect that all comments will result in changes.
- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.
On the other side the largest data item we have at the moment is 18
bytes (IPv6 connection point). I am not really seeing lots of
use-cases for large data items in DLEP.

Still, changing the TLV length to 16 bit would be trivial to do... but
would this mean we also should change the signal length field to 4
bytes?
Post by Lou Berger
- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).
Putting it into the UDP based discovery packets as a "header" could
work... they are a bit special anyways (UDP) and we don't need to
repeat the version later.
Post by Lou Berger
- The document references, but does not define, 'in-session' and
'discovery' states. These either need to be formally defined or
removed. BTW we had exactly the same issue with LMP (RFC4204) and
ended up adding section 11 (FSMs) at a pretty late stage of the
process.
I think "discovery phase" is before the TCP connection between radio
and router is established.
Post by Lou Berger
- TCP session management is not defined, nor is the relationship
o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).
Maybe this should be "closing the DLEP session and not using the
active TCP session anymore" ?
Post by Lou Berger
o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?
No, I think the DLEP strategy is "start from scratch"... when you
terminate a DLEP session you go back to the discovery mechanism to
start a new one.
Post by Lou Berger
- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.
I think we don't need restrictions here because of TCP. The other side
WILL answer to eachof our signals or the TCP session will be
terminated.
Post by Lou Berger
- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.
We want to know when the connection between radio and router is
lost... this can take a LONG time when the router is mostly listening
to the Radio (TCP timeout is much to long for our use-case), so we use
the Heartbeats.
Post by Lou Berger
- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?
The DLEP "ACK Signals" are more a response to a "request signal"...
transaction acknowledgement and result.
Post by Lou Berger
- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.
Just send as fast as you want and let TCP (buffer) take care of the
rest... both Destination up/down are small signals, so it shouldn't be
a problem. And you are only allowed to send Destination Updates when
you received the Destination ACK.
Post by Lou Berger
- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.
No comment on this one.
Post by Lou Berger
- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?
As far as I understand this "Experimental Definition" is something you
use in the lab... you can have a maximum of one experiment for DLEP,
so this is more to make sure your special "work in progress" code does
not collide too hard with a standard radio/router.

On the other side you can support as many "Extensions" as you want...
and I expect this WG to standardize a few additional of them after
DLEP becomes a RFC.
Post by Lou Berger
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
My only idea about them would be "battery level"... not sure how
useful it is to query the radio about this.
Post by Lou Berger
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
It seems the radio vendors really like this field. The reason why we
made "max/current link speed" mandatory is to make RLQ at least
reasonable useful.
Post by Lou Berger
- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.
No comment on this one.
Post by Lou Berger
- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.
I think "no status TLV" is always "everything is fine"...
Post by Lou Berger
- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.
I think is exactly as most (all?) of us have implemented it... no
ordering required.
Post by Lou Berger
- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.
Can you give an example where this is undefined? As far as I can see
the draft explicitly states what and how often you can use TLVs per
signal.
Post by Lou Berger
- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.
- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.
DLEP is only on the local ethernet connection between the radio and
the router... it is NOT spoken between different router/radio
components of a network. RFC6952 is talking about securing
communication over the routed network.
Post by Lou Berger
- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".
So you would like to move BOTH the type and the length fields of the
TLVs to 16 bit?
Post by Lou Berger
- 2^32 versions are currently allowed (section 8.1). This seems a
bit excessive. I'd opt for max of 8 bits here myself.
Most likely 8 bits are enough, especially because I would expect the
version number to become "fixed" after the RFC release.
Post by Lou Berger
- It's probably too late, but it probably would be cleaner to have a
generic ack signal rather than a per signal type ack. I mention
this here as this may come up again when clarifying the
transaction model (as mentioned above.)
could be... but I am not sure about the advantage of moving the "ack
type" into a TLV.
Post by Lou Berger
- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.
- There are no specific rules related to UDP header formation.
UDP header formation?
Post by Lou Berger
- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?
I think we talked about this and the reason was that subnets are only
as "fixed settings" supported.
Post by Lou Berger
- The IANA Considerations sections must follow RFC2360.
- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)
I didn't know about this, I have always seen Drafts with TBDx...
Post by Lou Berger
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
“Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.
- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive.
- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.
- Internal socket operation is mentioned a couple of times. It
really shouldn't be, the spec should define behavior on the wire.
Not sure what you mean...
Post by Lou Berger
- The Length fields are missing unit of measure (presumably octets)
Yes, octets.
Post by Lou Berger
- The Mnemonics are used basically once and don't really add value,
suggest dropping them.
- How/when is the "Unknown Signal" Status Code sent?
I would guess attached to a "Peer Termination" Signal... the other
side sent us something we don't understand.
Post by Lou Berger
- Section 8.7: Extension List should be shown as a variable length
field.
- Section 8.8: Experiment List should be shown as a variable length
field.
You mean a "..." in the ascii art?

Henning Rogge
MATTY, Steven
2015-06-18 13:02:13 UTC
Permalink
Hi,

Apologies for hijacking your reply a little Henning, but I thought I could chime
in on a couple of points from a radio vendor point of view!
Post by Henning Rogge
Post by Lou Berger
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
My only idea about them would be "battery level"... not sure how
useful it is to query the radio about this.
Whilst a destination route may be up and currently the preferred choice,
if it's resources are degrading or approaching zero, the router may be
able to make an informed decision to find an alternate route before said
route disappears. This would be preferable to waiting for a heartbeat
timeout.
Post by Henning Rogge
Post by Lou Berger
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
It seems the radio vendors really like this field. The reason why we
made "max/current link speed" mandatory is to make RLQ at least
reasonable useful.
Yes we do :) Whilst a link may be supporting a given data rate, it
could be running at or near threshold. To prevent unnecessary packet
loss, especially if this is a transient situation it may be preferable for
the router to say "let's choose a more stable link". We might, for instance,
choose reflect Rx Eb/N0 (adjusted to a 0-100 factor). A rapidly degrading
loss of quality can then be picked up the router and again make a decision
about how best to route traffic.

Regards

Steve

This email (including any attachments) may contain confidential
and/or privileged information or information otherwise protected
from disclosure. If you are not the intended recipient, please
notify the sender immediately, do not copy this message or any
attachments and do not use it for any purpose or disclose its
content to any person, but delete this message and any attachments
from your system. Airbus Defence and Space Limited disclaims any and all liability if this email transmission was virus corrupted,
altered or falsified.
-o-
Airbus Defence and Space Limited, Registered in England and Wales No. 2449259
Registered Office:
Gunnels Wood Road, Stevenage, Hertfordshire, SG1 2AS, England
Henning Rogge
2015-06-18 13:10:08 UTC
Permalink
On Thu, Jun 18, 2015 at 3:02 PM, MATTY, Steven
Post by MATTY, Steven
Apologies for hijacking your reply a little Henning, but I thought I could chime
in on a couple of points from a radio vendor point of view!
Good to get more input directly from Radio vendors!
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
My only idea about them would be "battery level"... not sure how
useful it is to query the radio about this.
Whilst a destination route may be up and currently the preferred choice,
if it's resources are degrading or approaching zero, the router may be
able to make an informed decision to find an alternate route before said
route disappears. This would be preferable to waiting for a heartbeat
timeout.
Yes, that was my line of thought too... use the "battery level" to
define the RLQ... then use the RLQ for the "MPR priority" (as an
OLSRv2 example) or just to make links more expensive when battery
becomes an issue.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
It seems the radio vendors really like this field. The reason why we
made "max/current link speed" mandatory is to make RLQ at least
reasonable useful.
Yes we do :) Whilst a link may be supporting a given data rate, it
could be running at or near threshold. To prevent unnecessary packet
loss, especially if this is a transient situation it may be preferable for
the router to say "let's choose a more stable link". We might, for instance,
choose reflect Rx Eb/N0 (adjusted to a 0-100 factor). A rapidly degrading
loss of quality can then be picked up the router and again make a decision
about how best to route traffic.
My point was that without the "max/current datarate" the RLQ is very
difficult to interpret, especially in heterogeneous networks.

"Good that its a perfect link... but it doesn't mean you should go to
youtube over it if its a 4 kbit/s VHF connection." ;)

I see two extensions coming to DLEP in the future... one to deliver
frame-level traffic statistics (sent/received bytes/frames, number of
retransmittedn/lost frames, ect) and radio parameters (frequency,
bandwidth, signal strength, channel busy/rx/tx time).

Henning
Rick Taylor
2015-06-22 12:43:51 UTC
Permalink
I've always tried to explain RLQ as a measure of link stability.

I mean that in the world of very smart radios, two links may both be
reported as having the same bandwidth and latency, but one link is
operating right at the edge of its performance envelope and may suddenly
degrade rapidly, whilst the other is happy and stable.

This is best reflected with a differing RLQs, one low, one high.

The main reason for not renaming this metric as Relative Link Stability
is simply the RFC5578 heritage.

Rick
Post by Henning Rogge
On Thu, Jun 18, 2015 at 3:02 PM, MATTY, Steven
Post by MATTY, Steven
Apologies for hijacking your reply a little Henning, but I thought I could chime
in on a couple of points from a radio vendor point of view!
Good to get more input directly from Radio vendors!
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
My only idea about them would be "battery level"... not sure how
useful it is to query the radio about this.
Whilst a destination route may be up and currently the preferred choice,
if it's resources are degrading or approaching zero, the router may be
able to make an informed decision to find an alternate route before said
route disappears. This would be preferable to waiting for a heartbeat
timeout.
Yes, that was my line of thought too... use the "battery level" to
define the RLQ... then use the RLQ for the "MPR priority" (as an
OLSRv2 example) or just to make links more expensive when battery
becomes an issue.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
It seems the radio vendors really like this field. The reason why we
made "max/current link speed" mandatory is to make RLQ at least
reasonable useful.
Yes we do :) Whilst a link may be supporting a given data rate, it
could be running at or near threshold. To prevent unnecessary packet
loss, especially if this is a transient situation it may be preferable for
the router to say "let's choose a more stable link". We might, for instance,
choose reflect Rx Eb/N0 (adjusted to a 0-100 factor). A rapidly degrading
loss of quality can then be picked up the router and again make a decision
about how best to route traffic.
My point was that without the "max/current datarate" the RLQ is very
difficult to interpret, especially in heterogeneous networks.
"Good that its a perfect link... but it doesn't mean you should go to
youtube over it if its a 4 kbit/s VHF connection." ;)
I see two extensions coming to DLEP in the future... one to deliver
frame-level traffic statistics (sent/received bytes/frames, number of
retransmittedn/lost frames, ect) and radio parameters (frequency,
bandwidth, signal strength, channel busy/rx/tx time).
Henning
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Lou Berger
2015-06-18 21:28:31 UTC
Permalink
Henning,
Thanks for the opinions. See below for in line response to those
topics that have to do with the review and my intent -- I'm staying away
from "WG/chair/AD" discussion topics.
Post by Henning Rogge
Post by Lou Berger
[Note this is a WG LC related review, not IETF LC.]
Hello,
Hi...
I am NOT one of the DLEP authors, but I have been active during the
design process (some people might say "annoyingly active"), so here
are my opinions on this review. Hopefully it will be helpful for the
authors.
Post by Lou Berger
...
- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.
On the other side the largest data item we have at the moment is 18
bytes (IPv6 connection point). I am not really seeing lots of
use-cases for large data items in DLEP.
My experience in the past has been that unknown uses show up later and
make this an issue that needs to be solved by some ugly semantic
fragmentation, so if possible, I think it should be fixed.
Post by Henning Rogge
Still, changing the TLV length to 16 bit would be trivial to do... but
would this mean we also should change the signal length field to 4
bytes?
I wasn't suggesting this and I don't think so. 2^16 is a pretty big
message.
Post by Henning Rogge
Post by Lou Berger
- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).
Putting it into the UDP based discovery packets as a "header" could
work... they are a bit special anyways (UDP) and we don't need to
repeat the version later.
Lots of options here. But recall UDP discovery is optional per current spec.
Post by Henning Rogge
Post by Lou Berger
- The document references, but does not define, 'in-session' and
'discovery' states. These either need to be formally defined or
removed. BTW we had exactly the same issue with LMP (RFC4204) and
ended up adding section 11 (FSMs) at a pretty late stage of the
process.
I think "discovery phase" is before the TCP connection between radio
and router is established.
Sure, but the point I was making there's a difference between
unambiguously specifying something that can be independently implemented
by someone not involved in the WG vs a common understanding in the WG
based on discussion while the spec is developed. The challenge is
ensuring the document (the former) adequately captures the latter.
Post by Henning Rogge
Post by Lou Berger
- TCP session management is not defined, nor is the relationship
o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).
Maybe this should be "closing the DLEP session and not using the
active TCP session anymore" ?
Post by Lou Berger
o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?
No, I think the DLEP strategy is "start from scratch"... when you
terminate a DLEP session you go back to the discovery mechanism to
start a new one.
Whichever reasonable approach is taken it just needs to be explicitly
documented.
Post by Henning Rogge
Post by Lou Berger
- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.
I think we don't need restrictions here because of TCP. The other side
WILL answer to eachof our signals or the TCP session will be
terminated.
I don't think TCP helps (or hurts here). This is a question of what
different implementations will choose to do / support WRT signals of the
same or different types being processed in parallel.
Post by Henning Rogge
Post by Lou Berger
- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.
We want to know when the connection between radio and router is
lost... this can take a LONG time when the router is mostly listening
to the Radio (TCP timeout is much to long for our use-case), so we use
the Heartbeats.
This comment relates to the per signal acks and retries. I didn't
include the connection failure detection covered by the heartbeat signal
in this comment.
Post by Henning Rogge
Post by Lou Berger
- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?
The DLEP "ACK Signals" are more a response to a "request signal"...
transaction acknowledgement and result.
Post by Lou Berger
- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.
Just send as fast as you want and let TCP (buffer) take care of the
rest... both Destination up/down are small signals, so it shouldn't be
a problem.
The assumptions behind this "shouldn't part of this" is what should be
discussed...
Post by Henning Rogge
And you are only allowed to send Destination Updates when
you received the Destination ACK.
Where is this restriction specified? I don't recall seeing it.
Post by Henning Rogge
Post by Lou Berger
- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.
No comment on this one.
Post by Lou Berger
- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?
As far as I understand this "Experimental Definition" is something you
use in the lab... you can have a maximum of one experiment for DLEP,
Interesting -- where is this restriction defined? Section 7.3 says
that "one or more" are allowed.
Post by Henning Rogge
so this is more to make sure your special "work in progress" code does
not collide too hard with a standard radio/router.
It's pretty unclear from the spec how experimental definitions are to be
used -- or if they belong in standards track document at all.
Post by Henning Rogge
On the other side you can support as many "Extensions" as you want...
and I expect this WG to standardize a few additional of them after
DLEP becomes a RFC.
okay, look forward to seeing an IANA allocation policy for these.
Post by Henning Rogge
Post by Lou Berger
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
My only idea about them would be "battery level"... not sure how
useful it is to query the radio about this.
some context would be great. -- sounds like its akin to a routing metric.
Post by Henning Rogge
Post by Lou Berger
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
It seems the radio vendors really like this field. The reason why we
made "max/current link speed" mandatory is to make RLQ at least
reasonable useful.
same comment.
Post by Henning Rogge
Post by Lou Berger
- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.
No comment on this one.
Post by Lou Berger
- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.
I think "no status TLV" is always "everything is fine"...
Post by Lou Berger
- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.
I think is exactly as most (all?) of us have implemented it... no
ordering required.
Cool, then this is just a simple matter of documenting "what everyone
implements".
Post by Henning Rogge
Post by Lou Berger
- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.
Can you give an example where this is undefined? As far as I can see
the draft explicitly states what and how often you can use TLVs per
signal.
I think the experimental data item discussion above is a perfect
example. You though only one is allowed the spec is vague in section
8.8 and explicit in 7.3. -- Narrative lacks precision and is easily
misread. Something like ABNF is far more transparent.
Post by Henning Rogge
Post by Lou Berger
- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.
- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.
DLEP is only on the local ethernet connection between the radio and
the router... it is NOT spoken between different router/radio
components of a network. RFC6952 is talking about securing
communication over the routed network.
This is a scoping of the problem that should go into a security the
section. RFC4204 covers a similar scoped protocol, although it's
security considerations section is quite dated.
Post by Henning Rogge
Post by Lou Berger
- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".
So you would like to move BOTH the type and the length fields of the
TLVs to 16 bit?
I'd probably enlarge data items and leave signal type alone.
Alternatively you can plan to do something ugly down the road, like type
255 means look in value field for an extended type field - yuck.
Post by Henning Rogge
Post by Lou Berger
- 2^32 versions are currently allowed (section 8.1). This seems a
bit excessive. I'd opt for max of 8 bits here myself.
Most likely 8 bits are enough, especially because I would expect the
version number to become "fixed" after the RFC release.
That would be great.
Post by Henning Rogge
Post by Lou Berger
- It's probably too late, but it probably would be cleaner to have a
generic ack signal rather than a per signal type ack. I mention
this here as this may come up again when clarifying the
transaction model (as mentioned above.)
could be... but I am not sure about the advantage of moving the "ack
type" into a TLV.
This would be a really major change at this juncture, as this is a
"minor comment" I didn't really expect for it to be changed at this late
date -- so no need to debate.
Post by Henning Rogge
Post by Lou Berger
- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.
- There are no specific rules related to UDP header formation.
UDP header formation?
format. I.e., what addresses and ports must be used.
Post by Henning Rogge
Post by Lou Berger
- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?
I think we talked about this and the reason was that subnets are only
as "fixed settings" supported.
I'm sorry I don't understand your response. Are you saying subnet
reconfiguration requires a session reset?
Post by Henning Rogge
Post by Lou Berger
- The IANA Considerations sections must follow RFC2360.
- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)
I didn't know about this, I have always seen Drafts with TBDx...
TBD is right for existing registries. For new registries IANA doesn't
have any policies or guidance. This comes from the document that
establish the registries, i.e, this one.
Post by Henning Rogge
Post by Lou Berger
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
“Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.
- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive.
- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.
- Internal socket operation is mentioned a couple of times. It
really shouldn't be, the spec should define behavior on the wire.
Not sure what you mean...
This is a specification of behavior "on the wire" . It should be
possible to implement in an OS that doesn't implement sockets but
properly conforms to the spec.
Post by Henning Rogge
Post by Lou Berger
- The Length fields are missing unit of measure (presumably octets)
Yes, octets.
Post by Lou Berger
- The Mnemonics are used basically once and don't really add value,
suggest dropping them.
- How/when is the "Unknown Signal" Status Code sent?
I would guess attached to a "Peer Termination" Signal... the other
side sent us something we don't understand.
Post by Lou Berger
- Section 8.7: Extension List should be shown as a variable length
field.
- Section 8.8: Experiment List should be shown as a variable length
field.
You mean a "..." in the ascii art?
yes.
Post by Henning Rogge
Henning Rogge
Thanks!

Lou
Rick Taylor
2015-06-22 11:00:07 UTC
Permalink
Hi,

Just adding some replies inline...
Post by MATTY, Steven
Henning,
Thanks for the opinions. See below for in line response to those
topics that have to do with the review and my intent -- I'm staying away
from "WG/chair/AD" discussion topics.
Post by Henning Rogge
Post by Lou Berger
[Note this is a WG LC related review, not IETF LC.]
Hello,
Hi...
I am NOT one of the DLEP authors, but I have been active during the
design process (some people might say "annoyingly active"), so here
are my opinions on this review. Hopefully it will be helpful for the
authors.
I am one of the authors, and I'll try to help clarify why we have gone
the direction we have.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
...
- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.
On the other side the largest data item we have at the moment is 18
bytes (IPv6 connection point). I am not really seeing lots of
use-cases for large data items in DLEP.
My experience in the past has been that unknown uses show up later and
make this an issue that needs to be solved by some ugly semantic
fragmentation, so if possible, I think it should be fixed.
Post by Henning Rogge
Still, changing the TLV length to 16 bit would be trivial to do... but
would this mean we also should change the signal length field to 4
bytes?
I wasn't suggesting this and I don't think so. 2^16 is a pretty big
message.
There is nothing stopping an extension of the data item length to 2^16
octets, but as Henning pointed out, that would suggest an increase of
the signal length field to 2^32 (as signals 'contain' data items).

The reason we haven't gone for 2^16 currently are:

1) We have no data items > ~20 octets.

2) We wanted to keep the data items and signals 'short and sweet' in
form. An implementation could use small stack allocated buffers in
embedded hardware rather than worrying about bigger blocks of memory.

But: Adding big data items later would be more difficult.

Note: There is no 'bits on the wire' performance concerns here, DLEP is
over the local link.

There is a third way: If the length field in the signal is replaced
with a count field, then both can be kept at 16 bits, but it makes
parsing more complicated.

Can I ask for some +1/-1's from the list on this one please? It is not
a major change to the document.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).
Putting it into the UDP based discovery packets as a "header" could
work... they are a bit special anyways (UDP) and we don't need to
repeat the version later.
Lots of options here. But recall UDP discovery is optional per current spec.
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!

I see the point of holding the version number at a fixed offset in the
initial messages of the protocol, and it is something we can definitely
do for the UDP discovery messages, as Henning pointed out, they are
special anyway.

I am loathe to do it to the Initialization signals, as it adds special
case code and text. I think it is okay to allow an implementation *not*
using discovery to expect a process on the reserved address/port
combination to be using some version of DLEP, as long as later DLEP
versions ensure back compatibility.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The document references, but does not define, 'in-session' and
'discovery' states. These either need to be formally defined or
removed. BTW we had exactly the same issue with LMP (RFC4204) and
ended up adding section 11 (FSMs) at a pretty late stage of the
process.
I think "discovery phase" is before the TCP connection between radio
and router is established.
Sure, but the point I was making there's a difference between
unambiguously specifying something that can be independently implemented
by someone not involved in the WG vs a common understanding in the WG
based on discussion while the spec is developed. The challenge is
ensuring the document (the former) adequately captures the latter.
Fair point. We will revisit the text about states.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- TCP session management is not defined, nor is the relationship
o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).
Maybe this should be "closing the DLEP session and not using the
active TCP session anymore" ?
Post by Lou Berger
o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?
No, I think the DLEP strategy is "start from scratch"... when you
terminate a DLEP session you go back to the discovery mechanism to
start a new one.
Whichever reasonable approach is taken it just needs to be explicitly
documented.
We favour a start from scratch approach. But it does need to explicitly
stated somewhere.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.
I think we don't need restrictions here because of TCP. The other side
WILL answer to eachof our signals or the TCP session will be
terminated.
I don't think TCP helps (or hurts here). This is a question of what
different implementations will choose to do / support WRT signals of the
same or different types being processed in parallel.
Particularly with the Request signals, there is a weakness in the text
about transactions that needs to be addressed. This is one of those
areas where those involved early on have a clear idea, but it isn't
clear in the text.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.
We want to know when the connection between radio and router is
lost... this can take a LONG time when the router is mostly listening
to the Radio (TCP timeout is much to long for our use-case), so we use
the Heartbeats.
This comment relates to the per signal acks and retries. I didn't
include the connection failure detection covered by the heartbeat signal
in this comment.
The retries and heartbeats are to detect a failure in the process using
the TCP connection, rather than a failure of the connection itself.
From experience in the MANET space, complex routers and radios can
crash internally/lose control plane long before the TCP session times out.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?
The DLEP "ACK Signals" are more a response to a "request signal"...
transaction acknowledgement and result.
ACKs are intended as an processing acknowledgement rather than a receipt
acknowledgement, i.e. "I have done/not done what you asked".
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.
Just send as fast as you want and let TCP (buffer) take care of the
rest... both Destination up/down are small signals, so it shouldn't be
a problem.
The assumptions behind this "shouldn't part of this" is what should be
discussed...
Yes, there is no text about rate limiting updates. Not from a TCP
datarate perspective, but from a processing perspective. We don't
really want to predict the performance of processors by stating hard
rules on rate-limiting.

This only applies to Destination_Updates, as everything else is
throttled by waiting for ACKs. (Made clearer when some text on
transactions is put in)
Post by MATTY, Steven
Post by Henning Rogge
And you are only allowed to send Destination Updates when
you received the Destination ACK.
Where is this restriction specified? I don't recall seeing it.
It isn't mentioned, but is expected. The text will have to be improved.
I think there is a need for a section on transactions.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.
No comment on this one.
As with rate-limiting, this is a can of worms we have intentionally not
opened. We will have a careful look at every place heuristics are
mentioned and when possible suggest some sensible defaults.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?
As far as I understand this "Experimental Definition" is something you
use in the lab... you can have a maximum of one experiment for DLEP,
Interesting -- where is this restriction defined? Section 7.3 says
that "one or more" are allowed.
Post by Henning Rogge
so this is more to make sure your special "work in progress" code does
not collide too hard with a standard radio/router.
It's pretty unclear from the spec how experimental definitions are to be
used -- or if they belong in standards track document at all.
Post by Henning Rogge
On the other side you can support as many "Extensions" as you want...
and I expect this WG to standardize a few additional of them after
DLEP becomes a RFC.
okay, look forward to seeing an IANA allocation policy for these.
I have covered this in another mail, so I won't repeat. (see Section 11.6)
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
My only idea about them would be "battery level"... not sure how
useful it is to query the radio about this.
some context would be great. -- sounds like its akin to a routing metric.
Post by Henning Rogge
Post by Lou Berger
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
It seems the radio vendors really like this field. The reason why we
made "max/current link speed" mandatory is to make RLQ at least
reasonable useful.
same comment.
The Resources and RLQ metrics are there as DLEP builds upon the work
done in RFC5578. I have always considered Resources to be some
indication of 'work-load' on the modem rather than explicit battery
level. Perhaps the descriptive text needs to be expanded.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.
No comment on this one.
This is one for Stan. Credit-windowing is his baby.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.
I think "no status TLV" is always "everything is fine"...
We are currently happy with the way this works. If an optional data
item is missing, then the default value is used. This should be
explicitly stated whenever an optional data item can be omitted.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.
I think is exactly as most (all?) of us have implemented it... no
ordering required.
Cool, then this is just a simple matter of documenting "what everyone
implements".
Section 6 states: "There is no restriction on the order of data items
following a signal"
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.
Can you give an example where this is undefined? As far as I can see
the draft explicitly states what and how often you can use TLVs per
signal.
I think the experimental data item discussion above is a perfect
example. You though only one is allowed the spec is vague in section
8.8 and explicit in 7.3. -- Narrative lacks precision and is easily
misread. Something like ABNF is far more transparent.
Section 6 states: "...the multiplicity of duplicate data items is
defined by the definition of the signal declared by the type in the
signal header."

We have attempted to enumerate the multiplicity of every data item in
each signal. If we have missed one please point it out.

Section 3.3 states: "Multiple Experimental Definition data items MAY
appear in the Peer Initialization/Peer Initialization ACK sequence."

I have tried to define ABNF, but I struggle with defining the
multiplicity and optional ordering rules, any advice gratefully received.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.
This is a hangover of the major rewrites that have occurred over the
last 14 versions. Let us have another pass at the text and we can see
what we can do.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.
DLEP is only on the local ethernet connection between the radio and
the router... it is NOT spoken between different router/radio
components of a network. RFC6952 is talking about securing
communication over the routed network.
This is a scoping of the problem that should go into a security the
section. RFC4204 covers a similar scoped protocol, although it's
security considerations section is quite dated.
We have done no analysis of a malicious peer in a DLEP session as the
nature of the link-local connectivity made it seem unnecessary. Are you
suggesting that we need to address this?
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".
So you would like to move BOTH the type and the length fields of the
TLVs to 16 bit?
I'd probably enlarge data items and leave signal type alone.
Alternatively you can plan to do something ugly down the road, like type
255 means look in value field for an extended type field - yuck.
See comments above.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- 2^32 versions are currently allowed (section 8.1). This seems a
bit excessive. I'd opt for max of 8 bits here myself.
Most likely 8 bits are enough, especially because I would expect the
version number to become "fixed" after the RFC release.
That would be great.
See comments above.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- It's probably too late, but it probably would be cleaner to have a
generic ack signal rather than a per signal type ack. I mention
this here as this may come up again when clarifying the
transaction model (as mentioned above.)
could be... but I am not sure about the advantage of moving the "ack
type" into a TLV.
This would be a really major change at this juncture, as this is a
"minor comment" I didn't really expect for it to be changed at this late
date -- so no need to debate.
We have debated this before, and the multiple ACKs approach is preferred
by the WG.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.
- There are no specific rules related to UDP header formation.
UDP header formation?
format. I.e., what addresses and ports must be used.
Does Section 5.1 not cover this?
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?
I think we talked about this and the reason was that subnets are only
as "fixed settings" supported.
I'm sorry I don't understand your response. Are you saying subnet
reconfiguration requires a session reset?
Subnet reconfiguration requires a session restart.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The IANA Considerations sections must follow RFC2360.
- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)
I didn't know about this, I have always seen Drafts with TBDx...
TBD is right for existing registries. For new registries IANA doesn't
have any policies or guidance. This comes from the document that
establish the registries, i.e, this one.
We shall suggest some values. Probably from the existing interoperable
implementations.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
"Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.
This is one for Stan.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive
TLVs was rejected as a name, as both signals and data items are
Type-Length-Value encoded. Signals was selected as they are 'events'
rather than RPCs, and it might be a bit late to change the terminology.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.
We will have another pass. Can you point out some examples please?
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Internal socket operation is mentioned a couple of times. It
really shouldn't be, the spec should define behavior on the wire.
Not sure what you mean...
This is a specification of behavior "on the wire" . It should be
possible to implement in an OS that doesn't implement sockets but
properly conforms to the spec.
Okay, this can be fixed if we add a section about re-use of the TCP
connection (don't).
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The Length fields are missing unit of measure (presumably octets)
Yes, octets.
Yes, octets, will add.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- The Mnemonics are used basically once and don't really add value,
suggest dropping them.
With the replacement of TBDs with values these should 'boil off'.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- How/when is the "Unknown Signal" Status Code sent?
I would guess attached to a "Peer Termination" Signal... the other
side sent us something we don't understand.
That was the intention. I will check the text to make sure this is clear.
Post by MATTY, Steven
Post by Henning Rogge
Post by Lou Berger
- Section 8.7: Extension List should be shown as a variable length
field.
- Section 8.8: Experiment List should be shown as a variable length
field.
You mean a "..." in the ascii art?
yes.
... will be added.

Hope that helps?

Rick
Henning Rogge
2015-06-22 11:24:29 UTC
Permalink
On Mon, Jun 22, 2015 at 1:00 PM, Rick Taylor
Post by Rick Taylor
Post by Lou Berger
Lots of options here. But recall UDP discovery is optional per current spec.
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!
I see the point of holding the version number at a fixed offset in the
initial messages of the protocol, and it is something we can definitely
do for the UDP discovery messages, as Henning pointed out, they are
special anyway.
I am loathe to do it to the Initialization signals, as it adds special
case code and text. I think it is okay to allow an implementation *not*
using discovery to expect a process on the reserved address/port
combination to be using some version of DLEP, as long as later DLEP
versions ensure back compatibility.
We could maybe define that both for TCP and UDP the first two bytes
are a version number... after this we begin decoding signals/tlvs.

This sounds reasonable easy and consistent.

Henning Rogge
Lou Berger
2015-06-22 12:11:43 UTC
Permalink
I have a really hard time understanding how there could be 2^16
interoperable versions of anything. But maybe dlep means something
different than the norm when refering to versions.

Can you/some explain a use case for more than a few, being really generious
say 10, version numbers?

Lou
Post by Henning Rogge
On Mon, Jun 22, 2015 at 1:00 PM, Rick Taylor
Post by Rick Taylor
Post by Lou Berger
Lots of options here. But recall UDP discovery is optional per current spec.
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!
I see the point of holding the version number at a fixed offset in the
initial messages of the protocol, and it is something we can definitely
do for the UDP discovery messages, as Henning pointed out, they are
special anyway.
I am loathe to do it to the Initialization signals, as it adds special
case code and text. I think it is okay to allow an implementation *not*
using discovery to expect a process on the reserved address/port
combination to be using some version of DLEP, as long as later DLEP
versions ensure back compatibility.
We could maybe define that both for TCP and UDP the first two bytes
are a version number... after this we begin decoding signals/tlvs.
This sounds reasonable easy and consistent.
Henning Rogge
Rick Taylor
2015-06-22 12:19:02 UTC
Permalink
Okay, with a 4bit/4bit split of a single octet, we have 0-15 major
versions and 0-15 minor versions.

We already have implementations on version 0.14, and with a draft-15
expected, do you suggest a 3bit/5bit split? Why not just use
major.minor 8bits each? We don't have to worry about bytes over the
local link.

Cheers,

Rick
Post by Lou Berger
I have a really hard time understanding how there could be 2^16
interoperable versions of anything. But maybe dlep means something
different than the norm when refering to versions.
Can you/some explain a use case for more than a few, being really generious
say 10, version numbers?
Lou
Post by Henning Rogge
On Mon, Jun 22, 2015 at 1:00 PM, Rick Taylor
Post by Rick Taylor
Post by Lou Berger
Lots of options here. But recall UDP discovery is optional per current spec.
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!
I see the point of holding the version number at a fixed offset in the
initial messages of the protocol, and it is something we can definitely
do for the UDP discovery messages, as Henning pointed out, they are
special anyway.
I am loathe to do it to the Initialization signals, as it adds special
case code and text. I think it is okay to allow an implementation *not*
using discovery to expect a process on the reserved address/port
combination to be using some version of DLEP, as long as later DLEP
versions ensure back compatibility.
We could maybe define that both for TCP and UDP the first two bytes
are a version number... after this we begin decoding signals/tlvs.
This sounds reasonable easy and consistent.
Henning Rogge
Lou Berger
2015-06-22 12:29:05 UTC
Permalink
Post by Rick Taylor
Okay, with a 4bit/4bit split of a single octet, we have 0-15 major
versions and 0-15 minor versions.
We already have implementations on version 0.14, and with a draft-15
expected, do you suggest a 3bit/5bit split?
This is in fact a unique (at least in my experience ) usage of version.
IMO the dlep version for the RFCed version would be 1.
Post by Rick Taylor
Why not just use
major.minor 8bits each? We don't have to worry about bytes over the
local link.
Yes, but you do need to worry about interoperability. If the WG really
wants to go down this path, you'll need some tight text defining how
versioning and version mismatches are handled.

Lou
Post by Rick Taylor
Cheers,
Rick
Post by Lou Berger
I have a really hard time understanding how there could be 2^16
interoperable versions of anything. But maybe dlep means something
different than the norm when refering to versions.
Can you/some explain a use case for more than a few, being really generious
say 10, version numbers?
Lou
Post by Henning Rogge
On Mon, Jun 22, 2015 at 1:00 PM, Rick Taylor
Post by Rick Taylor
Post by Lou Berger
Lots of options here. But recall UDP discovery is optional per current
spec.
Post by Lou Berger
Post by Henning Rogge
Post by Rick Taylor
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!
I see the point of holding the version number at a fixed offset in the
initial messages of the protocol, and it is something we can definitely
do for the UDP discovery messages, as Henning pointed out, they are
special anyway.
I am loathe to do it to the Initialization signals, as it adds special
case code and text. I think it is okay to allow an implementation *not*
using discovery to expect a process on the reserved address/port
combination to be using some version of DLEP, as long as later DLEP
versions ensure back compatibility.
We could maybe define that both for TCP and UDP the first two bytes
are a version number... after this we begin decoding signals/tlvs.
This sounds reasonable easy and consistent.
Henning Rogge
Rick Taylor
2015-06-22 12:38:39 UTC
Permalink
Okay, I see your point - I have spent too long working with FOSS
software where everything lurks at version 0.97 ;)

If the WG are happy with a single octet of 1 for the final 'first'
version, then that's good by me.

+1/-1 please people!

Rick
Post by Lou Berger
Post by Rick Taylor
Okay, with a 4bit/4bit split of a single octet, we have 0-15 major
versions and 0-15 minor versions.
We already have implementations on version 0.14, and with a draft-15
expected, do you suggest a 3bit/5bit split?
This is in fact a unique (at least in my experience ) usage of version.
IMO the dlep version for the RFCed version would be 1.
Post by Rick Taylor
Why not just use
major.minor 8bits each? We don't have to worry about bytes over the
local link.
Yes, but you do need to worry about interoperability. If the WG really
wants to go down this path, you'll need some tight text defining how
versioning and version mismatches are handled.
Lou
Post by Rick Taylor
Cheers,
Rick
Post by Lou Berger
I have a really hard time understanding how there could be 2^16
interoperable versions of anything. But maybe dlep means something
different than the norm when refering to versions.
Can you/some explain a use case for more than a few, being really generious
say 10, version numbers?
Lou
Post by Henning Rogge
On Mon, Jun 22, 2015 at 1:00 PM, Rick Taylor
Post by Rick Taylor
Post by Lou Berger
Lots of options here. But recall UDP discovery is optional per current
spec.
Post by Lou Berger
Post by Henning Rogge
Post by Rick Taylor
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!
I see the point of holding the version number at a fixed offset in the
initial messages of the protocol, and it is something we can definitely
do for the UDP discovery messages, as Henning pointed out, they are
special anyway.
I am loathe to do it to the Initialization signals, as it adds special
case code and text. I think it is okay to allow an implementation *not*
using discovery to expect a process on the reserved address/port
combination to be using some version of DLEP, as long as later DLEP
versions ensure back compatibility.
We could maybe define that both for TCP and UDP the first two bytes
are a version number... after this we begin decoding signals/tlvs.
This sounds reasonable easy and consistent.
Henning Rogge
Wiggins, David - 0665 - MITLL
2015-06-22 12:58:19 UTC
Permalink
I'm fine with a one byte version with no concept of major/minor.

David
Post by Rick Taylor
Okay, I see your point - I have spent too long working with FOSS
software where everything lurks at version 0.97 ;)
If the WG are happy with a single octet of 1 for the final 'first'
version, then that's good by me.
+1/-1 please people!
Rick
On June 22, 2015 8:19:32 AM Rick Taylor
Post by Rick Taylor
Okay, with a 4bit/4bit split of a single octet, we have 0-15 major
versions and 0-15 minor versions.
We already have implementations on version 0.14, and with a draft-15
expected, do you suggest a 3bit/5bit split?
This is in fact a unique (at least in my experience ) usage of version.
IMO the dlep version for the RFCed version would be 1.
Post by Rick Taylor
Why not just use
major.minor 8bits each? We don't have to worry about bytes over the
local link.
Yes, but you do need to worry about interoperability. If the WG really
wants to go down this path, you'll need some tight text defining how
versioning and version mismatches are handled.
Lou
Post by Rick Taylor
Cheers,
Rick
Post by Lou Berger
I have a really hard time understanding how there could be 2^16
interoperable versions of anything. But maybe dlep means something
different than the norm when refering to versions.
Can you/some explain a use case for more than a few, being really generious
say 10, version numbers?
Lou
Post by Henning Rogge
On Mon, Jun 22, 2015 at 1:00 PM, Rick Taylor
Post by Rick Taylor
Post by Lou Berger
Lots of options here. But recall UDP discovery is optional per current
spec.
Post by Lou Berger
Post by Henning Rogge
Post by Rick Taylor
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!
I see the point of holding the version number at a fixed offset in the
initial messages of the protocol, and it is something we can definitely
do for the UDP discovery messages, as Henning pointed out, they are
special anyway.
I am loathe to do it to the Initialization signals, as it adds special
case code and text. I think it is okay to allow an implementation *not*
using discovery to expect a process on the reserved address/port
combination to be using some version of DLEP, as long as later DLEP
versions ensure back compatibility.
We could maybe define that both for TCP and UDP the first two bytes
are a version number... after this we begin decoding signals/tlvs.
This sounds reasonable easy and consistent.
Henning Rogge
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Dearlove, Christopher (UK)
2015-06-22 14:08:04 UTC
Permalink
I like one rarely changing octet, but ...

So we've designed DLEP, it's version 0 or 1 (according to how you like numbering things).

Now let's consider an extension of what may well be the most common type, a new piece of information that a radio can report, with a new TLV etc.

We don't want that to update that version octet unless we really have to. And we may well not need to, if we behave like:

New radio, old router - ignore unrecognised TLV.

New router, old radio - either use a default value, or do something based on knowing that you don't know.

And that's the but, we need a specification that covers the unknown and missing cases. To be honest, I don't recall how well the draft covers that.

(If we have an extension that can't be so handled, then we're into a version change. But hopefully not often.)
--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________

T:  +44 (0)1245 242194  |  E: ***@baesystems.com

BAE Systems Applied Intelligence, Chelmsford Technology Park, Great Baddow, Chelmsford, Essex CM2 8HN.
www.baesystems.com/ai
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP


-----Original Message-----
From: manet [mailto:manet-***@ietf.org] On Behalf Of Rick Taylor
Sent: 22 June 2015 13:39
To: Lou Berger; Henning Rogge
Cc: manet-***@ietf.org; rtg-***@ietf.org; MANET IETF; manet-***@ietf.org; draft-ietf-manet-***@ietf.org
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14

----------------------! WARNING ! ---------------------- This message originates from outside our organisation, either from an external partner or from the internet.
Consider carefully whether you should click on any links, open any attachments or reply.
Follow the 'Report Suspicious Emails' link on IT matters for instructions on reporting suspicious email messages.
--------------------------------------------------------

*** WARNING ***
This message originates from outside our organization, either from an external partner or the internet. Consider carefully whether you should click on any links, open any attachments or reply. For additional information about Spearphishing, click here <http://intranet.ent.baesystems.com/howwework/security/spotlights/Pages/SpearphishingTips.aspx>. If you feel the email is suspicious, please follow this process. <http://intranet.ent.baesystems.com/howwework/security/spotlights/Documents/Dealing%20With%20Suspicious%20Emails.pdf>

Okay, I see your point - I have spent too long working with FOSS software where everything lurks at version 0.97 ;)

If the WG are happy with a single octet of 1 for the final 'first'
version, then that's good by me.

+1/-1 please people!

Rick
Post by Lou Berger
Post by Rick Taylor
Okay, with a 4bit/4bit split of a single octet, we have 0-15 major
versions and 0-15 minor versions.
We already have implementations on version 0.14, and with a draft-15
expected, do you suggest a 3bit/5bit split?
This is in fact a unique (at least in my experience ) usage of version.
IMO the dlep version for the RFCed version would be 1.
Post by Rick Taylor
Why not just use
major.minor 8bits each? We don't have to worry about bytes over the
local link.
Yes, but you do need to worry about interoperability. If the WG
really wants to go down this path, you'll need some tight text
defining how versioning and version mismatches are handled.
Lou
Post by Rick Taylor
Cheers,
Rick
Post by Lou Berger
I have a really hard time understanding how there could be 2^16
interoperable versions of anything. But maybe dlep means something
different than the norm when refering to versions.
Can you/some explain a use case for more than a few, being really
generious say 10, version numbers?
Lou
Post by Henning Rogge
On Mon, Jun 22, 2015 at 1:00 PM, Rick Taylor
Post by Rick Taylor
Post by Lou Berger
Lots of options here. But recall UDP discovery is optional per current
spec.
Post by Lou Berger
Post by Henning Rogge
Post by Rick Taylor
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!
I see the point of holding the version number at a fixed offset in
the initial messages of the protocol, and it is something we can
definitely do for the UDP discovery messages, as Henning pointed
out, they are special anyway.
I am loathe to do it to the Initialization signals, as it adds
special case code and text. I think it is okay to allow an
implementation *not* using discovery to expect a process on the
reserved address/port combination to be using some version of
DLEP, as long as later DLEP versions ensure back compatibility.
We could maybe define that both for TCP and UDP the first two bytes
are a version number... after this we begin decoding signals/tlvs.
This sounds reasonable easy and consistent.
Henning Rogge
_______________________________________________
manet mailing list
***@ietf.org
https://www.ietf.org/mailman/listinfo/manet


********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
Henning Rogge
2015-06-22 14:11:43 UTC
Permalink
On Mon, Jun 22, 2015 at 4:08 PM, Dearlove, Christopher (UK)
Post by Dearlove, Christopher (UK)
I like one rarely changing octet, but ...
So we've designed DLEP, it's version 0 or 1 (according to how you like numbering things).
Now let's consider an extension of what may well be the most common type, a new piece of information that a radio can report, with a new TLV etc.
New radio, old router - ignore unrecognised TLV.
New router, old radio - either use a default value, or do something based on knowing that you don't know.
And that's the but, we need a specification that covers the unknown and missing cases. To be honest, I don't recall how well the draft covers that.
You don't need a new version for a new extension... because you have
to announce your extension in Peer Initialization (ack).

If the other side doesn't support your extension, you are not allowed
to send its TLVs.

The only thing that would require a version change would be an
incompatible parser/generator behaviour like a change in the TLV
header fields or something else that breaks compatibility.

Hennning
Dearlove, Christopher (UK)
2015-06-22 14:14:22 UTC
Permalink
Good, that's what I hoped (and really should have checked).

Given that, one octet is enough. (Or you could even use a half octet and reserve the other half, just in case of something else wanted in future, such as some flags.)
--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________

T:  +44 (0)1245 242194  |  E: ***@baesystems.com

BAE Systems Applied Intelligence, Chelmsford Technology Park, Great Baddow, Chelmsford, Essex CM2 8HN.
www.baesystems.com/ai
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP



-----Original Message-----
From: manet [mailto:manet-***@ietf.org] On Behalf Of Henning Rogge
Sent: 22 June 2015 15:12
To: Dearlove, Christopher (UK)
Cc: MANET IETF
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14

----------------------! WARNING ! ---------------------- This message originates from outside our organisation, either from an external partner or from the internet.
Consider carefully whether you should click on any links, open any attachments or reply.
Follow the 'Report Suspicious Emails' link on IT matters for instructions on reporting suspicious email messages.
--------------------------------------------------------

*** WARNING ***
This message originates from outside our organization, either from an external partner or the internet. Consider carefully whether you should click on any links, open any attachments or reply. For additional information about Spearphishing, click here <http://intranet.ent.baesystems.com/howwework/security/spotlights/Pages/SpearphishingTips.aspx>. If you feel the email is suspicious, please follow this process. <http://intranet.ent.baesystems.com/howwework/security/spotlights/Documents/Dealing%20With%20Suspicious%20Emails.pdf>
Post by Dearlove, Christopher (UK)
I like one rarely changing octet, but ...
So we've designed DLEP, it's version 0 or 1 (according to how you like numbering things).
Now let's consider an extension of what may well be the most common type, a new piece of information that a radio can report, with a new TLV etc.
New radio, old router - ignore unrecognised TLV.
New router, old radio - either use a default value, or do something based on knowing that you don't know.
And that's the but, we need a specification that covers the unknown and missing cases. To be honest, I don't recall how well the draft covers that.
You don't need a new version for a new extension... because you have to announce your extension in Peer Initialization (ack).

If the other side doesn't support your extension, you are not allowed to send its TLVs.

The only thing that would require a version change would be an incompatible parser/generator behaviour like a change in the TLV header fields or something else that breaks compatibility.

Hennning

_______________________________________________
manet mailing list
***@ietf.org
https://www.ietf.org/mailman/listinfo/manet


********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
Henning Rogge
2015-06-22 14:16:44 UTC
Permalink
On Mon, Jun 22, 2015 at 4:14 PM, Dearlove, Christopher (UK)
Post by Dearlove, Christopher (UK)
Good, that's what I hoped (and really should have checked).
Given that, one octet is enough. (Or you could even use a half octet and reserve the other half, just in case of something else wanted in future, such as some flags.)
We could "easily" add flags by changing the version number and
appending an additional byte... hopefully it will not be necessary in
the future.

Henning
Dearlove, Christopher (UK)
2015-06-22 14:19:58 UTC
Permalink
Sure, but would be a bigger change.

(Am I seriously proposing the split octet? If I were an author I might. As a non-author I won't.)

--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________

T:  +44 (0)1245 242194  |  E: ***@baesystems.com

BAE Systems Applied Intelligence, Chelmsford Technology Park, Great Baddow, Chelmsford, Essex CM2 8HN.
www.baesystems.com/ai
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP



-----Original Message-----
From: Henning Rogge [mailto:***@gmail.com]
Sent: 22 June 2015 15:17
To: Dearlove, Christopher (UK)
Cc: MANET IETF
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14

----------------------! WARNING ! ---------------------- This message originates from outside our organisation, either from an external partner or from the internet.
Consider carefully whether you should click on any links, open any attachments or reply.
Follow the 'Report Suspicious Emails' link on IT matters for instructions on reporting suspicious email messages.
--------------------------------------------------------
Post by Dearlove, Christopher (UK)
Good, that's what I hoped (and really should have checked).
Given that, one octet is enough. (Or you could even use a half octet
and reserve the other half, just in case of something else wanted in
future, such as some flags.)
We could "easily" add flags by changing the version number and appending an additional byte... hopefully it will not be necessary in the future.

Henning
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
Rick Taylor
2015-06-22 14:25:08 UTC
Permalink
Post by Dearlove, Christopher (UK)
Sure, but would be a bigger change.
(Am I seriously proposing the split octet? If I were an author I might. As a non-author I won't.)
Stan and I have been convinced by the WG that the major minor split is
not needed.

Rick
Dearlove, Christopher (UK)
2015-06-22 14:26:16 UTC
Permalink
It wasn't a major/minor split I would have suggested, but a version/reserved split.
--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________

T:  +44 (0)1245 242194  |  E: ***@baesystems.com

BAE Systems Applied Intelligence, Chelmsford Technology Park, Great Baddow, Chelmsford, Essex CM2 8HN.
www.baesystems.com/ai
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP



-----Original Message-----
From: Rick Taylor [mailto:***@tropicalstormsoftware.com]
Sent: 22 June 2015 15:25
To: Dearlove, Christopher (UK); Henning Rogge
Cc: MANET IETF
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14

----------------------! WARNING ! ---------------------- This message originates from outside our organisation, either from an external partner or from the internet.
Consider carefully whether you should click on any links, open any attachments or reply.
Follow the 'Report Suspicious Emails' link on IT matters for instructions on reporting suspicious email messages.
--------------------------------------------------------
Post by Dearlove, Christopher (UK)
Sure, but would be a bigger change.
(Am I seriously proposing the split octet? If I were an author I
might. As a non-author I won't.)
Stan and I have been convinced by the WG that the major minor split is not needed.

Rick

********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
Rick Taylor
2015-06-22 14:31:51 UTC
Permalink
Post by Dearlove, Christopher (UK)
It wasn't a major/minor split I would have suggested, but a version/reserved split.
Given the text will say something along the lines of "1 octet, value 1"
then we have reserved 7 bits with value 0 already ;-)

Rick
Rick Taylor
2015-06-22 14:23:54 UTC
Permalink
Post by Henning Rogge
On Mon, Jun 22, 2015 at 4:14 PM, Dearlove, Christopher (UK)
Post by Dearlove, Christopher (UK)
Good, that's what I hoped (and really should have checked).
Given that, one octet is enough. (Or you could even use a half octet and reserve the other half, just in case of something else wanted in future, such as some flags.)
We could "easily" add flags by changing the version number and
appending an additional byte... hopefully it will not be necessary in
the future.
We hope the Extensions mechanism provides the functionality of flags in
a slightly more flexible way.

There is nothing to stop an implementation announcing an Extension who's
presence indicates nothing more than a Boolean value meaning "I do (or
do not) do this"

Rick
Rick Taylor
2015-06-22 14:22:05 UTC
Permalink
Thank you Henning, you beat me to it.

Chris, that is exactly what Extensions are for.

The only reason for a version 2 would be an incompatible change in the
wire protocol, such as changing field lengths.

Rick
Post by Henning Rogge
On Mon, Jun 22, 2015 at 4:08 PM, Dearlove, Christopher (UK)
Post by Dearlove, Christopher (UK)
I like one rarely changing octet, but ...
So we've designed DLEP, it's version 0 or 1 (according to how you like numbering things).
Now let's consider an extension of what may well be the most common type, a new piece of information that a radio can report, with a new TLV etc.
New radio, old router - ignore unrecognised TLV.
New router, old radio - either use a default value, or do something based on knowing that you don't know.
And that's the but, we need a specification that covers the unknown and missing cases. To be honest, I don't recall how well the draft covers that.
You don't need a new version for a new extension... because you have
to announce your extension in Peer Initialization (ack).
If the other side doesn't support your extension, you are not allowed
to send its TLVs.
The only thing that would require a version change would be an
incompatible parser/generator behaviour like a change in the TLV
header fields or something else that breaks compatibility.
Hennning
Rick Taylor
2015-06-22 12:36:08 UTC
Permalink
Comments inline...
Post by Lou Berger
I have a really hard time understanding how there could be 2^16
interoperable versions of anything. But maybe dlep means something
different than the norm when refering to versions.
Can you/some explain a use case for more than a few, being really generious
say 10, version numbers?
Lou
Post by Henning Rogge
On Mon, Jun 22, 2015 at 1:00 PM, Rick Taylor
Post by Rick Taylor
Post by Lou Berger
Lots of options here. But recall UDP discovery is optional per current spec.
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!
I see the point of holding the version number at a fixed offset in the
initial messages of the protocol, and it is something we can definitely
do for the UDP discovery messages, as Henning pointed out, they are
special anyway.
I am loathe to do it to the Initialization signals, as it adds special
case code and text. I think it is okay to allow an implementation *not*
using discovery to expect a process on the reserved address/port
combination to be using some version of DLEP, as long as later DLEP
versions ensure back compatibility.
We could maybe define that both for TCP and UDP the first two bytes
are a version number... after this we begin decoding signals/tlvs.
This sounds reasonable easy and consistent.
This sounds like a suggestion that the Peer_Init signals should use a
different header.

Given there are data items that are only used during initialization,
would people be totally against a different wire format for these
packets rather than the signal format?

Rick
Wiggins, David - 0665 - MITLL
2015-06-22 12:54:35 UTC
Permalink
A few comments near the end...
Post by Rick Taylor
Comments inline...
Post by Lou Berger
I have a really hard time understanding how there could be 2^16
interoperable versions of anything. But maybe dlep means something
different than the norm when refering to versions.
Can you/some explain a use case for more than a few, being really generious
say 10, version numbers?
Lou
Post by Henning Rogge
On Mon, Jun 22, 2015 at 1:00 PM, Rick Taylor
Post by Rick Taylor
Post by Lou Berger
Lots of options here. But recall UDP discovery is optional per current spec.
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!
I see the point of holding the version number at a fixed offset in the
initial messages of the protocol, and it is something we can definitely
do for the UDP discovery messages, as Henning pointed out, they are
special anyway.
I am loathe to do it to the Initialization signals, as it adds special
case code and text. I think it is okay to allow an implementation *not*
using discovery to expect a process on the reserved address/port
combination to be using some version of DLEP, as long as later DLEP
versions ensure back compatibility.
We could maybe define that both for TCP and UDP the first two bytes
are a version number... after this we begin decoding signals/tlvs.
This sounds reasonable easy and consistent.
This sounds like a suggestion that the Peer_Init signals should use a
different header.
I read Henning's proposal as being for all signals ("for TCP and UDP...").
Whether that's what he meant or not, I like the consistency and
simplicity of just having it in the same place for all signals.
Post by Rick Taylor
Given there are data items that are only used during initialization,
would people be totally against a different wire format for these
packets rather than the signal format?
Do you mean having Peer Init and Peer Init Ack would use something other
than data items to express the fields they need? That seems like a much
larger inconsistency to deal with than having the version number only in
some signals. I'd rather keep the format of these signals consistent with
the rest.
Post by Rick Taylor
Rick
David
Henning Rogge
2015-06-22 13:32:40 UTC
Permalink
On Mon, Jun 22, 2015 at 2:54 PM, Wiggins, David - 0665 - MITLL
Post by Wiggins, David - 0665 - MITLL
I read Henning's proposal as being for all signals ("for TCP and UDP...").
Whether that's what he meant or not, I like the consistency and
simplicity of just having it in the same place for all signals.
No, not for each signal... once for each incoming "network socket".

So once for the UDP packet (before you give the rest to the signal
processing code) and once for a TCP stream (before you start
processing signals).

I would not count them as part of the signals, more like a prefix
before the signal(s) begin.



About the version number thing...

do we really need the "major.minor" version number? We have broken
compatibility LOTS of times during the "0.x" draft phase, why not use
a one-byte version number and keep counting up?

Henning
Rick Taylor
2015-06-22 13:48:26 UTC
Permalink
Post by Henning Rogge
On Mon, Jun 22, 2015 at 2:54 PM, Wiggins, David - 0665 - MITLL
Post by Wiggins, David - 0665 - MITLL
I read Henning's proposal as being for all signals ("for TCP and UDP...").
Whether that's what he meant or not, I like the consistency and
simplicity of just having it in the same place for all signals.
No, not for each signal... once for each incoming "network socket".
So once for the UDP packet (before you give the rest to the signal
processing code) and once for a TCP stream (before you start
processing signals).
I would not count them as part of the signals, more like a prefix
before the signal(s) begin.
I would definitely only want the version numbers once. In each UDP
packet, and once on TCP connection start, not on every signal.

The question is, how to I describe that? Have an extra 1 octet header
used during initialization? Once I start writing that, why not expand
it out to include all those data items only used during initialization?

I'll come back with some ASCII art...
Post by Henning Rogge
About the version number thing...
do we really need the "major.minor" version number? We have broken
compatibility LOTS of times during the "0.x" draft phase, why not use
a one-byte version number and keep counting up?
I think I'm hearing consensus for a single octet, version 1.

Rick
Henning Rogge
2015-06-22 13:53:32 UTC
Permalink
On Mon, Jun 22, 2015 at 3:48 PM, Rick Taylor
Post by Rick Taylor
Post by Henning Rogge
No, not for each signal... once for each incoming "network socket".
So once for the UDP packet (before you give the rest to the signal
processing code) and once for a TCP stream (before you start
processing signals).
I would not count them as part of the signals, more like a prefix
before the signal(s) begin.
I would definitely only want the version numbers once. In each UDP
packet, and once on TCP connection start, not on every signal.
Agreed... up to 4 times until a DLEP session is completely working...

one in the UDP packets each, and one at the head of the TCP stream (in
both directions!)
Post by Rick Taylor
The question is, how to I describe that? Have an extra 1 octet header
used during initialization? Once I start writing that, why not expand
it out to include all those data items only used during initialization?
Whats about this?
Post by Rick Taylor
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | DLEP signal(s) ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Henning
Rick Taylor
2015-06-22 14:19:07 UTC
Permalink
Post by Henning Rogge
On Mon, Jun 22, 2015 at 3:48 PM, Rick Taylor
Post by Rick Taylor
Post by Henning Rogge
No, not for each signal... once for each incoming "network socket".
So once for the UDP packet (before you give the rest to the signal
processing code) and once for a TCP stream (before you start
processing signals).
I would not count them as part of the signals, more like a prefix
before the signal(s) begin.
I would definitely only want the version numbers once. In each UDP
packet, and once on TCP connection start, not on every signal.
Agreed... up to 4 times until a DLEP session is completely working...
one in the UDP packets each, and one at the head of the TCP stream (in
both directions!)
Post by Rick Taylor
The question is, how to I describe that? Have an extra 1 octet header
used during initialization? Once I start writing that, why not expand
it out to include all those data items only used during initialization?
Whats about this?
Post by Rick Taylor
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | DLEP signal(s) ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
That has the advantage of simplicity!

I tried to pack all the Peer_Init data items into a Peer_Init struct and
it just looked like a standard DLEP signal, but with strict ordering.

Actually, I'm still scratching my head to work out what the problem with
the current method is:

Byte(0) = Peer_Init/ACK
Bytes(1+2) = Length
Check length for sanity
Scan data items for Version, parse version.

Is the problem that people are worried that the TCP connection they have
made is not to a DLEP peer that they have a) discovered, or b)
configured. Remember this isn't some remote peer that has been met,
this is locally attached.

If we were discussing a file format, then I can see the advantage of
having some identifier at a well-known offset, but I'm unconvinced in
this case.

Rick
Ratliff, Stanley
2015-06-22 14:27:06 UTC
Permalink
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 10:19 AM
To: Henning Rogge
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Post by Henning Rogge
On Mon, Jun 22, 2015 at 3:48 PM, Rick Taylor
Post by Rick Taylor
Post by Henning Rogge
No, not for each signal... once for each incoming "network socket".
So once for the UDP packet (before you give the rest to the signal
processing code) and once for a TCP stream (before you start
processing signals).
I would not count them as part of the signals, more like a prefix
before the signal(s) begin.
I would definitely only want the version numbers once. In each UDP
packet, and once on TCP connection start, not on every signal.
Agreed... up to 4 times until a DLEP session is completely working...
one in the UDP packets each, and one at the head of the TCP stream (in
both directions!)
Post by Rick Taylor
The question is, how to I describe that? Have an extra 1 octet
header used during initialization? Once I start writing that, why
not expand it out to include all those data items only used during
initialization?
Post by Henning Rogge
Whats about this?
Post by Rick Taylor
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | DLEP signal(s) ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
That has the advantage of simplicity!
I tried to pack all the Peer_Init data items into a Peer_Init struct and it just
looked like a standard DLEP signal, but with strict ordering.
Actually, I'm still scratching my head to work out what the problem with the
Byte(0) = Peer_Init/ACK
Bytes(1+2) = Length
Check length for sanity
Scan data items for Version, parse version.
Is the problem
As I understand it, the problem is people are worried that, in order to parse for the version TLV, you have to know how to parse the signal (in general terms). A "substantial enough" (whatever that means) change in DLEP *might* render an implementation unable to "scan data items for Version, parse version".

I get slapped every time I've brought this up, but - sence we're only talking about 4 signals (Discovery, Offer, Peer_Init, Peer_Init_ACK), why not declare that Version MUST be the first TLV in those packets (and ONLY those packets)?

Regards,
Stan
Post by Dearlove, Christopher (UK)
that people are worried that the TCP connection they have
made is not to a DLEP peer that they have a) discovered, or b) configured.
Remember this isn't some remote peer that has been met, this is locally
attached.
If we were discussing a file format, then I can see the advantage of having
some identifier at a well-known offset, but I'm unconvinced in this case.
Rick
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Henning Rogge
2015-06-22 14:33:37 UTC
Permalink
Post by Ratliff, Stanley
As I understand it, the problem is people are worried that, in order to parse for the version TLV, you have to know how to parse the signal (in general terms). A "substantial enough" (whatever that means) change in DLEP *might* render an implementation unable to "scan data items for Version, parse version".
I get slapped every time I've brought this up, but - sence we're only talking about 4 signals (Discovery, Offer, Peer_Init, Peer_Init_ACK), why not declare that Version MUST be the first TLV in those packets (and ONLY those packets)?
And then we get "version 2" which extends the maximum length of
signals to 32 bit to allow some awesome faster than light
transmission.

If we think we can keep the current signal/version structure, we don't
need a version TLV at all. If we want to be careful, lets put it
outside our signal/tlv structure.

****

I just had a "lightly crazy" idea... if we really need backward
compatibility to current implementations, we could make the RFC
version (delivered in the first byte of UDP packet and TCP stream)
number 4...

because all the older versions had PEER Discovery/Initialization
messages at this place, which began with a 0 to 3.

This way (if someone needs it) its possible to produce a DLEP version
that understands both the DLEP-draft version (at least things since ~
draft 5-6) AND a DLEP RFC with a version number.

Henning
Ratliff, Stanley
2015-06-22 14:37:45 UTC
Permalink
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 10:34 AM
To: Ratliff, Stanley
Cc: Rick Taylor; Wiggins, David - 0665 - MITLL; Lou Berger; draft-ietf-manet-
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Post by Ratliff, Stanley
As I understand it, the problem is people are worried that, in order to parse
for the version TLV, you have to know how to parse the signal (in general
terms). A "substantial enough" (whatever that means) change in DLEP
*might* render an implementation unable to "scan data items for Version,
parse version".
Post by Ratliff, Stanley
I get slapped every time I've brought this up, but - sence we're only talking
about 4 signals (Discovery, Offer, Peer_Init, Peer_Init_ACK), why not declare
that Version MUST be the first TLV in those packets (and ONLY those
packets)?
And then we get "version 2" which extends the maximum length of signals to
32 bit to allow some awesome faster than light transmission.
From what I hear, there's *already* a push to extend the max signal length to 32 bits... And/or, if you've got to do something like that, allocate new code points for the newer Discovery & Init signals. With a 65K numbering space (earlier discussions), there will be room.

Doesn't TLS encode its version information *into* one of the early messages?

Regards,
Stan
Post by Dearlove, Christopher (UK)
If we think we can keep the current signal/version structure, we don't need a
version TLV at all. If we want to be careful, lets put it outside our signal/tlv
structure.
****
I just had a "lightly crazy" idea... if we really need backward compatibility to
current implementations, we could make the RFC version (delivered in the
first byte of UDP packet and TCP stream) number 4...
because all the older versions had PEER Discovery/Initialization messages at
this place, which began with a 0 to 3.
This way (if someone needs it) its possible to produce a DLEP version that
understands both the DLEP-draft version (at least things since ~ draft 5-6)
AND a DLEP RFC with a version number.
Henning
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Rick Taylor
2015-06-22 14:53:51 UTC
Permalink
Post by Ratliff, Stanley
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 10:34 AM
To: Ratliff, Stanley
Cc: Rick Taylor; Wiggins, David - 0665 - MITLL; Lou Berger; draft-ietf-manet-
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Post by Ratliff, Stanley
As I understand it, the problem is people are worried that, in order to parse
for the version TLV, you have to know how to parse the signal (in general
terms). A "substantial enough" (whatever that means) change in DLEP
*might* render an implementation unable to "scan data items for Version,
parse version".
Post by Ratliff, Stanley
I get slapped every time I've brought this up, but - sence we're only talking
about 4 signals (Discovery, Offer, Peer_Init, Peer_Init_ACK), why not declare
that Version MUST be the first TLV in those packets (and ONLY those
packets)?
And then we get "version 2" which extends the maximum length of signals to
32 bit to allow some awesome faster than light transmission.
From what I hear, there's *already* a push to extend the max signal length to 32 bits... And/or, if you've got to do something like that, allocate new code points for the newer Discovery & Init signals. With a 65K numbering space (earlier discussions), there will be room.
Doesn't TLS encode its version information *into* one of the early messages?
Yes it does, ClientHello has the version number.

I still don't see the problem.

Rick
Rick Taylor
2015-06-22 14:48:42 UTC
Permalink
Post by Ratliff, Stanley
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 10:19 AM
To: Henning Rogge
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Post by Henning Rogge
On Mon, Jun 22, 2015 at 3:48 PM, Rick Taylor
Post by Rick Taylor
Post by Henning Rogge
No, not for each signal... once for each incoming "network socket".
So once for the UDP packet (before you give the rest to the signal
processing code) and once for a TCP stream (before you start
processing signals).
I would not count them as part of the signals, more like a prefix
before the signal(s) begin.
I would definitely only want the version numbers once. In each UDP
packet, and once on TCP connection start, not on every signal.
Agreed... up to 4 times until a DLEP session is completely working...
one in the UDP packets each, and one at the head of the TCP stream (in
both directions!)
Post by Rick Taylor
The question is, how to I describe that? Have an extra 1 octet
header used during initialization? Once I start writing that, why
not expand it out to include all those data items only used during
initialization?
Post by Henning Rogge
Whats about this?
Post by Rick Taylor
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | DLEP signal(s) ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
That has the advantage of simplicity!
I tried to pack all the Peer_Init data items into a Peer_Init struct and it just
looked like a standard DLEP signal, but with strict ordering.
Actually, I'm still scratching my head to work out what the problem with the
Byte(0) = Peer_Init/ACK
Bytes(1+2) = Length
Check length for sanity
Scan data items for Version, parse version.
Is the problem
As I understand it, the problem is people are worried that, in order to parse for the version TLV, you have to know how to parse the signal (in general terms). A "substantial enough" (whatever that means) change in DLEP *might* render an implementation unable to "scan data items for Version, parse version".
I get slapped every time I've brought this up, but - sence we're only talking about 4 signals (Discovery, Offer, Peer_Init, Peer_Init_ACK), why not declare that Version MUST be the first TLV in those packets (and ONLY those packets)?
Grr... please let's not make some things ordered.

Rick
Ratliff, Stanley
2015-06-22 14:51:36 UTC
Permalink
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 10:49 AM
To: Ratliff, Stanley; Henning Rogge
Cc: Wiggins, David - 0665 - MITLL; Lou Berger; draft-ietf-manet-
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Post by Ratliff, Stanley
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 10:19 AM
To: Henning Rogge
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Post by Henning Rogge
On Mon, Jun 22, 2015 at 3:48 PM, Rick Taylor
Post by Rick Taylor
Post by Henning Rogge
No, not for each signal... once for each incoming "network socket".
So once for the UDP packet (before you give the rest to the signal
processing code) and once for a TCP stream (before you start
processing signals).
I would not count them as part of the signals, more like a prefix
before the signal(s) begin.
I would definitely only want the version numbers once. In each UDP
packet, and once on TCP connection start, not on every signal.
Agreed... up to 4 times until a DLEP session is completely working...
one in the UDP packets each, and one at the head of the TCP stream
(in both directions!)
Post by Rick Taylor
The question is, how to I describe that? Have an extra 1 octet
header used during initialization? Once I start writing that, why
not expand it out to include all those data items only used during
initialization?
Post by Henning Rogge
Whats about this?
Post by Rick Taylor
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | DLEP signal(s) ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
That has the advantage of simplicity!
I tried to pack all the Peer_Init data items into a Peer_Init struct
and it just looked like a standard DLEP signal, but with strict ordering.
Actually, I'm still scratching my head to work out what the problem
Byte(0) = Peer_Init/ACK
Bytes(1+2) = Length
Check length for sanity
Scan data items for Version, parse version.
Is the problem
As I understand it, the problem is people are worried that, in order to parse
for the version TLV, you have to know how to parse the signal (in general
terms). A "substantial enough" (whatever that means) change in DLEP
*might* render an implementation unable to "scan data items for Version,
parse version".
Post by Ratliff, Stanley
I get slapped every time I've brought this up, but - sence we're only talking
about 4 signals (Discovery, Offer, Peer_Init, Peer_Init_ACK), why not declare
that Version MUST be the first TLV in those packets (and ONLY those
packets)?
Grr... please let's not make some things ordered.
Tempest in a teapot... then let's just jettison the whole damned version check. You either support the protocol or you don't. Extensions are declared. The rest of this is mental gymnastics for sake of.... what? We're all just spinning the propellers on our beanies at this point, trying to see who can generate the most lift.


Stan
Post by Dearlove, Christopher (UK)
Rick
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Rick Taylor
2015-06-22 14:56:34 UTC
Permalink
Post by Ratliff, Stanley
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 10:49 AM
To: Ratliff, Stanley; Henning Rogge
Cc: Wiggins, David - 0665 - MITLL; Lou Berger; draft-ietf-manet-
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Post by Ratliff, Stanley
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 10:19 AM
To: Henning Rogge
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Post by Henning Rogge
On Mon, Jun 22, 2015 at 3:48 PM, Rick Taylor
Post by Rick Taylor
Post by Henning Rogge
No, not for each signal... once for each incoming "network socket".
So once for the UDP packet (before you give the rest to the signal
processing code) and once for a TCP stream (before you start
processing signals).
I would not count them as part of the signals, more like a prefix
before the signal(s) begin.
I would definitely only want the version numbers once. In each UDP
packet, and once on TCP connection start, not on every signal.
Agreed... up to 4 times until a DLEP session is completely working...
one in the UDP packets each, and one at the head of the TCP stream
(in both directions!)
Post by Rick Taylor
The question is, how to I describe that? Have an extra 1 octet
header used during initialization? Once I start writing that, why
not expand it out to include all those data items only used during
initialization?
Post by Henning Rogge
Whats about this?
Post by Rick Taylor
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | DLEP signal(s) ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
That has the advantage of simplicity!
I tried to pack all the Peer_Init data items into a Peer_Init struct
and it just looked like a standard DLEP signal, but with strict ordering.
Actually, I'm still scratching my head to work out what the problem
Byte(0) = Peer_Init/ACK
Bytes(1+2) = Length
Check length for sanity
Scan data items for Version, parse version.
Is the problem
As I understand it, the problem is people are worried that, in order to parse
for the version TLV, you have to know how to parse the signal (in general
terms). A "substantial enough" (whatever that means) change in DLEP
*might* render an implementation unable to "scan data items for Version,
parse version".
Post by Ratliff, Stanley
I get slapped every time I've brought this up, but - sence we're only talking
about 4 signals (Discovery, Offer, Peer_Init, Peer_Init_ACK), why not declare
that Version MUST be the first TLV in those packets (and ONLY those
packets)?
Grr... please let's not make some things ordered.
Tempest in a teapot... then let's just jettison the whole damned version check. You either support the protocol or you don't. Extensions are declared. The rest of this is mental gymnastics for sake of.... what? We're all just spinning the propellers on our beanies at this point, trying to see who can generate the most lift.
Lets leave the Version as a data item: 1 octet, version 1. If you can't
find the data item then it's not DLEP.

Rick
Ratliff, Stanley
2015-06-22 15:22:53 UTC
Permalink
Lets leave the Version as a data item: 1 octet, version 1. If you can't find the
data item then it's not DLEP.
Changing the version to a single octet and leaving everything else alone works for me.

Stan



_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Lou Berger
2015-06-22 18:10:53 UTC
Permalink
Do you mean leave version as a data item and encoded in any order? Not
exactly typical and means you are limiting the format of messages
carrying version numbers. (Think about how IP would work if version was
encoded as an IPv4 Option.)

Lou
Post by Ratliff, Stanley
Lets leave the Version as a data item: 1 octet, version 1. If you can't find the
data item then it's not DLEP.
Changing the version to a single octet and leaving everything else alone works for me.
Stan
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Lou Berger
2015-06-22 18:20:38 UTC
Permalink
Stan,
Post by Ratliff, Stanley
...
Tempest in a teapot... then let's just jettison the whole damned version check. You either support the protocol or you don't. Extensions are declared. The rest of this is mental gymnastics for sake of.... what? We're all just spinning the propellers on our beanies at this point, trying to see who can generate the most lift.
Stan
Actually, killing version numbers in the protocol is just fine
assuming that the well-known IANA assigned UDP and TCP ports are defined
to map to DLEPv1. Any future incompatible change would just need to get
new port numbers.

Lou

PS Yes, I have no idea if you were joking or not.
Henning Rogge
2015-06-22 18:26:37 UTC
Permalink
Post by Lou Berger
Stan,
Post by Ratliff, Stanley
...
Tempest in a teapot... then let's just jettison the whole damned version check. You either support the protocol or you don't. Extensions are declared. The rest of this is mental gymnastics for sake of.... what? We're all just spinning the propellers on our beanies at this point, trying to see who can generate the most lift.
Actually, killing version numbers in the protocol is just fine
assuming that the well-known IANA assigned UDP and TCP ports are defined
to map to DLEPv1. Any future incompatible change would just need to get
new port numbers.
I think it could work well, especially if we increase the tlv-value
length and maybe tlv-type length.

Henning
Ratliff, Stanley
2015-06-22 18:27:49 UTC
Permalink
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 2:21 PM
To: Ratliff, Stanley; Rick Taylor; Henning Rogge
IETF
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Stan,
Post by Ratliff, Stanley
...
Tempest in a teapot... then let's just jettison the whole damned version
check. You either support the protocol or you don't. Extensions are declared.
The rest of this is mental gymnastics for sake of.... what? We're all just
spinning the propellers on our beanies at this point, trying to see who can
generate the most lift.
Post by Ratliff, Stanley
Stan
Actually, killing version numbers in the protocol is just fine assuming that
the well-known IANA assigned UDP and TCP ports are defined to map to
DLEPv1. Any future incompatible change would just need to get new port
numbers.
Lou
PS Yes, I have no idea if you were joking or not.
Lou,

Sorry. I was (somewhat) joking... ;-)

I sort-of like the idea of allocating a new port number in the event that there's a radical enough change in DLEP to warrant a new version... But, I still go back to TLS - it introduces version numbers inside of TLS-parsable messages, I think. Rick mentioned that version information is in the ClientHello. So like Rick, I'm just not seeing the criticality.

Regards,
Stan


_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Lou Berger
2015-06-22 18:37:58 UTC
Permalink
Stan,
Post by Ratliff, Stanley
...
Post by Dearlove, Christopher (UK)
Actually, killing version numbers in the protocol is just fine assuming that
the well-known IANA assigned UDP and TCP ports are defined to map to
DLEPv1. Any future incompatible change would just need to get new port
numbers.
Lou
PS Yes, I have no idea if you were joking or not.
Lou,
Sorry. I was (somewhat) joking... ;-)
I sort-of like the idea of allocating a new port number in the event that there's a radical enough change in DLEP to warrant a new version... But, I still go back to TLS - it introduces version numbers inside of TLS-parsable messages, I think. Rick mentioned that version information is in the ClientHello. So like Rick, I'm just not seeing the criticality.
Regards,
Stan
Unless I'm mistaken It's in a fixed location in the message. I think
having to parse a full message to figure out what parser to use (which
may be based on version number) is, to say mildly, just a bit backwards.

Lou
Post by Ratliff, Stanley
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
BTW can you get rid of this, sort of annoying --- or do you have no
control?
Ratliff, Stanley
2015-06-22 18:41:56 UTC
Permalink
Unless I'm mistaken It's in a fixed location in the message. I think having to
parse a full message to figure out what parser to use (which may be based on
version number) is, to say mildly, just a bit backwards.
That said, I'm back to jettisoning the version checking altogether, and going with an alternate port assignment in the case where DLEP significantly changes. Other opinions?

Regards,
Stan

_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Wiggins, David - 0665 - MITLL
2015-06-22 19:17:04 UTC
Permalink
Post by Ratliff, Stanley
Unless I'm mistaken It's in a fixed location in the message. I think having to
parse a full message to figure out what parser to use (which may be based on
version number) is, to say mildly, just a bit backwards.
That said, I'm back to jettisoning the version checking altogether, and
going with an alternate port assignment in the case where DLEP
significantly changes. Other opinions?
Aren't ports considered scarce? If we're sure that this will fly with
whomever else in IETF/IANA has to approve, then I'm OK with it. Not my
favorite solution, but in the interest of progress, I defer to the draft
authors.

David
Rick Taylor
2015-06-23 08:30:36 UTC
Permalink
Post by Ratliff, Stanley
Unless I'm mistaken It's in a fixed location in the message. I think having to
parse a full message to figure out what parser to use (which may be based on
version number) is, to say mildly, just a bit backwards.
That said, I'm back to jettisoning the version checking altogether, and going with an alternate port assignment in the case where DLEP significantly changes. Other opinions?
If people think it will wash with the IESG et al. I'm happy to lose the
version numbers.

There is something quite appealing in a protocol that is
self-descriptive enough to not require versioning.

Rick
MATTY, Steven
2015-06-23 08:41:57 UTC
Permalink
Hi

I would prefer to stick with a single known port and keep version checking in.
If a future DLEPv2 implementation wants to remain backwards-compatible with
v1 then it will need to then have to be listening on two ports. And hey, if we get
to DLEP v10 or whatever that could be quite a mess! Also if there are a number
of firewalls in your network then you'll have the [admittedly small] overhead of
having to open another port.

I don't see the issue in just keeping DLEP Version placement as-is, but narrowing
the field width to 8 bits.

Just my tuppence ha'penny...

Regards

Steve
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 7:42 PM
To: Lou Berger; Rick Taylor; Henning Rogge
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Unless I'm mistaken It's in a fixed location in the message. I think having to
parse a full message to figure out what parser to use (which may be based
on
version number) is, to say mildly, just a bit backwards.
That said, I'm back to jettisoning the version checking altogether, and going
with an alternate port assignment in the case where DLEP significantly
changes. Other opinions?
Regards,
Stan
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
This email (including any attachments) may contain confidential
and/or privileged information or information otherwise protected
from disclosure. If you are not the intended recipient, please
notify the sender immediately, do not copy this message or any
attachments and do not use it for any purpose or disclose its
content to any person, but delete this message and any attachments
from your system. Airbus Defence and Space Limited disclaims any and all liability if this email transmission was virus corrupted,
altered or falsified.
-o-
Airbus Defence and Space Limited, Registered in England and Wales No. 2449259
Registered Office:
Gunnels Wood Road, Stevenage, Hertfordshire, SG1 2AS, England
Dearlove, Christopher (UK)
2015-06-23 08:47:25 UTC
Permalink
A single octet with version number that's the very first thing (in what I'd still prefer to call a message) would be what I'd suggest too. It will pass the IESG, where a whole "we could use multiple ports" might not, and would have the disadvantage noted below. And this isn't an over-the-air MANET signal where every octet counts.
--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________

T:  +44 (0)1245 242194  |  E: ***@baesystems.com

BAE Systems Applied Intelligence, Chelmsford Technology Park, Great Baddow, Chelmsford, Essex CM2 8HN.
www.baesystems.com/ai
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP



-----Original Message-----
From: manet [mailto:manet-***@ietf.org] On Behalf Of MATTY, Steven
Sent: 23 June 2015 09:42
To: 'Ratliff, Stanley'; Lou Berger; Rick Taylor; Henning Rogge
Cc: MANET IETF; draft-ietf-manet-***@ietf.org
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14

----------------------! WARNING ! ---------------------- This message originates from outside our organisation, either from an external partner or from the internet.
Consider carefully whether you should click on any links, open any attachments or reply.
Follow the 'Report Suspicious Emails' link on IT matters for instructions on reporting suspicious email messages.
--------------------------------------------------------

*** WARNING ***
This message originates from outside our organization, either from an external partner or the internet. Consider carefully whether you should click on any links, open any attachments or reply. For additional information about Spearphishing, click here <http://intranet.ent.baesystems.com/howwework/security/spotlights/Pages/SpearphishingTips.aspx>. If you feel the email is suspicious, please follow this process. <http://intranet.ent.baesystems.com/howwework/security/spotlights/Documents/Dealing%20With%20Suspicious%20Emails.pdf>

Hi

I would prefer to stick with a single known port and keep version checking in.
If a future DLEPv2 implementation wants to remain backwards-compatible with
v1 then it will need to then have to be listening on two ports. And hey, if we get to DLEP v10 or whatever that could be quite a mess! Also if there are a number of firewalls in your network then you'll have the [admittedly small] overhead of having to open another port.

I don't see the issue in just keeping DLEP Version placement as-is, but narrowing the field width to 8 bits.

Just my tuppence ha'penny...

Regards

Steve
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 7:42 PM
To: Lou Berger; Rick Taylor; Henning Rogge
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Post by Lou Berger
Unless I'm mistaken It's in a fixed location in the message. I think
having to parse a full message to figure out what parser to use
(which may be based
on
Post by Lou Berger
version number) is, to say mildly, just a bit backwards.
That said, I'm back to jettisoning the version checking altogether, and
going with an alternate port assignment in the case where DLEP
significantly changes. Other opinions?
Regards,
Stan
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary and/or
confidential. It is intended solely for the use of the individual or
entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email in
error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this
email in error, please delete it and immediately notify the sender.
_____________________________________________________
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
This email (including any attachments) may contain confidential and/or privileged information or information otherwise protected from disclosure. If you are not the intended recipient, please notify the sender immediately, do not copy this message or any attachments and do not use it for any purpose or disclose its content to any person, but delete this message and any attachments from your system. Airbus Defence and Space Limited disclaims any and all liability if this email transmission was virus corrupted, altered or falsified.
-o-
Airbus Defence and Space Limited, Registered in England and Wales No. 2449259 Registered Office:
Gunnels Wood Road, Stevenage, Hertfordshire, SG1 2AS, England

_______________________________________________
manet mailing list
***@ietf.org
https://www.ietf.org/mailman/listinfo/manet


********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
Rick Taylor
2015-06-23 09:19:36 UTC
Permalink
Post by Dearlove, Christopher (UK)
A single octet with version number that's the very first thing (in what I'd still prefer to call a message) would be what I'd suggest too. It will pass the IESG, where a whole "we could use multiple ports" might not, and would have the disadvantage noted below. And this isn't an over-the-air MANET signal where every octet counts.
I still don't actually see what the problem is with the way we do
versioning at the moment.

There are 5 implementations known to me, 2 pairs at least interoperate,
and at no point have I had feedback from the implementers saying the
version scheme is weird or difficult.

Currently we have a version number, that is included in all the right
signals. This discussion seems to have highlighted that it is probably
irrelevant.

Frankly, I can delete the text, or I can leave it in, but at this point
I don't feel the need to change what we have (a consistent flexible
format) to something that seems clunky (adding a special case number)
for what appears to be other peoples personal preference.

Sorry that sounds grumpy, but I think we are getting lost in the long
grass here.

Cheers,

Rick

...channelling my inner Stan
MATTY, Steven
2015-06-23 09:23:22 UTC
Permalink
+1 to this, there are perhaps more important issues that deserve the authors' attention!
Post by Dearlove, Christopher (UK)
-----Original Message-----
[..snip..]
Post by Dearlove, Christopher (UK)
I still don't actually see what the problem is with the way we do
versioning at the moment.
There are 5 implementations known to me, 2 pairs at least interoperate,
and at no point have I had feedback from the implementers saying the
version scheme is weird or difficult.
Currently we have a version number, that is included in all the right
signals. This discussion seems to have highlighted that it is probably
irrelevant.
Frankly, I can delete the text, or I can leave it in, but at this point
I don't feel the need to change what we have (a consistent flexible
format) to something that seems clunky (adding a special case number)
for what appears to be other peoples personal preference.
Sorry that sounds grumpy, but I think we are getting lost in the long
grass here.
Cheers,
Rick
This email (including any attachments) may contain confidential
and/or privileged information or information otherwise protected
from disclosure. If you are not the intended recipient, please
notify the sender immediately, do not copy this message or any
attachments and do not use it for any purpose or disclose its
content to any person, but delete this message and any attachments
from your system. Airbus Defence and Space Limited disclaims any and all liability if this email transmission was virus corrupted,
altered or falsified.
-o-
Airbus Defence and Space Limited, Registered in England and Wales No. 2449259
Registered Office:
Gunnels Wood Road, Stevenage, Hertfordshire, SG1 2AS, England
Rick Taylor
2015-06-23 09:42:40 UTC
Permalink
Post by MATTY, Steven
+1 to this, there are perhaps more important issues that deserve the authors' attention!
Given you're one of the interoperating implementers Steve, I think that
counts as +10

Rick
Post by MATTY, Steven
Post by Dearlove, Christopher (UK)
-----Original Message-----
[..snip..]
Post by Dearlove, Christopher (UK)
I still don't actually see what the problem is with the way we do
versioning at the moment.
There are 5 implementations known to me, 2 pairs at least interoperate,
and at no point have I had feedback from the implementers saying the
version scheme is weird or difficult.
Currently we have a version number, that is included in all the right
signals. This discussion seems to have highlighted that it is probably
irrelevant.
Frankly, I can delete the text, or I can leave it in, but at this point
I don't feel the need to change what we have (a consistent flexible
format) to something that seems clunky (adding a special case number)
for what appears to be other peoples personal preference.
Sorry that sounds grumpy, but I think we are getting lost in the long
grass here.
Cheers,
Rick
This email (including any attachments) may contain confidential
and/or privileged information or information otherwise protected
from disclosure. If you are not the intended recipient, please
notify the sender immediately, do not copy this message or any
attachments and do not use it for any purpose or disclose its
content to any person, but delete this message and any attachments
from your system. Airbus Defence and Space Limited disclaims any and all liability if this email transmission was virus corrupted,
altered or falsified.
-o-
Airbus Defence and Space Limited, Registered in England and Wales No. 2449259
Gunnels Wood Road, Stevenage, Hertfordshire, SG1 2AS, England
Lou Berger
2015-06-23 11:00:08 UTC
Permalink
Rick,
Post by Rick Taylor
Post by Dearlove, Christopher (UK)
A single octet with version number that's the very first thing (in what I'd still prefer to call a message) would be what I'd suggest too. It will pass the IESG, where a whole "we could use multiple ports" might not, and would have the disadvantage noted below. And this isn't an over-the-air MANET signal where every octet counts.
I still don't actually see what the problem is with the way we do
versioning at the moment.
Protocol versioning is a pretty typical and useful mechanism that allow
for significant changes of a protocol. In practice, most protocols stay
with the same version for a long time. But let's consider cases where
the protocol goes through a major change, significant enough to warrant
a version change. One driver we've seen in other protocols is changing
the basic formats used by the protocol -- this means a new parser. To
facilitate and simplify such changes, the version number is typically
placed in (1) a *fixed location* and (2) near the *beginning* of the
protocol message.

Again, consider IP as an example. IP's version number is the first
thing on the wire. Receivers of different versions need only look at
the 1st field to determine which parser to use (or which versions to
drop). This approach allows maximum flexibility between versions.

The problem I see with the current definition is it (1) requires parsing
at a fairly deep level to find the version and (2) version can be
anywhere in the message/signal. IMO this eliminates the primary values
of the version number -- and simply doesn't seem thought through. There
may be some value, but I'm not sure really what.
Post by Rick Taylor
There are 5 implementations known to me, 2 pairs at least interoperate,
and at no point have I had feedback from the implementers saying the
version scheme is weird or difficult.
I suspect that if you show this to the IESG or IAB in its current form
most will view it as at least odd. I'd be surprised if it's not blocked
by at least one AD.
Post by Rick Taylor
Currently we have a version number, that is included in all the right
signals. This discussion seems to have highlighted that it is probably
irrelevant.
Frankly, I can delete the text, or I can leave it in, but at this point
I don't feel the need to change what we have (a consistent flexible
format) to something that seems clunky (adding a special case number)
And this is what lead to the port-based version solution.
Post by Rick Taylor
for what appears to be other peoples personal preference.
I'm guessing this would be me. I actually don't have any real
preferences related to this protocol, I do have opinions on what is
good/bad to see in a protocol -- and have been asked to share them with
the AD/chairs/WG WRT this protocol. I certainly have no issue with the
WG deciding that my opinion is wrong or irrelevant. They are, after
all, just my opinions.

That said, per the routing review process, any item that the reviewer
has flagged as a Major item is expected to be discussed with the AD
(Alvaro) at some point. Often the Major issues are resolved with the
reviewer and the AD doesn't become involved. In general, the
distinction I made in choosing between Major and Minor issues was made
based on what I thought would end up being either (a) major
interoperability issues or (b) likely to be raised as a blocking issue
by the IESG. In this case, I believe (b) applies.

If/when it does come up in AD/IESG/IETF review, and if I was the one who
needed to defend the protocol, my answer would be that when the parser
changes to that degree a new DLEP port number should be used. This may
or may not fly. You can always ask the AD to weigh in.
Post by Rick Taylor
Sorry that sounds grumpy, but I think we are getting lost in the long
grass here.
No problem from my end. I wouldn't be happy receiving a review of a
protocol that I worked long and hard on like the one I sent. So some
grumpiness was anticipated;-)

-- In all seriousness, I think having such discussion is exactly what
these routing reviews should/are expected to generate.

Lou
Post by Rick Taylor
Cheers,
Rick
...channelling my inner Stan
Rick Taylor
2015-06-23 08:56:05 UTC
Permalink
Steve,

I can completely see where you are coming from, but can I pose this
question:

What is the difference between a Version data item, used at Peer Init,
and an Extension data item, used at Peer Init, that says "Core + this
new stuff"?

The only version-breaking changes to DLEP as it stands is to alter the
fields of the signal and data item headers, and given we are increasing
all of them now to 16bits, I don't believe we are going to run out of
space soon.

Even if we did run out of space in the future, there is nothing to
prevent a future DLEP extension of "Very big fields", announced using
the existing mechanism, and taking effect only if both peers agree.

I understand that dropping the version number seems unnatural, but it
has proven to work with several protocols and formats to date (JSON for
example), and protocols with a solid extension mechanism last for a very
long time (e.g. SMTP)

I predict that if a major issue is found with DLEP, it will not be a
fault with the wire protocol, but a fault with the methodology, and that
will probably result in an entirely new protocol.

Rick
Post by MATTY, Steven
Hi
I would prefer to stick with a single known port and keep version checking in.
If a future DLEPv2 implementation wants to remain backwards-compatible with
v1 then it will need to then have to be listening on two ports. And hey, if we get
to DLEP v10 or whatever that could be quite a mess! Also if there are a number
of firewalls in your network then you'll have the [admittedly small] overhead of
having to open another port.
I don't see the issue in just keeping DLEP Version placement as-is, but narrowing
the field width to 8 bits.
Just my tuppence ha'penny...
Regards
Steve
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Monday, June 22, 2015 7:42 PM
To: Lou Berger; Rick Taylor; Henning Rogge
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Unless I'm mistaken It's in a fixed location in the message. I think having to
parse a full message to figure out what parser to use (which may be based
on
version number) is, to say mildly, just a bit backwards.
That said, I'm back to jettisoning the version checking altogether, and going
with an alternate port assignment in the case where DLEP significantly
changes. Other opinions?
Regards,
Stan
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
This email (including any attachments) may contain confidential
and/or privileged information or information otherwise protected
from disclosure. If you are not the intended recipient, please
notify the sender immediately, do not copy this message or any
attachments and do not use it for any purpose or disclose its
content to any person, but delete this message and any attachments
from your system. Airbus Defence and Space Limited disclaims any and all liability if this email transmission was virus corrupted,
altered or falsified.
-o-
Airbus Defence and Space Limited, Registered in England and Wales No. 2449259
Gunnels Wood Road, Stevenage, Hertfordshire, SG1 2AS, England
MATTY, Steven
2015-06-23 09:20:45 UTC
Permalink
Hi Rick

That's a fair point and the example you give works well to probably
accommodate most of any likely tweaks to DLEP. I guess my concern
is with the future unknown. Once DLEP is out in the wild amongst the masses,
then who knows what potentially vital and version-breaking changes may
arise? Preserving some version information would perhaps go some way
to ensure v1 implementations don't interfere with v2 etc. (with a downside
in that we may be unnecessarily inhibiting forward-compatibility).

As I'm fairly new to this game, I'm happy to bow to the elders :)

Regards

Steve
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Tuesday, June 23, 2015 9:56 AM
To: MATTY, Steven; 'Ratliff, Stanley'; Lou Berger; Henning Rogge
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Steve,
I can completely see where you are coming from, but can I pose this
What is the difference between a Version data item, used at Peer Init,
and an Extension data item, used at Peer Init, that says "Core + this
new stuff"?
The only version-breaking changes to DLEP as it stands is to alter the
fields of the signal and data item headers, and given we are increasing
all of them now to 16bits, I don't believe we are going to run out of
space soon.
Even if we did run out of space in the future, there is nothing to
prevent a future DLEP extension of "Very big fields", announced using
the existing mechanism, and taking effect only if both peers agree.
I understand that dropping the version number seems unnatural, but it
has proven to work with several protocols and formats to date (JSON for
example), and protocols with a solid extension mechanism last for a very
long time (e.g. SMTP)
I predict that if a major issue is found with DLEP, it will not be a
fault with the wire protocol, but a fault with the methodology, and that
will probably result in an entirely new protocol.
Rick
Post by MATTY, Steven
Hi
I would prefer to stick with a single known port and keep version checking
in.
Post by MATTY, Steven
If a future DLEPv2 implementation wants to remain backwards-compatible
with
Post by MATTY, Steven
v1 then it will need to then have to be listening on two ports. And hey, if we
get
Post by MATTY, Steven
to DLEP v10 or whatever that could be quite a mess! Also if there are a
number
Post by MATTY, Steven
of firewalls in your network then you'll have the [admittedly small]
overhead of
Post by MATTY, Steven
having to open another port.
I don't see the issue in just keeping DLEP Version placement as-is, but
narrowing
Post by MATTY, Steven
the field width to 8 bits.
Just my tuppence ha'penny...
Regards
Steve
Post by Dearlove, Christopher (UK)
-----Original Message-----
Stanley
Post by MATTY, Steven
Post by Dearlove, Christopher (UK)
Sent: Monday, June 22, 2015 7:42 PM
To: Lou Berger; Rick Taylor; Henning Rogge
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Unless I'm mistaken It's in a fixed location in the message. I think having
to
Post by MATTY, Steven
Post by Dearlove, Christopher (UK)
parse a full message to figure out what parser to use (which may be
based
Post by MATTY, Steven
Post by Dearlove, Christopher (UK)
on
version number) is, to say mildly, just a bit backwards.
That said, I'm back to jettisoning the version checking altogether, and going
with an alternate port assignment in the case where DLEP significantly
changes. Other opinions?
Regards,
Stan
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
This email (including any attachments) may contain confidential
and/or privileged information or information otherwise protected
from disclosure. If you are not the intended recipient, please
notify the sender immediately, do not copy this message or any
attachments and do not use it for any purpose or disclose its
content to any person, but delete this message and any attachments
from your system. Airbus Defence and Space Limited disclaims any and all
liability if this email transmission was virus corrupted,
Post by MATTY, Steven
altered or falsified.
-o-
Airbus Defence and Space Limited, Registered in England and Wales No.
2449259
Post by MATTY, Steven
Gunnels Wood Road, Stevenage, Hertfordshire, SG1 2AS, England
This email (including any attachments) may contain confidential
and/or privileged information or information otherwise protected
from disclosure. If you are not the intended recipient, please
notify the sender immediately, do not copy this message or any
attachments and do not use it for any purpose or disclose its
content to any person, but delete this message and any attachments
from your system. Airbus Defence and Space Limited disclaims any and all liability if this email transmission was virus corrupted,
altered or falsified.
-o-
Airbus Defence and Space Limited, Registered in England and Wales No. 2449259
Registered Office:
Gunnels Wood Road, Stevenage, Hertfordshire, SG1 2AS, England
Wiggins, David - 0665 - MITLL
2015-06-22 14:53:36 UTC
Permalink
Post by Rick Taylor
Post by Henning Rogge
On Mon, Jun 22, 2015 at 3:48 PM, Rick Taylor
Post by Rick Taylor
Post by Henning Rogge
No, not for each signal... once for each incoming "network socket".
So once for the UDP packet (before you give the rest to the signal
processing code) and once for a TCP stream (before you start
processing signals).
I would not count them as part of the signals, more like a prefix
before the signal(s) begin.
I would definitely only want the version numbers once. In each UDP
packet, and once on TCP connection start, not on every signal.
Agreed... up to 4 times until a DLEP session is completely working...
one in the UDP packets each, and one at the head of the TCP stream (in
both directions!)
Post by Rick Taylor
The question is, how to I describe that? Have an extra 1 octet header
used during initialization? Once I start writing that, why not expand
it out to include all those data items only used during initialization?
Whats about this?
Post by Rick Taylor
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | DLEP signal(s) ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
That has the advantage of simplicity!
So let me see if I understand this proposal. In the Peer Discovery and
Peer Offer signals, we'd add the version to the signal header. When the
TCP connection is made, but before any signals are sent, each side sends
their one-byte version number. After that, signals do not contain a
version.

If that's right, I count three different ways of handling the version.
The last one is a no-op, but still, different from the others. I agree
that this would work, but it sure seems simpler to me to just put version
as a fixed part of the signal header of all signals.

David
Rick Taylor
2015-06-22 12:25:54 UTC
Permalink
Oops, misread a bit, comments inline...
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- The data and signal type fields are both 8 bits. This seems
pretty small, particularly the data type field. Given this is a
control protocol, I think a larger (at least data type) field
would provide better "future proofing".
So you would like to move BOTH the type and the length fields of the
TLVs to 16 bit?
I'd probably enlarge data items and leave signal type alone.
Alternatively you can plan to do something ugly down the road, like type
255 means look in value field for an extended type field - yuck.
See comments above.
I misread this as length field as 16bit. I have no problem with a 16bit
signal/data item id, as it would allow more space for experimental
assignments. But, we have yet to use more than 23 ids.

Rick
Lou Berger
2015-06-22 18:08:20 UTC
Permalink
Rick,

Thanks for the response. See below.
Post by Rick Taylor
...
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
...
- The length field of the generic data item (i.e., TLV) is only 8
bits. While 255 bytes (assuming that this is the unit of measure,
which BTW isn't specified) is big enough today, allowing for
larger will greatly simplify things when 255 isn't enough. --
We've run into this in RSVP and it's a real pain.
On the other side the largest data item we have at the moment is 18
bytes (IPv6 connection point). I am not really seeing lots of
use-cases for large data items in DLEP.
My experience in the past has been that unknown uses show up later and
make this an issue that needs to be solved by some ugly semantic
fragmentation, so if possible, I think it should be fixed.
Post by Henning Rogge
Still, changing the TLV length to 16 bit would be trivial to do... but
would this mean we also should change the signal length field to 4
bytes?
I wasn't suggesting this and I don't think so. 2^16 is a pretty big
message.
There is nothing stopping an extension of the data item length to 2^16
octets, but as Henning pointed out, that would suggest an increase of
the signal length field to 2^32 (as signals 'contain' data items).
I think both being 2^16 is fine. It just means data items have a length
constraint that is less than the field size. Nothing unique in that.
Post by Rick Taylor
1) We have no data items > ~20 octets.
2) We wanted to keep the data items and signals 'short and sweet' in
form. An implementation could use small stack allocated buffers in
embedded hardware rather than worrying about bigger blocks of memory.
But: Adding big data items later would be more difficult.
Note: There is no 'bits on the wire' performance concerns here, DLEP is
over the local link.
There is a third way: If the length field in the signal is replaced
with a count field, then both can be kept at 16 bits, but it makes
parsing more complicated.
Can I ask for some +1/-1's from the list on this one please? It is not
a major change to the document.
My experience is that usage of successful protocols go beyond what's
originally envisioned. So unless the constraint is important I'd "be
liberal" here and go for the larger size.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- Version number is currently defined as a data item. This means a
signal (i.e., message) needs to be potentially fully parsed to
discover what version is being used. This precludes basic format
changes to the protocol. Perhaps the Discovery and Init Signals
should be special cased to include version in their formats. (And
shorten version to 8 bits from 32, as mentioned below).
Putting it into the UDP based discovery packets as a "header" could
work... they are a bit special anyways (UDP) and we don't need to
repeat the version later.
Lots of options here. But recall UDP discovery is optional per current spec.
I see no problem with shortening version to 16 bits (major octet, minor
octet) I never want to see DLEP version 65538.0!
I see the point of holding the version number at a fixed offset in the
initial messages of the protocol, and it is something we can definitely
do for the UDP discovery messages, as Henning pointed out, they are
special anyway.
I am loathe to do it to the Initialization signals, as it adds special
case code and text. I think it is okay to allow an implementation *not*
using discovery to expect a process on the reserved address/port
combination to be using some version of DLEP, as long as later DLEP
versions ensure back compatibility.
...
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- TCP session management is not defined, nor is the relationship
o Closing the TCP session is only mentioned in one place and in a
way that is inconsistent with the expected protocol behavior
(close TCP before ACK is received).
Maybe this should be "closing the DLEP session and not using the
active TCP session anymore" ?
Post by Lou Berger
o What happens when a DLEP session is terminated, can the TCP
session be reused or must it be closed too?
No, I think the DLEP strategy is "start from scratch"... when you
terminate a DLEP session you go back to the discovery mechanism to
start a new one.
Whichever reasonable approach is taken it just needs to be explicitly
documented.
We favour a start from scratch approach. But it does need to explicitly
stated somewhere.
WFM, just needs to be documented.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- There is no transaction model defined. For example, it's
completely unclear if only one unacknowledged Signal allowed at a
time, or perhaps just one per signal type is allowed, or perhaps
there are no restrictions. This needs to be explicit.
I think we don't need restrictions here because of TCP. The other side
WILL answer to eachof our signals or the TCP session will be
terminated.
I don't think TCP helps (or hurts here). This is a question of what
different implementations will choose to do / support WRT signals of the
same or different types being processed in parallel.
Particularly with the Request signals, there is a weakness in the text
about transactions that needs to be addressed. This is one of those
areas where those involved early on have a clear idea, but it isn't
clear in the text.
thanks
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- What is the purpose of retries and timeouts over TCP? Retries
aren't needed over TCPs and it's unclear whey they are being used.
We want to know when the connection between radio and router is
lost... this can take a LONG time when the router is mostly listening
to the Radio (TCP timeout is much to long for our use-case), so we use
the Heartbeats.
This comment relates to the per signal acks and retries. I didn't
include the connection failure detection covered by the heartbeat signal
in this comment.
The retries and heartbeats are to detect a failure in the process using
the TCP connection, rather than a failure of the connection itself.
From experience in the MANET space, complex routers and radios can
crash internally/lose control plane long before the TCP session times out.
Again, this is *not* the point I raised.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- The higher level implications of ACKs, over TCP, isn't really
clear. It seems ACKs are defined for multiple purposes: reliable
transport, transaction acknowledgment and transaction results. Of
course the first isn't needed, and implications of the others
should be clear. For example, in section 7.10, why would there be
a retry when receiving a Destination Up ACK signal indicating an
error?
The DLEP "ACK Signals" are more a response to a "request signal"...
transaction acknowledgement and result.
ACKs are intended as an processing acknowledgement rather than a receipt
acknowledgement, i.e. "I have done/not done what you asked".
Okay, I think calling them something like responses rather than acks
would clarify this.

And the purpose of retries is???
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- There is no discussion on scaling considerations. Are there really
none? For example, how often might be appropriate to issue/limit
Peer Updates based to changes in link quality, or how to handle
the case where a large number (all or most) of destinations go
down.
Just send as fast as you want and let TCP (buffer) take care of the
rest... both Destination up/down are small signals, so it shouldn't be
a problem.
The assumptions behind this "shouldn't part of this" is what should be
discussed...
Yes, there is no text about rate limiting updates. Not from a TCP
datarate perspective, but from a processing perspective. We don't
really want to predict the performance of processors by stating hard
rules on rate-limiting.
This only applies to Destination_Updates, as everything else is
throttled by waiting for ACKs. (Made clearer when some text on
transactions is put in)
Seems like some discussion on this is warranted.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
And you are only allowed to send Destination Updates when
you received the Destination ACK.
Where is this restriction specified? I don't recall seeing it.
It isn't mentioned, but is expected. The text will have to be improved.
I think there is a need for a section on transactions.
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- There are 13 places where the protocol allows implementation to
define their own 'heuristics'. Some of these seem unnecessary due
to the TCP point raised above, but any that remain in the protocol
should be fully specified to ensure predictable/consistent
behavior from implementations.
No comment on this one.
As with rate-limiting, this is a can of worms we have intentionally not
opened. We will have a careful look at every place heuristics are
mentioned and when possible suggest some sensible defaults.
I think this will be an interoperability and conformance testing
nightmare. Also, keep in mind a standard helps users know what they
should expect from an implementation / vendor and this leaves major
behaviors wide open .
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- Data Items are defined for "Extensions" and "Experimental
Definition" (Sections 8.7 and 8.8). Both seem to support for
optional mechanisms, but the former uses assigned numeric values,
why the latter uses UTF-8 strings.
o What, if any, is the intended distinction/relationship between
these?
o How does an "Experimental Definition" become standardized?
As far as I understand this "Experimental Definition" is something you
use in the lab... you can have a maximum of one experiment for DLEP,
Interesting -- where is this restriction defined? Section 7.3 says
that "one or more" are allowed.
Post by Henning Rogge
so this is more to make sure your special "work in progress" code does
not collide too hard with a standard radio/router.
It's pretty unclear from the spec how experimental definitions are to be
used -- or if they belong in standards track document at all.
Post by Henning Rogge
On the other side you can support as many "Extensions" as you want...
and I expect this WG to standardize a few additional of them after
DLEP becomes a RFC.
okay, look forward to seeing an IANA allocation policy for these.
I have covered this in another mail, so I won't repeat. (see Section 11.6)
okay, will go looking for it.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- Sections 8.19 and 8.20 define "Resources" related Data Items. The
definition related to these basically says a resources is "An
8-bit integer percentage, 0-100, representing the amount of
resources allocated to receiving|transmitting data.". If I were
implementing this protocol, I'd have no idea how to produce,
update or use this information. I think there is some missing
informative and normative (RFC 2119) text related to these
formats.
My only idea about them would be "battery level"... not sure how
useful it is to query the radio about this.
some context would be great. -- sounds like its akin to a routing metric.
Post by Henning Rogge
Post by Lou Berger
- Sections 8.21 and 8.22 (Relative Link Quality) have a similar
problem of being under described, in particular it's unclear if
there's a meaningful, non-proprietary definition for link quality
that an implementation is to act on or if the passed value is just
passed for as monitoring information. Either way, this needs to
be clarified.
It seems the radio vendors really like this field. The reason why we
made "max/current link speed" mandatory is to make RLQ at least
reasonable useful.
same comment.
The Resources and RLQ metrics are there as DLEP builds upon the work
done in RFC5578. I have always considered Resources to be some
indication of 'work-load' on the modem rather than explicit battery
level. Perhaps the descriptive text needs to be expanded.
yes, please.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- Section 9 defines a "credit-windowing scheme analogous to the one
documented in [RFC5578]". It describes how credits are exchanged,
but it provides zero definition on the implications or use of
credits relative to the data plane.
No comment on this one.
This is one for Stan. Credit-windowing is his baby.
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- Multiple ways to implement the same function are allowed, e.g.,
optional presence of Status, Interval and TCP port. Generally
allowing such complicates testing and leads to interoperability
issues. The document should pick one way and require it.
I think "no status TLV" is always "everything is fine"...
We are currently happy with the way this works. If an optional data
item is missing, then the default value is used. This should be
explicitly stated whenever an optional data item can be omitted.
options make conformance and interoperability testing much harder. In
general, if they don't serve a specific purpose options *should* be
eliminated. Too many options have dead-ended protocols in the past.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- The document doesn't state if there are any ordering requirements
on data items. It should be explicit on this, e.g., there are no
ordering requirements on the placement of Data Items within
Signals.
I think is exactly as most (all?) of us have implemented it... no
ordering required.
Cool, then this is just a simple matter of documenting "what everyone
implements".
Section 6 states: "There is no restriction on the order of data items
following a signal"
Okay missed that. Certainly for version number this is probably not the
best answer. For everything else, don't really have an opinion.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- The required and optional data items that are permitted on a
signal isn't always clear. For example are 0/1/N copies of a
particular Data Item required/allowed. Using something like ABNF
would really help formalize and clarify this.
Can you give an example where this is undefined? As far as I can see
the draft explicitly states what and how often you can use TLVs per
signal.
I think the experimental data item discussion above is a perfect
example. You though only one is allowed the spec is vague in section
8.8 and explicit in 7.3. -- Narrative lacks precision and is easily
misread. Something like ABNF is far more transparent.
Section 6 states: "...the multiplicity of duplicate data items is
defined by the definition of the signal declared by the type in the
signal header."
We have attempted to enumerate the multiplicity of every data item in
each signal. If we have missed one please point it out.
Section 3.3 states: "Multiple Experimental Definition data items MAY
appear in the Peer Initialization/Peer Initialization ACK sequence."
I have tried to define ABNF, but I struggle with defining the
multiplicity and optional ordering rules, any advice gratefully received.
I have done far too much ABNF so to me this isn't too hard. Unicast me
what you have and I'll provide feedback.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- The document doesn't clearly delineate from informative/narrative
text, normative / required processing procedures, and message
formats. This by itself is not necessarily a major issue, it just
makes it harder to (write,) review and implement the protocol.
What is a major issue is that this approach allows for duplicate
(and sometimes contradictory) normative procedures and for
omissions in procedures (particularly related to exception/error
processing). Specific examples are included above and below. It
would be best to ensure that each required processing behavior is
defined just once and in a consistent way.
This is a hangover of the major rewrites that have occurred over the
last 14 versions. Let us have another pass at the text and we can see
what we can do.
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- The security consideration section is inadequate. This section
should address the security of the DLEP protocol, not user
traffic. It should include an analysis of risks/threats/possible
exploits and how these are mitigated by the protocol. rfc6952,
and the protocols it references can serve as examples.
DLEP is only on the local ethernet connection between the radio and
the router... it is NOT spoken between different router/radio
components of a network. RFC6952 is talking about securing
communication over the routed network.
This is a scoping of the problem that should go into a security the
section. RFC4204 covers a similar scoped protocol, although it's
security considerations section is quite dated.
We have done no analysis of a malicious peer in a DLEP session as the
nature of the link-local connectivity made it seem unnecessary. Are you
suggesting that we need to address this?
I'm suggesting that the IESG/Security review will block this document
until there is a substantive Security Consideration section. I've just
pointed to some examples that may help construct one.

...> >
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- Section 2: Assumptions
This section includes informative and normative text so is more
than just Assumptions. Personally, I'd remove all normative text
from the section.
- There are no specific rules related to UDP header formation.
UDP header formation?
format. I.e., what addresses and ports must be used.
Does Section 5.1 not cover this?
No. Not every implementation may use sockets. Also much of the text
relates to TCP socket init. I think a sentence that says something like:
For the Peer Discovery signals the IP destination address MUST be set to
the DLEP link-local multicast address and port (TBA), there is no
restriction on the UDP source port. For Peer Offer signals the IP
destination address and port MUST be set to the source IP address and
Port contained in the received Peer Discovery signal, the source IP
address and port MUST be set to the DLEP port. For both signals, the
source IP address MUST be set to the IP address that will be used in
subsequent DLEP TCP connections.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
in destination update signals?
I think we talked about this and the reason was that subnets are only
as "fixed settings" supported.
I'm sorry I don't understand your response. Are you saying subnet
reconfiguration requires a session reset?
Subnet reconfiguration requires a session restart.
fine. this needs to be explicit.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- The IANA Considerations sections must follow RFC2360.
- New registries must include initial values, which are defined in
the document. (The document currently has many TBDs that should
be replaced.)
I didn't know about this, I have always seen Drafts with TBDx...
TBD is right for existing registries. For new registries IANA doesn't
have any policies or guidance. This comes from the document that
establish the registries, i.e, this one.
We shall suggest some values.
Again, whatever for new registries the document defining the registry
*must* define initial values.
Post by Rick Taylor
Probably from the existing interoperable
implementations.
Makes sense.
Post by Rick Taylor
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
The registry should be established with registration policies of
"Standards Action" (for Standards Track documents) and
"Specification Required" (for other documents). The designated
expert is any current <fill-in> WG chair.
This is one for Stan.
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- The document introduces the terms "signals" and "data items" for
what is commonly called "messages" and "TLVs" (or objects) in
other protocols. It's probably too late to change this, but I
think the introduction of unique terminology is counter
productive
TLVs was rejected as a name, as both signals and data items are
Type-Length-Value encoded. Signals was selected as they are 'events'
rather than RPCs, and
I don't follow -- but doesn't really matter as topic seems to be OBE.
Post by Rick Taylor
it might be a bit late to change the terminology.
Post by Lou Berger
Post by Henning Rogge
Post by Lou Berger
- Use of RFC 2119 conformance language is a bit rough, and there are
words in all caps that are not defined in RFC2119. Take a look at
http://trac.tools.ietf.org/wg/teas/trac/wiki/PSGuideline for some
suggestions.
We will have another pass. Can you point out some examples please?
Just a few picked at random-- *not* the full list:

Section 3. the first two MUSTs are duplicative, the same requirement is
listed for a third time in the third paragraph with a lower case
"required". The "OPTION" and "MAY" clauses are duplicative.

Section 4: "DLEP Does NOT specify..."

Section 7.3: "there is NO support"
Post by Rick Taylor
...
Hope that helps?
Yes. Thanks.

Lou
Post by Rick Taylor
Rick
RJ Atkinson
2015-06-18 18:40:21 UTC
Permalink
% Document: draft-ietf-manet-dlep-14
% Reviewer: Lou Berger
% Review Date: June 8 (later than requested due to scope of comments -- sorry)
% WG LC End Date: unknown
% Intended Status: Standards track
%
% Summary:
%
% While I think the document is pretty decent for the scope of the
% work, I do have concerns about this document and recommend that the
% WG Chairs/Routing ADs discuss these issues further with the authors.
% I'm also available as/if needed to discuss.

I broadly agree with Lou's review. A point-by-point commentary
follows in-line.

I think the document needs both clarifications (e.g. more text
that is more crisply and clearly written) and also some modest
protocol changes.

% Comments:
%
% I think the document shows significant good work and looks to be a
% useful protocol, although I'm not overly familiar in this space.
% That said, I have a number of serious concerns about the document,
% and its contents from a few of perspectives. These include basic
% protocol issues, underspecified details (which could lead to
% interoperability issues), and specification/editorial issues. I
% think the document / protocol can be modified to address the issues
% I raise below. Of course, it is up to the WG, chairs, and ADs to
% decide which comments to address and which to ignore.
% I don't expect that all comments will result in changes.

As context, I am a consultant and I work regularly with a
well-known radio vendor that designs/sells IP-capable radios.

% Major Issues:
%
% - The length field of the generic data item (i.e., TLV) is only 8
% bits. While 255 bytes (assuming that this is the unit of measure,
% which BTW isn't specified) is big enough today, allowing for
% larger will greatly simplify things when 255 isn't enough. --
% We've run into this in RSVP and it's a real pain.

Agreed. This field is clearly too small. I propose that it be
changed to be a 16-bit field, which should be ample.

% - Version number is currently defined as a data item. This means a
% signal (i.e., message) needs to be potentially fully parsed to
% discover what version is being used. This precludes basic format
% changes to the protocol. Perhaps the Discovery and Init Signals
% should be special cased to include version in their formats. (And
% shorten version to 8 bits from 32, as mentioned below).

Agreed. This issue has been a problem in a few other IETF
protocols. It is MUCH preferable from a protocol evolution
perspective to have the version placed in a location where
potential future protocol format changes are both possible
and practical.

I also agree the field is WAY too large. The field should not
be larger than 8-bits. In fact, I would be surprised if any
IETF protocol needed more than 4-bits worth of version.

% - The document references, but does not define, 'in-session' and
% 'discovery' states. These either need to be formally defined or
% removed. BTW we had exactly the same issue with LMP (RFC4204) and
% ended up adding section 11 (FSMs) at a pretty late stage of the
% process.

Agreed. Undefined states are problematic in any protocol.
They are likely to lead to interoperability issues that
can be avoided either by more clear definition xor by
elimination of these states.

% - TCP session management is not defined, nor is the relationship
% with TCP and DLEP sessions fully defined. For example:

I agree. I view this as a specification clarity issue.

% o Closing the TCP session is only mentioned in one place and in a
% way that is inconsistent with the expected protocol behavior
% (close TCP before ACK is received).

IMHO, DLEP ought not be defining/describing a TCP session close
in a way that is inconsistent with normal TCP behavior.

% o What happens when a DLEP session is terminated, can the TCP
% session be reused or must it be closed too?

IMHO, the DLEP specification should say that a NORMAL TCP close
(i.e. not just sending an abrupt TCP RESET) occurs when a DLEP
session terminates.

% - There is no transaction model defined. For example, it's
% completely unclear if only one unacknowledged Signal allowed at a
% time, or perhaps just one per signal type is allowed, or perhaps
% there are no restrictions. This needs to be explicit.

Agreed.

% - What is the purpose of retries and timeouts over TCP? Retries
% aren't needed over TCPs and it's unclear whey they are being used.

I agree with the question.

% - The higher level implications of ACKs, over TCP, isn't really
% clear. It seems ACKs are defined for multiple purposes: reliable
% transport, transaction acknowledgment and transaction results. Of
% course the first isn't needed, and implications of the others
% should be clear. For example, in section 7.10, why would there be
% a retry when receiving a Destination Up ACK signal indicating an
% error?

I agree with the question. I believe that a more crisp
and clear text description is the minimum needed on this.

% - There is no discussion on scaling considerations. Are there really
% none? For example, how often might be appropriate to issue/limit
% Peer Updates based to changes in link quality, or how to handle
% the case where a large number (all or most) of destinations go
% down.

Some discussion seems needed. If the authors believe there
really aren't any, perhaps they could add text with a description
of why they aren't any.

% - There are 13 places where the protocol allows implementation to
% define their own 'heuristics'. Some of these seem unnecessary due
% to the TCP point raised above, but any that remain in the protocol
% should be fully specified to ensure predictable/consistent
% behavior from implementations.

I agree. We need interoperability. A clear and complete
specification is the best way to achieve interoperability.

% - Data Items are defined for "Extensions" and "Experimental
% Definition" (Sections 8.7 and 8.8). Both seem to support for
% optional mechanisms, but the former uses assigned numeric values,
% why the latter uses UTF-8 strings.
% o What, if any, is the intended distinction/relationship between
% these?
% o How does an "Experimental Definition" become standardized ?

I don't see an obvious reason for the two kinds of data items
to have different syntax (numeric values vs UTF-8 strings).
As neas as I can tell, parsing would be simpler if a single form
(ideally numeric) were used.

% - Sections 8.19 and 8.20 define "Resources" related Data Items. The
% definition related to these basically says a resources is "An
% 8-bit integer percentage, 0-100, representing the amount of
% resources allocated to receiving|transmitting data.". If I were
% implementing this protocol, I'd have no idea how to produce,
% update or use this information. I think there is some missing
% informative and normative (RFC 2119) text related to these
% formats.

I think I understand what this chunk of text means, and I think
that I understand how different radios could calculate this in
different ways (e.g. a pure software radio might be different
than a silicon-based radio), but I also think that additional
clarifying text would help with interoperability. Maybe we could
add examples relating to memory or CPU or whatever.

It seems to me that "if a device cannot calculate" these values,
then that device MUST NOT (rather than SHOULD NOT) send this data
item. Sending a data item containing an erroneous or misleading
value does not seem helpful to either end of the DLEP session.

% - Sections 8.21 and 8.22 (Relative Link Quality) have a similar
% problem of being under described, in particular it's unclear if
% there's a meaningful, non-proprietary definition for link quality
% that an implementation is to act on or if the passed value is just
% passed for as monitoring information. Either way, this needs to
% be clarified.

I think I understand what this chunk of text means, and I totally
get that different radio types could calculate this in very
different ways, but I also think that additional clarifying text
(possibly adding examples) would help with interoperability.

As above, I think that this data item "MUST NOT" be sent
(rather than "SHOULD NOT") if the device is unable to calculate
any link quality metric, because sending erroneous or
misleading data does not seem helpful to either end of the
DLEP session.

% - Section 9 defines a "credit-windowing scheme analogous to the one
% documented in [RFC5578]". It describes how credits are exchanged,
% but it provides zero definition on the implications or use of
% credits relative to the data plane.

I understand the value of having some flexibility, but I also
agree that more description than exists now is needed for
interoperability reasons.

% - Multiple ways to implement the same function are allowed, e.g.,
% optional presence of Status, Interval and TCP port. Generally
% allowing such complicates testing and leads to interoperability
% issues. The document should pick one way and require it.

Agree. Avoidable complexity or low ROI complexity seems
undesirable.

% - The document doesn't state if there are any ordering requirements
% on data items. It should be explicit on this, e.g., there are no
% ordering requirements on the placement of Data Items within
% Signals.

This needs to be specified either as "no ordering requirements"
xor whatever the requirements are. My preference is to say
explicitly "Data Items can be placed in any order within
Signals."

% - The required and optional data items that are permitted on a
% signal isn't always clear. For example are 0/1/N copies of a
% particular Data Item required/allowed. Using something like ABNF
% would really help formalize and clarify this.

More clarity would help interoperability.

% - The document doesn't clearly delineate from informative/narrative
% text, normative / required processing procedures, and message
% formats. This by itself is not necessarily a major issue, it just
% makes it harder to (write,) review and implement the protocol.
% What is a major issue is that this approach allows for duplicate
% (and sometimes contradictory) normative procedures and for
% omissions in procedures (particularly related to exception/error
% processing). Specific examples are included above and below. It
% would be best to ensure that each required processing behavior is
% defined just once and in a consistent way.

Agree.

% - The security consideration section is inadequate. This section
% should address the security of the DLEP protocol, not user
% traffic. It should include an analysis of risks/threats/possible
% exploits and how these are mitigated by the protocol. rfc6952,
% and the protocols it references can serve as examples.

TCP session hijacking is known to have been practical on the
deployed Internet at least since 1995. CERT Advisories
CA-1995-01, CA-1996-21, and CA-2001-09 are historical examples.
There is also a practical DOS risk from an adversary sending
a forged TCP Reset message.

I suspect most of us envision that the router and the radio
would be on a single VLAN or Ethernet collision domain, and
that generally that wire might have some *assumed* trust
associated with it. However, large Ethernet bridged LANs
are now commonplace, including multi-site bridged LANs
(e.g. to enable VM migration without IP readdressing).

So *some* kind of session authentication mechanism ought to
be specified, so that we have some chance of interoperating
in an authenticated way.

My suggestion is that TCP-AO (RFC-5925) be specified as a
mandatory to implement authentication method, but there are other
IETF standards-track alternatives (e.g. IPsec AH or IPsec ESP).
I imagine that most modern IP routers support TCP-AO already.
Ideally we would like something that protects against forged TCP
Reset messages, which means TLS is not a great choice.


% Minor Issues:
%
% - The data and signal type fields are both 8 bits. This seems
% pretty small, particularly the data type field. Given this is a
% control protocol, I think a larger (at least data type) field
% would provide better "future proofing".

For me, this is a MAJOR issue. There are radios that will
need to define radio-specific data items. In future, there
likely will be a growing number of such data items, even if
some of the experimental data items later are standardised.

So each of these fields needs to be larger than 8-bits. I think
16-bits would be big enough. Trying to push all experimental
extensions (or radio-unique extensions) into a single
"Experimental Definition" followed by text strings makes parsing
needlessly complex and doesn't really fit the engineering need to
have radio-specific extensions to DLEP. Instead, we ought to
specify that IANA allocates new Data Item type codes (numeric)
for each experimental status data item.

Also, the IANA Considerations should specify that experimental
status Data Item values are allocated on a "First Come, First
Serve" basis and should say that "RFC publication of the data
item definition is encouraged, but is NOT required for
experimental data item allocations."

% - 2^32 versions are currently allowed (section 8.1). This
% seems a bit excessive. I'd opt for max of 8 bits here myself.

If an IETF protocol needs more than 4-bits for version,
then IMHO something is very wrong.

I can live with an 8-bit field for alignment reasons, but we
surely ought not need a 16-bit field for this.

On a related note, I see no reason for having a minor version.
NFS is the only IETF protocol that I can think of with both major
and minor versions. NFS WG went to some effort to describe the
difference between what would change the Major Version versus the
Minor Version, which this does NOT do. Either (1) drop the Minor
Version entirely or (2) document (a) the compelling reason to
keep the Minor Version and (b) exactly when a change would alter
the Minor Version and (c) exactly when a change would alter the
Major Version.

% - It's probably too late, but it probably would be cleaner to have a
% generic ack signal rather than a per signal type ack. I mention
% this here as this may come up again when clarifying the
% transaction model (as mentioned above.)

I could go either way on this, provided the conclusion were
very clear.

% - Section 2: Assumptions
% This section includes informative and normative text so is more
% than just Assumptions. Personally, I'd remove all normative text
% from the section.

I very much doubt that J. Random implementer who is handed
the DLEP document and told to code it up will expect guidance
or normative language to be in a section marked "Assumptions".

Perhaps keep the non-normative text inside "Assumptions",
but place the guidance ("normative language") in a new
section (possibly somewhere in Section 3) that is clearly
normative guidance.

% - There are no specific rules related to UDP header formation.

% - Sections 8.10->8.17. Isn't add/drop indicator needed for subnets
% in destination update signals?

Good question.

% - The IANA Considerations sections must follow⃫刀䘀䌀㈀㌀㘀 ⸀ഀഀ匀攀攀 愀戀漀瘀攀 昀漀爀 漀琀栀攀爀 搀椀猀挀甀猀猀椀漀渀 昀爀漀洀 洀攀 愀戀漀甀琀 䤀䄀一䄀 䌀漀渀猀椀搀攀爀愀琀椀漀渀猀⸀ഀഀ─  ⴀ 一攀眀 爀攀最椀猀琀爀椀攀猀 洀甀猀琀 椀渀挀氀甀搀攀 椀渀椀琀椀愀氀 瘀愀氀甀攀猀Ⰰ 眀栀椀挀栀 愀爀攀 搀攀昀椀渀攀搀 椀渀ഀ─    琀栀攀 搀漀挀甀洀攀渀琀⸀  ⠀吀栀攀 搀漀挀甀洀攀渀琀 挀甀爀爀攀渀琀氀礀 栀愀猀 洀愀渀礀 吀䈀䐀猀 琀栀愀琀 猀栀漀甀氀搀ഀ─    戀攀 爀攀瀀氀愀挀攀搀⸀⤀ഀഀ─   ⴀ 一攀眀 爀攀最椀猀琀爀椀攀猀 渀攀攀搀 愀渀 愀氀氀漀挀愀琀椀漀渀 瀀漀氀椀挀礀Ⰰ 攀⸀最⸀㨀ഀ─   吀栀攀 爀攀最椀猀琀爀礀 猀栀漀甀氀搀 戀攀 攀猀琀愀戀氀椀猀栀攀搀 眀椀琀栀 爀攀最椀猀琀爀愀琀椀漀渀 瀀漀氀椀挀椀攀猀 漀昀ഀ─   ∀匀琀愀渀搀愀爀搀猀 䄀挀琀椀漀渀∀ ⠀昀漀爀 匀琀愀渀搀愀爀搀猀 吀爀愀挀欀 搀漀挀甀洀攀渀琀猀⤀ 愀渀搀ഀ─   ﰀSpecification Required" (for other documents). The designated
% expert is any current <fill-in> WG chair.

I disagree about "Specification Required" for experimental status
Data Items that are defined. Those should be allocated by IANA
on a "First Come, First Served" basis with "Specification Optional".

% Nits:
%
% - The document introduces the terms "signals" and "data items" for
% what is commonly called "messages" and "TLVs" (or objects) in
% other protocols. It's probably too late to change this, but I
% think the introduction of unique terminology is counter
% productive.

Agree. This makes the learning curve for DLEP steeper than it
needs to be.

% - Use of RFC 2119 conformance language is a bit rough, and there are
% words in all caps that are not defined in RFC2119.

I agree this is an issue. I doubt the document will get past
the IESG until this is fixed. Fixing it now ought to speed
the rest of the IETF process.

% - Internal socket operation is mentioned a couple of times. It
% really shouldn't be, the spec should define behavior on the wire.

Agree.

% - The Length fields are missing unit of measure (presumably octets)

Agree. We need to specify units of measure to ensure
interoperability.

% - The Mnemonics are used basically once and don't really add value,
% suggest dropping them.

No objection.

% - How/when is the "Unknown Signal" Status Code sent?

Clarifying text is needed for this.

% - Section 8.7: Extension List should be shown as a variable length
% field.
%
% - Section 8.8: Experiment List should be shown as a variable length
% field.

I think we ought to get away from having separate Extension
List and Experiment List. In reality, both are extensions,
some having experimental status. Right ? Please lets simplify
the protocol in this area and make interoperability easier to achieve.

Yours,

Ran Atkinson
Wiggins, David - 0665 - MITLL
2015-06-19 14:23:09 UTC
Permalink
Hi,

Here are a few comments on topics that resonated with me, piggybacked on
excerpts of Ran's reply because it was so similar to my thoughts. For
context, I am the main developer working on our DLEP implementation. I'm
a relative newcomer to DLEP (this year), so I have fresh eyes :)
Post by RJ Atkinson
% - Version number is currently defined as a data item. This means a
% signal (i.e., message) needs to be potentially fully parsed to
% discover what version is being used. This precludes basic format
% changes to the protocol. Perhaps the Discovery and Init Signals
% should be special cased to include version in their formats. (And
% shorten version to 8 bits from 32, as mentioned below).
Agreed. This issue has been a problem in a few other IETF
protocols. It is MUCH preferable from a protocol evolution
perspective to have the version placed in a location where
potential future protocol format changes are both possible
and practical.
Good point. It should be a fixed field in header of the Peer Discovery
and Peer Offer signals, and since discovery is optional, it should also be
in the Peer Initialization and Peer Initialization Ack signals. Perhaps
it would be simpler to just put it in the header for all signals.
Post by RJ Atkinson
I also agree the field is WAY too large. The field should not
be larger than 8-bits. In fact, I would be surprised if any
IETF protocol needed more than 4-bits worth of version.
I have seen 16 bit version numbers work in other (non-IETF) protocols,
with one byte each for the major and minor versions. As Ran points out
later, this would require careful definition of what it means when each
one changes, and that may not be worth the effort. I don't feel strongly
about this. The interaction between version number changes and the
extension mechanism(s) needs thought too.
Post by RJ Atkinson
% - The document references, but does not define, 'in-session' and
% 'discovery' states. These either need to be formally defined or
% removed. BTW we had exactly the same issue with LMP (RFC4204) and
% ended up adding section 11 (FSMs) at a pretty late stage of the
% process.
Agreed. Undefined states are problematic in any protocol.
They are likely to lead to interoperability issues that
can be avoided either by more clear definition xor by
elimination of these states.
If it's of any use, we ended up defining our own states for our
implementation:

- Connected: the TCP connection is established between the peers, but the
Init handshake hasn't completed.
- In Session: the Peer Init/Ack exchange is complete, and other signals
can now be sent.
- Terminating: a Termination signal has been sent to the peer, and we are
waiting for the Ack.
We didn't use the "discovery" state because our states are attached to
peers, and during discovery there is no peer.
Post by RJ Atkinson
% - There are 13 places where the protocol allows implementation to
% define their own 'heuristics'. Some of these seem unnecessary due
% to the TCP point raised above, but any that remain in the protocol
% should be fully specified to ensure predictable/consistent
% behavior from implementations.
I agree. We need interoperability. A clear and complete
specification is the best way to achieve interoperability.
Agree. We have implemented 'heuristics', and while I think they should
work with other implementations, I'm not sure. I would be more
comfortable if the behavior was more completely specified.
Post by RJ Atkinson
% - Data Items are defined for "Extensions" and "Experimental
% Definition" (Sections 8.7 and 8.8). Both seem to support for
% optional mechanisms, but the former uses assigned numeric values,
% why the latter uses UTF-8 strings.
% o What, if any, is the intended distinction/relationship between
% these?
% o How does an "Experimental Definition" become standardized ?
I don't see an obvious reason for the two kinds of data items
to have different syntax (numeric values vs UTF-8 strings).
As neas as I can tell, parsing would be simpler if a single form
(ideally numeric) were used.
I've been puzzled about the two very similar extension mechanisms, but I
figured it had all been hashed out before I started with DLEP. Now that
others are raising the issue though, I'll say that I do think it would be
good to combine them. I'm concerned about how to mesh the two different
mechanisms in the implementation. A possible way to combine them would be
to have a 16 bit extension number, with half of the space reserved for
standardized extensions and half for experimental/non-standard ones.
Perhaps IANA could even assign the experimental ones on a
first-come-first-serve, no spec required basis to help with
interoperability.
Post by RJ Atkinson
% - Section 9 defines a "credit-windowing scheme analogous to the one
% documented in [RFC5578]". It describes how credits are exchanged,
% but it provides zero definition on the implications or use of
% credits relative to the data plane.
I understand the value of having some flexibility, but I also
agree that more description than exists now is needed for
interoperability reasons.
Agree. The credit scheme will be important to us.
Post by RJ Atkinson
Yours,
Ran Atkinson
David Wiggins
MIT Lincoln Laboratory
Ratliff, Stanley
2015-06-19 16:09:28 UTC
Permalink
OK, since the debate seems to be brewing over "Extensions" and "Experimental Definitions", I figured I'd jump in and try to explain.
Post by Wiggins, David - 0665 - MITLL
Post by RJ Atkinson
% - Data Items are defined for "Extensions" and "Experimental
% Definition" (Sections 8.7 and 8.8). Both seem to support for
% optional mechanisms, but the former uses assigned numeric values,
% why the latter uses UTF-8 strings.
% o What, if any, is the intended distinction/relationship between
% these?
% o How does an "Experimental Definition" become standardized ?
I don't see an obvious reason for the two kinds of data items to have
different syntax (numeric values vs UTF-8 strings).
As neas as I can tell, parsing would be simpler if a single form
(ideally numeric) were used.
I've been puzzled about the two very similar extension mechanisms, but I
figured it had all been hashed out before I started with DLEP. Now that
others are raising the issue though, I'll say that I do think it would be good to
combine them. I'm concerned about how to mesh the two different
mechanisms in the implementation. A possible way to combine them would
be to have a 16 bit extension number, with half of the space reserved for
standardized extensions and half for experimental/non-standard ones.
Perhaps IANA could even assign the experimental ones on a first-come-first-
serve, no spec required basis to help with interoperability.
So, let's start with a scenario - assume that DLEP is now RFC-blah-de-blah, and I have an interoperable version deployed. The sun is rising in the East, the crops are bountiful, and I've *finally* lost that pesky 30lbs (OK, more like 40) that my doctor keeps needling me about. And then... I get this great idea, having to do with DLEP. With a small handful of data items, and a correspondingly small number of signals, I can put an "It-will-even-make-coffee-for-you-in-the-morning" feature in my modem. But, DLEP is this fixed, interoperable protocol. So what to do, what to do?

With the -14 draft, I can implement this, *initially*, as an "Experiment". I conjure up the necessary signals ("DLEP_COFFEEMAKER_START", "DLEP_COFFEEMAKER_STOP"), and also the requisite data items ("DLEP_COLUMBIAN")... actually, I'd probably add "DLEP_SUMATRAN", since this is a "high-end" modem, but that's another story...
I also map out how these signals/data items look (e.g., is the DLEP_COLUMBIAN data item 8 bits, 16 bits, or just 1?), and then I start looking for a router vendor to "play nice with me", and support my coffee maker experiment. Assuming I find such a router vendor, we implement the "Coffee Maker Experiment" - and again, since this is *my* scenario, we'll assume that's its wildly successful. All of my beta test sites are "Slurping coffee on the move", and enjoying it. In fact, it's so wildly popular that other modem manufacturers are now discussing bolting coffee makers onto their modems...

So, at this point, it's time for me and my router-vendor partner to approach the MANET WG with a draft describing the Coffee-Maker "Experiment" as a DLEP "Extension". And true to form, the WG debates the weighty issues (e.g., Should there be a DLEP_ARABICA data item? NO! YES! Wait! We should allow it to MAKE TEA! Yes, that's the ticket! It MUST [proper homage to RFC 2119] contain a DLEP_EARL_GREY data item!), ad-nauseum, over a period of time that you thought would take a couple of IETF meetings, but actually spans about 5 years (in other words, you *thought* it was going to be a project, but it turned into a career path)...

Finally, clearing Working Group Last Call (and *then* getting a crap-ton of really useful comments, because apparently, no one reads these things unless/until there's supposedly no chance to change them), you get the official, approved, "DLEP Coffee Maker Extension" registered with IANA... I and my router-vendor partner (actually, my grandchild and my router-vendor partner's grandchild, since it's taken so long) can then swap over our code to stop using the "Experiment", and use the official "Extension" data items and signals.

But my point here is, that all the while, my customers have been merrily "slupring coffee on the move, and enjoying it" - utilizing the "Experimental" TLVs gives me (us, actually) the ability to actually be *responsive* to our customers, testing out (and even deploying in limited fashion) changes to the protocol. If/when those "experiments" prove successful, the mechanism even gives implementers the ability to shift the code from "Experiment" to "Extension", providing backward-level compatibility for the move (nothing stops me from supporting the exact same functionality in "Experimental" mode that I'm supporting with a now-documented "Extension").

...and that was the motivation behind having both "Experimental" TLVs, and a documented "Extension" mechanism...

Regards,
Stan


_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Henning Rogge
2015-06-19 16:17:51 UTC
Permalink
Post by Ratliff, Stanley
...and that was the motivation behind having both "Experimental" TLVs, and a documented "Extension" mechanism...
The "text identifier" of the Experiments make it also much easier to
have multiple experiments in house and even do small tests with other
software without worrying about which "experimental number" to take
from the Extension so that you don't have collisions.

Henning
RJ Atkinson
2015-06-20 13:21:00 UTC
Permalink
Post by Henning Rogge
Post by Ratliff, Stanley
...and that was the motivation behind having both "Experimental" TLVs, and a documented "Extension" mechanism...
The "text identifier" of the Experiments make it also much easier to
have multiple experiments in house and even do small tests with other
software without worrying about which "experimental number" to take
from the Extension so that you don't have collisions.
At present the “number space” of 8-bits for Data Items is already too
small — even assuming the approach Stan outlined in his earlier note.

We need to move to 16-bits for these 2 fields, regardless of the
“extension approach” taken.

Adding a 2nd parser for UTF-8 is avoidable complexity. The usual
IETF approach is to do as David Wiggins suggested, splitting the
number space into distinct Standards-track and Experimental subsets,
both of which are allocated by IANA (albeit using 2 different
allocation policies). Standards-track subspace would use an IETF
Standards-Action required policy for code point allocation. The
other subspace would use “First Come, First Serve” with “No specification
required” which some other protocols already do; it works just fine.

Yours,

Ran
Wiggins, David - 0665 - MITLL
2015-06-19 17:16:41 UTC
Permalink
Hi Stan,

Thanks for the clarifications. And the humor is appreciated.

If I go through your story, and everywhere it mentions "experiment" I
replace it with "experimental extension" using this notion:

a 16 bit extension number, with half of the space reserved for
standardized extensions and half for experimental/non-standard ones.
Perhaps IANA could even assign the experimental ones on a
first-come-first-
serve, no spec required basis to help with interoperability.

...then I think the story still works. If I'm wrong, I've missed
something. The advantage is that now you just have one extension
mechanism instead of two. No more questions about how the two mechanisms
relate to/interact with one another (and no new words needed to describe
such interactions), since there's only one now. No need to implement two
sets of extension-handling code. Seems like a win.


David
Post by Ratliff, Stanley
OK, since the debate seems to be brewing over "Extensions" and
"Experimental Definitions", I figured I'd jump in and try to explain.
Post by Wiggins, David - 0665 - MITLL
Post by RJ Atkinson
% - Data Items are defined for "Extensions" and "Experimental
% Definition" (Sections 8.7 and 8.8). Both seem to support for
% optional mechanisms, but the former uses assigned numeric values,
% why the latter uses UTF-8 strings.
% o What, if any, is the intended distinction/relationship between
% these?
% o How does an "Experimental Definition" become standardized ?
I don't see an obvious reason for the two kinds of data items to have
different syntax (numeric values vs UTF-8 strings).
As neas as I can tell, parsing would be simpler if a single form
(ideally numeric) were used.
I've been puzzled about the two very similar extension mechanisms, but I
figured it had all been hashed out before I started with DLEP. Now that
others are raising the issue though, I'll say that I do think it would be good to
combine them. I'm concerned about how to mesh the two different
mechanisms in the implementation. A possible way to combine them would
be to have a 16 bit extension number, with half of the space reserved for
standardized extensions and half for experimental/non-standard ones.
Perhaps IANA could even assign the experimental ones on a
first-come-first-
serve, no spec required basis to help with interoperability.
So, let's start with a scenario - assume that DLEP is now
RFC-blah-de-blah, and I have an interoperable version deployed. The sun
is rising in the East, the crops are bountiful, and I've *finally* lost
that pesky 30lbs (OK, more like 40) that my doctor keeps needling me
about. And then... I get this great idea, having to do with DLEP. With a
small handful of data items, and a correspondingly small number of
signals, I can put an "It-will-even-make-coffee-for-you-in-the-morning"
feature in my modem. But, DLEP is this fixed, interoperable protocol. So
what to do, what to do?
With the -14 draft, I can implement this, *initially*, as an
"Experiment". I conjure up the necessary signals
("DLEP_COFFEEMAKER_START", "DLEP_COFFEEMAKER_STOP"), and also the
requisite data items ("DLEP_COLUMBIAN")... actually, I'd probably add
"DLEP_SUMATRAN", since this is a "high-end" modem, but that's another
story...
I also map out how these signals/data items look (e.g., is the
DLEP_COLUMBIAN data item 8 bits, 16 bits, or just 1?), and then I start
looking for a router vendor to "play nice with me", and support my coffee
maker experiment. Assuming I find such a router vendor, we implement the
"Coffee Maker Experiment" - and again, since this is *my* scenario, we'll
assume that's its wildly successful. All of my beta test sites are
"Slurping coffee on the move", and enjoying it. In fact, it's so wildly
popular that other modem manufacturers are now discussing bolting coffee
makers onto their modems...
So, at this point, it's time for me and my router-vendor partner to
approach the MANET WG with a draft describing the Coffee-Maker
"Experiment" as a DLEP "Extension". And true to form, the WG debates the
weighty issues (e.g., Should there be a DLEP_ARABICA data item? NO! YES!
Wait! We should allow it to MAKE TEA! Yes, that's the ticket! It MUST
[proper homage to RFC 2119] contain a DLEP_EARL_GREY data item!),
ad-nauseum, over a period of time that you thought would take a couple of
IETF meetings, but actually spans about 5 years (in other words, you
*thought* it was going to be a project, but it turned into a career
path)...
Finally, clearing Working Group Last Call (and *then* getting a crap-ton
of really useful comments, because apparently, no one reads these things
unless/until there's supposedly no chance to change them), you get the
official, approved, "DLEP Coffee Maker Extension" registered with IANA...
I and my router-vendor partner (actually, my grandchild and my
router-vendor partner's grandchild, since it's taken so long) can then
swap over our code to stop using the "Experiment", and use the official
"Extension" data items and signals.
But my point here is, that all the while, my customers have been merrily
"slupring coffee on the move, and enjoying it" - utilizing the
"Experimental" TLVs gives me (us, actually) the ability to actually be
*responsive* to our customers, testing out (and even deploying in limited
fashion) changes to the protocol. If/when those "experiments" prove
successful, the mechanism even gives implementers the ability to shift
the code from "Experiment" to "Extension", providing backward-level
compatibility for the move (nothing stops me from supporting the exact
same functionality in "Experimental" mode that I'm supporting with a
now-documented "Extension").
...and that was the motivation behind having both "Experimental" TLVs,
and a documented "Extension" mechanism...
Regards,
Stan
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Ratliff, Stanley
2015-06-19 17:50:45 UTC
Permalink
David,
Post by Wiggins, David - 0665 - MITLL
If I go through your story, and everywhere it mentions "experiment" I
a 16 bit extension number, with half of the space reserved for
standardized extensions and half for experimental/non-standard ones.
Perhaps IANA could even assign the experimental ones on a
first-come-first-
serve, no spec required basis to help with interoperability.
As it has been explained to me, that notion collides with IANA/IESG in at least a couple of not-so-nice ways:
1. Creating a "standards-track protocol" with 32,767 experiments, and another 32,767 extensions, isn't much of a standard - everything's pretty much an experiment or an extension.
2. I don't believe IANA operates that way. They need a WG-approved document in order to start the assignment process.

So, we intentionally created a small (3? 4?) "Wild-wild-West sandbox" (the experiments), and the more formal Extensions mechanism, which by necessity, starts with an IETF draft.

Regards,
Stan

[snip]

_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Wiggins, David - 0665 - MITLL
2015-06-19 19:51:47 UTC
Permalink
Post by Ratliff, Stanley
David,
Post by Wiggins, David - 0665 - MITLL
If I go through your story, and everywhere it mentions "experiment" I
a 16 bit extension number, with half of the space reserved for
standardized extensions and half for experimental/non-standard ones.
Perhaps IANA could even assign the experimental ones on a
first-come-first-
serve, no spec required basis to help with interoperability.
As it has been explained to me, that notion collides with IANA/IESG in at
1. Creating a "standards-track protocol" with 32,767 experiments, and
another 32,767 extensions, isn't much of a standard - everything's pretty
much an experiment or an extension.
The core protocol as defined in the draft/RFC isn't an extension or an
experiment, and that's what is being standardized, at least initially.
I'm not sure why IANA/IESG would have an issue with the number of
extensions or experiments allowed.
Post by Ratliff, Stanley
2. I don't believe IANA operates that way. They need a WG-approved
document in order to start the assignment process.
OK. I was under the impression that there could be different rules for
experimental extensions in other cases, and they could do a lightweight
assignment, but I am no authority here. Maybe someone who knows can chime
in.

David
Christopher Dearlove
2015-06-19 21:12:28 UTC
Permalink
I'm not claiming to be an authority, but I've had some experience. This is my observation of how I've seen things work, rather than anything official. As such if, for example, someone comes along and points out that I've misstated something, with proper references, believe them not me.

And I also realise this is a post which many will see as teaching egg sucking. Those who do, please do improve on it.

To make things more complicated, we have at least two overlapping concepts.

First, when we allocate a number space, we typically allocate some numbers for private or experimental use. (Those two aren't exactly the same, but close enough for these purposes.) Essentially I shouldn't let things using those numbers escape onto the wider Internet, they should be confined to my network. And on my network I can do what I like. You can use the same number in that space for something completely different in your network. Those numbers aren't allocated. Typically the rest are allocated by IANA (usually subject to some sort of review process, which makes it not quite first come first served).

Then, separately, I can create something that builds on (extends) a standard protocol. Obviously I can do that privately, and no one else will care, because no one else will know. But if I want to do it more broadly I will publish an Internet Draft. While in that state, now lots of people can try it out on their private networks, and we can even try joining our networks together (especially possible in a MANET). But again we ought not to pollute the public Internet.

We may then progress to an RFC. Which might be experimental or a Proposed Standard (it could also be informational, but I won't go there). Obviously in the standard case we should be able to use it publicly. I'm not sure what the exact rules are in the experimental case, but I would assume we should at the least be very wary of letting things out or not do so at all depending on the next point.

Which is that any extension (private, ID, experimental or standard) might be backwardly compatible or not. A non-backwardly compatible standard will have had to jump through lots of hard hoops. I'm not sure how hard a non-backwardly compatible experimental RFC is to get accepted as I haven't had to try that. But it's a good idea to design your protocol to make compatible extensions possible (which means considering things like what to do with an unknown object).

Now crossing the two (allocations and extensions) typically an extension needs new allocations. (Not always, but let's assume it does.) Obviously a new standard is easy to get an allocation for (unless space is low). Whether a new experimental RFC can get an allocation depends on the rules set up when the appropriate registry is defined. That should be in the RFC that defines the register. There's an RFC (sorry, number not to hand) that lists the options here. But it's perfectly possible to set up a registry so that experimental protocols can claim from the IANA allocated part, so we can run a well-defined common allocation. Shortly I expect to be able to say been there, done that. I have seen (not in MANET) IANA allocate even at the Internet Draft stage, but I don't know how you persuade anyone to do that (nor do I care to do it).

All of which I think is pretty much consistent with Stan's coffee pot extension, which went through these stages.

--
Christopher Dearlove
Post by Wiggins, David - 0665 - MITLL
Post by Ratliff, Stanley
David,
Post by Wiggins, David - 0665 - MITLL
If I go through your story, and everywhere it mentions "experiment" I
a 16 bit extension number, with half of the space reserved for
standardized extensions and half for experimental/non-standard ones.
Perhaps IANA could even assign the experimental ones on a
first-come-first-
serve, no spec required basis to help with interoperability.
As it has been explained to me, that notion collides with IANA/IESG in at
1. Creating a "standards-track protocol" with 32,767 experiments, and
another 32,767 extensions, isn't much of a standard - everything's pretty
much an experiment or an extension.
The core protocol as defined in the draft/RFC isn't an extension or an
experiment, and that's what is being standardized, at least initially.
I'm not sure why IANA/IESG would have an issue with the number of
extensions or experiments allowed.
Post by Ratliff, Stanley
2. I don't believe IANA operates that way. They need a WG-approved
document in order to start the assignment process.
OK. I was under the impression that there could be different rules for
experimental extensions in other cases, and they could do a lightweight
assignment, but I am no authority here. Maybe someone who knows can chime
in.
David
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
RJ Atkinson
2015-06-20 13:58:41 UTC
Permalink
Post by Christopher Dearlove
I'm not claiming to be an authority, but I've had some experience. This is my observation of how I've seen things work, rather than anything official. As such if, for example, someone comes along and points out that I've misstated something, with proper references, believe them not me.
And I also realise this is a post which many will see as teaching egg sucking. Those who do, please do improve on it.
To make things more complicated, we have at least two overlapping concepts.
First, when we allocate a number space, we typically allocate some numbers for private or experimental use. (Those two aren't exactly the same, but close enough for these purposes.) Essentially I shouldn't let things using those numbers escape onto the wider Internet, they should be confined to my network.
In my nearly 30 years of IETF experience, the above is not necessarily the case.

There are at least 3 scenarios that one can see if one surveys the set
of IETF standards-track protocols, and probably more than that.

GIVEN: Standards-track numbers are allocated by IANA upon publication
approval for a standards track RFC. On rare occasions, early
allocation from IANA will happen for a standards-track I-D
when IESG believes it is beneficial to do so.

A. The “private” or “experimental” use numbers are NOT allocated by IANA
at all, instead being shared on a non-controlled basis, in which case
packets with those code point values ought not escape one’s administrative
domain.

B. Some “private” use numbers are allocated “First Come, First Serve” with
“no specification required”.

C. A hybrid of scenarios A & B. In this case there are 3 different code
point subsets:
(1) standards-track
(2) private use & allocated by IANA
(3) experimental use within one’s own administrative domain,
not allocated by IANA, and “its your problem if you have
2 different implementations” for a given code point value

The proposal here is (B), but (C) also would be acceptable.

If (C) is adopted rather than (B), then I’d make the (C3) pool
relatively small (maybe in the range of 8-32 code points).

I’d like to see:
————————
- more than 8-bits for code points (signals & data items)
- 2 different subsets of code points for each
- a standards-track code point set that are allocated by IANA upon
publication of an IETF standards-track RFC
- private use code points allocated by IANA “First Come, First Served”
with “no specification required”.
Post by Christopher Dearlove
And on my network I can do what I like. You can use the same number in that space for something completely different in your network. Those numbers aren't allocated. Typically the rest are allocated by IANA (usually subject to some sort of review process, which makes it not quite first come first served).
“Expert Review” is another option, in ADDITION to “standards-track RFC
required” and “First Come, First Served”.

Normally, one uses “Expert Review” either as a work-around for an overly
small set of code points (which bug some of us are trying to avoid here)
OR because the protocol was badly designed such that an unrecognized
code point causes the protocol behavior to be unspecified/underspecified
and implementations are likely to crash horribly (again, something this
WG should avoid with DLEP).

As I have said, there are a range of existing IANA allocation approaches
that can be used in an IETF protocol.
Post by Christopher Dearlove
We may then progress to an RFC. Which might be experimental or a Proposed Standard (it could also be informational, but I won't go there). Obviously in the standard case we should be able to use it publicly. I'm not sure what the exact rules are in the experimental case, but I would assume we should at the least be very wary of letting things out or not do so at all depending on the next point.
The difference between Informational RFC or Experimental RFC sometimes
seems subtle. If a code point definition might be “risky” for the
network health, then “Experimental” is preferable to “Informational”
and the risk ought to be clearly described (see NETBLT).

In non-risky cases, either RFC status would be a reasonable choice.
Informational RFC is likely better if the goal is to encourage others
to use one’s private extension.


Justin (with your WG Chair Hat On, please):

If it is useful, I am happy to draft up some candidate IANA Considerations
text for the list to evaluate, on the assumption that we increase the
code point size to 16-bits. My plan would be to borrow and wordsmith
text from other IETF standards-track RFCs in doing this, not to tread
new ground. (There is no need for the WG to tread any new ground to do
what David and I believe is right.)

Yours,

Ran
Justin Dean
2015-06-20 14:38:30 UTC
Permalink
Ran there is another issue which comes frome a very large first come first
serve assignments space. There is little/no incentive to standardize in the
standard space and we end up with a bunch of DLEP radios with very limited
interoperability support with other vendor DLEP routers. The text based
approach was a compromise to help "solve" this issue, if I'm remembering
correctly. Propsoed text would be fine but I the main issue was/is the
confusion regarding the roles of the different types as presented in the
draft. I see value in both approaches.

Justin Dean
Post by Christopher Dearlove
On 19 Jun 2015, at 17:12 , Christopher Dearlove <
I'm not claiming to be an authority, but I've had some experience. This
is my observation of how I've seen things work, rather than anything
official. As such if, for example, someone comes along and points out that
I've misstated something, with proper references, believe them not me.
And I also realise this is a post which many will see as teaching egg
sucking. Those who do, please do improve on it.
To make things more complicated, we have at least two overlapping
concepts.
First, when we allocate a number space, we typically allocate some
numbers for private or experimental use. (Those two aren't exactly the
same, but close enough for these purposes.) Essentially I shouldn't let
things using those numbers escape onto the wider Internet, they should be
confined to my network.
In my nearly 30 years of IETF experience, the above is not necessarily the case.
There are at least 3 scenarios that one can see if one surveys the set
of IETF standards-track protocols, and probably more than that.
GIVEN: Standards-track numbers are allocated by IANA upon publication
approval for a standards track RFC. On rare occasions, early
allocation from IANA will happen for a standards-track I-D
when IESG believes it is beneficial to do so.
A. The “private” or “experimental” use numbers are NOT allocated by IANA
at all, instead being shared on a non-controlled basis, in which case
packets with those code point values ought not escape one’s
administrative
domain.
B. Some “private” use numbers are allocated “First Come, First Serve” with
“no specification required”.
C. A hybrid of scenarios A & B. In this case there are 3 different code
(1) standards-track
(2) private use & allocated by IANA
(3) experimental use within one’s own administrative domain,
not allocated by IANA, and “its your problem if you have
2 different implementations” for a given code point value
The proposal here is (B), but (C) also would be acceptable.
If (C) is adopted rather than (B), then I’d make the (C3) pool
relatively small (maybe in the range of 8-32 code points).
————————
- more than 8-bits for code points (signals & data items)
- 2 different subsets of code points for each
- a standards-track code point set that are allocated by IANA upon
publication of an IETF standards-track RFC
- private use code points allocated by IANA “First Come, First Served”
with “no specification required”.
And on my network I can do what I like. You can use the same number in
that space for something completely different in your network. Those
numbers aren't allocated. Typically the rest are allocated by IANA (usually
subject to some sort of review process, which makes it not quite first come
first served).
“Expert Review” is another option, in ADDITION to “standards-track RFC
required” and “First Come, First Served”.
Normally, one uses “Expert Review” either as a work-around for an overly
small set of code points (which bug some of us are trying to avoid here)
OR because the protocol was badly designed such that an unrecognized
code point causes the protocol behavior to be unspecified/underspecified
and implementations are likely to crash horribly (again, something this
WG should avoid with DLEP).
As I have said, there are a range of existing IANA allocation approaches
that can be used in an IETF protocol.
We may then progress to an RFC. Which might be experimental or a
Proposed Standard (it could also be informational, but I won't go there).
Obviously in the standard case we should be able to use it publicly. I'm
not sure what the exact rules are in the experimental case, but I would
assume we should at the least be very wary of letting things out or not do
so at all depending on the next point.
The difference between Informational RFC or Experimental RFC sometimes
seems subtle. If a code point definition might be “risky” for the
network health, then “Experimental” is preferable to “Informational”
and the risk ought to be clearly described (see NETBLT).
In non-risky cases, either RFC status would be a reasonable choice.
Informational RFC is likely better if the goal is to encourage others
to use one’s private extension.
If it is useful, I am happy to draft up some candidate IANA Considerations
text for the list to evaluate, on the assumption that we increase the
code point size to 16-bits. My plan would be to borrow and wordsmith
text from other IETF standards-track RFCs in doing this, not to tread
new ground. (There is no need for the WG to tread any new ground to do
what David and I believe is right.)
Yours,
Ran
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Dearlove, Christopher (UK)
2015-06-22 09:49:58 UTC
Permalink
No, not necessarily the case, as I indicated. But most of the protocols I've observed have more control than a free for all in IANA allocated space, plus an experimental space (not the same as an experimental protocol as you know but I though another post muddled) that is privately used. That pattern works well and reduces problems.

What problems? Look at it from the perspective of users, which includes the company I work for. They/we would want to buy DLEP-enabled radios, and DLEP-enabled routers, independently, and have them work together. Unfortunately that's not always as straightforward as it ought to be, but my belief is that some review/control over the creation of new TLVs would make that more likely, while a free for all first come first served in a large space would make it less likely.

In other words, C on your list, which is what I described, without C2. The last protocol I looked at with a C2 IANA registry it was empty after many years of existence. And C2 is worse when you have two types of equipment (radios and routers) talking to each other, rather than one type (routers running a routing protocol) and from different manufacturers. Anything in C2, why not make it in C1?

--
Christopher Dearlove
Senior Principal Engineer
BAE Systems Applied Intelligence
__________________________________________________________________________

T:  +44 (0)1245 242194  |  E: ***@baesystems.com

BAE Systems Applied Intelligence, Chelmsford Technology Park, Great Baddow, Chelmsford, Essex CM2 8HN.
www.baesystems.com/ai
BAE Systems Applied Intelligence Limited
Registered in England & Wales No: 01337451
Registered Office: Surrey Research Park, Guildford, Surrey, GU2 7YP


-----Original Message-----
From: manet [mailto:manet-***@ietf.org] On Behalf Of RJ Atkinson
Sent: 20 June 2015 14:59
To: ***@ietf.org
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14

----------------------! WARNING ! ---------------------- This message originates from outside our organisation, either from an external partner or from the internet.
Consider carefully whether you should click on any links, open any attachments or reply.
Follow the 'Report Suspicious Emails' link on IT matters for instructions on reporting suspicious email messages.
--------------------------------------------------------

*** WARNING ***
This message originates from outside our organization, either from an external partner or the internet. Consider carefully whether you should click on any links, open any attachments or reply. For additional information about Spearphishing, click here <http://intranet.ent.baesystems.com/howwework/security/spotlights/Pages/SpearphishingTips.aspx>. If you feel the email is suspicious, please follow this process. <http://intranet.ent.baesystems.com/howwework/security/spotlights/Documents/Dealing%20With%20Suspicious%20Emails.pdf>
Post by Christopher Dearlove
I'm not claiming to be an authority, but I've had some experience. This is my observation of how I've seen things work, rather than anything official. As such if, for example, someone comes along and points out that I've misstated something, with proper references, believe them not me.
And I also realise this is a post which many will see as teaching egg sucking. Those who do, please do improve on it.
To make things more complicated, we have at least two overlapping concepts.
First, when we allocate a number space, we typically allocate some numbers for private or experimental use. (Those two aren't exactly the same, but close enough for these purposes.) Essentially I shouldn't let things using those numbers escape onto the wider Internet, they should be confined to my network.
In my nearly 30 years of IETF experience, the above is not necessarily the case.

There are at least 3 scenarios that one can see if one surveys the set of IETF standards-track protocols, and probably more than that.

GIVEN: Standards-track numbers are allocated by IANA upon publication
approval for a standards track RFC. On rare occasions, early
allocation from IANA will happen for a standards-track I-D
when IESG believes it is beneficial to do so.

A. The “private” or “experimental” use numbers are NOT allocated by IANA
at all, instead being shared on a non-controlled basis, in which case
packets with those code point values ought not escape one’s administrative
domain.

B. Some “private” use numbers are allocated “First Come, First Serve” with
“no specification required”.

C. A hybrid of scenarios A & B. In this case there are 3 different code
point subsets:
(1) standards-track
(2) private use & allocated by IANA
(3) experimental use within one’s own administrative domain,
not allocated by IANA, and “its your problem if you have
2 different implementations” for a given code point value

The proposal here is (B), but (C) also would be acceptable.

If (C) is adopted rather than (B), then I’d make the (C3) pool relatively small (maybe in the range of 8-32 code points).

I’d like to see:
————————
- more than 8-bits for code points (signals & data items)
- 2 different subsets of code points for each
- a standards-track code point set that are allocated by IANA upon
publication of an IETF standards-track RFC
- private use code points allocated by IANA “First Come, First Served”
with “no specification required”.
Post by Christopher Dearlove
And on my network I can do what I like. You can use the same number in that space for something completely different in your network. Those numbers aren't allocated. Typically the rest are allocated by IANA (usually subject to some sort of review process, which makes it not quite first come first served).
“Expert Review” is another option, in ADDITION to “standards-track RFC required” and “First Come, First Served”.

Normally, one uses “Expert Review” either as a work-around for an overly small set of code points (which bug some of us are trying to avoid here) OR because the protocol was badly designed such that an unrecognized code point causes the protocol behavior to be unspecified/underspecified and implementations are likely to crash horribly (again, something this WG should avoid with DLEP).

As I have said, there are a range of existing IANA allocation approaches that can be used in an IETF protocol.
Post by Christopher Dearlove
We may then progress to an RFC. Which might be experimental or a Proposed Standard (it could also be informational, but I won't go there). Obviously in the standard case we should be able to use it publicly. I'm not sure what the exact rules are in the experimental case, but I would assume we should at the least be very wary of letting things out or not do so at all depending on the next point.
The difference between Informational RFC or Experimental RFC sometimes seems subtle. If a code point definition might be “risky” for the network health, then “Experimental” is preferable to “Informational”
and the risk ought to be clearly described (see NETBLT).

In non-risky cases, either RFC status would be a reasonable choice.
Informational RFC is likely better if the goal is to encourage others to use one’s private extension.


Justin (with your WG Chair Hat On, please):

If it is useful, I am happy to draft up some candidate IANA Considerations
text for the list to evaluate, on the assumption that we increase the
code point size to 16-bits. My plan would be to borrow and wordsmith
text from other IETF standards-track RFCs in doing this, not to tread
new ground. (There is no need for the WG to tread any new ground to do
what David and I believe is right.)

Yours,

Ran

_______________________________________________
manet mailing list
***@ietf.org
https://www.ietf.org/mailman/listinfo/manet
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************
RJ Atkinson
2015-06-20 13:32:33 UTC
Permalink
Post by Ratliff, Stanley
David,
Post by Wiggins, David - 0665 - MITLL
If I go through your story, and everywhere it mentions "experiment" I
a 16 bit extension number, with half of the space reserved for
standardized extensions and half for experimental/non-standard ones.
Perhaps IANA could even assign the experimental ones on a
first-come-first-
serve, no spec required basis to help with interoperability.
1. Creating a "standards-track protocol" with 32,767 experiments, and another 32,767 extensions, isn't much of a standard - everything's pretty much an experiment or an extension.
Using a single extension approach would result in a very fine standard,
because it ensures that DLEP is extensible and won’t need to be redone
in a few years because the extensibility was too limited/constrained.
It also improves interoperability chances because we eliminate the
gratuitous UTF-8 parser from all DLEP implementations.

256 standard extensions is likely not enough given the wide range of
different radio types in use somewhere on the planet — and the rate of
growth in different waveforms and radio types and so forth.

32K extensions is almost certainly larger than we need. I suppose
we could go with a 12-bit field or such like, but alignment benefits
suggest either an 8-bit field (too small) or a 16-bit field (more than
adequately large).
Post by Ratliff, Stanley
2. I don't believe IANA operates that way. They need a WG-approved document
in order to start the assignment process.
This is an incorrect understanding. IANA supports a range of different
allocation policies. Each RFC that creates a new protocol number space
is required to specify the allocation policies to use precisely BECAUSE
IANA supports a range of different policies. If IANA only had one supported
allocation policy, that guidance would not be needed.

IANA operates the way you describe ONLY IF the RFC-specified allocation policy
is to require an IETF WG-approved document. IANA can and does manage various
other protocol spaces (most obvious example: TCP/UDP port numbers) using
“First Come, First Served” with “No specification required”.

David Wiggins’ approach is a very good one. Increase the number space
and split the number space. Make one segment “standards-track” with an
IETF standards-track RFC required for code point allocation from IANA.
Make the other segment “Experimental” with “First Come, First Served”
code point allocation from IANA and “specification not required”.

Yours,

Ran Atkinson
Lou Berger
2015-06-22 18:51:04 UTC
Permalink
Stan,
Post by Ratliff, Stanley
So, we intentionally created a small (3? 4?) "Wild-wild-West sandbox" (the experiments), and the more formal Extensions mechanism, which by necessity, starts with an IETF draft.
I believe the fairly typical way other protocols deal with this issue is
via proper IANA allocation policies, see rfc5226. For example the single
extensions field can be defined to have a range, say 1-N with one policy
and another range, say N-M with another policy.

Based on the discussion I'd suggest :
0,<max value> Reserved
1-N "Standards Action" (for Standards Track
documents) and
"Specification Required" (for other
documents, including experimental)
(The registry allows a request to indicate
which policy applies)
N-<max value-1> Private Use

I think the private use space should be pretty small.
I'd also increase the Extension filed to be larger, as 256 seems pretty
small assuming the protocol has any level of success/long life.

Lou
RJ Atkinson
2015-06-22 20:51:57 UTC
Permalink
Post by Lou Berger
Stan,
So, we intentionally created a small (3? 4?) "Wild-wild-West sandbox”
(the experiments), and the more formal Extensions mechanism,
which by necessity, starts with an IETF draft.
I believe the fairly typical way other protocols deal with this issue is
via proper IANA allocation policies, see rfc5226. For example the single
extensions field can be defined to have a range, say 1-N with one policy
and another range, say N-M with another policy.
0,<max value> Reserved
1-N "Standards Action" (for Standards Track
documents) or "Specification Required”
(for other documents, including experimental)
(The registry allows a request to indicate
which policy applies.)
N-<max value-1> Private Use
I think the private use space should be pretty small.
I'd also increase the Extension filed to be larger,
as 256 seems pretty small assuming the protocol has
any level of success/long life.
Lou
I agree that something along the lines of what Lou proposed above
seems like a reasonable basis for a compromise.

I concur that 256 is too small a number for <max value>.

Quoting from RFC 5226, Section 4.1, Page 10:

"Specification Required - Values and their meanings must be
documented in a permanent and readily available public
specification, in sufficient detail so that interoperability
between independent implementations is possible. When used,
Specification Required also implies use of a Designated
Expert, who will review the public specification and
evaluate whether it is sufficiently clear to allow
interoperable implementations. The intention behind
"permanent and readily available" is that a document can
reasonably be expected to be findable and retrievable long
after IANA assignment of the requested value. Publication
of an RFC is an ideal means of achieving this requirement,
but Specification Required is intended to also cover the
case of a document published outside of the RFC path. For
RFC publication, the normal RFC review process is expected
to provide the necessary review for interoperability, though
the Designated Expert may be a particularly well-qualified
person to perform such a review.

Examples: Diffserv-aware TE Bandwidth Constraints Model
Identifiers [RFC4124], TLS ClientCertificateType Identifiers
[RFC4346], ROHC Profile Identifiers [RFC4995]."

Yours,

Ran
Rick Taylor
2015-06-23 08:27:29 UTC
Permalink
Comments inline...
Post by RJ Atkinson
Post by Lou Berger
Stan,
So, we intentionally created a small (3? 4?) "Wild-wild-West sandbox”
(the experiments), and the more formal Extensions mechanism,
which by necessity, starts with an IETF draft.
I believe the fairly typical way other protocols deal with this issue is
via proper IANA allocation policies, see rfc5226. For example the single
extensions field can be defined to have a range, say 1-N with one policy
and another range, say N-M with another policy.
0,<max value> Reserved
1-N "Standards Action" (for Standards Track
documents) or "Specification Required”
(for other documents, including experimental)
(The registry allows a request to indicate
which policy applies.)
N-<max value-1> Private Use
I think the private use space should be pretty small.
I'd also increase the Extension filed to be larger,
as 256 seems pretty small assuming the protocol has
any level of success/long life.
Lou
I agree that something along the lines of what Lou proposed above
seems like a reasonable basis for a compromise.
I concur that 256 is too small a number for <max value>.
"Specification Required - Values and their meanings must be
documented in a permanent and readily available public
specification, in sufficient detail so that interoperability
between independent implementations is possible. When used,
Specification Required also implies use of a Designated
Expert, who will review the public specification and
evaluate whether it is sufficiently clear to allow
interoperable implementations. The intention behind
"permanent and readily available" is that a document can
reasonably be expected to be findable and retrievable long
after IANA assignment of the requested value. Publication
of an RFC is an ideal means of achieving this requirement,
but Specification Required is intended to also cover the
case of a document published outside of the RFC path. For
RFC publication, the normal RFC review process is expected
to provide the necessary review for interoperability, though
the Designated Expert may be a particularly well-qualified
person to perform such a review.
Examples: Diffserv-aware TE Bandwidth Constraints Model
Identifiers [RFC4124], TLS ClientCertificateType Identifiers
[RFC4346], ROHC Profile Identifiers [RFC4995]."
Okay, this seems sensible, given we expand the id bits to 16, and have
no special 0 value, then we can have a registry for data items and a
second for signals, like so:

0 - M: IANA allocated, DLEP 'core' ids (from this soon-to-be-RFC)
M - N: Reserved for IANA allocated Extensions ids (as they arrive)
N - 0xFFF: Private space, reserved for Experiments.

M is 26 for data items, and 16 for signals.

I am thinking, that N should be 0xFF00.

How's that?

Rick
Ratliff, Stanley
2015-06-23 13:33:25 UTC
Permalink
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Tuesday, June 23, 2015 4:27 AM
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
Comments inline...
Post by RJ Atkinson
Post by Lou Berger
Stan,
Post by Ratliff, Stanley
So, we intentionally created a small (3? 4?) "Wild-wild-West sandbox"
(the experiments), and the more formal Extensions mechanism, which
by necessity, starts with an IETF draft.
I believe the fairly typical way other protocols deal with this issue
is via proper IANA allocation policies, see rfc5226. For example the
single extensions field can be defined to have a range, say 1-N with
one policy and another range, say N-M with another policy.
0,<max value> Reserved
1-N "Standards Action" (for Standards Track
documents) or "Specification Required"
(for other documents, including experimental)
(The registry allows a request to indicate
which policy applies.)
N-<max value-1> Private Use
I think the private use space should be pretty small.
I'd also increase the Extension filed to be larger, as 256 seems
pretty small assuming the protocol has any level of success/long
life.
Lou
I agree that something along the lines of what Lou proposed above
seems like a reasonable basis for a compromise.
I concur that 256 is too small a number for <max value>.
"Specification Required - Values and their meanings must be
documented in a permanent and readily available public
specification, in sufficient detail so that interoperability
between independent implementations is possible. When used,
Specification Required also implies use of a Designated
Expert, who will review the public specification and
evaluate whether it is sufficiently clear to allow
interoperable implementations. The intention behind
"permanent and readily available" is that a document can
reasonably be expected to be findable and retrievable long
after IANA assignment of the requested value. Publication
of an RFC is an ideal means of achieving this requirement,
but Specification Required is intended to also cover the
case of a document published outside of the RFC path. For
RFC publication, the normal RFC review process is expected
to provide the necessary review for interoperability, though
the Designated Expert may be a particularly well-qualified
person to perform such a review.
Examples: Diffserv-aware TE Bandwidth Constraints Model
Identifiers [RFC4124], TLS ClientCertificateType Identifiers
[RFC4346], ROHC Profile Identifiers [RFC4995]."
Okay, this seems sensible, given we expand the id bits to 16, and have no
special 0 value, then we can have a registry for data items and a second for
0 - M: IANA allocated, DLEP 'core' ids (from this soon-to-be-RFC)
M - N: Reserved for IANA allocated Extensions ids (as they arrive)
N - 0xFFF: Private space, reserved for Experiments.
M is 26 for data items, and 16 for signals.
I am thinking, that N should be 0xFF00.
I think the private space is too large. IMO, it shouldn't be any larger than 5.

Regards,
Stan
Post by Dearlove, Christopher (UK)
How's that?
Rick
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Lou Berger
2015-06-23 14:23:04 UTC
Permalink
Rick,

See below.
Post by Rick Taylor
Comments inline...
Post by RJ Atkinson
Post by Lou Berger
Stan,
So, we intentionally created a small (3? 4?) "Wild-wild-West sandbox”
(the experiments), and the more formal Extensions mechanism,
which by necessity, starts with an IETF draft.
I believe the fairly typical way other protocols deal with this issue is
via proper IANA allocation policies, see rfc5226. For example the single
extensions field can be defined to have a range, say 1-N with one policy
and another range, say N-M with another policy.
0,<max value> Reserved
1-N "Standards Action" (for Standards Track
documents) or "Specification Required”
(for other documents, including experimental)
(The registry allows a request to indicate
which policy applies.)
N-<max value-1> Private Use
I think the private use space should be pretty small.
I'd also increase the Extension filed to be larger,
as 256 seems pretty small assuming the protocol has
any level of success/long life.
Lou
I agree that something along the lines of what Lou proposed above
seems like a reasonable basis for a compromise.
I concur that 256 is too small a number for <max value>.
"Specification Required - Values and their meanings must be
documented in a permanent and readily available public
specification, in sufficient detail so that interoperability
between independent implementations is possible. When used,
Specification Required also implies use of a Designated
Expert, who will review the public specification and
evaluate whether it is sufficiently clear to allow
interoperable implementations. The intention behind
"permanent and readily available" is that a document can
reasonably be expected to be findable and retrievable long
after IANA assignment of the requested value. Publication
of an RFC is an ideal means of achieving this requirement,
but Specification Required is intended to also cover the
case of a document published outside of the RFC path. For
RFC publication, the normal RFC review process is expected
to provide the necessary review for interoperability, though
the Designated Expert may be a particularly well-qualified
person to perform such a review.
Examples: Diffserv-aware TE Bandwidth Constraints Model
Identifiers [RFC4124], TLS ClientCertificateType Identifiers
[RFC4346], ROHC Profile Identifiers [RFC4995]."
Okay, this seems sensible, given we expand the id bits to 16, and have
no special 0 value, then we can have a registry for data items and a
0 - M: IANA allocated, DLEP 'core' ids (from this soon-to-be-RFC)
M - N: Reserved for IANA allocated Extensions ids (as they arrive)
N - 0xFFF: Private space, reserved for Experiments.
I would not use the word experiments here as it has a specific meaning
to iana. The "Private" policy as defined in rfc5226 should suffice. no?
Post by Rick Taylor
M is 26 for data items, and 16 for signals.
Given that signal values and data item values are carried in separate
fields they are their own number spaces and should have their own
registries. Assignment in each should start at 1. (1-16 for signals,
1-26 for data items.) To avoid issues in the long term, a single number
base should be used (i.e., base 10).

Lou
Post by Rick Taylor
I am thinking, that N should be 0xFF00.
How's that?
Rick
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
RJ Atkinson
2015-06-23 14:58:47 UTC
Permalink
Post by Rick Taylor
Okay, this seems sensible, given we expand the id bits to 16, and have
no special 0 value,
I’m not sure what “no special 0 value” means just above.

My understanding of Lou’s proposal was that both 0 and
max-value would be Reserved — as in not allocated/used.
This is quite common in IETF standards-track protocols.
Post by Rick Taylor
then we can have a registry for data items and a
0 - M: IANA allocated, DLEP 'core' ids (from this soon-to-be-RFC)
M - N: Reserved for IANA allocated Extensions ids (as they arrive)
Under Lou’s proposal, any IANA allocated Extension ID either
(A) would be IETF standards-track or (B) would be “Specification
Required” so anyone could implement it and be interoperable.

With his proposal, it becomes trivial to move a non-standard
extension into a standard extension — simply publish an RFC
saying that extension with ID=X is now standards-track —
without needing to change ANY code in ANY existing implementation.
That has real interoperability advantages.

So I don’t see a value in separating these numeric ranges.
With a 16-bit Data Item space, we don’t need to separate them out.
Post by Rick Taylor
N - 0xFFF: Private space, reserved for Experiments.
Hmm. Can we please discuss this using integers, as is
commonly done in standards-track RFC IANA Considerations
sections, rather than discussing using a mixture of
integer and hexadecimal notations ?
Post by Rick Taylor
M is 26 for data items, and 16 for signals.
I am thinking, that N should be 0xFF00.
I am confused about precisely what is being proposed above,
given the mixture of hex and decimal notations.

For now, I prefer Lou’s proposed approach, in part because
I believe I understand what he is proposing.

Yours,

Ran
Wiggins, David - 0665 - MITLL
2015-06-23 13:34:10 UTC
Permalink
Hi Lou,

I like this direction as a replacement for the experiment string. I think
a unified mechanism simplifies understanding of the protocol. It seems
like the implementation would be simpler too, since you don't have to make
two different extension mechanisms play well together. A few questions
below...
Post by Lou Berger
Stan,
Post by Ratliff, Stanley
So, we intentionally created a small (3? 4?) "Wild-wild-West sandbox"
(the experiments), and the more formal Extensions mechanism, which by
necessity, starts with an IETF draft.
I believe the fairly typical way other protocols deal with this issue is
via proper IANA allocation policies, see rfc5226. For example the single
extensions field can be defined to have a range, say 1-N with one policy
and another range, say N-M with another policy.
0,<max value> Reserved
1-N "Standards Action" (for Standards Track
documents) and "Specification Required" (for other
documents, including experimental)
(The registry allows a request to indicate which policy
applies)
N-<max value-1> Private Use
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case). So I'm not
clear on the sense of "Reserved" here.

For the Private Use range, which policy (from Ran's message a few days
ago) do these follow? :

A. The ³private² or ³experimental² use numbers are NOT allocated by IANA
at all, instead being shared on a non-controlled basis, in which case
packets with those code point values ought not escape one¹s
administrative
domain.

B. Some ³private² use numbers are allocated ³First Come, First Serve²
with
³no specification required².

C. A hybrid of scenarios A & B. In this case there are 3 different
code
point subsets:
(1) standards-track
(2) private use & allocated by IANA
(3) experimental use within one¹s own administrative domain,
not allocated by IANA, and ³its your problem if you have
2 different implementations² for a given code point value


I like C (except Private Use would not include standards-track); you get a
little bit of everything.


David
Lou Berger
2015-06-23 14:07:25 UTC
Permalink
David,
See below.
Post by Wiggins, David - 0665 - MITLL
Hi Lou,
I like this direction as a replacement for the experiment string. I think
a unified mechanism simplifies understanding of the protocol. It seems
like the implementation would be simpler too, since you don't have to make
two different extension mechanisms play well together. A few questions
below...
Post by Lou Berger
Stan,
Post by Ratliff, Stanley
So, we intentionally created a small (3? 4?) "Wild-wild-West sandbox"
(the experiments), and the more formal Extensions mechanism, which by
necessity, starts with an IETF draft.
I believe the fairly typical way other protocols deal with this issue is
via proper IANA allocation policies, see rfc5226. For example the single
extensions field can be defined to have a range, say 1-N with one policy
and another range, say N-M with another policy.
0,<max value> Reserved
1-N "Standards Action" (for Standards Track
documents) and "Specification Required" (for other
documents, including experimental)
(The registry allows a request to indicate which policy
applies)
N-<max value-1> Private Use
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
There was comma there. Let me try this:
0 Reserved
<max value> Reserved
Post by Wiggins, David - 0665 - MITLL
So I'm not clear on the sense of "Reserved" here.
https://tools.ietf.org/html/rfc5226#section-4

Reserved: Not to be assigned. Reserved values are held for
special uses, such as to extend the namespace when it become
exhausted. Reserved values are not available for general
assignment.
Post by Wiggins, David - 0665 - MITLL
For the Private Use range, which policy (from Ran's message a few days
A. The ³private² or ³experimental² use numbers are NOT allocated by IANA
at all, instead being shared on a non-controlled basis, in which case
packets with those code point values ought not escape one¹s
administrative
domain.
B. Some ³private² use numbers are allocated ³First Come, First Serve²
with
³no specification required².
C. A hybrid of scenarios A & B. In this case there are 3 different
code
(1) standards-track
(2) private use & allocated by IANA
(3) experimental use within one¹s own administrative domain,
not allocated by IANA, and ³its your problem if you have
2 different implementations² for a given code point value
I like C (except Private Use would not include standards-track); you get a
little bit of everything.
The terms I used are also defined in rfc5226

Standards Action - Values are assigned only for Standards Track
RFCs approved by the IESG.

Examples: BGP message types [RFC4271 <https://tools.ietf.org/html/rfc4271>], Mobile Node
Identifier option types [RFC4283 <https://tools.ietf.org/html/rfc4283>], DCCP Packet Types
[RFC4340 <https://tools.ietf.org/html/rfc4340>].


Specification Required - Values and their meanings must be
documented in a permanent and readily available public
specification, in sufficient detail so that interoperability
between independent implementations is possible. When used,
Specification Required also implies use of a Designated
Expert, who will review the public specification and
evaluate whether it is sufficiently clear to allow
interoperable implementations. The intention behind
"permanent and readily available" is that a document can
reasonably be expected to be findable and retrievable long
after IANA assignment of the requested value. Publication
of an RFC is an ideal means of achieving this requirement,
but Specification Required is intended to also cover the
case of a document published outside of the RFC path. For
RFC publication, the normal RFC review process is expected
to provide the necessary review for interoperability, though
the Designated Expert may be a particularly well-qualified
person to perform such a review.

Examples: Diffserv-aware TE Bandwidth Constraints Model
Identifiers [RFC4124 <https://tools.ietf.org/html/rfc4124>], TLS ClientCertificateType Identifiers
[RFC4346 <https://tools.ietf.org/html/rfc4346>], ROHC Profile Identifiers [RFC4995 <https://tools.ietf.org/html/rfc4995>].


Private Use - For private or local use only, with the type and
purpose defined by the local site. No attempt is made to
prevent multiple sites from using the same value in
different (and incompatible) ways. There is no need for
IANA to review such assignments (since IANA does not record
them) and assignments are not generally useful for broad
interoperability. It is the responsibility of the sites
making use of the Private Use range to ensure that no
conflicts occur (within the intended scope of use).

Examples: Site-specific options in DHCP [DHCP-IANA <https://tools.ietf.org/html/rfc5226#ref-DHCP-IANA>], Fibre
Channel Port Type Registry [RFC4044 <https://tools.ietf.org/html/rfc4044>], Exchange Types in the
IKEv2 header [RFC4306 <https://tools.ietf.org/html/rfc4306>].


Lou
Post by Wiggins, David - 0665 - MITLL
David
Wiggins, David - 0665 - MITLL
2015-06-23 15:00:06 UTC
Permalink
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the whole
range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.

David
Rick Taylor
2015-06-23 15:40:38 UTC
Permalink
First, apologies for mixing hex and decimal.

Following from Lou's RFC5226 guidance:

For data item ids:

0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved

For signal ids:

0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved

For Extension ids:

0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved

Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.

Hope that's clearer?

Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the whole
range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
Ratliff, Stanley
2015-06-23 15:43:14 UTC
Permalink
Rick,

I'm still of the opinion that the private-use space is too large.

Regards,
Stan
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Tuesday, June 23, 2015 11:41 AM
To: Wiggins, David - 0665 - MITLL; Lou Berger; Ratliff, Stanley; RJ Atkinson;
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the
whole range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Henning Rogge
2015-06-23 15:48:18 UTC
Permalink
Stan,

my "layer 2 frame statistics" would need (if I want to transmit
everything) 8 or 10 data items... the "layer1 data export" is I think
6 or 8 data items.

I think 15 TLV types for experiments is not that much. It might not
even be enough to run both of my experiments at the same time.

Henning
Post by Ratliff, Stanley
Rick,
I'm still of the opinion that the private-use space is too large.
Regards,
Stan
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Tuesday, June 23, 2015 11:41 AM
To: Wiggins, David - 0665 - MITLL; Lou Berger; Ratliff, Stanley; RJ Atkinson;
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the
whole range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Rick Taylor
2015-06-23 15:50:17 UTC
Permalink
Stan,

I'm not convinced. If we put in the effort to allow (possibly multiple)
experiments, we may as well give them enough room to run them.

I would personally like to give them more than 14 ids. 254 seems more
generous, but I know you are worried about being too 'loose'.

Rick
Post by Ratliff, Stanley
Rick,
I'm still of the opinion that the private-use space is too large.
Regards,
Stan
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Tuesday, June 23, 2015 11:41 AM
To: Wiggins, David - 0665 - MITLL; Lou Berger; Ratliff, Stanley; RJ Atkinson;
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the
whole range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Wiggins, David - 0665 - MITLL
2015-06-23 15:57:38 UTC
Permalink
I also think the private space is too small. The effect could be to force
people to encroach on the Specification Required space to get more
Privates, making the division meaningless. 254 would probably be enough,
though I'm not really seeing the harm in making it even larger.

David
Post by Rick Taylor
Stan,
I'm not convinced. If we put in the effort to allow (possibly multiple)
experiments, we may as well give them enough room to run them.
I would personally like to give them more than 14 ids. 254 seems more
generous, but I know you are worried about being too 'loose'.
Rick
Post by Ratliff, Stanley
Rick,
I'm still of the opinion that the private-use space is too large.
Regards,
Stan
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Tuesday, June 23, 2015 11:41 AM
To: Wiggins, David - 0665 - MITLL; Lou Berger; Ratliff, Stanley; RJ Atkinson;
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the
whole range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Rick Taylor
2015-06-23 16:25:00 UTC
Permalink
The original reasons for having a very small Private Use space were:

1) We only had 256 ids.

2) We didn't want experiments to become de-facto Extensions.

3) We were worried that a more generous Private Use space would set of
alarm bells at the draft passed through the various review stages.

Now with the wider id field, 1) is now irrelevant, but we need guidance
on 3), and 2) might be impossible to solve.

Lou, do you have a comment?

Rick
Post by Wiggins, David - 0665 - MITLL
I also think the private space is too small. The effect could be to force
people to encroach on the Specification Required space to get more
Privates, making the division meaningless. 254 would probably be enough,
though I'm not really seeing the harm in making it even larger.
David
Post by Rick Taylor
Stan,
I'm not convinced. If we put in the effort to allow (possibly multiple)
experiments, we may as well give them enough room to run them.
I would personally like to give them more than 14 ids. 254 seems more
generous, but I know you are worried about being too 'loose'.
Rick
Post by Ratliff, Stanley
Rick,
I'm still of the opinion that the private-use space is too large.
Regards,
Stan
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Tuesday, June 23, 2015 11:41 AM
To: Wiggins, David - 0665 - MITLL; Lou Berger; Ratliff, Stanley; RJ Atkinson;
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the
whole range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Lou Berger
2015-06-23 16:36:57 UTC
Permalink
Rick,
Post by Rick Taylor
1) We only had 256 ids.
2) We didn't want experiments to become de-facto Extensions.
3) We were worried that a more generous Private Use space would set of
alarm bells at the draft passed through the various review stages.
Now with the wider id field, 1) is now irrelevant, but we need guidance
on 3), and 2) might be impossible to solve.
Lou, do you have a comment?
I suspect that some relatively small number, say in the small 100s, of
private use values is unlikely to cause too many question. Keep in mind
that private use is not the same as experimental use from the
IANA/process perspective:

Private Use - For private or local use only, with the type and
purpose defined by the local site. No attempt is made to
prevent multiple sites from using the same value in
different (and incompatible) ways. There is no need for
IANA to review such assignments (since IANA does not record
them) and assignments are not generally useful for broad
interoperability. It is the responsibility of the sites
making use of the Private Use range to ensure that no
conflicts occur (within the intended scope of use).

Examples: Site-specific options in DHCP [DHCP-IANA <https://tools.ietf.org/html/rfc5226#ref-DHCP-IANA>], Fibre
Channel Port Type Registry [RFC4044 <https://tools.ietf.org/html/rfc4044>], Exchange Types in the
IKEv2 header [RFC4306 <https://tools.ietf.org/html/rfc4306>].

I don't think a specific experimental use range/policy serves much value
as it complicates transition from experiment to standard - and the
specification required policy can support experimental non-private usage.

Lou
Post by Rick Taylor
Rick
Post by Wiggins, David - 0665 - MITLL
I also think the private space is too small. The effect could be to force
people to encroach on the Specification Required space to get more
Privates, making the division meaningless. 254 would probably be enough,
though I'm not really seeing the harm in making it even larger.
David
Post by Rick Taylor
Stan,
I'm not convinced. If we put in the effort to allow (possibly multiple)
experiments, we may as well give them enough room to run them.
I would personally like to give them more than 14 ids. 254 seems more
generous, but I know you are worried about being too 'loose'.
Rick
Post by Ratliff, Stanley
Rick,
I'm still of the opinion that the private-use space is too large.
Regards,
Stan
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Tuesday, June 23, 2015 11:41 AM
To: Wiggins, David - 0665 - MITLL; Lou Berger; Ratliff, Stanley; RJ Atkinson;
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the
whole range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the individual
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this email
in error, please delete it and immediately notify the sender.
_____________________________________________________
Justin Dean
2015-06-23 17:17:30 UTC
Permalink
Private use in the 100-200 range seems appropriate to me. It should be
large enough to provide space for multiple experiments to be run at the
same time but not so large that number collisions wouldn't be a worry.
Pushing people who use/create these extensions to document/specify and grab
an official code point.

On Tue, Jun 23, 2015 at 12:25 PM, Rick Taylor <
Post by Rick Taylor
1) We only had 256 ids.
2) We didn't want experiments to become de-facto Extensions.
3) We were worried that a more generous Private Use space would set of
alarm bells at the draft passed through the various review stages.
Now with the wider id field, 1) is now irrelevant, but we need guidance
on 3), and 2) might be impossible to solve.
Lou, do you have a comment?
Rick
Post by Wiggins, David - 0665 - MITLL
I also think the private space is too small. The effect could be to
force
Post by Wiggins, David - 0665 - MITLL
people to encroach on the Specification Required space to get more
Privates, making the division meaningless. 254 would probably be enough,
though I'm not really seeing the harm in making it even larger.
David
Post by Rick Taylor
Stan,
I'm not convinced. If we put in the effort to allow (possibly multiple)
experiments, we may as well give them enough room to run them.
I would personally like to give them more than 14 ids. 254 seems more
generous, but I know you are worried about being too 'loose'.
Rick
Post by Ratliff, Stanley
Rick,
I'm still of the opinion that the private-use space is too large.
Regards,
Stan
Post by Dearlove, Christopher (UK)
-----Original Message-----
Sent: Tuesday, June 23, 2015 11:41 AM
To: Wiggins, David - 0665 - MITLL; Lou Berger; Ratliff, Stanley; RJ Atkinson;
Subject: Re: [manet] RtgDir review: draft-ietf-manet-dlep-14
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the
whole range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required,
but
Post by Wiggins, David - 0665 - MITLL
Post by Rick Taylor
Post by Ratliff, Stanley
Post by Dearlove, Christopher (UK)
Post by Wiggins, David - 0665 - MITLL
still IANA-registered" option.
David
_____________________________________________________
This electronic message and any files transmitted with it contains
information from iDirect, which may be privileged, proprietary
and/or confidential. It is intended solely for the use of the
individual
Post by Wiggins, David - 0665 - MITLL
Post by Rick Taylor
Post by Ratliff, Stanley
or entity to whom they are addressed. If you are not the original
recipient or the person responsible for delivering the email to the
intended recipient, be advised that you have received this email
in error, and that any use, dissemination, forwarding, printing, or
copying of this email is strictly prohibited. If you received this
email
Post by Wiggins, David - 0665 - MITLL
Post by Rick Taylor
Post by Ratliff, Stanley
in error, please delete it and immediately notify the sender.
_____________________________________________________
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Rick Taylor
2015-06-23 15:47:11 UTC
Permalink
Oops, cut'n'paste problem!

Should be:

For Extension ids:

0 - Reserved
1 - Standards Action - DLEP Credit Windowing
2-65534 - Specification Required - future Extension ids
65535 - Reserved

Sorry

Rick
Post by Rick Taylor
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the whole
range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Wiggins, David - 0665 - MITLL
2015-06-23 15:51:43 UTC
Permalink
I think we need some Private Use extension ids too.

David
Post by Rick Taylor
Oops, cut'n'paste problem!
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
2-65534 - Specification Required - future Extension ids
65535 - Reserved
Sorry
Rick
Post by Rick Taylor
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the whole
range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Rick Taylor
2015-06-23 15:56:29 UTC
Permalink
Post by Wiggins, David - 0665 - MITLL
I think we need some Private Use extension ids too.
No, Extensions are Specification Required by design. Experiments are
provided for Private Use id use.

Rick
Post by Wiggins, David - 0665 - MITLL
David
Post by Rick Taylor
Oops, cut'n'paste problem!
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
2-65534 - Specification Required - future Extension ids
65535 - Reserved
Sorry
Rick
Post by Rick Taylor
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the whole
range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
Lou Berger
2015-06-23 17:14:31 UTC
Permalink
Rick,
Specific values need to be provided for delp defined registries. I
think you have :

Registry: DLEP Signal Type
Range Registration Procedures
--------- --------------------------------
0-N, M Standards Action or Specification Required
N-(M-1) Private Use

Value Use
------- -------------------------------
0 Reserved
1 Peer Discovery
2 Peer Offer
3 Peer Initialization
4 Peer Initialization ACK
5 Peer Update
6 Peer Update ACK
7 Peer Termination
8 Peer Termination ACK
9 Destination Up
10 Destination Up ACK
11 Destination Down
12 Destination Down ACK
13 Destination Update
14 Heartbeat
15 Link Characteristics Request
16 Link Characteristics ACK
17-N Unassigned
N-(M-1) Private Use
M Reserved

Registry: DLEP Data Item Type

Range Registration Procedures
--------- --------------------------------
0-N, 65535 Standards Action or Specification Required
N-65534 Private Use

Value Use
------- -------------------------------
0 Reserved
1 Status
2 IPv4 Connection Point
3 IPv6 Connection Point
4 Peer Type
5 Heartbeat Interval
6 Extensions Supported
7 Experimental Definition
8 MAC Address
9 IPv4 Address
10 IPv6 Address
11 IPv4 Attached Subnet
12 IPv6 Attached Subnet
13 Maximum Data Rate (Receive) MDRR)
14 Maximum Data Rate (Transmit) (MDRT)
15 Current Data Rate (Receive) (CDRR)
16 Current Data Rate (Transmit) (CDRT)
17 Latency
18 Resources (Receive) (RESR)
19 Resources (Transmit) (REST)
20 Relative Link Quality (Receive) (RLQR)
21 Relative Link Quality (Transmit)(RLQT)
22 Link Characteristics ACK Timer
23 Credit Grant
24 Credit Window Status
25 Credit Request
26-N Unassigned
N-65534 Private Use
65535 Reserved

Registry: DLEP Extension Type

Range Registration Procedures
--------- --------------------------------
0-N, 65535 Standards Action or Specification Required
N-65534 Private Use

Value Use
------- -------------------------------
0 Reserved
1 Credit-Windowing
2-N Unassigned
N-65534 Private Use
65535 Reserved


Lou
Post by Rick Taylor
Oops, cut'n'paste problem!
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
2-65534 - Specification Required - future Extension ids
65535 - Reserved
Sorry
Rick
Post by Rick Taylor
First, apologies for mixing hex and decimal.
0 - Reserved
1-20 - Standards Action - DLEP core
21-23 - Standards Action - Credit windowing
24-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1-16 - Standards Action - DLEP core
17-65519 - Specification Required - space for future Extensions
65520-65534 - Private Use - space for Experiments
65535 - Reserved
0 - Reserved
1 - Standards Action - DLEP Credit Windowing
17-65534 - Specification Required - future Extension ids
65535 - Reserved
Experiments MUST use the Private Use area. Extensions MUST use the
Specification Required area.
Hope that's clearer?
Rick
Post by Wiggins, David - 0665 - MITLL
Post by Lou Berger
Post by Wiggins, David - 0665 - MITLL
The Reserved range above encompasses the entire range (I'm assuming <max
value> refers to the same value in the 1st and 3rd case).
0 Reserved
<max value> Reserved
Yes, that was my confusion. You're reserving two values, not the whole
range.
Post by Lou Berger
The terms I used are also defined in rfc5226
I plead guilty for not having read 5226, so the excerpts are helpful.
Thanks. I guess we can do without the "no specification required, but
still IANA-registered" option.
David
_______________________________________________
manet mailing list
https://www.ietf.org/mailman/listinfo/manet
RJ Atkinson
2015-06-20 13:16:26 UTC
Permalink
Post by Ratliff, Stanley
So, let's start with a scenario - assume that DLEP is now RFC-blah-de-blah, and I have an interoperable version deployed. The sun is rising in the East, the crops are bountiful, and I've *finally* lost that pesky 30lbs (OK, more like 40) that my doctor keeps needling me about. And then... I get this great idea, having to do with DLEP. With a small handful of data items, and a correspondingly small number of signals, I can put an "It-will-even-make-coffee-for-you-in-the-morning" feature in my modem. But, DLEP is this fixed, interoperable protocol. So what to do, what to do?
Here is a simpler scenario that allows for radio-unique extensions,
eliminates the need for a 2nd parser (parsing UTF-8 rather than bits)
and is consistent with MANY prior IETF protocols…


Go to IANA and ask them to assign me Experimental-status Data
Item code point(s) and/or Signal code point(s).
Post by Ratliff, Stanley
With the -14 draft, I can implement this, *initially*, as an "Experiment". I conjure up the necessary signals ("DLEP_COFFEEMAKER_START", "DLEP_COFFEEMAKER_STOP"), and also the requisite data items ("DLEP_COLUMBIAN")... actually, I'd probably add "DLEP_SUMATRAN", since this is a "high-end" modem, but that's another story...
I also map out how these signals/data items look (e.g., is the DLEP_COLUMBIAN data item 8 bits, 16 bits, or just 1?), and then I start looking for a router vendor to "play nice with me", and support my coffee maker experiment. Assuming I find such a router vendor, we implement the "Coffee Maker Experiment" - and again, since this is *my* scenario, we'll assume that's its wildly successful. All of my beta test sites are "Slurping coffee on the move", and enjoying it. In fact, it's so wildly popular that other modem manufacturers are now discussing bolting coffee makers onto their modems…
Based on working with a large radio manufacturer, I think that in many cases
these additional code points will be either (a) inherently unique to the
particular radio or (b) inherently unique to some property of the radio,
modulation scheme/waveform, frequency bands, or something else physical.

So I doubt that a typical extension would have utility for most folks.
Post by Ratliff, Stanley
So, at this point, it's time for me and my router-vendor partner to approach the MANET WG with a draft describing the Coffee-Maker "Experiment" as a DLEP "Extension". And true to form, the WG debates the weighty issues (e.g., Should there be a DLEP_ARABICA data item? NO! YES! Wait! We should allow it to MAKE TEA! Yes, that's the ticket! It MUST [proper homage to RFC 2119] contain a DLEP_EARL_GREY data item!), ad-nauseum, over a period of time that you thought would take a couple of IETF meetings, but actually spans about 5 years (in other words, you *thought* it was going to be a project, but it turned into a career path)…
Using Stan’s approach, we get to throw away the running code (because it is UTF-8
rather than using bits) and an entirely new data element or signal gets added.

Users now have to wait for (a) the existing radio vendor to implement the new
things and (b) the existing router vendor(s) to implement the new things and (c)
interoperability issues to be sorted out between the various new implementations.

Alternatively, if we have a single extensions mechanism, and if the party that
obtained the extension codes from IANA thinks it is more broadly useful,
then that party can publish an Informational status or Experimental status
RFC (e.g. on the RFC-Editor track, without a lot of process overhead).

With this approach, we avoid having 2 parsers (bits vs UTF-8), we have
enough Data Item space and Signal space for the foreseeable future
(8-bits is too small even if one assumes Stan’s concept), and we avoid
a totally gratuitous period of re-inventing the wheel using bits
instead of UTF-8.

Things that are useful and openly specified get deployed, regardless
of their IETF status.

Of course, if radio designer A and radio designer B happen coincidentally
to each design different approaches to the same underlying technology
issue, nothing prevents one or both (or some user or some router vendor)
from proposing that the appropriate WG (MANET for now) create a standard
Data Item or standard Signal for the situation at hand.
Post by Ratliff, Stanley
Finally, clearing Working Group Last Call (and *then* getting a crap-ton of really useful comments, because apparently, no one reads these things unless/until there's supposedly no chance to change them), you get the official, approved, "DLEP Coffee Maker Extension" registered with IANA... I and my router-vendor partner (actually, my grandchild and my router-vendor partner's grandchild, since it's taken so long) can then swap over our code to stop using the "Experiment", and use the official "Extension" data items and signals.
This is WAY WAY too complex, and the change of syntax between “Experiments”
and “Extensions” is totally gratuitous (value subtract), and it is unrealistic.

For both physics reasons and technology reasons, there will be some Data Items
(and maybe some Signals) that are inherently tied to the particular radio,
waveform, frequency band, or what have you.

Purely as an example, there is an OpenGroup consortium called DirecNet (TM)
that are developing an open-standards radio specification that would be
useful for 1st responders. Having some waveform-specific Data Items
would be helpful for most waveforms. (Caveat: While I am aware of DirecNet,
and I have attended a meeting or two, my client is NOT a member of DirecNet.)
Post by Ratliff, Stanley
But my point here is, that all the while, my customers have been merrily "slupring coffee on the move, and enjoying it" - utilizing the "Experimental" TLVs gives me (us, actually) the ability to actually be *responsive* to our customers, testing out (and even deploying in limited fashion) changes to the protocol. If/when those "experiments" prove successful, the mechanism even gives implementers the ability to shift the code from "Experiment" to "Extension", providing backward-level compatibility for the move (nothing stops me from supporting the exact same functionality in "Experimental" mode that I'm supporting with a now-documented "Extension").
But the approach you outline doubles the work versus simply publishing an
Informational or Experimental status RFC once things are sorted out fully.
Post by Ratliff, Stanley
...and that was the motivation behind having both "Experimental" TLVs, and a documented "Extension" mechanism...
I appreciate the explanation. I understand the reasoning. I don’t
think that is a good approach. The additional complexity, including
but not limited to having an entire 2nd parser, is too much and
the approach is not likely to work well given the real-world constraints.

I would like to see a more conventional IETF approach where we have an
obviously large enough code space for Data Items and for Signals, and
have an ability to have both standard and non-standard Data Items and
Signals added over time as appropriate.

Yours,

Ran Atkinson
Rick Taylor
2015-06-22 09:21:42 UTC
Permalink
Okay, I'm back and I'm jumping in on this one with my author hat on...

The historical reason for both Experiments and Extensions are:

1) We tried it a different way - 'Optional Data Items supported (and
friends)' and everyone hated it.

2) There was general consensus that DLEP should be extensible so that
progress could be made standardizing the core functionality without
preventing further good work becoming 'standard extensions' at a later date.

3) Implementers wanted some 'local administratively scoped' sandbox for
their own experiments, prior to approaching the IETF.

4) The reason for strings is avoid clashes (like a GUID). We previously
recommended registered IEEE EUIDs, but strings were viewed as simpler
and less restrictive, i.e. You don't need to pay IEEE.

The reasoning behind the Experiments are:

Most current DLEP router implementations talk to multiple radios at
once, and sometimes experimental features are exposed by either peer.
In this use-case it must be possible for the router to advertise to all
radios that it is willing to process Vendor-X experiments *and* Vendor-Y
experiments, while the experiment is being performed, *before* taking
the results to the IETF, because it is still an experiment.

Hence: A DLEP peer MUST be able to advertise support for multiple
experiments, but it is up to the implementer how to handle clashes of
ids in the experimental range.

The reason for using a textual identifier for an experiment is the other
requirement: Experiment ids SHOULD be scoped locally, there is no
appetite for grabbing an id from some IANA list, registering it for
posterity, etc. just for a quick experiment. That is Extensions. With
text, one can just use one's make and model name, e.g. "Stan's Coffee
machine experiment" is good enough, iff I am talking to Stan's radio in
my lab; it is unlikely that John's tea machine will unintentionally
advertise an identical experiment id.

As a side note on strings, the UTF8 requirement is there so that the
strings may be output to somewhere user readable. As far as any
processor is concerned, octet by octet compare is all that is required:
memcmp() is enough, no UTF parser needed. A potential criticism would
be that non-printable characters are allowed in the draft currently. If
UTF8 seems too lose, then let's use [A-Za-z0-9_], but strings are there
for a good reason. A counter argument is adding extra restrictions on
the format of the text adds processing requirements on the peer.

Adding more signal and data item ids for experiments is irrelevant, the
critical question is how do two peers identify experiments about which
they can negotiate support? Our proposed solution: unique strings.

In summary: There is a good reason for the split between Experiments
and Extensions. They cover two different use-cases that are in use
today. We have chewed this over thoroughly, and although it seems that
we have proposed a 'dog's breakfast' solution, it is actually backed by
good reasoning.

By contrast, Extensions are modelled on the SMTP mechanism (but using
numeric ids). There MUST be a document that has passed through the
IETF. IANA MUST assign a unique numeric ID. A peer may implement zero
or more Extensions as it sees fit. The end.

Hope that helps,

Rick
Loading...