7 Network Working Group W. Simpson, Editor
8 Request for Comments: 1661 Daydreamer
11 Category: Standards Track
14 The Point-to-Point Protocol (PPP)
20 This document specifies an Internet standards track protocol for the
21 Internet community, and requests discussion and suggestions for
22 improvements. Please refer to the current edition of the "Internet
23 Official Protocol Standards" (STD 1) for the standardization state
24 and status of this protocol. Distribution of this memo is unlimited.
29 The Point-to-Point Protocol (PPP) provides a standard method for
30 transporting multi-protocol datagrams over point-to-point links. PPP
31 is comprised of three main components:
33 1. A method for encapsulating multi-protocol datagrams.
35 2. A Link Control Protocol (LCP) for establishing, configuring,
36 and testing the data-link connection.
38 3. A family of Network Control Protocols (NCPs) for establishing
39 and configuring different network-layer protocols.
41 This document defines the PPP organization and methodology, and the
42 PPP encapsulation, together with an extensible option negotiation
43 mechanism which is able to negotiate a rich assortment of
44 configuration parameters and provides additional management
45 functions. The PPP Link Control Protocol (LCP) is described in terms
52 1. Introduction .......................................... 1
53 1.1 Specification of Requirements ................... 2
54 1.2 Terminology ..................................... 3
56 2. PPP Encapsulation ..................................... 4
60 \fRFC 1661 Point-to-Point Protocol July 1994
63 3. PPP Link Operation .................................... 6
64 3.1 Overview ........................................ 6
65 3.2 Phase Diagram ................................... 6
66 3.3 Link Dead (physical-layer not ready) ............ 7
67 3.4 Link Establishment Phase ........................ 7
68 3.5 Authentication Phase ............................ 8
69 3.6 Network-Layer Protocol Phase .................... 8
70 3.7 Link Termination Phase .......................... 9
72 4. The Option Negotiation Automaton ...................... 11
73 4.1 State Transition Table .......................... 12
74 4.2 States .......................................... 14
75 4.3 Events .......................................... 16
76 4.4 Actions ......................................... 21
77 4.5 Loop Avoidance .................................. 23
78 4.6 Counters and Timers ............................. 24
80 5. LCP Packet Formats .................................... 26
81 5.1 Configure-Request ............................... 28
82 5.2 Configure-Ack ................................... 29
83 5.3 Configure-Nak ................................... 30
84 5.4 Configure-Reject ................................ 31
85 5.5 Terminate-Request and Terminate-Ack ............. 33
86 5.6 Code-Reject ..................................... 34
87 5.7 Protocol-Reject ................................. 35
88 5.8 Echo-Request and Echo-Reply ..................... 36
89 5.9 Discard-Request ................................. 37
91 6. LCP Configuration Options ............................. 39
92 6.1 Maximum-Receive-Unit (MRU) ...................... 41
93 6.2 Authentication-Protocol ......................... 42
94 6.3 Quality-Protocol ................................ 43
95 6.4 Magic-Number .................................... 45
96 6.5 Protocol-Field-Compression (PFC) ................ 48
97 6.6 Address-and-Control-Field-Compression (ACFC)
99 SECURITY CONSIDERATIONS ...................................... 51
100 REFERENCES ................................................... 51
101 ACKNOWLEDGEMENTS ............................................. 51
102 CHAIR'S ADDRESS .............................................. 52
103 EDITOR'S ADDRESS ............................................. 52
115 \fRFC 1661 Point-to-Point Protocol July 1994
120 The Point-to-Point Protocol is designed for simple links which
121 transport packets between two peers. These links provide full-duplex
122 simultaneous bi-directional operation, and are assumed to deliver
123 packets in order. It is intended that PPP provide a common solution
124 for easy connection of a wide variety of hosts, bridges and routers
129 The PPP encapsulation provides for multiplexing of different
130 network-layer protocols simultaneously over the same link. The
131 PPP encapsulation has been carefully designed to retain
132 compatibility with most commonly used supporting hardware.
134 Only 8 additional octets are necessary to form the encapsulation
135 when used within the default HDLC-like framing. In environments
136 where bandwidth is at a premium, the encapsulation and framing may
137 be shortened to 2 or 4 octets.
139 To support high speed implementations, the default encapsulation
140 uses only simple fields, only one of which needs to be examined
141 for demultiplexing. The default header and information fields
142 fall on 32-bit boundaries, and the trailer may be padded to an
145 Link Control Protocol
147 In order to be sufficiently versatile to be portable to a wide
148 variety of environments, PPP provides a Link Control Protocol
149 (LCP). The LCP is used to automatically agree upon the
150 encapsulation format options, handle varying limits on sizes of
151 packets, detect a looped-back link and other common
152 misconfiguration errors, and terminate the link. Other optional
153 facilities provided are authentication of the identity of its peer
154 on the link, and determination when a link is functioning properly
155 and when it is failing.
157 Network Control Protocols
159 Point-to-Point links tend to exacerbate many problems with the
160 current family of network protocols. For instance, assignment and
161 management of IP addresses, which is a problem even in LAN
162 environments, is especially difficult over circuit-switched
163 point-to-point links (such as dial-up modem servers). These
164 problems are handled by a family of Network Control Protocols
165 (NCPs), which each manage the specific needs required by their
170 \fRFC 1661 Point-to-Point Protocol July 1994
173 respective network-layer protocols. These NCPs are defined in
178 It is intended that PPP links be easy to configure. By design,
179 the standard defaults handle all common configurations. The
180 implementor can specify improvements to the default configuration,
181 which are automatically communicated to the peer without operator
182 intervention. Finally, the operator may explicitly configure
183 options for the link which enable the link to operate in
184 environments where it would otherwise be impossible.
186 This self-configuration is implemented through an extensible
187 option negotiation mechanism, wherein each end of the link
188 describes to the other its capabilities and requirements.
189 Although the option negotiation mechanism described in this
190 document is specified in terms of the Link Control Protocol (LCP),
191 the same facilities are designed to be used by other control
192 protocols, especially the family of NCPs.
196 1.1. Specification of Requirements
198 In this document, several words are used to signify the requirements
199 of the specification. These words are often capitalized.
201 MUST This word, or the adjective "required", means that the
202 definition is an absolute requirement of the specification.
204 MUST NOT This phrase means that the definition is an absolute
205 prohibition of the specification.
207 SHOULD This word, or the adjective "recommended", means that there
208 may exist valid reasons in particular circumstances to
209 ignore this item, but the full implications must be
210 understood and carefully weighed before choosing a
213 MAY This word, or the adjective "optional", means that this
214 item is one of an allowed set of alternatives. An
215 implementation which does not include this option MUST be
216 prepared to interoperate with another implementation which
217 does include the option.
225 \fRFC 1661 Point-to-Point Protocol July 1994
230 This document frequently uses the following terms:
232 datagram The unit of transmission in the network layer (such as IP).
233 A datagram may be encapsulated in one or more packets
234 passed to the data link layer.
236 frame The unit of transmission at the data link layer. A frame
237 may include a header and/or a trailer, along with some
238 number of units of data.
240 packet The basic unit of encapsulation, which is passed across the
241 interface between the network layer and the data link
242 layer. A packet is usually mapped to a frame; the
243 exceptions are when data link layer fragmentation is being
244 performed, or when multiple packets are incorporated into a
247 peer The other end of the point-to-point link.
250 The implementation discards the packet without further
251 processing. The implementation SHOULD provide the
252 capability of logging the error, including the contents of
253 the silently discarded packet, and SHOULD record the event
254 in a statistics counter.
280 \fRFC 1661 Point-to-Point Protocol July 1994
285 The PPP encapsulation is used to disambiguate multiprotocol
286 datagrams. This encapsulation requires framing to indicate the
287 beginning and end of the encapsulation. Methods of providing framing
288 are specified in companion documents.
290 A summary of the PPP encapsulation is shown below. The fields are
291 transmitted from left to right.
293 +----------+-------------+---------+
294 | Protocol | Information | Padding |
296 +----------+-------------+---------+
301 The Protocol field is one or two octets, and its value identifies
302 the datagram encapsulated in the Information field of the packet.
303 The field is transmitted and received most significant octet
306 The structure of this field is consistent with the ISO 3309
307 extension mechanism for address fields. All Protocols MUST be
308 odd; the least significant bit of the least significant octet MUST
309 equal "1". Also, all Protocols MUST be assigned such that the
310 least significant bit of the most significant octet equals "0".
311 Frames received which don't comply with these rules MUST be
312 treated as having an unrecognized Protocol.
314 Protocol field values in the "0***" to "3***" range identify the
315 network-layer protocol of specific packets, and values in the
316 "8***" to "b***" range identify packets belonging to the
317 associated Network Control Protocols (NCPs), if any.
319 Protocol field values in the "4***" to "7***" range are used for
320 protocols with low volume traffic which have no associated NCP.
321 Protocol field values in the "c***" to "f***" range identify
322 packets as link-layer Control Protocols (such as LCP).
335 \fRFC 1661 Point-to-Point Protocol July 1994
338 Up-to-date values of the Protocol field are specified in the most
339 recent "Assigned Numbers" RFC [2]. This specification reserves
340 the following values:
342 Value (in hex) Protocol Name
344 0001 Padding Protocol
345 0003 to 001f reserved (transparency inefficient)
346 007d reserved (Control Escape)
347 00cf reserved (PPP NLPID)
348 00ff reserved (compression inefficient)
355 c021 Link Control Protocol
356 c023 Password Authentication Protocol
357 c025 Link Quality Report
358 c223 Challenge Handshake Authentication Protocol
360 Developers of new protocols MUST obtain a number from the Internet
361 Assigned Numbers Authority (IANA), at IANA@isi.edu.
366 The Information field is zero or more octets. The Information
367 field contains the datagram for the protocol specified in the
370 The maximum length for the Information field, including Padding,
371 but not including the Protocol field, is termed the Maximum
372 Receive Unit (MRU), which defaults to 1500 octets. By
373 negotiation, consenting PPP implementations may use other values
379 On transmission, the Information field MAY be padded with an
380 arbitrary number of octets up to the MRU. It is the
381 responsibility of each protocol to distinguish padding octets from
390 \fRFC 1661 Point-to-Point Protocol July 1994
393 3. PPP Link Operation
397 In order to establish communications over a point-to-point link, each
398 end of the PPP link MUST first send LCP packets to configure and test
399 the data link. After the link has been established, the peer MAY be
402 Then, PPP MUST send NCP packets to choose and configure one or more
403 network-layer protocols. Once each of the chosen network-layer
404 protocols has been configured, datagrams from each network-layer
405 protocol can be sent over the link.
407 The link will remain configured for communications until explicit LCP
408 or NCP packets close the link down, or until some external event
409 occurs (an inactivity timer expires or network administrator
416 In the process of configuring, maintaining and terminating the
417 point-to-point link, the PPP link goes through several distinct
418 phases which are specified in the following simplified state diagram:
420 +------+ +-----------+ +--------------+
421 | | UP | | OPENED | | SUCCESS/NONE
422 | Dead |------->| Establish |---------->| Authenticate |--+
424 +------+ +-----------+ +--------------+ |
427 +<--------------+ +----------+ |
429 | +-----------+ | +---------+ |
430 | DOWN | | | CLOSING | | |
431 +------------| Terminate |<---+<----------| Network |<-+
433 +-----------+ +---------+
435 Not all transitions are specified in this diagram. The following
436 semantics MUST be followed.
445 \fRFC 1661 Point-to-Point Protocol July 1994
448 3.3. Link Dead (physical-layer not ready)
450 The link necessarily begins and ends with this phase. When an
451 external event (such as carrier detection or network administrator
452 configuration) indicates that the physical-layer is ready to be used,
453 PPP will proceed to the Link Establishment phase.
455 During this phase, the LCP automaton (described later) will be in the
456 Initial or Starting states. The transition to the Link Establishment
457 phase will signal an Up event to the LCP automaton.
461 Typically, a link will return to this phase automatically after
462 the disconnection of a modem. In the case of a hard-wired link,
463 this phase may be extremely short -- merely long enough to detect
464 the presence of the device.
468 3.4. Link Establishment Phase
470 The Link Control Protocol (LCP) is used to establish the connection
471 through an exchange of Configure packets. This exchange is complete,
472 and the LCP Opened state entered, once a Configure-Ack packet
473 (described later) has been both sent and received.
475 All Configuration Options are assumed to be at default values unless
476 altered by the configuration exchange. See the chapter on LCP
477 Configuration Options for further discussion.
479 It is important to note that only Configuration Options which are
480 independent of particular network-layer protocols are configured by
481 LCP. Configuration of individual network-layer protocols is handled
482 by separate Network Control Protocols (NCPs) during the Network-Layer
485 Any non-LCP packets received during this phase MUST be silently
488 The receipt of the LCP Configure-Request causes a return to the Link
489 Establishment phase from the Network-Layer Protocol phase or
490 Authentication phase.
500 \fRFC 1661 Point-to-Point Protocol July 1994
503 3.5. Authentication Phase
505 On some links it may be desirable to require a peer to authenticate
506 itself before allowing network-layer protocol packets to be
509 By default, authentication is not mandatory. If an implementation
510 desires that the peer authenticate with some specific authentication
511 protocol, then it MUST request the use of that authentication
512 protocol during Link Establishment phase.
514 Authentication SHOULD take place as soon as possible after link
515 establishment. However, link quality determination MAY occur
516 concurrently. An implementation MUST NOT allow the exchange of link
517 quality determination packets to delay authentication indefinitely.
519 Advancement from the Authentication phase to the Network-Layer
520 Protocol phase MUST NOT occur until authentication has completed. If
521 authentication fails, the authenticator SHOULD proceed instead to the
522 Link Termination phase.
524 Only Link Control Protocol, authentication protocol, and link quality
525 monitoring packets are allowed during this phase. All other packets
526 received during this phase MUST be silently discarded.
528 Implementation Notes:
530 An implementation SHOULD NOT fail authentication simply due to
531 timeout or lack of response. The authentication SHOULD allow some
532 method of retransmission, and proceed to the Link Termination
533 phase only after a number of authentication attempts has been
536 The implementation responsible for commencing Link Termination
537 phase is the implementation which has refused authentication to
542 3.6. Network-Layer Protocol Phase
544 Once PPP has finished the previous phases, each network-layer
545 protocol (such as IP, IPX, or AppleTalk) MUST be separately
546 configured by the appropriate Network Control Protocol (NCP).
548 Each NCP MAY be Opened and Closed at any time.
555 \fRFC 1661 Point-to-Point Protocol July 1994
560 Because an implementation may initially use a significant amount
561 of time for link quality determination, implementations SHOULD
562 avoid fixed timeouts when waiting for their peers to configure a
565 After a NCP has reached the Opened state, PPP will carry the
566 corresponding network-layer protocol packets. Any supported
567 network-layer protocol packets received when the corresponding NCP is
568 not in the Opened state MUST be silently discarded.
572 While LCP is in the Opened state, any protocol packet which is
573 unsupported by the implementation MUST be returned in a Protocol-
574 Reject (described later). Only protocols which are supported are
577 During this phase, link traffic consists of any possible combination
578 of LCP, NCP, and network-layer protocol packets.
582 3.7. Link Termination Phase
584 PPP can terminate the link at any time. This might happen because of
585 the loss of carrier, authentication failure, link quality failure,
586 the expiration of an idle-period timer, or the administrative closing
589 LCP is used to close the link through an exchange of Terminate
590 packets. When the link is closing, PPP informs the network-layer
591 protocols so that they may take appropriate action.
593 After the exchange of Terminate packets, the implementation SHOULD
594 signal the physical-layer to disconnect in order to enforce the
595 termination of the link, particularly in the case of an
596 authentication failure. The sender of the Terminate-Request SHOULD
597 disconnect after receiving a Terminate-Ack, or after the Restart
598 counter expires. The receiver of a Terminate-Request SHOULD wait for
599 the peer to disconnect, and MUST NOT disconnect until at least one
600 Restart time has passed after sending a Terminate-Ack. PPP SHOULD
601 proceed to the Link Dead phase.
603 Any non-LCP packets received during this phase MUST be silently
610 \fRFC 1661 Point-to-Point Protocol July 1994
615 The closing of the link by LCP is sufficient. There is no need
616 for each NCP to send a flurry of Terminate packets. Conversely,
617 the fact that one NCP has Closed is not sufficient reason to cause
618 the termination of the PPP link, even if that NCP was the only NCP
619 currently in the Opened state.
665 \fRFC 1661 Point-to-Point Protocol July 1994
668 4. The Option Negotiation Automaton
670 The finite-state automaton is defined by events, actions and state
671 transitions. Events include reception of external commands such as
672 Open and Close, expiration of the Restart timer, and reception of
673 packets from a peer. Actions include the starting of the Restart
674 timer and transmission of packets to the peer.
676 Some types of packets -- Configure-Naks and Configure-Rejects, or
677 Code-Rejects and Protocol-Rejects, or Echo-Requests, Echo-Replies and
678 Discard-Requests -- are not differentiated in the automaton
679 descriptions. As will be described later, these packets do indeed
680 serve different functions. However, they always cause the same
685 Up = lower layer is Up tlu = This-Layer-Up
686 Down = lower layer is Down tld = This-Layer-Down
687 Open = administrative Open tls = This-Layer-Started
688 Close= administrative Close tlf = This-Layer-Finished
690 TO+ = Timeout with counter > 0 irc = Initialize-Restart-Count
691 TO- = Timeout with counter expired zrc = Zero-Restart-Count
693 RCR+ = Receive-Configure-Request (Good) scr = Send-Configure-Request
694 RCR- = Receive-Configure-Request (Bad)
695 RCA = Receive-Configure-Ack sca = Send-Configure-Ack
696 RCN = Receive-Configure-Nak/Rej scn = Send-Configure-Nak/Rej
698 RTR = Receive-Terminate-Request str = Send-Terminate-Request
699 RTA = Receive-Terminate-Ack sta = Send-Terminate-Ack
701 RUC = Receive-Unknown-Code scj = Send-Code-Reject
702 RXJ+ = Receive-Code-Reject (permitted)
703 or Receive-Protocol-Reject
704 RXJ- = Receive-Code-Reject (catastrophic)
705 or Receive-Protocol-Reject
706 RXR = Receive-Echo-Request ser = Send-Echo-Reply
707 or Receive-Echo-Reply
708 or Receive-Discard-Request
720 \fRFC 1661 Point-to-Point Protocol July 1994
723 4.1. State Transition Table
725 The complete state transition table follows. States are indicated
726 horizontally, and events are read vertically. State transitions and
727 actions are represented in the form action/new-state. Multiple
728 actions are separated by commas, and may continue on succeeding lines
729 as space requires; multiple actions may be implemented in any
730 convenient order. The state may be followed by a letter, which
731 indicates an explanatory footnote. The dash ('-') indicates an
736 Events| Initial Starting Closed Stopped Closing Stopping
737 ------+-----------------------------------------------------------
738 Up | 2 irc,scr/6 - - - -
739 Down | - - 0 tls/1 0 1
740 Open | tls/1 1 irc,scr/6 3r 5r 5r
741 Close| 0 tlf/0 2 2 4 4
743 TO+ | - - - - str/4 str/5
744 TO- | - - - - tlf/2 tlf/3
746 RCR+ | - - sta/2 irc,scr,sca/8 4 5
747 RCR- | - - sta/2 irc,scr,scn/6 4 5
748 RCA | - - sta/2 sta/3 4 5
749 RCN | - - sta/2 sta/3 4 5
751 RTR | - - sta/2 sta/3 sta/4 sta/5
752 RTA | - - 2 3 tlf/2 tlf/3
754 RUC | - - scj/2 scj/3 scj/4 scj/5
756 RXJ- | - - tlf/2 tlf/3 tlf/2 tlf/3
775 \fRFC 1661 Point-to-Point Protocol July 1994
781 Events| Req-Sent Ack-Rcvd Ack-Sent Opened
782 ------+-----------------------------------------
786 Close|irc,str/4 irc,str/4 irc,str/4 tld,irc,str/4
788 TO+ | scr/6 scr/6 scr/8 -
789 TO- | tlf/3p tlf/3p tlf/3p -
791 RCR+ | sca/8 sca,tlu/9 sca/8 tld,scr,sca/8
792 RCR- | scn/6 scn/7 scn/6 tld,scr,scn/6
793 RCA | irc/7 scr/6x irc,tlu/9 tld,scr/6x
794 RCN |irc,scr/6 scr/6x irc,scr/8 tld,scr/6x
796 RTR | sta/6 sta/6 sta/6 tld,zrc,sta/5
797 RTA | 6 6 8 tld,scr/6
799 RUC | scj/6 scj/7 scj/8 scj/9
801 RXJ- | tlf/3 tlf/3 tlf/3 tld,irc,str/5
806 The states in which the Restart timer is running are identifiable by
807 the presence of TO events. Only the Send-Configure-Request, Send-
808 Terminate-Request and Zero-Restart-Count actions start or re-start
809 the Restart timer. The Restart timer is stopped when transitioning
810 from any state where the timer is running to a state where the timer
813 The events and actions are defined according to a message passing
814 architecture, rather than a signalling architecture. If an action is
815 desired to control specific signals (such as DTR), additional actions
816 are likely to be required.
818 [p] Passive option; see Stopped state discussion.
820 [r] Restart option; see Open event discussion.
822 [x] Crossed connection; see RCA event discussion.
830 \fRFC 1661 Point-to-Point Protocol July 1994
835 Following is a more detailed description of each automaton state.
839 In the Initial state, the lower layer is unavailable (Down), and
840 no Open has occurred. The Restart timer is not running in the
845 The Starting state is the Open counterpart to the Initial state.
846 An administrative Open has been initiated, but the lower layer is
847 still unavailable (Down). The Restart timer is not running in the
850 When the lower layer becomes available (Up), a Configure-Request
855 In the Closed state, the link is available (Up), but no Open has
856 occurred. The Restart timer is not running in the Closed state.
858 Upon reception of Configure-Request packets, a Terminate-Ack is
859 sent. Terminate-Acks are silently discarded to avoid creating a
864 The Stopped state is the Open counterpart to the Closed state. It
865 is entered when the automaton is waiting for a Down event after
866 the This-Layer-Finished action, or after sending a Terminate-Ack.
867 The Restart timer is not running in the Stopped state.
869 Upon reception of Configure-Request packets, an appropriate
870 response is sent. Upon reception of other packets, a Terminate-
871 Ack is sent. Terminate-Acks are silently discarded to avoid
876 The Stopped state is a junction state for link termination,
877 link configuration failure, and other automaton failure modes.
878 These potentially separate states have been combined.
880 There is a race condition between the Down event response (from
885 \fRFC 1661 Point-to-Point Protocol July 1994
888 the This-Layer-Finished action) and the Receive-Configure-
889 Request event. When a Configure-Request arrives before the
890 Down event, the Down event will supercede by returning the
891 automaton to the Starting state. This prevents attack by
894 Implementation Option:
896 After the peer fails to respond to Configure-Requests, an
897 implementation MAY wait passively for the peer to send
898 Configure-Requests. In this case, the This-Layer-Finished
899 action is not used for the TO- event in states Req-Sent, Ack-
902 This option is useful for dedicated circuits, or circuits which
903 have no status signals available, but SHOULD NOT be used for
908 In the Closing state, an attempt is made to terminate the
909 connection. A Terminate-Request has been sent and the Restart
910 timer is running, but a Terminate-Ack has not yet been received.
912 Upon reception of a Terminate-Ack, the Closed state is entered.
913 Upon the expiration of the Restart timer, a new Terminate-Request
914 is transmitted, and the Restart timer is restarted. After the
915 Restart timer has expired Max-Terminate times, the Closed state is
920 The Stopping state is the Open counterpart to the Closing state.
921 A Terminate-Request has been sent and the Restart timer is
922 running, but a Terminate-Ack has not yet been received.
926 The Stopping state provides a well defined opportunity to
927 terminate a link before allowing new traffic. After the link
928 has terminated, a new configuration may occur via the Stopped
933 In the Request-Sent state an attempt is made to configure the
934 connection. A Configure-Request has been sent and the Restart
935 timer is running, but a Configure-Ack has not yet been received
940 \fRFC 1661 Point-to-Point Protocol July 1994
943 nor has one been sent.
947 In the Ack-Received state, a Configure-Request has been sent and a
948 Configure-Ack has been received. The Restart timer is still
949 running, since a Configure-Ack has not yet been sent.
953 In the Ack-Sent state, a Configure-Request and a Configure-Ack
954 have both been sent, but a Configure-Ack has not yet been
955 received. The Restart timer is running, since a Configure-Ack has
956 not yet been received.
960 In the Opened state, a Configure-Ack has been both sent and
961 received. The Restart timer is not running.
963 When entering the Opened state, the implementation SHOULD signal
964 the upper layers that it is now Up. Conversely, when leaving the
965 Opened state, the implementation SHOULD signal the upper layers
972 Transitions and actions in the automaton are caused by events.
976 This event occurs when a lower layer indicates that it is ready to
979 Typically, this event is used by a modem handling or calling
980 process, or by some other coupling of the PPP link to the physical
981 media, to signal LCP that the link is entering Link Establishment
984 It also can be used by LCP to signal each NCP that the link is
985 entering Network-Layer Protocol phase. That is, the This-Layer-Up
986 action from LCP triggers the Up event in the NCP.
990 This event occurs when a lower layer indicates that it is no
995 \fRFC 1661 Point-to-Point Protocol July 1994
998 longer ready to carry packets.
1000 Typically, this event is used by a modem handling or calling
1001 process, or by some other coupling of the PPP link to the physical
1002 media, to signal LCP that the link is entering Link Dead phase.
1004 It also can be used by LCP to signal each NCP that the link is
1005 leaving Network-Layer Protocol phase. That is, the This-Layer-
1006 Down action from LCP triggers the Down event in the NCP.
1010 This event indicates that the link is administratively available
1011 for traffic; that is, the network administrator (human or program)
1012 has indicated that the link is allowed to be Opened. When this
1013 event occurs, and the link is not in the Opened state, the
1014 automaton attempts to send configuration packets to the peer.
1016 If the automaton is not able to begin configuration (the lower
1017 layer is Down, or a previous Close event has not completed), the
1018 establishment of the link is automatically delayed.
1020 When a Terminate-Request is received, or other events occur which
1021 cause the link to become unavailable, the automaton will progress
1022 to a state where the link is ready to re-open. No additional
1023 administrative intervention is necessary.
1025 Implementation Option:
1027 Experience has shown that users will execute an additional Open
1028 command when they want to renegotiate the link. This might
1029 indicate that new values are to be negotiated.
1031 Since this is not the meaning of the Open event, it is
1032 suggested that when an Open user command is executed in the
1033 Opened, Closing, Stopping, or Stopped states, the
1034 implementation issue a Down event, immediately followed by an
1035 Up event. Care must be taken that an intervening Down event
1036 cannot occur from another source.
1038 The Down followed by an Up will cause an orderly renegotiation
1039 of the link, by progressing through the Starting to the
1040 Request-Sent state. This will cause the renegotiation of the
1041 link, without any harmful side effects.
1045 This event indicates that the link is not available for traffic;
1050 \fRFC 1661 Point-to-Point Protocol July 1994
1053 that is, the network administrator (human or program) has
1054 indicated that the link is not allowed to be Opened. When this
1055 event occurs, and the link is not in the Closed state, the
1056 automaton attempts to terminate the connection. Futher attempts
1057 to re-configure the link are denied until a new Open event occurs.
1059 Implementation Note:
1061 When authentication fails, the link SHOULD be terminated, to
1062 prevent attack by repetition and denial of service to other
1063 users. Since the link is administratively available (by
1064 definition), this can be accomplished by simulating a Close
1065 event to the LCP, immediately followed by an Open event. Care
1066 must be taken that an intervening Close event cannot occur from
1069 The Close followed by an Open will cause an orderly termination
1070 of the link, by progressing through the Closing to the Stopping
1071 state, and the This-Layer-Finished action can disconnect the
1072 link. The automaton waits in the Stopped or Starting states
1073 for the next connection attempt.
1077 This event indicates the expiration of the Restart timer. The
1078 Restart timer is used to time responses to Configure-Request and
1079 Terminate-Request packets.
1081 The TO+ event indicates that the Restart counter continues to be
1082 greater than zero, which triggers the corresponding Configure-
1083 Request or Terminate-Request packet to be retransmitted.
1085 The TO- event indicates that the Restart counter is not greater
1086 than zero, and no more packets need to be retransmitted.
1088 Receive-Configure-Request (RCR+,RCR-)
1090 This event occurs when a Configure-Request packet is received from
1091 the peer. The Configure-Request packet indicates the desire to
1092 open a connection and may specify Configuration Options. The
1093 Configure-Request packet is more fully described in a later
1096 The RCR+ event indicates that the Configure-Request was
1097 acceptable, and triggers the transmission of a corresponding
1100 The RCR- event indicates that the Configure-Request was
1105 \fRFC 1661 Point-to-Point Protocol July 1994
1108 unacceptable, and triggers the transmission of a corresponding
1109 Configure-Nak or Configure-Reject.
1111 Implementation Note:
1113 These events may occur on a connection which is already in the
1114 Opened state. The implementation MUST be prepared to
1115 immediately renegotiate the Configuration Options.
1117 Receive-Configure-Ack (RCA)
1119 This event occurs when a valid Configure-Ack packet is received
1120 from the peer. The Configure-Ack packet is a positive response to
1121 a Configure-Request packet. An out of sequence or otherwise
1122 invalid packet is silently discarded.
1124 Implementation Note:
1126 Since the correct packet has already been received before
1127 reaching the Ack-Rcvd or Opened states, it is extremely
1128 unlikely that another such packet will arrive. As specified,
1129 all invalid Ack/Nak/Rej packets are silently discarded, and do
1130 not affect the transitions of the automaton.
1132 However, it is not impossible that a correctly formed packet
1133 will arrive through a coincidentally-timed cross-connection.
1134 It is more likely to be the result of an implementation error.
1135 At the very least, this occurance SHOULD be logged.
1137 Receive-Configure-Nak/Rej (RCN)
1139 This event occurs when a valid Configure-Nak or Configure-Reject
1140 packet is received from the peer. The Configure-Nak and
1141 Configure-Reject packets are negative responses to a Configure-
1142 Request packet. An out of sequence or otherwise invalid packet is
1145 Implementation Note:
1147 Although the Configure-Nak and Configure-Reject cause the same
1148 state transition in the automaton, these packets have
1149 significantly different effects on the Configuration Options
1150 sent in the resulting Configure-Request packet.
1152 Receive-Terminate-Request (RTR)
1154 This event occurs when a Terminate-Request packet is received.
1155 The Terminate-Request packet indicates the desire of the peer to
1160 \fRFC 1661 Point-to-Point Protocol July 1994
1163 close the connection.
1165 Implementation Note:
1167 This event is not identical to the Close event (see above), and
1168 does not override the Open commands of the local network
1169 administrator. The implementation MUST be prepared to receive
1170 a new Configure-Request without network administrator
1173 Receive-Terminate-Ack (RTA)
1175 This event occurs when a Terminate-Ack packet is received from the
1176 peer. The Terminate-Ack packet is usually a response to a
1177 Terminate-Request packet. The Terminate-Ack packet may also
1178 indicate that the peer is in Closed or Stopped states, and serves
1179 to re-synchronize the link configuration.
1181 Receive-Unknown-Code (RUC)
1183 This event occurs when an un-interpretable packet is received from
1184 the peer. A Code-Reject packet is sent in response.
1186 Receive-Code-Reject, Receive-Protocol-Reject (RXJ+,RXJ-)
1188 This event occurs when a Code-Reject or a Protocol-Reject packet
1189 is received from the peer.
1191 The RXJ+ event arises when the rejected value is acceptable, such
1192 as a Code-Reject of an extended code, or a Protocol-Reject of a
1193 NCP. These are within the scope of normal operation. The
1194 implementation MUST stop sending the offending packet type.
1196 The RXJ- event arises when the rejected value is catastrophic,
1197 such as a Code-Reject of Configure-Request, or a Protocol-Reject
1198 of LCP! This event communicates an unrecoverable error that
1199 terminates the connection.
1201 Receive-Echo-Request, Receive-Echo-Reply, Receive-Discard-Request
1204 This event occurs when an Echo-Request, Echo-Reply or Discard-
1205 Request packet is received from the peer. The Echo-Reply packet
1206 is a response to an Echo-Request packet. There is no reply to an
1207 Echo-Reply or Discard-Request packet.
1215 \fRFC 1661 Point-to-Point Protocol July 1994
1220 Actions in the automaton are caused by events and typically indicate
1221 the transmission of packets and/or the starting or stopping of the
1226 This indicates an event that cannot occur in a properly
1227 implemented automaton. The implementation has an internal error,
1228 which should be reported and logged. No transition is taken, and
1229 the implementation SHOULD NOT reset or freeze.
1233 This action indicates to the upper layers that the automaton is
1234 entering the Opened state.
1236 Typically, this action is used by the LCP to signal the Up event
1237 to a NCP, Authentication Protocol, or Link Quality Protocol, or
1238 MAY be used by a NCP to indicate that the link is available for
1239 its network layer traffic.
1241 This-Layer-Down (tld)
1243 This action indicates to the upper layers that the automaton is
1244 leaving the Opened state.
1246 Typically, this action is used by the LCP to signal the Down event
1247 to a NCP, Authentication Protocol, or Link Quality Protocol, or
1248 MAY be used by a NCP to indicate that the link is no longer
1249 available for its network layer traffic.
1251 This-Layer-Started (tls)
1253 This action indicates to the lower layers that the automaton is
1254 entering the Starting state, and the lower layer is needed for the
1255 link. The lower layer SHOULD respond with an Up event when the
1256 lower layer is available.
1258 This results of this action are highly implementation dependent.
1260 This-Layer-Finished (tlf)
1262 This action indicates to the lower layers that the automaton is
1263 entering the Initial, Closed or Stopped states, and the lower
1264 layer is no longer needed for the link. The lower layer SHOULD
1265 respond with a Down event when the lower layer has terminated.
1270 \fRFC 1661 Point-to-Point Protocol July 1994
1273 Typically, this action MAY be used by the LCP to advance to the
1274 Link Dead phase, or MAY be used by a NCP to indicate to the LCP
1275 that the link may terminate when there are no other NCPs open.
1277 This results of this action are highly implementation dependent.
1279 Initialize-Restart-Count (irc)
1281 This action sets the Restart counter to the appropriate value
1282 (Max-Terminate or Max-Configure). The counter is decremented for
1283 each transmission, including the first.
1285 Implementation Note:
1287 In addition to setting the Restart counter, the implementation
1288 MUST set the timeout period to the initial value when Restart
1289 timer backoff is used.
1291 Zero-Restart-Count (zrc)
1293 This action sets the Restart counter to zero.
1295 Implementation Note:
1297 This action enables the FSA to pause before proceeding to the
1298 desired final state, allowing traffic to be processed by the
1299 peer. In addition to zeroing the Restart counter, the
1300 implementation MUST set the timeout period to an appropriate
1303 Send-Configure-Request (scr)
1305 A Configure-Request packet is transmitted. This indicates the
1306 desire to open a connection with a specified set of Configuration
1307 Options. The Restart timer is started when the Configure-Request
1308 packet is transmitted, to guard against packet loss. The Restart
1309 counter is decremented each time a Configure-Request is sent.
1311 Send-Configure-Ack (sca)
1313 A Configure-Ack packet is transmitted. This acknowledges the
1314 reception of a Configure-Request packet with an acceptable set of
1315 Configuration Options.
1317 Send-Configure-Nak (scn)
1319 A Configure-Nak or Configure-Reject packet is transmitted, as
1320 appropriate. This negative response reports the reception of a
1325 \fRFC 1661 Point-to-Point Protocol July 1994
1328 Configure-Request packet with an unacceptable set of Configuration
1331 Configure-Nak packets are used to refuse a Configuration Option
1332 value, and to suggest a new, acceptable value. Configure-Reject
1333 packets are used to refuse all negotiation about a Configuration
1334 Option, typically because it is not recognized or implemented.
1335 The use of Configure-Nak versus Configure-Reject is more fully
1336 described in the chapter on LCP Packet Formats.
1338 Send-Terminate-Request (str)
1340 A Terminate-Request packet is transmitted. This indicates the
1341 desire to close a connection. The Restart timer is started when
1342 the Terminate-Request packet is transmitted, to guard against
1343 packet loss. The Restart counter is decremented each time a
1344 Terminate-Request is sent.
1346 Send-Terminate-Ack (sta)
1348 A Terminate-Ack packet is transmitted. This acknowledges the
1349 reception of a Terminate-Request packet or otherwise serves to
1350 synchronize the automatons.
1352 Send-Code-Reject (scj)
1354 A Code-Reject packet is transmitted. This indicates the reception
1355 of an unknown type of packet.
1357 Send-Echo-Reply (ser)
1359 An Echo-Reply packet is transmitted. This acknowledges the
1360 reception of an Echo-Request packet.
1366 The protocol makes a reasonable attempt at avoiding Configuration
1367 Option negotiation loops. However, the protocol does NOT guarantee
1368 that loops will not happen. As with any negotiation, it is possible
1369 to configure two PPP implementations with conflicting policies that
1370 will never converge. It is also possible to configure policies which
1371 do converge, but which take significant time to do so. Implementors
1372 should keep this in mind and SHOULD implement loop detection
1373 mechanisms or higher level timeouts.
1380 \fRFC 1661 Point-to-Point Protocol July 1994
1383 4.6. Counters and Timers
1387 There is one special timer used by the automaton. The Restart
1388 timer is used to time transmissions of Configure-Request and
1389 Terminate-Request packets. Expiration of the Restart timer causes
1390 a Timeout event, and retransmission of the corresponding
1391 Configure-Request or Terminate-Request packet. The Restart timer
1392 MUST be configurable, but SHOULD default to three (3) seconds.
1394 Implementation Note:
1396 The Restart timer SHOULD be based on the speed of the link.
1397 The default value is designed for low speed (2,400 to 9,600
1398 bps), high switching latency links (typical telephone lines).
1399 Higher speed links, or links with low switching latency, SHOULD
1400 have correspondingly faster retransmission times.
1402 Instead of a constant value, the Restart timer MAY begin at an
1403 initial small value and increase to the configured final value.
1404 Each successive value less than the final value SHOULD be at
1405 least twice the previous value. The initial value SHOULD be
1406 large enough to account for the size of the packets, twice the
1407 round trip time for transmission at the link speed, and at
1408 least an additional 100 milliseconds to allow the peer to
1409 process the packets before responding. Some circuits add
1410 another 200 milliseconds of satellite delay. Round trip times
1411 for modems operating at 14,400 bps have been measured in the
1412 range of 160 to more than 600 milliseconds.
1416 There is one required restart counter for Terminate-Requests.
1417 Max-Terminate indicates the number of Terminate-Request packets
1418 sent without receiving a Terminate-Ack before assuming that the
1419 peer is unable to respond. Max-Terminate MUST be configurable,
1420 but SHOULD default to two (2) transmissions.
1424 A similar counter is recommended for Configure-Requests. Max-
1425 Configure indicates the number of Configure-Request packets sent
1426 without receiving a valid Configure-Ack, Configure-Nak or
1427 Configure-Reject before assuming that the peer is unable to
1428 respond. Max-Configure MUST be configurable, but SHOULD default
1429 to ten (10) transmissions.
1435 \fRFC 1661 Point-to-Point Protocol July 1994
1440 A related counter is recommended for Configure-Nak. Max-Failure
1441 indicates the number of Configure-Nak packets sent without sending
1442 a Configure-Ack before assuming that configuration is not
1443 converging. Any further Configure-Nak packets for peer requested
1444 options are converted to Configure-Reject packets, and locally
1445 desired options are no longer appended. Max-Failure MUST be
1446 configurable, but SHOULD default to five (5) transmissions.
1490 \fRFC 1661 Point-to-Point Protocol July 1994
1493 5. LCP Packet Formats
1495 There are three classes of LCP packets:
1497 1. Link Configuration packets used to establish and configure a
1498 link (Configure-Request, Configure-Ack, Configure-Nak and
1501 2. Link Termination packets used to terminate a link (Terminate-
1502 Request and Terminate-Ack).
1504 3. Link Maintenance packets used to manage and debug a link
1505 (Code-Reject, Protocol-Reject, Echo-Request, Echo-Reply, and
1508 In the interest of simplicity, there is no version field in the LCP
1509 packet. A correctly functioning LCP implementation will always
1510 respond to unknown Protocols and Codes with an easily recognizable
1511 LCP packet, thus providing a deterministic fallback mechanism for
1512 implementations of other versions.
1514 Regardless of which Configuration Options are enabled, all LCP Link
1515 Configuration, Link Termination, and Code-Reject packets (codes 1
1516 through 7) are always sent as if no Configuration Options were
1517 negotiated. In particular, each Configuration Option specifies a
1518 default value. This ensures that such LCP packets are always
1519 recognizable, even when one end of the link mistakenly believes the
1522 Exactly one LCP packet is encapsulated in the PPP Information field,
1523 where the PPP Protocol field indicates type hex c021 (Link Control
1526 A summary of the Link Control Protocol packet format is shown below.
1527 The fields are transmitted from left to right.
1530 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
1531 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1532 | Code | Identifier | Length |
1533 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1540 The Code field is one octet, and identifies the kind of LCP
1545 \fRFC 1661 Point-to-Point Protocol July 1994
1548 packet. When a packet is received with an unknown Code field, a
1549 Code-Reject packet is transmitted.
1551 Up-to-date values of the LCP Code field are specified in the most
1552 recent "Assigned Numbers" RFC [2]. This document concerns the
1570 The Identifier field is one octet, and aids in matching requests
1571 and replies. When a packet is received with an invalid Identifier
1572 field, the packet is silently discarded without affecting the
1577 The Length field is two octets, and indicates the length of the
1578 LCP packet, including the Code, Identifier, Length and Data
1579 fields. The Length MUST NOT exceed the MRU of the link.
1581 Octets outside the range of the Length field are treated as
1582 padding and are ignored on reception. When a packet is received
1583 with an invalid Length field, the packet is silently discarded
1584 without affecting the automaton.
1588 The Data field is zero or more octets, as indicated by the Length
1589 field. The format of the Data field is determined by the Code
1600 \fRFC 1661 Point-to-Point Protocol July 1994
1603 5.1. Configure-Request
1607 An implementation wishing to open a connection MUST transmit a
1608 Configure-Request. The Options field is filled with any desired
1609 changes to the link defaults. Configuration Options SHOULD NOT be
1610 included with default values.
1612 Upon reception of a Configure-Request, an appropriate reply MUST
1615 A summary of the Configure-Request packet format is shown below. The
1616 fields are transmitted from left to right.
1619 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
1620 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1621 | Code | Identifier | Length |
1622 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1629 1 for Configure-Request.
1633 The Identifier field MUST be changed whenever the contents of the
1634 Options field changes, and whenever a valid reply has been
1635 received for a previous request. For retransmissions, the
1636 Identifier MAY remain unchanged.
1640 The options field is variable in length, and contains the list of
1641 zero or more Configuration Options that the sender desires to
1642 negotiate. All Configuration Options are always negotiated
1643 simultaneously. The format of Configuration Options is further
1644 described in a later chapter.
1655 \fRFC 1661 Point-to-Point Protocol July 1994
1662 If every Configuration Option received in a Configure-Request is
1663 recognizable and all values are acceptable, then the
1664 implementation MUST transmit a Configure-Ack. The acknowledged
1665 Configuration Options MUST NOT be reordered or modified in any
1668 On reception of a Configure-Ack, the Identifier field MUST match
1669 that of the last transmitted Configure-Request. Additionally, the
1670 Configuration Options in a Configure-Ack MUST exactly match those
1671 of the last transmitted Configure-Request. Invalid packets are
1674 A summary of the Configure-Ack packet format is shown below. The
1675 fields are transmitted from left to right.
1678 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
1679 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1680 | Code | Identifier | Length |
1681 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1688 2 for Configure-Ack.
1692 The Identifier field is a copy of the Identifier field of the
1693 Configure-Request which caused this Configure-Ack.
1697 The Options field is variable in length, and contains the list of
1698 zero or more Configuration Options that the sender is
1699 acknowledging. All Configuration Options are always acknowledged
1710 \fRFC 1661 Point-to-Point Protocol July 1994
1717 If every instance of the received Configuration Options is
1718 recognizable, but some values are not acceptable, then the
1719 implementation MUST transmit a Configure-Nak. The Options field
1720 is filled with only the unacceptable Configuration Options from
1721 the Configure-Request. All acceptable Configuration Options are
1722 filtered out of the Configure-Nak, but otherwise the Configuration
1723 Options from the Configure-Request MUST NOT be reordered.
1725 Options which have no value fields (boolean options) MUST use the
1726 Configure-Reject reply instead.
1728 Each Configuration Option which is allowed only a single instance
1729 MUST be modified to a value acceptable to the Configure-Nak
1730 sender. The default value MAY be used, when this differs from the
1733 When a particular type of Configuration Option can be listed more
1734 than once with different values, the Configure-Nak MUST include a
1735 list of all values for that option which are acceptable to the
1736 Configure-Nak sender. This includes acceptable values that were
1737 present in the Configure-Request.
1739 Finally, an implementation may be configured to request the
1740 negotiation of a specific Configuration Option. If that option is
1741 not listed, then that option MAY be appended to the list of Nak'd
1742 Configuration Options, in order to prompt the peer to include that
1743 option in its next Configure-Request packet. Any value fields for
1744 the option MUST indicate values acceptable to the Configure-Nak
1747 On reception of a Configure-Nak, the Identifier field MUST match
1748 that of the last transmitted Configure-Request. Invalid packets
1749 are silently discarded.
1751 Reception of a valid Configure-Nak indicates that when a new
1752 Configure-Request is sent, the Configuration Options MAY be
1753 modified as specified in the Configure-Nak. When multiple
1754 instances of a Configuration Option are present, the peer SHOULD
1755 select a single value to include in its next Configure-Request
1758 Some Configuration Options have a variable length. Since the
1759 Nak'd Option has been modified by the peer, the implementation
1760 MUST be able to handle an Option length which is different from
1765 \fRFC 1661 Point-to-Point Protocol July 1994
1768 the original Configure-Request.
1770 A summary of the Configure-Nak packet format is shown below. The
1771 fields are transmitted from left to right.
1774 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
1775 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1776 | Code | Identifier | Length |
1777 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1784 3 for Configure-Nak.
1788 The Identifier field is a copy of the Identifier field of the
1789 Configure-Request which caused this Configure-Nak.
1793 The Options field is variable in length, and contains the list of
1794 zero or more Configuration Options that the sender is Nak'ing.
1795 All Configuration Options are always Nak'd simultaneously.
1799 5.4. Configure-Reject
1803 If some Configuration Options received in a Configure-Request are
1804 not recognizable or are not acceptable for negotiation (as
1805 configured by a network administrator), then the implementation
1806 MUST transmit a Configure-Reject. The Options field is filled
1807 with only the unacceptable Configuration Options from the
1808 Configure-Request. All recognizable and negotiable Configuration
1809 Options are filtered out of the Configure-Reject, but otherwise
1810 the Configuration Options MUST NOT be reordered or modified in any
1813 On reception of a Configure-Reject, the Identifier field MUST
1814 match that of the last transmitted Configure-Request.
1815 Additionally, the Configuration Options in a Configure-Reject MUST
1820 \fRFC 1661 Point-to-Point Protocol July 1994
1823 be a proper subset of those in the last transmitted Configure-
1824 Request. Invalid packets are silently discarded.
1826 Reception of a valid Configure-Reject indicates that when a new
1827 Configure-Request is sent, it MUST NOT include any of the
1828 Configuration Options listed in the Configure-Reject.
1830 A summary of the Configure-Reject packet format is shown below. The
1831 fields are transmitted from left to right.
1834 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
1835 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1836 | Code | Identifier | Length |
1837 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1844 4 for Configure-Reject.
1848 The Identifier field is a copy of the Identifier field of the
1849 Configure-Request which caused this Configure-Reject.
1853 The Options field is variable in length, and contains the list of
1854 zero or more Configuration Options that the sender is rejecting.
1855 All Configuration Options are always rejected simultaneously.
1875 \fRFC 1661 Point-to-Point Protocol July 1994
1878 5.5. Terminate-Request and Terminate-Ack
1882 LCP includes Terminate-Request and Terminate-Ack Codes in order to
1883 provide a mechanism for closing a connection.
1885 An implementation wishing to close a connection SHOULD transmit a
1886 Terminate-Request. Terminate-Request packets SHOULD continue to
1887 be sent until Terminate-Ack is received, the lower layer indicates
1888 that it has gone down, or a sufficiently large number have been
1889 transmitted such that the peer is down with reasonable certainty.
1891 Upon reception of a Terminate-Request, a Terminate-Ack MUST be
1894 Reception of an unelicited Terminate-Ack indicates that the peer
1895 is in the Closed or Stopped states, or is otherwise in need of
1898 A summary of the Terminate-Request and Terminate-Ack packet formats
1899 is shown below. The fields are transmitted from left to right.
1902 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
1903 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1904 | Code | Identifier | Length |
1905 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1912 5 for Terminate-Request;
1914 6 for Terminate-Ack.
1918 On transmission, the Identifier field MUST be changed whenever the
1919 content of the Data field changes, and whenever a valid reply has
1920 been received for a previous request. For retransmissions, the
1921 Identifier MAY remain unchanged.
1923 On reception, the Identifier field of the Terminate-Request is
1924 copied into the Identifier field of the Terminate-Ack packet.
1930 \fRFC 1661 Point-to-Point Protocol July 1994
1935 The Data field is zero or more octets, and contains uninterpreted
1936 data for use by the sender. The data may consist of any binary
1937 value. The end of the field is indicated by the Length.
1945 Reception of a LCP packet with an unknown Code indicates that the
1946 peer is operating with a different version. This MUST be reported
1947 back to the sender of the unknown Code by transmitting a Code-
1950 Upon reception of the Code-Reject of a code which is fundamental
1951 to this version of the protocol, the implementation SHOULD report
1952 the problem and drop the connection, since it is unlikely that the
1953 situation can be rectified automatically.
1955 A summary of the Code-Reject packet format is shown below. The
1956 fields are transmitted from left to right.
1959 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
1960 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1961 | Code | Identifier | Length |
1962 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1963 | Rejected-Packet ...
1973 The Identifier field MUST be changed for each Code-Reject sent.
1977 The Rejected-Packet field contains a copy of the LCP packet which
1978 is being rejected. It begins with the Information field, and does
1979 not include any Data Link Layer headers nor an FCS. The
1980 Rejected-Packet MUST be truncated to comply with the peer's
1985 \fRFC 1661 Point-to-Point Protocol July 1994
1992 5.7. Protocol-Reject
1996 Reception of a PPP packet with an unknown Protocol field indicates
1997 that the peer is attempting to use a protocol which is
1998 unsupported. This usually occurs when the peer attempts to
1999 configure a new protocol. If the LCP automaton is in the Opened
2000 state, then this MUST be reported back to the peer by transmitting
2003 Upon reception of a Protocol-Reject, the implementation MUST stop
2004 sending packets of the indicated protocol at the earliest
2007 Protocol-Reject packets can only be sent in the LCP Opened state.
2008 Protocol-Reject packets received in any state other than the LCP
2009 Opened state SHOULD be silently discarded.
2011 A summary of the Protocol-Reject packet format is shown below. The
2012 fields are transmitted from left to right.
2015 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
2016 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2017 | Code | Identifier | Length |
2018 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2019 | Rejected-Protocol | Rejected-Information ...
2020 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2025 8 for Protocol-Reject.
2029 The Identifier field MUST be changed for each Protocol-Reject
2034 The Rejected-Protocol field is two octets, and contains the PPP
2035 Protocol field of the packet which is being rejected.
2040 \fRFC 1661 Point-to-Point Protocol July 1994
2043 Rejected-Information
2045 The Rejected-Information field contains a copy of the packet which
2046 is being rejected. It begins with the Information field, and does
2047 not include any Data Link Layer headers nor an FCS. The
2048 Rejected-Information MUST be truncated to comply with the peer's
2053 5.8. Echo-Request and Echo-Reply
2057 LCP includes Echo-Request and Echo-Reply Codes in order to provide
2058 a Data Link Layer loopback mechanism for use in exercising both
2059 directions of the link. This is useful as an aid in debugging,
2060 link quality determination, performance testing, and for numerous
2063 Upon reception of an Echo-Request in the LCP Opened state, an
2064 Echo-Reply MUST be transmitted.
2066 Echo-Request and Echo-Reply packets MUST only be sent in the LCP
2067 Opened state. Echo-Request and Echo-Reply packets received in any
2068 state other than the LCP Opened state SHOULD be silently
2072 A summary of the Echo-Request and Echo-Reply packet formats is shown
2073 below. The fields are transmitted from left to right.
2076 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
2077 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2078 | Code | Identifier | Length |
2079 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2081 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2095 \fRFC 1661 Point-to-Point Protocol July 1994
2100 On transmission, the Identifier field MUST be changed whenever the
2101 content of the Data field changes, and whenever a valid reply has
2102 been received for a previous request. For retransmissions, the
2103 Identifier MAY remain unchanged.
2105 On reception, the Identifier field of the Echo-Request is copied
2106 into the Identifier field of the Echo-Reply packet.
2110 The Magic-Number field is four octets, and aids in detecting links
2111 which are in the looped-back condition. Until the Magic-Number
2112 Configuration Option has been successfully negotiated, the Magic-
2113 Number MUST be transmitted as zero. See the Magic-Number
2114 Configuration Option for further explanation.
2118 The Data field is zero or more octets, and contains uninterpreted
2119 data for use by the sender. The data may consist of any binary
2120 value. The end of the field is indicated by the Length.
2124 5.9. Discard-Request
2128 LCP includes a Discard-Request Code in order to provide a Data
2129 Link Layer sink mechanism for use in exercising the local to
2130 remote direction of the link. This is useful as an aid in
2131 debugging, performance testing, and for numerous other functions.
2133 Discard-Request packets MUST only be sent in the LCP Opened state.
2134 On reception, the receiver MUST silently discard any Discard-
2135 Request that it receives.
2150 \fRFC 1661 Point-to-Point Protocol July 1994
2153 A summary of the Discard-Request packet format is shown below. The
2154 fields are transmitted from left to right.
2157 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
2158 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2159 | Code | Identifier | Length |
2160 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2162 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2168 11 for Discard-Request.
2172 The Identifier field MUST be changed for each Discard-Request
2177 The Magic-Number field is four octets, and aids in detecting links
2178 which are in the looped-back condition. Until the Magic-Number
2179 Configuration Option has been successfully negotiated, the Magic-
2180 Number MUST be transmitted as zero. See the Magic-Number
2181 Configuration Option for further explanation.
2185 The Data field is zero or more octets, and contains uninterpreted
2186 data for use by the sender. The data may consist of any binary
2187 value. The end of the field is indicated by the Length.
2205 \fRFC 1661 Point-to-Point Protocol July 1994
2208 6. LCP Configuration Options
2210 LCP Configuration Options allow negotiation of modifications to the
2211 default characteristics of a point-to-point link. If a Configuration
2212 Option is not included in a Configure-Request packet, the default
2213 value for that Configuration Option is assumed.
2215 Some Configuration Options MAY be listed more than once. The effect
2216 of this is Configuration Option specific, and is specified by each
2217 such Configuration Option description. (None of the Configuration
2218 Options in this specification can be listed more than once.)
2220 The end of the list of Configuration Options is indicated by the
2221 Length field of the LCP packet.
2223 Unless otherwise specified, all Configuration Options apply in a
2224 half-duplex fashion; typically, in the receive direction of the link
2225 from the point of view of the Configure-Request sender.
2229 The options indicate additional capabilities or requirements of
2230 the implementation that is requesting the option. An
2231 implementation which does not understand any option SHOULD
2232 interoperate with one which implements every option.
2234 A default is specified for each option which allows the link to
2235 correctly function without negotiation of the option, although
2236 perhaps with less than optimal performance.
2238 Except where explicitly specified, acknowledgement of an option
2239 does not require the peer to take any additional action other than
2242 It is not necessary to send the default values for the options in
2243 a Configure-Request.
2246 A summary of the Configuration Option format is shown below. The
2247 fields are transmitted from left to right.
2250 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2251 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2252 | Type | Length | Data ...
2253 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2260 \fRFC 1661 Point-to-Point Protocol July 1994
2265 The Type field is one octet, and indicates the type of
2266 Configuration Option. Up-to-date values of the LCP Option Type
2267 field are specified in the most recent "Assigned Numbers" RFC [2].
2268 This document concerns the following values:
2271 1 Maximum-Receive-Unit
2272 3 Authentication-Protocol
2275 7 Protocol-Field-Compression
2276 8 Address-and-Control-Field-Compression
2281 The Length field is one octet, and indicates the length of this
2282 Configuration Option including the Type, Length and Data fields.
2284 If a negotiable Configuration Option is received in a Configure-
2285 Request, but with an invalid or unrecognized Length, a Configure-
2286 Nak SHOULD be transmitted which includes the desired Configuration
2287 Option with an appropriate Length and Data.
2291 The Data field is zero or more octets, and contains information
2292 specific to the Configuration Option. The format and length of
2293 the Data field is determined by the Type and Length fields.
2295 When the Data field is indicated by the Length to extend beyond
2296 the end of the Information field, the entire packet is silently
2297 discarded without affecting the automaton.
2315 \fRFC 1661 Point-to-Point Protocol July 1994
2318 6.1. Maximum-Receive-Unit (MRU)
2322 This Configuration Option may be sent to inform the peer that the
2323 implementation can receive larger packets, or to request that the
2324 peer send smaller packets.
2326 The default value is 1500 octets. If smaller packets are
2327 requested, an implementation MUST still be able to receive the
2328 full 1500 octet information field in case link synchronization is
2331 Implementation Note:
2333 This option is used to indicate an implementation capability.
2334 The peer is not required to maximize the use of the capacity.
2335 For example, when a MRU is indicated which is 2048 octets, the
2336 peer is not required to send any packet with 2048 octets. The
2337 peer need not Configure-Nak to indicate that it will only send
2338 smaller packets, since the implementation will always require
2339 support for at least 1500 octets.
2341 A summary of the Maximum-Receive-Unit Configuration Option format is
2342 shown below. The fields are transmitted from left to right.
2345 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
2346 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2347 | Type | Length | Maximum-Receive-Unit |
2348 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2359 Maximum-Receive-Unit
2361 The Maximum-Receive-Unit field is two octets, and specifies the
2362 maximum number of octets in the Information and Padding fields.
2363 It does not include the framing, Protocol field, FCS, nor any
2364 transparency bits or bytes.
2370 \fRFC 1661 Point-to-Point Protocol July 1994
2373 6.2. Authentication-Protocol
2377 On some links it may be desirable to require a peer to
2378 authenticate itself before allowing network-layer protocol packets
2381 This Configuration Option provides a method to negotiate the use
2382 of a specific protocol for authentication. By default,
2383 authentication is not required.
2385 An implementation MUST NOT include multiple Authentication-
2386 Protocol Configuration Options in its Configure-Request packets.
2387 Instead, it SHOULD attempt to configure the most desirable
2388 protocol first. If that protocol is Configure-Nak'd, then the
2389 implementation SHOULD attempt the next most desirable protocol in
2390 the next Configure-Request.
2392 The implementation sending the Configure-Request is indicating
2393 that it expects authentication from its peer. If an
2394 implementation sends a Configure-Ack, then it is agreeing to
2395 authenticate with the specified protocol. An implementation
2396 receiving a Configure-Ack SHOULD expect the peer to authenticate
2397 with the acknowledged protocol.
2399 There is no requirement that authentication be full-duplex or that
2400 the same protocol be used in both directions. It is perfectly
2401 acceptable for different protocols to be used in each direction.
2402 This will, of course, depend on the specific protocols negotiated.
2404 A summary of the Authentication-Protocol Configuration Option format
2405 is shown below. The fields are transmitted from left to right.
2408 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
2409 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2410 | Type | Length | Authentication-Protocol |
2411 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2425 \fRFC 1661 Point-to-Point Protocol July 1994
2432 Authentication-Protocol
2434 The Authentication-Protocol field is two octets, and indicates the
2435 authentication protocol desired. Values for this field are always
2436 the same as the PPP Protocol field values for that same
2437 authentication protocol.
2439 Up-to-date values of the Authentication-Protocol field are
2440 specified in the most recent "Assigned Numbers" RFC [2]. Current
2441 values are assigned as follows:
2443 Value (in hex) Protocol
2445 c023 Password Authentication Protocol
2446 c223 Challenge Handshake Authentication Protocol
2451 The Data field is zero or more octets, and contains additional
2452 data as determined by the particular protocol.
2456 6.3. Quality-Protocol
2460 On some links it may be desirable to determine when, and how
2461 often, the link is dropping data. This process is called link
2464 This Configuration Option provides a method to negotiate the use
2465 of a specific protocol for link quality monitoring. By default,
2466 link quality monitoring is disabled.
2468 The implementation sending the Configure-Request is indicating
2469 that it expects to receive monitoring information from its peer.
2470 If an implementation sends a Configure-Ack, then it is agreeing to
2471 send the specified protocol. An implementation receiving a
2472 Configure-Ack SHOULD expect the peer to send the acknowledged
2475 There is no requirement that quality monitoring be full-duplex or
2480 \fRFC 1661 Point-to-Point Protocol July 1994
2483 that the same protocol be used in both directions. It is
2484 perfectly acceptable for different protocols to be used in each
2485 direction. This will, of course, depend on the specific protocols
2488 A summary of the Quality-Protocol Configuration Option format is
2489 shown below. The fields are transmitted from left to right.
2492 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
2493 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2494 | Type | Length | Quality-Protocol |
2495 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2510 The Quality-Protocol field is two octets, and indicates the link
2511 quality monitoring protocol desired. Values for this field are
2512 always the same as the PPP Protocol field values for that same
2513 monitoring protocol.
2515 Up-to-date values of the Quality-Protocol field are specified in
2516 the most recent "Assigned Numbers" RFC [2]. Current values are
2517 assigned as follows:
2519 Value (in hex) Protocol
2521 c025 Link Quality Report
2526 The Data field is zero or more octets, and contains additional
2527 data as determined by the particular protocol.
2535 \fRFC 1661 Point-to-Point Protocol July 1994
2542 This Configuration Option provides a method to detect looped-back
2543 links and other Data Link Layer anomalies. This Configuration
2544 Option MAY be required by some other Configuration Options such as
2545 the Quality-Protocol Configuration Option. By default, the
2546 Magic-Number is not negotiated, and zero is inserted where a
2547 Magic-Number might otherwise be used.
2549 Before this Configuration Option is requested, an implementation
2550 MUST choose its Magic-Number. It is recommended that the Magic-
2551 Number be chosen in the most random manner possible in order to
2552 guarantee with very high probability that an implementation will
2553 arrive at a unique number. A good way to choose a unique random
2554 number is to start with a unique seed. Suggested sources of
2555 uniqueness include machine serial numbers, other network hardware
2556 addresses, time-of-day clocks, etc. Particularly good random
2557 number seeds are precise measurements of the inter-arrival time of
2558 physical events such as packet reception on other connected
2559 networks, server response time, or the typing rate of a human
2560 user. It is also suggested that as many sources as possible be
2561 used simultaneously.
2563 When a Configure-Request is received with a Magic-Number
2564 Configuration Option, the received Magic-Number is compared with
2565 the Magic-Number of the last Configure-Request sent to the peer.
2566 If the two Magic-Numbers are different, then the link is not
2567 looped-back, and the Magic-Number SHOULD be acknowledged. If the
2568 two Magic-Numbers are equal, then it is possible, but not certain,
2569 that the link is looped-back and that this Configure-Request is
2570 actually the one last sent. To determine this, a Configure-Nak
2571 MUST be sent specifying a different Magic-Number value. A new
2572 Configure-Request SHOULD NOT be sent to the peer until normal
2573 processing would cause it to be sent (that is, until a Configure-
2574 Nak is received or the Restart timer runs out).
2576 Reception of a Configure-Nak with a Magic-Number different from
2577 that of the last Configure-Nak sent to the peer proves that a link
2578 is not looped-back, and indicates a unique Magic-Number. If the
2579 Magic-Number is equal to the one sent in the last Configure-Nak,
2580 the possibility of a looped-back link is increased, and a new
2581 Magic-Number MUST be chosen. In either case, a new Configure-
2582 Request SHOULD be sent with the new Magic-Number.
2584 If the link is indeed looped-back, this sequence (transmit
2585 Configure-Request, receive Configure-Request, transmit Configure-
2590 \fRFC 1661 Point-to-Point Protocol July 1994
2593 Nak, receive Configure-Nak) will repeat over and over again. If
2594 the link is not looped-back, this sequence might occur a few
2595 times, but it is extremely unlikely to occur repeatedly. More
2596 likely, the Magic-Numbers chosen at either end will quickly
2597 diverge, terminating the sequence. The following table shows the
2598 probability of collisions assuming that both ends of the link
2599 select Magic-Numbers with a perfectly uniform distribution:
2601 Number of Collisions Probability
2602 -------------------- ---------------------
2603 1 1/2**32 = 2.3 E-10
2604 2 1/2**32**2 = 5.4 E-20
2605 3 1/2**32**3 = 1.3 E-29
2608 Good sources of uniqueness or randomness are required for this
2609 divergence to occur. If a good source of uniqueness cannot be
2610 found, it is recommended that this Configuration Option not be
2611 enabled; Configure-Requests with the option SHOULD NOT be
2612 transmitted and any Magic-Number Configuration Options which the
2613 peer sends SHOULD be either acknowledged or rejected. In this
2614 case, looped-back links cannot be reliably detected by the
2615 implementation, although they may still be detectable by the peer.
2617 If an implementation does transmit a Configure-Request with a
2618 Magic-Number Configuration Option, then it MUST NOT respond with a
2619 Configure-Reject when it receives a Configure-Request with a
2620 Magic-Number Configuration Option. That is, if an implementation
2621 desires to use Magic Numbers, then it MUST also allow its peer to
2622 do so. If an implementation does receive a Configure-Reject in
2623 response to a Configure-Request, it can only mean that the link is
2624 not looped-back, and that its peer will not be using Magic-
2625 Numbers. In this case, an implementation SHOULD act as if the
2626 negotiation had been successful (as if it had instead received a
2629 The Magic-Number also may be used to detect looped-back links
2630 during normal operation, as well as during Configuration Option
2631 negotiation. All LCP Echo-Request, Echo-Reply, and Discard-
2632 Request packets have a Magic-Number field. If Magic-Number has
2633 been successfully negotiated, an implementation MUST transmit
2634 these packets with the Magic-Number field set to its negotiated
2637 The Magic-Number field of these packets SHOULD be inspected on
2638 reception. All received Magic-Number fields MUST be equal to
2639 either zero or the peer's unique Magic-Number, depending on
2640 whether or not the peer negotiated a Magic-Number.
2645 \fRFC 1661 Point-to-Point Protocol July 1994
2648 Reception of a Magic-Number field equal to the negotiated local
2649 Magic-Number indicates a looped-back link. Reception of a Magic-
2650 Number other than the negotiated local Magic-Number, the peer's
2651 negotiated Magic-Number, or zero if the peer didn't negotiate one,
2652 indicates a link which has been (mis)configured for communications
2653 with a different peer.
2655 Procedures for recovery from either case are unspecified, and may
2656 vary from implementation to implementation. A somewhat
2657 pessimistic procedure is to assume a LCP Down event. A further
2658 Open event will begin the process of re-establishing the link,
2659 which can't complete until the looped-back condition is
2660 terminated, and Magic-Numbers are successfully negotiated. A more
2661 optimistic procedure (in the case of a looped-back link) is to
2662 begin transmitting LCP Echo-Request packets until an appropriate
2663 Echo-Reply is received, indicating a termination of the looped-
2666 A summary of the Magic-Number Configuration Option format is shown
2667 below. The fields are transmitted from left to right.
2670 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
2671 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2672 | Type | Length | Magic-Number
2673 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2674 Magic-Number (cont) |
2675 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2688 The Magic-Number field is four octets, and indicates a number
2689 which is very likely to be unique to one end of the link. A
2690 Magic-Number of zero is illegal and MUST always be Nak'd, if it is
2691 not Rejected outright.
2700 \fRFC 1661 Point-to-Point Protocol July 1994
2703 6.5. Protocol-Field-Compression (PFC)
2707 This Configuration Option provides a method to negotiate the
2708 compression of the PPP Protocol field. By default, all
2709 implementations MUST transmit packets with two octet PPP Protocol
2712 PPP Protocol field numbers are chosen such that some values may be
2713 compressed into a single octet form which is clearly
2714 distinguishable from the two octet form. This Configuration
2715 Option is sent to inform the peer that the implementation can
2716 receive such single octet Protocol fields.
2718 As previously mentioned, the Protocol field uses an extension
2719 mechanism consistent with the ISO 3309 extension mechanism for the
2720 Address field; the Least Significant Bit (LSB) of each octet is
2721 used to indicate extension of the Protocol field. A binary "0" as
2722 the LSB indicates that the Protocol field continues with the
2723 following octet. The presence of a binary "1" as the LSB marks
2724 the last octet of the Protocol field. Notice that any number of
2725 "0" octets may be prepended to the field, and will still indicate
2726 the same value (consider the two binary representations for 3,
2727 00000011 and 00000000 00000011).
2729 When using low speed links, it is desirable to conserve bandwidth
2730 by sending as little redundant data as possible. The Protocol-
2731 Field-Compression Configuration Option allows a trade-off between
2732 implementation simplicity and bandwidth efficiency. If
2733 successfully negotiated, the ISO 3309 extension mechanism may be
2734 used to compress the Protocol field to one octet instead of two.
2735 The large majority of packets are compressible since data
2736 protocols are typically assigned with Protocol field values less
2739 Compressed Protocol fields MUST NOT be transmitted unless this
2740 Configuration Option has been negotiated. When negotiated, PPP
2741 implementations MUST accept PPP packets with either double-octet
2742 or single-octet Protocol fields, and MUST NOT distinguish between
2745 The Protocol field is never compressed when sending any LCP
2746 packet. This rule guarantees unambiguous recognition of LCP
2749 When a Protocol field is compressed, the Data Link Layer FCS field
2750 is calculated on the compressed frame, not the original
2755 \fRFC 1661 Point-to-Point Protocol July 1994
2760 A summary of the Protocol-Field-Compression Configuration Option
2761 format is shown below. The fields are transmitted from left to
2765 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
2766 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2768 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2810 \fRFC 1661 Point-to-Point Protocol July 1994
2813 6.6. Address-and-Control-Field-Compression (ACFC)
2817 This Configuration Option provides a method to negotiate the
2818 compression of the Data Link Layer Address and Control fields. By
2819 default, all implementations MUST transmit frames with Address and
2820 Control fields appropriate to the link framing.
2822 Since these fields usually have constant values for point-to-point
2823 links, they are easily compressed. This Configuration Option is
2824 sent to inform the peer that the implementation can receive
2825 compressed Address and Control fields.
2827 If a compressed frame is received when Address-and-Control-Field-
2828 Compression has not been negotiated, the implementation MAY
2829 silently discard the frame.
2831 The Address and Control fields MUST NOT be compressed when sending
2832 any LCP packet. This rule guarantees unambiguous recognition of
2835 When the Address and Control fields are compressed, the Data Link
2836 Layer FCS field is calculated on the compressed frame, not the
2837 original uncompressed frame.
2839 A summary of the Address-and-Control-Field-Compression configuration
2840 option format is shown below. The fields are transmitted from left
2844 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
2845 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2847 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2865 \fRFC 1661 Point-to-Point Protocol July 1994
2868 Security Considerations
2870 Security issues are briefly discussed in sections concerning the
2871 Authentication Phase, the Close event, and the Authentication-
2872 Protocol Configuration Option.
2878 [1] Perkins, D., "Requirements for an Internet Standard Point-to-
2879 Point Protocol", RFC 1547, Carnegie Mellon University,
2882 [2] Reynolds, J., and Postel, J., "Assigned Numbers", STD 2, RFC
2883 1340, USC/Information Sciences Institute, July 1992.
2888 This document is the product of the Point-to-Point Protocol Working
2889 Group of the Internet Engineering Task Force (IETF). Comments should
2890 be submitted to the ietf-ppp@merit.edu mailing list.
2892 Much of the text in this document is taken from the working group
2893 requirements [1]; and RFCs 1171 & 1172, by Drew Perkins while at
2894 Carnegie Mellon University, and by Russ Hobby of the University of
2895 California at Davis.
2897 William Simpson was principally responsible for introducing
2898 consistent terminology and philosophy, and the re-design of the phase
2899 and negotiation state machines.
2901 Many people spent significant time helping to develop the Point-to-
2902 Point Protocol. The complete list of people is too numerous to list,
2903 but the following people deserve special thanks: Rick Adams, Ken
2904 Adelman, Fred Baker, Mike Ballard, Craig Fox, Karl Fox, Phill Gross,
2905 Kory Hamzeh, former WG chair Russ Hobby, David Kaufman, former WG
2906 chair Steve Knowles, Mark Lewis, former WG chair Brian Lloyd, John
2907 LoVerso, Bill Melohn, Mike Patton, former WG chair Drew Perkins, Greg
2908 Satz, John Shriver, Vernon Schryver, and Asher Waldfogel.
2910 Special thanks to Morning Star Technologies for providing computing
2911 resources and network access support for writing this specification.
2920 \fRFC 1661 Point-to-Point Protocol July 1994
2925 The working group can be contacted via the current chair:
2928 Advanced Computer Communications
2930 Santa Barbara, California 93117
2938 Questions about this memo can also be directed to:
2940 William Allen Simpson
2942 Computer Systems Consulting Services
2944 Madison Heights, Michigan 48071
2946 Bill.Simpson@um.cc.umich.edu
2947 bsimpson@MorningStar.com