Correct PPTP server firewall rules chain.
[tomato/davidwu.git] / release / src / router / pptp-client / Reference / rfc1990.txt
bloba4f7ffeff0bd13467425a6df9db217ae706b90d9
7 Network Working Group                                         K. Sklower
8 Request for Comments: 1990            University of California, Berkeley
9 Obsoletes: 1717                                                 B. Lloyd
10 Category: Standards Track                                    G. McGregor
11                                                    Lloyd Internetworking
12                                                                  D. Carr
13                                           Newbridge Networks Corporation
14                                                             T. Coradetti
15                                                        Sidewalk Software
16                                                              August 1996
19                     The PPP Multilink Protocol (MP)
22 Status of this Memo
24    This document specifies an Internet standards track protocol for the
25    Internet community, and requests discussion and suggestions for
26    improvements.  Please refer to the current edition of the "Internet
27    Official Protocol Standards" (STD 1) for the standardization state
28    and status of this protocol.  Distribution of this memo is unlimited.
30 Abstract
32    This document proposes a method for splitting, recombining and
33    sequencing datagrams across multiple logical data links.  This work
34    was originally motivated by the desire to exploit multiple bearer
35    channels in ISDN, but is equally applicable to any situation in which
36    multiple PPP links connect two systems, including async links.  This
37    is accomplished by means of new PPP [2] options and protocols.
39    The differences between the current PPP Multilink specification (RFC
40    1717) and this memo are explained in Section 11.  Any system
41    implementing the additional restrictions required by this memo will
42    be backwards compatible with conforming RFC 1717 implementations.
44 Acknowledgements
46    The authors specifically wish to thank Fred Baker of ACC, Craig Fox
47    of Network Systems, Gerry Meyer of Spider Systems, Dan Brennan of
48    Penril Datability Networks, Vernon Schryver of SGI (for the
49    comprehensive discussion of padding), and the members of the IP over
50    Large Public Data Networks and PPP Extensions working groups, for
51    much useful discussion on the subject.
58 Sklower, et. al.            Standards Track                     [Page 1]
60 RFC 1990                     PPP Multilink                   August 1996
63 Table of Contents
65    1. Introduction ................................................    2
66    1.1. Motivation ................................................    2
67    1.2. Functional Description ....................................    3
68    1.3. Conventions ...............................................    4
69    2. General Overview ............................................    4
70    3. Packet Formats ..............................................    7
71    3.1. Padding Considerations ....................................   10
72    4. Trading Buffer Space Against Fragment Loss ..................   10
73    4.1. Detecting Fragment Loss ...................................   11
74    4.2. Buffer Space Requirements .................................   12
75    5. PPP Link Control Protocol Extensions ........................   13
76    5.1. Configuration Option Types ................................   13
77    5.1.1. Multilink MRRU LCP option ...............................   14
78    5.1.2. Short Sequence Number Header Format Option ..............   15
79    5.1.3. Endpoint Discriminator Option ...........................   15
80    6. Initiating use of Multilink Headers .........................   19
81    7. Closing Member links ........................................   20
82    8. Interaction with Other Protocols ............................   20
83    9. Security Considerations .....................................   21
84    10. References .................................................   21
85    11. Differences from RFC 1717 ..................................   22
86    11.1. Negotiating Multilink, per se ............................   22
87    11.2. Initial Sequence Number defined ..........................   22
88    11.3. Default Value of the MRRU ................................   22
89    11.4. Config-Nak of EID prohibited .............................   22
90    11.5. Uniformity of Sequence Space .............................   22
91    11.6. Commencing and Abating use of Multilink Headers ..........   23
92    11.7. Manual Configuration and Bundle Assignment ...............   23
93    12. Authors' Addresses .........................................   24
95 1.  Introduction
97 1.1.  Motivation
99    Basic Rate and Primary Rate ISDN both offer the possibility of
100    opening multiple simultaneous channels between systems, giving users
101    additional bandwidth on demand (for additional cost).  Previous
102    proposals for the transmission of internet protocols over ISDN have
103    stated as a goal the ability to make use of this capability, (e.g.,
104    Leifer et al., [1]).
106    There are proposals being advanced for providing synchronization
107    between multiple streams at the bit level (the BONDING proposals);
108    such features are not as yet widely deployed, and may require
109    additional hardware for end system.  Thus, it may be useful to have a
110    purely software solution, or at least an interim measure.
114 Sklower, et. al.            Standards Track                     [Page 2]
116 RFC 1990                     PPP Multilink                   August 1996
119    There are other instances where bandwidth on demand can be exploited,
120    such as using a dialup async line at 28,800 baud to back up a leased
121    synchronous line, or opening additional X.25 SVCs where the window
122    size is limited to two by international agreement.
124    The simplest possible algorithms of alternating packets between
125    channels on a space available basis (which might be called the Bank
126    Teller's algorithm) may have undesirable side effects due to
127    reordering of packets.
129    By means of a four-byte sequencing header, and simple synchronization
130    rules, one can split packets among parallel virtual circuits between
131    systems in such a way that packets do not become reordered, or at
132    least the likelihood of this is greatly reduced.
134 1.2.  Functional Description
136    The method discussed here is similar to the multilink protocol
137    described in ISO 7776 [4], but offers the additional ability to split
138    and recombine packets, thereby reducing latency, and potentially
139    increase the effective maximum receive unit (MRU).  Furthermore,
140    there is no requirement here for acknowledged-mode operation on the
141    link layer, although that is optionally permitted.
143    Multilink is based on an LCP option negotiation that permits a system
144    to indicate to its peer that it is capable of combining multiple
145    physical links into a "bundle".  Only under exceptional conditions
146    would a given pair of systems require the operation of more than one
147    bundle connecting them.
149    Multilink is negotiated during the initial LCP option negotiation.  A
150    system indicates to its peer that it is willing to do multilink by
151    sending the multilink option as part of the initial LCP option
152    negotiation.  This negotiation indicates three things:
154    1.   The system offering the option is capable of combining multiple
155         physical links into one logical link;
157    2.   The system is capable of receiving upper layer protocol data
158         units (PDU) fragmented using the multilink header (described
159         later) and reassembling the fragments back into the original PDU
160         for processing;
162    3.   The system is capable of receiving PDUs of size N octets where N
163         is specified as part of the option even if N is larger than the
164         maximum receive unit (MRU) for a single physical link.
170 Sklower, et. al.            Standards Track                     [Page 3]
172 RFC 1990                     PPP Multilink                   August 1996
175    Once multilink has been successfully negotiated, the sending system
176    is free to send PDUs encapsulated and/or fragmented with the
177    multilink header.
179 1.3.  Conventions
181    The following language conventions are used in the items of
182    specification in this document:
184    o    MUST, SHALL or MANDATORY -- the item is an absolute requirement
185         of the specification.
187    o    SHOULD or RECOMMENDED -- the item should generally be followed
188         for all but exceptional circumstances.
190    o    MAY or OPTIONAL -- the item is truly optional and may be
191         followed or ignored according to the needs of the implementor.
193 2.  General Overview
195    In order to establish communications over a point-to-point link, each
196    end of the PPP link must first send LCP packets to configure the data
197    link during Link Establishment phase.  After the link has been
198    established, PPP provides for an Authentication phase in which the
199    authentication protocols can be used to determine identifiers
200    associated with each system connected by the link.
202    The goal of multilink operation is to coordinate multiple independent
203    links between a fixed pair of systems, providing a virtual link with
204    greater bandwidth than any of the constituent members.  The aggregate
205    link, or bundle, is named by the pair of identifiers for two systems
206    connected by the multiple links.  A system identifier may include
207    information provided by PPP Authentication [3] and information
208    provided by LCP negotiation.  The bundled links can be different
209    physical links, as in multiple async lines, but may also be instances
210    of multiplexed links, such as ISDN, X.25 or Frame Relay.  The links
211    may also be of different kinds, such as pairing dialup async links
212    with leased synchronous links.
214    We suggest that multilink operation can be modeled as a virtual PPP
215    link-layer entity wherein packets received over different physical
216    link-layer entities are identified as belonging to a separate PPP
217    network protocol (the Multilink Protocol, or MP) and recombined and
218    sequenced according to information present in a multilink
219    fragmentation header.  All packets received over links identified as
220    belonging to the multilink arrangement are presented to the same
221    network-layer protocol processing machine, whether they have
222    multilink headers or not.
226 Sklower, et. al.            Standards Track                     [Page 4]
228 RFC 1990                     PPP Multilink                   August 1996
231    The packets to be transmitted using the multilink procedure are
232    encapsulated according to the rules for PPP where the following
233    options would have been manually configured:
235         o  No async control character Map
236         o  No Magic Number
237         o  No Link Quality Monitoring
238         o  Address and Control Field Compression
239         o  Protocol Field Compression
240         o  No Compound Frames
241         o  No Self-Describing-Padding
243    According to the rules specified in RFC1661, this means that an
244    implementation MUST accept reassembled packets with and without
245    leading zeroes present in the Protocol Field of the reassembled
246    packet.  Although it is explicitly forbidden below to include the
247    Address and Control fields (usually, the two bytes FF 03) in the
248    material to be fragmented, it is a good defensive programming
249    practice to accept the packet anyway, ignoring the two bytes if
250    present, as that is what RFC1661 specifies.
252    As a courtesy to implementations that perform better when certain
253    alignment obtains, it is suggested that a determination be made when
254    a bundle is created on whether to transmit leading zeroes by
255    examining whether PFC has been negotiated on the first link admitted
256    into a bundle.  This determination should be kept in force so long as
257    a bundle persists.
259    Of course, individual links are permitted to have different settings
260    for these options.  As described below, member links SHOULD negotiate
261    Self-Describing-Padding, even though pre-fragmented packets MUST NOT
262    be padded.  Since the Protocol Field Compression mode on the member
263    link allows a sending system to include a leading byte of zero or not
264    at its discretion, this is an alternative mechanism for generating
265    even-length packets.
267    LCP negotiations are not permitted on the bundle itself.  An
268    implementation MUST NOT transmit LCP Configure-Request, -Reject,
269    -Ack, -Nak, Terminate-Request or -Ack packets via the multilink
270    procedure, and an implementation receiving them MUST silently discard
271    them.  (By "silently discard" we mean to not generate any PPP packets
272    in response; an implementation is free to generate a log entry
273    registering the reception of the unexpected packet).  By contrast,
274    other LCP packets having control functions not associated with
275    changing the defaults for the bundle itself are permitted.  An
276    implementation MAY transmit LCP Code-Reject, Protocol-Reject, Echo-
277    Request, Echo-Reply and Discard-Request Packets.
282 Sklower, et. al.            Standards Track                     [Page 5]
284 RFC 1990                     PPP Multilink                   August 1996
287    The effective MRU for the logical-link entity is negotiated via an
288    LCP option.  It is irrelevant whether Network Control Protocol
289    packets are encapsulated in multilink headers or not, or even over
290    which link they are sent, once that link identifies itself as
291    belonging to a multilink arrangement.
293    Note that network protocols that are not sent using multilink headers
294    cannot be sequenced.  (And consequently will be delivered in any
295    convenient way).
297    For example, consider the case in Figure 1.  Link 1 has negotiated
298    network layers NL 1, NL 2, and MP between two systems.  The two
299    systems then negotiate MP over Link 2.
301    Frames received on link 1 are demultiplexed at the data link layer
302    according the PPP network protocol identifier and can be sent to NL
303    1, NL 2, or MP.  Link 2 will accept frames with all network protocol
304    identifiers that Link 1 does.
306    Frames received by MP are further demultiplexed at the network layer
307    according to the PPP network protocol identifier and sent to NL 1 or
308    NL 2.  Any frames received by MP for any other network layer
309    protocols are rejected using the normal protocol reject mechanism.
338 Sklower, et. al.            Standards Track                     [Page 6]
340 RFC 1990                     PPP Multilink                   August 1996
343                       Figure 1.  Multilink Overview.
345      Network Layer
346      -------------
347                     ______           ______
348                    /      \         /      \
349                   |  NL 1  |       |  NL 2  |
350                    \______/         \______/
351                      | | |             | | |
352                      | | +-------------o-o-o-+
353                      | +------+  +-----+ | | |
354                      |        |  |       | | |
355                      | +------o--o-------+ + |
356                      | |      |__|_        | |
357                      | |     /      \      | |
358                      | |    |  MLCP  | <--- Link Layer
359                      | |     \______/    Demultiplexing
360                      | |        |          | |
361                      | |        |          | |
362                      | |        | <--- Virtual Link
363                      | |        |          | |
364                      | |        |          | |
365                      | |        |          | |
366                      | |        +          | |
367                   ___|_|        |       ___|_|
368                  /      \       |      /      \
369                 |   LCP  |------+-----|  LCP   | <--- Link Layer
370                  \______/              \______/       Demultiplexing
371                     |                      |
372                     |                      |
373                   Link 1                 Link 2
375 3.  Packet Formats
377    In this section we describe the layout of individual fragments, which
378    are the "packets" in the Multilink Protocol.  Network Protocol
379    packets are first encapsulated (but not framed) according to normal
380    PPP procedures, and large packets are broken up into multiple
381    segments sized appropriately for the multiple physical links.
382    Although it would otherwise be permitted by the PPP spec,
383    implementations MUST NOT include the Address and Control Field in the
384    logical entity to be fragmented.  A new PPP header consisting of the
385    Multilink Protocol Identifier, and the Multilink header is inserted
386    before each section.  (Thus the first fragment of a multilink packet
387    in PPP will have two headers, one for the fragment, followed by the
388    header for the packet itself).
394 Sklower, et. al.            Standards Track                     [Page 7]
396 RFC 1990                     PPP Multilink                   August 1996
399    Systems implementing the multilink procedure are not required to
400    fragment small packets.  There is also no requirement that the
401    segments be of equal sizes, or that packets must be broken up at all.
402    A possible strategy for contending with member links of differing
403    transmission rates would be to divide the packets into segments
404    proportion to the transmission rates.  Another strategy might be to
405    divide them into many equal fragments and distribute multiple
406    fragments per link, the numbers being proportional to the relative
407    speeds of the links.
409    PPP multilink fragments are encapsulated using the protocol
410    identifier 0x00-0x3d.  Following the protocol identifier is a four
411    byte header containing a sequence number, and two one bit fields
412    indicating that the fragment begins a packet or terminates a packet.
413    After negotiation of an additional PPP LCP option, the four byte
414    header may be optionally replaced by a two byte header with only a 12
415    bit sequence space.  Address & Control and Protocol ID compression
416    are assumed to be in effect.  Individual fragments will, therefore,
417    have the following format:
419              Figure 2:  Long Sequence Number Fragment Format.
422                 +---------------+---------------+
423    PPP Header:  | Address 0xff  | Control 0x03  |
424                 +---------------+---------------+
425                 | PID(H)  0x00  | PID(L)  0x3d  |
426                 +-+-+-+-+-+-+-+-+---------------+
427    MP Header:   |B|E|0|0|0|0|0|0|sequence number|
428                 +-+-+-+-+-+-+-+-+---------------+
429                 |      sequence number (L)      |
430                 +---------------+---------------+
431                 |        fragment data          |
432                 |               .               |
433                 |               .               |
434                 |               .               |
435                 +---------------+---------------+
436    PPP FCS:     |              FCS              |
437                 +---------------+---------------+
450 Sklower, et. al.            Standards Track                     [Page 8]
452 RFC 1990                     PPP Multilink                   August 1996
455              Figure 3:  Short Sequence Number Fragment Format.
458                 +---------------+---------------+
459    PPP Header:  | Address 0xff  | Control 0x03  |
460                 +---------------+---------------+
461                 | PID(H)  0x00  | PID(L)  0x3d  |
462                 +-+-+-+-+-------+---------------+
463    MP Header:   |B|E|0|0|    sequence number    |
464                 +-+-+-+-+-------+---------------+
465                 |    fragment data              |
466                 |               .               |
467                 |               .               |
468                 |               .               |
469                 +---------------+---------------+
470    PPP FCS:     |              FCS              |
471                 +---------------+---------------+
473    The (B)eginning fragment bit is a one bit field set to 1 on the first
474    fragment derived from a PPP packet and set to 0 for all other
475    fragments from the same PPP packet.
477    The (E)nding fragment bit is a one bit field set to 1 on the last
478    fragment and set to 0 for all other fragments.  A fragment may have
479    both the (B)eginning and (E)nding fragment bits set to 1.
481    The sequence field is a 24 bit or 12 bit number that is incremented
482    for every fragment transmitted.  By default, the sequence field is 24
483    bits long, but can be negotiated to be only 12 bits with an LCP
484    configuration option described below.
486    Between the (E)nding fragment bit and the sequence number is a
487    reserved field, whose use is not currently defined, which MUST be set
488    to zero.  It is 2 bits long when the use of short sequence numbers
489    has been negotiated, 6 bits otherwise.
491    In this multilink protocol, a single reassembly structure is
492    associated with the bundle.  The multilink headers are interpreted in
493    the context of this structure.
495    The FCS field shown in the diagram is inherited from the normal
496    framing mechanism from the member link on which the packet is
497    transmitted.  There is no separate FCS applied to the reconstituted
498    packet as a whole if transmitted in more than one fragment.
506 Sklower, et. al.            Standards Track                     [Page 9]
508 RFC 1990                     PPP Multilink                   August 1996
511 3.1.  Padding Considerations
513    Systems that support the multilink protocol SHOULD implement Self-
514    Describing-Padding.  A system that implements self-describing-padding
515    by definition will either include the padding option in its initial
516    LCP Configure-Requests, or (to avoid the delay of a Configure-Reject)
517    include the padding option after receiving a NAK containing the
518    option.
520    A system that must pad its own transmissions but does not use Self-
521    Describing-Padding when not using multilink, MAY continue to not use
522    Self-Describing-Padding if it ensures by careful choice of fragment
523    lengths that only (E)nding fragments of packets are padded.  A system
524    MUST NOT add padding to any packet that cannot be recognized as
525    padded by the peer.  Non-terminal fragments MUST NOT be padded with
526    trailing material by any other method than Self-Describing-Padding.
528    A system MUST ensure that Self-Describing-Padding as described in RFC
529    1570 [11] is negotiated on the individual link before transmitting
530    any multilink data packets if it might pad non-terminal fragments or
531    if it would use network or compression protocols that are vulnerable
532    to padding, as described in RFC 1570.  If necessary, the system that
533    adds padding MUST use LCP Configure-NAK's to elicit a Configure-
534    Request for Self-Describing-Padding from the peer.
536    Note that LCP Configure-Requests can be sent at any time on any link,
537    and that the peer will always respond with a Configure-Request of its
538    own.  A system that pads its transmissions but uses no protocols
539    other than multilink that are vulnerable to padding MAY delay
540    ensuring that the peer has Configure-Requested Self-Describing-
541    Padding until it seems desireable to negotiate the use of Multilink
542    itself.  This permits the interoperability of a system that pads with
543    older peers that support neither Multilink nor Self-Describing-
544    Padding.
546 4.  Trading Buffer Space Against Fragment Loss
548    In a multilink procedure one channel may be delayed with respect to
549    the other channels in the bundle.  This can lead to fragments being
550    received out of order, thus increasing the difficulty in detecting
551    the loss of a fragment.  The task of estimating the amount of space
552    required for buffering on the receiver becomes more complex because
553    of this.  In this section we discuss a technique for declaring that a
554    fragment is lost, with the intent of minimizing the buffer space
555    required, yet minimizing the number of avoidable packet losses.
562 Sklower, et. al.            Standards Track                    [Page 10]
564 RFC 1990                     PPP Multilink                   August 1996
567 4.1.  Detecting Fragment Loss
569    On each member link in a bundle, the sender MUST transmit fragments
570    with strictly increasing sequence numbers (modulo the size of the
571    sequence space).  This requirement supports a strategy for the
572    receiver to detect lost fragments based on comparing sequence
573    numbers.  The sequence number is not reset upon each new PPP packet,
574    and a sequence number is consumed even for those fragments which
575    contain an entire PPP packet, i.e., one in which both the (B)eginning
576    and (E)nding bits are set.
578    An implementation MUST set the sequence number of the first fragment
579    transmited on a newly-constructed bundle to zero.  (Joining a
580    secondary link to an exisiting bundle is invisible to the protocol,
581    and an implementation MUST NOT reset the sequence number space in
582    this situation).
584    The receiver keeps track of the incoming sequence numbers on each
585    link in a bundle and maintains the current minimum of the most
586    recently received sequence number over all the member links in the
587    bundle (call this M).  The receiver detects the end of a packet when
588    it receives a fragment bearing the (E)nding bit.  Reassembly of the
589    packet is complete if all sequence numbers up to that fragment have
590    been received.
592    A lost fragment is detected when M advances past the sequence number
593    of a fragment bearing an (E)nding bit of a packet which has not been
594    completely reassembled (i.e., not all the sequence numbers between
595    the fragment bearing the (B)eginning bit and the fragment bearing the
596    (E)nding bit have been received).  This is because of the increasing
597    sequence number rule over the bundle.  Any sequence number so
598    detected is assumed to correspond to a fragment which has been lost.
600    An implementation MUST assume that if a fragment bears a (B)eginning
601    bit, that the previously numbered fragment bore an (E)nding bit.
602    Thus if a packet is lost bearing the (E)nding bit, and the packet
603    whose fragment number is M contains a (B)eginning bit, the
604    implementation MUST discard fragments for all unassembled packets
605    through M-1, but SHOULD NOT discard the fragment bearing the new
606    (B)eginning bit on this basis alone.
608    The detection of a lost fragment, whose sequence number was deduced
609    to be U, causes the receiver to discard all fragments up to the
610    lowest numbered fragment with an ending bit (possibly deduced)
611    greater than or equal to U.  However, the quantity M may jump into
612    the middle of a chain of packets which can be successful completed.
618 Sklower, et. al.            Standards Track                    [Page 11]
620 RFC 1990                     PPP Multilink                   August 1996
623    Fragments may be lost due to corruption of individual packets or
624    catastrophic loss of the link (which may occur only in one
625    direction).  This version of the multilink protocol mandates no
626    specific procedures for the detection of failed links.  The PPP link
627    quality management facility, or the periodic issuance of LCP echo-
628    requests could be used to achieve this.
630    Senders SHOULD avoid keeping any member links idle to maximize early
631    detection of lost fragments by the receiver, since the value of M is
632    not incremented on idle links.  Senders SHOULD rotate traffic among
633    the member links if there isn't sufficient traffic to overflow the
634    capacity of one link to avoid idle links.
636    Loss of the final fragment of a transmission can cause the receiver
637    to stall until new packets arrive.  The likelihood of this may be
638    decreased by sending a null fragment on each member link in a bundle
639    that would otherwise become idle immediately after having transmitted
640    a fragment bearing the (E)nding bit, where a null fragment is one
641    consisting only of a multilink header bearing both the (B)egin and
642    (E)nding bits (i.e., having no payload).  Implementations concerned
643    about either wasting bandwidth or per packet costs are not required
644    to send null fragments and may elect to defer sending them until a
645    timer expires, with the marginally increased possibility of lengthier
646    stalls in the receiver.  The receiver SHOULD implement some type of
647    link idle timer to guard against indefinite stalls.
649    The increasing sequence per link rule prohibits the reallocation of
650    fragments queued up behind a failing link to a working one, a
651    practice which is not unusual for implementations of ISO multilink
652    over LAPB [4].
654 4.2.  Buffer Space Requirements
656    There is no amount of buffering that will guarantee correct detection
657    of fragment loss, since an adversarial peer may withhold a fragment
658    on one channel and send arbitrary amounts on the others.  For the
659    usual case where all channels are transmitting, you can show that
660    there is a minimum amount below which you could not correctly detect
661    packet loss.  The amount depends on the relative delay between the
662    channels, (D[channel-i,channel-j]), the data rate of each channel,
663    R[c], the maximum fragment size permitted on each channel, F[c], and
664    the total amount of buffering the transmitter has allocated amongst
665    the channels.
667    When using PPP, the delay between channels could be estimated by
668    using LCP echo request and echo reply packets.  (In the case of links
669    of different transmission rates, the round trip times should be
670    adjusted to take this into account.)  The slippage for each channel
674 Sklower, et. al.            Standards Track                    [Page 12]
676 RFC 1990                     PPP Multilink                   August 1996
679    is defined as the bandwidth times the delay for that channel relative
680    to the channel with the longest delay, S[c] = R[c] * D[c,c-worst].
681    (S[c-worst] will be zero, of course!)
683    A situation which would exacerbate sequence number skew would be one
684    in which there is extremely bursty traffic (almost allowing all
685    channels to drain), and then where the transmitter would first queue
686    up as many consecutively numbered packets on one link as it could,
687    then queue up the next batch on a second link, and so on.  Since
688    transmitters must be able to buffer at least a maximum- sized
689    fragment for each link (and will usually buffer up at least two) A
690    receiver that allocates any less than S[1] + S[2] + ... + S[N] + F[1]
691    + ... + F[N], will be at risk for incorrectly assuming packet loss,
692    and therefore, SHOULD allocate at least twice that.
694 5.  PPP Link Control Protocol Extensions
696    If reliable multilink operation is desired, PPP Reliable Transmission
697    [6] (essentially the use of ISO LAPB) MUST be negotiated prior to the
698    use of the Multilink Protocol on each member link.
700    Whether or not reliable delivery is employed over member links, an
701    implementation MUST present a signal to the NCP's running over the
702    multilink arrangement that a loss has occurred.
704    Compression may be used separately on each member link, or run over
705    the bundle (as a logical group link).  The use of multiple
706    compression streams under the bundle (i.e., on each link separately)
707    is indicated by running the Compression Control Protocol [5] but with
708    an alternative PPP protocol ID.
710 5.1.  Configuration Option Types
712    The Multilink Protocol introduces the use of additional LCP
713    Configuration Options:
715         o  Multilink Maximum Received Reconstructed Unit
716         o  Multilink Short Sequence Number Header Format
717         o  Endpoint Discriminator
730 Sklower, et. al.            Standards Track                    [Page 13]
732 RFC 1990                     PPP Multilink                   August 1996
735 5.1.1.  Multilink MRRU LCP option
737                    Figure 4:  Multilink MRRU LCP option
739     0                   1                   2                   3
740     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
741    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
742    |   Type = 17   |   Length = 4  | Max-Receive-Reconstructed-Unit|
743    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
745    The presence of this LCP option indicates that the system sending it
746    implements the PPP Multilink Protocol.  If not rejected, the system
747    will construe all packets received on this link as being able to be
748    processed by a common protocol machine with any other packets
749    received from the same peer on any other link on which this option
750    has been accepted.
752    The Max-Receive-Reconstructed unit field is two octets, and specifies
753    the maximum number of octets in the Information fields of reassembled
754    packets.  A system MUST be able to receive the full 1500 octet
755    Information field of any reassembled PPP packet although it MAY
756    attempt to negotiate a smaller, or larger value.  The number 1500
757    here comes from the specification for the MRU LCP option in PPP; if
758    this requirement is changed in a future version of RFC 1661, the same
759    rules will apply here.
761    A system MUST include the LCP MRRU option in every LCP negotiation
762    intended to instantiate a bundle or to join an existing bundle.  If
763    the LCP MRRU option is offered on a link which is intended to join an
764    existing bundle, a system MUST offer the same Max-Receive-
765    Reconstruct-Unit value previously negotiated for the bundle.
767    A system MUST NOT send any multilink packets on any link unless its
768    peer has offered the MMRU LCP option and the system has configure-
769    Ack'ed it during the most recent LCP negotiation on that link.  A
770    system MAY include the MMRU LCP option in a configure-NAK, if its
771    peer has not offered it (until, according to PPP rules, the peer
772    configure-Reject's it).
774    Note: the MRRU value conveyed im this option corresponds to the MRU
775    of the bundle when conceptualized as a PPP entity; but the rules for
776    the Multilink MRRU option are different from the LCP MRU option, as
777    some value MUST be offered in every LCP negotiation, and that
778    confirmation of this option is required prior to multilink
779    interpretation.
786 Sklower, et. al.            Standards Track                    [Page 14]
788 RFC 1990                     PPP Multilink                   August 1996
791 5.1.2.  Short Sequence Number Header Format Option
793            Figure 5:  Short Sequence Number Header Format Option
795     0                   1
796     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
797    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
798    |   Type = 18   |  Length = 2   |
799    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
801    This option advises the peer that the implementation wishes to
802    receive fragments with short, 12 bit sequence numbers.  When a peer
803    system configure-Ack's this option, it MUST transmit all multilink
804    packets on all links of the bundle with 12 bit sequence numbers or
805    configure-Reject the option.  If 12 bit sequence numbers are desired,
806    this option MUST be negotiated when the bundle is instantiated, and
807    MUST be explicitly included in every LCP configure request offered by
808    a system when the system intends to include that link in an existing
809    bundle using 12 bit sequence numbers.  If this option is never
810    negotiated during the life of a bundle, sequence numbers are 24 bits
811    long.
813    An implementation wishing to transmit multilink fragments with short
814    sequence numbers MAY include the multilink short sequence number in a
815    configure-NAK to ask that the peer respond with a request to receive
816    short sequence numbers.  The peer is not compelled to respond with
817    the option.
819 5.1.3.  Endpoint Discriminator Option
821                  Figure 7:  Endpoint Discriminator Option
823     0                   1                   2                   3
824     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
825    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
826    |   Type = 19   |     Length    |    Class      |  Address ...
827    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
829    The Endpoint Discriminator Option represents identification of the
830    system transmitting the packet.  This option advises a system that
831    the peer on this link could be the same as the peer on another
832    existing link.  If the option distinguishes this peer from all
833    others, a new bundle MUST be established from the link being
834    negotiated.  If this option matches the class and address of some
835    other peer of an existing link, the new link MUST be joined to the
836    bundle containing the link to the matching peer or MUST establish a
837    new bundle, depending on the decision tree shown in (1) through (4)
838    below.
842 Sklower, et. al.            Standards Track                    [Page 15]
844 RFC 1990                     PPP Multilink                   August 1996
847    To securely join an existing bundle, a PPP authentication protocol
848    [3] must be used to obtain authenticated information from the peer to
849    prevent a hostile peer from joining an existing bundle by presenting
850    a falsified discriminator option.
852    This option is not required for multilink operation.  If a system
853    does not receive the Multilink MRRU option, but does receive the
854    Endpoint Discriminator Option, and there is no manual configuration
855    providing outside information, the implementation MUST NOT assume
856    that multilink operation is being requested on this basis alone.
858    As there is also no requirement for authentication, there are four
859    sets of scenarios:
861    (1)  No authentication, no discriminator:
862         All new links MUST be joined to one bundle, unless
863         there is manual configuration to the contrary.
864         It is also permissible to have more than one manually
865         configured bundle connecting two given systems.
867    (2)  Discriminator, no authentication:
868         Discriminator match -> MUST join matching bundle,
869         discriminator mismatch -> MUST establish new bundle.
871    (3)  No discriminator, authentication:
872         Authenticated match -> MUST join matching bundle,
873         authenticated mismatch -> MUST establish new bundle.
875    (4)  Discriminator, authentication:
876         Discriminator match and authenticated match -> MUST join bundle,
877         discriminator mismatch -> MUST establish new bundle,
878         authenticated mismatch -> MUST establish new bundle.
880    The option contains a Class which selects an identifier address space
881    and an Address which selects a unique identifier within the class
882    address space.
884    This identifier is expected to refer to the mechanical equipment
885    associated with the transmitting system.  For some classes,
886    uniqueness of the identifier is global and is not bounded by the
887    scope of a particular administrative domain.  Within each class,
888    uniqueness of address values is controlled by a class dependent
889    policy for assigning values.
891    Each endpoint may chose an identifier class without restriction.
892    Since the objective is to detect mismatches between endpoints
893    erroneously assumed to be alike, mismatch on class alone is
894    sufficient.  Although no one class is recommended, classes which have
898 Sklower, et. al.            Standards Track                    [Page 16]
900 RFC 1990                     PPP Multilink                   August 1996
903    universally unique values are preferred.
905    This option is not required to be supported either by the system or
906    the peer.  If the option is not present in a Configure-Request, the
907    system MUST NOT generate a Configure-Nak of this option for any
908    reason; instead it SHOULD behave as if it had received the option
909    with Class = 0, Address = 0.  If a system receives a Configure-Nak or
910    Configure-Reject of this option, it MUST remove it from any
911    additional Configure-Request.
913    The size is determined from the Length field of the element.  For
914    some classes, the length is fixed, for others the length is variable.
915    The option is invalid if the Length field indicates a size below the
916    minimum for the class.
918    An implementation MAY use the Endpoint Discriminator to locate
919    administration or authentication records in a local database.  Such
920    use of this option is incidental to its purpose and is deprecated
921    when a PPP Authentication protocol [3] can be used instead.  Since
922    some classes permit the peer to generate random or locally assigned
923    address values, use of this option as a database key requires prior
924    agreement between peer administrators.
926    The specification of the subfields are:
928    Type
929         19 = for Endpoint Discriminator
931    Length
932         3 + length of Address
934    Class
935         The Class field is one octet and indicates the identifier
936         address space.  The most up-to-date values of the LCP Endpoint
937         Discriminator Class field are specified in the most recent
938         "Assigned Numbers" RFC [7].  Current values are assigned as
939         follows:
941         0    Null Class
943         1    Locally Assigned Address
945         2    Internet Protocol (IP) Address
947         3    IEEE 802.1 Globally Assigned MAC Address
949         4    PPP Magic-Number Block
954 Sklower, et. al.            Standards Track                    [Page 17]
956 RFC 1990                     PPP Multilink                   August 1996
959         5    Public Switched Network Directory Number
961    Address
962         The Address field is one or more octets and indicates the
963         identifier address within the selected class.  The length and
964         content depend on the value of the Class as follows:
966         Class 0 - Null Class
968              Maximum Length: 0
970              Content:
971              This class is the default value if the option is not
972              present in a received Configure-Request.
974         Class 1 - Locally Assigned Address
976              Maximum Length: 20
978              Content:
980              This class is defined to permit a local assignment in the
981              case where use of one of the globally unique classes is not
982              possible.  Use of a device serial number is suggested.  The
983              use of this class is deprecated since uniqueness is not
984              guaranteed.
986         Class 2 - Internet Protocol (IP) Address
988              Fixed Length: 4
990              Content:
992              An address in this class contains an IP host address as
993              defined in [8].
995         Class 3 - IEEE 802.1 Globally Assigned MAC Address
997              Fixed Length: 6
999              Content:
1001              An address in this class contains an IEEE 802.1 MAC address
1002              in canonical (802.3) format [9].  The address MUST have the
1003              global/local assignment bit clear and MUST have the
1004              multicast/specific bit clear.  Locally assigned MAC
1005              addresses should be represented using Class 1.
1010 Sklower, et. al.            Standards Track                    [Page 18]
1012 RFC 1990                     PPP Multilink                   August 1996
1015         Class 4 - PPP Magic-Number Block
1017              Maximum Length: 20
1019              Content:
1021              This is not an address but a block of 1 to 5 concatenated
1022              32 bit PPP Magic-Numbers as defined in [2].  This class
1023              provides for automatic generation of a value likely but not
1024              guaranteed to be unique.  The same block MUST be used by an
1025              endpoint continuously during any period in which at least
1026              one link is in the LCP Open state.  The use of this class
1027              is deprecated.
1029              Note that PPP Magic-Numbers are used in [2] to detect
1030              unexpected loopbacks of a link from an endpoint to itself.
1031              There is a small probability that two distinct endpoints
1032              will generate matching magic-numbers.  This probability is
1033              geometrically reduced when the LCP negotiation is repeated
1034              in search of the desired mismatch, if a peer can generate
1035              uncorrelated magic-numbers.
1037              As used here, magic-numbers are used to determine if two
1038              links are in fact from the same peer endpoint or from two
1039              distinct endpoints.  The numbers always match when there is
1040              one endpoint.  There is a small probability that the
1041              numbers will match even if there are two endpoints.  To
1042              achieve the same confidence that there is not a false match
1043              as for LCP loopback detection, several uncorrelated magic-
1044              numbers can be combined in one block.
1046         Class 5 - Public Switched Network Directory Number
1048              Maximum Length: 15
1050              Content:
1052              An address in this class contains an octet sequence as
1053              defined by I.331 (E.164) representing an international
1054              telephone directory number suitable for use to access the
1055              endpoint via the public switched telephone network [10].
1057 6.  Initiating use of Multilink Headers
1059    When the use of the Multilink protocol has been negotiated on a link
1060    (say Y), and the link is being added to a bundle which currently
1061    contains a single existing link (say X), a system MUST transmit a
1062    Multilink-encapsulated packet on X before transmitting any Multilink-
1066 Sklower, et. al.            Standards Track                    [Page 19]
1068 RFC 1990                     PPP Multilink                   August 1996
1071    encapsulated packets on Y.
1073    Since links may be added and removed from a bundle without destroying
1074    the state associated with it, the fragment should be assigned the
1075    appropriate (next) fragment number.  As noted earlier, the first
1076    fragment transmitted in the life of a bundle is assigned fragment
1077    number 0.
1079 7.  Closing Member links
1081    Member links may be terminated according to normal PPP LCP procedures
1082    using LCP Terminate-Request and Terminate-Ack packets on that member
1083    link.  Since it is assumed that member links usually do not reorder
1084    packets, receipt of a terminate ack is sufficient to assume that any
1085    multilink protocol packets ahead of it are at no special risk of
1086    loss.
1088    Receipt of an LCP Terminate-Request on one link does not conclude the
1089    procedure on the remaining links.
1091    So long as any member links in the bundle are active, the PPP state
1092    for the bundle persists as a separate entity.  However, if the there
1093    is a unique link in the bundle, and all the other links were closed
1094    gracefully (with Terminate-Ack), an implementation MAY cease using
1095    multilink
1096    headers.
1098    If the multilink procedure is used in conjunction with PPP reliable
1099    transmission, and a member link is not closed gracefully, the
1100    implementation should expect to receive packets which violate the
1101    increasing sequence number rule.
1103 8.  Interaction with Other Protocols
1105    In the common case, LCP, and the Authentication Control Protocol
1106    would be negotiated  over each member link.  The Network Protocols
1107    themselves and associated control exchanges would normally have been
1108    conducted once, on the bundle.
1110    In some instances it may be desirable for some Network Protocols to
1111    be exempted from sequencing requirements, and if the MRU sizes of the
1112    link did not cause fragmentation, those protocols could be sent
1113    directly over the member links.
1115    Although explicitly discouraged above, if there were several member
1116    links connecting two implementations, and independent sequencing of
1117    two protocol sets were desired, but blocking of one by the other was
1118    not, one could describe two multilink procedures by assigning
1122 Sklower, et. al.            Standards Track                    [Page 20]
1124 RFC 1990                     PPP Multilink                   August 1996
1127    multiple endpoint identifiers to a given system.  Each member link,
1128    however, would only belong to one bundle.  One could think of a
1129    physical router as housing two logically separate implementations,
1130    each of which is independently configured.
1132    A simpler solution would be to have one link refuse to join the
1133    bundle, by sending a Configure-Reject in response to the Multilink
1134    LCP option.
1136 9.  Security Considerations
1138    Operation of this protocol is no more and no less secure than
1139    operation of the PPP authentication protocols [3].  The reader is
1140    directed there for further discussion.
1142 10.  References
1144    [1] Leifer, D., Sheldon, S., and B. Gorsline, "A Subnetwork Control
1145        Protocol for ISDN Circuit-Switching", University of Michigan
1146        (unpublished), March 1991.
1148    [2] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD 51,
1149        RFC 1661, Daydreamer, July 1994.
1151    [3] Lloyd, B., and W. Simpson, "PPP Authentication Protocols", RFC
1152        1334, Lloyd Internetworking, Daydreamer, October 1992.
1154    [4] International Organisation for Standardization, "HDLC -
1155        Description of the X.25 LAPB-Compatible DTE Data Link
1156        Procedures", International Standard 7776, 1988
1158    [5] Rand, D., "The PPP Compression Control Protocol (CCP)", PPP
1159        Extensions Working Group, RFC 1962, June 1996.
1161    [6] Rand, D., "PPP Reliable Transmission", RFC 1663, Novell, July
1162        1994
1164    [7] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1700,
1165        USC/Information Sciences Institute, October 1994.
1167    [8] Postel, J., Editor, "Internet Protocol - DARPA Internet Program
1168        Protocol Specification", STD 5, RFC 791, USC/Information Sciences
1169        Institute, September 1981.
1171    [9] Institute of Electrical and Electronics Engineers, Inc., "IEEE
1172        Local and Metropolitan Area Networks: Overview and Architecture",
1173        IEEE Std. 802-1990, 1990.
1178 Sklower, et. al.            Standards Track                    [Page 21]
1180 RFC 1990                     PPP Multilink                   August 1996
1183   [10] The International Telegraph and Telephone Consultative Committee
1184        (CCITT), "Numbering Plan for the ISDN Area", Recommendation I.331
1185        (E.164), 1988.
1187   [11] Simpson, W., Editor, "PPP LCP Extensions", RFC 1570, Daydreamer,
1188        January 1994.
1190 11.  Differences from RFC 1717
1192    This section documents differences from RFC 1717.  There are
1193    restrictions placed on implementations that were absent in RFC 1717;
1194    systems obeying these restrictions are fully interoperable with RFC
1195    1717 - compliant systems.
1197 11.1.  Negotiating Multilink, per se
1199    RFC 1717 permitted either the use of the Short Sequence Number Header
1200    Format (SSNHF) or the Maximum Reconstructed Receive Unit (MRRU)
1201    options by themselves to indicate the intent to negotiate multilink.
1202    This specification forbids the use of the SSNHF option by itself; but
1203    does permit the specific of both options together.  Any
1204    implementation which otherwise conforms to rfc1717 and also obeys
1205    this restriction will interoperate with any RFC 1717 implementation.
1207 11.2.  Initial Sequence Number defined
1209    This specification requires that the first sequence number
1210    transmitted after the virtual link has reached to open state be 0.
1212 11.3.  Default Value of the MRRU
1214    This specfication removes the default value for the MRRU, (since it
1215    must always be negotiated with some value), and specifies that an
1216    implementation must be support an MRRU with same value as the default
1217    MRU size for PPP.
1219 11.4.  Config-Nak of EID prohibited
1221    This specification forbids the config-Naking of an EID for any
1222    reason.
1224 11.5.  Uniformity of Sequence Space
1226    This specification requires that the same sequence format be employed
1227    on all links in a bundle.
1234 Sklower, et. al.            Standards Track                    [Page 22]
1236 RFC 1990                     PPP Multilink                   August 1996
1239 11.6.  Commencing and Abating use of Multilink Headers
1241    This memo specifies how one should start the use of Multilink Headers
1242    when a link is added, and under what circumstances it is safe to
1243    discontinue their use.
1245 11.7.  Manual Configuration and Bundle Assignment
1247    The document explicitly permits multiple bundles to be manually
1248    configured in the absence of both the Endpoint Descriminator and any
1249    form of authentication.
1290 Sklower, et. al.            Standards Track                    [Page 23]
1292 RFC 1990                     PPP Multilink                   August 1996
1295 13.  Authors' Addresses
1297    Keith Sklower
1298    Computer Science Department
1299    384 Soda Hall, Mail Stop 1776
1300    University of California
1301    Berkeley, CA 94720-1776
1303    Phone:  (510) 642-9587
1304    EMail:  sklower@CS.Berkeley.EDU
1307    Brian Lloyd
1308    Lloyd Internetworking
1309    3031 Alhambra Drive
1310    Cameron Park, CA 95682
1312    Phone: (916) 676-1147
1313    EMail:  brian@lloyd.com
1316    Glenn McGregor
1317    Lloyd Internetworking
1318    3031 Alhambra Drive
1319    Cameron Park, CA 95682
1321    Phone: (916) 676-1147
1322    EMail: glenn@lloyd.com
1325    Dave Carr
1326    Newbridge Networks Corporation
1327    600 March Road
1328    P.O. Box 13600
1329    Kanata, Ontario,
1330    Canada, K2K 2E6
1332    Phone:  (613) 591-3600
1333    EMail:  dcarr@Newbridge.COM
1336    Tom Coradetti
1337    Sidewalk Software
1338    1190 Josephine Road
1339    Roseville, MN 55113
1341    Phone: (612) 490 7856
1342    EMail: 70761.1664@compuserve.com
1346 Sklower, et. al.            Standards Track                    [Page 24]