On 6/9/15 5:25 AM, Carlos Pignataro (cpignata) wrote:
Hi, RtgWG,
Please find below some review comments on draft-rtg-dt-encap-02.
https://datatracker.ietf.org/doc/draft-rtg-dt-encap/
While this is not a comprehensive fine-tooth-comb review, I hope these
(somewhat high-level) comments are useful.
Carlos,
Thanks for the comments and sorry for the delay in responding.
General comments:
Scanning through the document, I have two high-level concerns.
• First, there is really no evident or apparent definition of what
“Encapsulation” is. This is not a pedantic comment, but I think it is a root
cause of the point that follows.
• Many of the considerations on this document are not applicable to the
scoped “encapsulation” per se. Instead, they relate to a specific layer
underneath the encapsulation, to a layer that further encapsulates the
encapsulation.
For example, the document sets of explaining the need for understanding common
requirements and considerations among groups of encaps. In addition to encaps
in NOV3, these are also the BIER Header and NSH. Both these can be carried by
multiple underlays each with different characteristics. However, the document
conflates requirements and characteristics from the encap itself, and
intertwines them with characteristics and requirements on the underlay.
You must have read a different document, because draft-rtg-dt-encap
contains no requirements ;-)
More seriously, trying to come up with a strict definition of
"encapsulation" or placing general requirements across a broad set of
approaches would be quite futile since that tends to result in proxy
discussions which are really about "I don't want that requirement on my
protocol".
That is why the title and the content of the document "considerations".
It seems like folks appreciate having captured this broad set of
considerations in one place, and it might be useful *input* to working
groups that want to draft their own requirements and protocols.
I think this document would greatly benefit from a cleaner separation of what
happens at the encap, versus what is expected, required, or considered from the
underlay (transport, network, tunnel, etc). This is particularly exacerbated in
the ECMP and MTU sections, but present in others as well.
Take for example ECMP — the BIER header has an Entropy field. Different encaps
can provide Entropy fields to be used as a source for entropy, either at the
encap (e.g., service) layer or by an underlay. One example is L2TPv3 session id
and GRE Key (as per RFC 5640). However, the ECMP sections focus on IP and
IP/UDP methods, which frankly are applicable generally and not only to these
“Encapsulations”.
Note that the BIER entropy has nothing to do with the "transport"
entropy; we tried to capture that in the document to avoid confusion.
The BIER entropy is how BIER selects paths. In theory there can be an
MPLS entropy label in addition for the "transport" entropy.
We've tried to specify how the "transport" entropy fits in, and how that
relates to using IP/UDP and MPLS transports.
That seems to result useful information in the draft, because when we
started off the Design Team it wasn't clear to (at least us) how those
things relate; whether one should have a single entropy field even with
nested encaps etc.
If there are specific text in the considerations that you find unclear
or incorrect, then please point them out so we can collectively improve
the document.
And FWIW that is an ask from Alia and others that the WG add more
information about MPLS to the document.
What are your specific concerns about the MTU considerations?
AFAICT any device along the path which adds (or grows) a header in a
packet needs to be concerned about the MTU implications.
And I believe some of these potential disconnects go back to the high-level
concern #1, lack of definition/scope of what is an encap (and what is not).
Just to be clear, I am all for inter-layer cooperation and requirement
realization. However, if the goal is to understand encapsulation common
requirements, then a more clean separation of the encapsulation headers versus
a specific transport of said encapsulations will make it easier to understand
if those requirements belong in an encap or in an underlay.
FWIW my take is that if the folks working on different encapsulations in
different WGs consider what it in this document, then we can avoid
endless discussions of where to draw lines in the sand by working on
strict definitions.
A smaller one: this document is titled "Encapsulation Considerations” (without
any qualifiers), but the abstract narrowscopes it to a specific encaps.
Which encaps? The document focuses on three that are currently under
development in the IETF. (Perhaps your definitions of "encaps" is what
the document calls "transport", which would make our discussion rather
confusing?)
Some more specific comments, prefaced with “CMP":
2. Overview
…
o SFC carries service meta-data which might be modified or
unmodified as the packets follow the service path. SFC talks of
some loop avoidance mechanism which is likely to result in
modifications for for each hop in the service chain even if the
meta-data is unmodified.
CMP: This is not complete (incorrect by omission). The SFC Encap is responsible
first for Serfice Function Path Identification, and second, for Metadata. See
Section 1.3 and 4.1 of
https://tools.ietf.org/html/draft-ietf-sfc-architecture-09.
I'll reword it to include the Serfice Function Path Identification part.
o SFC is all about carrying service meta-data along a path, and
different services might need different types and amount of meta-
data.
CMP: It is true that metadata requires extensibility. However the SFC Encap is
all about path identification *and* carrying metadata.
CMP: Also, SFC’s extensibility has to do with OAM and graphs as well.
Ditto.
CMP: By the way, encaps need to strike a balance between flexibility and
performance. This point could be made more explicitly.
Suggestions how and where to do that and not make it sound like
motherhood and apple pie?
What would you say to make a reader learn something they might not have
already known about that tradeoff?
Most of the issues discussed in this document are not new. The IETF
and industry as specified and deployed many different encapsulation
or tunneling protocols over time, ranging from simple IP-in-IP and
GRE encapsulation, IPsec, pseudo-wires, session-based approached like
L2TP, and the use of MPLS control and data planes. IEEE 802 has also
defined layered encapsulation for Provider Backbone Bridges (PBB) and
IEEE 802.1Qbp (ECMP). This document tries to leverage what we
collectively have learned from that experience and summarize what
would be relevant for new encapsulations like NVO3, SFC, and BIER.
CMP: I think it would be much clearer here to specify terms around what is
encap, transport, etc. L2TPv3 for example can run over IPv6 directly, over
IP/UDP, etc. Those cases have key differences although the actual L2TPv3 header
does not change.
One criteria that I found useful in thinking about that to include and
exclude from the document was whether there is something non-obvious, or
something known in one part of the IETF but not known in other parts,
where sharing that knowledge would result in the IETF producing better
protocols. If you think strict definitions of encap vs. transport would
be an aid in such sharing and learning, then we should definitely get
together (e.g., in Prague) so I can understand.
3. Common Issues
…
o How to provide entropy for Equal Cost MultiPath (ECMP) routing
CMP: And LAGs?
LAG isn't something we tend to standardize in the IETF.
One could add a note saying "Note that the same entropy might also be
used at layer 2 e.g. for Link Aggregration (LAG)". But that belongs on
the text and not in the
o OAM - what support is needed in an encapsulation format?
CMP: OAM in what context? fault management, performance management, all?
The question is broad, hence "all".
CMP: Also, this section seems to lack an issue of “adaptation” of the payload.
Please explain further.
4. Scope
o Focus on the class of encapsulations that would run over IP/UDP.
That was done to avoid being distracted by the data-plane and
control-plane interaction, which is more significant for protocols
that are designed to run over "transports" that maintain session
or path state.
CMP: I am not sure if the relationship between running over “transports” (which
transports?) and control-plane - data-plane complexity is clear — it is not
clear to me at least.
This was the scope that the design team set up to improve its
probability of delivering a useful document on time.
Hence the "scope" section presumably needs to be done as the WG works on
this document.
7. Entropy
In many cases the encapsulation format needs to enable ECMP in
unmodified routers. Those routers might use different fields in TCP/
UDP packets to do ECMP without a risk of reordering a flow.
CMP: Is this an encap-supported requirements, or a requirement of IP/UDP in
general, whatever is transported?
I'm not sure I understand your question. When Dino defined the LISP
header he wanted LISP packets to take advantage of ECMP in unmodified
routers. That same desire exists for other encapsulations that have been
and are being defined in the IETF and elsewhere.
Note that the document isn't about requirements!
the ephemeral port range) plus the outer IP addresses which seems to
be sufficient for entropy; using outer IPv6 headers would give the
option for more entropy should it be needed in the future.
CMP: And the IPv6 Flow Label and RFC 6438?
The section discusses IPv6 flow label a few paragraphs later.
The design team didn't discuss RFC6438 explicitly, but it seems like the
approach (from LISP and VXLAN) to use a random UDP source port plus
outer IPv6 flow label is consistent with RFC 6438. But I'll at least add
a reference to RFC6438.
There is some interaction between entropy and OAM and extensibility
mechanism. It is desirable to be able to send OAM packets to follow
the same path as network packets. Hence OAM packets should use the
CMP: This is having the underlying assumption that “OAM” is “OAM packets” as
opposed to also fields in data packets. If OAM is in the packet, it fate-shares
by definition.
But it is more subtle than that. The difference of OAM frames and the
frames they should "monitor" must not affect the ECMP calculation. The
document (tries to) point this out. Please suggest improved text if that
is unclear.
Architecturally the entropy and the next header field are really part
of enclosing delivery header. UDP with entropy goes hand-in-hand
with the outer IP header. Thus the UDP entropy is present for the
CMP: This is a very important point, and this clarity in demarcation should be
throughout, to understand at which layer different requirements are.
8. Next-protocol indication
Next-protocol indications appear in three different context for
encapsulations.
…
Secondly, the encapsulation needs to indicate the type of its
payload, which is in scope for the design of the encapsulation.
CMP: I believe that this section should not start assuming an explicit protocol
indication. A demux context can provide protocol identification, or it could be
explicitly carrier (self-defining package). And perhaps that is the first
consideration.
Where does it assume it is explicit? Second paragraph has existing
examples of both explicit and implicit.
We
have existing protocols which use Ethernet types (such as GRE). Here
each encapsulation header can potentially makes its own choices
between:
o Reuse Ethernet types - makes it easy to carry existing L2 and L3
protocols including IPv6, IPv6, and Ethernet.
CMP: I do not believe that the options are Ethertype, IP protocol number, or
own registry only.
What are the other options? Are you suggesting an implicit
(session-based) identification?
That would assume some form of session identification.
The document mentions that possibility and ends with "*Encapsulations
might want to consider the tradeoffs between such more flexible versus
more fixed approaches."*
CMP: Nit — repeat IPv6.
Thanks.
In summary:
o Would it be useful for the IETF come up with a common scheme for
encapsulation protocols? If not each encapsulation can define its
own scheme.
CMP: This seems to be a non-sequitur. Why would that be useful?
First of all, it is a question and not a statement.
I think it would make sense for the broader IETF to consider the
cost/benefit tradeoffs.
There might be some benefits as we define X over Y, Y over X, X over W
over Y, etc (which we seemed to have done with most existing protocols
over the last few decades). But there would be some cost to defining
this namespace across different active WGs.
9. MTU and Fragmentation
CMP: This is another key section that could use clarify between encap and
transport.
See above.
In summary:
o In some deployments an encapsulation can assume well-managed MTU
hence no need for fragmentation and reassembly related to the
encapsulation.
o Even so, it makes sense for ingress to track any ICMP packet too
big addressed to ingress to be able to log any MTU
misconfigurations.
CMP: This section seems to be conflating MTU with PMTUD. Cleary related, but
those are different things. The area of pre-fragmentation vs. post-frag is also
underspecified. See e.g., https://tools.ietf.org/html/rfc3931#section-4.1.4
I don't think it is useful to talk about PMTU because the first bullet
is really about a common interface MTU across the whole underlay
network. That underlay network will have lots of different paths. Hence
to make it the text more specific I think one would need to introduce a
notion of a some "topology MTU" accross the underlay topology.
Introducing such a brand new concept and term doesn't seem to be
worth-while in explaining the issue and choices.
This document has a number of considerations; I certainly don't expect
it to specify all the details of how to handle MTU and frag/reass.
10. OAM
In terms of what we have heard from the various working groups there
seem to be needs to:
o Be able to send out-of-band OAM messages - that potentially should
follow the same path through the network as some flow of data
packets.
CMP: It is not clear what are “out-of-band messages” that follow the same path
as data packets…
TRILL has an example of this. Might exist elsewhere as well.
CMP: Also, this section seems to imply that “OAM” is “separate OAM packets”,
where there is OAM Performance Management (PM) considerations for in-band
in-data-packets measurement. Those ought to be considered in the encap layer.
Oops. There is an issue with the nesting of the bullets. Should read:
In terms of what we have heard from the various working groups there
seem to be needs to:
o Be able to send out-of-band OAM messages - that potentially should
follow the same path through the network as some flow of data
packets.
* Such OAM messages should not accidentally be decapsulated and
forwarded to the end stations.
o Be able to add OAM information to data packets that are
encapsulated. Discussions have been around:
* Using a bit in the OAM to synchronize sampling of counters
between the encapsulator and decapsulator.
* Optional timestamps, sequence numbers, etc for more detailed
measurements between encapsulator and decapsulator.
o Usable for both proactive monitoring (akin to BFD) and reactive
checks (akin to traceroute to pin-point a failure)
Does that make it more clear?
There can be several ways to prevent OAM packets from accidentally
being forwarded to the end station using:
o A bit in the frame (as in TRILL) indicating OAM
o A next-protocol indication with a designated value for "none" or
"oam”.
CMP: Or both! An OAM bit with an OAM proto allows for max flexibility.
With all the (hardware and software) implementations having to inspect both?
Anyhow, such details can be worked out in the WGs working on the actual
encapsulations.
Thanks again for your comments.
I'll submit -00 with the changes I have so far.
Erik
Hope these help!
— Carlos.
_______________________________________________
rtgwg mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/rtgwg
_______________________________________________
rtgwg mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/rtgwg