Hi all,

First of all, let me briefly introduce myself, since this is the first time I'm 
writing to this list. I'm Michiel, a software engineer at Cisco working on 
LISP, primarily in IOS and IOS-XR. I joined the team a bit more than a year 
ago; while I haven't been around for that long, I had at the time less than a 
handful of days to learn about LISP and to decide whether or not to join the 
team, and I still remember that it was.. let's say, "surprisingly difficult". 
And, I think that we as the LISP community can do better (at the time I hadn't 
read the lisp introduction draft). I do think that LISP is a very cool 
technology that has a lot of potential!

I understand that comments to this draft are time-critical, which is why I'm 
releasing the first batch now, even though I've only covered the abstract, ToC 
and the first three sections (and section 8). Despite me only having covered 
those, I see that my email is rapidly approaching the <tl/dr> limits (if it 
hasn't gone over already).. I'll finish going through the draft and provide 
comments on the rest, though it may take me a few more days..

Anyway, enough about me etc, here are my thoughts on the draft at hand. My 
thoughts are my own, and may or may not coincide with Cisco's. Also, Noel, 
please don't take my criticism personally, it's about the working group 
document, not about you. :-)

High-level, birds-eye view:
* I think this document is confused. It doesn't really know if it's an 
architecture document, or an introductory text, or an introduction to the 
architecture document. I think that an architecture document and an 
introductory document serve different audiences and purposes, even though there 
may be some overlap in topics. The exact scope of each is perhaps somewhat 
debatable, but I think the main purpose of the introduction is to provide the 
reader an overview of LISP and familiarise him/her with the main concepts, 
emphasising understanding, perhaps even over technical precision. An 
introduction probably also doesn't need to exhaustively list every detail and 
component of the system. We should avoid having two very similar texts.
** I think the title "Architectural Introduction" adds to the confusion here, 
and I think it would be better to just call this document "Introduction to 
LISP", and aim for providing exactly that.

* I think there's a lot of background material. I think we should aim for "just 
enough" to understand the introduction to LISP, rather than a comprehensive 
study of "LISP in the context of the history of the internet"

* Looking at the contents…
** it looks like a VERY LONG introduction (37 pages if you print the HTML 
page). I think introductions should be a bit shorter, and less daunting. My 
first impression (with my LISP newbie hat on) is "Oh my goodness, I need to 
read all that just to get an idea about LISP?". I know that the prefatory note 
says otherwise, but you don't see that when you open up the HTML page and give 
it a quick scroll through.
** The design approach comes surprisingly late into the text (I'm not sure this 
is even the right document for that)
** Here are some sections I don't think are necessary for the introduction 
(again, just based on the table of contents; reading them may lead me to change 
my opinion), mostly because they sound like they're going into the nitty gritty 
detail that should be part of main protocol specs:

     4.4.  Interworking With Non-LISP-Capable Endpoints (maybe)

     4.5.  Security in LISP [or at least move it closer to the end]

     9.2.  UDP Encapsulation Details ("details")

     9.3.  Header Control Channel
       9.3.1.  Mapping Versioning
       9.3.2.  Echo Nonces
       9.3.3.  Instances


     9.4.  Probing
     9.5.  Mapping Lifetimes and Timeouts
     9.6.  Security of Mapping Lookups
     9.7.  Mapping Gleaning in ETRs
     9.8.  Fragmentation

     10.1. The Mapping System Interface
       10.1.1. Map-Request Messages
       10.1.2. Map-Reply Messages
       10.1.3. Map-Register and Map-Notify Messages

       10.2.1. Map-Referral Messages
     10.3. Reliability via Replication
     10.4. Security of the DDT Indexing Sub-system
     10.5. Extended Tools
     10.6. Performance of the Mapping System

     11.3. Proxy Devices
       11.3.1. PITRs
       11.3.2. PETRs
     11.4. LISP-NAT
     11.5. Use Through NAT Devices
       11.5.1. First-Phase NAT Support
       11.5.2. Second-Phase NAT Support
     11.6. LISP and DFZ Routing
       11.6.1. Long-term Possibilities
   12. Fault Discovery/Handling (maybe)
     12.1. Handling Missing Mappings
     12.2. Outdated Mappings
       12.2.1. Outdated Mappings - Updated Mapping
       12.2.2. Outdated Mappings - Wrong ETR
       12.2.3. Outdated Mappings - No Longer an ETR
     12.3. Erroneous Mappings
     12.4. Neighbour Liveness
     12.5. Neighbour Reachability
   13. Current Improvements
     13.1. Improved NAT Support
     13.2. Mobile Device Support
     13.3. Multicast Support
     13.4. {{Any others?}}


     B.1.  Old LISP 'Models' (maybe)

