1 2 3 4 5 6 7Network Working Group W. Simpson, Editor 8Request for Comments: 1661 Daydreamer 9STD: 51 July 1994 10Obsoletes: 1548 11Category: Standards Track 12 13 14 The Point-to-Point Protocol (PPP) 15 16 17 18Status of this Memo 19 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. 25 26 27Abstract 28 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: 32 33 1. A method for encapsulating multi-protocol datagrams. 34 35 2. A Link Control Protocol (LCP) for establishing, configuring, 36 and testing the data-link connection. 37 38 3. A family of Network Control Protocols (NCPs) for establishing 39 and configuring different network-layer protocols. 40 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 46 of this mechanism. 47 48 49Table of Contents 50 51 52 1. Introduction .......................................... 1 53 1.1 Specification of Requirements ................... 2 54 1.2 Terminology ..................................... 3 55 56 2. PPP Encapsulation ..................................... 4 57 58 59Simpson [Page i] 60RFC 1661 Point-to-Point Protocol July 1994 61 62 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 71 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 79 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 90 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) 98 99 SECURITY CONSIDERATIONS ...................................... 51 100 REFERENCES ................................................... 51 101 ACKNOWLEDGEMENTS ............................................. 51 102 CHAIR'S ADDRESS .............................................. 52 103 EDITOR'S ADDRESS ............................................. 52 104 105 106 107 108 109 110 111 112 113 114Simpson [Page ii] 115RFC 1661 Point-to-Point Protocol July 1994 116 117 1181. Introduction 119 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 125 [1]. 126 127 Encapsulation 128 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. 133 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. 138 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 143 arbitrary boundary. 144 145 Link Control Protocol 146 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. 156 157 Network Control Protocols 158 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 166 167 168 169Simpson [Page 1] 170RFC 1661 Point-to-Point Protocol July 1994 171 172 173 respective network-layer protocols. These NCPs are defined in 174 companion documents. 175 176 Configuration 177 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. 185 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. 193 194 195 1961.1. Specification of Requirements 197 198 In this document, several words are used to signify the requirements 199 of the specification. These words are often capitalized. 200 201 MUST This word, or the adjective "required", means that the 202 definition is an absolute requirement of the specification. 203 204 MUST NOT This phrase means that the definition is an absolute 205 prohibition of the specification. 206 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 211 different course. 212 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. 218 219 220 221 222 223 224Simpson [Page 2] 225RFC 1661 Point-to-Point Protocol July 1994 226 227 2281.2. Terminology 229 230 This document frequently uses the following terms: 231 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. 235 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. 239 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 245 single frame. 246 247 peer The other end of the point-to-point link. 248 249 silently discard 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. 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279Simpson [Page 3] 280RFC 1661 Point-to-Point Protocol July 1994 281 282 2832. PPP Encapsulation 284 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. 289 290 A summary of the PPP encapsulation is shown below. The fields are 291 transmitted from left to right. 292 293 +----------+-------------+---------+ 294 | Protocol | Information | Padding | 295 | 8/16 bits| * | * | 296 +----------+-------------+---------+ 297 298 299 Protocol Field 300 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 304 first. 305 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. 313 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. 318 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). 323 324 325 326 327 328 329 330 331 332 333 334Simpson [Page 4] 335RFC 1661 Point-to-Point Protocol July 1994 336 337 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: 341 342 Value (in hex) Protocol Name 343 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) 349 350 8001 to 801f unused 351 807d unused 352 80cf unused 353 80ff unused 354 355 c021 Link Control Protocol 356 c023 Password Authentication Protocol 357 c025 Link Quality Report 358 c223 Challenge Handshake Authentication Protocol 359 360 Developers of new protocols MUST obtain a number from the Internet 361 Assigned Numbers Authority (IANA), at IANA@isi.edu. 362 363 364 Information Field 365 366 The Information field is zero or more octets. The Information 367 field contains the datagram for the protocol specified in the 368 Protocol field. 369 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 374 for the MRU. 375 376 377 Padding 378 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 382 real information. 383 384 385 386 387 388 389Simpson [Page 5] 390RFC 1661 Point-to-Point Protocol July 1994 391 392 3933. PPP Link Operation 394 3953.1. Overview 396 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 400 authenticated. 401 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. 406 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 410 intervention). 411 412 413 4143.2. Phase Diagram 415 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: 419 420 +------+ +-----------+ +--------------+ 421 | | UP | | OPENED | | SUCCESS/NONE 422 | Dead |------->| Establish |---------->| Authenticate |--+ 423 | | | | | | | 424 +------+ +-----------+ +--------------+ | 425 ^ | | | 426 | FAIL | FAIL | | 427 +<--------------+ +----------+ | 428 | | | 429 | +-----------+ | +---------+ | 430 | DOWN | | | CLOSING | | | 431 +------------| Terminate |<---+<----------| Network |<-+ 432 | | | | 433 +-----------+ +---------+ 434 435 Not all transitions are specified in this diagram. The following 436 semantics MUST be followed. 437 438 439 440 441 442 443 444Simpson [Page 6] 445RFC 1661 Point-to-Point Protocol July 1994 446 447 4483.3. Link Dead (physical-layer not ready) 449 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. 454 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. 458 459 Implementation Note: 460 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. 465 466 467 4683.4. Link Establishment Phase 469 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. 474 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. 478 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 483 Protocol phase. 484 485 Any non-LCP packets received during this phase MUST be silently 486 discarded. 487 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. 491 492 493 494 495 496 497 498 499Simpson [Page 7] 500RFC 1661 Point-to-Point Protocol July 1994 501 502 5033.5. Authentication Phase 504 505 On some links it may be desirable to require a peer to authenticate 506 itself before allowing network-layer protocol packets to be 507 exchanged. 508 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. 513 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. 518 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. 523 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. 527 528 Implementation Notes: 529 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 534 exceeded. 535 536 The implementation responsible for commencing Link Termination 537 phase is the implementation which has refused authentication to 538 its peer. 539 540 541 5423.6. Network-Layer Protocol Phase 543 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). 547 548 Each NCP MAY be Opened and Closed at any time. 549 550 551 552 553 554Simpson [Page 8] 555RFC 1661 Point-to-Point Protocol July 1994 556 557 558 Implementation Note: 559 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 563 NCP. 564 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. 569 570 Implementation Note: 571 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 575 silently discarded. 576 577 During this phase, link traffic consists of any possible combination 578 of LCP, NCP, and network-layer protocol packets. 579 580 581 5823.7. Link Termination Phase 583 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 587 of the link. 588 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. 592 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. 602 603 Any non-LCP packets received during this phase MUST be silently 604 discarded. 605 606 607 608 609Simpson [Page 9] 610RFC 1661 Point-to-Point Protocol July 1994 611 612 613 Implementation Note: 614 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. 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664Simpson [Page 10] 665RFC 1661 Point-to-Point Protocol July 1994 666 667 6684. The Option Negotiation Automaton 669 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. 675 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 681 transitions. 682 683 Events Actions 684 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 689 690 TO+ = Timeout with counter > 0 irc = Initialize-Restart-Count 691 TO- = Timeout with counter expired zrc = Zero-Restart-Count 692 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 697 698 RTR = Receive-Terminate-Request str = Send-Terminate-Request 699 RTA = Receive-Terminate-Ack sta = Send-Terminate-Ack 700 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 709 710 711 712 713 714 715 716 717 718 719Simpson [Page 11] 720RFC 1661 Point-to-Point Protocol July 1994 721 722 7234.1. State Transition Table 724 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 732 illegal transition. 733 734 | State 735 | 0 1 2 3 4 5 736Events| 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 742 | 743 TO+ | - - - - str/4 str/5 744 TO- | - - - - tlf/2 tlf/3 745 | 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 750 | 751 RTR | - - sta/2 sta/3 sta/4 sta/5 752 RTA | - - 2 3 tlf/2 tlf/3 753 | 754 RUC | - - scj/2 scj/3 scj/4 scj/5 755 RXJ+ | - - 2 3 4 5 756 RXJ- | - - tlf/2 tlf/3 tlf/2 tlf/3 757 | 758 RXR | - - 2 3 4 5 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774Simpson [Page 12] 775RFC 1661 Point-to-Point Protocol July 1994 776 777 778 779 | State 780 | 6 7 8 9 781Events| Req-Sent Ack-Rcvd Ack-Sent Opened 782------+----------------------------------------- 783 Up | - - - - 784 Down | 1 1 1 tld/1 785 Open | 6 7 8 9r 786 Close|irc,str/4 irc,str/4 irc,str/4 tld,irc,str/4 787 | 788 TO+ | scr/6 scr/6 scr/8 - 789 TO- | tlf/3p tlf/3p tlf/3p - 790 | 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 795 | 796 RTR | sta/6 sta/6 sta/6 tld,zrc,sta/5 797 RTA | 6 6 8 tld,scr/6 798 | 799 RUC | scj/6 scj/7 scj/8 scj/9 800 RXJ+ | 6 6 8 9 801 RXJ- | tlf/3 tlf/3 tlf/3 tld,irc,str/5 802 | 803 RXR | 6 7 8 ser/9 804 805 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 811 is not running. 812 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. 817 818 [p] Passive option; see Stopped state discussion. 819 820 [r] Restart option; see Open event discussion. 821 822 [x] Crossed connection; see RCA event discussion. 823 824 825 826 827 828 829Simpson [Page 13] 830RFC 1661 Point-to-Point Protocol July 1994 831 832 8334.2. States 834 835 Following is a more detailed description of each automaton state. 836 837 Initial 838 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 841 Initial state. 842 843 Starting 844 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 848 Starting state. 849 850 When the lower layer becomes available (Up), a Configure-Request 851 is sent. 852 853 Closed 854 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. 857 858 Upon reception of Configure-Request packets, a Terminate-Ack is 859 sent. Terminate-Acks are silently discarded to avoid creating a 860 loop. 861 862 Stopped 863 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. 868 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 872 creating a loop. 873 874 Rationale: 875 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. 879 880 There is a race condition between the Down event response (from 881 882 883 884Simpson [Page 14] 885RFC 1661 Point-to-Point Protocol July 1994 886 887 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 892 repetition. 893 894 Implementation Option: 895 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- 900 Rcvd and Ack-Sent. 901 902 This option is useful for dedicated circuits, or circuits which 903 have no status signals available, but SHOULD NOT be used for 904 switched circuits. 905 906 Closing 907 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. 911 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 916 entered. 917 918 Stopping 919 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. 923 924 Rationale: 925 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 929 or Starting states. 930 931 Request-Sent 932 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 936 937 938 939Simpson [Page 15] 940RFC 1661 Point-to-Point Protocol July 1994 941 942 943 nor has one been sent. 944 945 Ack-Received 946 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. 950 951 Ack-Sent 952 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. 957 958 Opened 959 960 In the Opened state, a Configure-Ack has been both sent and 961 received. The Restart timer is not running. 962 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 966 that it is now Down. 967 968 969 9704.3. Events 971 972 Transitions and actions in the automaton are caused by events. 973 974 Up 975 976 This event occurs when a lower layer indicates that it is ready to 977 carry packets. 978 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 982 phase. 983 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. 987 988 Down 989 990 This event occurs when a lower layer indicates that it is no 991 992 993 994Simpson [Page 16] 995RFC 1661 Point-to-Point Protocol July 1994 996 997 998 longer ready to carry packets. 999 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. 1003 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. 1007 1008 Open 1009 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. 1015 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. 1019 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. 1024 1025 Implementation Option: 1026 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. 1030 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. 1037 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. 1042 1043 Close 1044 1045 This event indicates that the link is not available for traffic; 1046 1047 1048 1049Simpson [Page 17] 1050RFC 1661 Point-to-Point Protocol July 1994 1051 1052 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. 1058 1059 Implementation Note: 1060 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 1067 another source. 1068 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. 1074 1075 Timeout (TO+,TO-) 1076 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. 1080 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. 1084 1085 The TO- event indicates that the Restart counter is not greater 1086 than zero, and no more packets need to be retransmitted. 1087 1088 Receive-Configure-Request (RCR+,RCR-) 1089 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 1094 section. 1095 1096 The RCR+ event indicates that the Configure-Request was 1097 acceptable, and triggers the transmission of a corresponding 1098 Configure-Ack. 1099 1100 The RCR- event indicates that the Configure-Request was 1101 1102 1103 1104Simpson [Page 18] 1105RFC 1661 Point-to-Point Protocol July 1994 1106 1107 1108 unacceptable, and triggers the transmission of a corresponding 1109 Configure-Nak or Configure-Reject. 1110 1111 Implementation Note: 1112 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. 1116 1117 Receive-Configure-Ack (RCA) 1118 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. 1123 1124 Implementation Note: 1125 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. 1131 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. 1136 1137 Receive-Configure-Nak/Rej (RCN) 1138 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 1143 silently discarded. 1144 1145 Implementation Note: 1146 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. 1151 1152 Receive-Terminate-Request (RTR) 1153 1154 This event occurs when a Terminate-Request packet is received. 1155 The Terminate-Request packet indicates the desire of the peer to 1156 1157 1158 1159Simpson [Page 19] 1160RFC 1661 Point-to-Point Protocol July 1994 1161 1162 1163 close the connection. 1164 1165 Implementation Note: 1166 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 1171 intervention. 1172 1173 Receive-Terminate-Ack (RTA) 1174 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. 1180 1181 Receive-Unknown-Code (RUC) 1182 1183 This event occurs when an un-interpretable packet is received from 1184 the peer. A Code-Reject packet is sent in response. 1185 1186 Receive-Code-Reject, Receive-Protocol-Reject (RXJ+,RXJ-) 1187 1188 This event occurs when a Code-Reject or a Protocol-Reject packet 1189 is received from the peer. 1190 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. 1195 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. 1200 1201 Receive-Echo-Request, Receive-Echo-Reply, Receive-Discard-Request 1202 (RXR) 1203 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. 1208 1209 1210 1211 1212 1213 1214Simpson [Page 20] 1215RFC 1661 Point-to-Point Protocol July 1994 1216 1217 12184.4. Actions 1219 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 1222 Restart timer. 1223 1224 Illegal-Event (-) 1225 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. 1230 1231 This-Layer-Up (tlu) 1232 1233 This action indicates to the upper layers that the automaton is 1234 entering the Opened state. 1235 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. 1240 1241 This-Layer-Down (tld) 1242 1243 This action indicates to the upper layers that the automaton is 1244 leaving the Opened state. 1245 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. 1250 1251 This-Layer-Started (tls) 1252 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. 1257 1258 This results of this action are highly implementation dependent. 1259 1260 This-Layer-Finished (tlf) 1261 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. 1266 1267 1268 1269Simpson [Page 21] 1270RFC 1661 Point-to-Point Protocol July 1994 1271 1272 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. 1276 1277 This results of this action are highly implementation dependent. 1278 1279 Initialize-Restart-Count (irc) 1280 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. 1284 1285 Implementation Note: 1286 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. 1290 1291 Zero-Restart-Count (zrc) 1292 1293 This action sets the Restart counter to zero. 1294 1295 Implementation Note: 1296 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 1301 value. 1302 1303 Send-Configure-Request (scr) 1304 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. 1310 1311 Send-Configure-Ack (sca) 1312 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. 1316 1317 Send-Configure-Nak (scn) 1318 1319 A Configure-Nak or Configure-Reject packet is transmitted, as 1320 appropriate. This negative response reports the reception of a 1321 1322 1323 1324Simpson [Page 22] 1325RFC 1661 Point-to-Point Protocol July 1994 1326 1327 1328 Configure-Request packet with an unacceptable set of Configuration 1329 Options. 1330 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. 1337 1338 Send-Terminate-Request (str) 1339 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. 1345 1346 Send-Terminate-Ack (sta) 1347 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. 1351 1352 Send-Code-Reject (scj) 1353 1354 A Code-Reject packet is transmitted. This indicates the reception 1355 of an unknown type of packet. 1356 1357 Send-Echo-Reply (ser) 1358 1359 An Echo-Reply packet is transmitted. This acknowledges the 1360 reception of an Echo-Request packet. 1361 1362 1363 13644.5. Loop Avoidance 1365 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. 1374 1375 1376 1377 1378 1379Simpson [Page 23] 1380RFC 1661 Point-to-Point Protocol July 1994 1381 1382 13834.6. Counters and Timers 1384 1385 Restart Timer 1386 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. 1393 1394 Implementation Note: 1395 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. 1401 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. 1413 1414 Max-Terminate 1415 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. 1421 1422 Max-Configure 1423 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. 1430 1431 1432 1433 1434Simpson [Page 24] 1435RFC 1661 Point-to-Point Protocol July 1994 1436 1437 1438 Max-Failure 1439 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. 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489Simpson [Page 25] 1490RFC 1661 Point-to-Point Protocol July 1994 1491 1492 14935. LCP Packet Formats 1494 1495 There are three classes of LCP packets: 1496 1497 1. Link Configuration packets used to establish and configure a 1498 link (Configure-Request, Configure-Ack, Configure-Nak and 1499 Configure-Reject). 1500 1501 2. Link Termination packets used to terminate a link (Terminate- 1502 Request and Terminate-Ack). 1503 1504 3. Link Maintenance packets used to manage and debug a link 1505 (Code-Reject, Protocol-Reject, Echo-Request, Echo-Reply, and 1506 Discard-Request). 1507 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. 1513 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 1520 link to be open. 1521 1522 Exactly one LCP packet is encapsulated in the PPP Information field, 1523 where the PPP Protocol field indicates type hex c021 (Link Control 1524 Protocol). 1525 1526 A summary of the Link Control Protocol packet format is shown below. 1527 The fields are transmitted from left to right. 1528 1529 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1534 | Data ... 1535 +-+-+-+-+ 1536 1537 1538 Code 1539 1540 The Code field is one octet, and identifies the kind of LCP 1541 1542 1543 1544Simpson [Page 26] 1545RFC 1661 Point-to-Point Protocol July 1994 1546 1547 1548 packet. When a packet is received with an unknown Code field, a 1549 Code-Reject packet is transmitted. 1550 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 1553 following values: 1554 1555 1 Configure-Request 1556 2 Configure-Ack 1557 3 Configure-Nak 1558 4 Configure-Reject 1559 5 Terminate-Request 1560 6 Terminate-Ack 1561 7 Code-Reject 1562 8 Protocol-Reject 1563 9 Echo-Request 1564 10 Echo-Reply 1565 11 Discard-Request 1566 1567 1568 Identifier 1569 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 1573 automaton. 1574 1575 Length 1576 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. 1580 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. 1585 1586 Data 1587 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 1590 field. 1591 1592 1593 1594 1595 1596 1597 1598 1599Simpson [Page 27] 1600RFC 1661 Point-to-Point Protocol July 1994 1601 1602 16035.1. Configure-Request 1604 1605 Description 1606 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. 1611 1612 Upon reception of a Configure-Request, an appropriate reply MUST 1613 be transmitted. 1614 1615 A summary of the Configure-Request packet format is shown below. The 1616 fields are transmitted from left to right. 1617 1618 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1623 | Options ... 1624 +-+-+-+-+ 1625 1626 1627 Code 1628 1629 1 for Configure-Request. 1630 1631 Identifier 1632 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. 1637 1638 Options 1639 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. 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654Simpson [Page 28] 1655RFC 1661 Point-to-Point Protocol July 1994 1656 1657 16585.2. Configure-Ack 1659 1660 Description 1661 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 1666 way. 1667 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 1672 silently discarded. 1673 1674 A summary of the Configure-Ack packet format is shown below. The 1675 fields are transmitted from left to right. 1676 1677 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1682 | Options ... 1683 +-+-+-+-+ 1684 1685 1686 Code 1687 1688 2 for Configure-Ack. 1689 1690 Identifier 1691 1692 The Identifier field is a copy of the Identifier field of the 1693 Configure-Request which caused this Configure-Ack. 1694 1695 Options 1696 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 1700 simultaneously. 1701 1702 1703 1704 1705 1706 1707 1708 1709Simpson [Page 29] 1710RFC 1661 Point-to-Point Protocol July 1994 1711 1712 17135.3. Configure-Nak 1714 1715 Description 1716 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. 1724 1725 Options which have no value fields (boolean options) MUST use the 1726 Configure-Reject reply instead. 1727 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 1731 requested value. 1732 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. 1738 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 1745 sender. 1746 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. 1750 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 1756 packet. 1757 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 1761 1762 1763 1764Simpson [Page 30] 1765RFC 1661 Point-to-Point Protocol July 1994 1766 1767 1768 the original Configure-Request. 1769 1770 A summary of the Configure-Nak packet format is shown below. The 1771 fields are transmitted from left to right. 1772 1773 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1778 | Options ... 1779 +-+-+-+-+ 1780 1781 1782 Code 1783 1784 3 for Configure-Nak. 1785 1786 Identifier 1787 1788 The Identifier field is a copy of the Identifier field of the 1789 Configure-Request which caused this Configure-Nak. 1790 1791 Options 1792 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. 1796 1797 1798 17995.4. Configure-Reject 1800 1801 Description 1802 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 1811 way. 1812 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 1816 1817 1818 1819Simpson [Page 31] 1820RFC 1661 Point-to-Point Protocol July 1994 1821 1822 1823 be a proper subset of those in the last transmitted Configure- 1824 Request. Invalid packets are silently discarded. 1825 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. 1829 1830 A summary of the Configure-Reject packet format is shown below. The 1831 fields are transmitted from left to right. 1832 1833 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1838 | Options ... 1839 +-+-+-+-+ 1840 1841 1842 Code 1843 1844 4 for Configure-Reject. 1845 1846 Identifier 1847 1848 The Identifier field is a copy of the Identifier field of the 1849 Configure-Request which caused this Configure-Reject. 1850 1851 Options 1852 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. 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874Simpson [Page 32] 1875RFC 1661 Point-to-Point Protocol July 1994 1876 1877 18785.5. Terminate-Request and Terminate-Ack 1879 1880 Description 1881 1882 LCP includes Terminate-Request and Terminate-Ack Codes in order to 1883 provide a mechanism for closing a connection. 1884 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. 1890 1891 Upon reception of a Terminate-Request, a Terminate-Ack MUST be 1892 transmitted. 1893 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 1896 re-negotiation. 1897 1898 A summary of the Terminate-Request and Terminate-Ack packet formats 1899 is shown below. The fields are transmitted from left to right. 1900 1901 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 1906 | Data ... 1907 +-+-+-+-+ 1908 1909 1910 Code 1911 1912 5 for Terminate-Request; 1913 1914 6 for Terminate-Ack. 1915 1916 Identifier 1917 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. 1922 1923 On reception, the Identifier field of the Terminate-Request is 1924 copied into the Identifier field of the Terminate-Ack packet. 1925 1926 1927 1928 1929Simpson [Page 33] 1930RFC 1661 Point-to-Point Protocol July 1994 1931 1932 1933 Data 1934 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. 1938 1939 1940 19415.6. Code-Reject 1942 1943 Description 1944 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- 1948 Reject. 1949 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. 1954 1955 A summary of the Code-Reject packet format is shown below. The 1956 fields are transmitted from left to right. 1957 1958 0 1 2 3 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 ... 1964 +-+-+-+-+-+-+-+-+ 1965 1966 1967 Code 1968 1969 7 for Code-Reject. 1970 1971 Identifier 1972 1973 The Identifier field MUST be changed for each Code-Reject sent. 1974 1975 Rejected-Packet 1976 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 1981 1982 1983 1984Simpson [Page 34] 1985RFC 1661 Point-to-Point Protocol July 1994 1986 1987 1988 established MRU. 1989 1990 1991 19925.7. Protocol-Reject 1993 1994 Description 1995 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 2001 a Protocol-Reject. 2002 2003 Upon reception of a Protocol-Reject, the implementation MUST stop 2004 sending packets of the indicated protocol at the earliest 2005 opportunity. 2006 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. 2010 2011 A summary of the Protocol-Reject packet format is shown below. The 2012 fields are transmitted from left to right. 2013 2014 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2021 2022 2023 Code 2024 2025 8 for Protocol-Reject. 2026 2027 Identifier 2028 2029 The Identifier field MUST be changed for each Protocol-Reject 2030 sent. 2031 2032 Rejected-Protocol 2033 2034 The Rejected-Protocol field is two octets, and contains the PPP 2035 Protocol field of the packet which is being rejected. 2036 2037 2038 2039Simpson [Page 35] 2040RFC 1661 Point-to-Point Protocol July 1994 2041 2042 2043 Rejected-Information 2044 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 2049 established MRU. 2050 2051 2052 20535.8. Echo-Request and Echo-Reply 2054 2055 Description 2056 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 2061 other functions. 2062 2063 Upon reception of an Echo-Request in the LCP Opened state, an 2064 Echo-Reply MUST be transmitted. 2065 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 2069 discarded. 2070 2071 2072 A summary of the Echo-Request and Echo-Reply packet formats is shown 2073 below. The fields are transmitted from left to right. 2074 2075 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2080 | Magic-Number | 2081 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2082 | Data ... 2083 +-+-+-+-+ 2084 2085 2086 Code 2087 2088 9 for Echo-Request; 2089 2090 10 for Echo-Reply. 2091 2092 2093 2094Simpson [Page 36] 2095RFC 1661 Point-to-Point Protocol July 1994 2096 2097 2098 Identifier 2099 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. 2104 2105 On reception, the Identifier field of the Echo-Request is copied 2106 into the Identifier field of the Echo-Reply packet. 2107 2108 Magic-Number 2109 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. 2115 2116 Data 2117 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. 2121 2122 2123 21245.9. Discard-Request 2125 2126 Description 2127 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. 2132 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. 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149Simpson [Page 37] 2150RFC 1661 Point-to-Point Protocol July 1994 2151 2152 2153 A summary of the Discard-Request packet format is shown below. The 2154 fields are transmitted from left to right. 2155 2156 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2161 | Magic-Number | 2162 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2163 | Data ... 2164 +-+-+-+-+ 2165 2166 Code 2167 2168 11 for Discard-Request. 2169 2170 Identifier 2171 2172 The Identifier field MUST be changed for each Discard-Request 2173 sent. 2174 2175 Magic-Number 2176 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. 2182 2183 Data 2184 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. 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204Simpson [Page 38] 2205RFC 1661 Point-to-Point Protocol July 1994 2206 2207 22086. LCP Configuration Options 2209 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. 2214 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.) 2219 2220 The end of the list of Configuration Options is indicated by the 2221 Length field of the LCP packet. 2222 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. 2226 2227 Design Philosophy 2228 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. 2233 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. 2237 2238 Except where explicitly specified, acknowledgement of an option 2239 does not require the peer to take any additional action other than 2240 the default. 2241 2242 It is not necessary to send the default values for the options in 2243 a Configure-Request. 2244 2245 2246 A summary of the Configuration Option format is shown below. The 2247 fields are transmitted from left to right. 2248 2249 0 1 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2254 2255 2256 2257 2258 2259Simpson [Page 39] 2260RFC 1661 Point-to-Point Protocol July 1994 2261 2262 2263 Type 2264 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: 2269 2270 0 RESERVED 2271 1 Maximum-Receive-Unit 2272 3 Authentication-Protocol 2273 4 Quality-Protocol 2274 5 Magic-Number 2275 7 Protocol-Field-Compression 2276 8 Address-and-Control-Field-Compression 2277 2278 2279 Length 2280 2281 The Length field is one octet, and indicates the length of this 2282 Configuration Option including the Type, Length and Data fields. 2283 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. 2288 2289 Data 2290 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. 2294 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. 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314Simpson [Page 40] 2315RFC 1661 Point-to-Point Protocol July 1994 2316 2317 23186.1. Maximum-Receive-Unit (MRU) 2319 2320 Description 2321 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. 2325 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 2329 lost. 2330 2331 Implementation Note: 2332 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. 2340 2341 A summary of the Maximum-Receive-Unit Configuration Option format is 2342 shown below. The fields are transmitted from left to right. 2343 2344 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2349 2350 2351 Type 2352 2353 1 2354 2355 Length 2356 2357 4 2358 2359 Maximum-Receive-Unit 2360 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. 2365 2366 2367 2368 2369Simpson [Page 41] 2370RFC 1661 Point-to-Point Protocol July 1994 2371 2372 23736.2. Authentication-Protocol 2374 2375 Description 2376 2377 On some links it may be desirable to require a peer to 2378 authenticate itself before allowing network-layer protocol packets 2379 to be exchanged. 2380 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. 2384 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. 2391 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. 2398 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. 2403 2404 A summary of the Authentication-Protocol Configuration Option format 2405 is shown below. The fields are transmitted from left to right. 2406 2407 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2412 | Data ... 2413 +-+-+-+-+ 2414 2415 2416 Type 2417 2418 3 2419 2420 2421 2422 2423 2424Simpson [Page 42] 2425RFC 1661 Point-to-Point Protocol July 1994 2426 2427 2428 Length 2429 2430 >= 4 2431 2432 Authentication-Protocol 2433 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. 2438 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: 2442 2443 Value (in hex) Protocol 2444 2445 c023 Password Authentication Protocol 2446 c223 Challenge Handshake Authentication Protocol 2447 2448 2449 Data 2450 2451 The Data field is zero or more octets, and contains additional 2452 data as determined by the particular protocol. 2453 2454 2455 24566.3. Quality-Protocol 2457 2458 Description 2459 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 2462 quality monitoring. 2463 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. 2467 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 2473 protocol. 2474 2475 There is no requirement that quality monitoring be full-duplex or 2476 2477 2478 2479Simpson [Page 43] 2480RFC 1661 Point-to-Point Protocol July 1994 2481 2482 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 2486 negotiated. 2487 2488 A summary of the Quality-Protocol Configuration Option format is 2489 shown below. The fields are transmitted from left to right. 2490 2491 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2496 | Data ... 2497 +-+-+-+-+ 2498 2499 2500 Type 2501 2502 4 2503 2504 Length 2505 2506 >= 4 2507 2508 Quality-Protocol 2509 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. 2514 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: 2518 2519 Value (in hex) Protocol 2520 2521 c025 Link Quality Report 2522 2523 2524 Data 2525 2526 The Data field is zero or more octets, and contains additional 2527 data as determined by the particular protocol. 2528 2529 2530 2531 2532 2533 2534Simpson [Page 44] 2535RFC 1661 Point-to-Point Protocol July 1994 2536 2537 25386.4. Magic-Number 2539 2540 Description 2541 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. 2548 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. 2562 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). 2575 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. 2583 2584 If the link is indeed looped-back, this sequence (transmit 2585 Configure-Request, receive Configure-Request, transmit Configure- 2586 2587 2588 2589Simpson [Page 45] 2590RFC 1661 Point-to-Point Protocol July 1994 2591 2592 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: 2600 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 2606 2607 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. 2616 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 2627 Configure-Ack). 2628 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 2635 Magic-Number. 2636 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. 2641 2642 2643 2644Simpson [Page 46] 2645RFC 1661 Point-to-Point Protocol July 1994 2646 2647 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. 2654 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- 2664 back condition. 2665 2666 A summary of the Magic-Number Configuration Option format is shown 2667 below. The fields are transmitted from left to right. 2668 2669 0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2676 2677 2678 Type 2679 2680 5 2681 2682 Length 2683 2684 6 2685 2686 Magic-Number 2687 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. 2692 2693 2694 2695 2696 2697 2698 2699Simpson [Page 47] 2700RFC 1661 Point-to-Point Protocol July 1994 2701 2702 27036.5. Protocol-Field-Compression (PFC) 2704 2705 Description 2706 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 2710 fields. 2711 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. 2717 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). 2728 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 2737 than 256. 2738 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 2743 them. 2744 2745 The Protocol field is never compressed when sending any LCP 2746 packet. This rule guarantees unambiguous recognition of LCP 2747 packets. 2748 2749 When a Protocol field is compressed, the Data Link Layer FCS field 2750 is calculated on the compressed frame, not the original 2751 2752 2753 2754Simpson [Page 48] 2755RFC 1661 Point-to-Point Protocol July 1994 2756 2757 2758 uncompressed frame. 2759 2760 A summary of the Protocol-Field-Compression Configuration Option 2761 format is shown below. The fields are transmitted from left to 2762 right. 2763 2764 0 1 2765 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 2766 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2767 | Type | Length | 2768 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2769 2770 2771 Type 2772 2773 7 2774 2775 Length 2776 2777 2 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809Simpson [Page 49] 2810RFC 1661 Point-to-Point Protocol July 1994 2811 2812 28136.6. Address-and-Control-Field-Compression (ACFC) 2814 2815 Description 2816 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. 2821 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. 2826 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. 2830 2831 The Address and Control fields MUST NOT be compressed when sending 2832 any LCP packet. This rule guarantees unambiguous recognition of 2833 LCP packets. 2834 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. 2838 2839 A summary of the Address-and-Control-Field-Compression configuration 2840 option format is shown below. The fields are transmitted from left 2841 to right. 2842 2843 0 1 2844 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 2845 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2846 | Type | Length | 2847 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 2848 2849 2850 Type 2851 2852 8 2853 2854 Length 2855 2856 2 2857 2858 2859 2860 2861 2862 2863 2864Simpson [Page 50] 2865RFC 1661 Point-to-Point Protocol July 1994 2866 2867 2868Security Considerations 2869 2870 Security issues are briefly discussed in sections concerning the 2871 Authentication Phase, the Close event, and the Authentication- 2872 Protocol Configuration Option. 2873 2874 2875 2876References 2877 2878 [1] Perkins, D., "Requirements for an Internet Standard Point-to- 2879 Point Protocol", RFC 1547, Carnegie Mellon University, 2880 December 1993. 2881 2882 [2] Reynolds, J., and Postel, J., "Assigned Numbers", STD 2, RFC 2883 1340, USC/Information Sciences Institute, July 1992. 2884 2885 2886Acknowledgements 2887 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. 2891 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. 2896 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. 2900 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. 2909 2910 Special thanks to Morning Star Technologies for providing computing 2911 resources and network access support for writing this specification. 2912 2913 2914 2915 2916 2917 2918 2919Simpson [Page 51] 2920RFC 1661 Point-to-Point Protocol July 1994 2921 2922 2923Chair's Address 2924 2925 The working group can be contacted via the current chair: 2926 2927 Fred Baker 2928 Advanced Computer Communications 2929 315 Bollay Drive 2930 Santa Barbara, California 93117 2931 2932 fbaker@acc.com 2933 2934 2935 2936Editor's Address 2937 2938 Questions about this memo can also be directed to: 2939 2940 William Allen Simpson 2941 Daydreamer 2942 Computer Systems Consulting Services 2943 1384 Fontaine 2944 Madison Heights, Michigan 48071 2945 2946 Bill.Simpson@um.cc.umich.edu 2947 bsimpson@MorningStar.com 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974Simpson [Page 52] 2975 2976 2977