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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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
RFC 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