home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / rfc / rfc1705 < prev    next >
Text File  |  1994-11-17  |  65KB  |  1,516 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group:                                        R. Carlson
  8. Request for Comments: 1705                                           ANL
  9. Category: Informational                                     D. Ficarella
  10.                                                                 Motorola
  11.                                                             October 1994
  12.  
  13.  
  14.                     Six Virtual Inches to the Left:
  15.                          The Problem with IPng
  16.  
  17. Status of this Memo
  18.  
  19.    This memo provides information for the Internet community.  This memo
  20.    does not specify an Internet standard of any kind.  Distribution of
  21.    this memo is unlimited.
  22.  
  23. Abstract
  24.  
  25.    This document was submitted to the IETF IPng area in response to RFC
  26.    1550.  Publication of this document does not imply acceptance by the
  27.    IPng area of any ideas expressed within.  Comments should be
  28.    submitted to the big-internet@munnari.oz.au mailing list.
  29.  
  30. Overview
  31.  
  32.    This RFC suggests that a new version of TCP (TCPng), and UDP, be
  33.    developed and deployed.  It proposes that a globally unique address
  34.    (TA) be assigned to Transport layer protocol (TCP/UDP).  The purpose
  35.    of this TA is to uniquely identify an Internet node without
  36.    specifying any routing information.  A new version of TCP, and UDP,
  37.    will need to be developed describing the new header fields and
  38.    formats.  This new version of TCP would contain support for high
  39.    bandwidth-delay networks.  Support for multiple network layer
  40.    (Internet Protocol) protocols is also possible with this new TCP.
  41.    Assigning an address to TCP/UDP would allow for the support of
  42.    multiple network layer protocols (IPng's).  The TA would identify the
  43.    location of an Internet node.  The IPng layer would provide routing
  44.    information to the Internet.  Separating the location and routing
  45.    functions will greatly increase the versatility of the Internet.
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Carlson & Ficarella                                             [Page 1]
  59.  
  60. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  61.  
  62.  
  63. Table of Contents
  64.  
  65.    1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
  66.    2.  Historical perspective . . . . . . . . . . . . . . . . . . . .  3
  67.         2.1  OSI and the 7 layer model  . . . . . . . . . . . . . . .  3
  68.         2.2  Internet Evolution . . . . . . . . . . . . . . . . . . .  4
  69.         2.3  The Reasons for Change . . . . . . . . . . . . . . . . .  4
  70.               2.3.1  Class-B Address Exhaustion . . . . . . . . . . .  4
  71.               2.3.2  Routing Table Growth . . . . . . . . . . . . . .  5
  72.    3.  The Problems with Change . . . . . . . . . . . . . . . . . . .  5
  73.         3.1  TCP/UDP Implementations  . . . . . . . . . . . . . . . .  6
  74.         3.2  User Applications  . . . . . . . . . . . . . . . . . . .  6
  75.         3.3  The Entrenched Masses  . . . . . . . . . . . . . . . . .  6
  76.    4.  Making TCP & UDP Protocol Independent  . . . . . . . . . . . .  7
  77.         4.1  Transport Addressing . . . . . . . . . . . . . . . . . .  7
  78.         4.2  TCPng  . . . . . . . . . . . . . . . . . . . . . . . . . 12
  79.         4.3  Mandatory Options  . . . . . . . . . . . . . . . . . . . 15
  80.         4.4  Optional Options . . . . . . . . . . . . . . . . . . . . 16
  81.         4.5  Compatibility Issues . . . . . . . . . . . . . . . . . . 16
  82.               4.5.1  Backward Compatibility . . . . . . . . . . . . . 17
  83.         4.6  Level 4 Gateways . . . . . . . . . . . . . . . . . . . . 17
  84.         4.7  Error Conditions . . . . . . . . . . . . . . . . . . . . 18
  85.    5.  Advantages and Disadvantages of this approach  . . . . . . . . 18
  86.    6.  Conclusions  . . . . . . . . . . . . . . . . . . . . . . . . . 19
  87.    References . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
  88.    Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
  89.    Appendix A . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
  90.    Appendix B . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
  91.    Appendix C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
  92.    Appendix D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
  93.    Security Considerations  . . . . . . . . . . . . . . . . . . . . . 27
  94.    Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27
  95.  
  96. 1.  Introduction
  97.  
  98.    For more than a decade, network engineers have understood the
  99.    benefits of a multi-layer protocol stack. However, during its
  100.    development, the Transmission Control Protocol (TCP) was strongly
  101.    linked to the Internet Protocol (IP) [Postel, 1981a]. When the TCP/IP
  102.    protocol suite was developed, two important ideas were implemented.
  103.    The first was that each host would be uniquely identified by a
  104.    network layer number (i.e., IP number = 192.0.2.1). The second was to
  105.    identify an application with a transport layer port number (i.e., TCP
  106.    DNS number = 53). For host-to-host communications, the IP and port
  107.    numbers would be concatenated to form a socket (i.e., 192.0.2.1.53).
  108.    While this has lead to a very efficient and streamlined TCP layer, it
  109.    has tightly coupled the TCP and IP layers. So much so, in fact, that
  110.    it is nearly impossible to run TCP over any network layer except for
  111.  
  112.  
  113.  
  114. Carlson & Ficarella                                             [Page 2]
  115.  
  116. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  117.  
  118.  
  119.    IP.
  120.  
  121.    The motivation for writing this paper resulted from research into the
  122.    various Internet Protocol Next Generation (IPng) proposals put forth
  123.    by various IETF working groups. Each of the IPng proposals strives to
  124.    solve the impending IP address exhaustion problem by increasing the
  125.    size of the address field. They all allude to modifications to TCP
  126.    and User Datagram Protocol (UDP) to make them capable of supporting a
  127.    new network layer IPng protocol. The authors of this paper feel that
  128.    this points to an inherent TCP/IP design flaw. The flaw is namely
  129.    that the transport (TCP) and network (IP) layers are not protocol
  130.    independent. In this paper, we will propose a new TCP and UDP
  131.    implementation that will make the transport and protocol layers
  132.    independent and thus allow for any of the IPng protocols to operate
  133.    on the same internet without any further modification to the higher
  134.    layer protocols.  TCP, and UDP would become extremely powerful
  135.    Application Programming Interfaces (APIs) that operate effectively
  136.    over multiple network layer technologies.
  137.  
  138. 2.  Historical perspective
  139.  
  140. 2.1  OSI and the 7 layer model
  141.  
  142.    Present day computer and communication systems have become
  143.    increasingly heterogeneous in both their software and hardware
  144.    complexity, as well as their intended functionality. Prior to the
  145.    establishment of computer communications industry standards,
  146.    proprietary standards followed by particular software and hardware
  147.    manufacturers prevented communication and information exchange
  148.    between different manufacturers  products and therefore lead to many
  149.    "closed systems" [Halsal, 1992] incapable of readily sharing
  150.    information. With the proliferation of these types of systems in the
  151.    mid 1970s, the potential advantages of "open systems" where
  152.    recognized by the computer industry and a range of standards started
  153.    to be introduced [Halsal, 1992].
  154.  
  155.    The first and perhaps most important of these standards was the
  156.    International Standards Organization (ISO) reference model for Open
  157.    Systems Interconnection standard (OSI), describing the complete
  158.    communication subsystem within each computer. The goal of this
  159.    standard model was to "allow an application process in any computer
  160.    that supports a particular set of standards to communicate freely
  161.    with an application process in any other computer that supports the
  162.    same standards, irrespective of its origin of manufacture" [Halsal,
  163.    1992].  The last statement above describes the OSI 7-layer model
  164.    which has now, in concept, become the fundamental building block of
  165.    computer networks.  Though there are arguably no present day
  166.    computers and networks completely compliant to all 7 layers of the
  167.  
  168.  
  169.  
  170. Carlson & Ficarella                                             [Page 3]
  171.  
  172. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  173.  
  174.  
  175.    OSI protocol stack, most protocol stacks do embrace the fundamental
  176.    concept of independent layers, thus allowing the flexibility for
  177.    computers operating with dissimilar protocol stacks to communicate
  178.    with one another.
  179.  
  180.    Take for example, the datalink layers as supported by TCP/IP.  TCP/IP
  181.    will run equally well in either the local area network (LAN) or wide
  182.    area network (WAN) environments. Even though the LAN may use Ethernet
  183.    802.3 and the WAN may use T1 serial links. This function was designed
  184.    to present a "standardized set of network functions (i.e., a logical
  185.    network)", to the upper network layer, "regardless of the exact
  186.    details of the lower level implementations" [Meyer, Zobrist, 1990].
  187.  
  188. 2.2  Internet Evolution
  189.  
  190.    "The internet architecture, the grand plan behind the TCP/IP protocol
  191.    suite" was developed and tested in the late 1970s, [Braden, et al,
  192.    1991] and but for the addition of subnetting, autonomous systems, and
  193.    the domain name system in the early 1980s and the more recent IP
  194.    multicasting implementation, stands today essentially unchanged. Even
  195.    with the understood benefits of a multi-layer protocol stack, all
  196.    steps taken to enhance the internet and its services have been very
  197.    incremental and narrowly focused.
  198.  
  199. 2.3  The Reasons for Change
  200.  
  201.    The reasons for change from IP to IPng can be described in terms of
  202.    problems for which the current IP will simply become inadequate and
  203.    unusable in the near future (~2-4 years). These problems are the
  204.    exhaustion of IP class B address space, the exhaustion of IP address
  205.    space in general, and the non-hierarchical nature of address
  206.    allocation leading to a flat routing space [Dixon, 1993].
  207.  
  208. 2.3.1  Class-B Address Exhaustion
  209.  
  210.    One of the fundamental causes of this problem is the lack of a class
  211.    of network address appropriate for a mid-sized organization. The
  212.    class-C address, with a maximum of 254 unique host addresses is to
  213.    small, while class-B, with a maximum of in excess of 65 thousand
  214.    unique host addresses is to large [Fuller, et al, 1992].  As a
  215.    result, class-B addresses get assigned even though nowhere near the
  216.    number of available addresses will ever get used. This fact, combined
  217.    with a doubling of class-B address allocation on a yearly basis lead
  218.    the Internet Engineering Steering Group (IESG) to conclude in
  219.    November, 1992 that the class-B address space would be completely
  220.    exhausted within 2 years time.  At that point, class-C addresses
  221.    would have to be assigned, sometimes in multiples, to organizations
  222.    needing more than the 254 possible host addresses from a single
  223.  
  224.  
  225.  
  226. Carlson & Ficarella                                             [Page 4]
  227.  
  228. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  229.  
  230.  
  231.    class-C address [Almquist, Gross, 1992].
  232.  
  233. 2.3.2  Routing Table Growth
  234.  
  235.    Based on research conducted by the IESG in November 1992, definite
  236.    routing table size explosion problems were identified. Namely, it was
  237.    determined that current router technology at that point could support
  238.    a maximum of 16,000 routes, which in turn could support the internet
  239.    for an additional 12 to 18 months (~May, 1994) at the then twofold
  240.    annual network growth rate. However, vendor router maximum
  241.    capabilities were in the process of being increased to 64,000 routes,
  242.    which at the two-fold annual network growth rate, could bring us an
  243.    additional 2 years of lead time, (at best bringing us to May, 1996,
  244.    and at worst to November, 1995) assuming the class-B address
  245.    exhaustion problem mentioned above could be solved in the interim
  246.    [Almquist, Gross, 1992].
  247.  
  248.    As a short term, incremental solution to this routing table growth
  249.    problem, and to aid in the class-B address exhaustion problem the
  250.    IESG endorsed the CIDR supernetting strategy proposal (see RFC-1338
  251.    for full details of this proposal). However, this strategy was
  252.    estimated to have a viability of approximately 3 years, at which
  253.    point the internet would run out of all classes of IP addresses in
  254.    general. Hence, it is clear that even CIDR only offers temporary
  255.    relief. However, if implemented immediately, CIDR can afford the
  256.    Internet community time to develop and deploy an approach to
  257.    addressing and routing which allows scaling to orders of magnitude
  258.    larger than the current architecture (IPng).
  259.  
  260. 3.  The Problems with Change
  261.  
  262.    There are many problems, both philosophical and technical, which
  263.    greatly contribute to the difficulties associated with a large scale
  264.    change such as the one proposed in the conversion from IP to IPng.
  265.    These problems range from having to rewrite highly utilized and
  266.    entrenched user applications, such as NFS, RPC, etc, to potentially
  267.    having to invest additional capital to purchase hardware that
  268.    supports the new protocol(s). This proposal solves the urgent
  269.    internet problems listed above, while simultaneously limiting the
  270.    amounts of retraining and re- investing that the user community would
  271.    have to undertake. The TCP layer will once and for all be changed to
  272.    support a multiprotocol internet.  The net affect is that while
  273.    administrators will necessarily be trained in the operations and
  274.    details of this new TCP, the much larger operator and end user
  275.    community will experience no perceptible change in service and
  276.    network usage.
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Carlson & Ficarella                                             [Page 5]
  283.  
  284. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  285.  
  286.  
  287. 3.1  TCP/UDP Implementations
  288.  
  289.    Both TCP and UDP are highly dependent on the IPv4 network layer for 2
  290.    very low level reasons.  1) a TCP/UDP socket is formed by
  291.    concatenating a network layer address (IP address) and the transport
  292.    layer TCP/UDP port number.  2) included in the TCP/UDP checksum
  293.    calculation are the IP layer source and destination addresses
  294.    mentioned above which are transferred across the TCP/IP [Postel,
  295.    1981b] or UDP/IP [Postel, 1980] interfaces as procedure call
  296.    arguments. It should be noted at this point that the reason for such
  297.    strong dependence between the transport and network layers in TCP/IP
  298.    or UDP/IP is to insure a globally unique TCP/UDP layer address, such
  299.    that a unique connection could be identified by a pair of sockets.
  300.    The authors of this paper propose that the IP address requirement
  301.    with TCP and UDP be replaced with a globally unique transport address
  302.    (TA) concatenated with a transport layer port address. This solution
  303.    offers the capability to still maintain a globally unique address and
  304.    host unique port number with the added benefit of eliminating the
  305.    transport and network layer dependence on one another.
  306.  
  307. 3.2  User Applications
  308.  
  309.    In addition to TCP and UDP, there are a large number of firmly
  310.    entrenched higher level applications that use the IP network layer
  311.    address embedded internally, and would therefore require modification
  312.    for use with the proposed IPng network layer schemes. These
  313.    applications include, but are not limited to Network File System
  314.    (NFS), Remote Procedure Call (RPC), and File Transfer Protocol (FTP).
  315.    All of these applications should be modified to use the Internet
  316.    Domain name to identify the remote node, and not an embedded,
  317.    protocol dependent IP address.
  318.  
  319. 3.3  The Entrenched Masses
  320.  
  321.    Will users voluntarily give up their IPv4 systems to move to IPng?
  322.    It seems likely that many users will resist the change.  They will
  323.    perceive no benefit and will not install the new software.  Making
  324.    the local Internet contact responsible may not be feasible or
  325.    practical in all cases. Another issue is backward compatibility
  326.    issues.  If a host needs to run IPng and IPv4 to support old hosts,
  327.    then 1) where is the address savings IPng promised.  2) Why change if
  328.    the host you are talking to has IPv4 anyway?
  329.  
  330.    On the other hand, replacing the existing TCP (TCPv6) with this new
  331.    version (TCPng) will benefit users in several ways.  1) Users will be
  332.    able to connect to unmodified TCPv6 hosts.  2) As nodes upgrade to
  333.    TCPng, new features will be enabled allowing TCP to communicate
  334.    effectively over high bandwidth*delay network links.  3) System
  335.  
  336.  
  337.  
  338. Carlson & Ficarella                                             [Page 6]
  339.  
  340. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  341.  
  342.  
  343.    administrators will be able to incrementally upgrade nodes as needed
  344.    or as local conditions demand.  4) Upgraded nodes may return their
  345.    IPv4 address and use an IPng address and TCP transporter function,
  346.    described later, to communicate with IPv4 hosts.
  347.  
  348. 4.  Making TCP & UDP Protocol Independent
  349.  
  350.    The OSI 7 layer model specifies that each layer be independent of the
  351.    adjacent layers. What is specified is the interface between layers.
  352.    This allows layers to be replaced and/or modified without making
  353.    changes to the other layers.  As was pointed out previously, the TCP
  354.    and UDP transport layers violate this precept.  In the following
  355.    discussion, when we refer to TCP we mean both the TCP and UDP
  356.    protocols.  The generic term transport layer and TCP will be used
  357.    interchangeably.
  358.  
  359.    Overcoming TCP's dependence on IP will require changes to the
  360.    structure of the TCP header.  The developers and implementors will
  361.    also have to change the way they think about TCP and IP.  End users
  362.    will also have to change the way they view the Internet.  Gone will
  363.    be the days when Internet node names and IP addresses can be used
  364.    interchangeably.  The goal of this change is to allow end users to
  365.    migrate from the current IPv4 network layer to an IPng layer.  What
  366.    this IPng protocol is will be left to the Internet Architecture
  367.    Board/Internet Engineering Steering Group/Internet Engineering Task
  368.    Force (IAB/IESG/IETF) to decide.  By adopting this proposal, the
  369.    migration will be greatly enhanced.
  370.  
  371.    One of the stated goals of the IAB is to promote a single Internet
  372.    protocol suite [Leiner, Rekhter, 1993].  While this is a laudable
  373.    goal, we should not be blinded by it. The addition of a Transport
  374.    layer address (TA) does not invalidate the IAB's stated goals.  It
  375.    merely brings the implementation into compliance with standard
  376.    networking practices.  The historical reasons for concatenating TCP
  377.    port numbers to IP numbers has long since passed. The increasing
  378.    throughput of transmission lines and the negligible effect of packet
  379.    overhead (see appendix A) prove this.  The details of assigning and
  380.    using TA's are discussed in the next few sections.
  381.  
  382. 4.1  Transport Addressing
  383.  
  384.    A Transport Address (TA) will be assigned to the TCP transport layer
  385.    on each Internet node.  The purpose of this address is to allow a TCP
  386.    on one node to communicate with a TCP on a remote node.  Some of the
  387.    goals defined in developing this address are:
  388.  
  389.         1.  Fixed size -- A fixed size will make parsing easier for
  390.             decoding stations.
  391.  
  392.  
  393.  
  394. Carlson & Ficarella                                             [Page 7]
  395.  
  396. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  397.  
  398.  
  399.         2.  Minimum impact on TCP packet size -- This information
  400.             will need to be carried each TCP packet.
  401.  
  402.         3.  Global Uniqueness -- It is desirable (required) to have a
  403.             globally unique Transport Address.
  404.  
  405.         4.  Automatic Registration -- To reduce implementation
  406.             problems, an automatic registration of the TA is
  407.             desirable.
  408.  
  409.    The TA will be used when an Internet node attempts to communicate
  410.    with another Internet node.  Conceptually you can view the TA as
  411.    replacing the IP number in every instance it now appears in the
  412.    transport layer (i.e., a socket would change from IP#.Port# to
  413.    TA#.Port#).  A connection setup would thus be:
  414.  
  415.         1.  A user starts an application on Node-A and requests
  416.             service from Node-B.  The user identifies Node-B by
  417.             referencing it's Internet Domain Name.
  418.  
  419.         2.  The TCP on Node-A makes a Domain Name Service (DNS) call
  420.             to determine the TA of Node-B.
  421.  
  422.         3.  Node-A constructs a TCP packet using the header Src = TA-
  423.             A.port and Dest = TA-B.port and passes this packet down to
  424.             the network layer.
  425.  
  426.         4.  The IP on Node-A makes a DNS call to determine the IP
  427.             address of Node-B.  The IP will cache this TA/IP pair for
  428.             later use.
  429.  
  430.         5.  Node-A constructs an IP packet using the header Src = IP-A
  431.             and Dest = IP-B and passes this packet down to the Media
  432.             Access layer.
  433.  
  434.         6.  Delivery of the packet is identical to the delivery of an
  435.             existing Internet IP packet.
  436.  
  437.         7.  The IP on Node-B examines the IP Dest address and if it
  438.             matches it's own, strips off the header and passes the
  439.             data portion up to the TCP.  (Note: the packet may have
  440.             passed through several IP routers between the source and
  441.             destination hosts.)
  442.  
  443.         8.  The TCP on Node-B examines the header to determine if the
  444.             Dest TA is it's own, if so it passes the data to the
  445.             application specified by the port address.  If not it
  446.             determines if it should perform the transporter function.
  447.  
  448.  
  449.  
  450. Carlson & Ficarella                                             [Page 8]
  451.  
  452. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  453.  
  454.  
  455.             The packet will be forwarded toward the destination or an
  456.             error message will be returned.
  457.  
  458.    The above steps represent a quick synopsis of how user applications
  459.    may pass data between different Internet nodes.  The exact structure
  460.    of the network is hidden from the application, allowing the network
  461.    to be modified and improved as needed.  Using the transporter
  462.    function, several different network layers may be traversed when
  463.    moving from source to destination (several examples are provided in
  464.    appendix D).
  465.  
  466.    One of the underlying assumptions is that the user application must
  467.    refrain from making assumptions about the network structure.  As
  468.    pointed out in section 3, this is not the case for the current
  469.    Internet network.  User applications that are deployed with this new
  470.    TCP must be capable of making this assumption.  This means that the
  471.    user application should store the Internet Domain Name in it's
  472.    internal structure instead of the IPng network number.  The domain
  473.    name is globally unique and provides enough information to the system
  474.    to find the transport and network layer addresses.  The user
  475.    application must pass the following parameters down to TCP:
  476.  
  477.       1.  Destination domain name  (Text string)
  478.       2.  Pointer to data buffer
  479.       3.  Quality of service indicators
  480.       4.  Options
  481.  
  482.    When the user application writes data to the network, TCP will return
  483.    a nonzero integer to indicate an error condition, or a zero integer
  484.    to indicate success. When the user application reads data from the
  485.    network, TCP will deliver a pointer to a data buffer back to the
  486.    application.
  487.  
  488.    TCP will receive the users request and it will make a DNS call to
  489.    determine the destination nodes TA.  If DNS returns a TA, TCP will
  490.    build a Transmission Control Block (TCB) (see the paragraph below)
  491.    and call the network layer.   Otherwise, TCP will make a DNS call
  492.    looking for the destination nodes IPv4 address.  If an address is
  493.    returned, TCP will takes the steps listed below in building a TCB,
  494.    and call the proper network layer.  If DNS returns a host unknown
  495.    indication, exit back to the user with a "host unknown" error.  TCP
  496.    should maintain a cache of domain names and addresses in lieu of
  497.    making repeated DNS calls.  This feature is highly recommended, but
  498.    not required.
  499.  
  500.    The state information needed to keep track of a TCP connection is
  501.    kept in the Transmission Control Block (TCB).  Currently this
  502.    structure has fields for the TCP parameters, source port, destination
  503.  
  504.  
  505.  
  506. Carlson & Ficarella                                             [Page 9]
  507.  
  508. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  509.  
  510.  
  511.    port, window size, sequence number, acknowledgment number, and any
  512.    TCP options.  The network layer source and destination IP numbers are
  513.    also stored here.  Finally, the status of the connection (LISTEN,
  514.    ESTABLISHED, CLOSING, of the TCP parameters and include the new
  515.    source and destination Transport addresses.  The existing space for
  516.    the IPv4 addresses will be left in place to allow for backward
  517.    compatibility.  The IPv4 fields will be used if the source is
  518.    communicating directly with an unmodified TCP/IP host.
  519.  
  520.    The existing status indicators will remain with their meaning
  521.    unchanged.  Connection setup will retain the current 3-way handshake.
  522.    When performing transporter functions, TCP will NOT build a TCB,
  523.    unless the destination is an unmodified IPv4 host (see appendix D).
  524.    The TCP connection remains an end-to-end reliable transport service,
  525.    regardless of the number of intermediate transporter nodes.
  526.  
  527.    TCP will build an old or new header (defined below) placing the user
  528.    application data in the data field.  If TCP is communicating directly
  529.    with an unmodified IPv4 host, the existing TCP header (STD 7, RFC
  530.    793) will be used for comparability reasons.  If the destination host
  531.    is an unmodified host, and an intermediate transporter node is being
  532.    used, this new TCP header must be used with the 'C' bit set to 1.
  533.    The destination TA will be set to the IPv4 address, and the packet
  534.    will be delivered to the transporter node.  If the destination host
  535.    is modified with this new TCP, the destination address will be set to
  536.    the TA and the packet will be delivered, possibly through a
  537.    transporter, to the remote host.
  538.  
  539.    TCP will communicate with it's underlying network layer(s) to deliver
  540.    packets to remote hosts.  The Internet Assigned Number Authority
  541.    (IANA) will assign unique identifiers to each network layer TCP will
  542.    support.  TCP will maintain a cache of TA's and IANA network layers
  543.    numbers, to allow support of multiple network layers.  When TCP
  544.    wishes to send data, it will consult this cache to determine which
  545.    network to send the packet to.  If the destination TA is not in this
  546.    cache, TCP will send a request to each of it's network layer(s)
  547.    asking if they know how to deliver data to this TA.  All of the
  548.    network layers supported by the sending host will be probed, in an
  549.    order defined by the system administrator, until one responds 'yes'
  550.    or they all have said 'no'.  The first layer to say 'yes' will be
  551.    used.  If no path exists, an error message will be returned to the
  552.    user application.  Once a network layer is identified, TCP will
  553.    communicate with it by passing the following parameters:
  554.  
  555.           1)  Destination address (TA or IPv4).
  556.           2)  A pointer to the data buffer.
  557.           3)  Options.
  558.  
  559.  
  560.  
  561.  
  562. Carlson & Ficarella                                            [Page 10]
  563.  
  564. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  565.  
  566.  
  567.    The network layer will use the destination address as an index into a
  568.    cache to determine the network address to send to.  In the entry is
  569.    not in the cache, it will make a DNS call to determine the network
  570.    address and a cache entry will be build (see appendix D).  It is
  571.    mandatory that a cache be maintained.  If a host is attached to
  572.    several different networks (i.e., a transporter) each layer will
  573.    maintain it's own cache.
  574.  
  575.    When IP receives a data packet from a remote node, it will strip off
  576.    the IP header and pass a pointer to the data buffer up to TCP.  IP
  577.    will also supply TCP with it's IANA network layer number.  TCP may
  578.    use the source TA and the IANA number to update it's cache.
  579.  
  580.    The structure of a TA is to concatenate a unique manufacture code
  581.    with a manufacturer defined variable to form a unique 64 bit number.
  582.    The unique manufacture code will be a 24 bit number, possibly the
  583.    same code as the IEEE 802.3 MAC address code.  The remaining 40 bits
  584.    will be supplied by the manufacture to uniquely identify the TCP.  It
  585.    is recommended that this field be built by encoding the
  586.    manufacturer's serial number.  An integer serial number will be
  587.    viewed as an integer number and converted into it's hexadecimal
  588.    equivalent, left padded with 00 octets if necessary.  If a serial
  589.    number contains Alpha characters, these alpha characters will be
  590.    converted into octets using the international standard ASCII code.
  591.    The integer values will then be converted to their hexadecimal
  592.    equivalent and the 2 values will be concatenated to form the unique
  593.    identifier.  These structure will allow 2^24 (16,777,216)
  594.    manufactures to build 2^40 (1,099,511,627,776) transport addressable
  595.    entities. Each of these entities may have 1 or more network
  596.    interfaces using IPv4, IPng, or any other network layer protocol.
  597.  
  598.    The current growth of the Internet may indicate that this amount of
  599.    address space is inadequate.  A larger fixed space (i.e., 96 or 128
  600.    bits) or a variable length field may be required.  The disadvantage
  601.    is that this address must be transmitted in every packet.
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Carlson & Ficarella                                            [Page 11]
  619.  
  620. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  621.  
  622.  
  623. 4.2  TCPng
  624.  
  625.                       The new TCP header is as shown.
  626.                         1                   2                   3
  627.     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
  628.  
  629.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  630.    |                                                               |
  631.    +                    Destination TA                             +
  632.    |                                                               |
  633.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  634.    |                                                               |
  635.    +                    Source TA                                  +
  636.    |                                                               |
  637.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  638.    |                    Destination Port Number            |  ver  |
  639.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  640.    |                    Source Port Number                 |  QoS  |
  641.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  642.    |                    Window Size                                |
  643.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  644.    |                                                               |
  645.    +                    Sequence Number                            +
  646.    |                                                               |
  647.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  648.    |                                                               |
  649.    +                    Acknowledgment Number                      +
  650.    |                                                               |
  651.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  652.    |  data offset  |X|X|C|A|P|R|S|F|     Checksum                  |
  653.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  654.    /                    Variable length option 1                   /
  655.    \                             :                                 \
  656.    /                             :                                 /
  657.    \                   Variable length Option n                    \
  658.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  659.  
  660.  
  661.                                  Figure 1
  662.  
  663.  
  664.    Destination TA:  64 bits.
  665.            The Destination Transport Address.  The concatenation of
  666.            the 24 bit IEEE assigned Ethernet address and the 40 bit
  667.            representation of the machines serial number for the
  668.            remote node.
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Carlson & Ficarella                                            [Page 12]
  675.  
  676. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  677.  
  678.  
  679.    Source TA:  64 Bits.
  680.            The Source Transport Address.  The concatenation of the
  681.            24 bit IEEE assigned Ethernet address and the 40 bit
  682.            representation of the machines serial number for the
  683.            local node.
  684.  
  685.    Destination Port Number:  28 Bits.
  686.            Identifies the specific application on the remote node.
  687.  
  688.    Ver:  4 bits.
  689.            Version number.  This is TCPng.  RFC 793
  690.            references 9 earlier editions of ARPA TCP.  The current
  691.            TCP is version 10.
  692.  
  693.    Source Port Number:  28 Bits.
  694.            Identifies the specific application on the local node.
  695.  
  696.    QoS:  4 bits.
  697.            The Quality of Service parameter may be set by the user
  698.            application and passed down to a network layer that
  699.            supports different levels of service.
  700.  
  701.    Window:  32 Bits.
  702.            The number of data octets beginning with the one
  703.            indicated in the acknowledgment field which the sender
  704.            of this segment is willing to accept.
  705.  
  706.    Sequence Number:  64 Bits.
  707.          The sequence number of the first data octet in this segment
  708.          (accept when the S bit is present). If S bit is on, the
  709.          sequence number is the initial sequence number (ISN) and
  710.          the first data octet is ISN+1.  (The ISN is computed using
  711.          the existing algorithm).
  712.  
  713.    Acknowledgment Number:  64 Bits.
  714.            If the A bit is set, this field contains the value of
  715.            the next sequence number the sender of this segment is
  716.            expecting to receive.  Once a connection is established,
  717.            this is always sent.
  718.  
  719.    Data Offset:  8 Bits.
  720.          This is the number of 32 bit words in the TCP header.  This
  721.          indicates where the data begins. The TCP header is an
  722.          integral number of 32 bit words long.  The minimum value is
  723.          12 and the maximum is 256.  If options are used, they must
  724.          pad out to a 32 bit boundary.
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Carlson & Ficarella                                            [Page 13]
  731.  
  732. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  733.  
  734.  
  735.    Flags:  8 Bits.
  736.            The A, P, R, S, and F flags carry the same meaning as in
  737.            the current version of TCP.  They are:
  738.  
  739.          1.  A = Ack, and acknowledgment field significant
  740.          2.  P = Push, the push function
  741.          3.  R = Reset, reset the connection
  742.          4.  S = Sync, synchronize sequence numbers
  743.          5.  F = Fin, No more data from sender
  744.  
  745.          The C bit, C = Compatibility,  is used to indicate that one
  746.          end of the connection is an unmodified TCP/IP host.  When
  747.          the C bit is set, all header values must conform to the
  748.          TCPv6 specifications.  The source port, destination port,
  749.          and window size must be 16 bits and the Sequence and
  750.          Acknowledgment numbers must be 32 bits.  These values are
  751.          stored in the lower half of the proper area with null octet
  752.          pads filling out the rest of the field.
  753.  
  754.          The 2 X bits, X = Reserved,  are not defined and must be
  755.          ignored by a receiving TCP.
  756.  
  757.    Checksum:  16 Bits.
  758.          The checksum field has the same meaning as in the current
  759.          version of TCP.  The current 96 bit pseudo header is NOT
  760.          used in calculating the checksum.  The checksum covers only
  761.          the information present in this header.  The checksum field
  762.          itself is set to zero for the calculation.
  763.  
  764.    Variable Length Options:
  765.          There are two types of options, mandatory and optional.  A
  766.          TCP must implement all known mandatory options.  It must
  767.          also be capable of ignoring all optional options it does
  768.          not know about.  This will allow new options to be
  769.          introduced without the fear of damage caused by unknown
  770.          options.  An option field must end on a 32 bit boundary.
  771.          If not, null octet pad characters will be appended to the
  772.          right of the option.  The structure of an option is shown
  773.          in figure 2 below:
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Carlson & Ficarella                                            [Page 14]
  787.  
  788. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  789.  
  790.  
  791.                         1                   2                   3
  792.     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
  793.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  794.    |          Type                 |               Length          |
  795.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  796.    |        Option data                            |      pad      |
  797.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  798.  
  799.                                  Figure 2
  800.  
  801. 4.3  Mandatory Options
  802.  
  803.    There are three mandatory options defined by this implementation of
  804.    TCP. Each of these options is implemented using the structure
  805.    pictured in figure 2 above.
  806.  
  807.    A description of each field follows:
  808.  
  809.    Type: 16 bits
  810.                The type field identifies the particular option.
  811.  
  812.    Length: 16 bits
  813.                The length field represents the size of the option
  814.                data to follow, in octets.
  815.  
  816.    Option Data: Variable Length
  817.                The option data is of variable length specified by
  818.                the length field, plus 0-3 bytes of zeros to pad to a
  819.                32-bit boundary.
  820.  
  821.    The following are the 3 mandatory options that must be implemented:
  822.  
  823.    Null: 8 bits
  824.          The null option, (type=0) is represented by the bit
  825.          sequence [00000000], preceded by an additional 8, zero
  826.          padding bits to fill out the full 16-bit type field. The
  827.          data may be of any size, including 0 bytes. The option may
  828.          be used to force an option to be ignored.
  829.  
  830.    Maximum Segment Size: 8 bits
  831.          The maximum segment size option, (type=1) is represented by
  832.          the bit sequence [00000001] preceded by an additional 8,
  833.          zero padding bits to fill out the full 16-bit type field.
  834.          If this option is present, then it communicates the maximum
  835.          receive segment size at the TCP which sends this segment.
  836.          This potion is mandatory if sent in the initial connection
  837.          request (SYN). If it is sent on any other segment it is
  838.          advisory. The data is a 32-bit word specifying the segment
  839.  
  840.  
  841.  
  842. Carlson & Ficarella                                            [Page 15]
  843.  
  844. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  845.  
  846.  
  847.          size in octets [Ullmann, 1993].
  848.  
  849.    Urgent Pointer: 8 bits
  850.          The urgent pointer, (type=2) is represented by the bit
  851.          sequence [00000010] preceded by an additional 8, zero
  852.          padding bits to fill out the full 16-bit type field. This
  853.          option emulates the urgent field in TCPv6. The data is a
  854.          64-bit sequence number identifying the last octet of urgent
  855.          data within the segment.
  856.  
  857. 4.4  Optional Options
  858.  
  859.    This version of TCP must be capable of accepting any unknown options.
  860.    This is to guarantee that when presented with an unrecognized option,
  861.    TCP will not crash, however it must not reject or ignore any option.
  862.  
  863. 4.5  Compatibility Issues
  864.  
  865.    The Internet community has a large installed base of IP users.  The
  866.    resources required to operate this network,  both people and machine,
  867.    is enormous.  These resources will need to be preserved.  The last
  868.    time a change like this took place, moving from NCP to TCP, there
  869.    were a few 100 nodes to deal with [Postel, 1981c].  A small close
  870.    knit group of engineers managed the network and mandated a one year
  871.    migration strategy.  Today there are millions of nodes and thousands
  872.    of administrators.  It will be impossible to convert any portion of
  873.    the Internet to a new protocol without effecting the rest of the
  874.    community.
  875.  
  876.    In the worst case, users will lose communications with their peers as
  877.    some systems upgrade and others do not.  In the current global
  878.    environment, this will not be tolerated.  Any attempt to simply
  879.    replace the current IPv4 protocol with a new IPng protocol that does
  880.    not address compatibility issues is doomed to failure.  This
  881.    reasoning has recently been realized by Ullmann (CATNIP) and he
  882.    attempts to use translators to convert from one protocol to another
  883.    (i.e., CATNIP to IPv4).  The problem is what to do when incompatible
  884.    parameters are encountered.  Also CATNIP would need to be replaced
  885.    every time a new network layer protocol was developed.
  886.  
  887.    This proposal attempts to solve these problems by decoupling the
  888.    transport and network protocols.  By allowing TCP to operate over
  889.    different network layer protocols, we will create a more stable
  890.    environment.  New network layer protocols could be developed and
  891.    implemented without requiring changes that are visible to the user
  892.    community.  As TCP packets flow from host-to-host they may use
  893.    several different network layers, allowing users to communicate
  894.    without having to worry about how the data is moved across the
  895.  
  896.  
  897.  
  898. Carlson & Ficarella                                            [Page 16]
  899.  
  900. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  901.  
  902.  
  903.    underlying network.
  904.  
  905. 4.5.1  Backward Compatibility
  906.  
  907.    It may be said that the maturity of a software package can be
  908.    determined by how much code is required to maintain compatibility
  909.    with previous versions.  With the current growth of the Internet,
  910.    backward compatibility issues can not be dismissed or added in as an
  911.    after thought.  This version of TCP was designed with backward
  912.    compatibility in mind. When the TCP communicates with an unmodified
  913.    IPv4 TCP/IP, it takes steps to insure compatibility.  First off it
  914.    sets a bit in the header indicating that the TCP parameters (ack,
  915.    seq, port numbers, and window size) use the TCPv6 values.  When
  916.    communicating directly with an unmodified host the existing TCP/IP
  917.    header is used.  Only existing TCP options may be sent as well.
  918.  
  919.    The advantage of this approach is that TCP transporter nodes will not
  920.    have to make decisions about how to modify packets just passing
  921.    through.  It is up to the source node to build a header that is
  922.    compatible before sending it.  This approach will allow any new TCP
  923.    to contact and communicate with any unmodified IPv4 host.  The source
  924.    host may have an IPv4 address, or it may send data to a transporter
  925.    for delivery.  The decision will be made based on the source and
  926.    destination addresses.  During connection setup, the location of the
  927.    destination node is determined and the proper network layer is used
  928.    to send data.
  929.  
  930.    An existing IPv4 host will be capable of opening a connection to any
  931.    new TCPng host that is directly connected to the network with an IPv4
  932.    protocol stack.  If the TCPng host only has an IPng stack, the
  933.    connection attempt will fail.  Some existing batch style services
  934.    (i.e., Simple Mail Transfer Protocol - SMTP) will continue to work
  935.    with the help of transporters.  Interactive sessions (i.e., Telnet)
  936.    will fail.  Thus, our new TCP is backward compatible, but the
  937.    existing IPv4 hosts are not forward compatible.
  938.  
  939. 4.6  Level 4 Gateways
  940.  
  941.    The ability to allow hosts with differing network layer protocols to
  942.    communicate will be accomplished by using a transport layer gateway
  943.    (called transporter in this paper).  The transporter works just like
  944.    an IP router, receiving TCP packets from one network layer and
  945.    transporting them over to another.  This switching is done by
  946.    examining the packets source and destination TA's.  If a TCP packet
  947.    arrives with a destination TA that differs from this hosts TA, and
  948.    the transporter functionality is enabled, the packet should be
  949.    transported to another network layer.  In some cases, the receiving
  950.    node is a host and not a transporter (i.e., transporter functionality
  951.  
  952.  
  953.  
  954. Carlson & Ficarella                                            [Page 17]
  955.  
  956. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  957.  
  958.  
  959.    disabled).  In this case the host will discard the packet and return
  960.    a TCMP (see below) error message.
  961.  
  962.    A transporter is not responsible for reading or formatting the TCP
  963.    header of packets it receives.  The header is simply examined to
  964.    determine where to deliver the packet.  When forwarding, the packet
  965.    is sent to any of the network layers the transporter supports.  The
  966.    exception is that the packet may not be presented back to the network
  967.    it was received from. It is the responsibility of the network layer
  968.    to destroy undeliverable packets.  If a transporter is unable to
  969.    determine which network the packet should be forwarded to, the packet
  970.    is discarded and a TCMP message is generated and returned to the
  971.    original source host.  Several examples of how transporting works are
  972.    presented in appendix D.
  973.  
  974. 4.7  Error Conditions
  975.  
  976.    It is recognized that from time to time certain error conditions will
  977.    occur at some intermediate transporter that will need to be
  978.    communicated back to the source host.  To accomplish this a Transport
  979.    Control Message Protocol (TCMP) service facility will need to be
  980.    developed.  This protocol will model itself after the Internet
  981.    Control Message Protocol (ICMP).  The operational details are
  982.    discussed in a separate TCMP document.
  983.  
  984. 5.  Advantages and Disadvantages of this approach
  985.  
  986.    This proposal offers the Internet community several advantages.
  987.    First, TCPng will operate over multiple network layer protocol
  988.    stacks.  Users will be able to select the stack(s) that meets their
  989.    needs.  The problem of IPv4 address exhaustion will be postponed as
  990.    sites move from IPv4 to IPng protocol stacks. Future IP3g protocol
  991.    stacks may be designed and deployed without major service
  992.    disruptions.  The increased size of the sequence, acknowledge, and
  993.    window fields will allow applications to run effectively over high
  994.    bandwidth-delay network links.  Lastly, TCPng will allow applications
  995.    to specify certain Quality of Service (QoS) parameters which may be
  996.    used by some network layer protocols (i.e., Asynchronous Transfer
  997.    Mode - ATM).
  998.  
  999.    This protocol is not without it's share of design compromises.  Among
  1000.    these are a large packet header increased in size from 5 to 12 long
  1001.    words.  The addition of a TA means that network administrators must
  1002.    deal with yet another network number that must be globally
  1003.    maintained.  Multiple network protocols may add to the complexity of
  1004.    a site's network.  Lastly, is the TA address space large enough so we
  1005.    will not have to rebuild TCP.
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Carlson & Ficarella                                            [Page 18]
  1011.  
  1012. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  1013.  
  1014.  
  1015. 6.  Conclusions
  1016.  
  1017.    In this paper, we have reviewed the current status of the Internet
  1018.    society s IPng initiative.  We were struck by the enormity of the
  1019.    changes required by those proposals.  We felt that a different
  1020.    approach was needed to allow change to occur in a controlled manner.
  1021.    This approach calls for replacing the current TCP protocol with one
  1022.    that does not require a specific IP layer protocol.  Once this is in
  1023.    place, various IPng protocols may be developed and deployed as sites
  1024.    require them.  Communications between IPv4 and IPng hosts will be
  1025.    maintained throughout the transition period.  Modified hosts will be
  1026.    able to remove their IPv4 protocol stacks, while maintaining
  1027.    communications with unmodified hosts by using a TCP transporter.
  1028.  
  1029.    The title of this paper "Six Virtual Inches to the Left" comes from a
  1030.    talk the author once heard.  In this talk an engineer from Control
  1031.    Data Corporation (CDC) told a story of CDC's attempt to build a
  1032.    cryogenically cooled super computer.  The idea being that the power
  1033.    consumption of such a computer would be far lower then that of a
  1034.    conventional super computer.  As the story goes, everyone thought
  1035.    this was a great idea until someone pointed out what the power
  1036.    requirements of the cryo system were.  The result was that all the
  1037.    assumed power savings were consumed by the cryo system.  The
  1038.    implication being that all the power requirements were not saved but
  1039.    simply moved 6 feet from the CPU to the support equipment.  The moral
  1040.    being that the entire system should be analyzed instead of just one
  1041.    small piece.
  1042.  
  1043. References
  1044.  
  1045.    [Postel, 1981a] Postel, J., "Transmission Control Protocol - DARPA
  1046.    Internet Program Protocol Specification", STD 7, RFC 793, DARPA,
  1047.    September 1981.
  1048.  
  1049.    [Halsal, 1992] Data Communications, Computer Networks, and Open
  1050.    Systems.
  1051.  
  1052.    [Meyer, Zobrist, 1990] TCP/IP versus OSI, The Battle of the
  1053.    Network Standards, IEEE Potentials.
  1054.  
  1055.    [Braden, et al, 1991] Clark, D., Chapin, L., Cer, V., Braden, R., and
  1056.    R. Hobby, "Towards the Future Internet Architecture", RFC 1287,
  1057.    MIT, BBN, CNRI, ISI, UCDavis, December 1991.
  1058.  
  1059.    [Dixon, 1993] Dixon, T., "Comparison of Proposals for Next Version of
  1060.    IP", RFC 1454, RARE, May 1993.
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Carlson & Ficarella                                            [Page 19]
  1067.  
  1068. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  1069.  
  1070.  
  1071.    [Fuller, et al, 1992] Fuller, V., Li, T., Yu, J., and K. Varadhan,
  1072.    "Supernetting: an Address Assignment and Aggregation Strategy",
  1073.    RFC 1338, BARRNet, cicso, Merit, OARnet, June 1992.
  1074.  
  1075.    [Almquist, Gross, 1992] Gross, P., and P. Almquist, "IESG
  1076.    Deliberations on Routing and Addressing", RFC 1380, IESG Chair,
  1077.    IESG Internet AD, November 1992.
  1078.  
  1079.    [Postel, 1981b] Postel, J., "Transmission Control Protocol - DARPA
  1080.    Internet Program Protocol Specification", STD 7, RFC 793, DARPA,
  1081.    September 1981.
  1082.  
  1083.    [Postel, 1980] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
  1084.    USC/Information Sciences Institute, August 1980.
  1085.  
  1086.    [Postel, 1981c] Postel, J., "NCP/TCP Transition Plan", RFC 801,
  1087.    USC/Information Sciences Institute, November 1981.
  1088.  
  1089.    [Leiner, Rekhter, 1993] Leiner, B., and Y. Rekhter, "The
  1090.    Multi-Protocol Internet" RFC 1560, USRA, IBM, December 1993.
  1091.  
  1092.    [Ullmann, 1993] Ullmann, R., "TP/IX: The Next Internet", RFC 1475,
  1093.    Process Software Corporation, June 1993.
  1094.  
  1095. Bibliography
  1096.  
  1097.    Gilligan, Nordmark, and Hinden, "The SIPP Interoperability and
  1098.    Transition Mechanism", IPAE, 1993.
  1099.  
  1100.    Jacobson, V., and R. Braden, "TCP Extensions for Long-Delay Paths",
  1101.    RFC 1072, LBL, USC/Information Sciences Institute, October 1988.
  1102.  
  1103.    Jacobson, V., Braden, R., and D. Borman, "TCP Extensions for High
  1104.    Performance", RFC 1323, LBL, USC/Information Sciences Institute, Cray
  1105.    Research, May 1992.
  1106.  
  1107.    Jacobson, V., Braden, R., and L. Zhang, "TCP Extension for High-Speed
  1108.    Paths", RFC 1185, LBL, USC/Information Sciences Institute, PARC,
  1109.    October 1990.
  1110.  
  1111.    Leiner, B., and Y. Rekhter, "The Multiprotocol Internet", RFC 1560,
  1112.    USRA, IBM, December 1993.
  1113.  
  1114.    O'Malley, S., and L. Peterson, "TCP Extensions Considered Harmful",
  1115.    RFC 1263, University of Arizona, October 1991.
  1116.  
  1117.    Westine, A., Smallberg, D., and J. Postel, "Summary of Smallberg
  1118.    Surveys", RFC 847, USC/Information Sciences Institute, February 1983.
  1119.  
  1120.  
  1121.  
  1122. Carlson & Ficarella                                            [Page 20]
  1123.  
  1124. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  1125.  
  1126.  
  1127. Appendix A
  1128.  
  1129.    The minimum size of an ethernet frame is 64 bytes.  With the existing
  1130.    TCP/IP protocol, a minimum size frame is 18 bytes (ethernet header &
  1131.    trailer) + 20 bytes (IP header) + 20 bytes (TCP header) for a total
  1132.    of 58 bytes.  The transmitting station must add 6 null pad characters
  1133.    to this frame to make it conform to the 64 byte minimum.  This new
  1134.    TCP will increase the size of the TCP header to 48 bytes.
  1135.    Subtracting 26 bytes (the old header and pad characters) we are left
  1136.    with 22 bytes or 176 bits.  The time it takes to transmit these
  1137.    additional bits is the impact of this new TCP.  The transmission time
  1138.    for several types of media currently used is shown in the table
  1139.    below.  You will note that the increased times are all under 20
  1140.    micro-seconds for anything over T1 speeds.  User traffic patterns
  1141.    vary of course but it is generally agreed that 80% of the traffic
  1142.    stays at the local site.  If this is true then the increased header
  1143.    size has a negligible impact on communications.
  1144.  
  1145.  
  1146.       Media       Speed (Mbps)      Rate  (nsec/bit)  time (usec)
  1147.       ------      ------------      ---------------   ----------
  1148.         T1            1.544            647.7            144.00
  1149.         T3           44.736             22.4              3.91
  1150.         Enet         10.00             100.0             17.60
  1151.         FDDI        100.00              10.0              1.76
  1152.         OC-1         51.84              19.3              3.40
  1153.         OC-3        155.52               6.4              1.13
  1154.  
  1155. Appendix B
  1156.  
  1157.    In order to support the TA, new DNS entries will need to be created.
  1158.    It is hoped that this function will be accomplished automatically.
  1159.    When a station is installed, the local DNS server is defined.  On
  1160.    power up, the station will contact this server and send it it's TA
  1161.    and domain name.  A server process will be listening for this type of
  1162.    information, and it will collect the data, run an authorization
  1163.    check, and install the TA into the DNS server.  The following entry
  1164.    will be made.
  1165.  
  1166.    node.sub.domain.name    IN     TA   xx.yy.zz.aa.bb.cc.dd.ee
  1167.  
  1168.    ee.dd.cc.bb.aa.zz.yy.aa.in-addr.tcp IN  PTR node.sub.domain.name.
  1169.  
  1170.    Using these entries, along with the existing DNS A records, a
  1171.    requesting node can determine where the remote node is located.  The
  1172.    format xx.yy.zz is the IEEE assigned portion and aa.bb.cc.dd.ee is
  1173.    the encoded machine serial number as described in section 4.1.
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Carlson & Ficarella                                            [Page 21]
  1179.  
  1180. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  1181.  
  1182.  
  1183. Appendix C
  1184.  
  1185.                           Proposed UDP Header
  1186.  
  1187.  
  1188.                         1                   2                   3
  1189.     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
  1190.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1191.    |                                                               |
  1192.    +                    Destination TA                             +
  1193.    |                                                               |
  1194.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1195.    |                                                               |
  1196.    +                    Source TA                                  +
  1197.    |                                                               |
  1198.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1199.    |                    Destination Port Number            |  ver  |
  1200.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1201.    |                    Source Port Number                 |  QoS  |
  1202.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1203.    |          Length               |        Checksum               |
  1204.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1205.    /                             Data                              /
  1206.    \                             :                                 \
  1207.    /                             :                                 /
  1208.    \                             :                                 \
  1209.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1210.  
  1211.    Destination TA:  64 bits.
  1212.          The Destination Transport Address.  The concatenation of
  1213.          the 24 bit IEEE assigned Ethernet address and the 40 bit
  1214.          representation of the machines serial number for the remote
  1215.          node.
  1216.  
  1217.    Source TA:  64 Bits.
  1218.          The Source Transport Address.  The concatenation of the 24
  1219.          bit IEEE assigned Ethernet address and the 40 bit
  1220.          representation of the machines serial number for the local
  1221.          node.
  1222.  
  1223.    Destination Port Number:  28 Bits.
  1224.          Identifies the specific application on the remote node.
  1225.  
  1226.    Ver:  4 bits.
  1227.  
  1228.          This parameter the UDP version number in use within this
  1229.          packet.
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Carlson & Ficarella                                            [Page 22]
  1235.  
  1236. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  1237.  
  1238.  
  1239.    Source Port Number:  28 Bits.
  1240.          Identifies the specific application on the local node.
  1241.  
  1242.    QoS:  4 bits.
  1243.          The Quality of Service parameter may be set by the user
  1244.          application and passed down to a network layer that
  1245.          supports different levels of service.
  1246.  
  1247.    Length:  16 bits
  1248.          The length parameter represents the length of the data area
  1249.          in octets.  This value will be set to zero if no data is
  1250.          sent within this packet.
  1251.  
  1252.    Checksum:  16 bits
  1253.          The checksum parameter has the same meaning as in the
  1254.          current version of UDP.  The current 96 bit pseudo header
  1255.          is NOT used in calculating the checksum.  The checksum
  1256.          covers only the information present in this header.  The
  1257.          checksum field itself is set to zero for the calculation.
  1258.  
  1259.    Data: Variable
  1260.          This is the area in which the data for the datagram will be
  1261.          sent.  The length of this data in octets is specified by
  1262.          the length parameter above.
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Carlson & Ficarella                                            [Page 23]
  1291.  
  1292. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  1293.  
  1294.  
  1295. Appendix D
  1296.  
  1297.  
  1298.           ______                         ______
  1299.          |      |                       |      |
  1300.          |  H1  |                       |  H2  |
  1301.          |      |                       |      |
  1302.          |______|                       |______|
  1303.               \                          /    \
  1304.                \                        /      \
  1305.             =========================  /        \
  1306.            "                         "/         |
  1307.            "       (SIPP)            "          |
  1308.            "                         "          |
  1309.            "========================="          |
  1310.                                                 |
  1311.                                    ====================
  1312.                 ______            "                    "
  1313.                |      |           "       CLNP         "
  1314.                |  H4  |           "                    "
  1315.                |      |           "===================="
  1316.                |______|                    |
  1317.                      \                     |
  1318.                       \                    |
  1319.              ===================        ___|___
  1320.             "                  "       |       |
  1321.             "                  "-------|  H3   |
  1322.             "     IPv4         "       |       |
  1323.             "                  "       |_______|
  1324.             "=================="
  1325.  
  1326.  
  1327.    Example 1: H1 Wishes to Establish Communication with H4 (Refer to the
  1328.    figure above.)
  1329.  
  1330.       1.  A user on host H1 attempts to communicate with a user
  1331.           on host H4 by referencing H4 s fully qualified domain name.
  1332.  
  1333.       2.  The TCP on H1 makes a DNS call to determine the TA
  1334.           address of H4.
  1335.  
  1336.       3.  The DNS call returns only the IPv4 address since H4 is
  1337.           determined to be an IPv4 only host.
  1338.  
  1339.       4.  The H1 TCP builds a transmission control block (TCB)
  1340.           setting the C-Bit (compatibility) "ON" since H4 is an IPv4
  1341.           host.  Included in the TCB will also be DA = IP-H4, SA =
  1342.           TA1, DP = 1234, SP = 5000 and any state parameters
  1343.  
  1344.  
  1345.  
  1346. Carlson & Ficarella                                            [Page 24]
  1347.  
  1348. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  1349.  
  1350.  
  1351.           describing the connection (port numbers are for example
  1352.           purposes only).
  1353.  
  1354.       5.  The IP on H1 makes a DNS call to determine the network
  1355.           IP address of H4 and correspondingly caches both the TA
  1356.           address from the TCP as well as the network IP address for
  1357.           later use.
  1358.  
  1359.       6.  The packet is now routed using standard SIPP procedures
  1360.           to H2 this is the only path H1 has to H4.
  1361.  
  1362.       7.  H2 receives the packet from H1.  The TCP on H2 checks
  1363.           the destination TA of the packet and compares it to its
  1364.           own.  In this case it does not match, therefore the packet
  1365.           should be forwarded.
  1366.  
  1367.       8.  H2 s TCP will interrogate the supported network
  1368.           layer(s) and determines the packet must be forwarded to H3.
  1369.  
  1370.       9.  The TCP must now pass the packet the CLNP network
  1371.           layer.  The network layer checks its cache to determine if
  1372.           there is a route specified for DA = IP-H4 already in the
  1373.           cache.  If so the cache entry is used, if not an entry is
  1374.           created.  H2 then routes the packet to H3 via NA3a, which
  1375.           is the network layer address for IP-H4.
  1376.  
  1377.       10.  H3 receives the packet from H2. The TCP on H3 checks
  1378.            the destination TA of the packet and compares it to its
  1379.            own. Once again, it does not match.
  1380.  
  1381.       11.  H3, realizing that the destination address is an IPv4
  1382.            host, and knowing that it itself is directly connected to
  1383.            the IPv4 network constructs an IPv4 compatible header.  H3
  1384.            also constructs a TCB to manage the IPv4 connection.
  1385.  
  1386.       12.  The packet is sent down to be routed to the IP using
  1387.            standard IP routing procedures.
  1388.  
  1389.       13.  H4 receives the packet at which point the IP on it
  1390.            determines that the destination address is its own and thus
  1391.            proceeds to strip off the IP header and pass the packet up
  1392.            to the TCP layer.
  1393.  
  1394.       14.  The TCP layer than opens the corresponding IPV4_DP
  1395.            port (2311) which forms the first half of the connection to
  1396.            the application.
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Carlson & Ficarella                                            [Page 25]
  1403.  
  1404. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  1405.  
  1406.  
  1407.       15.  H4 will now reply with a connection accept message,
  1408.            sending the packet back to H3.
  1409.  
  1410.       16.  H3 s TCP receives the packet and based on information
  1411.            in the TCB determines the packet should be delivered to H1.
  1412.            H3 uses the steps outlined above to route the packet back
  1413.            through the network structure.
  1414.  
  1415.    Example 2: H2 Wishes to Establish Communication with H3 (Refer to the
  1416.    figure above.)
  1417.  
  1418.       1.  A user on host H2 attempts to communicate with a user
  1419.           on host H3 by referencing H3 s fully qualified domain name.
  1420.  
  1421.       2.  The TCP on H2 makes a DNS call to determine the TA
  1422.           address of H3.
  1423.  
  1424.       3.  The DNS call returns the TA address for H3.
  1425.  
  1426.       4.  The H2 TCP builds a transmission control block (TCB)
  1427.           setting the C-Bit (compatibility) "OFF" since H3 is an IPng
  1428.           host.  Included in the TCB will also be DA = TA3, SA = TA2,
  1429.           DP = 1111, SP = 2222 and any state parameters describing
  1430.           the connection (port numbers are for example purposes
  1431.           only).
  1432.  
  1433.       5.  The IPng on H2 makes a DNS call to determine the
  1434.           network IPng address of H3 and correspondingly caches both
  1435.           the TA address from the TCP as well as the network IPng
  1436.           address for later use.
  1437.  
  1438.       6.  The packet is now routed to H3 over the IPng supported
  1439.           on that network.
  1440.  
  1441.       7.  H3 receives the packet from H2.  The TCP on H3 checks
  1442.           the destination TA of the packet and compares it to its
  1443.           own.  In this case it matches.
  1444.  
  1445.       8.  H3 s TCP will construct a TCB and respond with an open
  1446.           accept message.
  1447.  
  1448.       9.  H3 s TCP will interrogate the supported network
  1449.           layer(s) to determine the packet must be delivered to H2
  1450.           using NA2b which is specified in its cache.
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458. Carlson & Ficarella                                            [Page 26]
  1459.  
  1460. RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994
  1461.  
  1462.  
  1463. Security Considerations
  1464.  
  1465.    Security issues are not discussed in this memo.
  1466.  
  1467. Authors' Addresses
  1468.  
  1469.    Richard Carlson
  1470.    Argonne National Laboratory
  1471.    Electronics and Computing Technologies
  1472.    Argonne,  IL  60439
  1473.  
  1474.    Phone:  (708) 252-7289
  1475.    EMail:  RACarlson@anl.gov
  1476.  
  1477.  
  1478.    Domenic Ficarella
  1479.    Motorola
  1480.  
  1481.    Phone:  (708) 632-4029
  1482.    EMail:  ficarell@cpdmfg.cig.mot.com
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Carlson & Ficarella                                            [Page 27]
  1515.  
  1516.