home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / rfc / rfc1753 < prev    next >
Text File  |  1994-12-31  |  47KB  |  1,012 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                         N. Chiappa
  8. Request for Comments: 1753                                 December 1994
  9. Category: Informational
  10.  
  11.  
  12.                       IPng Technical Requirements
  13.            Of the Nimrod Routing and Addressing Architecture
  14.  
  15. Status of this Memo
  16.  
  17.    This memo provides information for the Internet community.  This memo
  18.    does not specify an Internet standard of any kind.  Distribution of
  19.    this memo is unlimited.
  20.  
  21. Abstract
  22.  
  23.    This document was submitted to the IETF IPng area in response to RFC
  24.    1550.  Publication of this document does not imply acceptance by the
  25.    IPng area of any ideas expressed within.  Comments should be
  26.    submitted to the big-internet@munnari.oz.au mailing list.
  27.  
  28.    This document presents the requirements that the Nimrod routing and
  29.    addressing architecture has upon the internetwork layer protocol. To
  30.    be most useful to Nimrod, any protocol selected as the IPng should
  31.    satisfy these requirements. Also presented is some background
  32.    information, consisting of i) information about architectural and
  33.    design principles which might apply to the design of a new
  34.    internetworking layer, and ii) some details of the logic and
  35.    reasoning behind particular requirements.
  36.  
  37. 1. Introduction
  38.  
  39.    It is important to note that this document is not "IPng Requirements
  40.    for Routing", as other proposed routing and addressing designs may
  41.    need different support; this document is specific to Nimrod, and
  42.    doesn't claim to speak for other efforts.
  43.  
  44.    However, although I don't wish to assume that the particular designs
  45.    being worked on by the Nimrod WG will be widely adopted by the
  46.    Internet (if for no other reason, they have not yet been deployed and
  47.    tried and tested in practise, to see if they really work, an
  48.    absolutely necessary hurdle for any protocol), there are reasons to
  49.    believe that any routing architecture for a large, ubiquitous global
  50.    Internet will have many of the same basic fundamental principles as
  51.    the Nimrod architecture, and the requirements that these generate.
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Chiappa                                                         [Page 1]
  59.  
  60. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  61.  
  62.  
  63.    While current day routing technologies do not yet have the
  64.    characteristics and capabilities that generate these requirements,
  65.    they also do not seem to be completely suited to routing in the
  66.    next-generation Internet. As routing technology moves towards what is
  67.    needed for the next generation Internet, the underlying fundamental
  68.    laws and principles of routing will almost inevitably drive the
  69.    design, and hence the requirements, toward things which look like the
  70.    material presented here.
  71.  
  72.    Therefore, even if Nimrod is not the routing architecture of the
  73.    next-generation Internet, the basic routing architecture of that
  74.    Internet will have requirements that, while differing in detail, will
  75.    almost inevitably be similar to these.
  76.  
  77.    In a similar, but more general, context, note that, by and large, the
  78.    general analysis of sections 3.1 ("Interaction Architectural Issues")
  79.    and 3.2 ("State and Flows in the Internetwork Layer") will apply to
  80.    other areas of a new internetwork layer, not just routing.
  81.  
  82.    I will tackle the internetwork packet format first (which is
  83.    simpler), and then the whole issue of the interaction with the rest
  84.    of the internetwork layer (which is a much more subtle topic).
  85.  
  86. 2. Packet Format
  87.  
  88. 2.1 Packet Format Issues
  89.  
  90.    As a general rule, the design philosophy of Nimrod is "maximize the
  91.    lifetime (and flexibility) of the architecture". Design tradeoffs
  92.    (i.e., optimizations) that will adversely affect the flexibility,
  93.    adaptability and lifetime of the design are not not necessarily wise
  94.    choices; they may cost more than they save. Such optimizations might
  95.    be the correct choices in a stand-alone system, where the replacement
  96.    costs are relatively small; in the global communication network, the
  97.    replacement costs are very much higher.
  98.  
  99.    Providing the Nimrod functionality requires the carrying of certain
  100.    information in the packets. The design principle noted above has a
  101.    number of corollaries in specifying the fields to contain that
  102.    information.
  103.  
  104.    First, the design should be "simple and straightforward", which means
  105.    that various functions should be handled by completely separate
  106.    mechanisms, and fields in the packets. It may seem that an
  107.    opportunity exists to save space by overloading two functions onto
  108.    one mechanism or field, but general experience is that, over time,
  109.    this attempt at optimization costs more, by restricting flexibility
  110.    and adaptability.
  111.  
  112.  
  113.  
  114. Chiappa                                                         [Page 2]
  115.  
  116. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  117.  
  118.  
  119.    Second, field lengths should be specified to be somewhat larger than
  120.    can conceivably be used; the history of system architecture is
  121.    replete with examples (processor address size being the most
  122.    notorious) where fields became too short over the lifetime of the
  123.    system. The document indicates what the smallest reasonable
  124.    "adequate" lengths are, but this is more of a "critical floor" than a
  125.    recommendation. A "recommended" length is also given, which is the
  126.    length which corresponds to the application of this principle. The
  127.    wise designer would pick this length.
  128.  
  129.    It is important to now that this does *not* mean that implementations
  130.    must support the maximum value possible in a field of that size. I
  131.    imagine that system-wide administrative limits will be placed on the
  132.    maximum values which must be supported. Then, as the need arises, we
  133.    can increase the administrative limit. This allows an easy, and
  134.    completely interoperable (with no special mechanisms) path to upgrade
  135.    the capability of the network. If the maximum supported value of a
  136.    field needs to be increased from M to N, an announcement is made that
  137.    this is coming; during the interim period, the system continues to
  138.    operate with M, but new implementations are deployed; while this is
  139.    happening, interoperation is automatic, with no transition mechanisms
  140.    of any kind needed. When things are "ready" (i.e., the proportion of
  141.    old equipment is small enough), use of the larger value commences.
  142.  
  143.    Also, in speaking of the packet format, you first need to distinguish
  144.    between the host-router part of the path, and the router-router part;
  145.    a format that works OK for one may not do for another.
  146.  
  147.    The issue is complicated by the fact that Nimrod can be made to work,
  148.    albeit not in optimal form, with information/fields missing from the
  149.    packet in the host to "first hop router" section of the packet's
  150.    path. The missing fields and information can then be added by the
  151.    first hop router. (This capability will be used to allow deployment
  152.    and operation with unmodified IPv4 hosts, although similar techniques
  153.    could be used with other internetworking protocols.) Access to the
  154.    full range of Nimrod capabilities will require upgrading of hosts to
  155.    include the necessary information in the packets they exchange with
  156.    the routers.
  157.  
  158.    Second, Nimrod currently has three planned forwarding modes (flows,
  159.    datagram, and source-routed packets), and a format that works for one
  160.    may not work for another; some modes use fields that are not used by
  161.    other modes.  The presence or absence of these fields will make a
  162.    difference.
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Chiappa                                                         [Page 3]
  171.  
  172. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  173.  
  174.  
  175. 2.2 Packet Format Fields
  176.  
  177.    What Nimrod would like to see in the internetworking packet is:
  178.  
  179.    - Source and destination endpoint identification. There are several
  180.      possibilities here.
  181.  
  182.      One is "UID"s, which are "shortish", fixed length fields which
  183.      appear in each packet, in the internetwork header, which contain
  184.      globally unique, topologically insensitive identifiers for either
  185.      i) endpoints (if you aren't familiar with endpoints, think of them
  186.      as hosts), or ii) multicast groups. (In the former instance, the
  187.      UID is an EID; in the latter, a "set ID", or SID. An SID is an
  188.      identifier which looks just like an EID, but it refers to a group
  189.      of endpoints. The semantics of SID's are not completely defined.)
  190.      For each of these 48 bits is adequate, but we would recommend 64
  191.      bits. (IPv4 will be able to operate with smaller ones for a while,
  192.      but eventually either need a new packet format, or the difficult
  193.      and not wholly satisfactory technique known as Network Address
  194.      Translators, which allows the contents of these fields to be only
  195.      locally unique.)
  196.  
  197.      Another possibility is some shorter field, named an "endpoint
  198.      selector", or ESEL, which contains a value which is not globally
  199.      unique, but only unique in mapping tables on each end, tables which
  200.      map from the small value to a globally unique value, such as a DNS
  201.      name.
  202.  
  203.      Finally, it is possible to conceive of overall networking designs
  204.      which do not include any endpoint identification in the packet at
  205.      all, but transfer it at the start of a communication, and from then
  206.      on infer it.  This alternative would have to have some other means
  207.      of telling which endpoint a given packet is for, if there are
  208.      several endpoints at a given destination. Some coordination on
  209.      allocation of flow-ids, or higher level port numbers, etc., might
  210.      do this.
  211.  
  212.    - Flow identification. There are two basic approaches here, depending
  213.      on whether flows are aggregated (in intermediate switches) or not.
  214.      It should be emphasized at this point that it is not yet known
  215.      whether flow aggregation will be needed. The only reason to do it
  216.      is to control the growth of state in intermediate routers, but
  217.      there is no hard case made that either this growth will be
  218.      unmanageable, or that aggregating flows will be feasible
  219.      practically.
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Chiappa                                                         [Page 4]
  227.  
  228. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  229.  
  230.  
  231.      For the non-aggregated case, a single "flow-id" field will suffice.
  232.      This *must not* use one of the two previous UID fields, as in
  233.      datagram mode (and probably source-routed mode as well) the flow-id
  234.      will be over-written during transit of the network. It could most
  235.      easily be constructed by adding a UID to a locally unique flow-id,
  236.      which will provide a globally unique flow-id. It is possible to use
  237.      non-globally unique flow-ids, (which would allow a shorter length
  238.      to this field), although this would mean that collisions would
  239.      result, and have to be dealt with. An adequate length for the local
  240.      part of a globally unique flow-id would be 12 bits (which would be
  241.      my "out of thin air" guess), but we recommend 32. For a non-
  242.      globally unique flow-id, 24 bits would be adequate, but I recommend
  243.      32.
  244.  
  245.      For the aggregated case, three broad classes of mechanism are
  246.      possible.
  247.  
  248.       - Option 1: The packet contains a sequence (sort of like a source
  249.         route) of flow-ids. Whenever you aggregate or deaggregate, you
  250.         move along the list to the next one. This takes the most space,
  251.         but is otherwise the least work for the routers.
  252.  
  253.       - Option 2: The packet contains a stack of flow-ids, with the
  254.         current one on the top. When you aggregate, you push a new one
  255.         on; when you de-aggregate, you take one off. This takes more
  256.         work, but less space in the packet than the complete "source-
  257.         route". Encapsulating packets to do aggregation does basically
  258.         this, but you're stacking entire headers, not just flow-ids. The
  259.         clever way to do this flow-id stacking, without doing
  260.         encapsulation, is to find out from flow-setup how deep the stack
  261.         will get, and allocate the space in the packet when it's
  262.         created. That way, all you ever have to do is insert a new
  263.         flow-id, or "remove" one; you never have to make room for more
  264.         flow-ids.
  265.  
  266.       - Option 3: The packet contains only the "base" flow-id (i.e., the
  267.         one with the finest granularity), and the current flow-id. When
  268.         you aggregate, you just bash the current flow-id. The tricky
  269.         part comes when you de-aggregate; you have to put the right
  270.         value back. To do this, you have to have state in the router at
  271.         the end of the aggregated flow, which tells you what the de-
  272.         aggregated flow for each base flow is. The downside here is
  273.         obvious: we get away without individual flow state for each of
  274.         the constituent flows in all the routers along the path of that
  275.         aggregated, flow, *except* for the last one.
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Chiappa                                                         [Page 5]
  283.  
  284. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  285.  
  286.  
  287.         Other than encapsulation, which has significant inefficiency in
  288.         space overhead fairly quickly, after just a few layers of
  289.         aggregation, there appears to be no way to do it with just one
  290.         flow-id in the packet header.  Even if you don't touch the
  291.         packets, but do the aggregation by mapping some number of "base"
  292.         flow-id's to a single aggregated flow in the routers along the
  293.         path of the aggregated flow, the table that does the mapping is
  294.         still going to have to have a number of entries directly
  295.         proportional to the number of base flows going through the
  296.         switch.
  297.  
  298.    - A looping packet detector. This is any mechanism that will detect a
  299.      packet which is "stuck" in the network; a timeout value in packets,
  300.      together with a check in routers, is an example. If this is a hop-
  301.      count, it has to be more than 8 bits; 12 bits would be adequate,
  302.      and I recommend 16 (which also makes it easy to update). This is
  303.      not to say that I think networks with diameters larger than 256 are
  304.      good, or that we should design such nets, but I think limiting the
  305.      maximum path through the network to 256 hops is likely to bite us
  306.      down the road the same way making "infinity" 16 in RIP did (as it
  307.      did, eventually). When we hit that ceiling, it's going to hurt, and
  308.      there won't be an easy fix. I will note in passing that we are
  309.      already seeing paths lengths of over 30 hops.
  310.  
  311.    - Optional source and destination locators. These are structured,
  312.      variable length items which are topologically sensitive identifiers
  313.      for the place in the network from which the traffic originates or
  314.      to which the traffic is destined. The locator will probably contain
  315.      internal separators which divide up the fields, so that a
  316.      particular field can be enlarged without creating a great deal of
  317.      upheaval. An adequate value for maximum length supported would be
  318.      up to 32 bytes per locator, and longer would be even better; I
  319.      would recommend up to 256 bytes per locator.
  320.  
  321.    - Perhaps (paired with the above), an optional pointer into the
  322.      locators.  This is optional "forwarding state" (i.e., state in the
  323.      packet which records something about its progress across the
  324.      network) which is used in the datagram forwarding mode to help
  325.      ensure that the packet does not loop. It can also improve the
  326.      forwarding processing efficiency. It is thus not absolutely
  327.      essential, but is very desirable from a real-world engineering view
  328.      point. It needs to be large enough to identify locations in either
  329.      locator; e.g., if locators can be up to 256 bytes, it would need to
  330.      be 9 bits.
  331.  
  332.    - An optional source route. This is used to support the "source
  333.      routed packet" forwarding mode. Although not designed in detail
  334.      yet, we can discuss two possible approaches.
  335.  
  336.  
  337.  
  338. Chiappa                                                         [Page 6]
  339.  
  340. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  341.  
  342.  
  343.      In one, used with "semi-strict" source routing (in which a
  344.      contiguous series of entities is named, albeit perhaps at a high
  345.      layer of abstraction), the syntax will likely look much like source
  346.      routes in PIP; in Nimrod they will be a sequence of Nimrod entity
  347.      identifiers (i.e., locator elements, not complete locators), along
  348.      with clues as to the context in which each identifier is to be
  349.      interpreted (e.g., up, down, across, etc.). Since those identifiers
  350.      themselves are variable length (although probably most will be two
  351.      bytes or less, otherwise the routing overhead inside the named
  352.      object would be excessive), and the hop count above contemplates
  353.      the possibility of paths of over 256 hops, it would seem that these
  354.      might possibly some day exceed 512 bytes, if a lengthy path was
  355.      specified in terms of the actual physical assets used. An adequate
  356.      length would be 512 bytes; the recommended length would be 2^16
  357.      bytes (although this length would probably not be supported in
  358.      practise; rather, the field length would allow it).
  359.  
  360.      In the other, used with classical "loose" source routes, the source
  361.      consists of a number of locators. It is not yet clear if this mode
  362.      will be supported. If so, the header would need to be able to store
  363.      a sequence of locators (as described above). Space might be saved
  364.      by not repeating locator prefixes that match that of the previous
  365.      locator in the sequence; Nimrod will probably allow use of such
  366.      "locally useful" locators. It is hard to determine what an adequate
  367.      length would be for this case; the recommended length would be 2^16
  368.      bytes (again, with the previous caveat).
  369.  
  370.    - Perhaps (paired with the above), an optional pointer into the
  371.      source route. This is also optional "forwarding state". It needs to
  372.      be large enough to identify locations anywhere in the source route;
  373.      e.g., if the source router can be up to 1024 bytes, it would need
  374.      to be 10 bits.
  375.  
  376.    - An internetwork header length. I mention this since the above
  377.      fields could easily exceed 256 bytes, if they are to all be carried
  378.      in the internetwork header (see comments below as to where to carry
  379.      all this information), the header length field needs to be more
  380.      than 8 bits; 12 bits would be adequate, and I recommend 16 bits.
  381.      The approach of putting some of the data items above into an
  382.      interior header, to limit the size of the basic internetworking
  383.      header, does not really seem optimal, as this data is for use by
  384.      the intermediate routers, and it needs to be easily accessible.
  385.  
  386.    - Authentication of some sort is needed. See the recent IAB document
  387.      which was produced as a result of the IAB architecture retreat on
  388.      security (draft-iab-sec-arch-workshop-00.txt), section 4, and
  389.      especially section 4.3. There is currently no set way of doing
  390.      "denial/theft of service" in Nimrod, but this topic is well
  391.  
  392.  
  393.  
  394. Chiappa                                                         [Page 7]
  395.  
  396. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  397.  
  398.  
  399.      explored in that document; Nimrod would use whatever mechanism(s)
  400.      seem appropriate to those knowledgeable in this area.
  401.  
  402.    - A version number. Future forwarding mechanisms might need other
  403.      information (i.e., fields) in the packet header; use a version
  404.      number would allow it to be modified to contain what's needed.
  405.      (This would not necessarily be information that is visible to the
  406.      hosts, so this does not necessarily mean that the hosts would need
  407.      to know about this new format.) 4 bits is adequate; it's not clear
  408.      if a larger value needs to be recommended.
  409.  
  410. 2.3 Field Requirements and Addition Methods
  411.  
  412.    As noted above, it's possible to use Nimrod in a limited mode where
  413.    needed information/fields are added by the first-hop router. It's
  414.    thus useful to ask "which of the fields must be present in the host-
  415.    router header, and which could be added by the router?" The only ones
  416.    which are absolutely necessary in all packets are the endpoint
  417.    identification (provided that some means is available to map them
  418.    into locators; this would obviously be most useful on UID's which are
  419.    EID's).
  420.  
  421.    As to the others, if the user wishes to use flows, and wants to
  422.    guarantee that their packets are assigned to the correct flows, the
  423.    flow-id field is needed. If the user wishes efficient use of the
  424.    datagram mode, it's probably necessary to include the locators in the
  425.    packet sent to the router.  If the user wishes to specify the route
  426.    for the packets, and does not wish to set up a flow, they need to
  427.    include the source route.
  428.  
  429.    How would additional information/fields be added to the packet, if
  430.    the packet is emitted from the host in incomplete form? (By this, I
  431.    mean the simple question of how, mechanically, not the more complex
  432.    issue of where any needed information comes from.)
  433.  
  434.    This question is complex, since all the IPng candidates (and in fact,
  435.    any reasonable inter-networking protocol) are extensible protocols;
  436.    those extension mechanisms could be used. Also, it would possible to
  437.    carry some of the required information as user data in the
  438.    internetworking packet, with the original user's data encapsulated
  439.    further inside. Finally, a private inter-router packet format could
  440.    be defined.
  441.  
  442.    It's not clear which path is best, but we can talk about which fields
  443.    the Nimrod routers need access to, and how often; less used ones
  444.    could be placed in harder-to-get-to locations (such as in an
  445.    encapsulated header). The fields to which the routers need access on
  446.    every hop are the flow-id and the looping packet detector. The
  447.  
  448.  
  449.  
  450. Chiappa                                                         [Page 8]
  451.  
  452. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  453.  
  454.  
  455.    locator/pointer fields are only needed at intervals (in what datagram
  456.    forwarding mode calls "active" routers), as is the source route (the
  457.    latter at every object which is named in the source route).
  458.  
  459.    Depending on how access control is done, and which forwarding mode is
  460.    used, the UID's and/or locators might be examined for access control
  461.    purposes, wherever that function is performed.
  462.  
  463.    This is not a complete exploration of the topic, but should give a
  464.    rough idea of what's going on.
  465.  
  466. 3. Architectural Issues
  467.  
  468. 3.1 Interaction Architectural Issues
  469.  
  470.    The topic of the interaction with the rest of the internetwork layer
  471.    is more complex. Nimrod springs in part from a design vision which
  472.    sees the entire internetwork layer, distributed across all the hosts
  473.    and routers of the internetwork, as a single system, albeit a
  474.    distributed system.
  475.  
  476.    Approached from that angle, one naturally falls into a typical system
  477.    designer point of view, where you start to think of the
  478.    modularization of the system; chosing the functional boundaries which
  479.    divide the system up into functional units, and defining the
  480.    interactions between the functional units.  As we all know, that
  481.    modularization is the key part of the system design process.
  482.  
  483.    It's rare that a group of completely independent modules form a
  484.    system; there's usually a fairly strong internal interaction. Those
  485.    interactions have to be thought about and understood as part of the
  486.    modularization process, since it effects the placement of the
  487.    functional boundaries. Poor placement leads to complex interactions,
  488.    or desired interactions which cannot be realized.
  489.  
  490.    These are all more important issues with a system which is expected
  491.    to have a long lifetime; correct placement of the functional
  492.    boundaries, so as to clearly and simply break up the system into
  493.    truly fundamental units, is a necessity is the system is to endure
  494.    and serve well.
  495.  
  496. 3.1.1 The Internetwork Layer Service Model
  497.  
  498.    To return to the view of the internetwork layer as a system, that
  499.    system provides certain services to its clients; i.e., it
  500.    instantiates a service model. To begin with, lacking a shared view of
  501.    the service model that the internetwork layer is supposed to provide,
  502.    it's reasonable to suppose that it will prove impossible to agree on
  503.  
  504.  
  505.  
  506. Chiappa                                                         [Page 9]
  507.  
  508. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  509.  
  510.  
  511.    mechanisms at the internetwork level to provide that service.
  512.  
  513.    To answer the question of what the service model ought to be, one can
  514.    view the internetwork layer itself as a subsystem of an even large
  515.    system, the entire internetwork itself. (That system is quite likely
  516.    the largest and most complex system we will ever build, as it is the
  517.    largest system we can possibly build; it is the system which will
  518.    inevitably contain almost all other systems.)
  519.  
  520.    From that point of view, the issue of the service model of the
  521.    internetwork layer becomes a little clearer. The services provided by
  522.    the internetwork layer are no longer purely abstract, but can be
  523.    thought about as the external module interface of the internetwork
  524.    layer module. If agreement can be reached on where to put the
  525.    functional boundaries of the internetwork layer, and on what overall
  526.    service the internet as a whole should provide, the service model of
  527.    the internetwork layer should be easier to agree on.
  528.  
  529.    In general terms, it seems that the unreliable packet ought to remain
  530.    the fundamental building block of the internetwork layer. The design
  531.    principle that says that we can take any packet and throw it away
  532.    with no warning or other action, or take any router and turn it off
  533.    with no warning, and have the system still work, seems very powerful.
  534.    The component design simplicity (since routers don't have to stand on
  535.    their heads to retain a packet which they have the only copy of), and
  536.    overall system robustness, resulting from these two assumptions is
  537.    absolutely critical.
  538.  
  539.    In detail, however, particularly in areas which are still the subject
  540.    of research and experimentation (such as resource allocation,
  541.    security, etc.), it seems difficult to provide a finished definition
  542.    of exactly what the service model of the internetwork layer ought to
  543.    be.
  544.  
  545. 3.1.2 The Subsystems of the Internetwork Layer
  546.  
  547.    In any event, by viewing the internetwork layer as a large system,
  548.    one starts to think about what subsystems are needed, and what the
  549.    interactions among them should look like. Nimrod is simply a number
  550.    of the subsystems of this larger system, the internetwork layer. It
  551.    is *not* intended to be a purely standalone set of subsystems, but to
  552.    work together in close concert with the other subsystems of the
  553.    internetwork layer (resource allocation, security, charging, etc.) to
  554.    provide the internetwork layer service model.
  555.  
  556.    One reason that Nimrod is not simply a monolithic subsystem is that
  557.    some of the interactions with the other subsystems of the
  558.    internetwork layer, for instance the resource allocation subsystem,
  559.  
  560.  
  561.  
  562. Chiappa                                                        [Page 10]
  563.  
  564. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  565.  
  566.  
  567.    are much clearer and easier to manage if the routing is broken up
  568.    into several subsystems, with the interactions between them open.
  569.  
  570.    It is important to realize that Nimrod was initially broken up into
  571.    separate subsystems for purely internal reasons. It so happens that,
  572.    considered as a separate problem, the fundamental boundary lines for
  573.    dividing routing up into subsystems are the same boundaries that make
  574.    interaction with other subsystems cleaner; this provides added
  575.    evidence that these boundaries are in fact the right ones.
  576.  
  577.    The subsystems which comprise the functionality covered by Nimrod are
  578.    i) routing information distribution (in the case of Nimrod, topology
  579.    map distribution, along with the attributes [policy, QOS, etc.] of
  580.    the topology elements), ii) route selection (strictly speaking, not
  581.    part of the Nimrod spec per se, but functional examples will be
  582.    produced), and iii) user traffic handling.
  583.  
  584.    The former can fairly well be defined without reference to other
  585.    subsystems, but the second and third are necessarily more involved.
  586.    For instance, route selection might involve finding out which links
  587.    have the resources available to handle some required level of
  588.    service. For user traffic handling, if a particular application needs
  589.    a resource reservation, getting that resource reservation to the
  590.    routers is as much a part of getting the routers ready as making sure
  591.    they have the correct routing information, so here too, routing is
  592.    tied in with other subsystems.
  593.  
  594.    In any event, although we can talk about the relationship between the
  595.    Nimrod subsystems, and the other functional subsystems of the
  596.    internetwork layer, until the service model of the internetwork layer
  597.    is more clearly visible, along with the functional boundaries within
  598.    that layer, such a discussion is necessarily rather nebulous.
  599.  
  600. 3.2 State and Flows in the Internetwork Layer
  601.  
  602.    The internetwork layer as whole contains a variety of information, of
  603.    varying lifetimes. This information we can refer to as the
  604.    internetwork layer's "state". Some of this state is stored in the
  605.    routers, and some is stored in the packets.
  606.  
  607.    In the packet, I distinguish between what I call "forwarding state",
  608.    which records something about the progress of this individual packet
  609.    through the network (such as the hop count, or the pointer into a
  610.    source route), and other state, which is information about what
  611.    service the user wants from the network (such as the destination of
  612.    the packet), etc.
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Chiappa                                                        [Page 11]
  619.  
  620. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  621.  
  622.  
  623. 3.2.1 User and Service State
  624.  
  625.    I call state which reflects the desires and service requests of the
  626.    user "user state". This is information which could be sent in each
  627.    packet, or which can be stored in the router and applied to multiple
  628.    packets (depending on which makes the most engineering sense). It is
  629.    still called user state, even when a copy is stored in the routers.
  630.  
  631.    User state can be divided into two classes; "critical" (such as
  632.    destination addresses), without which the packets cannot be forwarded
  633.    at all, and "non-critical" (such as a resource allocation class),
  634.    without which the packets can still be forwarded, just not quite in
  635.    the way the user would most prefer.
  636.  
  637.    There are a range of possible mechanisms for getting this user state
  638.    to the routers; it may be put in every packet, or placed there by a
  639.    setup. In the latter case, you have a whole range of possibilities
  640.    for how to get it back when you lose it, such as placing a copy in
  641.    every Nth packet.
  642.  
  643.    However, other state is needed which cannot be stored in each packet;
  644.    it's state about the longer-term (i.e., across the life of many
  645.    packets) situation; i.e., state which is inherently associated with a
  646.    number of packets over some time-frame (e.g., a resource allocation).
  647.    I call this state "server state".
  648.  
  649.    This apparently changes the "stateless" model of routers somewhat,
  650.    but this change is more apparent than real. The routers already
  651.    contain state, such as routing table entries; state without which is
  652.    it virtually impossible to handle user traffic. All that is being
  653.    changed is the amount, granularity, and lifetime, of state in the
  654.    routers.
  655.  
  656.    Some of this service state may need to be installed in a fairly
  657.    reliable fashion; e.g., if there is service state related to billing,
  658.    or allocation of resources for a critical application, one more or
  659.    less needs to be guaranteed that this service state has been
  660.    correctly installed.
  661.  
  662.    To the extent that you have state in the routers (either service
  663.    state, or user state), you have to be able to associate that state
  664.    with the packets it goes with. The fields in the packets that allow
  665.    you to do this are "tags".
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Chiappa                                                        [Page 12]
  675.  
  676. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  677.  
  678.  
  679. 3.2.2 Flows
  680.  
  681.    It is useful to step back for a bit here, and think about the traffic
  682.    in the network. Some of it will be from applications with are
  683.    basically transactions; i.e., they require only a single packet, or a
  684.    very small number.  (I tend to use the term "datagram" to refer to
  685.    such applications, and use the term "packet" to describe the unit of
  686.    transmission through the network.) However, other packets are part of
  687.    longer-lived communications, which have been termed "flows".
  688.  
  689.    A flow, from the user's point of view, is a sequence of packets which
  690.    are associated, usually by being from a single application instance.
  691.    In an internetwork layer which has a more complex service model
  692.    (e.g., supports resource allocation, etc.), the flow would have
  693.    service requirements to pass on to some or all of the subsystems
  694.    which provide those services.
  695.  
  696.    To the internetworking layer, a flow is a sequence of packets that
  697.    share all the attributes that the internetworking layer cares about.
  698.    This includes, but is not limited to: source/destination, path,
  699.    resource allocation, accounting/authorization,
  700.    authentication/security, etc., etc.
  701.  
  702.    There isn't necessarily a one-one mapping from flows to *anything*
  703.    else, be it a TCP connection, or an application instance, or
  704.    whatever. A single flow might contain several TCP connections (e.g.,
  705.    with FTP, where you have the control connection, and a number of data
  706.    connections), or a single application might have several flows (e.g.,
  707.    multi-media conferencing, where you'd have one flow for the audio,
  708.    another for a graphic window, etc., with different resource
  709.    requirements in terms of bandwidth, delay, etc., for each.)
  710.  
  711.    Flows may also be multicast constructs, i.e., multiple sources and
  712.    destinations; they are not inherently unicast. Multicast flows are
  713.    more complex than unicast (there is a large pool of state which must
  714.    be made coherent), but the concepts are similar.
  715.  
  716.    There's an interesting architectural issue here. Let's assume we have
  717.    all these different internetwork level subsystems (routing, resource
  718.    allocation, security/access-control, accounting), etc. Now, we have
  719.    two choices.
  720.  
  721.    First, we could allow each individual subsystem which uses the
  722.    concept of flows to define itself what it thinks a "flow" is, and
  723.    define which values in which fields in the packet define a given
  724.    "flow" for it. Now, presumably, we have to allow 2 flows for
  725.    subsystem X to map onto 1 flow for subsystem Y to map onto 3 flows
  726.    for subsystem Z; i.e., you can mix and match to your heart's content.
  727.  
  728.  
  729.  
  730. Chiappa                                                        [Page 13]
  731.  
  732. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  733.  
  734.  
  735.    Second, we could define a standard "flow" mechanism for the
  736.    internetwork layer, along with a way of identifying the flow in the
  737.    packet, etc. Then, if you have two things which wish to differ in
  738.    *any* subsystem, you have to have a separate flow for each.
  739.  
  740.    The former has the advantages that it's a little easier to deploy
  741.    incrementally, since you don't have to agree on a common flow
  742.    mechanism. It may save on replicated state (if I have 3 flows, and
  743.    they are the same for subsystem X, and different for Y, I only need
  744.    one set of X state). It also has a lot more flexibility. The latter
  745.    is simple and straightforward, and given the complexity of what is
  746.    being proposed, it seems that any place we can make things simpler,
  747.    we should.
  748.  
  749.    The choice is not trivial; it all depends on things like "what
  750.    percentage of flows will want to share the same state in certain
  751.    subsystems with other flows". I don't know how to quantify those, but
  752.    as an architect, I prefer simple, straightforward things. This system
  753.    is pretty complex already, and I'm not sure the benefits of being
  754.    able to mix and match are worth the added complexity. So, for the
  755.    moment I'll assume a single, system-wide, definition of flows.
  756.  
  757.    The packets which belong to a flow could be identified by a tag
  758.    consisting of a number of fields (such as addresses, ports, etc.), as
  759.    opposed to a specialized field. However, it may be more
  760.    straightforward, and foolproof, to simply identify the flow a packet
  761.    belongs to with by means of a specialized tag field (the "flow-id" )
  762.    in the internetwork header. Given that you can always find situations
  763.    where the existing fields alone don't do the job, and you *still*
  764.    need a separate field to do the job correctly, it seems best to take
  765.    the simple, direct approach , and say "the flow a packet belongs to
  766.    is named by a flow-id in the packet header".
  767.  
  768.    The simplicity of globally-unique flow-id's (or at least a flow-id
  769.    which unique along the path of the flow) is also desirable; they take
  770.    more bits in the header, but then you don't have to worry about all
  771.    the mechanism needed to remap locally-unique flow-id's, etc., etc.
  772.    From the perspective of designing something with a long lifetime, and
  773.    which is to be deployed widely, simplicity and directness is the only
  774.    way to go. For me, that translates into flows being named solely by
  775.    globally unique flow-id's, rather than some complex semantics on
  776.    existing fields.
  777.  
  778.    However, the issue of how to recognize which packets belong to flows
  779.    is somewhat orthogonal to the issue of whether the internetwork level
  780.    recognizes flows at all. Should it?
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Chiappa                                                        [Page 14]
  787.  
  788. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  789.  
  790.  
  791. 3.2.3 Flows and State
  792.  
  793.    To the extent that you have service state in the routers you have to
  794.    be able to associate that state with the packets it goes with. This
  795.    is a fundamental reason for flows. Access to service state is one
  796.    reason to explicitly recognize flows at the internetwork layer, but
  797.    it is not the only one.
  798.  
  799.    If the user has requirements in a number of areas (e.g., routing and
  800.    access control), they can theoretically communicate these to the
  801.    routers by placing a copy of all the relevant information in each
  802.    packet (in the internetwork header). If many subsystems of the
  803.    internetwork are involved, and the requirements are complex, this
  804.    could be a lot of bits.
  805.  
  806.    (As a final aside, there's clearly no point in storing in the routers
  807.    any user state about packets which are providing datagram service;
  808.    the datagram service has usually come and gone in the same packet,
  809.    and this discussion is all about state retention.)
  810.  
  811.    There are two schools of thought as to how to proceed. The first says
  812.    that for reasons of robustness and simplicity, all user state ought
  813.    to be repeated in each packet. For efficiency reasons, the routers
  814.    may cache such user state, probably along with precomputed data
  815.    derived from the user state.  (It makes sense to store such cached
  816.    user state along with any applicable server state, of course.)
  817.  
  818.    The second school says that if something is going to generate lots of
  819.    packets, it makes engineering sense to give all this information to
  820.    the routers once, and from then on have a tag (the flow-id) in the
  821.    packet which tells the routers where to find that information. It's
  822.    simply going to be too inefficient to carry all the user state around
  823.    all the time. This is purely an engineering efficiency reason, but
  824.    it's a significant one.
  825.  
  826.    There is a slightly deeper argument, which says that the routers will
  827.    inevitably come to contain more user state, and it's simply a
  828.    question of whether that state is installed by an explicit mechanism,
  829.    or whether the routers infer that state from watching the packets
  830.    which pass through them.  To the extent that it is inevitable anyway,
  831.    there are obvious benefits to be gained from recognizing that, and an
  832.    explicit design of the installation is more likely to give
  833.    satisfactory results (as opposed to an ad-hoc mechanism).
  834.  
  835.    It is worth noting that although the term "flow" is often used to
  836.    refer to this state in the routers along the path of the flow, it is
  837.    important to distinguish between i) a flow as a sequence of packets
  838.    (i.e., the definition given in 3.2.2 above), and ii) a flow, as the
  839.  
  840.  
  841.  
  842. Chiappa                                                        [Page 15]
  843.  
  844. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  845.  
  846.  
  847.    thing which is set up in the routers. They are different, and
  848.    although the particular meaning is usually clear from the context,
  849.    they are not the same thing at all.
  850.  
  851.    I'm not sure how much use there is to any intermediate position, in
  852.    which one subsystem installs user state in the routers, and another
  853.    carries a copy of its user state in each packet.
  854.  
  855.    (There are other intermediate positions. First, one flow might use a
  856.    given technique for all its subsystems, and another flow might use a
  857.    different technique for its; there is potentially some use to this,
  858.    although I'm not sure the cost in complexity of supporting both
  859.    mechanisms is worth the benefits. Second, one flow might use one
  860.    mechanism with one router along its path, and another for a different
  861.    router. A number of different reasons exist as to why one might do
  862.    this, including the fact that not all routers may support the same
  863.    mechanisms simultaneously.)
  864.  
  865.    It seems to me that to have one internetwork layer subsystem (e.g.,
  866.    resource allocation) carry user state in all the packets (perhaps
  867.    with use of a "hint" in the packets to find potentially cached copies
  868.    in the router), and have a second (e.g., routing) use a direct
  869.    installation, and use a tag in the packets to find it, makes little
  870.    sense. We should do one or the other, based on a consideration of the
  871.    efficiency/robustness tradeoff.
  872.  
  873.    Also, if there is a way of installing such flow-associated state, it
  874.    makes sense to have only one, which all subsystems use, instead of
  875.    building a separate one for each flow.
  876.  
  877.    It's a little difficult to make the choice between installation, and
  878.    carrying a copy in each packet, without more information of exactly
  879.    how much user state the network is likely to have in the future. (For
  880.    instance, we might wind up with 500 byte headers if we include the
  881.    full source route, resource reservation, etc., in every header.)
  882.  
  883.    It's also difficult without consideration of the actual mechanisms
  884.    involved. As a general principle, we wish to make recovery from a
  885.    loss of state as local as possible, to limit the number of entities
  886.    which have to become involved. (For instance, when a router crashes,
  887.    traffic is rerouted around it without needing to open a new TCP
  888.    connection.) The option of the "installation" looks a lot more
  889.    attractive if it's simple, and relatively cheap, to reinstall the
  890.    user state when a router crashes, without otherwise causing a lot of
  891.    hassle.
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Chiappa                                                        [Page 16]
  899.  
  900. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  901.  
  902.  
  903.    However, given the likely growth in user state, the necessity for
  904.    service state, the requirement for reliable installation, and a
  905.    number of similar considerations, it seems that direct installation
  906.    of user state, and explicit recognition of flows, through a unified
  907.    definition and tag mechanism in the packets, is the way to go, and
  908.    this is the path that Nimrod has chosen.
  909.  
  910. 3.3 Specific Interaction Issues
  911.  
  912.    Here is a very incomplete list of the things which Nimrod would like
  913.    to see from the internetwork layer as a whole:
  914.  
  915.    - A unified definition of flows in the internetwork layer, and a
  916.      unified way of identifying, through a separate flow-id field, which
  917.      packets belong to a given flow.
  918.  
  919.    - A unified mechanism (potentially distributed) for installing state
  920.      about flows (including multicast flows) in routers.
  921.  
  922.    - A method for getting information about whether a given resource
  923.      allocation request has failed along a given path; this might be
  924.      part of the unified flow setup mechanism.
  925.  
  926.    - An interface to (potentially distributed) mechanism for maintaining
  927.      the membership in a multi-cast group.
  928.  
  929.    - Support for multiple interfaces; i.e., multi-homing. Nimrod does
  930.      this by decoupling transport identification (done via EID's) from
  931.      interface identification (done via locators). E.g., a packet with
  932.      any valid destination locator should be accepted by the TCP of an
  933.      endpoint, if the destination EID is the one assigned to that
  934.      endpoint.
  935.  
  936.    - Support for multiple locators ("addresses") per network interface.
  937.      This is needed for a number of reasons, among them to allow for
  938.      less painful transitions in the locator abstraction hierarchy as
  939.      the topology changes.
  940.  
  941.    - Support for multiple UID's ("addresses") per endpoint (roughly, per
  942.      host). This would definitely include both multiple multicast SID's,
  943.      and at least one unicast EID (the need for multiple unicast EID's
  944.      per endpoint is not obvious).
  945.  
  946.    - Support for distinction between a multicast group as a named
  947.      entity, and a multicast flow which may not reach all the members.
  948.  
  949.    - A distributed, replicated, user name translation system (DNS?) that
  950.      maps such user names into (EID, locator0, ... locatorN) bindings.
  951.  
  952.  
  953.  
  954. Chiappa                                                        [Page 17]
  955.  
  956. RFC 1753         Nimrod Technical Requirements for IPng    December 1994
  957.  
  958.  
  959. Security Considerations
  960.  
  961.    Security issues are discussed in section 2.2.
  962.  
  963. Author's Address
  964.  
  965.    J. Noel Chiappa
  966.  
  967.    Phone: (804) 898-8183
  968.    EMail: jnc@lcs.mit.edu
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Chiappa                                                        [Page 18]
  1011.  
  1012.