=> I'm not saying none of these should be mentioned, but I don't think each of 
them warrant a section of their own in an "introduction" document. I think 
things can be summarised a bit more to convey the main points.

* There is lots of stuff in brackets, which looks like it might be too 
important to be ignored, so perhaps it's not all suitable to be in brackets?
* It's good to define the intended audience:

   This document is an introduction to the entire LISP system, for those
   who are unfamiliar with it.


Abstract:


   LISP is an upgrade to the architecture of the IPvN internetworking
   system, one which separates location and identity (currently
   intermingled in IPvN addresses).

* I would be inclined to say "IPv4 and IPv6 internetwork", I think that, while 
technically correct, IPvN is a less often used term. Or at least I don't see it 
being used often. You could also just say "IP". I'd also drop the 'system', as 
I think an internetwork is a system already?
* What do you mean with 'currently intermingled in IPvN addresses'? Do you mean 
that location and identity are currently both expressed in IP addresses when 
using LISP? Or do you mean that in the current IP world, both location and 
identity is expressed with 1 IP address? I guess the latter, but I don't think 
it's particularly clear.


*  This is a change which has been
   identified by the IRTF as a critically necessary evolutionary
   architectural step for the Internet.

=> If this was wikipedia or an academic paper, I'd tag that with "citation 
needed".


1. Prefaratory Note
* Spello: "prefatory" is suggested by Google.
* Re 'Architectural Introduction' => see high level items above

* It is intended to both be easy to follow, and also to give

   the reader a choice as to how much they wish to know about LISP.
   Reading only the first part(s) of the document will give a good high-
   level view of the system; reading the complete document should
   provide a fairly detailed understanding of the entire system.

=> Being easy to follow is good. I think it's also fine to provide a good 
high-level overview of the system in the first parts of the document. I don't 
think it's necessary to provide a very detailed understanding of the entire 
system as part of the introduction though, I think this is outside the scope of 
an introduction - after all, that's what all the other documents are there for, 
and I think a huge intro will just scare people off.


   This goal explains why the document has a somewhat unusual structure.
   It is not a reference document, where all the content on a particular
   topic is grouped in one place.  (That role is filled by the various
   protocol specifications.)  It starts with a very high-level view of
   the entire system, to provide readers with a mental framework to help
   understand the more detailed material which follows.  A second pass
   over the whole system then goes into more detail; finally, individual
   sub-systems are covered in still deeper detail.


* Sounds like there's way too much detail for an introduction, and I'm not sure 
it's necessary to cover one component thing three times in an introduction.

* I'm not sure an unusual structure helps understanding. Have you given this to 
someone new to LISP and asked them how much they understood? I tried that when 
I attempted to formulate a "LISP in 5 sentences" description (sample size of 
1). The result was that the experiment worked, but my 5 sentences didn't.


   Note: This document is a descriptive document, not a protocol
   specification.  Should it differ in any detail from any of the LISP
   protocol specification documents, they take precedence for the actual
   operation of the protocol.

* Excellent.

2. Background

* See high-level comment, I think the aim should be to provide "just enough"

* Now, having said that, I'm not sure that the "just enough" aim is actually 
fulfilled. I think that, apart from the first paragraph, the background section 
doesn't actually further the understanding of the document, as the bits in it 
are not necessary to understand LISP. You don't need to know when it was 
formed, how the history influenced it or when it became an RFC. I'd put those 
details into a 'history' appendix. [Todo: come back to this after I've finished 
reading the document and see what else would need to be added beyond the first 
paragraph]


*   It has gradually been realized in the networking community that
   networks (especially large networks) should deal quite separately
   with the identity and location of a node (basically, 'who' a node is,
   and 'where' it is).  At the moment, in both IPv4 and IPv6, addresses
   indicate both where the named device is, as well as identify it for
   purposes of end-end communication.


* Ok, this can be accepted as fact. I think however that it would be more 
useful to briefly introduce the location/id split by looking at an example:

Today, network nodes (routers, hosts, etc) typically have one or more IP 
addresses assigned to them. These IP addresses encode two bits of information: 
the location of a node, namely /which network/ the node is on, as well as a 
"host identifier". For example, the IP address 192.168.3.14, together with the 
subnet mask 255.255.255.0, refers to "host 14" on the network "192.168.3.0/24".

Of course there are many other ways to express location, and I guess this is 
just one example, but I think it's quite accessible (to pretty much anyone 
who's configured a static IP address). I hope it's correct enough and 
demonstrates some aspects of location and identity. If not, maybe we should 
find another example.


*   The distinction was more than a little hazy at first: the early
   Internet [RFC791<http://tools.ietf.org/html/rfc791>], like the ARPANET 
before it 
[Heart<http://tools.ietf.org/html/draft-ietf-lisp-introduction-01#ref-Heart>] 
[NIC8246<http://tools.ietf.org/html/draft-ietf-lisp-introduction-01#ref-NIC8246>],
 co-
   mingled the two, although there was recognition in the early Internet
   work that there were two different things going on.  
[IEN19<http://tools.ietf.org/html/draft-ietf-lisp-introduction-01#ref-IEN19>]

=> I'd file this in the "LISP in the context of the history of the internet" 
(LicothoI) category, which I think is best documented in it's own draft. I'd 
summarise it in one sentence saying something like "The location/identity 
separation is not a newly discovered concept, it was recognised already in the 
early days of the internet [citation]", but at the moment I'm not sure where to 
best put it.

*  This likely resulted not just from lack of insight, but also the fact

   that extra mechanism is needed to support this separation (and in the
   early days there were no resources to spare), as well as the lack of
   need for it in the smaller networks of the time.  (It is a truism of
   system design that small systems can get away with doing two things
   with one mechanism, in a way that usually will not work when the
   system gets much larger.)

=> "LicothoI"
=> Can be replaced with a one-sentence summary
=> I don't think that the truism adds any value, and thus can be removed.


*   The ISO protocol architecture took steps in this direction 
[NSAP<http://tools.ietf.org/html/draft-ietf-lisp-introduction-01#ref-NSAP>],
   but to the Internet community the necessity of a clear separation was
   definitively shown by Saltzer.  
[RFC1498<http://tools.ietf.org/html/rfc1498>] Later work expanded on
   Saltzer's, and tied his separation concepts into the fate-sharing
   concepts of Clark.  
[Clark<http://tools.ietf.org/html/draft-ietf-lisp-introduction-01#ref-Clark>], 
[Chiappa<http://tools.ietf.org/html/draft-ietf-lisp-introduction-01#ref-Chiappa>]

=> Licothol


*   The separation of location and identity is a step which has recently
   been identified by the IRTF as a critically necessary evolutionary
   architectural step for the Internet.  However, it has taken some time
   for this requirement to be generally accepted by the Internet
   engineering community at large, although it seems that this may
   finally be happening.  [RFC6115<http://tools.ietf.org/html/rfc6115>]


Please could you point out exactly which bit of RFC6115 supports the above 
statement, especially the first sentence? Maybe I missed it. (I'm not 
commenting on whether or not I agree with the statement, after all I'm not part 
of the IRTF anyway, just on the reference)


*   The LISP system for separation of location and identity resulted from
   the discussions of this topic at the Amsterdam IAB Routing and
   Addressing Workshop, which took place in October 2006.  
[RFC4984<http://tools.ietf.org/html/rfc4984>]



   A small group of like-minded personnel from various scattered
   locations within Cisco, spontaneously formed immediately after that
   workshop, to work on an idea that came out of informal discussions at
   the workshop.  The first Internet-Draft on LISP appeared in January,
   2007, along with a LISP mailing list at the IETF.  
[LISP0<http://tools.ietf.org/html/draft-ietf-lisp-introduction-01#ref-LISP0>]



   Trial implementations started at that time, with initial trial
   deployments underway since June 2007; the results of early experience
   have been fed back into the design in a continuous, ongoing process
   over several years.


I think the above is useful background info, even in an intro, but belongs into 
a 'history' section, maybe in the appendix.


* LISP at this point represents a moderately
   mature system, having undergone a long organic series of changes and
   updates.

I think this statement would require regular updating as LISP matures, so I'm 
not sure it's suitable for a static RFC.


*   LISP transitioned from an IRTF activity to an IETF WG in March 2009,
   and after numerous revisions, the basic specifications moved to
   becoming RFCs in 2012 (although work to expand and improve it
   continues, and undoubtly will for a long time to come).

Perhaps slightly less useful background info, but probably OK for a history 
section.

* I think the History section should go into an appendix. We want to make it as 
easy as possible for newbies to pick up and understand LISP, and having less 
text between them and LISP means newbies are less likely to loose interest.

3. Deployment Philosophy


   It may seem odd to cover 'deployment philosophy' at this point in
   such a document.  However the deployment philosophy was a major
   driver for much of the design (to some degree the architecture, and
   to a very large measure, the engineering).  So, as such an important
   motivator, it is very desirable for readers to have this material in
   hand as they examine the design, so that design choices that may seem
   questionable at first glance can be better understood.

=> I think this paragraph doesn't add much value. It's 7 lines explaining why 
the next 8 lines are there…


   Experience over the last several decades has shown that having a
   viable 'deployment model' for a new design is absolutely key to the
   success of that design.  A new design may be fantastic - but if it
   can not or will not be successfully deployed (for whatever factors),
   it is useless.  This absolute primacy of a viable deployment model is
   what has lead to some painful compromises in the design.

This further motivates why we should care about a successful deployment model


   The extreme focus on a viable deployment scheme is one of the
   novelties of LISP.

So that sentence there the real content of this whole section? Considering the 
fact that there are more sections dealing with deployment, I think some merging 
and cutting needs to happen.. I'm thinking about 3.1-3.3., and 8. Design 
Approach (though I'll have more comments on those later). I think it's fine to 
say something like, "Given that the ease of deployment greatly influences the 
adoption of new technologies, one of the design goals of LISP stated that it 
should support incremental deployments, which provide benefits to the users 
from day one", or something along those lines. I think that would sufficiently 
summarise the whole section here, including 3.1.( Economics). I think sections 
3.2 and 3.3 can similarly be summarised in one paragraph:

N.N Design Philosophy [this is just a sketch of the argument I'm trying to 
make, not a final wording suggestion]
…
Another important design goal of LISP stated that it should be easily 
deployable. This was motivated by the pragmatic insight that this would be key 
to widespread adoption. This was realised in three ways. Firstly, the cost of 
implementing LISP should be low in terms of complexity and number of nodes that 
need changing, and secondly the benefit in terms of added value (in the form of 
services or features) should be high. Furthermore, LISP should support and 
interoperate with and support existing protocols (e.g. IPv4, IPv6, TCP and 
UDP), and transition mechanisms should be provided.

I'd cut the section "3.3.  'Self-Deployment'"; I understand that a snowball 
effect is very desirable, but I'm not sure it furthers any argument at this 
point in time.





8<http://tools.ietf.org/html/draft-ietf-lisp-introduction-01#section-8>.  
Design Approach


   Before describing LISP's components in more detail below, it it worth
   pointing out that what may seem, in some cases, like odd (or poor)
   design approaches do in fact result from the application of a
   thought-through, and consistent, design philosophy used in creating
   them.

   This design philosophy is covered in detail in in 
[Perspective<http://tools.ietf.org/html/draft-ietf-lisp-introduction-01#ref-Perspective>],
   Section "Design"), and readers who are interested in the 'why' of
   various mechanisms should consult that; reading it may make clearer
   the reasons for some engineering choices in the mechanisms given
   here.

=> This whole section is basically useless. It's only piece of real content is 
the reference to [Perspective].

To be continued…

Best regards!

Michiel
_______________________________________________
lisp mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/lisp

Reply via email to